{"id":3986,"date":"2025-11-25T17:24:22","date_gmt":"2025-11-25T17:24:22","guid":{"rendered":"https:\/\/www.hellyeaplots.com\/shop\/?page_id=3986"},"modified":"2026-04-02T19:58:09","modified_gmt":"2026-04-02T19:58:09","slug":"customization","status":"publish","type":"page","link":"https:\/\/www.hellyeaplots.com\/shop\/customization\/","title":{"rendered":"Customization"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3986\" class=\"elementor elementor-3986\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ac05823 e-flex e-con-boxed e-con e-parent\" data-id=\"ac05823\" data-element_type=\"container\" data-settings=\"{&quot;ekit_has_onepagescroll_dot&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0df9abf elementor-widget elementor-widget-html\" data-id=\"0df9abf\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- BEGIN: Hellish Multi-step Customization Form -->\r\n<style>\r\n  \/* Hellish theme (B) - dark, red accents, slight glow *\/\r\n  #custom-flow{max-width:820px;margin:30px auto;background:#0b0b0b;color:#e9e0dc;border-radius:12px;padding:28px;box-shadow:0 8px 40px rgba(0,0,0,.6);font-family:Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial;}\r\n  #custom-flow h2{color:#c70204;text-transform: capitalize; font-weight: bold;margin:0 0 8px;font-size:22px;text-shadow:0 2px 6px rgba(170,0,0,.25)}\r\n  #custom-flow p.lead{color:#cfc0b8;margin:0 0 16px}\r\n  .step{display:none}\r\n  .step.active{display:block;animation:fadeIn .28s ease}\r\n  label{display:block;margin:10px 0;padding:10px;border-radius:8px;background:#0f0f0f;border:1px solid rgba(255,40,40,.06)}\r\n  .checkbox-inline{display:flex;align-items:center;gap:10px}\r\n  .option-price{color:#f3c6c6;font-size:13px}\r\n  .controls{display:flex;justify-content:space-between;margin-top:18px;gap:10px}\r\n  button.btn{background:linear-gradient(180deg,#ff4b4b,#b60000);border:none;color:#fff;padding:10px 16px;border-radius:10px;font-weight:600;cursor:pointer;box-shadow:0 6px 18px rgba(182,0,0,.12)}\r\n  button.btn.ghost{background:transparent;border:1px solid rgba(255,255,255,.06);color:#e6dcd6}\r\n  .small{font-size:15px;color:#fff}\r\n  .review-row{padding:10px;border-radius:8px;background:#070707;margin-bottom:8px;border:1px solid rgba(255,255,255,.03)}\r\n  #book-preview{white-space:pre-wrap;font-style:italic;background:linear-gradient(90deg,rgba(170,0,0,.02),transparent);padding:12px;border-radius:8px}\r\n  .toggle{display:inline-flex;align-items:center;gap:8px}\r\n  .price{font-weight:700;color:#ffd6d6}\r\n  .step-header{display:flex;justify-content:space-between;align-items:start;flex-direction: column;margin-bottom:10px}\r\n  @keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}\r\n  input[type=\"text\"], textarea{width:100%;padding:10px;border-radius:8px;background:#0b0b0b;border:1px solid rgba(255,255,255,.04);color:#efe7e2}\r\n  .muted{color:#b9a89f;font-size:13px}\r\n<\/style>\r\n\r\n<div id=\"custom-flow\" aria-live=\"polite\">\r\n  <div class=\"step active\" data-step=\"1\">\r\n    <div class=\"step-header\">\r\n      <h2>Upgrade this damnation<\/h2>\r\n      <div class=\"small\">Add extra heat \u2014 each option increases your donation and intensifies the damnation.<\/div>\r\n    <\/div>\r\n\r\n    <label class=\"checkbox-inline\">\r\n      <input type=\"checkbox\" id=\"double_damn\" data-addon=\"4-0\" \/>\r\n      <div>\r\n        \ud83d\udd25\ud83d\udd25 <strong>Double Damn\u2122<\/strong>\r\n        <div class=\"muted\">Twice the heat. <span class=\"option-price\">(2X The Donation)<\/span><\/div>\r\n      <\/div>\r\n    <\/label>\r\n\r\n    <label class=\"checkbox-inline\">\r\n      <input type=\"checkbox\" id=\"late_fee\" data-addon=\"4-1\" \/>\r\n      <div>\r\n        \ud83d\udcc5 <strong>Late Fee\u2122<\/strong>\r\n        <div class=\"muted\">Hell waits for no one. <span class=\"option-price\">(+ $3.33)<\/span><\/div>\r\n      <\/div>\r\n    <\/label>\r\n    \r\n    <label class=\"checkbox-inline\">\r\n      <input type=\"checkbox\" id=\"burn_bonus\" data-addon=\"4-2\" \/>\r\n      <div>\r\n        \u2620\ufe0f <strong>Burn Bonus\u2122<\/strong>\r\n        <div class=\"muted\">Turn the heat into ash. \r\n          <span class=\"option-price\">(+ $6.66)<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/label>\r\n\r\n    <div class=\"controls\">\r\n      <div><\/div>\r\n      <button class=\"btn\" data-action=\"next\">Next \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"step\" data-step=\"2\">\r\n    <div class=\"step-header\">\r\n      <h2>Who (or what) is this plot for?<\/h2>\r\n      <div class=\"small\">Tell us the name or concept that this plot is for.<\/div>\r\n    <\/div>\r\n\r\n    <label>\r\n      <input type=\"radio\" name=\"plot_for\" value=\"first_name\" \/> First Name <span class=\"muted\">*(?)<\/span>\r\n    <\/label>\r\n    <div style=\"margin-bottom:10px\"><input type=\"text\" id=\"plot_first_name\" placeholder=\"Enter first name\" disabled><\/div>\r\n\r\n    <label>\r\n      <input type=\"radio\" name=\"plot_for\" value=\"symbolic\" \/> Symbolic Damnation <span class=\"muted\">*(?)<\/span>\r\n    <\/label>\r\n    <div style=\"margin-bottom:10px\"><input type=\"text\" id=\"plot_symbolic\" placeholder=\"Enter symbolic name\" disabled><\/div>\r\n\r\n    <div class=\"controls\">\r\n      <button class=\"btn ghost\" data-action=\"prev\">\u2190 Back<\/button>\r\n      <button class=\"btn\" data-action=\"next\">Next \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"step\" data-step=\"3\">\r\n    <div class=\"step-header\">\r\n      <h2>Who should receive credit?<\/h2>\r\n      <div class=\"small\">Who should receive credit for this donation?<\/div>\r\n    <\/div>\r\n\r\n    <label>\r\n      <input type=\"radio\" name=\"deed_holder\" value=\"first_name\" \/> First Name <span class=\"muted\">*(?)<\/span>\r\n    <\/label>\r\n    <div style=\"margin-bottom:10px\"><input type=\"text\" id=\"deed_first_name\" placeholder=\"Deed holder first name\" disabled><\/div>\r\n\r\n    <label>\r\n      <input type=\"radio\" name=\"deed_holder\" value=\"alias\" \/> Alias or Concept <span class=\"muted\">*(?)<\/span>\r\n    <\/label>\r\n    <div style=\"margin-bottom:10px\"><input type=\"text\" id=\"deed_alias\" placeholder=\"Alias or concept\" disabled><\/div>\r\n\r\n    <label>\r\n      <input type=\"radio\" name=\"deed_holder\" value=\"anonymous\" \/> I prefer to remain anonymous\r\n    <\/label>\r\n\r\n    <div class=\"controls\">\r\n      <button class=\"btn ghost\" data-action=\"prev\">\u2190 Back<\/button>\r\n      <button class=\"btn\" data-action=\"next\">Next \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"step\" data-step=\"4\">\r\n    <div class=\"step-header\">\r\n      <h2>Book of the Damned\u2122 Entry<\/h2>\r\n      <div class=\"small\">Add your story \u2014 and choose whether to Hellify\u2122 it.<\/div>\r\n    <\/div>\r\n\r\n    <textarea id=\"story\" rows=\"6\" placeholder=\"Write the story...\"><\/textarea>\r\n\r\n    <!-- HELLIFY toggle (hidden until typing starts) -->\r\n    <div id=\"hellify_row\" style=\"display:none; margin-top:12px;\">\r\n      <label class=\"toggle small\">\r\n        <input type=\"checkbox\" id=\"hellify_step4\">\r\n        <span>\ud83d\udd25 HELLIFY\u2122 this entry<\/span>\r\n      <\/label>\r\n\r\n      <div class=\"muted\" style=\"margin-top:6px;\">\r\n        <strong>HELLIFY\u2122 ON:<\/strong> Rewrite my story in the official HellYea dark-humor tone.<br>\r\n        <strong>HELLIFY\u2122 OFF:<\/strong> Use my original wording.\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"controls\">\r\n      <button class=\"btn ghost\" data-action=\"prev\">\u2190 Back<\/button>\r\n      <button class=\"btn\" data-action=\"next\">Next \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"step\" data-step=\"5\">\r\n    <div class=\"step-header\">\r\n      <h2>Review Your Damnation<\/h2>\r\n      <div class=\"small\">Confirm before checkout.<\/div>\r\n    <\/div>\r\n\r\n    <div id=\"review-summary\" aria-live=\"polite\">\r\n      <!-- injected summary -->\r\n    <\/div>\r\n\r\n<div style=\"display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap;\">\r\n  <label class=\"toggle small\">\r\n    <input type=\"checkbox\" id=\"hellify_step5\">\r\n    <span>\ud83d\udd25 HELLIFY\u2122 my entry<\/span>\r\n  <\/label>\r\n\r\n  <div style=\"text-align:right\">\r\n    <div class=\"muted\">Total Amount<\/div>\r\n    <div class=\"price\" id=\"bottom-total-amount\">$0.00<\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"coupon-wrap\" style=\"margin-top:12px;\">\r\n  <div class=\"review-row\" style=\"margin-bottom:0;\">\r\n    <strong>Coupon Code<\/strong>\r\n\r\n    <div style=\"display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px;\">\r\n      <input\r\n        type=\"text\"\r\n        id=\"coupon_code\"\r\n        placeholder=\"Enter coupon code\"\r\n        style=\"max-width:260px;text-transform:uppercase;\"\r\n      \/>\r\n      <button type=\"button\" class=\"btn\" id=\"apply-coupon-btn\">Apply<\/button>\r\n    <\/div>\r\n\r\n    <div id=\"coupon-message\" class=\"muted small\" style=\"margin-top:8px;\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n    <div style=\"margin-top:14px\" class=\"controls\">\r\n      <button class=\"btn ghost\" data-action=\"prev\">\u2190 Back<\/button>\r\n      <button class=\"btn\" id=\"checkout-btn\">Check Out \u2192<\/button>\r\n    <\/div>\r\n\r\n    <div style=\"margin-top:12px\" class=\"muted small\">Your selections will be added to the cart and you\u2019ll be taken to the checkout page to complete payment.<\/div>\r\n    <div style=\"margin-top:10px\" id=\"book-preview\" class=\"muted small\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  const wrapper = document.getElementById('custom-flow');\r\n\r\n  const urlParams = new URLSearchParams(window.location.search);\r\n  const productId = parseInt(urlParams.get('product_id')) || 580;\r\n\r\n  const addonsParam = (urlParams.get('addons') || '').split(',')\r\n    .map(s => s.trim())\r\n    .filter(Boolean);\r\n\r\n  const hasDD = addonsParam.includes('dd');\r\n  const hasLF = addonsParam.includes('lf');\r\n  const hasBB = addonsParam.includes('bb');\r\n\r\n  if (hasDD && document.getElementById('double_damn')) {\r\n    document.getElementById('double_damn').checked = true;\r\n  }\r\n  if (hasLF && document.getElementById('late_fee')) {\r\n    document.getElementById('late_fee').checked = true;\r\n  }\r\n  if (hasBB && document.getElementById('burn_bonus')) {\r\n    document.getElementById('burn_bonus').checked = true;\r\n  }\r\n\r\n  const productConfig = {\r\n  \/\/ Starter\r\n  580: {\r\n    orderPrice: 33.33,\r\n    baseDonation: 6.66,\r\n    donationLabel: '20% of Plot Price'\r\n  },\r\n\r\n  \/\/ Infernal\r\n  579: {\r\n    orderPrice: 56.60,\r\n    baseDonation: 16.66, \/\/ if you want old math, change to 16.65\r\n    donationLabel: '25% of Plot Price'\r\n  },\r\n\r\n  \/\/ Founder (20% off already applied in flow)\r\n  577: {\r\n    orderPrice: 133.28,\r\n    baseDonation: 83.30,\r\n    donationLabel: '50% of Plot Price'\r\n  }\r\n};\r\n\r\nconst currentConfig = productConfig[productId] || productConfig[580];\r\n\r\nlet appliedCouponCode = '';\r\nlet appliedCouponDiscount = 0;\r\n\r\n  const $  = sel => document.querySelector(sel);\r\n  const $$ = sel => Array.from(document.querySelectorAll(sel));\r\nconst floor2 = (v) => {\r\n  const normalized = Number(v).toFixed(4); \/\/ \"16.6500\", \"36.6363\"\r\n  const parts = normalized.split('.');\r\n  const dec = (parts[1] || '00').slice(0, 2);\r\n  return Number(parts[0] + '.' + dec);\r\n};\r\n\r\n\r\n  \/\/ \ud83d\udd25 Hellify state\r\n  let originalStory        = \"\";\r\n  let hellifiedStory       = \"\";\r\n  let lastHellifiedSource  = \"\";   \/\/ jis original se current hellified bana\r\n  let isRewriting          = false;\r\n\r\n  \/\/ ---------- totals ----------  \r\nfunction computeTotal(selected){\r\n  const basePrice      = currentConfig.orderPrice;\r\n  const baseDonation   = currentConfig.baseDonation;\r\n  const donationLabel  = currentConfig.donationLabel;\r\n\r\n  let totalOrderAmount = basePrice;\r\n  let totalDonation    = baseDonation;\r\n\r\n  const addonLines = [];\r\n  const donationBreakdown = [];\r\n\r\n  donationBreakdown.push({\r\n    label: donationLabel,\r\n    price: baseDonation\r\n  });\r\n\r\n  \/\/ Double Damn\u2122 = constant base donation\r\n  if (selected['4-0']) {\r\n    const inc = baseDonation;\r\n    totalDonation    += inc;\r\n    totalOrderAmount += inc;\r\n\r\n    addonLines.push({ label: 'Double Damn\u2122', price: inc });\r\n    donationBreakdown.push({ label: 'Double Damn\u2122', price: inc });\r\n  }\r\n\r\n  \/\/ Late Fee\u2122 = 3.33\r\n  if (selected['4-1']) {\r\n    const inc = 3.33;\r\n    totalDonation    += inc;\r\n    totalOrderAmount += inc;\r\n\r\n    addonLines.push({ label: 'Late Fee\u2122', price: inc });\r\n    donationBreakdown.push({ label: 'Late Fee\u2122', price: inc });\r\n  }\r\n\r\n  \/\/ Burn Bonus\u2122 = order only\r\n  if (selected['4-2']) {\r\n    const inc = 6.66;\r\n    totalOrderAmount += inc;\r\n    addonLines.push({ label: 'Burn Bonus\u2122', price: inc });\r\n  }\r\n\r\n  \/\/ Coupon discount -> ONLY total amount, not donation\r\n  let couponDiscount = 0;\r\n  if (selected.coupon_code === 'HELL10') {\r\n    couponDiscount = 10;\r\n    totalOrderAmount -= couponDiscount;\r\n  }\r\n\r\n  if (totalOrderAmount < 0) {\r\n    totalOrderAmount = 0;\r\n  }\r\n\r\n  return {\r\n    totalDonation,\r\n    totalOrderAmount,\r\n    addonLines,\r\n    donationBreakdown,\r\n    couponDiscount\r\n  };\r\n}\r\n\r\n  \/\/ ---------- selections ----------\r\n  function gatherSelections(){\r\n    const sel = {};\r\n    sel['4-0'] = !!document.getElementById('double_damn').checked;\r\n    sel['4-1'] = !!document.getElementById('late_fee').checked;\r\n    sel['4-2'] = !!document.getElementById('burn_bonus').checked;\r\n\r\n    const plotFor = (document.querySelector('input[name=\"plot_for\"]:checked')||{}).value || '';\r\n    sel.plot_for = plotFor;\r\n    sel['17-0'] = (plotFor==='first_name') ? document.getElementById('plot_first_name').value.trim() : '';\r\n    sel['18-0'] = (plotFor==='symbolic')   ? document.getElementById('plot_symbolic').value.trim()   : '';\r\n\r\n    const deed = (document.querySelector('input[name=\"deed_holder\"]:checked')||{}).value || '';\r\n    sel.deed_holder = deed;\r\n    sel['47-0'] = (deed==='first_name') ? document.getElementById('deed_first_name').value.trim() : '';\r\n    sel['48-0'] = (deed==='alias')      ? document.getElementById('deed_alias').value.trim()      : '';\r\n\r\n    sel['52-0'] = document.getElementById('story').value.trim();\r\n    sel.hellify = !!document.getElementById('hellify_step5').checked;\r\n    \r\n        sel.coupon_code = appliedCouponCode === 'HELL10' ? 'HELL10' : '';\r\n\r\n    return sel;\r\n  }\r\n\r\n  \/\/ ---------- preview ----------\r\n  function updatePreview() {\r\n    const previewEl = document.getElementById('book-preview');\r\n    if (!previewEl) return;\r\n\r\n    let useText;\r\n    if (document.getElementById('hellify_step5').checked) {\r\n      useText = hellifiedStory || \"Rewriting...\";\r\n    } else {\r\n      useText = originalStory;\r\n    }\r\n\r\n    previewEl.textContent =\r\n      \"Book of the Damned\u2122 preview:\\n\\n\" + (useText || \"No story provided.\");\r\n  }\r\n\r\n  \/\/ ---------- review ----------  \r\n  function renderReview(){\r\n    const sel = gatherSelections();\r\n    const {\r\n      totalDonation,\r\n      totalOrderAmount,\r\n      addonLines,\r\n      donationBreakdown,\r\n      couponDiscount\r\n    } = computeTotal(sel);\r\n\r\n    let damnedLabel = '';\r\n    if (sel.plot_for === 'first_name' && sel['17-0'])      damnedLabel = sel['17-0'];\r\n    else if (sel.plot_for === 'symbolic' && sel['18-0'])   damnedLabel = sel['18-0'];\r\n    else                                                  damnedLabel = '<em>Not specified<\/em>';\r\n\r\n    let deedLabel = '';\r\n    if (sel.deed_holder === 'first_name' && sel['47-0'])   deedLabel = sel['47-0'];\r\n    else if (sel.deed_holder === 'alias' && sel['48-0'])   deedLabel = sel['48-0'];\r\n    else if (sel.deed_holder === 'anonymous')             deedLabel = 'Anonymous';\r\n    else                                                 deedLabel = '<em>Not specified<\/em>';\r\n\r\n    const rows = [];\r\n\r\n    \/\/ Damned name\r\n    rows.push(\r\n      `<div class=\"review-row\">\r\n         <strong>Damned Name \/ Concept<\/strong>\r\n         <div style=\"margin-top:6px\">${damnedLabel}<\/div>\r\n       <\/div>`\r\n    );\r\n\r\n    \/\/ Deed holder\r\n    rows.push(\r\n      `<div class=\"review-row\">\r\n         <strong>Deed Holder<\/strong>\r\n         <div style=\"margin-top:6px\">${deedLabel}<\/div>\r\n       <\/div>`\r\n    );\r\n\r\n    \/\/ Add-ons section (jaisa pehle tha)\r\n    if (addonLines.length){\r\n      const addonsHtml = addonLines.map(l => `\r\n        <div style=\"display:flex;justify-content:space-between\">\r\n          <div>${l.label}<\/div>\r\n          <div class=\"price\">$${l.price.toFixed(2)}<\/div>\r\n        <\/div>\r\n      `).join('');\r\n      rows.push(\r\n        `<div class=\"review-row\">\r\n           <strong>Add-ons<\/strong>\r\n           <div style=\"margin-top:8px\">${addonsHtml}<\/div>\r\n         <\/div>`\r\n      );\r\n    } else {\r\n      rows.push(\r\n        `<div class=\"review-row\">\r\n           <strong>Add-ons<\/strong>\r\n           <div style=\"margin-top:6px\" class=\"muted\">None selected<\/div>\r\n         <\/div>`\r\n      );\r\n    }\r\n\r\n    \/\/ Total Donation + Breakdown\r\n    rows.push(\r\n      `<div class=\"review-row\">\r\n         <strong>Total Donation<\/strong>\r\n         <div style=\"margin-top:6px\" class=\"price\">$${totalDonation.toFixed(2)}<\/div>\r\n       <\/div>`\r\n    );\r\n\r\n    if (donationBreakdown && donationBreakdown.length){\r\n      const breakdownHtml = donationBreakdown.map(l => `\r\n        <div style=\"display:flex;justify-content:space-between\">\r\n          <div>${l.label}<\/div>\r\n          <div class=\"price\">$${l.price.toFixed(2)}<\/div>\r\n        <\/div>\r\n      `).join('');\r\n\r\n      rows.push(\r\n        `<div class=\"review-row\">\r\n           <strong>Donation Breakdown<\/strong>\r\n           <div style=\"margin-top:8px\">\r\n             ${breakdownHtml}\r\n             <div style=\"border-top:1px solid rgba(255,255,255,.08);margin-top:6px;padding-top:6px;display:flex;justify-content:space-between\">\r\n               <div><strong>Total Donation<\/strong><\/div>\r\n               <div class=\"price\">$${totalDonation.toFixed(2)}<\/div>\r\n             <\/div>\r\n           <\/div>\r\n         <\/div>`\r\n      );\r\n    }\r\n\r\n    \/\/ Hellified status\r\n    rows.push(\r\n      `<div class=\"review-row\">\r\n         <strong>Hellified<\/strong>\r\n         <div style=\"margin-top:6px\">${sel.hellify ? 'ON' : 'OFF'}<\/div>\r\n       <\/div>`\r\n    );\r\n    \r\n        \/\/ Coupon row\r\n    rows.push(\r\n      `<div class=\"review-row\">\r\n         <strong>Coupon<\/strong>\r\n         <div style=\"margin-top:6px\">\r\n           ${sel.coupon_code === 'HELL10'\r\n             ? 'HELL10 <span class=\"price\" style=\"margin-left:8px;\">(-$10.00)<\/span>'\r\n             : '<span class=\"muted\">No coupon applied<\/span>'}\r\n         <\/div>\r\n       <\/div>`\r\n    );\r\n\r\n    document.getElementById('review-summary').innerHTML = rows.join('');\r\n    document.getElementById('bottom-total-amount').textContent =\r\n      '$' + totalOrderAmount.toFixed(2);\r\n  }\r\n\r\n\r\n  \/\/ ---------- steps ----------\r\n  let currentStep = 1;\r\n  const totalSteps = 5;\r\n\r\n  function showStep(n){\r\n    currentStep = n;\r\n    $$('.step').forEach(el => el.classList.toggle('active', Number(el.dataset.step) === n));\r\n    if (n === 5) {\r\n      syncHellifyToStep5();\r\n      updatePreview();\r\n      renderReview();\r\n    }\r\n  }\r\n\r\n  $$('#custom-flow [data-action=\"next\"]').forEach(btn =>\r\n    btn.addEventListener('click', ()=>{ showStep(Math.min(totalSteps, currentStep + 1)); })\r\n  );\r\n  $$('#custom-flow [data-action=\"prev\"]').forEach(btn =>\r\n    btn.addEventListener('click', ()=>{ showStep(Math.max(1, currentStep - 1)); })\r\n  );\r\n\r\n  \/\/ ---------- radio text inputs ----------\r\n  function toggleTextInput(radioName, inputId, valueToMatch){\r\n    document.getElementsByName(radioName).forEach(r => {\r\n      r.addEventListener('change', ()=> {\r\n        const val   = r.value;\r\n        const input = $(inputId);\r\n        if(val === valueToMatch){\r\n          input.disabled = false;\r\n          input.focus();\r\n        } else {\r\n          input.disabled = true;\r\n          input.value = '';\r\n        }\r\n      });\r\n    });\r\n  }\r\n  toggleTextInput('plot_for',    '#plot_first_name', 'first_name');\r\n  toggleTextInput('plot_for',    '#plot_symbolic',   'symbolic');\r\n  toggleTextInput('deed_holder', '#deed_first_name', 'first_name');\r\n  toggleTextInput('deed_holder', '#deed_alias',      'alias');\r\n\r\n  \/\/ ---------- live review updates ----------\r\n  [\r\n    '#double_damn','#late_fee','#burn_bonus',\r\n    '#plot_first_name','#plot_symbolic',\r\n    '#deed_first_name','#deed_alias',\r\n    '#story','#hellify_step4','#hellify_step5'\r\n  ].forEach(sel=>{\r\n    const el = $(sel);\r\n    if(!el) return;\r\n    el.addEventListener('input',  ()=> { if(currentStep===5) renderReview(); });\r\n    el.addEventListener('change', ()=> { if(currentStep===5) renderReview(); });\r\n  });\r\n  $$('#custom-flow input[type=\"radio\"]').forEach(r=>{\r\n    r.addEventListener('change', ()=> { if(currentStep===5) renderReview(); });\r\n  });\r\n\r\n  \/\/ ---------- add to cart ----------\r\n  function ajaxAddToCartAndCheckout() {\r\n    const sel = gatherSelections();\r\n\r\n    if((sel.plot_for === 'first_name' && !sel['17-0']) ||\r\n       (sel.plot_for === 'symbolic'   && !sel['18-0'])) {\r\n      alert('Please provide the Damned Name \/ Concept before checkout.');\r\n      showStep(2);\r\n      return;\r\n    }\r\n    if((sel.deed_holder === 'first_name' && !sel['47-0']) ||\r\n       (sel.deed_holder === 'alias'      && !sel['48-0'])) {\r\n      alert('Please provide the Deed Holder info before checkout.');\r\n      showStep(3);\r\n      return;\r\n    }\r\n\r\n    const payload = new URLSearchParams();\r\n    payload.append('action', 'hell_add_custom_product');\r\n    payload.append('product_id', String(productId));\r\n    payload.append('addons', JSON.stringify(sel));\r\n\r\n    fetch( (window.location.origin) + '\/shop\/wp-admin\/admin-ajax.php', {\r\n      method: 'POST',\r\n      headers: { 'Content-Type': 'application\/x-www-form-urlencoded; charset=UTF-8' },\r\n      body: payload.toString()\r\n    })\r\n    .then(r => r.json())\r\n    .then(json => {\r\n      if ( json && json.success ) {\r\n        window.location.href = '\/shop\/checkout\/';\r\n      } else {\r\n        console.error('Add-to-cart failed:', json);\r\n        alert('Could not add to cart. Please try again.');\r\n      }\r\n    })\r\n    .catch(err => {\r\n      console.error('AJAX error:', err);\r\n      alert('Something went wrong adding to cart.');\r\n    });\r\n  }\r\n\r\n  const checkoutBtn = document.getElementById('checkout-btn');\r\n  if (checkoutBtn) {\r\n    checkoutBtn.addEventListener('click', function(e){\r\n      e.preventDefault();\r\n      ajaxAddToCartAndCheckout();\r\n    });\r\n  }\r\n\r\n  \/\/ ---------- HELLIFY: textarea + API ----------\r\n\r\n  const storyEl = document.getElementById('story');\r\n  if (storyEl) {\r\n    originalStory = storyEl.value.trim();\r\n\r\n    storyEl.addEventListener('input', function() {\r\n      const currentVal = this.value.trim();\r\n\r\n      if (!document.getElementById('hellify_step4').checked) {\r\n        \/\/ User normal text likh raha hai\r\n        originalStory       = currentVal;\r\n        hellifiedStory      = \"\";\r\n        lastHellifiedSource = \"\";\r\n      } else {\r\n        \/\/ User hellified text edit kar raha hai\r\n        hellifiedStory = currentVal;\r\n      }\r\n\r\n      if (currentVal.length > 0) {\r\n        document.getElementById('hellify_row').style.display = 'block';\r\n      }\r\n\r\n      if (currentStep === 5) {\r\n        updatePreview();\r\n      }\r\n    });\r\n  }\r\n\r\n  function triggerHellifyRewrite(updateTextarea = false, sourceText = null) {\r\n    if (isRewriting) return;\r\n\r\n    const storyField = document.getElementById('story');\r\n    if (!storyField) return;\r\n\r\n    const text = (sourceText !== null ? sourceText : storyField.value.trim());\r\n    if (!text) return;\r\n\r\n    isRewriting = true;\r\n    hellifiedStory = \"\";\r\n\r\n    \/\/ Textarea pe loading message\r\n    const previousValue = storyField.value;\r\n    if (updateTextarea) {\r\n      storyField.dataset.prevValue = previousValue;\r\n      storyField.value = \"Rewriting...\";\r\n    }\r\n\r\n    updatePreview();\r\n\r\n    fetch('\/shop\/wp-admin\/admin-ajax.php', {\r\n      method: 'POST',\r\n      headers: {'Content-Type': 'application\/x-www-form-urlencoded'},\r\n      body: new URLSearchParams({\r\n        action: 'hellify_rewrite',\r\n        text: text\r\n      })\r\n    })\r\n    .then(r => r.json())\r\n    .then(json => {\r\n      if (json && json.success && json.data && json.data.rewritten) {\r\n        hellifiedStory = json.data.rewritten.trim();\r\n\r\n        if (updateTextarea) {\r\n          storyField.value = hellifiedStory;\r\n        }\r\n\r\n      } else {\r\n        \/\/ API error \u2192 fall back\r\n        hellifiedStory = \"\";\r\n        if (updateTextarea) {\r\n          storyField.value = previousValue;\r\n        }\r\n      }\r\n\r\n      updatePreview();\r\n      if (currentStep === 5) renderReview();\r\n      isRewriting = false;\r\n    })\r\n    .catch(err => {\r\n      console.error('Hellify AJAX error', err);\r\n      hellifiedStory = \"\";\r\n      if (updateTextarea) {\r\n        storyField.value = previousValue;\r\n      }\r\n      updatePreview();\r\n      isRewriting = false;\r\n    });\r\n  }\r\n\r\n  \/\/ Step 4 toggle\r\n  document.getElementById('hellify_step4').addEventListener('change', function () {\r\n    const storyField = document.getElementById('story');\r\n    const baseText   = storyField.value.trim();\r\n\r\n    if (this.checked) {\r\n      if (!baseText) {\r\n        this.checked = false;\r\n        return;\r\n      }\r\n\r\n      \/\/ is toggle se pehle jo user ne likha woh original hai\r\n      originalStory = baseText;\r\n\r\n      \/\/ agar is original ke liye pehle se hellifiedStory hai \u2192 use hi dikhado\r\n      if (hellifiedStory && lastHellifiedSource === baseText) {\r\n        storyField.value = hellifiedStory;\r\n        updatePreview();\r\n      } else {\r\n        \/\/ naya original \u2192 nayi rewrite\r\n        lastHellifiedSource = baseText;\r\n        triggerHellifyRewrite(true, baseText);\r\n      }\r\n\r\n    } else {\r\n      \/\/ OFF \u2192 original text wapas\r\n      storyField.value = originalStory;\r\n      updatePreview();\r\n      if (currentStep === 5) renderReview();\r\n      \/\/ hellifiedStory ko clear NAHI kar rahe, taake dobara ON pe same haya\r\n    }\r\n  });\r\n\r\n  \/\/ Step 4 \u2192 Step 5 sync\r\n  function syncHellifyToStep5() {\r\n    document.getElementById('hellify_step5').checked =\r\n      document.getElementById('hellify_step4').checked;\r\n  }\r\n\r\n  \/\/ Step 5 toggle (sirf preview ke liye; rewrite lock Step 4 se aata hai)\r\n  document.getElementById('hellify_step5').addEventListener('change', function(){\r\n    if (this.checked && !hellifiedStory && originalStory) {\r\n      \/\/ agar kisi reason se rewrite nahi hai lekin user ON kare\r\n      lastHellifiedSource = originalStory;\r\n      triggerHellifyRewrite(false, originalStory);\r\n    }\r\n    updatePreview();\r\n  });\r\n  \r\nconst couponInput = document.getElementById('coupon_code');\r\nconst couponBtn   = document.getElementById('apply-coupon-btn');\r\nconst couponMsg   = document.getElementById('coupon-message');\r\n\r\nfunction setCouponMessage(text, ok = false){\r\n  if(!couponMsg) return;\r\n  couponMsg.textContent = text;\r\n  couponMsg.style.color = ok ? '#00d26a' : '#ff8a8a';\r\n}\r\n\r\nif (couponInput) {\r\n  couponInput.addEventListener('input', function(){\r\n    this.value = this.value.toUpperCase().replace(\/\\s+\/g, '');\r\n  });\r\n}\r\n\r\nif (couponBtn) {\r\n  couponBtn.addEventListener('click', function(){\r\n    const code = (couponInput?.value || '').trim().toUpperCase();\r\n\r\n    if (code === 'HELL10') {\r\n      appliedCouponCode = 'HELL10';\r\n      appliedCouponDiscount = 10;\r\n      setCouponMessage('$10 Discount Applied Successfully', true);\r\n    } else if (!code) {\r\n      appliedCouponCode = '';\r\n      appliedCouponDiscount = 0;\r\n      setCouponMessage('Please enter a coupon code.', false);\r\n    } else {\r\n      appliedCouponCode = '';\r\n      appliedCouponDiscount = 0;\r\n      setCouponMessage('Invalid coupon code.', false);\r\n    }\r\n\r\n    renderReview();\r\n  });\r\n}  \r\n\r\n  \/\/ Initial render\r\n  updatePreview();\r\n  renderReview();\r\n\r\n})();\r\n<\/script>\r\n\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>Upgrade this damnation Add extra heat \u2014 each option increases your donation and intensifies the damnation. \ud83d\udd25\ud83d\udd25 Double Damn\u2122 Twice the heat. (2X The Donation) \ud83d\udcc5 Late Fee\u2122 Hell waits for no one. (+ $3.33) \u2620\ufe0f Burn Bonus\u2122 Turn the heat into ash. (+ $6.66) Next \u2192 Who (or what) is this plot for? Tell [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-3986","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Customization - Hellyeaplots<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hellyeaplots.com\/shop\/customization\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Customization - Hellyeaplots\" \/>\n<meta property=\"og:description\" content=\"Upgrade this damnation Add extra heat \u2014 each option increases your donation and intensifies the damnation. \ud83d\udd25\ud83d\udd25 Double Damn\u2122 Twice the heat. (2X The Donation) \ud83d\udcc5 Late Fee\u2122 Hell waits for no one. (+ $3.33) \u2620\ufe0f Burn Bonus\u2122 Turn the heat into ash. (+ $6.66) Next \u2192 Who (or what) is this plot for? Tell [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hellyeaplots.com\/shop\/customization\/\" \/>\n<meta property=\"og:site_name\" content=\"Hellyeaplots\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-02T19:58:09+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hellyeaplots.com\/shop\/customization\/\",\"url\":\"https:\/\/www.hellyeaplots.com\/shop\/customization\/\",\"name\":\"Customization - Hellyeaplots\",\"isPartOf\":{\"@id\":\"https:\/\/www.hellyeaplots.com\/shop\/#website\"},\"datePublished\":\"2025-11-25T17:24:22+00:00\",\"dateModified\":\"2026-04-02T19:58:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hellyeaplots.com\/shop\/customization\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hellyeaplots.com\/shop\/customization\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hellyeaplots.com\/shop\/customization\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hellyeaplots.com\/shop\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Customization\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hellyeaplots.com\/shop\/#website\",\"url\":\"https:\/\/www.hellyeaplots.com\/shop\/\",\"name\":\"Hellyeaplots\",\"description\":\"Hellyeaplots\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hellyeaplots.com\/shop\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Customization - Hellyeaplots","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hellyeaplots.com\/shop\/customization\/","og_locale":"en_US","og_type":"article","og_title":"Customization - Hellyeaplots","og_description":"Upgrade this damnation Add extra heat \u2014 each option increases your donation and intensifies the damnation. \ud83d\udd25\ud83d\udd25 Double Damn\u2122 Twice the heat. (2X The Donation) \ud83d\udcc5 Late Fee\u2122 Hell waits for no one. (+ $3.33) \u2620\ufe0f Burn Bonus\u2122 Turn the heat into ash. (+ $6.66) Next \u2192 Who (or what) is this plot for? Tell [&hellip;]","og_url":"https:\/\/www.hellyeaplots.com\/shop\/customization\/","og_site_name":"Hellyeaplots","article_modified_time":"2026-04-02T19:58:09+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.hellyeaplots.com\/shop\/customization\/","url":"https:\/\/www.hellyeaplots.com\/shop\/customization\/","name":"Customization - Hellyeaplots","isPartOf":{"@id":"https:\/\/www.hellyeaplots.com\/shop\/#website"},"datePublished":"2025-11-25T17:24:22+00:00","dateModified":"2026-04-02T19:58:09+00:00","breadcrumb":{"@id":"https:\/\/www.hellyeaplots.com\/shop\/customization\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hellyeaplots.com\/shop\/customization\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.hellyeaplots.com\/shop\/customization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hellyeaplots.com\/shop\/"},{"@type":"ListItem","position":2,"name":"Customization"}]},{"@type":"WebSite","@id":"https:\/\/www.hellyeaplots.com\/shop\/#website","url":"https:\/\/www.hellyeaplots.com\/shop\/","name":"Hellyeaplots","description":"Hellyeaplots","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hellyeaplots.com\/shop\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.hellyeaplots.com\/shop\/wp-json\/wp\/v2\/pages\/3986","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hellyeaplots.com\/shop\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.hellyeaplots.com\/shop\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.hellyeaplots.com\/shop\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hellyeaplots.com\/shop\/wp-json\/wp\/v2\/comments?post=3986"}],"version-history":[{"count":289,"href":"https:\/\/www.hellyeaplots.com\/shop\/wp-json\/wp\/v2\/pages\/3986\/revisions"}],"predecessor-version":[{"id":5204,"href":"https:\/\/www.hellyeaplots.com\/shop\/wp-json\/wp\/v2\/pages\/3986\/revisions\/5204"}],"wp:attachment":[{"href":"https:\/\/www.hellyeaplots.com\/shop\/wp-json\/wp\/v2\/media?parent=3986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}