{"product_id":"custom-project-professional-design-engineering-reservation","title":"Custom Project - Professional Design \u0026 Engineering Reservation","description":"\u003cstyle\u003e\n.cp-form-col{font-family:inherit;padding:0}\n.cp-form-col h2{font-size:22px;font-weight:700;color:#34374D;margin-bottom:.4rem;font-family:inherit}\n.cp-form-col\u003e.cp-sub{font-size:14px;color:#8a7f6a;margin-bottom:1.5rem;font-family:inherit}\n.cp-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}\n.cp-field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}\n.cp-field label{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#34374D;font-family:inherit}\n.cp-field input,.cp-field select,.cp-field textarea{border:1.5px solid #d4d0c8;border-radius:7px;padding:.75rem 1rem;font-size:15px;color:#34374D;font-family:inherit;background:#fafaf8;width:100%;outline:none;transition:border .2s,box-shadow .2s}\n.cp-field input:focus,.cp-field select:focus,.cp-field textarea:focus{border-color:#C3A684;box-shadow:0 0 0 3px rgba(195,166,132,.15);background:#fff}\n.cp-field textarea{resize:vertical;min-height:90px}\n.cp-err{font-size:11px;color:#c0392b;display:none;margin-top:2px;font-family:inherit}\n.cp-contact-row{margin-bottom:1rem}\n.cp-contact-label{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#34374D;margin-bottom:.6rem;font-family:inherit}\n.cp-contact-opts{display:flex;gap:1.5rem;flex-wrap:wrap}\n.cp-contact-opt{display:flex;align-items:center;gap:.5rem;font-size:15px;color:#34374D;font-family:inherit;cursor:pointer}\n.cp-contact-opt input[type=checkbox]{width:18px;height:18px;accent-color:#C3A684;cursor:pointer}\n.cp-notice{background:#f7f5f1;border:1px solid #C3A684;border-radius:7px;padding:1rem 1.25rem;font-size:14px;color:#34374D;font-family:inherit;margin-top:.5rem;text-align:center;line-height:1.6}\n.cp-notice strong{color:#C3A684}\n@media(max-width:600px){.cp-row{grid-template-columns:1fr}}\n\u003c\/style\u003e\n\n\u003cdiv class=\"cp-form-col\"\u003e\n  \u003ch2\u003eTell Us About Your Project\u003c\/h2\u003e\n  \u003cp class=\"cp-sub\"\u003eFill in your details below. Our engineering team will review and contact you within 24 hours.\u003c\/p\u003e\n\n  \u003cdiv class=\"cp-row\"\u003e\n    \u003cdiv class=\"cp-field\"\u003e\n      \u003clabel\u003eFirst Name *\u003c\/label\u003e\n      \u003cinput type=\"text\" id=\"cp-fname\" placeholder=\"John\"\u003e\n      \u003cspan class=\"cp-err\" id=\"cp-err-fname\"\u003eRequired\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cp-field\"\u003e\n      \u003clabel\u003eLast Name *\u003c\/label\u003e\n      \u003cinput type=\"text\" id=\"cp-lname\" placeholder=\"Smith\"\u003e\n      \u003cspan class=\"cp-err\" id=\"cp-err-lname\"\u003eRequired\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"cp-row\"\u003e\n    \u003cdiv class=\"cp-field\"\u003e\n      \u003clabel\u003eEmail *\u003c\/label\u003e\n      \u003cinput type=\"email\" id=\"cp-email\" placeholder=\"john@email.com\"\u003e\n      \u003cspan class=\"cp-err\" id=\"cp-err-email\"\u003eValid email required\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cp-field\"\u003e\n      \u003clabel\u003ePhone *\u003c\/label\u003e\n      \u003cinput type=\"tel\" id=\"cp-phone\" placeholder=\"(555) 000-0000\"\u003e\n      \u003cspan class=\"cp-err\" id=\"cp-err-phone\"\u003eMin 7 digits\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"cp-row\"\u003e\n    \u003cdiv class=\"cp-field\"\u003e\n      \u003clabel\u003eDoor Style *\u003c\/label\u003e\n      \u003cselect id=\"cp-style\"\u003e\n        \u003coption value=\"\"\u003eSelect a style...\u003c\/option\u003e\n        \u003coption\u003eFlat Top — Single Door\u003c\/option\u003e\n        \u003coption\u003eFlat Top — Double Door\u003c\/option\u003e\n        \u003coption\u003eArch Top — Single Door\u003c\/option\u003e\n        \u003coption\u003eArch Top — Double Door\u003c\/option\u003e\n        \u003coption\u003eFrench — Single Door\u003c\/option\u003e\n        \u003coption\u003eFrench — Double Door\u003c\/option\u003e\n        \u003coption\u003eCustom \/ Not Sure\u003c\/option\u003e\n      \u003c\/select\u003e\n      \u003cspan class=\"cp-err\" id=\"cp-err-style\"\u003ePlease select a style\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cp-field\"\u003e\n      \u003clabel\u003eBest Time to Contact *\u003c\/label\u003e\n      \u003cselect id=\"cp-time\"\u003e\n        \u003coption value=\"\"\u003eSelect a time...\u003c\/option\u003e\n        \u003coption\u003eMorning (8am — 12pm)\u003c\/option\u003e\n        \u003coption\u003eAfternoon (12pm — 5pm)\u003c\/option\u003e\n        \u003coption\u003eEvening (5pm — 8pm)\u003c\/option\u003e\n        \u003coption\u003eAnytime\u003c\/option\u003e\n      \u003c\/select\u003e\n      \u003cspan class=\"cp-err\" id=\"cp-err-time\"\u003ePlease select a time\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"cp-row\"\u003e\n    \u003cdiv class=\"cp-field\"\u003e\n      \u003clabel\u003eZip Code *\u003c\/label\u003e\n      \u003cinput type=\"text\" id=\"cp-zip\" placeholder=\"e.g. 78701\"\u003e\n      \u003cspan class=\"cp-err\" id=\"cp-err-zip\"\u003eMin 4 characters\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"cp-field\"\u003e\n      \u003clabel\u003eState *\u003c\/label\u003e\n      \u003cinput type=\"text\" id=\"cp-state\" placeholder=\"e.g. Texas\"\u003e\n      \u003cspan class=\"cp-err\" id=\"cp-err-state\"\u003eRequired\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"cp-field\"\u003e\n    \u003clabel\u003eAdditional Notes\u003c\/label\u003e\n    \u003ctextarea id=\"cp-notes\" placeholder=\"Glass preference, finish color, special requirements...\"\u003e\u003c\/textarea\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"cp-contact-row\"\u003e\n    \u003cdiv class=\"cp-contact-label\"\u003ePreferred Contact Method *\u003c\/div\u003e\n    \u003cdiv class=\"cp-contact-opts\"\u003e\n      \u003clabel class=\"cp-contact-opt\"\u003e\u003cinput type=\"checkbox\" name=\"cpcontact\" value=\"Phone\"\u003e Phone Call\u003c\/label\u003e\n      \u003clabel class=\"cp-contact-opt\"\u003e\u003cinput type=\"checkbox\" name=\"cpcontact\" value=\"Text\"\u003e Text Message\u003c\/label\u003e\n      \u003clabel class=\"cp-contact-opt\"\u003e\u003cinput type=\"checkbox\" name=\"cpcontact\" value=\"Email\"\u003e Email\u003c\/label\u003e\n    \u003c\/div\u003e\n    \u003cspan class=\"cp-err\" id=\"cp-err-contact\"\u003eSelect at least one\u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"cp-notice\" id=\"cp-notice\" style=\"display:none\"\u003e\n    ✓ Details saved! Use the \u003cstrong\u003eAdd to Cart\u003c\/strong\u003e or \u003cstrong\u003ePay Now\u003c\/strong\u003e buttons above to complete your $50 deposit.\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\nfunction cpValidate(){\n  let ok=true;\n  [['cp-style','cp-err-style',v=\u003ev.trim().length\u003e2],\n   ['cp-time','cp-err-time',v=\u003ev.trim().length\u003e2],\n   ['cp-zip','cp-err-zip',v=\u003ev.trim().length\u003e=4],\n   ['cp-state','cp-err-state',v=\u003ev.trim().length\u003e1],\n   ['cp-fname','cp-err-fname',v=\u003ev.trim().length\u003e1],\n   ['cp-lname','cp-err-lname',v=\u003ev.trim().length\u003e1],\n   ['cp-email','cp-err-email',v=\u003e\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(v)],\n   ['cp-phone','cp-err-phone',v=\u003ev.trim().length\u003e=7]\n  ].forEach(([id,err,chk])=\u003e{\n    const el=document.getElementById(id);\n    const em=document.getElementById(err);\n    if(!chk(el.value)){em.style.display='block';ok=false;}\n    else{em.style.display='none';}\n  });\n  const cc=document.querySelectorAll('input[name=cpcontact]:checked');\n  const ce=document.getElementById('cp-err-contact');\n  if(cc.length===0){ce.style.display='block';ok=false;}else{ce.style.display='none';}\n  if(!ok) return false;\n  const contact=[...cc].map(c=\u003ec.value).join(', ');\n  const attrs={\n    'First Name':document.getElementById('cp-fname').value,\n    'Last Name':document.getElementById('cp-lname').value,\n    'Email':document.getElementById('cp-email').value,\n    'Phone':document.getElementById('cp-phone').value,\n    'Door Style':document.getElementById('cp-style').value,\n    'Zip Code':document.getElementById('cp-zip').value,\n    'State':document.getElementById('cp-state').value,\n    'Best Time to Contact':document.getElementById('cp-time').value,\n    'Notes':document.getElementById('cp-notes').value||'None',\n    'Contact Method':contact\n  };\n  const body=new URLSearchParams();\n  Object.entries(attrs).forEach(([k,v])=\u003ebody.append('attributes['+k+']',v));\n  fetch('\/cart\/update.js',{method:'POST',headers:{'Content-Type':'application\/x-www-form-urlencoded'},body:body.toString()});\n  document.getElementById('cp-notice').style.display='block';\n  return true;\n}\n\ndocument.addEventListener('DOMContentLoaded', function(){\n  var addToCart = document.querySelector('.product-form__submit');\n  if(addToCart){\n    addToCart.addEventListener('click', function(e){\n      if(!cpValidate()){\n        e.preventDefault();\n        e.stopPropagation();\n      }\n    }, true);\n  }\n});\n\u003c\/script\u003e","brand":"Colonial Iron Doors","offers":[{"title":"Default Title","offer_id":42797462126669,"sku":null,"price":100.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0698\/3575\/1501\/files\/021524-ext12-lg_8600bc4f-c978-4960-8558-277919f50e6b.jpg?v=1773942722","url":"https:\/\/shop.colonialirondoors.com\/products\/custom-project-professional-design-engineering-reservation","provider":"COLONIAL IRON DOORS ","version":"1.0","type":"link"}