/* growform client2 bundle.url: https://assets.growform.co/ba56928-mhuz16s0/form.bundle.js resolve.source: kv resolve.at: 2025-11-11T22:35:36.594Z form.source: api cache.age_ms: 0 kv.value_present: true fallback_used: false */ ;(function () { var EMBED_TYPE = "iFrame"; var FORM_ID = "66168c3102b318000b56fcf0"; var FORM_BUNDLE_URL = "https://assets.growform.co/ba56928-mhuz16s0/form.bundle.js"; // injected by worker (KV/memory/fallback) var FORM_DATA = {"data":{"form":{"_id":"66168c3102b318000b56fcf0","steps":[{"id":"e579a24de17a18ac3e426770","name":"Homeowner ?","sortOrder":1},{"id":"379fcd17bb668664234d96e2","name":"What type of home do you live in?","sortOrder":2,"copyOf":"e579a24de17a18ac3e426770"},{"id":"0eaa444cc7eb2999ef4848ad","name":"Enter Your Contact Details...","sortOrder":3,"copyOf":"e579a24de17a18ac3e426770"}],"formName":"First Stop Home Improvements","fields":{"decorative text_52363373085874":{"type":"Decorative Header","value":"Your Roofing Quote Is On The Way!","width":12,"step":"complete","sortOrder":1,"fieldStyle":{"fontSize":{"value":"22","unit":"px"},"fontWeight":"Bold","color":"#030101"},"margins":{"marginTop":20},"stepId":"complete"},"decorative text_194067845817258":{"type":"Decorative Paragraph","value":"Thanks for getting in touch. We'll be in contact soon with your free home appraisal.","width":12,"step":"complete","sortOrder":2,"margins":{"marginBottom":60},"stepId":"complete","fieldStyle":{"color":"#090101"}},"decorative_header_967281032078171":{"type":"Decorative Header","value":"1. Are You A Homeowner","width":12,"sortOrder":1,"stepId":"e579a24de17a18ac3e426770","fieldStyle":{"color":"#000000","textAlign":"Left"},"margins":{"marginTop":-41}},"decorative_header_389177100725795":{"type":"Decorative Header","value":"3. Request My Free Roof Coating Quote\n","width":12,"sortOrder":1,"stepId":"0eaa444cc7eb2999ef4848ad","fieldStyle":{"color":"#000000","textAlign":"Left"}},"name_945296427265727":{"type":"Name","label":"What is your name?","width":12,"hideLabel":true,"options":{"Firstname":{"value":null,"errorText":null},"Lastname":{"value":null,"errorText":null},"Prefix":{"value":null,"errorText":null,"validationRules":{"required":false}}},"stepId":"0eaa444cc7eb2999ef4848ad","sortOrder":2,"hidePrefix":true},"email_763513808516177":{"type":"Email","label":"Email","width":12,"stepId":"0eaa444cc7eb2999ef4848ad","sortOrder":3,"useDatasoap2":true},"phone_167051470456625":{"type":"Phone","label":"Phone","width":12,"stepId":"0eaa444cc7eb2999ef4848ad","sortOrder":4,"defaultCountryFormat":"gb","useDatasoap2":true},"decorative_header_332140946995919":{"type":"Decorative Header","value":"2. What type of home do you live in?","width":12,"sortOrder":1,"stepId":"379fcd17bb668664234d96e2","fieldStyle":{"color":"#000000","textAlign":"Left"}},"buttons_790072980000891":{"type":"Buttons","validationRules":{"required":true},"label":"hometype","width":12,"multiple":false,"buttonStyle":{"rt_buttonsPerRow":2,"rt_buttonsPerRowMobile":"2","buttonsType":"Rectangle","spacing":20,"showControls":"Yes","rt_compactLayoutOnMobile":"Yes"},"options":[{"text":"Detached","id":"dfd3eefc03e092b36ad2073b","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1692183151/uploads/ivprphxjjr8qoctg2wts.png"},{"text":"Semi-detached","id":"47e479aaf0f089be9d1b25ee","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1692183154/uploads/bbr61olrqp1u2yyh4fdf.png"},{"text":"Terrace","id":"d7c454be689437ef5dd18661","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1692183163/uploads/tgcp5c7kcrxp35jjwacb.png"},{"text":"Bungalow","id":"147b766e2efc13515387251e","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1692183166/uploads/emifjtikrfjmcwx1kjlr.png"},{"text":"Flat","image":"https://res.cloudinary.com/dqnjggegp/image/upload/v1692183168/uploads/yhnwghkcmxwmdctp6aa5.png","id":"261fcee92b11ed19de20e8c0"}],"stepId":"379fcd17bb668664234d96e2","sortOrder":2},"buttons_65956314880010":{"type":"Buttons","validationRules":{"required":true},"label":"Homeowner","width":12,"multiple":false,"buttonStyle":{"rt_buttonsPerRow":2,"rt_buttonsPerRowMobile":"2","buttonsType":"Rectangle","spacing":20,"showControls":"Yes","rt_compactLayoutOnMobile":"Yes"},"options":[{"text":"Yes","id":"dfd3eefc03e092b36ad2073b"},{"text":"No","id":"47e479aaf0f089be9d1b25ee"}],"stepId":"e579a24de17a18ac3e426770","sortOrder":2,"margins":{"marginLeft":0,"marginTop":-41}},"zipcode_132162577706710":{"type":"Zipcode","label":"Enter your postcode","zipcodeFieldFormat":"postcode_uk","width":12,"stepId":"0eaa444cc7eb2999ef4848ad","sortOrder":5,"usePostcoder":true},"hidden_320701357904011":{"type":"Hidden","hiddenFieldName":"utm_source","width":12,"stepId":"e579a24de17a18ac3e426770","sortOrder":3},"hidden_376549346426115":{"type":"Hidden","hiddenFieldName":"utm_campaign","width":12,"stepId":"e579a24de17a18ac3e426770","sortOrder":4},"hidden_265685137395486":{"type":"Hidden","hiddenFieldName":"utm_term","width":12,"stepId":"e579a24de17a18ac3e426770","sortOrder":5},"hidden_746615243987569":{"type":"Hidden","hiddenFieldName":"utm_content","width":12,"stepId":"e579a24de17a18ac3e426770","sortOrder":6}},"options":{"numberOfSteps":4,"dateFormat":"DD/MM/YYYY","progressBar":{"enable":true,"hideOnFirstStep":true},"continueButton":{"continueText":"Next 👉","submitText":"GET MY FREE QUOTE! 👉","backText":"Back"},"customStyles":{"width":{"unit":"px","value":580},"parentContainerMinHeight":{"value":0,"unit":"px"},"parentBackgroundImage":{"imageInitialHeight":1116,"imageInitialWidth":1902,"imageHeight":1116,"imageWidth":1902,"imageUrl":"https://res.cloudinary.com/dqnjggegp/image/upload/v1601640522/uploads/qrwuvldlke6g8njr2x6j.jpg"},"headerMarginTop":40,"parentBackgroundColor":"#9e9e9e","innerFormBackgroundColor":"#ffffff","innerFormBackgroundTransparency":"","primaryColor":"#03408a","bodyTextColor":"#ffffff","parentContainerBackgroundType":"none","innerFormBackgroundType":"color","buttonBorderColor":"#848484","buttonColorSelected":"#dce3ec","buttonBorderColorSelected":"#008ddb","footerMarginBottom":40,"errorColor":"#f90000","buttonColor":"#ffffff","inputLabelColor":"#a3a3a3","inputTextColor":"#000000","buttonTextColor":"#000000","continueSubmitButtonFontSize":24,"radioButtonAndCheckboxColor":"#000000","inputBackgroundColor":"#f5f5f5","buttonFontSize":20,"defaultFont":"Roboto","continueButtonTextColor":"inherit","rt_buttonColor":"#f5f5f5"},"localization":{"dateFormat":"DD/MM/YYYY"},"exportTransparentBackground":false,"customScript":"","customRedirectUrls":[{"url":"https://myroofupgrades.com/first-stop-confirmation"}],"actionOnSubmit":"redirect","customCss":" .formBackground{\n border-radius: 10px; \n // border: 2px solid #03408a; \n }\n\n.prog.progressBar {\n position: absolute;\n top: 0;\n left: 5%;\n width: 90%;\n height: 9px;\n background-color: blue;\n z-index: 9999;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progressBar::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-image: repeating-linear-gradient(-45deg, rgba(255, 255, 255, 0.4) 0, rgba(255, 255, 255, 0.4) 4px, transparent 4px, transparent 8px);\n}\n\n.address_518447847535994 {\n padding: 30px; \n font-size: 50px; \n}\n\n\n","sendCustomRedirectQueryParams":false},"ownedByUser":"6492e74bac713f000bdf5a91","personalisation":{"form_related_to":"Roofers / roofing"},"created":"2024-04-10T12:55:13.448Z","__v":0,"lastEdited":"2024-05-28T13:00:16.436Z","screenshotUrl":"https://res.cloudinary.com/dqnjggegp/image/upload/v1742549204/growform-production/form-screenshots/66168c3102b318000b56fcf0.png","leadsCount":73,"isActive":true},"accountIsActive":true,"accountIsFreeTrial":false}}; // ---- Utils ---- function safeJSONStringify(obj) { return JSON.stringify(obj) .replace(/<\/(script|style)/gi, '<\\/$1') .replace(//g, '--\\>') .replace(/\u2028/g, '\\u2028') .replace(/\u2029/g, '\\u2029'); } function preloadScript(href) { try { if (!href) return; if (document.querySelector('link[rel="preload"][href="' + href + '"]')) return; var l = document.createElement("link"); l.rel = "preload"; l.as = "script"; l.href = href; l.crossOrigin = ""; // allow cache reuse in iframe document.head.appendChild(l); } catch (_) {} } function parseQuery() { var out = {}; try { if (!window.location.search) return out; var usp = new URLSearchParams(window.location.search); usp.forEach(function (v, k) { out[k] = v; }); } catch (_) {} return out; } function buildIframeHTML(opts) { var html = '\n' + '\n' + '\n' + ' \n' + ' \n' + ' \n' + '\n' + '\n' + ' \n' + '
\n' + '