/* growform client2 bundle.url: https://assets.growform.co/cee2d99-mhw6hzfz/form.bundle.js resolve.source: memory resolve.at: 2025-12-13T16:34:39.879Z form.source: api cache.age_ms: 2780 fallback_used: false */ ;(function () { var EMBED_TYPE = "iFrame"; var FORM_ID = "66f178be582df9000c46cdd5"; var FORM_BUNDLE_URL = "https://assets.growform.co/cee2d99-mhw6hzfz/form.bundle.js"; // injected by worker (KV/memory/fallback) var FORM_DATA = {"data":{"form":{"_id":"66f178be582df9000c46cdd5","steps":[{"id":"acd45227cac332d443c4e1db","name":"Type of service","sortOrder":1},{"id":"ff4727c9498ef9c0a6c989d9","name":"Contact info","sortOrder":2}],"formName":"Kevvel Landing Form","fields":{"Decorative Header_52363373085874":{"type":"Decorative Header","value":"Thanks for your enquiry!","width":12,"step":"complete","sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":"Bold"},"margins":{"marginTop":20},"stepId":"complete"},"Decorative Header_797442086161467":{"type":"Decorative Header","value":"What Type of Service?","width":12,"step":2,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":"Bold"},"stepId":"acd45227cac332d443c4e1db"},"Decorative Header_576559560634956":{"type":"Decorative Header","value":"How Should We Get In Touch?","width":12,"step":5,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":"Bold"},"stepId":"ff4727c9498ef9c0a6c989d9"},"email_907058157108782":{"type":"Email","label":"Your email address","width":12,"margins":{"marginBottom":0},"step":5,"sortOrder":3,"stepId":"ff4727c9498ef9c0a6c989d9"},"phone_589083232390193":{"type":"Phone","label":"Your phone number","width":12,"margins":{"marginBottom":0},"step":5,"sortOrder":4,"helperText":"","stepId":"ff4727c9498ef9c0a6c989d9","useTwilioLookup":true},"text_373461752242760":{"type":"Text","label":"Your name","width":12,"margins":{"marginBottom":0},"step":5,"sortOrder":2,"validationRules":{"required":true},"stepId":"ff4727c9498ef9c0a6c989d9"},"Decorative_Paragraph_194067845817258":{"type":"Decorative Paragraph","value":"Thanks for getting in touch. We'll be in contact soon with more information about timelines and availability","width":12,"step":"complete","sortOrder":2,"margins":{"marginBottom":60},"stepId":"complete"},"buttons_485431231808561":{"type":"Buttons","validationRules":{"required":true},"label":"Repair Type","width":12,"multiple":false,"buttonStyle":{"rt_buttonsPerRow":2,"rt_buttonsPerRowMobile":1,"buttonsType":"Rectangle","spacing":20,"showControls":"Yes","rt_compactLayoutOnMobile":"Yes"},"options":[{"text":"Interior Painting","id":"8520042178329cb66678244d","image":null},{"text":"Exterior Painting","id":"7a1aa416126e2e2cbb386e98","image":null},{"text":"Remodeling","image":null,"id":"a588f2147ff67b2eb62346c2"},{"text":"Other","image":null,"id":"918eb034fae49c31d44a15ec"}],"stepId":"acd45227cac332d443c4e1db","sortOrder":2,"hideLabel":true,"imageStyles":{"rt_width":32}},"checkboxes_872592813393630":{"type":"Checkboxes","label":"Do we have permission to call or text you with appointment updates:","width":"12","options":[{"text":"Yes","id":"a6df1fe9211749bedd6597f3"},{"text":"No, please email me","id":"aee1e9bb31c94dbbe0d88511"}],"stepId":"ff4727c9498ef9c0a6c989d9","sortOrder":5,"validationRules":{"required":true}}},"options":{"numberOfSteps":5,"dateFormat":"DD/MM/YYYY","progressBar":{"enable":true},"continueButton":{"continueText":"Next","submitText":"Send Message","backText":"Back"},"customStyles":{"width":{"unit":"px","value":580},"parentContainerMinHeight":{"value":0,"unit":"px"},"parentBackgroundImage":{"imageInitialHeight":1362,"imageInitialWidth":2066,"imageHeight":1362,"imageWidth":2066,"imageUrl":"https://res.cloudinary.com/dqnjggegp/image/upload/v1597337140/uploads/qmsfk98ank3wfp1ehvyg.jpg"},"headerMarginTop":30,"parentBackgroundColor":"#ffffff","innerFormBackgroundColor":"#ffffff","innerFormBackgroundTransparency":100,"primaryColor":"#ff4c00","bodyTextColor":"#343434","parentContainerBackgroundType":"none","innerFormBackgroundType":"color","buttonBorderColor":"#ff7500","buttonColorSelected":"#ffa659","buttonBorderColorSelected":"#ff7500","footerMarginBottom":35,"errorColor":"#ff4e4e","buttonColor":"#ff7500","buttonTextColor":"#ffffff","inputLabelColor":"#a3a3a3","inputTextColor":"#000000","defaultFont":"Comfortaa","sq_buttonFont":"Poppins","sq_buttonFontSize":15,"showShadows":"Yes","sq_buttonTextColor":"#343434","sq_buttonColor":"#FFFFFF","sq_buttonColorSelected":"#FFFFFF","sq_buttonBorderColor":"#DADADA","sq_buttonBorderColorSelected":"primary","sq_buttonBannerColor":"#FFFFFF","rt_buttonFont":"Poppins","rt_buttonFontSize":15,"rt_buttonColor":"#FFFFFF","rt_buttonColorSelected":"#FFFFFF","rt_buttonTextColor":"#343434","rt_buttonBorderColor":"#DADADA","rt_buttonBorderColorSelected":"primary","inputLabelFont":"Poppins","inputFontSize":16,"continueSubmitButtonFontSize":15,"formMarginSide":25},"localization":{"dateFormat":"MM/DD/YYYY"},"exportTransparentBackground":false,"customScript":"","customRedirectUrls":[{"url":""}],"analyticsSettings":{"google_ads":{"conversionId":"16711998127","conversionLabel":"53iPCOuFidYZEK-186A-"}},"captureSystemDetails":true},"ownedByUser":"660c1d4f2bd474000b2c1191","personalisation":{"form_related_to":"Builders / Construction"},"created":"2024-09-23T14:18:38.973Z","__v":0,"lastEdited":"2024-10-11T13:41:28.327Z","screenshotUrl":"https://res.cloudinary.com/dqnjggegp/image/upload/v1742507651/growform-production/form-screenshots/66f178be582df9000c46cdd5.png","leadsCount":13,"isActive":true},"accountIsActive":false,"accountIsFreeTrial":true}}; // ---- 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' + '