1<!DOCTYPE html> 2<html lang="en-US" xmlns:fb="https://www.facebook.com/2008/fbml" xmlns:addthis="https://www.addthis.com/help/api-spec" > 3<head > 4<meta charset="UTF-8" />
5<script> 6var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),document.addEventListener("gform/theme/scripts_loaded",function(){gform.themeScriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>"function"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn("The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1."),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener("gform_main_scripts_loaded",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener("gform/theme/scripts_loaded",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener("DOMContentLoaded",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook("action",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook("filter",o,r,e,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,r){gform.removeHook("action",o,r)},removeFilter:function(o,r,e){gform.removeHook("filter",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+"_"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==r?t.apply(null,e):e[0]=t.apply(null,e)})),"filter"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}}); 7</script>
7 8 9<meta name="viewport" content="width=device-width, initial-scale=1" /> 10<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 11 12 <!-- This site is optimized with the Yoast SEO plugin v28.5 - https://yoast.com/product/yoast-seo-wordpress/ --> 13 <title>Ideal Plumbing, Heating, Air & Electrical Services in San Diego, CA</title> 14<link data-rocket-prefetch href="https://www.googletagmanager.com" rel="dns-prefetch"> 15<link data-rocket-prefetch href="https://www.google-analytics.com" rel="dns-prefetch"> 16<link data-rocket-prefetch href="https://www.google.com" rel="dns-prefetch"> 17<link data-rocket-prefetch href="https://use.fontawesome.com" rel="dns-prefetch"><link rel="preload" data-rocket-preload as="image" href="https://idealservice.com/wp-content/uploads/2018/04/banner-new.jpg" fetchpriority="high"> 18 <meta name="description" content="Looking experienced San Diego Plumbing or Plumbing repair in San Diego? Ideal Heating and Air has been trusted by San Diego since 1960. Call now!" /> 19 <link rel="canonical" href="https://idealservice.com/" /> 20 <meta property="og:locale" content="en_US" /> 21 <meta property="og:type" content="website" /> 22 <meta property="og:title" content="Ideal Plumbing, Heating, Air & Electrical Services in San Diego, CA" /> 23 <meta property="og:description" content="Looking experienced San Diego Plumbing or Plumbing repair in San Diego? Ideal Heating and Air has been trusted by San Diego since 1960. Call now!" /> 24 <meta property="og:url" content="https://idealservice.com/" /> 25 <meta property="og:site_name" content="Ideal Service" /> 26 <meta property="article:modified_time" content="2026-09-10T05:46:58+00:00" /> 27 <meta property="og:image" content="https://idealservice.com/wp-content/uploads/2023/09/Cropped-300x221.png" /> 28 <meta name="twitter:card" content="summary_large_image" /> 29
29<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/idealservice.com\/","url":"https:\/\/idealservice.com\/","name":"Ideal Plumbing, Heating, Air & Electrical Services in San Diego, CA","isPartOf":{"@id":"https:\/\/idealservice.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/idealservice.com\/#primaryimage"},"image":{"@id":"https:\/\/idealservice.com\/#primaryimage"},"thumbnailUrl":"https:\/\/idealservice.com\/wp-content\/uploads\/2023\/09\/Cropped-300x221.png","datePublished":"2011-06-21T20:01:25+00:00","dateModified":"2026-09-10T05:46:58+00:00","description":"Looking experienced San Diego Plumbing or Plumbing repair in San Diego? Ideal Heating and Air has been trusted by San Diego since 1960. Call now!","breadcrumb":{"@id":"https:\/\/idealservice.com\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/idealservice.com\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/idealservice.com\/#primaryimage","url":"https:\/\/idealservice.com\/wp-content\/uploads\/2023\/09\/Cropped.png","contentUrl":"https:\/\/idealservice.com\/wp-content\/uploads\/2023\/09\/Cropped.png","width":3684,"height":2711,"caption":"2023 San Diego BBB Torch Award Winner"},{"@type":"BreadcrumbList","@id":"https:\/\/idealservice.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/idealservice.com\/#website","url":"https:\/\/idealservice.com\/","name":"Ideal Service","description":"San Diego Plumbing and San Diego Heating Repair | Ideal Service","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/idealservice.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
29 30 <!-- / Yoast SEO plugin. --> 31 32 33<link rel='dns-prefetch' href='//s7.addthis.com' /> 34<link rel='dns-prefetch' href='//www.google.com' /> 35 36<link rel="alternate" type="application/rss+xml" title="Ideal Service » Feed" href="https://idealservice.com/feed/" /> 37<link rel="alternate" type="application/rss+xml" title="Ideal Service » Comments Feed" href="https://idealservice.com/comments/feed/" /> 38<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://idealservice.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fidealservice.com%2F" /> 39<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://idealservice.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fidealservice.com%2F&format=xml" /> 40<style id="wp-img-auto-sizes-contain-inline-css"> 41img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 42/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 43</style> 44<link data-minify="1" rel='stylesheet' id='minimum-pro-theme-css' href='https://idealservice.com/wp-content/cache/min/1/wp-content/themes/ideal/style.css?ver=1790320532' media='all' /> 45<style id="wp-emoji-styles-inline-css"> 46 47 img.wp-smiley, img.emoji { 48 display: inline !important; 49 border: none !important; 50 box-shadow: none !important; 51 height: 1em !important; 52 width: 1em !important; 53 margin: 0 0.07em !important; 54 vertical-align: -0.1em !important; 55 background: none !important; 56 padding: 0 !important; 57 } 58/*# sourceURL=wp-emoji-styles-inline-css */ 59</style> 60<style id="classic-theme-styles-inline-css"> 61/*! This file is auto-generated */ 62.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 63/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 64</style> 65<style id="global-styles-inline-css"> 66:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
66--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
66.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 67:root :where(.wp-block-icon svg){width: 24px;} 68:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} 69:where(.wp-block-term-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-term-template.is-layout-grid){gap: 1.25em;} 70:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} 71:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} 72/*# sourceURL=global-styles-inline-css */ 73</style> 74<link rel='stylesheet' id='siteorigin-panels-front-css' href='https://idealservice.com/wp-content/plugins/siteorigin-panels/css/front-flex.min.css?ver=2.36.1' media='all' /> 75<link data-minify="1" rel='stylesheet' id='widgetopts-styles-css' href='https://idealservice.com/wp-content/cache/min/1/wp-content/plugins/widget-options/assets/css/widget-options.css?ver=1790320532' media='all' /> 76<link rel='stylesheet' id='cmplz-general-css' href='https://idealservice.com/wp-content/plugins/complianz-gdpr-premium/assets/css/cookieblocker.min.css?ver=1789110344' media='all' /> 77<link data-minify="1" rel='stylesheet' id='elementor-icons-css' href='https://idealservice.com/wp-content/cache/min/1/wp-content/plugins/elementor/assets/lib/eicons/css/elementor-icons.min.css?ver=1790320532' media='all' /> 78<link rel='stylesheet' id='elementor-frontend-css' href='https://idealservice.com/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=4.3.2' media='all' /> 79<link rel='stylesheet' id='elementor-post-6416-css' href='https://idealservice.com/wp-content/uploads/elementor/css/post-6416.css?ver=1790320400' media='all' /> 80<link rel='stylesheet' id='elementor-post-242-css' href='https://idealservice.com/wp-content/uploads/elementor/css/post-242.css?ver=1790320400' media='all' /> 81<link rel='stylesheet' id='fancybox-css' href='https://idealservice.com/wp-content/plugins/easy-fancybox/fancybox/1.5.4/jquery.fancybox.min.css?ver=7.0.5' media='screen' /> 82<link rel='stylesheet' id='gforms_reset_css-css' href='https://idealservice.com/wp-content/plugins/gravityforms/legacy/css/formreset.min.css?ver=3.1.2' media='all' /> 83<link rel='stylesheet' id='gforms_formsmain_css-css' href='https://idealservice.com/wp-content/plugins/gravityforms/legacy/css/formsmain.min.css?ver=3.1.2' media='all' /> 84<link rel='stylesheet' id='gforms_ready_class_css-css' href='https://idealservice.com/wp-content/plugins/gravityforms/legacy/css/readyclass.min.css?ver=3.1.2' media='all' /> 85<link rel='stylesheet' id='gforms_browsers_css-css' href='https://idealservice.com/wp-content/plugins/gravityforms/legacy/css/browsers.min.css?ver=3.1.2' media='all' /> 86<link rel='stylesheet' id='addthis_all_pages-css' href='https://idealservice.com/wp-content/plugins/addthis/frontend/build/addthis_wordpress_public.min.css?ver=7.0.5' media='all' /> 87<link data-minify="1" rel='stylesheet' id='cmplz-banner-1-optin-css' href='https://idealservice.com/wp-content/cache/min/1/wp-content/uploads/complianz/css/banner-1-optin.css?ver=1790320532' media='all' /> 88<link data-minify="1" rel='stylesheet' id='elementor-gf-local-roboto-css' href='https://idealservice.com/wp-content/cache/min/1/wp-content/uploads/elementor/google-fonts/css/roboto.css?ver=1790320532' media='all' /> 89<link data-minify="1" rel='stylesheet' id='elementor-gf-local-robotoslab-css' href='https://idealservice.com/wp-content/cache/min/1/wp-content/uploads/elementor/google-fonts/css/robotoslab.css?ver=1790320532' media='all' />
90<script id="wp-tinymce-root-js" src="https://idealservice.com/wp-includes/js/tinymce/tinymce.min.js?ver=49110-20250317"></script>
vendor: 1 bytes, line 90
90
91<script id="wp-tinymce-js" src="https://idealservice.com/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js?ver=49110-20250317"></script>
vendor: 1 bytes, line 91
91
92<script id="jquery-core-js" src="https://idealservice.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 92
92
93<script id="jquery-migrate-js" src="https://idealservice.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 93
93
94<script id="minimum-responsive-menu-js" src="https://idealservice.com/wp-content/themes/ideal/js/responsive-menu.js?ver=1.0.0"></script>
vendor: 1 bytes, line 94
94
95<script id="custom-js" src="https://idealservice.com/wp-content/themes/ideal/js/custom.js?ver=7.0.5"></script>
vendor: 1 bytes, line 95
95
96<script id="gform_json-js" defer='defer' src="https://idealservice.com/wp-content/plugins/gravityforms/js/jquery.json.min.js?ver=3.1.2"></script>
vendor: 1 bytes, line 96
96
97<script id="gform_gravityforms-js-extra"> 98var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2,"code":"USD"},"base_url":"https://idealservice.com/wp-content/plugins/gravityforms","number_formats":[],"version_hash":"96aa36d1f98aee22475ef38c55151d8a","countries":{"AF":"Afghanistan","AX":"\u00c5land Islands","AL":"Albania","DZ":"Algeria","AS":"American Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua and Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaijan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgium","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BQ":"Bonaire, Sint Eustatius and Saba","BA":"Bosnia and Herzegovina","BW":"Botswana","BV":"Bouvet Island","BR":"Brazil","IO":"British Indian Ocean Territory","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CV":"Cabo Verde","KH":"Cambodia","CM":"Cameroon","CA":"Canada","KY":"Cayman Islands","CF":"Central African Republic","TD":"Chad","CL":"Chile","CN":"China","CX":"Christmas Island","CC":"Cocos Islands","CO":"Colombia","KM":"Comoros","CD":"Congo, Democratic Republic of the","CG":"Congo","CK":"Cook Islands","CR":"Costa Rica","CI":"C\u00f4te d'Ivoire","HR":"Croatia","CU":"Cuba","CW":"Cura\u00e7ao","CY":"Cyprus","CZ":"Czechia","DK":"Denmark","DJ":"Djibouti","DM":"Dominica","DO":"Dominican Republic","EC":"Ecuador","EG":"Egypt","SV":"El Salvador","GQ":"Equatorial Guinea","ER":"Eritrea","EE":"Estonia","SZ":"Eswatini","ET":"Ethiopia","FK":"Falkland Islands","FO":"Faroe Islands","FJ":"Fiji","FI":"Finland","FR":"France","GF":"French Guiana","PF":"French Polynesia","TF":"French Southern Territories","GA":"Gabon","GM":"Gambia","GE":"Georgia","DE":"Germany","GH":"Ghana","GI":"Gibraltar","GR":"Greece","GL":"Greenland","GD":"Grenada","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard Island and McDonald Islands","VA":"Holy See","HN":"Honduras","HK":"Hong Kong","HU":"Hungary","IS":"Iceland","IN":"India","ID":"Indonesia","IR":"Iran","IQ":"Iraq","IE":"Ireland","IM":"Isle of Man","IL":"Israel","IT":"Italy","JM":"Jamaica","JP":"Japan","JE":"Jersey","JO":"Jordan","KZ":"Kazakhstan","KE":"Kenya","KI":"Kiribati","KP":"Korea, Democratic People's Republic of","KR":"Korea, Republic of","KW":"Kuwait","KG":"Kyrgyzstan","LA":"Lao People's Democratic Republic","LV":"Latvia","LB":"Lebanon","LS":"Lesotho","LR":"Liberia","LY":"Libya","LI":"Liechtenstein","LT":"Lithuania","LU":"Luxembourg","MO":"Macao","MG":"Madagascar","MW":"Malawi","MY":"Malaysia","MV":"Maldives","ML":"Mali","MT":"Malta","MH":"Marshall Islands","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Micronesia","MD":"Moldova","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Morocco","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Netherlands","NC":"New Caledonia","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","NF":"Norfolk Island","MK":"North Macedonia","MP":"Northern Mariana Islands","NO":"Norway","OM":"Oman","PK":"Pakistan","PW":"Palau","PS":"Palestine, State of","PA":"Panama","PG":"Papua New Guinea","PY":"Paraguay","PE":"Peru","PH":"Philippines","PN":"Pitcairn","PL":"Poland","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"R\u00e9union","RO":"Romania","RU":"Russian Federation","RW":"Rwanda","BL":"Saint Barth\u00e9lemy","SH":"Saint Helena, Ascension and Tristan da Cunha","KN":"Saint Kitts and Nevis","LC":"Saint Lucia","MF":"Saint Martin","PM":"Saint Pierre and Miquelon","VC":"Saint Vincent and the Grenadines","WS":"Samoa","SM":"San Marino","ST":"Sao Tome and Principe","SA":"Saudi Arabia","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten","SK":"Slovakia","SI":"Slovenia","SB":"Solomon Islands","SO":"Somalia","ZA":"South Africa","GS":"South Georgia and the South Sandwich Islands","SS":"South Sudan","ES":"Spain","LK":"Sri Lanka","SD":"Sudan","SR":"Suriname","SJ":"Svalbard and Jan Mayen","SE":"Sweden","CH":"Switzerland","SY":"Syria Arab Republic","TW":"Taiwan","TJ":"Tajikistan","TZ":"Tanzania, the United Republic of","TH":"Thailand","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad and Tobago","TN":"Tunisia","TR":"T\u00fcrkiye","TM":"Turkmenistan","TC":"Turks and Caicos Islands","TV":"Tuvalu","UG":"Uganda","UA":"Ukraine","AE":"United Arab Emirates","GB":"United Kingdom","US":"United States","UY":"Uruguay","UM":"US Minor Outlying Islands","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Venezuela","VN":"Viet Nam","VG":"Virgin Islands, British","VI":"Virgin Islands, U.S.","WF":"Wallis and Futuna","EH":"Western Sahara","YE":"Yemen","ZM":"Zambia","ZW":"Zimbabwe"},"strings":{"newRowAdded":"New row added.","rowRemoved":"Row removed","formSaved":"The form has been saved. The content contains the link to return and complete the form."}}; 99var gform_i18n = {"datepicker":{"wdOffset":1,"helpTextShort":"Press F1 for help","helpText":"Press the arrow keys to navigate by day, PageUp and PageDown to navigate by month, Alt+PageUp and Alt+PageDown to navigate by year, or Escape to cancel.","openOnFocusHelpText":"Press Down arrow to browse the calendar, or Escape to close.","tooltipTxt":"Press Escape to cancel","disabledTxt":"Disabled","markedTxt":"Selected","prevTxt":"Previous","nextTxt":"Next","monthTxt":"Month","yearTxt":"Year","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"days":[{"s":"S","l":"Sunday"},{"s":"M","l":"Monday"},{"s":"T","l":"Tuesday"},{"s":"W","l":"Wednesday"},{"s":"T","l":"Thursday"},{"s":"F","l":"Friday"},{"s":"S","l":"Saturday"}]}}; 100var gf_legacy_multi = {"1":"1"};
101var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following:","file_uploaded":"File uploaded","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled","error":"Error","message":"Message"},"vars":{"images_url":"https://idealservice.com/wp-content/plugins/gravityforms/images"}}; 102//# sourceURL=gform_gravityforms-js-extra 103</script>
vendor: 1 bytes, line 103
103
104<script id="gform_gravityforms-js-before"> 105 106//# sourceURL=gform_gravityforms-js-before 107</script>
vendor: 1 bytes, line 107
107
108<script id="gform_gravityforms-js" defer='defer' src="https://idealservice.com/wp-content/plugins/gravityforms/js/gravityforms.min.js?ver=3.1.2"></script>
vendor: 150 bytes, lines 108-109
108 109<script id="gform_recaptcha-js" defer='defer' src="https://www.google.com/recaptcha/api.js?hl=en&&ver=7.0.5#038;render=explicit"></script>
110<script id="gform_gravityforms_utils-js" defer='defer' src="https://idealservice.com/wp-content/plugins/gravityforms/assets/js/dist/utils.min.js?ver=69a9db57304a9f86c3d1a0bea5fd2cf9"></script>
vendor: 1 bytes, line 110
110
111<script id="ga-external-tracking-js" src="https://idealservice.com/wp-content/plugins/google-analyticator/external-tracking.min.js?ver=6.5.7"></script>
111 112<link rel="https://api.w.org/" href="https://idealservice.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://idealservice.com/wp-json/wp/v2/pages/242" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://idealservice.com/xmlrpc.php?rsd" /> 113<link rel='shortlink' href='https://idealservice.com/' /> 114 <style>.cmplz-hidden { 115 display: none !important; 116 }</style> 117 <link rel="icon" href="https://idealservice.com/wp-content/themes/ideal/images/favicon.ico" /> 118<!-- APEX idealservice.com Google Tag Manager -->
119<script type="text/plain" data-service="Google-Tag-Manager" data-category="marketing">
vendor: 327 bytes, lines 119-123
119(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 120new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 121j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 122'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 123})(window,document,'script','dataLayer','
123GTM-5MK37KKM
vendor: 3 bytes, line 123
123');
123</script>
123 124<!-- End APEX idealservice.com Google Tag Manager --> 125 126<!-- APEX GLOBAL Google Tag Manager -->
127<script type="text/plain" data-service="Google-Tag-Manager" data-category="marketing">
vendor: 323 bytes, line 127
127(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
127GTM-NPGVD6LP
vendor: 3 bytes, line 127
127');
127</script>
127 128<!-- APEX GLOBAL End Google Tag Manager --> 129
130<script src="https://use.fontawesome.com/88686d8bea.js"></script>
130 131 132 <style type="text/css" media="print"> 133 @page 134 { 135 size: auto; /* auto is the current printer page size */ 136 margin: 0mm; /* this affects the margin in the printer settings */ 137 } 138 139 body 140 { 141 background-color:#FFFFFF; 142 margin: 0px; /* the margin on the content before printing */ 143 } 144 </style> 145 146<!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 146-147
146 147<script async src="https://www.googletagmanager.com/gtag/js?id=
147UA-26810748-1
vendor: 12 bytes, line 147
147"></script>
148<script> 149
vendor: 134 bytes, lines 149-153
149window.dataLayer = window.dataLayer || []; 150 function gtag(){dataLayer.push(arguments);} 151 gtag('js', new Date()); 152 153 gtag('config', '
153UA-26810748-1
vendor: 4 bytes, line 153
153');
154</script>
154 155 156<meta name="generator" content="Elementor 4.3.2; features: additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-auto">
157<script data-nowprocket> 158(function () { 159 160 function gpcIsEnabled() { 161 return ( 162 typeof navigator.globalPrivacyControl !== 'undefined' && 163 navigator.globalPrivacyControl === true 164 ); 165 } 166 167 if (!gpcIsEnabled()) { 168 return; 169 } 170 171 function showGPCBanner() { 172 173 if (document.getElementById('apex-gpc-notice')) { 174 return; 175 } 176 177 var banner = document.createElement('div'); 178 179 banner.id = 'apex-gpc-notice'; 180 banner.setAttribute('role', 'status'); 181 banner.setAttribute('aria-live', 'polite'); 182 183 banner.innerHTML = ` 184 <div class="apex-gpc-notice-inner"> 185 186 <div class="apex-gpc-notice-content"> 187 188 <div class="apex-gpc-notice-icon" aria-hidden="true"> 189 190 <svg viewBox="0 0 24 24" fill="none"> 191 192 <path 193 d="M12 2L5 5V11C5 16 8.4 20.4 12 22C15.6 20.4 19 16 19 11V5L12 2Z" 194 fill="currentColor" 195 opacity="0.18"> 196 </path> 197 198 <path 199 d="M12 2L5 5V11C5 16 8.4 20.4 12 22C15.6 20.4 19 16 19 11V5L12 2Z" 200 stroke="currentColor" 201 stroke-width="1.8" 202 stroke-linejoin="round"> 203 </path> 204 205 <path 206 d="M9.5 11.8L11.2 13.5L14.8 9.8" 207 stroke="currentColor" 208 stroke-width="1.8" 209 stroke-linecap="round" 210 stroke-linejoin="round"> 211 </path> 212 213 </svg> 214 215 </div> 216 217 <div class="apex-gpc-notice-text"> 218 <strong>Global Privacy Control is enabled.</strong> 219 We respect your browser's privacy preference. 220 </div> 221 222 </div> 223 224 <button 225 type="button" 226 class="apex-gpc-notice-close" 227 aria-label="Close privacy notice"> 228 × 229 </button> 230 231 </div> 232 `; 233 234 235 /* ------------------------------ 236 BANNER STYLES 237 ------------------------------ */ 238 239 var style = document.createElement('style'); 240 241 style.textContent = ` 242 243 #apex-gpc-notice { 244 position: relative; 245 width: 100%; 246 background: #16212E; 247 border-bottom: 1px solid #26384A; 248 color: #F5F7FA; 249 font-family: Arial, Helvetica, sans-serif; 250 font-size: 14px; 251 line-height: 1.4; 252 box-sizing: border-box; 253 z-index: 999999; 254 } 255 256 #apex-gpc-notice .apex-gpc-notice-inner { 257 position: relative; 258 width: 100%; 259 max-width: 1440px; 260 margin: 0 auto; 261 padding: 10px 50px; 262 display: flex; 263 align-items: center; 264 justify-content: center; 265 box-sizing: border-box; 266 } 267 268 #apex-gpc-notice .apex-gpc-notice-content { 269 display: flex; 270 align-items: center; 271 justify-content: center; 272 gap: 10px; 273 white-space: nowrap; 274 text-align: center; 275 } 276 277 #apex-gpc-notice .apex-gpc-notice-icon { 278 width: 28px; 279 height: 28px; 280 min-width: 28px; 281 display: flex; 282 align-items: center; 283 justify-content: center; 284 color: #4ADE80; 285 background: rgba(74, 222, 128, 0.12); 286 border: 1px solid rgba(74, 222, 128, 0.28); 287 border-radius: 50%; 288 box-sizing: border-box; 289 } 290 291 #apex-gpc-notice .apex-gpc-notice-icon svg { 292 width: 18px; 293 height: 18px; 294 display: block; 295 } 296 297 #apex-gpc-notice .apex-gpc-notice-text { 298 color: #DCE4EC; 299 } 300 301 #apex-gpc-notice .apex-gpc-notice-text strong { 302 color: #FFFFFF; 303 font-weight: 700; 304 } 305 306 #apex-gpc-notice .apex-gpc-notice-close { 307 position: absolute; 308 right: 18px; 309 top: 50%; 310 transform: translateY(-50%); 311 appearance: none; 312 background: transparent; 313 border: 0; 314 color: #DCE4EC; 315 font-size: 22px; 316 line-height: 1; 317 cursor: pointer; 318 padding: 5px; 319 } 320 321 #apex-gpc-notice .apex-gpc-notice-close:hover, 322 #apex-gpc-notice .apex-gpc-notice-close:focus { 323 color: #FFFFFF; 324 opacity: 0.75; 325 } 326 327 @media (max-width: 700px) { 328 329 #apex-gpc-notice { 330 font-size: 12px; 331 } 332 333 #apex-gpc-notice .apex-gpc-notice-inner { 334 padding: 9px 38px 9px 12px; 335 } 336 337 #apex-gpc-notice .apex-gpc-notice-content { 338 white-space: normal; 339 text-align: left; 340 justify-content: flex-start; 341 } 342 343 #apex-gpc-notice .apex-gpc-notice-close { 344 right: 8px; 345 } 346 347 } 348 349 `; 350 351 document.head.appendChild(style); 352 353 354 /* ------------------------------ 355 PLACE BANNER AT TOP OF PAGE 356 ------------------------------ */ 357 358 document.body.insertBefore( 359 banner, 360 document.body.firstChild 361 ); 362 363 364 /* ------------------------------ 365 FIX OVERLAY / FIXED HEADERS 366 ------------------------------ */ 367 368 var headerElement = document.querySelector('header'); 369 var overlayHeader = null; 370 371 var originalTop = ''; 372 var originalTopPriority = ''; 373 var baseTop = 0; 374 375 376 function findOverlayHeader() { 377 378 if (!headerElement) { 379 return null; 380 } 381 382 var element = headerElement; 383 var candidate = null; 384 385 /* 386 * Walk up the DOM because some sites put 387 * position: fixed on a wrapper around <header> 388 * instead of <header> itself. 389 */ 390 391 while ( 392 element && 393 element !== document.body && 394 element !== document.documentElement 395 ) { 396 397 var computed = window.getComputedStyle(element); 398 var rect = element.getBoundingClientRect(); 399 400 if ( 401 ( 402 computed.position === 'fixed' || 403 computed.position === 'absolute' 404 ) && 405 rect.top <= 10 406 ) { 407 candidate = element; 408 } 409 410 element = element.parentElement; 411 } 412 413 return candidate; 414 } 415 416 417 function setupHeaderOffset() { 418 419 if (overlayHeader) { 420 return; 421 } 422 423 overlayHeader = findOverlayHeader(); 424 425 if (!overlayHeader) { 426 return; 427 } 428 429 var computed = 430 window.getComputedStyle(overlayHeader); 431 432 originalTop = 433 overlayHeader.style.getPropertyValue('top'); 434 435 originalTopPriority = 436 overlayHeader.style.getPropertyPriority('top'); 437 438 baseTop = parseFloat(computed.top); 439 440 if (isNaN(baseTop)) { 441 baseTop = 0; 442 } 443 444 updateHeaderOffset(); 445 } 446 447 448 function updateHeaderOffset() { 449 450 if (!overlayHeader) { 451 return; 452 } 453 454 var bannerHeight = 455 banner.getBoundingClientRect().height; 456 457 overlayHeader.style.setProperty( 458 'top', 459 (baseTop + bannerHeight) + 'px', 460 'important' 461 ); 462 463 } 464 465 466 function restoreHeader() { 467 468 if (!overlayHeader) { 469 return; 470 } 471 472 if (originalTop) { 473 474 overlayHeader.style.setProperty( 475 'top', 476 originalTop, 477 originalTopPriority 478 ); 479 480 } else { 481 482 overlayHeader.style.removeProperty('top'); 483 484 } 485 486 } 487 488 489 /* 490 * Run immediately and again shortly afterward. 491 * Some themes don't apply their fixed-header 492 * classes until their own JavaScript initializes. 493 */ 494 495 requestAnimationFrame(function () { 496 setupHeaderOffset(); 497 }); 498 499 setTimeout(function () { 500 setupHeaderOffset(); 501 updateHeaderOffset(); 502 }, 250); 503 504 setTimeout(function () { 505 setupHeaderOffset(); 506 updateHeaderOffset(); 507 }, 1000); 508 509 510 /* 511 * Recalculate if browser width changes. 512 */ 513 514 window.addEventListener( 515 'resize', 516 function () { 517 updateHeaderOffset(); 518 } 519 ); 520 521 522 /* 523 * ResizeObserver handles banner height changes, 524 * particularly desktop vs mobile. 525 */ 526 527 if ('ResizeObserver' in window) { 528 529 var resizeObserver = 530 new ResizeObserver(function () { 531 updateHeaderOffset(); 532 }); 533 534 resizeObserver.observe(banner); 535 536 } 537 538 539 /* ------------------------------ 540 CLOSE BUTTON 541 ------------------------------ */ 542 543 var closeButton = 544 banner.querySelector( 545 '.apex-gpc-notice-close' 546 ); 547 548 if (closeButton) { 549 550 closeButton.addEventListener( 551 'click', 552 function () { 553 554 restoreHeader(); 555 556 banner.remove(); 557 558 } 559 ); 560 561 } 562 563 564 console.log( 565 '[Apex Privacy] GPC detected. Notice displayed.' 566 ); 567 568 } 569 570 571 /* ------------------------------ 572 INITIALIZE 573 ------------------------------ */ 574 575 if (document.readyState === 'loading') { 576 577 document.addEventListener( 578 'DOMContentLoaded', 579 showGPCBanner 580 ); 581 582 } else { 583 584 showGPCBanner(); 585 586 } 587 588})(); 589</script>
589 590 <style> 591 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload), 592 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * { 593 background-image: none !important; 594 } 595 @media screen and (max-height: 1024px) { 596 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload), 597 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * { 598 background-image: none !important; 599 } 600 } 601 @media screen and (max-height: 640px) { 602 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload), 603 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * { 604 background-image: none !important; 605 } 606 } 607 </style> 608 <style media="all" id="siteorigin-panels-layouts-head">/* Layout 242 */ #pgc-242-0-0 , #pgc-242-2-0 , #pgc-242-3-0 , #pgc-242-4-0 { width:100%;width:calc(100% - ( 0 * 30px ) ) } #pg-242-0 , #pg-242-2 , #pg-242-3 , #pg-242-4 , #pl-242 .so-panel { margin-bottom:30px } #pgc-242-1-0 , #pgc-242-1-1 , #pgc-242-1-2 , #pgc-242-1-3 { width:25%;width:calc(25% - ( 0.75 * 30px ) ) } #pg-242-1 , #pg-242-5 , #pl-242 .so-panel:last-of-type { margin-bottom:0px } #pgc-242-5-0 , #pgc-242-5-1 , #pgc-242-6-0 , #pgc-242-6-1 { width:50%;width:calc(50% - ( 0.5 * 30px ) ) } #pg-242-0> .panel-row-style { background-position:center center;background-size:cover } #pg-242-0.panel-has-style > .panel-row-style, #pg-242-0.panel-no-style , #pg-242-1.panel-has-style > .panel-row-style, #pg-242-1.panel-no-style , #pg-242-2.panel-has-style > .panel-row-style, #pg-242-2.panel-no-style , #pg-242-3.panel-has-style > .panel-row-style, #pg-242-3.panel-no-style , #pg-242-4.panel-has-style > .panel-row-style, #pg-242-4.panel-no-style , #pg-242-5.panel-has-style > .panel-row-style, #pg-242-5.panel-no-style , #pg-242-6.panel-has-style > .panel-row-style, #pg-242-6.panel-no-style { -webkit-align-items:flex-start;align-items:flex-start } #panel-242-0-0-0> .panel-widget-style { padding:0px 0px 0px 0px } #panel-242-1-1-0> .panel-widget-style { padding:10px 0px 10px 0px } #pg-242-3> .panel-row-style { background-color:#fafafa } @media (max-width:730px){ #pg-242-0.panel-no-style, #pg-242-0.panel-has-style > .panel-row-style, #pg-242-0 , #pg-242-1.panel-no-style, #pg-242-1.panel-has-style > .panel-row-style, #pg-242-1 , #pg-242-2.panel-no-style, #pg-242-2.panel-has-style > .panel-row-style, #pg-242-2 , #pg-242-3.panel-no-style, #pg-242-3.panel-has-style > .panel-row-style, #pg-242-3 , #pg-242-4.panel-no-style, #pg-242-4.panel-has-style > .panel-row-style, #pg-242-4 , #pg-242-5.panel-no-style, #pg-242-5.panel-has-style > .panel-row-style, #pg-242-5 , #pg-242-6.panel-no-style, #pg-242-6.panel-has-style > .panel-row-style, #pg-242-6 { -webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column } #pg-242-0 > .panel-grid-cell , #pg-242-0 > .panel-row-style > .panel-grid-cell , #pg-242-1 > .panel-grid-cell , #pg-242-1 > .panel-row-style > .panel-grid-cell , #pg-242-2 > .panel-grid-cell , #pg-242-2 > .panel-row-style > .panel-grid-cell , #pg-242-3 > .panel-grid-cell , #pg-242-3 > .panel-row-style > .panel-grid-cell , #pg-242-4 > .panel-grid-cell , #pg-242-4 > .panel-row-style > .panel-grid-cell , #pg-242-5 > .panel-grid-cell , #pg-242-5 > .panel-row-style > .panel-grid-cell , #pg-242-6 > .panel-grid-cell , #pg-242-6 > .panel-row-style > .panel-grid-cell { width:100%;margin-right:0 } #pgc-242-1-0 , #pgc-242-1-1 , #pgc-242-1-2 , #pgc-242-5-0 , #pgc-242-6-0 { margin-bottom:30px } #pl-242 .panel-grid-cell { padding:0 } #pg-242-0 .panel-grid-cell-empty , #pg-242-1 .panel-grid-cell-empty , #pg-242-2 .panel-grid-cell-empty , #pg-242-3 .panel-grid-cell-empty , #pg-242-4 .panel-grid-cell-empty , #pg-242-5 .panel-grid-cell-empty , #pg-242-6 .panel-grid-cell-empty { display:none } #pl-242 .panel-grid .panel-grid-cell-mobile-last { margin-bottom:0px } } </style><!-- Google Analytics Tracking by Google Analyticator 6.5.7 -->
609<script type="text/javascript"> 610 var analyticsFileTypes = []; 611 var analyticsSnippet = 'disabled'; 612 var analyticsEventTracking = 'enabled'; 613</script>
vendor: 1 bytes, line 613
613
614<script type="text/javascript">
vendor: 333 bytes, lines 614-619
614 615 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 616 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 617 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 618 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 619 ga('create', '
619UA-26810748-1
vendor: 39 bytes, lines 619-621
619', 'auto'); 620 621 ga('send', 'pageview');
622</script>
622 623<style id="wp-custom-css"> 624.page-id-6428 h5, .page-id-6428 h5 strong{ 625 font-size:20px; 626 font-weight:500; 627} 628 629.ideadiff h2.elementor-heading-title.elementor-size-default {text-align:center;margin:0 auto; 630} 631 632.page-id-7109 .site-inner { 633 padding-top: 195px; 634} 635</style> 636<noscript><style id="rocket-lazyload-nojs-css">.rll-youtube-player, [data-lazy-src]{display:none !important;}</style></noscript><style id="rocket-lazyrender-inline-css">[data-wpr-lazyrender] {content-visibility: auto;}</style><meta name="generator" content="WP Rocket 3.23.3.3" data-wpr-features="wpr_lazyload_images wpr_lazyload_iframes wpr_preconnect_external_domains wpr_automatic_lazy_rendering wpr_oci wpr_image_dimensions wpr_minify_css wpr_cdn wpr_desktop" /></head> 637<body data-cmplz=1 class="home wp-singular page-template page-template-page_front page-template-page_front-php page page-id-242 wp-theme-genesis wp-child-theme-ideal siteorigin-panels siteorigin-panels-before-js siteorigin-panels-home full-width-content genesis-breadcrumbs-hidden genesis-footer-widgets-visible elementor-default elementor-kit-6416 elementor-page elementor-page-242"><div class="site-container"><div class="blue-header"> 638 <div class="wrap"><section id="text-10" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><p>CA License #348810 <span class="coupons-list">⢠$99 Water Heater Flush – Keep your water heater running efficiently today!</span></p> 639<p><span class="see-couponsbtn"><a href="https://idealservice.com/coupons/">$ See All Coupons</a></span></p> 640</div> 641 </div></section> 642</div> 643 </div><header class="site-header"><div class="wrap"><div class="title-area"><div id="logo"><a href="https://idealservice.com"><img width="272" height="65" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20272%2065'%3E%3C/svg%3E" alt="logo" data-lazy-src="https://idealservice.com/wp-content/themes/ideal/images/logo.svg"/><noscript><img width="272" height="65" src="https://idealservice.com/wp-content/themes/ideal/images/logo.svg" alt="logo"/></noscript></a></div></div><div class="widget-area header-widget-area"><section id="text-11" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><p><span class="call-heading">Need help? Call us!</span><br /> 644<a href="tel:6193787152">(619) 378-7152</a></p> 645</div> 646 </div></section> 647<section id="nav_menu-2" class="widget widget_nav_menu"><div class="widget-wrap"><nav class="nav-header"><ul id="menu-main-navigation" class="menu genesis-nav-menu"><li id="menu-item-660" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-660"><a href="https://idealservice.com/plumbing/"><span >Plumbing</span></a> 648<ul class="sub-menu"> 649 <li id="menu-item-4962" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4962"><a href="https://idealservice.com/plumbing/drains/"><span >Drains</span></a></li> 650 <li id="menu-item-4966" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4966"><a href="https://idealservice.com/plumbing/water-heaters/"><span >Water Heaters</span></a></li> 651 <li id="menu-item-4968" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4968"><a href="https://idealservice.com/plumbing/slab-leaks/"><span >Slab Leaks</span></a></li> 652 <li id="menu-item-4970" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4970"><a href="https://idealservice.com/plumbing/gas-leaks/"><span >Gas Leaks</span></a></li> 653 <li id="menu-item-4973" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4973"><a href="https://idealservice.com/plumbing/plumbing-fixtures/"><span >Plumbing Fixtures</span></a></li> 654 <li id="menu-item-4974" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4974"><a href="https://idealservice.com/plumbing/water-treatment/"><span >Water Treatment</span></a></li> 655 <li id="menu-item-4977" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4977"><a href="https://idealservice.com/plumbing/more-plumbing-services/"><span >More Plumbing Services</span></a></li> 656</ul> 657</li> 658<li id="menu-item-662" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-662"><a href="https://idealservice.com/heating-and-air/"><span >Heating and Air</span></a> 659<ul class="sub-menu"> 660 <li id="menu-item-4981" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4981"><a href="https://idealservice.com/heating-and-air/heating/"><span >Heating</span></a></li> 661 <li id="menu-item-4984" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4984"><a href="https://idealservice.com/heating-and-air/air-conditioning/"><span >Air Conditioning</span></a></li> 662 <li id="menu-item-4988" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4988"><a href="https://idealservice.com/heating-and-air/ductless-cooling-heating/"><span >Ductless Cooling & Heating</span></a></li> 663 <li id="menu-item-6472" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6472"><a href="https://idealservice.com/ductless-mitsubishi-hvac-in-san-diego-ca/"><span >Ductless Mitsubishi HVAC</span></a></li> 664 <li id="menu-item-4991" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4991"><a href="https://idealservice.com/heating-and-air/service-repair/"><span >Service/ Repair</span></a></li> 665 <li id="menu-item-4994" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4994"><a href="https://idealservice.com/heating-and-air/air-conditioning-installation/"><span >Air Conditioning Installation</span></a></li> 666 <li id="menu-item-4995" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4995"><a href="https://idealservice.com/heating-and-air/heating-system-installation/"><span >Heating System Installation</span></a></li> 667 <li id="menu-item-4998" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4998"><a href="https://idealservice.com/heating-and-air/heating-air-rebates/"><span >Heating & Air Rebates</span></a></li> 668 <li id="menu-item-5003" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5003"><a href="https://idealservice.com/heating-and-air/whole-house-fans/"><span >Whole House Fans</span></a></li> 669</ul> 670</li> 671<li id="menu-item-663" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-663"><a href="https://idealservice.com/electrical/"><span >Electrical</span></a> 672<ul class="sub-menu"> 673 <li id="menu-item-5008" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5008"><a href="https://idealservice.com/electrical/troubleshooting-diagnostic/"><span >Troubleshooting/Diagnostic</span></a></li> 674 <li id="menu-item-5012" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5012"><a href="https://idealservice.com/electrical/installation/"><span >Installation</span></a></li> 675 <li id="menu-item-5015" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5015"><a href="https://idealservice.com/electrical/electrical-panel-upgrades/"><span >Electrical Panel Upgrades</span></a></li> 676 <li id="menu-item-5018" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5018"><a href="https://idealservice.com/electrical/lighting/"><span >Lighting</span></a></li> 677</ul> 678</li> 679<li id="menu-item-665" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-665"><a href="https://idealservice.com/kitchen-bath-remodel/"><span >Remodel</span></a> 680<ul class="sub-menu"> 681 <li id="menu-item-5250" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5250"><a href="https://idealservice.com/kitchen-remodel/"><span >Kitchen Remodel</span></a></li> 682 <li id="menu-item-5249" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5249"><a href="https://idealservice.com/bathroom-remodel/"><span >Bathroom Remodel</span></a></li> 683 <li id="menu-item-5253" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5253"><a href="https://idealservice.com/tub-to-shower-conversions/"><span >Tub to Shower Conversions</span></a></li> 684 <li id="menu-item-5255" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5255"><a href="https://idealservice.com/bathroom-safety/"><span >Bathroom Safety</span></a></li> 685</ul> 686</li> 687<li id="menu-item-4880" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-4880"><a href="https://idealservice.com/about-ideal/"><span >About Ideal</span></a> 688<ul class="sub-menu"> 689 <li id="menu-item-5258" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5258"><a href="https://idealservice.com/reviews-testimonials/"><span >Reviews & Testimonials</span></a></li> 690 <li id="menu-item-5269" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5269"><a href="https://idealservice.com/careers/"><span >Careers</span></a></li> 691 <li id="menu-item-5271" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5271"><a href="https://idealservice.com/blog/"><span >Blog</span></a></li> 692 <li id="menu-item-5491" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5491"><a href="https://idealservice.com/gallery/"><span >Photo Galleries</span></a></li> 693</ul> 694</li> 695<li id="menu-item-4879" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4879"><a href="https://idealservice.com/faqs/"><span >FAQs</span></a></li> 696<li id="menu-item-673" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-673"><a href="https://idealservice.com/contact-us/"><span >Contact</span></a></li> 697</ul></nav></div></section> 698</div></div></header><div id="slider"><div class="wrap"></div></div><div class="site-inner"><div class="wrap"><div class="content-sidebar-wrap"><main class="content"><article class="post-242 page type-page status-publish entry" aria-label="Home"><header class="entry-header"><h1 class="entry-title">Home</h1> 699</header><div class="entry-content"><div class="at-above-post-homepage addthis_tool" data-url="https://idealservice.com/"></div><div id="pl-242" class="panel-layout" ><div id="pg-242-0" class="panel-grid panel-has-style" ><div class="banner siteorigin-panels-stretch lazy rocket-lazyload panel-row-style panel-row-style-for-242-0" data-stretch-type="full" data-bg="https://idealservice.com/wp-content/uploads/2018/04/banner-new.jpg" ><div id="pgc-242-0-0" class="panel-grid-cell" ><div id="panel-242-0-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child widgetopts-SO" data-index="0" ><div class="panel-widget-style panel-widget-style-for-242-0-0-0" ><div 700 701 class="so-widget-sow-editor so-widget-sow-editor-base" 702 703 > 704<div class="siteorigin-widget-tinymce textwidget"> 705 <div class="banner-text"> 706<h1>Your Trusted Choice</h1> 707<h3>for Plumbing, Heating, Air Conditioning, & Electrical</h3> 708<h5>Serving your San Diego Community since 1960</h5> 709<p><img fetchpriority="high" fetchpriority="high" decoding="async" class="alignnone size-medium wp-image-7099" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20300%20252'%3E%3C/svg%3E" alt="" width="300" height="252" data-lazy-srcset="https://idealservice.com/wp-content/uploads/2026/02/Sherlock-Total-Confidence-2-e1770392690807-300x252.png 300w, https://idealservice.com/wp-content/uploads/2026/02/Sherlock-Total-Confidence-2-e1770392690807-768x645.png 768w, https://idealservice.com/wp-content/uploads/2026/02/Sherlock-Total-Confidence-2-e1770392690807.png 880w" data-lazy-sizes="(max-width: 300px) 100v
709w, 300px" data-lazy-src="https://idealservice.com/wp-content/uploads/2026/02/Sherlock-Total-Confidence-2-e1770392690807-300x252.png" /><noscript><img fetchpriority="high" fetchpriority="high" decoding="async" class="alignnone size-medium wp-image-7099" src="https://idealservice.com/wp-content/uploads/2026/02/Sherlock-Total-Confidence-2-e1770392690807-300x252.png" alt="" width="300" height="252" srcset="https://idealservice.com/wp-content/uploads/2026/02/Sherlock-Total-Confidence-2-e1770392690807-300x252.png 300w, https://idealservice.com/wp-content/uploads/2026/02/Sherlock-Total-Confidence-2-e1770392690807-768x645.png 768w, https://idealservice.com/wp-content/uploads/2026/02/Sherlock-Total-Confidence-2-e1770392690807.png 880w" sizes="(max-width: 300px) 100vw, 300px" /></noscript></p> 710</div> 711<div class="form-box"> 712<h2>We Can Help Today</h2> 713<h4><span class="call-text">Call Anytime</span> <a href="tel:6193787152">(619) 378-7152</a></h4> 714<p><strong>or</strong><br /> 715 716 <div class='gf_browser_chrome gform_wrapper gform_legacy_markup_wrapper gform-theme--no-framework' data-form-theme='legacy' data-form-index='0' id='gform_wrapper_1' ><div id='gf_1' class='gform_anchor' tabindex='-1'></div> 717 <div class='gform_heading'> 718 <p class='gform_description'></p> 719 </div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_1' id='gform_1' action='/#gf_1' data-formid='1' novalidate> 720 <div class='gform-body gform_body'><ul id='gform_fields_1' class='gform_fields top_label form_sublabel_below description_below validation_below'><li id="field_1_7" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_1_7'><span class='gform-field-label__text'>Name</span></label><div class='ginput_container'><input name='input_7' id='input_1_7' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_1_7'>This field is for validation purposes and should be left unchanged.</div></li><li id="field_1_1" class="gfield gfield--type-text gf_left_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_1_1'><span class='gform-field-label__text'>First Name</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_1_1' type='text' value='' class='medium' tabindex='49' aria-required="true" aria-invalid="false" /></div></li><li id="field_1_2" class="gfield gfield--type-text gf_right_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_1_2'><span class='gform-field-label__text'>Last Name</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_2' id='input_1_2' type='text' value='' class='medium' tabindex='50' aria-required="true" aria-invalid="false" /></div></li><li id="field_1_3" class="gfield gfield--type-phone gfield--phone-format-standard gf_left_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_1_3'><span class='gform-field-label__text'>Phone</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_phone'><input name='input_3' id='input_1_3' type='tel' value='' class='medium' tabindex='51' placeholder='(999) 999-9999' aria-required="true" aria-invalid="false" data-mask="(999) 999-9999" /></div></li><li id="field_1_4" class="gfield gfield--type-email gf_right_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_1_4'><span class='gform-field-label__text'>Email</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> 721 <input name='input_4' id='input_1_4' type='email' value='' class='medium' tabindex='52' aria-required="true" aria-invalid="false" /> 722 </div></li><li id="field_1_5" class="gfield gfield--type-textarea gfield_contains_required field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_1_5'><span class='gform-field-label__text'>How May We Help You?</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_textarea' data-text-counter-max='200' data-text-counter-template='{current} of {max} max characters'><textarea name='input_5' id='input_1_5' class='textarea medium' tabindex='53' aria-describedby="gfield_description_1_5" maxlength='200' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div><div class='gfield_description' id='gfield_description_1_5'><span class="required-field">*</span>Required field</div></li><li id="field_1_6" class="gfield gfield--type-captcha field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label screen-reader-text' for='input_1_6'><span class='gform-field-label__text'></span></label><div id='input_1_6' class='ginput_container ginput_recaptcha' data-sitekey='6LfNwbMUAAAAAKd_VX131nP_oktGtSwe9xMtiVsn' data-theme='light' data-tabindex='54' data-badge=''></div></li></ul></div> 723 <div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_1' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' tabindex='55'>Send us a message</button> <input type='hidden' name='gform_ajax' value='form_id=1&title=&description=1&tabindex=49&theme=legacy&styles=[]&hash=20ae19b65b9cf858804bef2035807b82' /> 724 <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_1' value='iframe' /> 725 <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_1' id='gform_theme_1' value='legacy' /> 726 <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_1' id='gform_style_settings_1' value='[]' /> 727 <input type='hidden' class='gform_hidden' name='is_submit_1' value='1' /> 728 <input type='hidden' class='gform_hidden' name='gform_submit' value='1' /> 729 730 <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='USD' value='KbmZibsbvtP69tQtuuHBVF530MEZNmbN8xop/lNYbsdYyNH/utjQ/B8CWtfurDoL5SNE50ZnFVjk1+Yl5E7yGrXy4f7jVnKvZRw3Qz9Ht/VZNgM=' /> 731 <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> 732 <input type='hidden' class='gform_hidden' name='state_1' value='WyJ7XCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjc5M2RkZDFkMjI2MjdkZTAzODI1OTU2Y2JkNzk2MzhiXCIsXCIyZWYxNmM4YTU0NThhMzM3NjU1YmY4OWYzNmM5YTg3Y1wiLFwiZGQ1NmY5Mzg1ZWU1ZWM5MDM5MmFmMjk1MDJlYTkzNThcIl0sXCJnZm9ybV90aGVtZVwiOlwiMWU5Njk3NTFjMTIxOTkwNThjMDVlOWNhMjc0ZmI3YzhcIixcImdmb3JtX3N0eWxlX3NldHRpbmdzXCI6XCI4MzE1MTQ0NzJjMzU3MTgyZWYxMTkzMzYwZTBhYWFjNVwiLFwiZm9ybV9pZFwiOlwiYWMwNGRjNzBhMWExZDhmNWQwOGY4NDM1YmM2OTg5MjRcIixcInVybFwiOlwiZjQ0M2YzZmYwNjNlOGM4NTFiMzkyMDQwZjdlZDE4YzlcIixcInN0YXRlX3RpbWVzdGFtcFwiOlwiM2ZmNDg0MjI2NzJmYzYxZDVmYjY1M2RlN2Y1YzdhN2RcIn0iLCIyOGQyYTg2ZTZkZmZlYjQ0YTcyZTEwYTA5MjE0NTA5YSIsMTc5MDc3OTcwNl0=' /> 733 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_1' id='gform_target_page_number_1' value='0' /> 734 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_1' id='gform_source_page_number_1' value='1' /> 735 <input type='hidden' name='gform_field_values' value='' /> 736 737 </div> 738 <p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_2" name="ak_js" value="140"/>
738<script> 739document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() ); 740</script>
740 741</p></form> 742 </div> 743 <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_1' id='gform_ajax_frame_1' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> 744
744<script> 745gform.initializeOnLoaded( function() {jQuery('#gform_ajax_frame_1').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_1');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_1').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_1').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_1').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_1').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_1').offset().top - mt); }, 50 );var current_page = jQuery('#gform_source_page_number_1').val();jQuery(document).trigger('gform_page_loaded', [1, current_page]);window['gf_submitting_1'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_1').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_1').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [1]);window['gf_submitting_1'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_1').text());}else{jQuery('#gform_1').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "1", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_1" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_1"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_1" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 1, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} ); 746</script>
746 747</p> 748</div> 749</div> 750</div></div></div></div></div></div><div id="pg-242-1" class="panel-grid panel-has-style" ><div class="logos-area panel-row-style panel-row-style-for-242-1" ><div id="pgc-242-1-0" class="panel-grid-cell" ><div id="panel-242-1-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="1" ><div 751 752 class="so-widget-sow-editor so-widget-sow-editor-base" 753 754 > 755<div class="siteorigin-widget-tinymce textwidget"> 756 <p><img decoding="async" class="wp-image-6959 size-medium aligncenter" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20300%20221'%3E%3C/svg%3E" alt="2023 San Diego BBB Torch Award Winner" width="300" height="221" data-lazy-srcset="https://idealservice.com/wp-content/uploads/2023/09/Cropped-300x221.png 300w, https://idealservice.com/wp-content/uploads/2023/09/Cropped-1024x754.png 1024w, https://idealservice.com/wp-content/uploads/2023/09/Cropped-768x565.png 768w, https://idealservice.com/wp-content/uploads/2023/09/Cropped-1536x1130.png 1536w, https://idealservice.com/wp-content/uploads/2023/09/Cropped-2048x1507.png 2048w" data-lazy-sizes="(max-width: 300px) 100vw, 300px" data-lazy-src="https://idealservice.com/wp-content/uploads/2023/09/Cropped-300x221.png" /><noscript><img decoding="async" class="wp-image-6959 size-medium aligncenter" src="https://idealservice.com/wp-content/uploads/2023/09/Cropped-300x221.png" alt="2023 San Diego BBB Torch Award Winner" width="300" height="221" srcset="https://idealservice.com/wp-content/uploads/2023/09/Cropped-300x221.png 300w, https://idealservice.com/wp-content/uploads/2023/09/Cropped-1024x754.png 1024w, https://idealservice.com/wp-content/uploads/2023/09/Cropped-768x565.png 768w, https://idealservice.com/wp-content/uploads/2023/09/Cropped-1536x1130.png 1536w, https://idealservice.com/wp-content/uploads/2023/09/Cropped-2048x1507.png 2048w" sizes="(max-width: 300px) 100vw, 300px" /></noscript></p> 757</div> 758</div></div></div><div id="pgc-242-1-1" class="panel-grid-cell" ><div id="panel-242-1-1-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="2" ><div class="panel-widget-style panel-widget-style-for-242-1-1-0" ><div 759 760 class="so-widget-sow-editor so-widget-sow-editor-base" 761 762 > 763<div class="siteorigin-widget-tinymce textwidget"> 764 <p><img decoding="async" class="aligncenter wp-image-6960 size-medium" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20300%20164'%3E%3C/svg%3E" alt="San Diego's Favorite 2023" width="300" height="164" data-lazy-srcset="https://idealservice.com/wp-content/uploads/2023/09/SD_Favorite_2023_WinnersOnly-300x164.jpg 300w, https://idealservice.com/wp-content/uploads/2023/09/SD_Favorite_2023_WinnersOnly.jpg 488w" data-lazy-sizes="(max-width: 300px) 100vw, 300px" data-lazy-src="https://idealservice.com/wp-content/uploads/2023/09/SD_Favorite_2023_WinnersOnly-300x164.jpg" /><noscript><img decoding="async" class="aligncenter wp-image-6960 size-medium" src="https://idealservice.com/wp-content/uploads/2023/09/SD_Favorite_2023_WinnersOnly-300x164.jpg" alt="San Diego's Favorite 2023" width="300" height="164" srcset="https://idealservice.com/wp-content/uploads/2023/09/SD_Favorite_2023_WinnersOnly-300x164.jpg 300w, https://idealservice.com/wp-content/uploads/2023/09/SD_Favorite_2023_WinnersOnly.jpg 488w" sizes="(max-width: 300px) 100vw, 300px" /></noscript></p> 765</div> 766</div></div></div></div><div id="pgc-242-1-2" class="panel-grid-cell" ><div id="panel-242-1-2-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="3" ><div 767 768 class="so-widget-sow-editor so-widget-sow-editor-base" 769 770 > 771<div class="siteorigin-widget-tinymce textwidget"> 772 <p><img decoding="async" class="aligncenter wp-image-6962 size-full" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20171%20148'%3E%3C/svg%3E" alt="PHCC San Diego" width="171" height="148" data-lazy-src="https://idealservice.com/wp-content/uploads/2023/09/logo-7-1.png"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter wp-image-6962 size-full" src="https://idealservice.com/wp-content/uploads/2023/09/logo-7-1.png" alt="PHCC San Diego" width="171" height="148"></noscript></p> 773</div> 774</div></div></div><div id="pgc-242-1-3" class="panel-grid-cell" ><div id="panel-242-1-3-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="4" ><div 775 776 class="so-widget-sow-editor so-widget-sow-editor-base" 777 778 > 779<div class="siteorigin-widget-tinymce textwidget"> 780 <p><img decoding="async" class="aligncenter wp-image-6956" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20100%20100'%3E%3C/svg%3E" alt="2023 Nextdoor Neighborhood Favorite" width="100" height="100" data-lazy-srcset="https://idealservice.com/wp-content/uploads/2023/09/neighborhood-faves-sticker-bleed-5x5-1-150x150.png 150w, https://idealservice.com/wp-content/uploads/2023/09/neighborhood-faves-sticker-bleed-5x5-1-300x300.png 300w, https://idealservice.com/wp-content/uploads/2023/09/neighborhood-faves-sticker-bleed-5x5-1.png 716w" data-lazy-sizes="auto, (max-width: 100px) 100v
780w, 100px" data-lazy-src="https://idealservice.com/wp-content/uploads/2023/09/neighborhood-faves-sticker-bleed-5x5-1-150x150.png" /><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter wp-image-6956" src="https://idealservice.com/wp-content/uploads/2023/09/neighborhood-faves-sticker-bleed-5x5-1-150x150.png" alt="2023 Nextdoor Neighborhood Favorite" width="100" height="100" srcset="https://idealservice.com/wp-content/uploads/2023/09/neighborhood-faves-sticker-bleed-5x5-1-150x150.png 150w, https://idealservice.com/wp-content/uploads/2023/09/neighborhood-faves-sticker-bleed-5x5-1-300x300.png 300w, https://idealservice.com/wp-content/uploads/2023/09/neighborhood-faves-sticker-bleed-5x5-1.png 716w" sizes="auto, (max-width: 100px) 100vw, 100px" /></noscript></p> 781</div> 782</div></div></div></div></div><div id="pg-242-2" class="panel-grid panel-has-style" ><div class="service-area panel-row-style panel-row-style-for-242-2" ><div id="pgc-242-2-0" class="panel-grid-cell" ><div id="panel-242-2-0-0" class="so-panel widget widget_siteorigin-panels-builder panel-first-child panel-last-child" data-index="5" ><div id="pl-w6abd213a3c3ca" class="panel-layout" ><div id="pg-w6abd213a3c3ca-0" class="panel-grid panel-no-style" ><div id="pgc-w6abd213a3c3ca-0-0" class="panel-grid-cell" ><div id="panel-w6abd213a3c3ca-0-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="0" ><div 783 784 class="so-widget-sow-editor so-widget-sow-editor-base" 785 786 > 787<div class="siteorigin-widget-tinymce textwidget"> 788 <h2 style="text-align: center;">Our Services</h2> 789<h5 style="text-align: center;">Experienced, Prompt and Reliable</h5> 790</div> 791</div></div></div></div><div id="pg-w6abd213a3c3ca-1" class="panel-grid panel-no-style" ><div id="pgc-w6abd213a3c3ca-1-0" class="panel-grid-cell" ><div id="panel-w6abd213a3c3ca-1-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="1" ><div 792 793 class="so-widget-sow-editor so-widget-sow-editor-base" 794 795 > 796<div class="siteorigin-widget-tinymce textwidget"> 797 <p><a href="https://idealservice.com/plumbing/"><img decoding="async" class="aligncenter size-full wp-image-4889" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2065%2054'%3E%3C/svg%3E" alt="" width="65" height="54" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/pluming-icon.png"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter size-full wp-image-4889" src="https://idealservice.com/wp-content/uploads/2017/12/pluming-icon.png" alt="" width="65" height="54"></noscript></a></p> 798<h4 style="text-align: center;">Plumbing</h4> 799<p> </p> 800</div> 801</div></div></div><div id="pgc-w6abd213a3c3ca-1-1" class="panel-grid-cell" ><div id="panel-w6abd213a3c3ca-1-1-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="2" ><div 802 803 class="so-widget-sow-editor so-widget-sow-editor-base" 804 805 > 806<div class="siteorigin-widget-tinymce textwidget"> 807 <p><a href="https://idealservice.com/heating-and-air/"><img decoding="async" class="aligncenter size-full wp-image-4890" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2054%2060'%3E%3C/svg%3E" alt="" width="54" height="60" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/heating-icon.png"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter size-full wp-image-4890" src="https://idealservice.com/wp-content/uploads/2017/12/heating-icon.png" alt="" width="54" height="60"></noscript></a></p> 808<h4 style="text-align: center;">Heating &<br />Air Conditioning</h4> 809<p> </p> 810</div> 811</div></div></div><div id="pgc-w6abd213a3c3ca-1-2" class="panel-grid-cell" ><div id="panel-w6abd213a3c3ca-1-2-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="3" ><div 812 813 class="so-widget-sow-editor so-widget-sow-editor-base" 814 815 > 816<div class="siteorigin-widget-tinymce textwidget"> 817 <p><a href="https://idealservice.com/electrical/"><img decoding="async" class="aligncenter size-full wp-image-4891" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2045%2071'%3E%3C/svg%3E" alt="" width="45" height="71" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/electrical-icon.png"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter size-full wp-image-4891" src="https://idealservice.com/wp-content/uploads/2017/12/electrical-icon.png" alt="" width="45" height="71"></noscript></a></p> 818<h4 style="text-align: center;">Electrical</h4> 819<p> </p> 820</div> 821</div></div></div><div id="pgc-w6abd213a3c3ca-1-3" class="panel-grid-cell" ><div id="panel-w6abd213a3c3ca-1-3-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="4" ><div 822 823 class="so-widget-sow-editor so-widget-sow-editor-base" 824 825 > 826<div class="siteorigin-widget-tinymce textwidget"> 827 <p><a href="https://idealservice.com/kitchen-bath-remodel/"><img decoding="async" class="aligncenter size-full wp-image-4892" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2066%2067'%3E%3C/svg%3E" alt="" width="66" height="67" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/remodel-icon.png"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter size-full wp-image-4892" src="https://idealservice.com/wp-content/uploads/2017/12/remodel-icon.png" alt="" width="66" height="67"></noscript></a></p> 828<h4 style="text-align: center;">Remodel</h4> 829<p> </p> 830</div> 831</div></div></div></div></div></div></div></div></div><div id="pg-242-3" class="panel-grid panel-has-style" ><div class="advantage-area siteorigin-panels-stretch panel-row-style panel-row-style-for-242-3" data-stretch-type="full" ><div id="pgc-242-3-0" class="panel-grid-cell" ><div id="panel-242-3-0-0" class="so-panel widget widget_siteorigin-panels-builder panel-first-child panel-last-child" data-index="6" ><div id="pl-w6abd213a3c979" class="panel-layout" ><div id="pg-w6abd213a3c979-0" class="panel-grid panel-no-style" ><div id="pgc-w6abd213a3c979-0-0" class="panel-grid-cell" ><div id="panel-w6abd213a3c979-0-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="0" ><div 832 833 class="so-widget-sow-editor so-widget-sow-editor-base" 834 835 > 836<div class="siteorigin-widget-tinymce textwidget"> 837 <h2 style="text-align: center;">The Ideal Advantage</h2> 838</div> 839</div></div></div></div><div id="pg-w6abd213a3c979-1" class="panel-grid panel-no-style" ><div id="pgc-w6abd213a3c979-1-0" class="panel-grid-cell" ><div id="panel-w6abd213a3c979-1-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="1" ><div 840 841 class="so-widget-sow-editor so-widget-sow-editor-base" 842 843 > 844<div class="siteorigin-widget-tinymce textwidget"> 845 <p><img decoding="async" class="aligncenter wp-image-4893 size-full" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20215%20176'%3E%3C/svg%3E" alt="kitchen remodel with white cabinets and white countertop" width="215" height="176" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/ideal-img1.jpg"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter wp-image-4893 size-full" src="https://idealservice.com/wp-content/uploads/2017/12/ideal-img1.jpg" alt="kitchen remodel with white cabinets and white countertop" width="215" height="176"></noscript></p> 846<h6>The âIdealâ Standard</h6> 847<p>We deliver the highest standards of workmanship, quality, and service.</p> 848</div> 849</div></div></div><div id="pgc-w6abd213a3c979-1-1" class="panel-grid-cell" ><div id="panel-w6abd213a3c979-1-1-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="2" ><div 850 851 class="so-widget-sow-editor so-widget-sow-editor-base" 852 853 > 854<div class="siteorigin-widget-tinymce textwidget"> 855 <p><img decoding="async" class="aligncenter wp-image-5564 size-full" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20215%20176'%3E%3C/svg%3E" alt="San Diego Plumber" width="215" height="176" data-lazy-src="https://idealservice.com/wp-content/uploads/2018/04/Expert-Technicians-215-x-176.jpg"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter wp-image-5564 size-full" src="https://idealservice.com/wp-content/uploads/2018/04/Expert-Technicians-215-x-176.jpg" alt="San Diego Plumber" width="215" height="176"></noscript></p> 856<h6>Expert Technicians</h6> 857<p>Our San Diego Plumbing Contractors<br />have the best tools, skills, and expertise.</p> 858</div> 859</div></div></div><div id="pgc-w6abd213a3c979-1-2" class="panel-grid-cell" ><div id="panel-w6abd213a3c979-1-2-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="3" ><div 860 861 class="so-widget-sow-editor so-widget-sow-editor-base" 862 863 > 864<div class="siteorigin-widget-tinymce textwidget"> 865 <p><img decoding="async" class="aligncenter wp-image-4895 size-full" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20214%20176'%3E%3C/svg%3E" alt="San Diego, California" width="214" height="176" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/ideal-img3.jpg"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter wp-image-4895 size-full" src="https://idealservice.com/wp-content/uploads/2017/12/ideal-img3.jpg" alt="San Diego, California" width="214" height="176"></noscript></p> 866<h6>Serving San Diego<br />for 60 years</h6> 867<p>Your go-to San Diego Plumbing Company since 1960!</p> 868</div> 869</div></div></div></div><div id="pg-w6abd213a3c979-2" class="panel-grid panel-no-style" ><div id="pgc-w6abd213a3c979-2-0" class="panel-grid-cell" ><div id="panel-w6abd213a3c979-2-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="4" ><div 870 871 class="so-widget-sow-editor so-widget-sow-editor-base" 872 873 > 874<div class="siteorigin-widget-tinymce textwidget"> 875 <p><img decoding="async" class="aligncenter size-full wp-image-4896" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20214%20176'%3E%3C/svg%3E" alt="" width="214" height="176" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/ideal-img4.jpg"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter size-full wp-image-4896" src="https://idealservice.com/wp-content/uploads/2017/12/ideal-img4.jpg" alt="" width="214" height="176"></noscript></p> 876<h6>Happy Employees,<br />Happy Customers</h6> 877<p>Ideal employees go the extra<br />mile to exceed customer expectation.</p> 878</div> 879</div></div></div><div id="pgc-w6abd213a3c979-2-1" class="panel-grid-cell" ><div id="panel-w6abd213a3c979-2-1-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="5" ><div 880 881 class="so-widget-sow-editor so-widget-sow-editor-base" 882 883 > 884<div class="siteorigin-widget-tinymce textwidget"> 885 <p><img decoding="async" class="aligncenter size-full wp-image-4897" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20214%20176'%3E%3C/svg%3E" alt="" width="214" height="176" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/ideal-img5.jpg"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter size-full wp-image-4897" src="https://idealservice.com/wp-content/uploads/2017/12/ideal-img5.jpg" alt="" width="214" height="176"></noscript></p> 886<h6>88% of Our Business<br />is from Referrals</h6> 887<p>Our customers trust Ideal to take<br />care of friends and family.</p> 888</div> 889</div></div></div><div id="pgc-w6abd213a3c979-2-2" class="panel-grid-cell" ><div id="panel-w6abd213a3c979-2-2-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="6" ><div 890 891 class="so-widget-sow-editor so-widget-sow-editor-base" 892 893 > 894<div class="siteorigin-widget-tinymce textwidget"> 895 <p><a href="https://idealservice.com/category/community/"><img decoding="async" class="aligncenter wp-image-6915 size-full" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20214%20176'%3E%3C/svg%3E" alt="Ideal Plumbing" width="214" height="176" data-lazy-src="https://idealservice.com/wp-content/uploads/2023/06/Ideal-Community.jpg"><noscript><img loading="lazy" loading="lazy" decoding="async" class="aligncenter wp-image-6915 size-full" src="https://idealservice.com/wp-content/uploads/2023/06/Ideal-Community.jpg" alt="Ideal Plumbing" width="214" height="176"></noscript></a></p> 896<h6>We LOVE<br />Our Community</h6> 897<p>Ideal gives back to your community!<br />Learn more on our <a href="https://idealservice.com/category/community/">blog</a>.</p> 898</div> 899</div></div></div></div><div id="pg-w6abd213a3c979-3" class="panel-grid panel-no-style" ><div id="pgc-w6abd213a3c979-3-0" class="panel-grid-cell" ><div id="panel-w6abd213a3c979-3-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="7" ><div 900 901 class="so-widget-sow-editor so-widget-sow-editor-base" 902 903 > 904<div class="siteorigin-widget-tinymce textwidget"> 905 <p><a href="https://idealservice.com/about-ideal/">Learn More about us</a></p> 906</div> 907</div></div></div></div></div></div></div></div></div><div id="pg-242-4" class="panel-grid panel-has-style" ><div class="customer-reviews-heading panel-row-style panel-row-style-for-242-4" ><div id="pgc-242-4-0" class="panel-grid-cell" ><div id="panel-242-4-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="7" ><div 908 909 class="so-widget-sow-editor so-widget-sow-editor-base" 910 911 > 912<div class="siteorigin-widget-tinymce textwidget"> 913 <h2 style="text-align: center;">Over 135,000 Satisfied Customers in San Diego County</h2> 914</div> 915</div></div></div></div></div><div id="pg-242-5" class="panel-grid panel-has-style" ><div class="review-box panel-row-style panel-row-style-for-242-5" ><div id="pgc-242-5-0" class="panel-grid-cell" ><div id="panel-242-5-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="8" ><div 916 917 class="so-widget-sow-editor so-widget-sow-editor-base" 918 919 > 920<div class="siteorigin-widget-tinymce textwidget"> 921 <div class="review-icon"><img decoding="async" class="alignleft size-full wp-image-4889" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2065%2054'%3E%3C/svg%3E" alt="" width="65" height="54" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/pluming-icon.png"><noscript><img loading="lazy" loading="lazy" decoding="async" class="alignleft size-full wp-image-4889" src="https://idealservice.com/wp-content/uploads/2017/12/pluming-icon.png" alt="" width="65" height="54"></noscript></div> 922<div class="review-text"> 923<h3>Plumbing</h3> 924<p>"I called first thing on a Monday morning and they got me in that day. The plumbers they sent out were friendly, competent and efficie
924nt. It was even a little less money than I expected. Thank you for doing such an amazing job."</p> 925<p><strong>Heather R.</strong><br />San Diego, CA</p> 926<div class="site-btn"><a href="/reviews-testimonials/">Read More Plumbing Reviews</a></div> 927</div> 928</div> 929</div></div></div><div id="pgc-242-5-1" class="panel-grid-cell" ><div id="panel-242-5-1-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="9" ><div class="review-second-column panel-widget-style panel-widget-style-for-242-5-1-0" ><div 930 931 class="so-widget-sow-editor so-widget-sow-editor-base" 932 933 > 934<div class="siteorigin-widget-tinymce textwidget"> 935 <div class="review-icon"><img decoding="async" class="alignleft size-full wp-image-4890" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2054%2060'%3E%3C/svg%3E" alt="" width="54" height="60" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/heating-icon.png"><noscript><img loading="lazy" loading="lazy" decoding="async" class="alignleft size-full wp-image-4890" src="https://idealservice.com/wp-content/uploads/2017/12/heating-icon.png" alt="" width="54" height="60"></noscript></div> 936<div class="review-text"> 937<h3>Heating & Air Conditioning</h3> 938<p>"Ideal Plumbing & Heating performed a major job at our home (approx. 2500 sq. ft.) installing a replacement heater and new air conditioning. The very professional crew explained what was occurring every step of the way. Even cleaned up every day. We are now enjoying a very efficient system to keep us comfortable year round. Highly recommend to at least get a bid from them before making a final decision. This is an excellent, very knowledgeable company and their prices are very competitive."</p> 939<p><strong>Michael C.</strong><br />Chula Vista, CA</p> 940<div class="site-btn"><a href="/reviews-testimonials/">Read More HVAC Reviews</a></div> 941</div> 942</div> 943</div></div></div></div></div></div><div id="pg-242-6" class="panel-grid panel-has-style" ><div class="review-box review-box-last panel-row-style panel-row-style-for-242-6" ><div id="pgc-242-6-0" class="panel-grid-cell" ><div id="panel-242-6-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="10" ><div class="review-text-box panel-widget-style panel-widget-style-for-242-6-0-0" ><div 944 945 class="so-widget-sow-editor so-widget-sow-editor-base" 946 947 > 948<div class="siteorigin-widget-tinymce textwidget"> 949 <div class="review-icon"><img decoding="async" class="alignleft size-full wp-image-4891" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2045%2071'%3E%3C/svg%3E" alt="" width="45" height="71" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/electrical-icon.png"><noscript><img loading="lazy" loading="lazy" decoding="async" class="alignleft size-full wp-image-4891" src="https://idealservice.com/wp-content/uploads/2017/12/electrical-icon.png" alt="" width="45" height="71"></noscript></div> 950<div class="review-text"> 951<h3>Electrical</h3> 952<p>"I have used Ideal Plumbing many times over the last several years. They have done plumbing and electrical work for me. Always on time or early to my house. Great work at a fair price."</p> 953<p><strong>Ben Z.</strong><br />Tierrasanta, San Diego, CA</p> 954<div class="site-btn"><a href="/reviews-testimonials/">Read More Electrical Reviews</a></div> 955</div> 956</div> 957</div></div></div></div><div id="pgc-242-6-1" class="panel-grid-cell" ><div id="panel-242-6-1-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="11" ><div class="review-second-column review-text-box panel-widget-style panel-widget-style-for-242-6-1-0" ><div 958 959 class="so-widget-sow-editor so-widget-sow-editor-base" 960 961 > 962<div class="siteorigin-widget-tinymce textwidget"> 963 <div class="review-icon"><img decoding="async" class="alignleft size-full wp-image-4892" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2066%2067'%3E%3C/svg%3E" alt="" width="66" height="67" data-lazy-src="https://idealservice.com/wp-content/uploads/2017/12/remodel-icon.png"><noscript><img loading="lazy" loading="lazy" decoding="async" class="alignleft size-full wp-image-4892" src="https://idealservice.com/wp-content/uploads/2017/12/remodel-icon.png" alt="" width="66" height="67"></noscript></div> 964<div class="review-text"> 965<h3>Kitchen & Bath Remodel</h3> 966<p>âDon and his entire team are fantastic! They have remodeled my guest and master bathrooms and recently the kitchen and powder room with high quality workmanship and every detail is perfect. IDEAL is an outstanding company with friendly, licensed professionals many who have been with Don over 15 years. They listen and provide on-time service, daily cleanup and are quick to respond to any issue with an immediate solution. They strive for 100% customer satisfaction and I highly recommend IDEAL for exceptional qual
966ity and excellent customer service. Truly a pleasure working with everyone at IDEAL!â</p> 967<p><strong>Robin D.</strong><br />San Diego, CA</p> 968<div class="site-btn"><a href="/reviews-testimonials/">Read More Remodel Reviews</a></div> 969</div> 970</div> 971</div></div></div></div></div></div></div><!-- AddThis Advanced Settings above via filter on the_content --><!-- AddThis Advanced Settings below via filter on the_content --><!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons above via filter on the_content --><!-- AddThis Share Buttons below via filter on the_content --><div class="at-below-post-homepage addthis_tool" data-url="https://idealservice.com/"></div><!-- AddThis Share Buttons generic via filter on the_content --></div></article></main></div></div></div><section data-wpr-lazyrender="1" id="text-18" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><div class="blog-area"> 972<div class="wrap"> 973<h2 style="text-align: center;">Our Blog</h2> 974<div class="blog-post-box"><h3><a href="https://idealservice.com/2024-allied-gardens-first-fridays-summer-concerts/">2024 Allied Gardens First Fridays Summer Concerts</a></h3><div class="post-time"><i class="fa fa-calendar" aria-hidden="true"></i>September 14th, 2024</div><div class="post-category"><i class="fa fa-folder-open" aria-hidden="true"></i>Array</div><img decoding="async" width="150" height="150" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20150%20150'%3E%3C/svg%3E" class="attachment-thumbnail size-thumbnail wp-post-image" alt="Allied Gardens First Fridays Summer Concerts in the Park" data-lazy-srcset="https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park-150x150.png 150w, https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park-300x300.png 300w, https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park-768x768.png 768w, https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park.png 960w" data-lazy-sizes="(max-width: 150px) 100vw, 150px" data-lazy-src="https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park-150x150.png" /><noscript><img loading="lazy" decoding="async" width="150" height="150" src="https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park-150x150.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="Allied Gardens First Fridays Summer Concerts in the Park" srcset="https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park-150x150.png 150w, https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park-300x300.png 300w, https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park-768x768.png 768w, https://idealservice.com/wp-content/uploads/2018/06/First-Fridays-Allied-Gardens-Concerts-in-the-Park.png 960w" sizes="(max-width: 150px) 100vw, 150px" /></noscript><div class="at-above-post-homepage addthis_tool" data-url="https://idealservice.com/2024-allied-gardens-first-fridays-summer-concerts/"></div>FREE Live Music and Family Fun at Allied Gardens First Fridays The next Allied Gardens First Fridays Summer Concert in the Park is just around the corner. Grab your lawn chairs, bring a picnic, and get ready to meet your <div id="exceprt"><a class="read-more" title="FULL STORY" href="https://idealservice.com/2024-allied-gardens-first-fridays-summer-concerts/"></a></div><!-- AddThis Advanced Settings above via filter on get_the_excerpt --><!-- AddThis Advanced Settings below via filter on get_the_excerpt --><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons above via filter on get_the_excerpt --><!-- AddThis Share Buttons below via filter on get_the_excerpt --><div class="at-below-post-homepage addthis_tool" data-url="https://idealservice.com/2024-allied-gardens-first-fridays-summer-concerts/"></div><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><a href="https://idealservice.com/2024-allied-gardens-first-fridays-summer-concerts/" class="blog-read-btn">Read More <i class="fa fa-long-arrow-right" aria-hidden="true"></i></a></div><div class="blog-post-box"><h3><a href="https://idealservice.com/2023-bbb-torch-award-for-ethics-winner/">2023 BBB Torch Award for Ethics Winner – Ideal Plumbing Heating Air Electrical</a></h3><div class="post-time"><i class="fa fa-calendar" aria-hidden="true"></i>September 21st, 2023</div><div class="post-category"><i class="fa fa-folder-open" aria-hidden="true"></i>Array</div><img decoding="async" width="150" height="150" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20150%20150'%3E%3C/svg%3E" class="attachment-thumbnail size-thumbnail wp-post-image" alt="BBB Torch Awards Winner" data-lazy-srcset="https://idealservice.com/wp-content/uploads/2023/09/Featured-image-size-300x300-1-150x150.jpg 150w, https://idealservice.com/wp-content/uploads/2023/09/Featured-image-size-300x300-1.jpg 300w" data-lazy-sizes="(max-width: 150px) 100v
974w, 150px" data-lazy-src="https://idealservice.com/wp-content/uploads/2023/09/Featured-image-size-300x300-1-150x150.jpg" /><noscript><img loading="lazy" decoding="async" width="150" height="150" src="https://idealservice.com/wp-content/uploads/2023/09/Featured-image-size-300x300-1-150x150.jpg" class="attachment-thumbnail size-thumbnail wp-post-image" alt="BBB Torch Awards Winner" srcset="https://idealservice.com/wp-content/uploads/2023/09/Featured-image-size-300x300-1-150x150.jpg 150w, https://idealservice.com/wp-content/uploads/2023/09/Featured-image-size-300x300-1.jpg 300w" sizes="(max-width: 150px) 100vw, 150px" /></noscript><div class="at-above-post-homepage addthis_tool" data-url="https://idealservice.com/2023-bbb-torch-award-for-ethics-winner/"></div> Ideal Plumbing Heating Air Electrical Named Winner of 2023 Better Business Bureau Torch Awards for Ethics in San Diego (San Diego, CA â September 15, 2023) Better Business Bureau Serving the Pacific Southwest (BBB) has named Ideal Plumbing Heating <div id="exceprt"><a class="read-more" title="FULL STORY" href="https://idealservice.com/2023-bbb-torch-award-for-ethics-winner/"></a></div><!-- AddThis Advanced Settings above via filter on get_the_excerpt --><!-- AddThis Advanced Settings below via filter on get_the_excerpt --><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons above via filter on get_the_excerpt --><!-- AddThis Share Buttons below via filter on get_the_excerpt --><div class="at-below-post-homepage addthis_tool" data-url="https://idealservice.com/2023-bbb-torch-award-for-ethics-winner/"></div><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><a href="https://idealservice.com/2023-bbb-torch-award-for-ethics-winner/" class="blog-read-btn">Read More <i class="fa fa-long-arrow-right" aria-hidden="true"></i></a></div> 975<div class="site-btn"><a href="https://idealservice.com/blog/">Take Me to the blog</a></div> 976</div> 977</div> 978</div> 979 </div></section> 980<section data-wpr-lazyrender="1" id="text-12" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><div class="newsletter-area"> 981<div class="wrap"> 982<h2>Our Monthly Newsletter</h2> 983<h5>Be the first to hear about:</h5> 984<ul> 985<li>New Coupons & Specials</li> 986<li>Fun community events we sponsor</li> 987<li>Tips and tricks for maintaining your home</li> 988</ul> 989<div class="newsletter-box"> 990 <div class='gf_browser_chrome gform_wrapper gform_legacy_markup_wrapper gform-theme--no-framework' data-form-theme='legacy' data-form-index='0' id='gform_wrapper_2' ><div id='gf_2' class='gform_anchor' tabindex='-1'></div> 991 <div class='gform_heading'> 992 <p class='gform_description'></p> 993 </div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_2' id='gform_2' action='/#gf_2' data-formid='2' novalidate> 994 <div class='gform-body gform_body'><ul id='gform_fields_2' class='gform_fields top_label form_sublabel_below description_below validation_below'><li id="field_2_2" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_2_2'><span class='gform-field-label__text'>Facebook</span></label><div class='ginput_container'><input name='input_2' id='input_2_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_2_2'>This field is for validation purposes and should be left unchanged.</div></li><li id="field_2_1" class="gfield gfield--type-email gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_2_1'><span class='gform-field-label__text'>Your Email:</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> 995 <input name='input_1' id='input_2_1' type='email' value='' class='medium' tabindex='79' aria-required="true" aria-invalid="false" /> 996 </div></li></ul></div> 997 <div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_2' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' tabindex='80'>Submit</button> <input type='hidden' name='gform_ajax' value='form_id=2&title=&description=1&tabindex=79&theme=legacy&styles=[]&hash=b151b83e2ffa77e808e037be72994035' /> 998 <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_2' value='iframe' /> 999 <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_2' id='gform_theme_2' value='legacy' /> 1000 <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_2' id='gform_style_settings_2' value='[]' /> 1001 <input type='hidden' class='gform_hidden' name='is_submit_2' value='1' /> 1002 <input type='hidden' class='gform_hidden' name='gform_submit' value='2' /> 1003 1004 <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='USD' value='wFAfJlE1k14uY6Csyo5p0f6+juUofE6JgZeweh7t96BgpdaLXR5mCIeHlSPW+QVa+7d4/qbVTgmv6Ukgvf7U9qewL1A+uF9xPq/h5tQYdllCMdk=' /> 1005 <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> 1006 <input type='hidden' class='gform_hidden' name='state_2' value='WyJ7XCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjc5M2RkZDFkMjI2MjdkZTAzODI1OTU2Y2JkNzk2MzhiXCIsXCIyZWYxNmM4YTU0NThhMzM3NjU1YmY4OWYzNmM5YTg3Y1wiLFwiZGQ1NmY5Mzg1ZWU1ZWM5MDM5MmFmMjk1MDJlYTkzNThcIl0sXCJnZm9ybV90aGVtZVwiOlwiMWU5Njk3NTFjMTIxOTkwNThjMDVlOWNhMjc0ZmI3YzhcIixcImdmb3JtX3N0eWxlX3NldHRpbmdzXCI6XCI4MzE1MTQ0NzJjMzU3MTgyZWYxMTkzMzYwZTBhYWFjNVwiLFwiZm9ybV9pZFwiOlwiM2Y5N2U1YjUwMjA1YThjYzM0YjEwZGQwZWZiZTUwN2JcIixcInVybFwiOlwiZjQ0M2YzZmYwNjNlOGM4NTFiMzkyMDQwZjdlZDE4YzlcIixcInN0YXRlX3RpbWVzdGFtcFwiOlwiM2ZmNDg0MjI2NzJmYzYxZDVmYjY1M2RlN2Y1YzdhN2RcIn0iLCJkY2IzOGI4MDM1M2NhYTVlZTZlOTg4ZWVlNGI0YjczMiIsMTc5MDc3OTcwNl0=' /> 1007 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_2' id='gform_target_page_number_2' value='0' /> 1008 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_2' id='gform_source_page_number_2' value='1' /> 1009 <input type='hidden' name='gform_field_values' value='' /> 1010 1011 </div> 1012 <p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_3" name="ak_js" value="158"/>
1012<script> 1013document.getElementById( "ak_js_3" ).setAttribute( "value", ( new Date() ).getTime() ); 1014</script>
1014 1015</p></form> 1016 </div> 1017 <iframe style='display:none;width:100%;height:0px;' src='about:blank' name='gform_ajax_frame_2' id='gform_ajax_frame_2' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> 1018
1018<script> 1019gform.initializeOnLoaded( function() {jQuery('#gform_ajax_frame_2').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_2');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_2').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_2').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_2').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_2').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_2').offset().top - mt); }, 50 );var current_page = jQuery('#gform_source_page_number_2').val();jQuery(document).trigger('gform_page_loaded', [2, current_page]);window['gf_submitting_2'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_2').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_2').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [2]);window['gf_submitting_2'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_2').text());}else{jQuery('#gform_2').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "2", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_2" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_2"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_2" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 2, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} ); 1020</script>
1020 1021</div> 1022</div> 1023</div> 1024</div> 1025 </div></section> 1026<div data-wpr-lazyrender="1" class="footer-widgets"><div class="wrap"><div class="widget-area footer-widgets-1 footer-widget-area"><section id="siteorigin-panels-builder-3" class="widget widget_siteorigin-panels-builder"><div class="widget-wrap"><div id="pl-w6984d3b3c6c47" class="panel-layout" ><div id="pg-w6984d3b3c6c47-0" class="panel-grid panel-no-style" ><div id="pgc-w6984d3b3c6c47-0-0" class="panel-grid-cell" ><div id="panel-w6984d3b3c6c47-0-0-0" class="so-panel widget widget_text panel-first-child panel-last-child widgetopts-SO" data-index="0" ><div class="panel-widget-style panel-widget-style-for-w6984d3b3c6c47-0-0-0" > <div class="textwidget"><h2>Contact Us</h2> 1027</div> 1028 </div></div></div></div><div id="pg-w6984d3b3c6c47-1" class="panel-grid panel-has-style" ><div class="footer-hours-area panel-row-style panel-row-style-for-w6984d3b3c6c47-1" ><div id="pgc-w6984d3b3c6c47-1-0" class="panel-grid-cell" ><div id="panel-w6984d3b3c6c47-1-0-0" class="so-panel widget widget_text panel-first-child panel-last-child widgetopts-SO" data-index="1" > <div class="textwidget"><h3>Mailing Address & Showroom</h3> 1029<p><a href="https://www.google.com/maps?cid=13987401290037630040">5161 Waring Rd, San Diego, CA 92120</a><br /> 1030In the Community of Allied Gardens</p> 1031</div> 1032 </div></div><div id="pgc-w6984d3b3c6c47-1-1" class="panel-grid-cell" ><div id="panel-w6984d3b3c6c47-1-1-0" class="so-panel widget widget_text panel-first-child panel-last-child widgetopts-SO" data-index="2" ><div class="panel-widget-style panel-widget-style-for-w6984d3b3c6c47-1-1-0" > <div class="textwidget"><h3>Quick Links</h3> 1033<p><a href="https://idealservice.com/">Home |</a> <a href="https://idealservice.com/plumbing/">Plumbing</a> | <a href="https://idealservice.com/heating-and-air/">Heating & Cooling</a> | <a href="https://idealservice.com/electrical/">Electrical</a></p> 1034</div> 1035 </div></div></div></div></div><div id="pg-w6984d3b3c6c47-2" class="panel-grid panel-no-style" ><div id="pgc-w6984d3b3c6c47-2-0" class="panel-grid-cell" ><div id="panel-w6984d3b3c6c47-2-0-0" class="so-panel widget widget_text panel-first-child panel-last-child widgetopts-SO" data-index="3" ><div class="panel-widget-style panel-widget-style-for-w6984d3b3c6c47-2-0-0" > <div class="textwidget"><p> </p> 1036<h3>Contact:</h3> 1037<h3>Phone</h3> 1038<p><a href="tel:6193787152">(619) 378-7152</a><br /> 1039Available 24/7</p> 1040<h3>Email</h3> 1041<p><a href="mailto:[email protected]">[email protected]</a></p> 1042</div> 1043 </div></div></div><div id="pgc-w6984d3b3c6c47-2-1" class="panel-grid-cell" ><div id="panel-w6984d3b3c6c47-2-1-0" class="so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce panel-first-child panel-last-child widgetopts-SO" data-index="4" ><div class="textwidget"><h3>Office Hours:</h3> 1044<p>M-F 7:00am - 5:00pm</p> 1045<p>SAT 7:30am - 4:00pm</p> 1046</div></div></div><div id="pgc-w6984d3b3c6c47-2-2" class="panel-grid-cell" ><div id="panel-w6984d3b3c6c47-2-2-0" class="so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce panel-first-child panel-last-child widgetopts-SO" data-index="5" ><div class="textwidget"><h3>Showroom Hours:</h3> 1047<p>MON-FRI<br /> 10489:00am - 12:00pm<br /> 1049Closed for lunch, available by appointment.<br /> 10501:00 - 4:00pm</p> 1051<p>SAT/SUN (CLOSED)</p> 1052</div></div></div></div><div id="pg-w6984d3b3c6c47-3" class="panel-grid panel-no-style" ><div id="pgc-w6984d3b3c6c47-3-0" class="panel-grid-cell" ><div id="panel-w6984d3b3c6c47-3-0-0" class="so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce panel-first-child panel-last-child widgetopts-SO" data-index="6" ><div class="textwidget"><p><a href="https://www.facebook.com/IdealPlumbingHeatingAirElectrical/" target="_blank"><i class="fa fa-facebook" aria-hidden="true"><span class="fontawsome">facebook</span></i></a> <a href="https://twitter.com/idealsandiego?lang=en" target="_blank"><i class="fa fa-twitter" aria-hidden="true"><span class="fontawsome">twitter</span></i></a> <a href="https://www.linkedin.com/company/ideal-plumbing-heating-air-&-electrical/" target="_blank"><i class="fa fa-linkedin" aria-hidden="true"><span class="fontawsome">linkdin</span></i></a> <a href="https://www.houzz.com/pro/idealplumbingheatingairelectrical/ideal-plumbing-heating-air-electrical" target="_blank"><i class="fa fa-houzz" aria-hidden="true"><span class="fontawsome">houzz</span></i></a></p> 1053</div></div></div></div></div></div></section> 1054</div></div></div><footer data-wpr-lazyrender="1" class="site-footer"><div class="wrap"><section id="text-13" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><p><span class="footer-left">Copyright © <span class="year">2026</span> Ideal Plumbing, Heating, Air & Electrical | <a href="/privacy-policy/">Privacy Policy</a> | <a href="/accessibility-feedback/">Accessibility Feedback</a></span><span class="footer-right">CA License #348810</span></p> 1055</div> 1056 </div></section> 1057</div></footer></div>
1057<script type="speculationrules"> 1058{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/ideal/*","/wp-content/themes/genesis/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 1059</script>
1059 1060 1061<!-- Consent Management powered by Complianz | GDPR/CCPA Cookie Consent https://wordpress.org/plugins/complianz-gdpr --> 1062<div id="cmplz-cookiebanner-container"><div id="cmplz-cookiebanner-1-optin" class="cmplz-cookiebanner cmplz-hidden banner-1 banner-a optin cmplz-bottom-right cmplz-categories-type-view-preferences" aria-modal="true" data-nosnippet="true" role="dialog" aria-live="polite" aria-labelledby="cmplz-header-1-optin" aria-describedby="cmplz-message-1-optin"> 1063 <div class="cmplz-header"> 1064 <div class="cmplz-logo"></div> 1065 <div class="cmplz-title" id="cmplz-header-1-optin">Manage Consent</div> 1066 <div class="cmplz-close" tabindex="0" role="button" aria-label="Close dialog"> 1067 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="times" class="svg-inline--fa fa-times fa-w-11" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><path fill="currentColor" d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"></path></svg> 1068 </div> 1069 </div> 1070 1071 <div class="cmplz-divider cmplz-divider-header"></div> 1072 <div class="cmplz-body"> 1073 <div class="cmplz-message" id="cmplz-message-1-optin">To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.</div> 1074 <!-- categories start --> 1075 <div class="cmplz-categories"> 1076 <div class="cmplz-category cmplz-functional"> 1077 <div class="cmplz-category-header"> 1078 <span class="cmplz-category-title" id="cmplz-title-functional-1-optin">Functional</span> 1079 <span class='cmplz-always-active'> 1080 <span class="cmplz-banner-checkbox"> 1081 <input type="checkbox" 1082 id="cmplz-functional-optin" 1083 data-category="cmplz_functional" 1084 class="cmplz-consent-checkbox cmplz-functional" 1085 size="40" 1086 value="1"/> 1087 <label class="cmplz-label" for="cmplz-functional-optin"><span class="screen-reader-text">Functional</span></label> 1088 </span> 1089 Always active </span> 1090 <button class="cmplz-category-toggle" 1091 aria-expanded="false" 1092 aria-controls="cmplz-desc-functional-1-optin" 1093 aria-labelledby="cmplz-title-functional-1-optin"> 1094 <span class="cmplz-icon cmplz-open"> 1095 <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18"><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg> 1096 </span> 1097 </button> 1098 </div> 1099 <div class="cmplz-description" id="cmplz-desc-functional-1-optin" hidden> 1100 <span class="cmplz-description-functional">The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.</span> 1101 </div> 1102 </div> 1103 1104 <div class="cmplz-category cmplz-preferences"> 1105 <div class="cmplz-category-header"> 1106 <span class="cmplz-category-title" id="cmplz-title-preferences-1-optin">Preferences</span> 1107 <span class="cmplz-banner-checkbox"> 1108 <input type="checkbox" 1109 id="cmplz-preferences-optin" 1110 data-category="cmplz_preferences" 1111 class="cmplz-consent-checkbox cmplz-preferences" 1112 size="40" 1113 value="1"/> 1114 <label class="cmplz-label" for="cmplz-preferences-optin"><span class="screen-reader-text">Preferences</span></label> 1115 </span> 1116 <button class="cmplz-category-toggle" 1117 aria-expanded="false" 1118 aria-controls="cmplz-desc-preferences-1-optin" 1119 aria-labelledby="cmplz-title-preferences-1-optin"> 1120 <span class="cmplz-icon cmplz-open"> 1121 <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18">
1121<path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg> 1122 </span> 1123 </button> 1124 </div> 1125 <div class="cmplz-description" id="cmplz-desc-preferences-1-optin" hidden> 1126 <span class="cmplz-description-preferences">The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.</span> 1127 </div> 1128 </div> 1129 1130 <div class="cmplz-category cmplz-statistics"> 1131 <div class="cmplz-category-header"> 1132 <span class="cmplz-category-title" id="cmplz-title-statistics-1-optin">Statistics</span> 1133 <span class="cmplz-banner-checkbox"> 1134 <input type="checkbox" 1135 id="cmplz-statistics-optin" 1136 data-category="cmplz_statistics" 1137 class="cmplz-consent-checkbox cmplz-statistics" 1138 size="40" 1139 value="1"/> 1140 <label class="cmplz-label" for="cmplz-statistics-optin"><span class="screen-reader-text">Statistics</span></label> 1141 </span> 1142 <button class="cmplz-category-toggle" 1143 aria-expanded="false" 1144 aria-controls="cmplz-desc-statistics-1-optin" 1145 aria-labelledby="cmplz-title-statistics-1-optin"> 1146 <span class="cmplz-icon cmplz-open"> 1147 <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18"><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg> 1148 </span> 1149 </button> 1150 </div> 1151 <div class="cmplz-description" id="cmplz-desc-statistics-1-optin" hidden> 1152 <span class="cmplz-description-statistics">The technical storage or access that is used exclusively for statistical purposes.</span> 1153 <span class="cmplz-description-statistics-anonymous">The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.</span> 1154 </div> 1155 </div> 1156 1157 <div class="cmplz-category cmplz-marketing"> 1158 <div class="cmplz-category-header"> 1159 <span class="cmplz-category-title" id="cmplz-title-marketing-1-optin">Marketing</span> 1160 <span class="cmplz-banner-checkbox"> 1161 <input type="checkbox" 1162 id="cmplz-marketing-optin" 1163 data-category="cmplz_marketing" 1164 class="cmplz-consent-checkbox cmplz-marketing" 1165 size="40" 1166 value="1"/> 1167 <label class="cmplz-label" for="cmplz-marketing-optin"><span class="screen-reader-text">Marketing</span></label> 1168 </span> 1169 <button class="cmplz-category-toggle" 1170 aria-expanded="false" 1171 aria-controls="cmplz-desc-marketing-1-optin" 1172 aria-labelledby="cmplz-title-marketing-1-optin"> 1173 <span class="cmplz-icon cmplz-open"> 1174 <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" height="18"><path d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"/></svg> 1175 </span> 1176 </button> 1177 </div> 1178 <div class="cmplz-description" id="cmplz-desc-marketing-1-optin" hidden> 1179 <span class="cmplz-description-marketing">The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.</span> 1180 </div> 1181 </div> 1182 </div><!-- categories end --> 1183 </div> 1184 1185 <div class="cmplz-links cmplz-information"> 1186 <ul> 1187 <li><a class="cmplz-link cmplz-manage-options cookie-statement" href="#" data-relative_url="#cmplz-manage-consent-container">Manage options</a></li> 1188 <li><a class="cmplz-link cmplz-manage-third-parties cookie-statement" href="#" data-relative_url="#cmplz-cookie
1188s-overview">Manage services</a></li> 1189 <li><a class="cmplz-link cmplz-manage-vendors tcf cookie-statement" href="#" data-relative_url="#cmplz-tcf-wrapper">Manage {vendor_count} vendors</a></li> 1190 <li><a class="cmplz-link cmplz-external cmplz-read-more-purposes tcf" target="_blank" rel="noopener noreferrer nofollow" href="https://cookiedatabase.org/tcf/purposes/" aria-label="Read more about TCF purposes on Cookie Database">Read more about these purposes</a></li> 1191 </ul> 1192 </div> 1193 1194 <div class="cmplz-divider cmplz-footer"></div> 1195 1196 <div class="cmplz-buttons"> 1197 <button class="cmplz-btn cmplz-accept">Accept</button> 1198 <button class="cmplz-btn cmplz-deny">Deny</button> 1199 <button class="cmplz-btn cmplz-view-preferences">View preferences</button> 1200 <button class="cmplz-btn cmplz-save-preferences">Save preferences</button> 1201 <a class="cmplz-btn cmplz-manage-options tcf cookie-statement" href="#" data-relative_url="#cmplz-manage-consent-container">View preferences</a> 1202 </div> 1203 1204 1205 <div class="cmplz-documents cmplz-links"> 1206 <ul> 1207 <li><a class="cmplz-link cookie-statement" href="#" data-relative_url="">{title}</a></li> 1208 <li><a class="cmplz-link privacy-statement" href="#" data-relative_url="">{title}</a></li> 1209 <li><a class="cmplz-link impressum" href="#" data-relative_url="">{title}</a></li> 1210 </ul> 1211 </div> 1212</div> 1213</div> 1214 <div id="cmplz-manage-consent" data-nosnippet="true"><button class="cmplz-btn cmplz-hidden cmplz-manage-consent manage-consent-1" aria-haspopup="dialog" aria-controls="cmplz-cookiebanner-1-optin">Manage consent</button> 1215 1216</div><!-- Google APEX idealservice.com Tag Manager (noscript) -->
vendor: 68 bytes, lines 1216-1217
1216 1217<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1217GTM-5MK37KKM
vendor: 83 bytes, lines 1217-1218
1217" 1218height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1219<!-- End APEX idealservice.com Google Tag Manager (noscript) -->
1219<script> 1220 ( () => { 1221 const lazyloadRunObserver = () => { 1222 const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); 1223 const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { 1224 entries.forEach( ( entry ) => { 1225 if ( entry.isIntersecting ) { 1226 let lazyloadBackground = entry.target; 1227 if( lazyloadBackground ) { 1228 lazyloadBackground.classList.add( 'e-lazyloaded' ); 1229 } 1230 lazyloadBackgroundObserver.unobserve( entry.target ); 1231 } 1232 }); 1233 }, { rootMargin: '200px 0px 200px 0px' } ); 1234 lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { 1235 lazyloadBackgroundObserver.observe( lazyloadBackground ); 1236 } ); 1237 }; 1238 const events = [ 1239 'DOMContentLoaded', 1240 'elementor/lazyload/observe', 1241 ]; 1242 events.forEach( ( event ) => { 1243 document.addEventListener( event, lazyloadRunObserver ); 1244 } ); 1245 } )(); 1246 </script>
1246 1247 <style media="all" id="siteorigin-panels-layouts-footer">/* Layout w6abd213a3c3ca */ #pgc-w6abd213a3c3ca-0-0 { width:100%;width:calc(100% - ( 0 * 30px ) ) } #pg-w6abd213a3c3ca-0 , #pl-w6abd213a3c3ca .so-panel { margin-bottom:30px } #pgc-w6abd213a3c3ca-1-0 , #pgc-w6abd213a3c3ca-1-1 , #pgc-w6abd213a3c3ca-1-2 , #pgc-w6abd213a3c3ca-1-3 { width:25%;width:calc(25% - ( 0.75 * 30px ) ) } #pl-w6abd213a3c3ca .so-panel:last-of-type { margin-bottom:0px } #pg-w6abd213a3c3ca-0.panel-has-style > .panel-row-style, #pg-w6abd213a3c3ca-0.panel-no-style , #pg-w6abd213a3c3ca-1.panel-has-style > .panel-row-style, #pg-w6abd213a3c3ca-1.panel-no-style { -webkit-align-items:flex-start;align-items:flex-start } @media (max-width:730px){ #pg-w6abd213a3c3ca-0.panel-no-style, #pg-w6abd213a3c3ca-0.panel-has-style > .panel-row-style, #pg-w6abd213a3c3ca-0 , #pg-w6abd213a3c3ca-1.panel-no-style, #pg-w6abd213a3c3ca-1.panel-has-style > .panel-row-style, #pg-w6abd213a3c3ca-1 { -webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column } #pg-w6abd213a3c3ca-0 > .panel-grid-cell , #pg-w6abd213a3c3ca-0 > .panel-row-style > .panel-grid-cell , #pg-w6abd213a3c3ca-1 > .panel-grid-cell , #pg-w6abd213a3c3ca-1 > .panel-row-style > .panel-grid-cell { width:100%;margin-right:0 } #pgc-w6abd213a3c3ca-1-0 , #pgc-w6abd213a3c3ca-1-1 , #pgc-w6abd213a3c3ca-1-2 { margin-bottom:30px } #pl-w6abd213a3c3ca .panel-grid-cell { padding:0 } #pg-w6abd213a3c3ca-0 .panel-grid-cell-empty , #pg-w6abd213a3c3ca-1 .panel-grid-cell-empty { display:none } #pl-w6abd213a3c3ca .panel-grid .panel-grid-cell-mobile-last { margin-bottom:0px } } /* Layout w6abd213a3c979 */ #pgc-w6abd213a3c979-0-0 , #pgc-w6abd213a3c979-3-0 { width:100%;width:calc(100% - ( 0 * 30px ) ) } #pg-w6abd213a3c979-0 , #pg-w6abd213a3c979-1 , #pg-w6abd213a3c979-2 , #pl-w6abd213a3c979 .so-panel { margin-bottom:30px } #pgc-w6abd213a3c979-1-0 , #pgc-w6abd213a3c979-1-1 , #pgc-w6abd213a3c979-1-2 , #pgc-w6abd213a3c979-2-0 , #pgc-w6abd213a3c979-2-1 , #pgc-w6abd213a3c979-2-2 { width:33.3333%;width:calc(33.3333% - ( 0.666666666667 * 30px ) ) } #pl-w6abd213a3c979 .so-panel:last-of-type { margin-bottom:0px } #pg-w6abd213a3c979-0.panel-has-style > .panel-row-style, #pg-w6abd213a3c979-0.panel-no-style , #pg-w6abd213a3c979-1.panel-has-style > .panel-row-style, #pg-w6abd213a3c979-1.panel-no-style , #pg-w6abd213a3c979-2.panel-has-style > .panel-row-style, #pg-w6abd213a3c979-2.panel-no-style , #pg-w6abd213a3c979-3.panel-has-style > .panel-row-style, #pg-w6abd213a3c979-3.panel-no-style { -webkit-align-items:flex-start;align-items:flex-start } @media (max-width:730px){ #pg-w6abd213a3c979-0.panel-no-style, #pg-w6abd213a3c979-0.panel-has-style > .panel-row-style, #pg-w6abd213a3c979-0 , #pg-w6abd213a3c979-1.panel-no-style, #pg-w6abd213a3c979-1.panel-has-style > .panel-row-style, #pg-w6abd213a3c979-1 , #pg-w6abd213a3c979-2.panel-no-style, #pg-w6abd213a3c979-2.panel-has-style > .panel-row-style, #pg-w6abd213a3c979-2 , #pg-w6abd213a3c979-3.panel-no-style, #pg-w6abd213a3c979-3.panel-has-style > .panel-row-style, #pg-w6abd213a3c979-3 { -webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column } #pg-w6abd213a3c979-0 > .panel-grid-cell , #pg-w6abd213a3c979-0 > .panel-row-style > .panel-grid-cell , #pg-w6abd213a3c979-1 > .panel-grid-cell , #pg-w6abd213a3c979-1 > .panel-row-style > .panel-grid-cell , #pg-w6abd213a3c979-2 > .panel-grid-cell , #pg-w6abd213a3c979-2 > .panel-row-style > .panel-grid-cell , #pg-w6abd213a3c979-3 > .panel-grid-cell , #pg-w6abd213a3c979-3 > .panel-row-style > .panel-grid-cell { width:100%;margin-right:0 } #pgc-w6abd213a3c979-1-0 , #pgc-w6abd213a3c979-1-1 , #pgc-w6abd213a3c979-2-0 , #pgc-w6abd213a3c979-2-1 { margin-bottom:30px } #pl-w6abd213a3c979 .panel-grid-cell { padding:0 } #pg-w6abd213a3c979-0 .panel-grid-cell-empty , #pg-w6abd213a3c979-1 .panel-grid-cell-empty , #pg-w6abd213a3c979-2 .panel-grid-cell-empty , #pg-w6abd213a3c979-3 .panel-grid-cell-empty { display:none } #pl-w6abd213a3c979 .panel-grid .panel-grid-cell-mobile-last { margin-bottom:0px } } /* Layout w6984d3b3c6c47 */ #pgc-w6984d3b3c6c47-0-0 , #pgc-w6984d3b3c6c47-3-0 { width:100%;width:calc(100% - ( 0 * 30px ) ) } #pg-w6984d3b3c6c47-0 , #pg-w6984d3b3c6c47-1 , #pg-w6984d3b3c6c47-2 , #pl-w6984d3b3c6c47 .so-panel { margin-bottom:30px } #pgc-w6984d3b3c6c47-1-0 { width:47.5%;width:calc(47.5% - ( 0.525 * 30px ) ) } #pgc-w6984d3b3c6c47-1-1 { width:52.5%;width:calc(52.5% - ( 0.475 * 30px ) ) } #pgc-w6984d3b3c6c47-2-0 , #pgc-w6984d3b3c6c47-2-1 , #pgc-w6984d3b3c6c47-2-2 { width:33.3333%;width:calc(33.3333% - ( 0.666666666667 * 30px ) ) } #pl-w6984d3b3c6c47 .so-panel:last-of-type { margin-bottom:0px } #pg-w6984d3b3c6c47-0.panel-has-style > .panel-row-style, #pg-w6984d3b3c6c47-0.panel-no-style , #pg-w6984d3b3c6c47-1.panel-has-style > .panel-row-style, #pg-w6984d3b3c6c47-1.panel-no-style , #pg-w6984d3b3c6c47-3.panel-has-style > .panel-row-style, #pg-w6984d3b3c6c47-3.panel-no-style { -webkit-align-items:flex-start;align-items:flex-start } #panel-w6984d3b3c6c47-0-0-0> .panel-widget-style , #panel-w6984d3b3c6c47-1-1-0> .panel-widget-style , #panel-w6984d3b3c6c47-1-1-0 a , #panel-w6984d3b3c6c47-2-0-0> .panel-widget-style { color:#ffffff } #panel-w6984d3b3c6c47-1-0-0 a , #panel-w6984d3b3c6c47-1-0-0 a:hover { color:#ed8326 } #panel-w6984d3b3c6c47-1-1-0 a:hover { color:#e2e2e2 } #panel-w6984d3b3c6c47-2-0-0 a , #panel-w6984d3b3c6c47-2-0-0 a:hover { color:#ed8325 } @media (max-width:730px){ #pg-w6984d3b3c6c47-0.panel-no-style, #pg-w6984d3b3c6c47-0.panel-has-style > .panel-row-style, #pg-w6984d3b3c6c47-0 , #pg-w6984d3b3c6c47-1.panel-no-style, #pg-w6984d3b3c6c47-1.panel-has-style > .panel-row-style, #pg-w6984d3b3c6c47-1 , #pg-w6984d3b3c6c47-2.panel-no-style, #pg-w6984d3b3c6c47-2.panel-has-style > .panel-row-style, #pg-w6984d3b3c6c47-2 , #pg-w6984d3b3c6c47-3.panel-no-style, #pg-w6984d3b3c6c47-3.panel-has-style > .panel-row-style, #pg-w6984d3b3c6c47-3 { -webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column } #pg-w6984d3b3c6c47-0 > .panel-grid-cell , #pg-w6984d3b3c6c47-0 > .panel-row-style > .panel-grid-cell , #pg-w6984d3b3c6c47-1 > .panel-grid-cell , #pg-w6984d3b3c6c47-1 > .panel-row-style > .panel-grid-cell , #pg-w6984d3b3c6c47-2 > .panel-grid-cell , #pg-w6984d3b3c6c47-2 > .panel-row-style > .panel-grid-cell , #pg-w6984d3b3c6c47-3 > .panel-grid-cell , #pg-w6984d3b3c6c47-3 > .panel-row-style > .panel-grid-cell { width:100%;margin-right:0 } #pgc-w6984d3b3c6c47-1-0 , #pgc-w6984d3b3c6c47-2-0 , #pgc-w6984d3b3c6c47-2-1 { margin-bottom:30px } #pl-w6984d3b3c6c47 .panel-grid-cell { padding:0 } #pg-w6984d3b3c6c47-0 .panel-grid-cell-empty , #pg-w6984d3b3c6c47-1 .panel-grid-cell-empty , #pg-w6984d3b3c6c47-2 .panel-grid-cell-empty , #pg-w6984d3b3c6c47-3 .panel-grid-cell-empty { display:none } #pl-w6984d3b3c6c47 .panel-grid .panel-grid-cell-mobile-last { margin-bottom:0px } } </style>
1247<script data-cfasync="false" type="text/javascript">if (window.addthis_product === undefined) { window.addthis_product = "wpp"; } if (window.wp_product_version === undefined) { window.wp_product_version = "wpp-6.2.7"; } if (window.addthis_share === undefined) { window.addthis_share = {}; } if (window.addthis_config === undefined) { window.addthis_config = {"data_track_clickback":true,"ignore_server_config":true,"ui_atversion":"300"}; } if (window.addthis_layers === undefined) { window.addthis_layers = {}; } if (window.addthis_layers_tools === undefined) { window.addthis_layers_tools = [{"responsiveshare":{"numPreferredServices":4,"counts":"none","size":"16px","style":"responsive","shareCountThreshold":0,"services":"facebook,twitter,email,pinterest_share,addthis","elements":".addthis_inline_share_toolbox_opl8,.at-below-post,.at-below-post-homepage,.at-below-post-cat-page,.at-below-post-arch-page","id":"responsiveshare"}}]; } else { window.addthis_layers_tools.push({"responsiveshare":{"numPreferredServices":4,"counts":"none","size":"16px","style":"responsive","shareCountThreshold":0,"services":"facebook,twitter,email,pinterest_share,addthis","elements":".addthis_inline_share_toolbox_opl8,.at-below-post,.at-below-post-homepage,.at-below-post-cat-page,.at-below-post-arch-page","id":"responsiveshare"}}); } if (window.addthis_plugin_info === undefined) { window.addthis_plugin_info = {"info_status":"enabled","cms_name":"WordPress","plugin_name":"Share Buttons by AddThis","plugin_version":"6.2.7","plugin_mode":"WordPress","anonymous_profile_id":"wp-920f2550a7b4cbfe31b069381e5a3462","page_info":{"template":"home","post_type":""},"sharing_enabled_on_post_via_metabox":false}; } 1248 (function() { 1249 var first_load_interval_id = setInterval(function () { 1250 if (typeof window.addthis !== 'undefined') { 1251 window.clearInterval(first_load_interval_id); 1252 if (typeof window.addthis_layers !== 'undefined' && Object.getOwnPropertyNames(window.addthis_layers).length > 0) { 1253 window.addthis.layers(window.addthis_layers); 1254 } 1255 if (Array.isArray(window.addthis_layers_tools)) { 1256 for (i = 0; i < window.addthis_layers_tools.length; i++) { 1257 window.addthis.layers(window.addthis_layers_tools[i]); 1258 } 1259 } 1260 } 1261 },1000) 1262 }()); 1263 </script>
1263<script id="elementor-webpack-runtime-js" src="https://idealservice.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=4.3.2"></script>
vendor: 1 bytes, line 1263
1263
1264<script id="elementor-frontend-modules-js" src="https://idealservice.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.3.2"></script>
vendor: 1 bytes, line 1264
1264
1265<script id="jquery-ui-core-js" src="https://idealservice.com/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3"></script>
vendor: 1 bytes, line 1265
1265
1266<script id="elementor-frontend-js-before"> 1267var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnX":"Share on X","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":false},"version":"4.3.2","is_static":false,"experimentalFeatures":{"additional_custom_breakpoints":true,"theme_builder_v2":true,"landing-pages":true,"import-export-customization":true,"e_pro_atomic_form":true,"e_pro_collection_loop":true},"urls":{"assets":"https:\/\/idealservice.com\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/idealservice.com\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/idealservice.com\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"cc698a0036","atomicFormsSendForm":"5b938054d0"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description"},"post":{"id":242,"title":"Ideal%20Plumbing%2C%20Heating%2C%20Air%20%26%20Electrical%20Services%20in%20San%20Diego%2C%20CA","excerpt":"","featuredImage":false}}; 1268//# sourceURL=elementor-frontend-js-before 1269</script>
vendor: 1 bytes, line 1269
1269
1270<script id="elementor-frontend-js" src="https://idealservice.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=4.3.2"></script>
vendor: 1 bytes, line 1270
1270
1271<script id="fancybox-purify-js" src="https://idealservice.com/wp-content/plugins/easy-fancybox/vendor/purify.min.js?ver=7.0.5"></script>
vendor: 1 bytes, line 1271
1271
1272<script id="jquery-fancybox-js-extra"> 1273var efb_i18n = {"close":"Close","next":"Next","prev":"Previous","startSlideshow":"Start slideshow","toggleSize":"Toggle size"}; 1274//# sourceURL=jquery-fancybox-js-extra 1275</script>
vendor: 1 bytes, line 1275
1275
1276<script id="jquery-fancybox-js" src="https://idealservice.com/wp-content/plugins/easy-fancybox/fancybox/1.5.4/jquery.fancybox.min.js?ver=7.0.5"></script>
vendor: 1 bytes, line 1276
1276
1277<script id="jquery-fancybox-js-after"> 1278var fb_timeout, fb_opts={'autoScale':true,'showCloseButton':true,'margin':20,'pixelRatio':'false','centerOnScroll':true,'enableEscapeButton':true,'overlayShow':true,'hideOnOverlayClick':true,'minViewportWidth':320,'minVpHeight':320,'disableCoreLightbox':'true','enableBlockControls':'true','fancybox_openBlockControls':'true' }; 1279if(typeof easy_fancybox_handler==='undefined'){ 1280var easy_fancybox_handler=function(){ 1281jQuery([".nolightbox","a.wp-block-file__button","a.pin-it-button","a[href*='pinterest.com\/pin\/create']","a[href*='facebook.com\/share']","a[href*='twitter.com\/share']"].join(',')).addClass('nofancybox'); 1282jQuery('a.fancybox-close').on('click',function(e){e.preventDefault();jQuery.fancybox.close()}); 1283/* Inline */ 1284jQuery('a.fancybox-inline,area.fancybox-inline,.fancybox-inline>a').each(function(){jQuery(this).fancybox(jQuery.extend(true,{},fb_opts,{'type':'inline','autoDimensions':true,'scrolling':'no','easingIn':'easeOutBack','easingOut':'easeInBack','opacity':false,'hideOnContentClick':false,'titleShow':false}))}); 1285/* iFrame */ 1286jQuery('a.fancybox-iframe,area.fancybox-iframe,.fancybox-iframe>a').each(function(){jQuery(this).fancybox(jQuery.extend(true,{},fb_opts,{'type':'iframe','width':'60%','height':'100%','titleShow':false,'titlePosition':'float','titleFromAlt':true,'allowfullscreen':false}))}); 1287};}; 1288jQuery(easy_fancybox_handler);jQuery(document).on('post-load',easy_fancybox_handler); 1289 1290//# sourceURL=jquery-fancybox-js-after 1291</script>
vendor: 1 bytes, line 1291
1291
1292<script id="jquery-mousewheel-js" src="https://idealservice.com/wp-content/plugins/easy-fancybox/vendor/jquery.mousewheel.min.js?ver=3.1.13"></script>
vendor: 1 bytes, line 1292
1292
1293<script type="text/plain" data-service="addthis" data-category="marketing" id="addthis_widget-js" data-cmplz-src="https://s7.addthis.com/js/300/addthis_widget.js?ver=7.0.5#pubid=wp-920f2550a7b4cbfe31b069381e5a3462"></script>
vendor: 1 bytes, line 1293
1293
1294<script id="wp-dom-ready-js" src="https://idealservice.com/wp-includes/js/dist/dom-ready.min.js?ver=a06281ae5cf5500e9317"></script>
vendor: 1 bytes, line 1294
1294
1295<script id="wp-hooks-js" src="https://idealservice.com/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script>
vendor: 1 bytes, line 1295
1295
1296<script id="wp-i18n-js" src="https://idealservice.com/wp-includes/js/dist/i18n.min.js?ver=781d11515ad3d91786ec"></script>
vendor: 1 bytes, line 1296
1296
1297<script id="wp-i18n-js-after"> 1298wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 1299//# sourceURL=wp-i18n-js-after 1300</script>
vendor: 1 bytes, line 1300
1300
1301<script id="wp-a11y-js" src="https://idealservice.com/wp-includes/js/dist/a11y.min.js?ver=af934e5259bc51b8718e"></script>
vendor: 1 bytes, line 1301
1301
1302<script id="gform_gravityforms_theme_vendors-js" defer='defer' src="https://idealservice.com/wp-content/plugins/gravityforms/assets/js/dist/vendor-theme.min.js?ver=0c901cb641ce64b99c20ea1a4d208cc9"></script>
vendor: 1 bytes, line 1302
1302
1303<script id="gform_gravityforms_theme-js-extra"> 1304var gform_theme_config = {"common":{"form":{"honeypot":{"version_hash":"96aa36d1f98aee22475ef38c55151d8a"},"ajax":{"ajaxurl":"https://idealservice.com/wp-admin/admin-ajax.php","ajax_submission_nonce":"8d2b8acb89","i18n":{"step_announcement":"Step %1$s of %2$s, %3$s","unknown_error":"There was an unknown error processing your request. Please try again.","error_403":"The request was blocked (403 error) for unknown security reasons. Remove any code-like text (scripts or DB queries) and try again."}}}},"hmr_dev":"","public_path":"https://idealservice.com/wp-content/plugins/gravityforms/assets/js/dist/","config_nonce":"539a5f7429"}; 1305//# sourceURL=gform_gravityforms_theme-js-extra 1306</script>
vendor: 1 bytes, line 1306
1306
1307<script id="gform_gravityforms_theme-js" defer='defer' src="https://idealservice.com/wp-content/plugins/gravityforms/assets/js/dist/scripts-theme.min.js?ver=e27d9712159624c99129c8c208f022ad"></script>
vendor: 1 bytes, line 1307
1307
1308<script id="cmplz-cookiebanner-js-extra"> 1309var complianz = {"prefix":"cmplz_","debug":"","user_banner_id":"1","set_cookies":[],"block_ajax_content":"0","banner_version":"16","version":"7.6.5","store_consent":"1","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"1","dismiss_timeout":"","disable_cookiebanner":"","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https://idealservice.com/wp-json/complianz/v1/","locale":"lang=en&locale=en_US","set_cookies_on_root":"0","cookie_domain":"","current_policy_id":"26","cookie_path":"/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https://idealservice.com/wp-content/uploads/complianz/css/banner-{banner_id}-{type}.css?v=16","page_links":{"eu":{"cookie-statement":{"title":"Cookie Policy","url":"https://idealservice.com/cookie-policy/"},"privacy-statement":{"title":"Privacy Policy","url":"https://idealservice.com/about-ideal/privacy-policy/"},"disclaimer":{"title":"Disclaimer","url":""}},"us":{"disclaimer":{"title":"Disclaimer","url":""}},"uk":{"disclaimer":{"title":"Disclaimer","url":""}},"ca":{"disclaimer":{"title":"Disclaimer","url":""}},"au":{"disclaimer":{"title":"Disclaimer","url":""}},"za":{"disclaimer":{"title":"Disclaimer","url":""}},"br":{"disclaimer":{"title":"Disclaimer","url":""}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content","iapi_nav":"fallback"}; 1310//# sourceURL=cmplz-cookiebanner-js-extra 1311</script>
vendor: 1 bytes, line 1311
1311
1312<script defer id="cmplz-cookiebanner-js" src="https://idealservice.com/wp-content/plugins/complianz-gdpr-premium/cookiebanner/js/complianz.min.js?ver=1789110344"></script>
vendor: 1 bytes, line 1312
1312
1313<script id="cmplz-cookiebanner-js-after"> 1314 1315 if ('undefined' != typeof window.jQuery) { 1316 jQuery(document).ready(function ($) { 1317 $(document).on('elementor/popup/show', () => { 1318 let rev_cats = cmplz_categories.reverse(); 1319 for (let key in rev_cats) { 1320 if (rev_cats.hasOwnProperty(key)) { 1321 let category = cmplz_categories[key]; 1322 if (cmplz_has_consent(category)) { 1323 document.querySelectorAll('[data-category="' + category + '"]').forEach(obj => { 1324 cmplz_remove_placeholder(obj); 1325 }); 1326 } 1327 } 1328 } 1329 1330 let services = cmplz_get_services_on_page(); 1331 for (let key in services) { 1332 if (services.hasOwnProperty(key)) { 1333 let service = services[key].service; 1334 let category = services[key].category; 1335 if (cmplz_has_service_consent(service, category)) { 1336 document.querySelectorAll('[data-service="' + service + '"]').forEach(obj => { 1337 cmplz_remove_placeholder(obj); 1338 }); 1339 } 1340 } 1341 } 1342 }); 1343 }); 1344 } 1345 1346 1347 1348 document.addEventListener("cmplz_enable_category", function(consentData) { 1349 var category = consentData.detail.category; 1350 var services = consentData.detail.services; 1351 var blockedContentContainers = []; 1352 let selectorVideo = '.cmplz-elementor-widget-video-playlist[data-category="'+category+'"],.elementor-widget-video[data-category="'+category+'"]'; 1353 let selectorGeneric = '[data-cmplz-elementor-href][data-category="'+category+'"]'; 1354 for (var skey in services) { 1355 if (services.hasOwnProperty(skey)) { 1356 let service = skey; 1357 selectorVideo +=',.cmplz-elementor-widget-video-playlist[data-service="'+service+'"],.elementor-widget-video[data-service="'+service+'"]'; 1358 selectorGeneric +=',[data-cmplz-elementor-href][data-service="'+service+'"]'; 1359 } 1360 } 1361 document.querySelectorAll(selectorVideo).forEach(obj => { 1362 let elementService = obj.getAttribute('data-service'); 1363 if ( cmplz_is_service_denied(elementService) ) { 1364 return; 1365 } 1366 if (obj.classList.contains('cmplz-elementor-activated')) return; 1367 obj.classList.add('cmplz-elementor-activated'); 1368 1369 if ( obj.hasAttribute('data-cmplz_elementor_widget_type') ){ 1370 let attr = obj.getAttribute('data-cmplz_elementor_widget_type'); 1371 obj.classList.removeAttribute('data-cmplz_elementor_widget_type'); 1372 obj.classList.setAttribute('data-widget_type', attr); 1373 } 1374 if (obj.classList.contains('cmplz-elementor-widget-video-playlist')) { 1375 obj.classList.remove('cmplz-elementor-widget-video-playlist'); 1376 obj.classList.add('elementor-widget-video-playlist'); 1377 } 1378 obj.setAttribute('data-settings', obj.getAttribute('data-cmplz-elementor-settings')); 1379 blockedContentContainers.push(obj); 1380 }); 1381 1382 document.querySelectorAll(selectorGeneric).forEach(obj => { 1383 let elementService = obj.getAttribute('data-service'); 1384 if ( cmplz_is_service_denied(elementService) ) { 1385 return; 1386 } 1387 if (obj.classList.contains('cmplz-elementor-activated')) return; 1388 1389 if (obj.classList.contains('cmplz-fb-video')) { 1390 obj.classList.remove('cmplz-fb-video'); 1391 obj.classList.add('fb-video'); 1392 } 1393 1394 obj.classList.add('cmplz-elementor-activated'); 1395 obj.setAttribute('data-href', obj.getAttribute('data-cmplz-elementor-href')); 1396 blockedContentContainers.push(obj.closest('.elementor-widget')); 1397 }); 1398 1399 /** 1400 * Trigger the widgets in Elementor 1401 */ 1402 for (var key in blockedContentContainers) { 1403 if (blockedContentContainers.hasOwnProperty(key) && blockedContentContainers[key] !== undefined) { 1404 let blockedContentContainer = blockedContentContainers[key]; 1405 if (elementorFrontend.elementsHandler) { 1406 elementorFrontend.elementsHandler.runReadyTrigger(blockedContentContainer) 1407 } 1408 var cssIndex = blockedContentContainer.getAttribute('data-placeholder_class_index'); 1409 blockedContentContainer.classList.remove('cmplz-blocked-content-container'); 1410 blockedContentContainer.classList.remove('cmplz-placeholder-' + cssIndex); 1411 } 1412 } 1413 1414 }); 1415 1416 1417 1418 document.addEventListener("cmplz_enable_category", function () { 1419 document.querySelectorAll('[data-rocket-lazyload]').forEach(obj => { 1420 if (obj.hasAttribute('data-lazy-src')) { 1421 obj.setAttribute('src', obj.getAttribute('data-lazy-src')); 1422 } 1423 }); 1424 }); 1425 1426 1427 1428 let cmplzBlockedContent = document.querySelector('.cmplz-blocked-content-notice'); 1429 if ( cmplzBlockedContent) { 1430 cmplzBlockedContent.addEventListener('click', function(event) { 1431 event.stopPropagation(); 1432 }); 1433 } 1434 1435//# sourceURL=cmplz-cookiebanner-js-after 1436</script>
vendor: 1 bytes, line 1436
1436
1437<script defer id="akismet-frontend-js" src="https://idealservice.com/wp-content/plugins/akismet/_inc/akismet-frontend.js?ver=1787296413"></script>
vendor: 1 bytes, line 1437
1437
1438<script id="siteorigin-panels-front-styles-js-extra"> 1439var panelsStyles = {"fullContainer":"body","stretchRows":"1"}; 1440//# sourceURL=siteorigin-panels-front-styles-js-extra 1441</script>
vendor: 1 bytes, line 1441
1441
1442<script id="siteorigin-panels-front-styles-js" src="https://idealservice.com/wp-content/plugins/siteorigin-panels/js/styling.min.js?ver=2.36.1"></script>
vendor: 1 bytes, line 1442
1442
1443<script id="elementor-pro-frontend-js-before"> 1444var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/idealservice.com\/wp-admin\/admin-ajax.php","nonce":"2c77f6262f","urls":{"assets":"https:\/\/idealservice.com\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/idealservice.com\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":false},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"facebook_sdk":{"lang":"en_US","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/idealservice.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}}; 1445//# sourceURL=elementor-pro-frontend-js-before 1446</script>
vendor: 1 bytes, line 1446
1446
1447<script id="elementor-pro-frontend-js" src="https://idealservice.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=4.3.0"></script>
vendor: 1 bytes, line 1447
1447
1448<script id="pro-elements-handlers-js" src="https://idealservice.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=4.3.0"></script>
vendor: 1 bytes, line 1448
1448
1449<script>document.body.className = document.body.className.replace("siteorigin-panels-before-js","");</script>
1449<script> 1450gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 1) {} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); 1451</script>
vendor: 1 bytes, line 1451
1451
1452<script> 1453gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "1", currentPage: "1", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_1" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_1"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_1" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 1, 1 ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } ); 1454</script>
vendor: 1 bytes, line 1454
1454
1455<script> 1456gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 2) {} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); 1457</script>
vendor: 1 bytes, line 1457
1457
1458<script> 1459gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "2", currentPage: "1", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_2" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_2"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_2" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 2, 1 ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } ); 1460</script>
vendor: 1 bytes, line 1460
1460
1461<script>window.lazyLoadOptions=[{elements_selector:"img[data-lazy-src],.rocket-lazyload,iframe[data-lazy-src]",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,callback_loaded:function(element){if(element.tagName==="IFRAME"&&element.dataset.rocketLazyload=="fitvidscompatible"){if(element.classList.contains("lazyloaded")){if(typeof window.jQuery!="undefined"){if(jQuery.fn.fitVids){jQuery(element).parent().fitVids()}}}}}},{elements_selector:".rocket-lazyload",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,}];window.addEventListener('LazyLoad::Initialized',function(e){var lazyLoadInstance=e.detail.instance;if(window.MutationObserver){var observer=new MutationObserver(function(mutations){var image_count=0;var iframe_count=0;var rocketlazy_count=0;mutations.forEach(function(mutation){for(var i=0;i<mutation.addedNodes.length;i++){if(typeof mutation.addedNodes[i].getElementsByTagName!=='function'){continue} 1462if(typeof mutation.addedNodes[i].getElementsByClassName!=='function'){continue} 1463images=mutation.addedNodes[i].getElementsByTagName('img');is_image=mutation.addedNodes[i].tagName=="IMG";iframes=mutation.addedNodes[i].getElementsByTagName('iframe');is_iframe=mutation.addedNodes[i].tagName=="IFRAME";rocket_lazy=mutation.addedNodes[i].getElementsByClassName('rocket-lazyload');image_count+=images.length;iframe_count+=iframes.length;rocketlazy_count+=rocket_lazy.length;if(is_image){image_count+=1} 1464if(is_iframe){iframe_count+=1}}});if(image_count>0||iframe_count>0||rocketlazy_count>0){lazyLoadInstance.update()}});var b=document.getElementsByTagName("body")[0];var config={childList:!0,subtree:!0};observer.observe(b,config)}},!1)</script>
1464<script data-no-minify="1" async src="https://idealservice.com/wp-content/plugins/wp-rocket/assets/js/lazyload/17.8.3/lazyload.min.js"></script>
1464<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a4340fc72c76c6c7',t:'MTc5MDc4MDA1Mw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
1464</body></html> 1465 1466<!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me -->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.