{"id":30,"date":"2026-09-25T11:23:17","date_gmt":"2026-09-25T11:23:17","guid":{"rendered":"https:\/\/breezygoose.com\/?page_id=30"},"modified":"2026-10-06T17:34:44","modified_gmt":"2026-10-06T17:34:44","slug":"home","status":"publish","type":"page","link":"https:\/\/breezygoose.com\/","title":{"rendered":"Home"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; fullwidth=&#8221;on&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_fullwidth_slider show_arrows=&#8221;off&#8221; show_pagination=&#8221;off&#8221; show_image_video_mobile=&#8221;on&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; height=&#8221;100vh&#8221; overflow-x=&#8221;visible&#8221; custom_padding=&#8221;20px|||0px|false|false&#8221; auto=&#8221;on&#8221; auto_speed=&#8221;5000&#8243; auto_ignore_hover=&#8221;on&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][et_pb_slide image=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/10\/BG_slider_overlay_1_navy.png&#8221; use_bg_overlay=&#8221;off&#8221; use_text_overlay=&#8221;off&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; header_font=&#8221;|600|||||||&#8221; body_font_size=&#8221;26px&#8221; background_enable_color=&#8221;off&#8221; background_image=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/09\/Breezy-Goose-header-2.png&#8221; background_enable_image=&#8221;on&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;21px&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_transition=&#8221;on&#8221; title_text=&#8221;BG_slider_overlay_1_navy&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_slide][et_pb_slide image=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/10\/BG_slider_overlay_2_navy.png&#8221; use_bg_overlay=&#8221;off&#8221; use_text_overlay=&#8221;off&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; header_font=&#8221;|600|||||||&#8221; body_font_size=&#8221;26px&#8221; background_enable_color=&#8221;off&#8221; background_image=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/09\/Breezy-Goose-Header-image-3-white-overlay.png&#8221; background_enable_image=&#8221;on&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;21px&#8221; custom_padding=&#8221;|||0px|false|false&#8221; child_filter_opacity=&#8221;89%&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_transition=&#8221;on&#8221; title_text=&#8221;BG_slider_overlay_2_navy&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_slide][\/et_pb_fullwidth_slider][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||33px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;5px|||||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_font_size=&#8221;23px&#8221; text_line_height=&#8221;1.4em&#8221; header_font=&#8221;&#8211;et_global_body_font|600|||||||&#8221; header_text_color=&#8221;#0b3f75&#8243; header_font_size=&#8221;56px&#8221; custom_padding=&#8221;84px|||||&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_font_size_phone=&#8221;38px&#8221; header_line_height=&#8221;1.2em&#8221; sticky_enabled=&#8221;0&#8243; header_font_size_tablet=&#8221;56px&#8221;]<\/p>\n<h1>Breezy Goose Air Conditioning<\/h1>\n<p>Specialist friendly family run air conditioning installation in East Surrey &amp; West Sussex.<\/p>\n<p>We install and service domestic and commercial air conditioning systems.<\/p>\n<p>We also provide heritage and listed air conditioning installation options.\u00a0<\/p>\n<p>Air Conditioning installations in Reigate, Redhill, Horley, Crawley, Horsham, East Grinstead, Dorking, Bletchingley, Godstone, Oxted, Lingfield Banstead, Coulsdon, Caterham, Leatherhead, Cranleigh, Guildford and everywhere in between<\/p>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/09\/The-Breezy-Goose.png&#8221; title_text=&#8221;The Breezy Goose&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;58px|||||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; background_image=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/10\/Sunlit-living-room-with-cool-airflow.png&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_4,1_2,1_4&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;131px||412px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/10\/Breezy-Goose-Air-Conditioning-Installation-e1790949975450.png&#8221; title_text=&#8221;Breezy Goose Air Conditioning Installation&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_image src=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/10\/Breezy-Goose-Air-Conditioning-Service-e1790950120975.png&#8221; title_text=&#8221;Breezy Goose Air Conditioning Service&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_image src=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/10\/Breezy-Goose-Local-team-e1790950070999.png&#8221; title_text=&#8221;Breezy Goose Local team&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;23px&#8221; text_line_height=&#8221;1.4em&#8221; header_font=&#8221;&#8211;et_global_body_font|600|||||||&#8221; header_text_color=&#8221;#287cc1&#8243; header_font_size=&#8221;56px&#8221; header_2_font=&#8221;&#8211;et_global_body_font|600|||||||&#8221; header_2_text_color=&#8221;#0b3f75&#8243; header_2_font_size=&#8221;52px&#8221; custom_padding=&#8221;35px|||||&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_phone=&#8221;38px&#8221; sticky_enabled=&#8221;0&#8243; header_2_text_color_last_edited=&#8221;on|phone&#8221; header_2_line_height=&#8221;1.2em&#8221; header_2_font_size_tablet=&#8221;52px&#8221; header_2_text_color_tablet=&#8221;#0b3f75&#8243; header_2_text_color_phone=&#8221;#0b3f75&#8243;]<\/p>\n<h2 style=\"text-align: center;\">Online Air Conditioning Quote<\/h2>\n<p style=\"text-align: center;\">Instant domestic online air conditioning price estimate<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||247px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<!--<!-- [et_pb_line_break_holder] -->  ============================================================================<!-- [et_pb_line_break_holder] -->  BREEZY GOOSE \u2014 &#8220;GET YOUR QUOTE&#8221; WIZARD  (editable edition)<!-- [et_pb_line_break_holder] -->  ============================================================================<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  Everything you&#8217;d want to change lives in the CONFIG block below, between<!-- [et_pb_line_break_holder] -->  the two ==== EDIT ==== markers. You should never need to touch the code<!-- [et_pb_line_break_holder] -->  underneath it.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  From CONFIG you can change:<!-- [et_pb_line_break_holder] -->    &#8211; all colours and fonts<!-- [et_pb_line_break_holder] -->    &#8211; every heading, label, helper line and button caption<!-- [et_pb_line_break_holder] -->    &#8211; the questions themselves, how many there are, and their order<!-- [et_pb_line_break_holder] -->    &#8211; the answer options on each question<!-- [et_pb_line_break_holder] -->    &#8211; which answers change the recommended system and the price<!-- [et_pb_line_break_holder] -->    &#8211; the price ranges shown<!-- [et_pb_line_break_holder] -->    &#8211; the contact fields collected<!-- [et_pb_line_break_holder] -->    &#8211; your phone number, and the HubSpot \/ Google IDs<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  INSTALLING ON WORDPRESS<!-- [et_pb_line_break_holder] -->    Edit your page -> add a &#8220;Custom HTML&#8221; block -> paste this whole file in.<!-- [et_pb_line_break_holder] -->    (Elementor: &#8220;HTML&#8221; widget. Divi: &#8220;Code&#8221; module. Not a Paragraph block.)<!-- [et_pb_line_break_holder] -->    Then install the separate site-wide head snippet for tracking.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  EDITING SAFELY \u2014 four rules<!-- [et_pb_line_break_holder] -->    1. Text goes inside &#8216;single quotes&#8217;. Keep the quotes.<!-- [et_pb_line_break_holder] -->    2. If your text contains an apostrophe, put a backslash before it:<!-- [et_pb_line_break_holder] -->       &#8216;We\\&#8217;ll call you back&#8217;<!-- [et_pb_line_break_holder] -->    3. Every line inside { } or [ ] ends with a comma, except the last one.<!-- [et_pb_line_break_holder] -->    4. After editing, reload the page. If the wizard vanishes, you&#8217;ve almost<!-- [et_pb_line_break_holder] -->       certainly broken rule 1, 2 or 3 \u2014 press F12, open the Console tab, and<!-- [et_pb_line_break_holder] -->       the error will name the line.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  Tip: change one thing at a time and reload. Much easier to spot a mistake.<!-- [et_pb_line_break_holder] -->  ============================================================================<!-- [et_pb_line_break_holder] -->&#8211;><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/p>\n<div id=\"bgw-root\"><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->window.BGW_CONFIG = {<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* ==========================================================================<!-- [et_pb_line_break_holder] -->   ==== EDIT EVERYTHING BELOW THIS LINE ====<!-- [et_pb_line_break_holder] -->   ========================================================================== *\/<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* --------------------------------------------------------------------------<!-- [et_pb_line_break_holder] -->   1. LOOK AND FEEL<!-- [et_pb_line_break_holder] -->   Colours accept any hex code. Pick them at https:\/\/htmlcolorcodes.com<!-- [et_pb_line_break_holder] -->   -------------------------------------------------------------------------- *\/<!-- [et_pb_line_break_holder] -->theme: {<!-- [et_pb_line_break_holder] -->  pageBackground:   '#BAE5FA',   \/\/ the wizard card's background<!-- [et_pb_line_break_holder] -->  cardBackground:   '#ffffff',   \/\/ answer boxes and input fields<!-- [et_pb_line_break_holder] -->  textColour:       '#16262b',   \/\/ main text<!-- [et_pb_line_break_holder] -->  mutedTextColour:  '#4b5d62',   \/\/ sub-labels and helper text<!-- [et_pb_line_break_holder] -->  accentColour:     '#6ECFF6',   \/\/ selected answers, progress bar<!-- [et_pb_line_break_holder] -->  accentDarkColour: '#1D9AD6',   \/\/ prices, small headings<!-- [et_pb_line_break_holder] -->  buttonColour:     '#FEC214',   \/\/ the main button<!-- [et_pb_line_break_holder] -->  buttonHoverColour:'#FBB316',   \/\/ that button, hovered<!-- [et_pb_line_break_holder] -->  highlightColour:  '#6ECFF6',   \/\/ selected answer background<!-- [et_pb_line_break_holder] -->  borderColour:     '#6ECFF6',   \/\/ all borders<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  headingFont: \"'Kodchasan', sans-serif\",<!-- [et_pb_line_break_holder] -->  bodyFont:    \"'KoHo', sans-serif\",<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Set to '' (empty) if your theme already loads these fonts.<!-- [et_pb_line_break_holder] -->  \/\/ NOTE: only ONE googleFontsUrl line is allowed. If this setting appears<!-- [et_pb_line_break_holder] -->  \/\/ twice in the block, the second silently overrides the first.<!-- [et_pb_line_break_holder] -->  googleFontsUrl: 'https:\/\/fonts.googleapis.com\/css2?family=Kodchasan:wght@400;500;600&family=KoHo:wght@400;600;700&display=swap',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  cornerRadius: '22px',          \/\/ card corners. '0px' for square, '40px' for very round<!-- [et_pb_line_break_holder] -->  maxWidth:     '680px'          \/\/ how wide the wizard can get<!-- [et_pb_line_break_holder] -->},<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* --------------------------------------------------------------------------<!-- [et_pb_line_break_holder] -->   2. BUTTONS AND SHARED WORDING<!-- [et_pb_line_break_holder] -->   -------------------------------------------------------------------------- *\/<!-- [et_pb_line_break_holder] -->labels: {<!-- [et_pb_line_break_holder] -->  nextButton:      'Continue',<!-- [et_pb_line_break_holder] -->  finalButton:     'Display my INSTANT estimate',<!-- [et_pb_line_break_holder] -->  backButton:      'Back',<!-- [et_pb_line_break_holder] -->  sendingButton:   'Sending\u2026',<!-- [et_pb_line_break_holder] -->  stepCounter:     'Step {current} of {total}',   \/\/ leave {current} and {total} in place<!-- [et_pb_line_break_holder] -->  submitFailed:    'We couldn\\'t send that \u2014 please call 01737 44 8888 and we\\'ll help you directly.'<!-- [et_pb_line_break_holder] -->},<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* --------------------------------------------------------------------------<!-- [et_pb_line_break_holder] -->   3. THE QUESTIONS<!-- [et_pb_line_break_holder] -->   <!-- [et_pb_line_break_holder] -->   Add, remove or reorder questions by adding or deleting the { ... } blocks.<!-- [et_pb_line_break_holder] -->   There's no limit on how many you have. The progress bar adjusts itself.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->   Each question needs:<!-- [et_pb_line_break_holder] -->     id            a short one-word name, no spaces. Used by the pricing rules<!-- [et_pb_line_break_holder] -->                   in section 5, so if you change it, change it there too.<!-- [et_pb_line_break_holder] -->     type          'single'  = pick one answer<!-- [et_pb_line_break_holder] -->                   'multi'   = pick several<!-- [et_pb_line_break_holder] -->                   'contact' = the name\/email\/phone form (see section 4)<!-- [et_pb_line_break_holder] -->     title         the question itself<!-- [et_pb_line_break_holder] -->     hubspotField  the HubSpot property this answer is saved to. Must match<!-- [et_pb_line_break_holder] -->                   the internal name of a property you've created in HubSpot.<!-- [et_pb_line_break_holder] -->     options       the answers. 'label' is the bold line, 'sub' the grey line<!-- [et_pb_line_break_holder] -->                   underneath ('sub' is optional \u2014 delete it if you don't want one).<!-- [et_pb_line_break_holder] -->     reason        optional. If the customer picks this answer, this sentence<!-- [et_pb_line_break_holder] -->                   is added to their result page. Delete the line for none.<!-- [et_pb_line_break_holder] -->     errorMessage  shown if they try to continue without answering.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->   'multi' questions also take:<!-- [et_pb_line_break_holder] -->     maxChoices    how many they can pick<!-- [et_pb_line_break_holder] -->     helperText    the grey line under the options. {count} and {max} fill in.<!-- [et_pb_line_break_holder] -->     maxReachedText what's shown once they hit the limit.<!-- [et_pb_line_break_holder] -->   -------------------------------------------------------------------------- *\/<!-- [et_pb_line_break_holder] -->questions: [<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  {<!-- [et_pb_line_break_holder] -->    id: 'homeSize',<!-- [et_pb_line_break_holder] -->    type: 'single',<!-- [et_pb_line_break_holder] -->    title: 'How many rooms do you want cooled in your home?',<!-- [et_pb_line_break_holder] -->    hubspotField: 'home_size',<!-- [et_pb_line_break_holder] -->    errorMessage: 'Pick the right option so we can size the system.',<!-- [et_pb_line_break_holder] -->    options: [<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'flat',<!-- [et_pb_line_break_holder] -->        label: 'Flat or 1\u20132 beds\/rooms',<!-- [et_pb_line_break_holder] -->        sub:   'Typically one indoor system needed',<!-- [et_pb_line_break_holder] -->        reason:'One or two rooms usually needs a single indoor unit, keeping cost down.'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'mid',<!-- [et_pb_line_break_holder] -->        label: '3\u20134 bed house',<!-- [et_pb_line_break_holder] -->        sub:   'Usually 2\u20134 rooms cooled',<!-- [et_pb_line_break_holder] -->        reason:'Multiple rooms call for a multi-split system sharing one outdoor unit.'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'large',<!-- [et_pb_line_break_holder] -->        label: '5+ bed \/ large home',<!-- [et_pb_line_break_holder] -->        sub:   'Multiple zones, bigger outdoor unit',<!-- [et_pb_line_break_holder] -->        reason:'Larger homes are usually zoned so you can run only the rooms in use.'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'unsure',<!-- [et_pb_line_break_holder] -->        label: 'I\\'m not sure how many rooms to cool yet',<!-- [et_pb_line_break_holder] -->        sub:   'We\\'ll help you work it out',<!-- [et_pb_line_break_holder] -->        reason:'We\\'ve assumed a mid-size home for now \u2014 we\\'ll confirm sizing on the survey.'<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    ]<!-- [et_pb_line_break_holder] -->  },<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  {<!-- [et_pb_line_break_holder] -->    id: 'heritage',<!-- [et_pb_line_break_holder] -->    type: 'single',<!-- [et_pb_line_break_holder] -->    title: 'Is your property listed or in a conservation area?',<!-- [et_pb_line_break_holder] -->    hubspotField: 'heritage_status',<!-- [et_pb_line_break_holder] -->    errorMessage: 'Choose one \u2014 if you\\'re not certain, pick \"Not sure\" and we\\'ll check.',<!-- [et_pb_line_break_holder] -->    options: [<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'modern',<!-- [et_pb_line_break_holder] -->        label: 'No \u2014 standard property',<!-- [et_pb_line_break_holder] -->        sub:   'Full range of units available'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'conservation',<!-- [et_pb_line_break_holder] -->        label: 'Conservation area',<!-- [et_pb_line_break_holder] -->        sub:   'We\\'ll suggest discrete and low-visibility options',<!-- [et_pb_line_break_holder] -->        reason:'In a conservation area, discreet siting keeps the outdoor unit out of street view.'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'listed',<!-- [et_pb_line_break_holder] -->        label: 'Listed building',<!-- [et_pb_line_break_holder] -->        sub:   'Needs heritage compliant systems, sometimes consent',<!-- [et_pb_line_break_holder] -->        reason:'As a listed building, we\\'d recommend a heritage compliant system and will check consent needs for you.'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'unsure',<!-- [et_pb_line_break_holder] -->        label: 'Not sure',<!-- [et_pb_line_break_holder] -->        sub:   'We\\'ll check for you before quoting when you provide your full address',<!-- [et_pb_line_break_holder] -->        reason:'We\\'ll confirm your property\\'s planning status before quoting, so there are no surprises.'<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    ]<!-- [et_pb_line_break_holder] -->  },<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  {<!-- [et_pb_line_break_holder] -->    id: 'priorities',<!-- [et_pb_line_break_holder] -->    type: 'multi',<!-- [et_pb_line_break_holder] -->    title: 'What matters most to you? Pick up to three.',<!-- [et_pb_line_break_holder] -->    hubspotField: 'priorities',<!-- [et_pb_line_break_holder] -->    maxChoices: 3,<!-- [et_pb_line_break_holder] -->    helperText: 'Choose up to {max} \u2014 this shapes which system we recommend.',<!-- [et_pb_line_break_holder] -->    maxReachedText: 'That\\'s the max \u2014 up to {max} please. Untick one to swap.',<!-- [et_pb_line_break_holder] -->    errorMessage: 'Pick at least one priority so we recommend the right unit.',<!-- [et_pb_line_break_holder] -->    options: [<!-- [et_pb_line_break_holder] -->      { value:'quiet',        label:'Whisper-quiet indoors', reason:'We\\'d spec a low-decibel indoor unit for bedrooms and living spaces.' },<!-- [et_pb_line_break_holder] -->      { value:'heating',      label:'System doubles as heating',    reason:'A reversible system doubles as efficient heating, so it earns its keep in winter too.' },<!-- [et_pb_line_break_holder] -->      { value:'running-cost', label:'Low running costs',     reason:'High-efficiency inverter units keep running costs down long-term.' },<!-- [et_pb_line_break_holder] -->      { value:'discreet',     label:'Sleek, discreet design',reason:'Slimline indoor units and considered pipe runs keep the install unobtrusive.' },<!-- [et_pb_line_break_holder] -->      { value:'app',          label:'Smart app control',     reason:'All our recommended systems include app-based scheduling and control.' },<!-- [et_pb_line_break_holder] -->      { value:'speed',        label:'Fast installation',     reason:'Straightforward single or multi-split installs are typically finished within a day.' }<!-- [et_pb_line_break_holder] -->    ]<!-- [et_pb_line_break_holder] -->  },<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  {<!-- [et_pb_line_break_holder] -->    id: 'timing',<!-- [et_pb_line_break_holder] -->    type: 'single',<!-- [et_pb_line_break_holder] -->    title: 'When would you like it installed?',<!-- [et_pb_line_break_holder] -->    hubspotField: 'install_timing',<!-- [et_pb_line_break_holder] -->    errorMessage: 'Roughly when suits? It helps us offer you a realistic slot.',<!-- [et_pb_line_break_holder] -->    options: [<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'asap',<!-- [et_pb_line_break_holder] -->        label: 'As soon as possible',<!-- [et_pb_line_break_holder] -->        sub:   'Next available slot, ideally within 1-2 weeks',<!-- [et_pb_line_break_holder] -->        reason:'We\\'ll offer you our earliest survey slot and flag your job as a priority booking.'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'month',<!-- [et_pb_line_break_holder] -->        label: 'Within the next month',<!-- [et_pb_line_break_holder] -->        sub:   'Ideally within the next 3-5 weeks'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'before-summer',<!-- [et_pb_line_break_holder] -->        label: 'Before next summer',<!-- [et_pb_line_break_holder] -->        sub:   'Beat the warm-weather rush',<!-- [et_pb_line_break_holder] -->        reason:'Booking ahead of summer means shorter lead times and no waiting during the busy spell.'<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        value: 'exploring',<!-- [et_pb_line_break_holder] -->        label: 'Just exploring for now',<!-- [et_pb_line_break_holder] -->        sub:   'Gathering costs, no fixed date',<!-- [et_pb_line_break_holder] -->        reason:'No pressure \u2014 we\\'ll send your estimate over and leave you to it until you\\'re ready.'<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    ]<!-- [et_pb_line_break_holder] -->  },<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  {<!-- [et_pb_line_break_holder] -->    id: 'contact',<!-- [et_pb_line_break_holder] -->    type: 'contact',<!-- [et_pb_line_break_holder] -->    title: 'Where should we send your quote?'<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->],<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* --------------------------------------------------------------------------<!-- [et_pb_line_break_holder] -->   4. THE CONTACT FORM<!-- [et_pb_line_break_holder] -->   Delete a field block to stop asking for it. Add one by copying a block.<!-- [et_pb_line_break_holder] -->     type:     'text', 'email', 'tel', or 'select'<!-- [et_pb_line_break_holder] -->     halfWidth: true puts two fields side by side on one row<!-- [et_pb_line_break_holder] -->     required: true or false<!-- [et_pb_line_break_holder] -->   -------------------------------------------------------------------------- *\/<!-- [et_pb_line_break_holder] -->contactForm: {<!-- [et_pb_line_break_holder] -->  fields: [<!-- [et_pb_line_break_holder] -->    { name:'firstname', label:'First name', type:'text',  required:true, halfWidth:true,  autocomplete:'given-name',  hubspotField:'firstname' },<!-- [et_pb_line_break_holder] -->    { name:'lastname',  label:'Last name',  type:'text',  required:true, halfWidth:true,  autocomplete:'family-name', hubspotField:'lastname' },<!-- [et_pb_line_break_holder] -->    { name:'email',     label:'Email',      type:'email', required:true, halfWidth:true,  autocomplete:'email',       hubspotField:'email' },<!-- [et_pb_line_break_holder] -->    { name:'phone',     label:'Phone',      type:'tel',   required:true, halfWidth:true,  autocomplete:'tel',         hubspotField:'phone' },<!-- [et_pb_line_break_holder] -->    { name:'postcode',  label:'Postcode',   type:'text',  required:true, halfWidth:false, autocomplete:'postal-code', hubspotField:'zip', placeholder:'e.g. RH2 0AA' }<!-- [et_pb_line_break_holder] -->  ],<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  consentText:       'Once I see my quote on the next page, I\\'m happy for Breezy Goose to contact me about it by phone or email. See our',<!-- [et_pb_line_break_holder] -->  consentLinkText:   'privacy notice',<!-- [et_pb_line_break_holder] -->  consentLinkUrl:    '\/privacy-notice\/',<!-- [et_pb_line_break_holder] -->  consentRequired:   true,<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  errorMissing:      'Fill in the highlighted fields so we can send your quote.',<!-- [et_pb_line_break_holder] -->  errorBadEmail:     'That email address looks incomplete \u2014 check it and try again.',<!-- [et_pb_line_break_holder] -->  errorNoConsent:    'Tick the consent box and we can get your quote over to you.'<!-- [et_pb_line_break_holder] -->},<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* --------------------------------------------------------------------------<!-- [et_pb_line_break_holder] -->   5. PRICING AND RECOMMENDATIONS<!-- [et_pb_line_break_holder] -->   <!-- [et_pb_line_break_holder] -->   REPLACE THESE WITH YOUR REAL NUMBERS. They are illustrative placeholders.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->   'basedOn' names the question whose answer sets the starting price.<!-- [et_pb_line_break_holder] -->   'tiers' then has one entry per answer value of that question.<!-- [et_pb_line_break_holder] -->   -------------------------------------------------------------------------- *\/<!-- [et_pb_line_break_holder] -->pricing: {<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  basedOn: 'homeSize',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  tiers: {<!-- [et_pb_line_break_holder] -->    flat:   { name:'Essential Single-Split',           price:'\u00a31,500 \u2013 \u00a32,500 fitted' },<!-- [et_pb_line_break_holder] -->    mid:    { name:'Comfort Multi-Split',              price:'\u00a34,000 \u2013 \u00a37,000 fitted' },<!-- [et_pb_line_break_holder] -->    large:  { name:'Premium Whole-Home',               price:'\u00a38,000 \u2013 \u00a314,000 fitted' },<!-- [et_pb_line_break_holder] -->    unsure: { name:'Comfort Multi-Split (indicative)', price:'\u00a34,000 \u2013 \u00a37,000 fitted' }<!-- [et_pb_line_break_holder] -->  },<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ Rules that change the tier or price when a particular answer is chosen.<!-- [et_pb_line_break_holder] -->  \/\/ Add as many as you like, or delete them all.<!-- [et_pb_line_break_holder] -->  \/\/   whenQuestion \/ whenAnswer  = the trigger<!-- [et_pb_line_break_holder] -->  \/\/   addToTierName              = text appended to the system name<!-- [et_pb_line_break_holder] -->  \/\/   replacePrice               = new price, one per answer of the 'basedOn'<!-- [et_pb_line_break_holder] -->  \/\/                                question. Delete this line to leave the<!-- [et_pb_line_break_holder] -->  \/\/                                price unchanged.<!-- [et_pb_line_break_holder] -->  adjustments: [<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      whenQuestion: 'priorities',<!-- [et_pb_line_break_holder] -->      whenAnswer:   'heating',<!-- [et_pb_line_break_holder] -->      addToTierName:' (reversible heat pump)',<!-- [et_pb_line_break_holder] -->      replacePrice: {<!-- [et_pb_line_break_holder] -->        flat:   '\u00a32,000 \u2013 \u00a33,200 fitted',<!-- [et_pb_line_break_holder] -->        mid:    '\u00a34,800 \u2013 \u00a38,000 fitted',<!-- [et_pb_line_break_holder] -->        large:  '\u00a39,000 \u2013 \u00a315,000 fitted',<!-- [et_pb_line_break_holder] -->        unsure: '\u00a34,800 \u2013 \u00a38,000 fitted'<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  ]<!-- [et_pb_line_break_holder] -->},<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* --------------------------------------------------------------------------<!-- [et_pb_line_break_holder] -->   6. THE RESULT PAGE<!-- [et_pb_line_break_holder] -->   -------------------------------------------------------------------------- *\/<!-- [et_pb_line_break_holder] -->result: {<!-- [et_pb_line_break_holder] -->  badge:        'Your Instant Estimate',<!-- [et_pb_line_break_holder] -->  heading:      'Here\\'s what we\\'d suggest',<!-- [et_pb_line_break_holder] -->  footnote:     'This is a ballpark based on your responses and similar homes \u2014 a 20-minute site survey (video or in person) will confirm your exact preferences and quotation. A member of the team will call within one working day to schedule this site survey.',<!-- [et_pb_line_break_holder] -->  showPhoneButton: true,<!-- [et_pb_line_break_holder] -->  phoneButtonText: 'Schedule the site visit now \u2014 call us 01737 44 8888',<!-- [et_pb_line_break_holder] -->  phoneNumber:     '+441737448888'    \/\/ no spaces, include country code<!-- [et_pb_line_break_holder] -->},<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* --------------------------------------------------------------------------<!-- [et_pb_line_break_holder] -->   6b. PHOTO UPLOAD (shown after the estimate)<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->   Photos land in HubSpot's File Manager and attach to the same contact<!-- [et_pb_line_break_holder] -->   record, so whoever calls them can see the rooms before picking up<!-- [et_pb_line_break_holder] -->   the phone.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->   HOW IT WORKS, AND WHY IT'S BUILT THIS WAY<!-- [et_pb_line_break_holder] -->   HubSpot's submission API cannot accept files \u2014 it only takes text. Files<!-- [et_pb_line_break_holder] -->   are only possible through a HubSpot-hosted form. So this step embeds a<!-- [et_pb_line_break_holder] -->   small HubSpot form of your own, and pre-fills it with the email address<!-- [et_pb_line_break_holder] -->   they just gave, which is what ties the photos to the right contact.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->   That means this section looks slightly different from the rest of the<!-- [et_pb_line_break_holder] -->   wizard: it's HubSpot's form, not mine, so it follows HubSpot's styling.<!-- [et_pb_line_break_holder] -->   I've framed it with your heading and wording so the join is as smooth<!-- [et_pb_line_break_holder] -->   as it can be.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->   WHAT TO BUILD IN HUBSPOT FIRST<!-- [et_pb_line_break_holder] -->     Marketing -> Forms -> Create form -> Embedded form. Call it<!-- [et_pb_line_break_holder] -->     \"Residential photo upload\". Add these fields:<!-- [et_pb_line_break_holder] -->       - Email                (single-line text, required \u2014 gets pre-filled)<!-- [et_pb_line_break_holder] -->       - Room photos          (File field, allow multiple)<!-- [et_pb_line_break_holder] -->       - Outdoor unit photo   (File field)<!-- [et_pb_line_break_holder] -->       - Anything else we should know  (multi-line text, optional)<!-- [et_pb_line_break_holder] -->     Save, then paste its form GUID into photoFormId below.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->   Set enabled to false to switch this whole step off.<!-- [et_pb_line_break_holder] -->   -------------------------------------------------------------------------- *\/<!-- [et_pb_line_break_holder] -->photoUpload: {<!-- [et_pb_line_break_holder] -->  enabled: true,<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  heading:  'Want a full quotation within 24 hours?',<!-- [et_pb_line_break_holder] -->  intro:    'Send us the photos we could collect on a site survey now, and we can send you a finalised quote much faster:',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  guidance: [<!-- [et_pb_line_break_holder] -->    'One or two photos of each room you want cooled \u2014 in one please stand in the doorway so we see the whole room, and if the wall you want the air conditioning unit mounted on is not in that photo then please take a second photo showing that wall.',<!-- [et_pb_line_break_holder] -->    'Photo of the outside wall where the outdoor unit will be installed.',<!-- [et_pb_line_break_holder] -->    'Photos of any property access challenges (stairs, shared entrance etc).',    <!-- [et_pb_line_break_holder] -->    'Photo of the fuse box.'<!-- [et_pb_line_break_holder] -->  ],<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  photoFormId:  'a8e9b6e1-03a3-4d21-8091-d0ba17f1cc40',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* Which HubSpot form editor Form B was built in.<!-- [et_pb_line_break_holder] -->       'new'    \u2014 the current editor (what \"Create form -> Form Editor\" gives<!-- [et_pb_line_break_holder] -->                  you). The form renders in its own frame, so the visitor<!-- [et_pb_line_break_holder] -->                  types their email on it and photos upload at full size.<!-- [et_pb_line_break_holder] -->       'legacy' \u2014 the older editor. Lets the wizard pre-fill and hide the<!-- [et_pb_line_break_holder] -->                  email field AND shrink photos before upload.<!-- [et_pb_line_break_holder] -->     Use 'legacy' only if Form B was genuinely built in the legacy editor,<!-- [et_pb_line_break_holder] -->     otherwise the uploader won't appear at all. *\/<!-- [et_pb_line_break_holder] -->  formStyle: 'new',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* Shown above the upload form in 'new' mode, because the visitor has to<!-- [et_pb_line_break_holder] -->     re-enter their email there. Leave as '' to hide it. {email} is filled<!-- [et_pb_line_break_holder] -->     in with the address they gave a moment ago. *\/<!-- [et_pb_line_break_holder] -->  sameEmailNote: 'Please use the same email address ({email}) on the form below so we can match your photos to your quote.',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* Shown if HubSpot's uploader can't load at all. *\/<!-- [et_pb_line_break_holder] -->  loadFailText: 'We couldn\\'t load the photo uploader just now \u2014 no problem, please email them to info@breezygoose.com instead.',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  successHeading: 'Got them \u2014 thank you.',<!-- [et_pb_line_break_holder] -->  successText:    'Your photos are attached to your enquiry. We will use these to formulate a quotation for you and call you if we need more information.',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  skipText: 'No thanks, please just call me to schedule a site visit',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---- Installation address ----<!-- [et_pb_line_break_holder] -->     Asked here rather than earlier because it's a bigger ask than a<!-- [et_pb_line_break_holder] -->     postcode, and people give it more readily once they've seen their<!-- [et_pb_line_break_holder] -->     estimate. It saves itself as they type \u2014 there's no extra button.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->     The HubSpot property 'address' is a default, so you don't need to<!-- [et_pb_line_break_holder] -->     create it. You DO need to add an Address field to your existing<!-- [et_pb_line_break_holder] -->     quote form in HubSpot, or the save is rejected with a<!-- [et_pb_line_break_holder] -->     FIELD_NOT_IN_FORM_DEFINITION error. *\/<!-- [et_pb_line_break_holder] -->  addressField: {<!-- [et_pb_line_break_holder] -->    enabled:      true,<!-- [et_pb_line_break_holder] -->    label:        'Installation address',<!-- [et_pb_line_break_holder] -->    placeholder:  'House name or number, street, town',<!-- [et_pb_line_break_holder] -->    helper:       'So we can review the location for a precise final quotation.',<!-- [et_pb_line_break_holder] -->    savedText:    'Saved',<!-- [et_pb_line_break_holder] -->    hubspotField: 'address'<!-- [et_pb_line_break_holder] -->  },<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---- Photo shrinking ----<!-- [et_pb_line_break_holder] -->     Phone cameras produce 3\u20138MB photos. Uploading six of those on mobile<!-- [et_pb_line_break_holder] -->     data is slow enough that people give up, and may exceed HubSpot's<!-- [et_pb_line_break_holder] -->     file size limit. This shrinks them in the browser before they upload<!-- [et_pb_line_break_holder] -->     \u2014 typically 4MB down to around 400KB, with no visible loss at the<!-- [et_pb_line_break_holder] -->     size an engineer needs.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->     maxDimensionPx  longest edge after shrinking. 2000 is plenty of<!-- [et_pb_line_break_holder] -->                     detail for assessing a room or a wall. Raise to 2600<!-- [et_pb_line_break_holder] -->                     if you want more; below 1400 starts to lose useful<!-- [et_pb_line_break_holder] -->                     detail on pipe runs and fuse boxes.<!-- [et_pb_line_break_holder] -->     quality         JPEG quality, 0 to 1. 0.8 is the sweet spot.<!-- [et_pb_line_break_holder] -->                     Above 0.9 gains little and costs a lot of size.<!-- [et_pb_line_break_holder] -->     skipIfUnderKB   files already smaller than this are left alone.<!-- [et_pb_line_break_holder] -->     Set enabled to false to upload originals untouched. *\/<!-- [et_pb_line_break_holder] -->  compressPhotos: {<!-- [et_pb_line_break_holder] -->    enabled:        true,<!-- [et_pb_line_break_holder] -->    maxDimensionPx: 2000,<!-- [et_pb_line_break_holder] -->    quality:        0.8,<!-- [et_pb_line_break_holder] -->    skipIfUnderKB:  600,<!-- [et_pb_line_break_holder] -->    workingText:    'Shrinking your photos so they upload quickly\u2026',<!-- [et_pb_line_break_holder] -->    doneText:       'Ready to send \u2014 {count} photo(s), {size}.',<!-- [et_pb_line_break_holder] -->    failText:       'Couldn\\'t shrink those, but they\\'ll still upload \u2014 it may just take a moment.'<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->},<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* --------------------------------------------------------------------------<!-- [et_pb_line_break_holder] -->   7. YOUR ACCOUNT IDs<!-- [et_pb_line_break_holder] -->   Until these are filled in the wizard runs in demo mode: it works normally<!-- [et_pb_line_break_holder] -->   but sends nothing anywhere, logging to the browser console instead.<!-- [et_pb_line_break_holder] -->   -------------------------------------------------------------------------- *\/<!-- [et_pb_line_break_holder] -->integrations: {<!-- [et_pb_line_break_holder] -->\/\/ Your HubSpot data centre. Look at the embed code HubSpot gives you:<!-- [et_pb_line_break_holder] -->  \/\/ if it contains a line like  region: 'eu1'  put that value here.<!-- [et_pb_line_break_holder] -->  \/\/ UK and European accounts are usually 'eu1'; US accounts 'na1'.<!-- [et_pb_line_break_holder] -->  \/\/ Leave as '' if your embed code has no region line at all.<!-- [et_pb_line_break_holder] -->  hubspotRegion:        'eu1',<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  hubspotPortalId:      '149441568',<!-- [et_pb_line_break_holder] -->  hubspotFormId:        'a53a343c-b31d-42eb-ba90-4e3bc16c8a33',<!-- [et_pb_line_break_holder] -->  googleAdsQuoteLabel:  'AW-XXXXXXXXX\/QUOTE_LABEL',<!-- [et_pb_line_break_holder] -->  googleAdsCallLabel:   'AW-XXXXXXXXX\/CALL_LABEL'<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* ==========================================================================<!-- [et_pb_line_break_holder] -->   ==== EDIT NOTHING BELOW THIS LINE ====<!-- [et_pb_line_break_holder] -->   ========================================================================== *\/<!-- [et_pb_line_break_holder] -->};<!-- [et_pb_line_break_holder] --><\/script><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  \"use strict\";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var C = window.BGW_CONFIG;<!-- [et_pb_line_break_holder] -->  var root = document.getElementById('bgw-root');<!-- [et_pb_line_break_holder] -->  if (!root || !C) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- helpers ---------- *\/<!-- [et_pb_line_break_holder] -->  function esc(s){<!-- [et_pb_line_break_holder] -->    return String(s == null ? '' : s)<!-- [et_pb_line_break_holder] -->      .replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;')<!-- [et_pb_line_break_holder] -->      .replace(\/>\/g,'&gt;').replace(\/\"\/g,'&quot;');<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function fill(tpl, vars){<!-- [et_pb_line_break_holder] -->    return String(tpl || '').replace(\/\\{(\\w+)\\}\/g, function(m, k){<!-- [et_pb_line_break_holder] -->      return vars[k] !== undefined ? vars[k] : m;<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function configured(v){<!-- [et_pb_line_break_holder] -->    return v && v.indexOf('XXXX') === -1 && v.indexOf('REPLACE') === -1 && v !== '00000000';<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- fonts ---------- *\/<!-- [et_pb_line_break_holder] -->  if (C.theme.googleFontsUrl) {<!-- [et_pb_line_break_holder] -->    var fl = document.createElement('link');<!-- [et_pb_line_break_holder] -->    fl.rel = 'stylesheet';<!-- [et_pb_line_break_holder] -->    fl.href = C.theme.googleFontsUrl;<!-- [et_pb_line_break_holder] -->    document.head.appendChild(fl);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- styles, driven by theme config ---------- *\/<!-- [et_pb_line_break_holder] -->  var t = C.theme;<!-- [et_pb_line_break_holder] -->  var css = `<!-- [et_pb_line_break_holder] -->#bgw-root{<!-- [et_pb_line_break_holder] -->  --bgw-page:${t.pageBackground}; --bgw-card:${t.cardBackground};<!-- [et_pb_line_break_holder] -->  --bgw-ink:${t.textColour}; --bgw-muted:${t.mutedTextColour};<!-- [et_pb_line_break_holder] -->  --bgw-accent:${t.accentColour}; --bgw-accent-dark:${t.accentDarkColour};<!-- [et_pb_line_break_holder] -->  --bgw-btn:${t.buttonColour}; --bgw-btn-hover:${t.buttonHoverColour};<!-- [et_pb_line_break_holder] -->  --bgw-highlight:${t.highlightColour}; --bgw-line:${t.borderColour};<!-- [et_pb_line_break_holder] -->  --bgw-radius:${t.cornerRadius};<!-- [et_pb_line_break_holder] -->  font-family:${t.bodyFont}; color:var(--bgw-ink);<!-- [et_pb_line_break_holder] -->  font-size:16px; line-height:1.55; box-sizing:border-box;<!-- [et_pb_line_break_holder] -->  max-width:${t.maxWidth}; margin:0 auto; -webkit-font-smoothing:antialiased;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#bgw-root *,#bgw-root *::before,#bgw-root *::after{box-sizing:border-box;}<!-- [et_pb_line_break_holder] -->#bgw-root h3{font-family:${t.headingFont};font-weight:700;letter-spacing:-.01em;color:var(--bgw-ink);font-size:24px;line-height:1.2;margin:0 0 22px;padding:0;text-transform:none;}<!-- [et_pb_line_break_holder] -->#bgw-root h4{font-family:${t.headingFont};font-weight:700;font-size:20px;line-height:1.25;margin:0 0 6px;padding:0;color:var(--bgw-ink);text-transform:none;}<!-- [et_pb_line_break_holder] -->#bgw-root p{margin:0 0 1em;color:var(--bgw-muted);font-size:15px;}<!-- [et_pb_line_break_holder] -->#bgw-root p:last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] -->#bgw-root a{color:var(--bgw-accent-dark);}<!-- [et_pb_line_break_holder] -->#bgw-root :focus-visible{outline:3px solid var(--bgw-btn);outline-offset:2px;}<!-- [et_pb_line_break_holder] -->.bgw-card{background:var(--bgw-page);border:1px solid var(--bgw-line);border-radius:var(--bgw-radius);padding:40px;}<!-- [et_pb_line_break_holder] -->@media(max-width:600px){.bgw-card{padding:24px;}}<!-- [et_pb_line_break_holder] -->.bgw-progress{display:flex;gap:6px;margin:0 0 28px;padding:0;list-style:none;}<!-- [et_pb_line_break_holder] -->.bgw-progress li{flex:1;height:5px;border-radius:99px;background:var(--bgw-highlight);overflow:hidden;margin:0;padding:0;}<!-- [et_pb_line_break_holder] -->.bgw-progress li span{display:block;height:100%;width:0;background:var(--bgw-accent);transition:width .3s ease;}<!-- [et_pb_line_break_holder] -->.bgw-progress li.bgw-active span{width:55%;}<!-- [et_pb_line_break_holder] -->.bgw-progress li.bgw-done span{width:100%;}<!-- [et_pb_line_break_holder] -->.bgw-step{display:none;}<!-- [et_pb_line_break_holder] -->.bgw-step.bgw-active{display:block;}<!-- [et_pb_line_break_holder] -->@media(prefers-reduced-motion:no-preference){.bgw-step.bgw-active{animation:bgw-in .25s ease;}}<!-- [et_pb_line_break_holder] -->@keyframes bgw-in{from{opacity:0;transform:translateX(8px);}to{opacity:1;transform:translateX(0);}}<!-- [et_pb_line_break_holder] -->.bgw-eyebrow{display:block;font-size:13px;font-weight:600;color:var(--bgw-accent-dark);margin-bottom:6px;}<!-- [et_pb_line_break_holder] -->.bgw-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0;padding:0;border:0;}<!-- [et_pb_line_break_holder] -->@media(max-width:520px){.bgw-options{grid-template-columns:1fr;}}<!-- [et_pb_line_break_holder] -->.bgw-opt{position:relative;display:block;border:1.5px solid var(--bgw-line);background:var(--bgw-card);border-radius:16px;padding:16px;cursor:pointer;margin:0;transition:border-color .15s,background .15s;}<!-- [et_pb_line_break_holder] -->.bgw-opt:hover{border-color:var(--bgw-accent);}<!-- [et_pb_line_break_holder] -->.bgw-opt input{position:absolute;opacity:0;width:100%;height:100%;top:0;left:0;margin:0;cursor:pointer;}<!-- [et_pb_line_break_holder] -->.bgw-opt-title{font-weight:600;font-size:15.5px;display:block;padding-right:24px;}<!-- [et_pb_line_break_holder] -->.bgw-opt-sub{font-size:13.5px;color:var(--bgw-muted);display:block;margin-top:2px;}<!-- [et_pb_line_break_holder] -->.bgw-opt.bgw-selected{border-color:var(--bgw-accent);background:var(--bgw-highlight);}<!-- [et_pb_line_break_holder] -->.bgw-opt.bgw-selected::after{content:\"\\\\2713\";position:absolute;top:12px;right:14px;color:var(--bgw-accent-dark);font-weight:700;}<!-- [et_pb_line_break_holder] -->.bgw-chips{display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0;border:0;}<!-- [et_pb_line_break_holder] -->.bgw-chip{position:relative;display:inline-block;border:1.5px solid var(--bgw-line);background:var(--bgw-card);border-radius:999px;padding:10px 18px;font-size:14.5px;font-weight:500;cursor:pointer;margin:0;transition:background .15s,border-color .15s,color .15s;}<!-- [et_pb_line_break_holder] -->.bgw-chip input{position:absolute;opacity:0;width:100%;height:100%;top:0;left:0;margin:0;cursor:pointer;}<!-- [et_pb_line_break_holder] -->.bgw-chip.bgw-selected{background:var(--bgw-accent);border-color:var(--bgw-accent);color:#fff;}<!-- [et_pb_line_break_holder] -->.bgw-helper{font-size:13.5px;color:var(--bgw-muted);margin:10px 0 0;}<!-- [et_pb_line_break_holder] -->.bgw-field{margin-bottom:16px;}<!-- [et_pb_line_break_holder] -->.bgw-field label{display:block;font-size:14px;font-weight:600;margin-bottom:6px;color:var(--bgw-ink);}<!-- [et_pb_line_break_holder] -->#bgw-root input[type=text],#bgw-root input[type=email],#bgw-root input[type=tel],#bgw-root select{width:100%;padding:12px 14px;border:1.5px solid var(--bgw-line);border-radius:10px;background:var(--bgw-card);font-size:15px;font-family:inherit;color:var(--bgw-ink);line-height:1.4;box-shadow:none;margin:0;height:auto;}<!-- [et_pb_line_break_holder] -->#bgw-root input.bgw-invalid,#bgw-root select.bgw-invalid{border-color:var(--bgw-btn);}<!-- [et_pb_line_break_holder] -->.bgw-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}<!-- [et_pb_line_break_holder] -->@media(max-width:520px){.bgw-row{grid-template-columns:1fr;}}<!-- [et_pb_line_break_holder] -->.bgw-consent{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:var(--bgw-muted);margin:18px 0 0;cursor:pointer;}<!-- [et_pb_line_break_holder] -->.bgw-consent input{margin-top:3px;flex-shrink:0;width:auto;}<!-- [et_pb_line_break_holder] -->.bgw-nav{display:flex;justify-content:space-between;align-items:center;margin-top:26px;gap:12px;}<!-- [et_pb_line_break_holder] -->.bgw-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;padding:13px 26px;font-weight:600;font-size:15px;font-family:inherit;text-decoration:none;border:1.5px solid transparent;cursor:pointer;transition:transform .12s,background .15s;text-transform:none;line-height:1.2;width:auto;}<!-- [et_pb_line_break_holder] -->.bgw-btn:active{transform:scale(.97);}<!-- [et_pb_line_break_holder] -->.bgw-btn-primary{background:var(--bgw-btn);color:#fff;}<!-- [et_pb_line_break_holder] -->.bgw-btn-primary:hover{background:var(--bgw-btn-hover);color:#fff;}<!-- [et_pb_line_break_holder] -->.bgw-btn[disabled]{opacity:.55;cursor:not-allowed;}<!-- [et_pb_line_break_holder] -->.bgw-link-btn{background:none;border:none;color:var(--bgw-muted);font-weight:600;cursor:pointer;font-size:14.5px;padding:8px 0;font-family:inherit;}<!-- [et_pb_line_break_holder] -->.bgw-link-btn:hover{color:var(--bgw-ink);}<!-- [et_pb_line_break_holder] -->#bgw-result{display:none;}<!-- [et_pb_line_break_holder] -->#bgw-result.bgw-active{display:block;}<!-- [et_pb_line_break_holder] -->.bgw-badge{display:inline-block;background:var(--bgw-btn);color:#fff;font-size:13px;font-weight:700;padding:6px 14px;border-radius:99px;margin-bottom:14px;}<!-- [et_pb_line_break_holder] -->.bgw-result-card{background:var(--bgw-card);border:1.5px solid var(--bgw-line);border-radius:16px;padding:22px 24px;margin:18px 0;}<!-- [et_pb_line_break_holder] -->.bgw-price{font-family:${t.headingFont};font-size:26px;font-weight:700;color:var(--bgw-accent-dark);margin:8px 0;}<!-- [et_pb_line_break_holder] -->.bgw-reasons{margin:0;padding-left:18px;color:var(--bgw-muted);font-size:14.5px;}<!-- [et_pb_line_break_holder] -->.bgw-reasons li{margin-bottom:4px;}<!-- [et_pb_line_break_holder] -->.bgw-result-ctas{display:flex;gap:14px;flex-wrap:wrap;margin-top:20px;}<!-- [et_pb_line_break_holder] -->.bgw-error{display:none;margin-top:14px;padding:12px 14px;border-radius:10px;background:rgba(242,101,58,.12);color:var(--bgw-btn-hover);font-size:14px;font-weight:500;}<!-- [et_pb_line_break_holder] -->.bgw-error.bgw-show{display:block;}<!-- [et_pb_line_break_holder] -->#bgw-photos{display:none;margin-top:18px;}<!-- [et_pb_line_break_holder] -->#bgw-photos.bgw-active{display:block;}<!-- [et_pb_line_break_holder] -->.bgw-photo-guidance{margin:0 0 18px;padding-left:18px;color:var(--bgw-muted);font-size:14.5px;}<!-- [et_pb_line_break_holder] -->.bgw-photo-guidance li{margin-bottom:4px;}<!-- [et_pb_line_break_holder] -->.bgw-hsform{margin-top:6px;}<!-- [et_pb_line_break_holder] -->.bgw-hsform form{font-family:inherit;}<!-- [et_pb_line_break_holder] -->.bgw-hsform label{display:block;font-size:14px;font-weight:600;margin-bottom:6px;color:var(--bgw-ink);}<!-- [et_pb_line_break_holder] -->.bgw-hsform .hs-form-field{margin-bottom:16px;}<!-- [et_pb_line_break_holder] -->.bgw-hsform input[type=text],.bgw-hsform input[type=email],.bgw-hsform textarea{width:100%;padding:12px 14px;border:1.5px solid var(--bgw-line);border-radius:10px;background:var(--bgw-card);font-size:15px;font-family:inherit;color:var(--bgw-ink);}<!-- [et_pb_line_break_holder] -->.bgw-hsform input[type=file]{width:100%;padding:14px;border:1.5px dashed var(--bgw-line);border-radius:10px;background:var(--bgw-card);font-size:14.5px;font-family:inherit;color:var(--bgw-ink);cursor:pointer;}<!-- [et_pb_line_break_holder] -->.bgw-hsform input[type=submit],.bgw-hsform .hs-button{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:13px 26px;font-weight:600;font-size:15px;font-family:inherit;border:1.5px solid transparent;cursor:pointer;background:var(--bgw-btn);color:#fff;width:auto;}<!-- [et_pb_line_break_holder] -->.bgw-hsform input[type=submit]:hover,.bgw-hsform .hs-button:hover{background:var(--bgw-btn-hover);}<!-- [et_pb_line_break_holder] -->.bgw-hsform .hs-error-msg,.bgw-hsform .hs-error-msgs label{color:var(--bgw-btn-hover);font-size:13.5px;font-weight:500;}<!-- [et_pb_line_break_holder] -->.bgw-hsform ul{list-style:none;padding:0;margin:4px 0 0;}<!-- [et_pb_line_break_holder] -->.bgw-hsform .hs-richtext{font-size:13.5px;color:var(--bgw-muted);}<!-- [et_pb_line_break_holder] -->.bgw-photo-skip{display:block;margin-top:16px;background:none;border:none;color:var(--bgw-muted);font-weight:600;font-size:14.5px;cursor:pointer;font-family:inherit;padding:8px 0;text-decoration:underline;}<!-- [et_pb_line_break_holder] -->.bgw-photo-skip:hover{color:var(--bgw-ink);}<!-- [et_pb_line_break_holder] -->.bgw-photo-note{font-size:13.5px;color:var(--bgw-muted);margin-top:14px;}<!-- [et_pb_line_break_holder] -->.bgw-addr{margin:0 0 22px;padding-bottom:22px;border-bottom:1px solid var(--bgw-line);}<!-- [et_pb_line_break_holder] -->.bgw-addr label{display:block;font-size:14px;font-weight:600;margin-bottom:6px;color:var(--bgw-ink);}<!-- [et_pb_line_break_holder] -->.bgw-addr .bgw-addr-helper{font-size:13.5px;color:var(--bgw-muted);margin:6px 0 0;}<!-- [et_pb_line_break_holder] -->.bgw-saved{display:inline-block;margin-left:8px;font-size:13px;font-weight:600;color:var(--bgw-accent-dark);opacity:0;transition:opacity .2s ease;}<!-- [et_pb_line_break_holder] -->.bgw-saved.bgw-show{opacity:1;}<!-- [et_pb_line_break_holder] -->.bgw-compress-note{font-size:13.5px;color:var(--bgw-muted);margin:10px 0 0;min-height:20px;}`;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var styleEl = document.createElement('style');<!-- [et_pb_line_break_holder] -->  styleEl.textContent = css;<!-- [et_pb_line_break_holder] -->  root.appendChild(styleEl);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- build the markup from config ---------- *\/<!-- [et_pb_line_break_holder] -->  var qs = C.questions || [];<!-- [et_pb_line_break_holder] -->  var total = qs.length;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var html = '<\/p>\n<div class=\"bgw-card\" id=\"bgw-wizard\">\n<ol class=\"bgw-progress\" id=\"bgw-progress\">';<!-- [et_pb_line_break_holder] -->  qs.forEach(function(q, i){<!-- [et_pb_line_break_holder] -->    html += '<li' + (i === 0 ? ' class=\"bgw-active\"' : '') + ' data-step=\"' + (i+1) + '\"><span><\/span><\/li>\n<p>';<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  html += '<\/ol>\n<p>';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  qs.forEach(function(q, i){<!-- [et_pb_line_break_holder] -->    var n = i + 1;<!-- [et_pb_line_break_holder] -->    html += '<\/p>\n<div class=\"bgw-step' + (i === 0 ? ' bgw-active' : '') + '\" data-step=\"' + n + '\">';<!-- [et_pb_line_break_holder] -->    html += '<span class=\"bgw-eyebrow\">' + esc(fill(C.labels.stepCounter, { current:n, total:total })) + '<\/span>';<!-- [et_pb_line_break_holder] -->    html += '<\/p>\n<h3>' + esc(q.title) + '<\/h3>\n<p>';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (q.type === 'single') {<!-- [et_pb_line_break_holder] -->      html += '<\/p>\n<div class=\"bgw-options\" role=\"radiogroup\" aria-label=\"' + esc(q.title) + '\">';<!-- [et_pb_line_break_holder] -->      (q.options || []).forEach(function(o){<!-- [et_pb_line_break_holder] -->        html += '<label class=\"bgw-opt\">'<!-- [et_pb_line_break_holder] -->             +  '<input type=\"radio\" name=\"' + esc(q.id) + '\" value=\"' + esc(o.value) + '\">'<!-- [et_pb_line_break_holder] -->             +  '<span class=\"bgw-opt-title\">' + esc(o.label) + '<\/span>'<!-- [et_pb_line_break_holder] -->             +  (o.sub ? '<span class=\"bgw-opt-sub\">' + esc(o.sub) + '<\/span>' : '')<!-- [et_pb_line_break_holder] -->             +  '<\/label>';<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      html += '<\/div>\n<p>';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    } else if (q.type === 'multi') {<!-- [et_pb_line_break_holder] -->      html += '<\/p>\n<div class=\"bgw-chips\" role=\"group\" aria-label=\"' + esc(q.title) + '\">';<!-- [et_pb_line_break_holder] -->      (q.options || []).forEach(function(o){<!-- [et_pb_line_break_holder] -->        html += '<label class=\"bgw-chip\">'<!-- [et_pb_line_break_holder] -->             +  '<input type=\"checkbox\" name=\"' + esc(q.id) + '\" value=\"' + esc(o.value) + '\">'<!-- [et_pb_line_break_holder] -->             +  esc(o.label) + '<\/label>';<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      html += '<\/div>\n<p>';<!-- [et_pb_line_break_holder] -->      if (q.helperText) {<!-- [et_pb_line_break_holder] -->        html += '<pee class=\"bgw-helper\" data-helper-for=\"' + esc(q.id) + '\" aria-live=\"polite\">'<!-- [et_pb_line_break_holder] -->             +  esc(fill(q.helperText, { count:0, max:q.maxChoices || 99 })) + '<\/pee>';<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    } else if (q.type === 'contact') {<!-- [et_pb_line_break_holder] -->      var cf = C.contactForm;<!-- [et_pb_line_break_holder] -->      var buffer = [];<!-- [et_pb_line_break_holder] -->      function flushRow(){<!-- [et_pb_line_break_holder] -->        if (!buffer.length) return;<!-- [et_pb_line_break_holder] -->        html += (buffer.length === 2 ? '<\/p>\n<div class=\"bgw-row\">' : '') + buffer.join('') + (buffer.length === 2 ? '<\/div>\n<p>' : '');<!-- [et_pb_line_break_holder] -->        buffer = [];<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      (cf.fields || []).forEach(function(f){<!-- [et_pb_line_break_holder] -->        var id = 'bgw-f-' + f.name;<!-- [et_pb_line_break_holder] -->        var markup = '<\/p>\n<div class=\"bgw-field\"><label for=\"' + id + '\">' + esc(f.label) + '<\/label>';<!-- [et_pb_line_break_holder] -->        if (f.type === 'select') {<!-- [et_pb_line_break_holder] -->          markup += '<select id=\"' + id + '\" data-name=\"' + esc(f.name) + '\"' + (f.required ? ' required' : '') + '>';<!-- [et_pb_line_break_holder] -->          markup += '<option value=\"\">' + esc(f.placeholder || 'Choose one') + '<\/option>';<!-- [et_pb_line_break_holder] -->          (f.options || []).forEach(function(o){<!-- [et_pb_line_break_holder] -->            markup += '<option value=\"' + esc(o.value) + '\">' + esc(o.label) + '<\/option>';<!-- [et_pb_line_break_holder] -->          });<!-- [et_pb_line_break_holder] -->          markup += '<\/select>';<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->          markup += '<input type=\"' + esc(f.type || 'text') + '\" id=\"' + id + '\" data-name=\"' + esc(f.name) + '\"'<!-- [et_pb_line_break_holder] -->                 + (f.autocomplete ? ' autocomplete=\"' + esc(f.autocomplete) + '\"' : '')<!-- [et_pb_line_break_holder] -->                 + (f.placeholder ? ' placeholder=\"' + esc(f.placeholder) + '\"' : '')<!-- [et_pb_line_break_holder] -->                 + (f.required ? ' required' : '') + '>';<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        markup += '<\/div>\n<p>';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if (f.halfWidth) {<!-- [et_pb_line_break_holder] -->          buffer.push(markup);<!-- [et_pb_line_break_holder] -->          if (buffer.length === 2) flushRow();<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->          flushRow();<!-- [et_pb_line_break_holder] -->          html += markup;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      flushRow();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      if (cf.consentRequired) {<!-- [et_pb_line_break_holder] -->        html += '<label class=\"bgw-consent\"><input type=\"checkbox\" id=\"bgw-consent\"><span>'<!-- [et_pb_line_break_holder] -->             +  esc(cf.consentText) + ' '<!-- [et_pb_line_break_holder] -->             +  '<a href=\"' + esc(cf.consentLinkUrl) + '\" target=\"_blank\" rel=\"noopener\">' + esc(cf.consentLinkText) + '<\/a>.'<!-- [et_pb_line_break_holder] -->             +  '<\/span><\/label>';<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    html += '<\/div>\n<p>';<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  html += '<\/p>\n<div class=\"bgw-nav\">'<!-- [et_pb_line_break_holder] -->       +  '<button type=\"button\" class=\"bgw-link-btn\" id=\"bgw-back\" style=\"visibility:hidden;\">' + esc(C.labels.backButton) + '<\/button>'<!-- [et_pb_line_break_holder] -->       +  '<button type=\"button\" class=\"bgw-btn bgw-btn-primary\" id=\"bgw-next\">' + esc(C.labels.nextButton) + '<\/button>'<!-- [et_pb_line_break_holder] -->       +  '<\/div>\n<div class=\"bgw-error\" id=\"bgw-error\" role=\"alert\"><\/div>\n<\/div>\n<p>';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var r = C.result;<!-- [et_pb_line_break_holder] -->  html += '<\/p>\n<div class=\"bgw-card\" id=\"bgw-result\">'<!-- [et_pb_line_break_holder] -->       +  (r.badge ? '<span class=\"bgw-badge\">' + esc(r.badge) + '<\/span>' : '')<!-- [et_pb_line_break_holder] -->       +  '<\/p>\n<h3 style=\"margin-bottom:14px;\">' + esc(r.heading) + '<\/h3>\n<p>'<!-- [et_pb_line_break_holder] -->       +  '<\/p>\n<div class=\"bgw-result-card\">\n<h4 id=\"bgw-tier\"><\/h4>\n<p>'<!-- [et_pb_line_break_holder] -->       +  '<\/p>\n<div class=\"bgw-price\" id=\"bgw-price\"><\/div>\n<p>'<!-- [et_pb_line_break_holder] -->       +  '<\/p>\n<ul class=\"bgw-reasons\" id=\"bgw-reasons\"><\/ul>\n<\/div>\n<p>'<!-- [et_pb_line_break_holder] -->       +  (r.footnote ? '<pee>' + esc(r.footnote) + '<\/pee>' : '');<!-- [et_pb_line_break_holder] -->  if (r.showPhoneButton) {<!-- [et_pb_line_break_holder] -->    html += '<\/p>\n<div class=\"bgw-result-ctas\"><a href=\"tel:' + esc(r.phoneNumber) + '\" class=\"bgw-btn bgw-btn-primary\" data-bgw-phone=\"wizard-result\">'<!-- [et_pb_line_break_holder] -->         +  esc(r.phoneButtonText) + '<\/a><\/div>\n<p>';<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  html += '<\/div>\n<p>';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ optional photo-upload step, shown after the estimate<!-- [et_pb_line_break_holder] -->  var pu = C.photoUpload;<!-- [et_pb_line_break_holder] -->  if (pu && pu.enabled) {<!-- [et_pb_line_break_holder] -->    html += '<\/p>\n<div class=\"bgw-card\" id=\"bgw-photos\">'<!-- [et_pb_line_break_holder] -->         +  '<\/p>\n<h3>' + esc(pu.heading) + '<\/h3>\n<p>'<!-- [et_pb_line_break_holder] -->         +  (pu.intro ? '<pee>' + esc(pu.intro) + '<\/pee>' : '');<!-- [et_pb_line_break_holder] -->    if (pu.guidance && pu.guidance.length) {<!-- [et_pb_line_break_holder] -->      html += '<\/p>\n<ul class=\"bgw-photo-guidance\">';<!-- [et_pb_line_break_holder] -->      pu.guidance.forEach(function(g){ html += '<\/p>\n<li>' + esc(g) + '<\/li>\n<p>'; });<!-- [et_pb_line_break_holder] -->      html += '<\/ul>\n<p>';<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    var af = pu.addressField;<!-- [et_pb_line_break_holder] -->    if (af && af.enabled) {<!-- [et_pb_line_break_holder] -->      html += '<\/p>\n<div class=\"bgw-addr\">'<!-- [et_pb_line_break_holder] -->           +  '<label for=\"bgw-address\">' + esc(af.label)<!-- [et_pb_line_break_holder] -->           +  '<span class=\"bgw-saved\" id=\"bgw-addr-saved\">' + esc(af.savedText || 'Saved') + '<\/span><\/label>'<!-- [et_pb_line_break_holder] -->           +  '<input type=\"text\" id=\"bgw-address\" autocomplete=\"street-address\" placeholder=\"' + esc(af.placeholder || '') + '\">'<!-- [et_pb_line_break_holder] -->           +  (af.helper ? '<pee class=\"bgw-addr-helper\">' + esc(af.helper) + '<\/pee>' : '')<!-- [et_pb_line_break_holder] -->           +  '<\/div>\n<p>';<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    html += '<\/p>\n<div class=\"bgw-hsform\" id=\"bgw-hsform-target\"><\/div>\n<p>'<!-- [et_pb_line_break_holder] -->         +  '<pee class=\"bgw-compress-note\" id=\"bgw-compress-note\" aria-live=\"polite\"><\/pee>'<!-- [et_pb_line_break_holder] -->         +  '<button type=\"button\" class=\"bgw-photo-skip\" id=\"bgw-photo-skip\">' + esc(pu.skipText) + '<\/button>'<!-- [et_pb_line_break_holder] -->         +  '<\/div>\n<p>';<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var container = document.createElement('div');<!-- [et_pb_line_break_holder] -->  container.innerHTML = html;<!-- [et_pb_line_break_holder] -->  root.appendChild(container);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- attribution ---------- *\/<!-- [et_pb_line_break_holder] -->  var attribution = (function(){<!-- [et_pb_line_break_holder] -->    var keys = ['utm_source','utm_medium','utm_campaign','utm_term','utm_content','gclid','gbraid','wbraid'];<!-- [et_pb_line_break_holder] -->    var out = {};<!-- [et_pb_line_break_holder] -->    try {<!-- [et_pb_line_break_holder] -->      var stored = JSON.parse(localStorage.getItem('bgw_attribution') || '{}');<!-- [et_pb_line_break_holder] -->      keys.forEach(function(k){ if (stored[k]) out[k] = stored[k]; });<!-- [et_pb_line_break_holder] -->    } catch(e){}<!-- [et_pb_line_break_holder] -->    var p = new URLSearchParams(window.location.search);<!-- [et_pb_line_break_holder] -->    keys.forEach(function(k){ if (!out[k] && p.get(k)) out[k] = p.get(k); });<!-- [et_pb_line_break_holder] -->    return out;<!-- [et_pb_line_break_holder] -->  })();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function hutk(){<!-- [et_pb_line_break_holder] -->    var m = document.cookie.match(\/hubspotutk=([^;]+)\/);<!-- [et_pb_line_break_holder] -->    return m ? m[1] : null;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- tracking ---------- *\/<!-- [et_pb_line_break_holder] -->  function trackEvent(name, params){<!-- [et_pb_line_break_holder] -->    params = params || {};<!-- [et_pb_line_break_holder] -->    if (window.gtag) window.gtag('event', name, params);<!-- [et_pb_line_break_holder] -->    if (window._hsq) window._hsq.push(['trackEvent', { id:name, value:params }]);<!-- [et_pb_line_break_holder] -->    if (window.dataLayer) window.dataLayer.push(Object.assign({ event:name }, params));<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function trackConversion(label){<!-- [et_pb_line_break_holder] -->    if (window.gtag && configured(label)) {<!-- [et_pb_line_break_holder] -->      window.gtag('event', 'conversion', { send_to:label, currency:'GBP' });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  root.querySelectorAll('a[href^=\"tel:\"]').forEach(function(a){<!-- [et_pb_line_break_holder] -->    a.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->      trackEvent('phone_click', { location:a.getAttribute('data-bgw-phone') || 'wizard' });<!-- [et_pb_line_break_holder] -->      trackConversion(C.integrations.googleAdsCallLabel);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- selection visuals ---------- *\/<!-- [et_pb_line_break_holder] -->  root.querySelectorAll('.bgw-opt input').forEach(function(input){<!-- [et_pb_line_break_holder] -->    input.addEventListener('change', function(){<!-- [et_pb_line_break_holder] -->      root.querySelectorAll('input[name=\"' + input.name + '\"]').forEach(function(sib){<!-- [et_pb_line_break_holder] -->        sib.closest('.bgw-opt').classList.toggle('bgw-selected', sib.checked);<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      hideError();<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  qs.filter(function(q){ return q.type === 'multi'; }).forEach(function(q){<!-- [et_pb_line_break_holder] -->    var max = q.maxChoices || 99;<!-- [et_pb_line_break_holder] -->    var helper = root.querySelector('[data-helper-for=\"' + q.id + '\"]');<!-- [et_pb_line_break_holder] -->    root.querySelectorAll('.bgw-chip input[name=\"' + q.id + '\"]').forEach(function(cb){<!-- [et_pb_line_break_holder] -->      cb.addEventListener('change', function(){<!-- [et_pb_line_break_holder] -->        var checked = root.querySelectorAll('.bgw-chip input[name=\"' + q.id + '\"]:checked');<!-- [et_pb_line_break_holder] -->        if (checked.length > max) {<!-- [et_pb_line_break_holder] -->          cb.checked = false;<!-- [et_pb_line_break_holder] -->          if (helper) helper.textContent = fill(q.maxReachedText, { max:max, count:max });<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->          if (helper && q.helperText) helper.textContent = fill(q.helperText, { count:checked.length, max:max });<!-- [et_pb_line_break_holder] -->          hideError();<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        root.querySelectorAll('.bgw-chip input[name=\"' + q.id + '\"]').forEach(function(x){<!-- [et_pb_line_break_holder] -->          x.closest('.bgw-chip').classList.toggle('bgw-selected', x.checked);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- navigation ---------- *\/<!-- [et_pb_line_break_holder] -->  var steps    = Array.prototype.slice.call(root.querySelectorAll('.bgw-step'));<!-- [et_pb_line_break_holder] -->  var segments = Array.prototype.slice.call(root.querySelectorAll('#bgw-progress li'));<!-- [et_pb_line_break_holder] -->  var nextBtn  = root.querySelector('#bgw-next');<!-- [et_pb_line_break_holder] -->  var backBtn  = root.querySelector('#bgw-back');<!-- [et_pb_line_break_holder] -->  var errorBox = root.querySelector('#bgw-error');<!-- [et_pb_line_break_holder] -->  var current  = 1;<!-- [et_pb_line_break_holder] -->  var started  = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function showError(m){ errorBox.textContent = m; errorBox.classList.add('bgw-show'); }<!-- [et_pb_line_break_holder] -->  function hideError(){ errorBox.classList.remove('bgw-show'); }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function showStep(n){<!-- [et_pb_line_break_holder] -->    steps.forEach(function(s){ s.classList.toggle('bgw-active', +s.getAttribute('data-step') === n); });<!-- [et_pb_line_break_holder] -->    segments.forEach(function(s){<!-- [et_pb_line_break_holder] -->      var i = +s.getAttribute('data-step');<!-- [et_pb_line_break_holder] -->      s.classList.toggle('bgw-active', i === n);<!-- [et_pb_line_break_holder] -->      s.classList.toggle('bgw-done', i < n);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    backBtn.style.visibility = n === 1 ? 'hidden' : 'visible';<!-- [et_pb_line_break_holder] -->    nextBtn.textContent = n === total ? C.labels.finalButton : C.labels.nextButton;<!-- [et_pb_line_break_holder] -->    hideError();<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function validate(n){<!-- [et_pb_line_break_holder] -->    var q = qs[n-1];<!-- [et_pb_line_break_holder] -->    root.querySelectorAll('.bgw-invalid').forEach(function(el){ el.classList.remove('bgw-invalid'); });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (q.type === 'single') {<!-- [et_pb_line_break_holder] -->      if (!root.querySelector('input[name=\"' + q.id + '\"]:checked')) {<!-- [et_pb_line_break_holder] -->        showError(q.errorMessage || 'Please choose an option.'); return false;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      return true;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    if (q.type === 'multi') {<!-- [et_pb_line_break_holder] -->      if (!root.querySelectorAll('input[name=\"' + q.id + '\"]:checked').length) {<!-- [et_pb_line_break_holder] -->        showError(q.errorMessage || 'Please choose at least one.'); return false;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      return true;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    if (q.type === 'contact') {<!-- [et_pb_line_break_holder] -->      var cf = C.contactForm, missing = [];<!-- [et_pb_line_break_holder] -->      (cf.fields || []).forEach(function(f){<!-- [et_pb_line_break_holder] -->        if (!f.required) return;<!-- [et_pb_line_break_holder] -->        var el = root.querySelector('#bgw-f-' + f.name);<!-- [et_pb_line_break_holder] -->        if (el && !el.value.trim()) { el.classList.add('bgw-invalid'); missing.push(el); }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      var emailField = (cf.fields || []).filter(function(f){ return f.type === 'email'; })[0];<!-- [et_pb_line_break_holder] -->      if (emailField) {<!-- [et_pb_line_break_holder] -->        var ee = root.querySelector('#bgw-f-' + emailField.name);<!-- [et_pb_line_break_holder] -->        if (ee && ee.value.trim() && !\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(ee.value.trim())) {<!-- [et_pb_line_break_holder] -->          ee.classList.add('bgw-invalid');<!-- [et_pb_line_break_holder] -->          showError(cf.errorBadEmail); return false;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      if (missing.length) { showError(cf.errorMissing); missing[0].focus(); return false; }<!-- [et_pb_line_break_holder] -->      if (cf.consentRequired && !root.querySelector('#bgw-consent').checked) {<!-- [et_pb_line_break_holder] -->        showError(cf.errorNoConsent); return false;<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      return true;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    return true;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  nextBtn.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->    if (!started) { trackEvent('wizard_start'); started = true; }<!-- [et_pb_line_break_holder] -->    if (!validate(current)) return;<!-- [et_pb_line_break_holder] -->    trackEvent('wizard_step_complete', { step:current });<!-- [et_pb_line_break_holder] -->    if (current === total) { complete(); return; }<!-- [et_pb_line_break_holder] -->    current++;<!-- [et_pb_line_break_holder] -->    showStep(current);<!-- [et_pb_line_break_holder] -->    root.querySelector('#bgw-wizard').scrollIntoView({ behavior:'smooth', block:'start' });<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  backBtn.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->    if (current === 1) return;<!-- [et_pb_line_break_holder] -->    current--; showStep(current);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- answers, pricing, reasons ---------- *\/<!-- [et_pb_line_break_holder] -->  function collectAnswers(){<!-- [et_pb_line_break_holder] -->    var a = {};<!-- [et_pb_line_break_holder] -->    qs.forEach(function(q){<!-- [et_pb_line_break_holder] -->      if (q.type === 'single') {<!-- [et_pb_line_break_holder] -->        var el = root.querySelector('input[name=\"' + q.id + '\"]:checked');<!-- [et_pb_line_break_holder] -->        a[q.id] = el ? el.value : '';<!-- [et_pb_line_break_holder] -->      } else if (q.type === 'multi') {<!-- [et_pb_line_break_holder] -->        a[q.id] = Array.prototype.map.call(<!-- [et_pb_line_break_holder] -->          root.querySelectorAll('input[name=\"' + q.id + '\"]:checked'),<!-- [et_pb_line_break_holder] -->          function(x){ return x.value; }<!-- [et_pb_line_break_holder] -->        );<!-- [et_pb_line_break_holder] -->      } else if (q.type === 'contact') {<!-- [et_pb_line_break_holder] -->        (C.contactForm.fields || []).forEach(function(f){<!-- [et_pb_line_break_holder] -->          var el = root.querySelector('#bgw-f-' + f.name);<!-- [et_pb_line_break_holder] -->          a[f.name] = el ? el.value.trim() : '';<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    return a;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function buildResult(a){<!-- [et_pb_line_break_holder] -->    var p = C.pricing;<!-- [et_pb_line_break_holder] -->    var baseValue = a[p.basedOn];<!-- [et_pb_line_break_holder] -->    var tier = p.tiers[baseValue] || p.tiers[Object.keys(p.tiers)[0]] || { name:'', price:'' };<!-- [et_pb_line_break_holder] -->    var name = tier.name;<!-- [et_pb_line_break_holder] -->    var price = tier.price;<!-- [et_pb_line_break_holder] -->    var reasons = [];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Collect reasons attached to whichever answers were chosen.<!-- [et_pb_line_break_holder] -->    qs.forEach(function(q){<!-- [et_pb_line_break_holder] -->      if (!q.options) return;<!-- [et_pb_line_break_holder] -->      var chosen = a[q.id];<!-- [et_pb_line_break_holder] -->      q.options.forEach(function(o){<!-- [et_pb_line_break_holder] -->        if (!o.reason) return;<!-- [et_pb_line_break_holder] -->        var picked = Array.isArray(chosen) ? chosen.indexOf(o.value) !== -1 : chosen === o.value;<!-- [et_pb_line_break_holder] -->        if (picked) reasons.push(o.reason);<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Apply adjustments.<!-- [et_pb_line_break_holder] -->    (p.adjustments || []).forEach(function(adj){<!-- [et_pb_line_break_holder] -->      var v = a[adj.whenQuestion];<!-- [et_pb_line_break_holder] -->      var hit = Array.isArray(v) ? v.indexOf(adj.whenAnswer) !== -1 : v === adj.whenAnswer;<!-- [et_pb_line_break_holder] -->      if (!hit) return;<!-- [et_pb_line_break_holder] -->      if (adj.addToTierName) name += adj.addToTierName;<!-- [et_pb_line_break_holder] -->      if (adj.replacePrice && adj.replacePrice[baseValue]) price = adj.replacePrice[baseValue];<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    return { name:name, price:price, reasons:reasons };<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- submission ---------- *\/<!-- [et_pb_line_break_holder] -->  function submitToHubSpot(fields){<!-- [et_pb_line_break_holder] -->    var ic = C.integrations;<!-- [et_pb_line_break_holder] -->    if (!configured(ic.hubspotPortalId) || !configured(ic.hubspotFormId)) {<!-- [et_pb_line_break_holder] -->      console.log('[Breezy Goose] Demo mode \u2014 would submit to HubSpot:', fields);<!-- [et_pb_line_break_holder] -->      return Promise.resolve({ ok:true, demo:true });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    var url = 'https:\/\/api.hsforms.com\/submissions\/v3\/integration\/submit\/'<!-- [et_pb_line_break_holder] -->            + ic.hubspotPortalId + '\/' + ic.hubspotFormId;<!-- [et_pb_line_break_holder] -->    var payload = {<!-- [et_pb_line_break_holder] -->      fields: Object.keys(fields).map(function(k){ return { name:k, value:String(fields[k]) }; }),<!-- [et_pb_line_break_holder] -->      context: { pageUri:window.location.href, pageName:document.title },<!-- [et_pb_line_break_holder] -->      legalConsentOptions: {<!-- [et_pb_line_break_holder] -->        consent: { consentToProcess:true, text:C.contactForm.consentText }<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    var k = hutk(); if (k) payload.context.hutk = k;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    return fetch(url, {<!-- [et_pb_line_break_holder] -->      method:'POST',<!-- [et_pb_line_break_holder] -->      headers:{ 'Content-Type':'application\/json' },<!-- [et_pb_line_break_holder] -->      body: JSON.stringify(payload)<!-- [et_pb_line_break_holder] -->    }).then(function(res){ return { ok:res.ok }; })<!-- [et_pb_line_break_holder] -->      .catch(function(err){<!-- [et_pb_line_break_holder] -->        console.error('[Breezy Goose] HubSpot submission failed', err);<!-- [et_pb_line_break_holder] -->        return { ok:false };<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- image shrinking ----------<!-- [et_pb_line_break_holder] -->     Runs in the browser before anything uploads. Draws each photo onto a<!-- [et_pb_line_break_holder] -->     canvas at a smaller size and re-encodes it as JPEG. createImageBitmap<!-- [et_pb_line_break_holder] -->     with imageOrientation 'from-image' honours the EXIF rotation tag, so<!-- [et_pb_line_break_holder] -->     photos taken in portrait don't come out sideways. *\/<!-- [et_pb_line_break_holder] -->  function humanSize(bytes){<!-- [et_pb_line_break_holder] -->    if (bytes >= 1048576) return (bytes\/1048576).toFixed(1) + 'MB';<!-- [et_pb_line_break_holder] -->    return Math.round(bytes\/1024) + 'KB';<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function loadBitmap(file){<!-- [et_pb_line_break_holder] -->    if (window.createImageBitmap) {<!-- [et_pb_line_break_holder] -->      return createImageBitmap(file, { imageOrientation:'from-image' })<!-- [et_pb_line_break_holder] -->        .catch(function(){ return loadViaImage(file); });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    return loadViaImage(file);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function loadViaImage(file){<!-- [et_pb_line_break_holder] -->    return new Promise(function(resolve, reject){<!-- [et_pb_line_break_holder] -->      var url = URL.createObjectURL(file);<!-- [et_pb_line_break_holder] -->      var img = new Image();<!-- [et_pb_line_break_holder] -->      img.onload  = function(){ URL.revokeObjectURL(url); resolve(img); };<!-- [et_pb_line_break_holder] -->      img.onerror = function(){ URL.revokeObjectURL(url); reject(new Error('decode failed')); };<!-- [et_pb_line_break_holder] -->      img.src = url;<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function shrinkImage(file, opts){<!-- [et_pb_line_break_holder] -->    \/\/ Leave alone anything that isn't an image, or is already small.<!-- [et_pb_line_break_holder] -->    if (!\/^image\\\/\/.test(file.type)) return Promise.resolve(file);<!-- [et_pb_line_break_holder] -->    if (\/^image\\\/(heic|heif)$\/i.test(file.type)) return Promise.resolve(file);<!-- [et_pb_line_break_holder] -->    if (file.size <= (opts.skipIfUnderKB || 600) * 1024) return Promise.resolve(file);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    return loadBitmap(file).then(function(src){<!-- [et_pb_line_break_holder] -->      var w = src.width, h = src.height;<!-- [et_pb_line_break_holder] -->      var max = opts.maxDimensionPx || 2000;<!-- [et_pb_line_break_holder] -->      if (w > h && w > max) { h = Math.round(h * max \/ w); w = max; }<!-- [et_pb_line_break_holder] -->      else if (h >= w && h > max) { w = Math.round(w * max \/ h); h = max; }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      var canvas = document.createElement('canvas');<!-- [et_pb_line_break_holder] -->      canvas.width = w; canvas.height = h;<!-- [et_pb_line_break_holder] -->      var ctx = canvas.getContext('2d');<!-- [et_pb_line_break_holder] -->      ctx.drawImage(src, 0, 0, w, h);<!-- [et_pb_line_break_holder] -->      if (src.close) src.close();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      return new Promise(function(resolve){<!-- [et_pb_line_break_holder] -->        canvas.toBlob(function(blob){<!-- [et_pb_line_break_holder] -->          \/\/ If shrinking somehow made it bigger, keep the original.<!-- [et_pb_line_break_holder] -->          if (!blob || blob.size >= file.size) { resolve(file); return; }<!-- [et_pb_line_break_holder] -->          var name = file.name.replace(\/\\.(png|webp|bmp|tiff?)$\/i, '.jpg');<!-- [et_pb_line_break_holder] -->          resolve(new File([blob], name, { type:'image\/jpeg', lastModified:Date.now() }));<!-- [et_pb_line_break_holder] -->        }, 'image\/jpeg', opts.quality || 0.8);<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    }).catch(function(){<!-- [et_pb_line_break_holder] -->      return file;   \/\/ anything goes wrong, upload the original<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function attachCompression(form){<!-- [et_pb_line_break_holder] -->    var cp = C.photoUpload.compressPhotos;<!-- [et_pb_line_break_holder] -->    if (!cp || !cp.enabled) return;<!-- [et_pb_line_break_holder] -->    if (!window.DataTransfer || !window.File) return;   \/\/ browser can't swap files<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var note = root.querySelector('#bgw-compress-note');<!-- [et_pb_line_break_holder] -->    var inputs = form.querySelectorAll('input[type=\"file\"]');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    inputs.forEach(function(input){<!-- [et_pb_line_break_holder] -->      input.addEventListener('change', function(){<!-- [et_pb_line_break_holder] -->        var files = Array.prototype.slice.call(input.files || []);<!-- [et_pb_line_break_holder] -->        if (!files.length) return;<!-- [et_pb_line_break_holder] -->        if (input.dataset.bgwDone === 'yes') { input.dataset.bgwDone = ''; return; }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        var submitBtn = form.querySelector('input[type=\"submit\"], .hs-button');<!-- [et_pb_line_break_holder] -->        if (submitBtn) submitBtn.disabled = true;<!-- [et_pb_line_break_holder] -->        if (note) note.textContent = cp.workingText || 'Shrinking your photos\u2026';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        Promise.all(files.map(function(f){ return shrinkImage(f, cp); }))<!-- [et_pb_line_break_holder] -->          .then(function(out){<!-- [et_pb_line_break_holder] -->            var dt = new DataTransfer();<!-- [et_pb_line_break_holder] -->            var totalBefore = 0, totalAfter = 0;<!-- [et_pb_line_break_holder] -->            files.forEach(function(f){ totalBefore += f.size; });<!-- [et_pb_line_break_holder] -->            out.forEach(function(f){ totalAfter += f.size; dt.items.add(f); });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            input.dataset.bgwDone = 'yes';<!-- [et_pb_line_break_holder] -->            input.files = dt.files;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            if (note) {<!-- [et_pb_line_break_holder] -->              note.textContent = fill(cp.doneText || 'Ready to send \u2014 {count} photo(s), {size}.', {<!-- [et_pb_line_break_holder] -->                count: out.length,<!-- [et_pb_line_break_holder] -->                size:  humanSize(totalAfter)<!-- [et_pb_line_break_holder] -->              });<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            trackEvent('photos_compressed', {<!-- [et_pb_line_break_holder] -->              count: out.length,<!-- [et_pb_line_break_holder] -->              kb_before: Math.round(totalBefore\/1024),<!-- [et_pb_line_break_holder] -->              kb_after:  Math.round(totalAfter\/1024)<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->          })<!-- [et_pb_line_break_holder] -->          .catch(function(){<!-- [et_pb_line_break_holder] -->            if (note) note.textContent = cp.failText || '';<!-- [et_pb_line_break_holder] -->          })<!-- [et_pb_line_break_holder] -->          .then(function(){<!-- [et_pb_line_break_holder] -->            if (submitBtn) submitBtn.disabled = false;<!-- [et_pb_line_break_holder] -->          });<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- installation address ----------<!-- [et_pb_line_break_holder] -->     Saves itself as they type, by resubmitting email + address to the<!-- [et_pb_line_break_holder] -->     same HubSpot form. HubSpot matches on email, so this updates the<!-- [et_pb_line_break_holder] -->     contact rather than creating a second one. *\/<!-- [et_pb_line_break_holder] -->  function attachAddress(email){<!-- [et_pb_line_break_holder] -->    var af = C.photoUpload.addressField;<!-- [et_pb_line_break_holder] -->    if (!af || !af.enabled) return;<!-- [et_pb_line_break_holder] -->    var input = root.querySelector('#bgw-address');<!-- [et_pb_line_break_holder] -->    var badge = root.querySelector('#bgw-addr-saved');<!-- [et_pb_line_break_holder] -->    if (!input) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var timer = null, lastSaved = '';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function save(){<!-- [et_pb_line_break_holder] -->      var value = input.value.trim();<!-- [et_pb_line_break_holder] -->      if (!value || value === lastSaved) return;<!-- [et_pb_line_break_holder] -->      lastSaved = value;<!-- [et_pb_line_break_holder] -->      var payload = { email: email };<!-- [et_pb_line_break_holder] -->      payload[af.hubspotField || 'address'] = value;<!-- [et_pb_line_break_holder] -->      submitToHubSpot(payload).then(function(out){<!-- [et_pb_line_break_holder] -->        if (out.ok && badge) {<!-- [et_pb_line_break_holder] -->          badge.classList.add('bgw-show');<!-- [et_pb_line_break_holder] -->          setTimeout(function(){ badge.classList.remove('bgw-show'); }, 2200);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      trackEvent('address_provided');<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    input.addEventListener('input', function(){<!-- [et_pb_line_break_holder] -->      clearTimeout(timer);<!-- [et_pb_line_break_holder] -->      timer = setTimeout(save, 1200);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    input.addEventListener('blur', function(){<!-- [et_pb_line_break_holder] -->      clearTimeout(timer);<!-- [et_pb_line_break_holder] -->      save();<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Catch anyone who types an address then closes the tab.<!-- [et_pb_line_break_holder] -->    window.addEventListener('pagehide', save);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/* ---------- photo upload step ----------<!-- [et_pb_line_break_holder] -->     HubSpot's JSON submission API cannot carry files, so this embeds a<!-- [et_pb_line_break_holder] -->     HubSpot-hosted form (which can) and pre-fills the email address the<!-- [et_pb_line_break_holder] -->     customer just gave, tying the photos to the same contact record. *\/<!-- [et_pb_line_break_holder] -->  function showPhotoStep(email){<!-- [et_pb_line_break_holder] -->    var pu = C.photoUpload;<!-- [et_pb_line_break_holder] -->    if (!pu || !pu.enabled) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var panel = root.querySelector('#bgw-photos');<!-- [et_pb_line_break_holder] -->    if (!panel) return;<!-- [et_pb_line_break_holder] -->    panel.classList.add('bgw-active');<!-- [et_pb_line_break_holder] -->    trackEvent('photo_step_shown');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var skip = root.querySelector('#bgw-photo-skip');<!-- [et_pb_line_break_holder] -->    if (skip) {<!-- [et_pb_line_break_holder] -->      skip.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->        trackEvent('photo_step_skipped');<!-- [et_pb_line_break_holder] -->        var addrEl = root.querySelector('#bgw-address');<!-- [et_pb_line_break_holder] -->        if (addrEl) addrEl.dispatchEvent(new Event('blur'));<!-- [et_pb_line_break_holder] -->        panel.style.display = 'none';<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    attachAddress(email);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var target = root.querySelector('#bgw-hsform-target');<!-- [et_pb_line_break_holder] -->    var ic = C.integrations;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (!configured(ic.hubspotPortalId) || !configured(pu.photoFormId)) {<!-- [et_pb_line_break_holder] -->      target.innerHTML = '<pee class=\"bgw-photo-note\">Demo mode \u2014 the photo upload form will appear here '<!-- [et_pb_line_break_holder] -->                       + 'once you\\'ve created it in HubSpot and pasted its GUID into photoFormId.<\/pee>';<!-- [et_pb_line_break_holder] -->      console.log('[Breezy Goose] Photo step in demo mode. Would pre-fill email:', email);<!-- [et_pb_line_break_holder] -->      return;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var region = ic.hubspotRegion || '';<!-- [et_pb_line_break_holder] -->    var host   = region && region !== 'na1' ? 'js-' + region + '.hsforms.net' : 'js.hsforms.net';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/* ---- NEW form editor (default) ----<!-- [et_pb_line_break_holder] -->       Forms built in HubSpot's current editor render themselves from a<!-- [et_pb_line_break_holder] -->       <\/p>\n<div class=\"hs-form-frame\"> and a per-portal script. They do not<!-- [et_pb_line_break_holder] -->       use hbspt.forms.create(), so there is no onFormReady hook \u2014 which<!-- [et_pb_line_break_holder] -->       means we cannot reach inside to pre-fill the email or shrink the<!-- [et_pb_line_break_holder] -->       photos. The visitor types their email on the form instead, and<!-- [et_pb_line_break_holder] -->       HubSpot matches it to the contact they just created. *\/<!-- [et_pb_line_break_holder] -->    if ((pu.formStyle || 'new') === 'new') {<!-- [et_pb_line_break_holder] -->      var frame = document.createElement('div');<!-- [et_pb_line_break_holder] -->      frame.className = 'hs-form-frame';<!-- [et_pb_line_break_holder] -->      frame.setAttribute('data-region',    region || 'na1');<!-- [et_pb_line_break_holder] -->      frame.setAttribute('data-portal-id', ic.hubspotPortalId);<!-- [et_pb_line_break_holder] -->      frame.setAttribute('data-form-id',   pu.photoFormId);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      target.innerHTML = '';<!-- [et_pb_line_break_holder] -->      if (pu.sameEmailNote) {<!-- [et_pb_line_break_holder] -->        var noteEl = document.createElement('p');<!-- [et_pb_line_break_holder] -->        noteEl.className = 'bgw-photo-note';<!-- [et_pb_line_break_holder] -->        noteEl.style.marginTop = '0';<!-- [et_pb_line_break_holder] -->        noteEl.style.marginBottom = '14px';<!-- [et_pb_line_break_holder] -->        noteEl.textContent = fill(pu.sameEmailNote, { email: email });<!-- [et_pb_line_break_holder] -->        target.appendChild(noteEl);<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->      target.appendChild(frame);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      \/\/ The new embed reports submission by posting a message to the page.<!-- [et_pb_line_break_holder] -->      window.addEventListener('message', function(ev){<!-- [et_pb_line_break_holder] -->        if (!ev.data || ev.data.type !== 'hsFormCallback') return;<!-- [et_pb_line_break_holder] -->        if (ev.data.eventName !== 'onFormSubmitted') return;<!-- [et_pb_line_break_holder] -->        if (ev.data.id && pu.photoFormId && ev.data.id !== pu.photoFormId) return;<!-- [et_pb_line_break_holder] -->        trackEvent('photos_uploaded');<!-- [et_pb_line_break_holder] -->        var a1 = root.querySelector('#bgw-address');<!-- [et_pb_line_break_holder] -->        if (a1) a1.dispatchEvent(new Event('blur'));<!-- [et_pb_line_break_holder] -->        panel.innerHTML = '<\/p>\n<h3>' + esc(pu.successHeading) + '<\/h3>\n<p>'<!-- [et_pb_line_break_holder] -->                        + '<pee>' + esc(pu.successText) + '<\/pee>';<!-- [et_pb_line_break_holder] -->        panel.scrollIntoView({ behavior:'smooth', block:'start' });<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      if (document.querySelector('script[data-bgw-hsembed]')) return;<!-- [et_pb_line_break_holder] -->      var ns = document.createElement('script');<!-- [et_pb_line_break_holder] -->      ns.src = 'https:\/\/' + host + '\/forms\/embed\/' + ic.hubspotPortalId + '.js';<!-- [et_pb_line_break_holder] -->      ns.defer = true;<!-- [et_pb_line_break_holder] -->      ns.setAttribute('data-bgw-hsembed', '1');<!-- [et_pb_line_break_holder] -->      ns.onerror = function(){<!-- [et_pb_line_break_holder] -->        target.innerHTML = '<pee class=\"bgw-photo-note\">' + esc(pu.loadFailText) + '<\/pee>';<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      document.body.appendChild(ns);<!-- [et_pb_line_break_holder] -->      return;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/* ---- LEGACY form editor ----<!-- [et_pb_line_break_holder] -->       Forms built in HubSpot's legacy editor expose onFormReady, which<!-- [et_pb_line_break_holder] -->       lets us pre-fill and hide the email field and shrink photos before<!-- [et_pb_line_break_holder] -->       they upload. Set formStyle to 'legacy' only if Form B was built<!-- [et_pb_line_break_holder] -->       that way. *\/<!-- [et_pb_line_break_holder] -->    function build(){<!-- [et_pb_line_break_holder] -->      var opts = {<!-- [et_pb_line_break_holder] -->        portalId: ic.hubspotPortalId,<!-- [et_pb_line_break_holder] -->        formId:   pu.photoFormId,<!-- [et_pb_line_break_holder] -->        target:   '#bgw-hsform-target',<!-- [et_pb_line_break_holder] -->        onFormReady: function($form){<!-- [et_pb_line_break_holder] -->          var f = null;<!-- [et_pb_line_break_holder] -->          try {<!-- [et_pb_line_break_holder] -->            f = $form instanceof Element ? $form : ($form && $form[0]);<!-- [et_pb_line_break_holder] -->            var emailInput = f.querySelector('input[name=\"email\"]');<!-- [et_pb_line_break_holder] -->            if (emailInput && email) {<!-- [et_pb_line_break_holder] -->              emailInput.value = email;<!-- [et_pb_line_break_holder] -->              emailInput.dispatchEvent(new Event('input',  { bubbles:true }));<!-- [et_pb_line_break_holder] -->              emailInput.dispatchEvent(new Event('change', { bubbles:true }));<!-- [et_pb_line_break_holder] -->              var wrapper = emailInput.closest('.hs-form-field');<!-- [et_pb_line_break_holder] -->              if (wrapper) wrapper.style.display = 'none';<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->          } catch(e){ \/* leave the field visible if anything goes wrong *\/ }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->          try { if (f) attachCompression(f); }<!-- [et_pb_line_break_holder] -->          catch(e){ \/* originals upload untouched if this fails *\/ }<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->        onFormSubmitted: function(){<!-- [et_pb_line_break_holder] -->          trackEvent('photos_uploaded');<!-- [et_pb_line_break_holder] -->          var a2 = root.querySelector('#bgw-address');<!-- [et_pb_line_break_holder] -->          if (a2) a2.dispatchEvent(new Event('blur'));<!-- [et_pb_line_break_holder] -->          panel.innerHTML = '<\/p>\n<h3>' + esc(pu.successHeading) + '<\/h3>\n<p>'<!-- [et_pb_line_break_holder] -->                          + '<pee>' + esc(pu.successText) + '<\/pee>';<!-- [et_pb_line_break_holder] -->          panel.scrollIntoView({ behavior:'smooth', block:'start' });<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      };<!-- [et_pb_line_break_holder] -->      if (region) opts.region = region;<!-- [et_pb_line_break_holder] -->      window.hbspt.forms.create(opts);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (window.hbspt && window.hbspt.forms) { build(); return; }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var s = document.createElement('script');<!-- [et_pb_line_break_holder] -->    s.src = 'https:\/\/' + host + '\/forms\/embed\/v2.js';<!-- [et_pb_line_break_holder] -->    s.charset = 'utf-8';<!-- [et_pb_line_break_holder] -->    s.type = 'text\/javascript';<!-- [et_pb_line_break_holder] -->    s.onload = build;<!-- [et_pb_line_break_holder] -->    s.onerror = function(){<!-- [et_pb_line_break_holder] -->      target.innerHTML = '<pee class=\"bgw-photo-note\">' + esc(pu.loadFailText) + '<\/pee>';<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    document.body.appendChild(s);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function complete(){<!-- [et_pb_line_break_holder] -->    var a = collectAnswers();<!-- [et_pb_line_break_holder] -->    var res = buildResult(a);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    nextBtn.disabled = true;<!-- [et_pb_line_break_holder] -->    nextBtn.textContent = C.labels.sendingButton;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var fields = {};<!-- [et_pb_line_break_holder] -->    qs.forEach(function(q){<!-- [et_pb_line_break_holder] -->      if (q.type === 'contact') {<!-- [et_pb_line_break_holder] -->        (C.contactForm.fields || []).forEach(function(f){<!-- [et_pb_line_break_holder] -->          if (f.hubspotField && a[f.name]) fields[f.hubspotField] = a[f.name];<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->      } else if (q.hubspotField) {<!-- [et_pb_line_break_holder] -->        fields[q.hubspotField] = Array.isArray(a[q.id]) ? a[q.id].join(';') : a[q.id];<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    fields.recommended_tier = res.name;<!-- [et_pb_line_break_holder] -->    fields.quote_range = res.price;<!-- [et_pb_line_break_holder] -->    Object.keys(attribution).forEach(function(k){ fields[k] = attribution[k]; });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    submitToHubSpot(fields).then(function(out){<!-- [et_pb_line_break_holder] -->      nextBtn.disabled = false;<!-- [et_pb_line_break_holder] -->      nextBtn.textContent = C.labels.finalButton;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      if (!out.ok) { showError(C.labels.submitFailed); return; }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      root.querySelector('#bgw-tier').textContent  = res.name;<!-- [et_pb_line_break_holder] -->      root.querySelector('#bgw-price').textContent = res.price;<!-- [et_pb_line_break_holder] -->      var ul = root.querySelector('#bgw-reasons');<!-- [et_pb_line_break_holder] -->      ul.innerHTML = '';<!-- [et_pb_line_break_holder] -->      res.reasons.forEach(function(text){<!-- [et_pb_line_break_holder] -->        var li = document.createElement('li');<!-- [et_pb_line_break_holder] -->        li.textContent = text;<!-- [et_pb_line_break_holder] -->        ul.appendChild(li);<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      trackEvent('wizard_complete', { recommended_tier:res.name });<!-- [et_pb_line_break_holder] -->      trackConversion(C.integrations.googleAdsQuoteLabel);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      root.querySelector('#bgw-wizard').style.display = 'none';<!-- [et_pb_line_break_holder] -->      var el = root.querySelector('#bgw-result');<!-- [et_pb_line_break_holder] -->      el.classList.add('bgw-active');<!-- [et_pb_line_break_holder] -->      el.scrollIntoView({ behavior:'smooth', block:'start' });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      showPhotoStep(fields.email || '');<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  showStep(1);<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] -->[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; background_image=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/10\/Commercial-Office-Air-Conditioning.jpg&#8221; custom_padding=&#8221;||252px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_4,1_2,1_4&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;186px|||||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_heading title=&#8221;See Our Commercial Air Conditioning Installation Options&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; title_level=&#8221;h2&#8243; title_font=&#8221;&#8211;et_global_body_font|600|||||||&#8221; title_text_align=&#8221;center&#8221; title_text_color=&#8221;#0b3f75&#8243; title_font_size=&#8221;66px&#8221; title_letter_spacing=&#8221;1px&#8221; title_line_height=&#8221;1.2em&#8221; background_color=&#8221;rgba(255,255,255,0.88)&#8221; custom_margin=&#8221;0px||21px||false|false&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243; title_font_size_last_edited=&#8221;on|phone&#8221; title_font_size_phone=&#8221;43px&#8221; custom_padding=&#8221;10px|10px|10px|10px|false|false&#8221; title_font_size_tablet=&#8221;66px&#8221;][\/et_pb_heading][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_font_size=&#8221;23px&#8221; text_line_height=&#8221;1.4em&#8221; header_font=&#8221;&#8211;et_global_body_font|600|||||||&#8221; header_text_color=&#8221;#0b3f75&#8243; header_font_size=&#8221;56px&#8221; custom_padding=&#8221;84px|||||&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_font_size_phone=&#8221;38px&#8221; header_line_height=&#8221;1.2em&#8221; sticky_enabled=&#8221;0&#8243; header_font_size_tablet=&#8221;56px&#8221;]<\/p>\n<h1>Where We Install Air Conditioning<\/h1>\n<p>We install air conditioning in East Surrey and West Sussex.<\/p>\n<p>Air conditioning installations in Reigate, Redhill, Horley, Crawley, Horsham, East Grinstead, Dorking, Bletchingley, Godstone, Oxted, Lingfield Banstead, Coulsdon, Caterham, Leatherhead, Cranleigh, Guildford and everywhere in between.\u00a0<\/p>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/10\/Breezy-Goose-HVAC-Engineering-Certifications-Banner.png&#8221; title_text=&#8221;Breezy Goose HVAC Engineering Certifications Banner&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#287CC1&#8243; custom_margin=&#8221;13px||-40px|||&#8221; custom_padding=&#8221;||5px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;3_5,1_5,1_5&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||4px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;3_5&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;15px&#8221; text_line_height=&#8221;1.4em&#8221; header_font=&#8221;Anek Gurmukhi|600|||||||&#8221; header_text_color=&#8221;#287cc1&#8243; header_font_size=&#8221;56px&#8221; header_2_font=&#8221;Anek Gurmukhi||||||||&#8221; header_2_text_color=&#8221;#287CC1&#8243; header_2_font_size=&#8221;52px&#8221; header_4_font=&#8221;Anek Gurmukhi|500|||||||&#8221; header_4_text_color=&#8221;#e09900&#8243; header_4_font_size=&#8221;24px&#8221; custom_margin=&#8221;||1px|||&#8221; custom_padding=&#8221;23px|||9px|false|false&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h4 style=\"text-align: left;\">Contact Us<\/h4>\n<p>[\/et_pb_text][et_pb_button button_text=&#8221;Breezy Goose Air Conditioning&#8221; button_alignment=&#8221;left&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;15px&#8221; button_text_color=&#8221;#FFFFFF&#8221; button_border_width=&#8221;0px&#8221; button_font=&#8221;&#8211;et_global_body_font|300|||||||&#8221; button_icon=&#8221;&#xe02d;||divi||400&#8243; button_icon_color=&#8221;#E09900&#8243; button_icon_placement=&#8221;left&#8221; button_on_hover=&#8221;off&#8221; custom_margin=&#8221;||2px|||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_button][et_pb_button button_text=&#8221;Clayhall Farm, Clayhall Lane, Reigate RH28LQ &#8221; button_alignment=&#8221;left&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;15px&#8221; button_text_color=&#8221;#FFFFFF&#8221; button_border_width=&#8221;0px&#8221; button_font=&#8221;&#8211;et_global_body_font|300|||||||&#8221; button_icon=&#8221;&#xe01d;||divi||400&#8243; button_icon_color=&#8221;#E09900&#8243; button_icon_placement=&#8221;left&#8221; button_on_hover=&#8221;off&#8221; custom_margin=&#8221;||2px|||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_button][et_pb_button button_text=&#8221;hello.goose@breezygoose.com&#8221; button_alignment=&#8221;left&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;15px&#8221; button_text_color=&#8221;#FFFFFF&#8221; button_border_width=&#8221;0px&#8221; button_font=&#8221;&#8211;et_global_body_font|300|||||||&#8221; button_icon=&#8221;&#xe010;||divi||400&#8243; button_icon_color=&#8221;#E09900&#8243; button_icon_placement=&#8221;left&#8221; button_on_hover=&#8221;off&#8221; custom_margin=&#8221;||2px|||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_button][et_pb_button button_text=&#8221;01737 44 8888&#8243; button_alignment=&#8221;left&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;15px&#8221; button_text_color=&#8221;#FFFFFF&#8221; button_border_width=&#8221;0px&#8221; button_font=&#8221;&#8211;et_global_body_font|300|||||||&#8221; button_icon=&#8221;&#xf2a0;||fa||900&#8243; button_icon_color=&#8221;#E09900&#8243; button_icon_placement=&#8221;left&#8221; button_on_hover=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_button][\/et_pb_column][et_pb_column type=&#8221;1_5&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/10\/Horizontal-Stacked-Full-Colour-on-Black.png&#8221; title_text=&#8221;Horizontal Stacked Full Colour on Black&#8221; align=&#8221;center&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_padding=&#8221;80px||||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_5&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/breezygoose.com\/wp-content\/uploads\/2026\/09\/The-Breezy-Goose.png&#8221; title_text=&#8221;The Breezy Goose&#8221; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;3px||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; custom_margin=&#8221;||-7px|||&#8221; custom_padding=&#8221;0px|||||&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p style=\"text-align: center;\">\u00a9 Peak Simplicity Ltd<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.8&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; custom_margin=&#8221;||-36px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p style=\"text-align: center;\">Privacy &amp; Cookies<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Breezy Goose Air Conditioning Specialist friendly family run air conditioning installation in East Surrey &amp; West Sussex. We install and service domestic and commercial air conditioning systems. We also provide heritage and listed air conditioning installation options.\u00a0 Air Conditioning installations in Reigate, Redhill, Horley, Crawley, Horsham, East Grinstead, Dorking, Bletchingley, Godstone, Oxted, Lingfield Banstead, Coulsdon, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-30","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/breezygoose.com\/index.php?rest_route=\/wp\/v2\/pages\/30","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/breezygoose.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/breezygoose.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/breezygoose.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/breezygoose.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=30"}],"version-history":[{"count":60,"href":"https:\/\/breezygoose.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions"}],"predecessor-version":[{"id":242,"href":"https:\/\/breezygoose.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions\/242"}],"wp:attachment":[{"href":"https:\/\/breezygoose.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}