PageSourceSearch

https://gary-s-plumbing.com/contact.htm

html gary-s-plumbing.com collected 2026-09-29 14:58:25 UTC 115,037 bytes, 3,337 lines download raw bytes

1<!DOCTYPE html >
2<html lang="en">
3<head id=123>
4
5	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
6	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"/>
7	
8	<title>Contact Gary's Plumbing, Inc. | Irvine, CA</title>
9		<link href="/images/layout01/favicon.ico" type="image/x-icon" rel="shortcut icon"/>
10		<meta name="description" content="Contact Gary&#039;s Plumbing, Inc. in Irvine, CA. Call us today for professional service."/>
11		<link rel="canonical" href="https://gary-s-plumbing.com/contact.htm"/>
12		<meta property="og:type" content="website"/>
13	<meta property="og:title" content="Contact Gary&#039;s Plumbing, Inc. | Irvine, CA"/>
14	<meta property="og:description" content="Contact Gary&#039;s Plumbing, Inc. in Irvine, CA. Call us today for professional service."/>
15	<meta property="og:url" content="https://gary-s-plumbing.com/contact.htm"/>
16	<meta property="og:site_name" content="Gary&#039;s Plumbing, Inc."/>
17	<meta name="twitter:card" content="summary"/>
18	<meta name="google-site-verification" content="LJnsGmK6O7PBrcnm8-iy-FuVb9KyhxvvYvMbJyWGOag"/>
19	<meta name="msvalidate.01" content="1F45F9DE9326EAFCF993AAACB733F10C"/>
20
21	
22	<!--suppress RegExpAnonymousGroup -->
23	<style>
24				/* W3.CSS 4.04 Apr 2017 by Jan Egil and Borge Refsnes */
25html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
26/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
27html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
28article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}
29audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
30audio:not([controls]){display:none;height:0}[hidden],template{display:none}
31a{background-color:transparent}
32a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline dotted}
33dfn{font-style:italic}mark{background:#ff0;color:#000}
34small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
35sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}svg:not(:root){overflow:hidden}
36code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
37button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold}
38button,input{overflow:visible}button,select{text-transform:none}
39button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}
40button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0}
41button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText}
42fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
43legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
44[type=checkbox],[type=radio]{padding:0}
45[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
46[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
47[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}
48::-webkit-input-placeholder{color:inherit;opacity:0.54}
49::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
50/* End extract */
51html,body{font-family:"Segoe UI",system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5}html{overflow-x:hidden}
52h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif}
53h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",system-ui,-apple-system,sans-serif;font-weight:500;margin:10px 0}.w3-wide{letter-spacing:4px}
54hr{border:0;border-top:1px solid #eee;margin:20px 0}
55.w3-image{max-width:100%;height:auto}img{margin-bottom:-5px}a{color:inherit}
56.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
57.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
58.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
59.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
60.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
61.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px}
62.w3-btn,.w3-button{border:none;display:inline-block;outline:0;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
63.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
64.w3-btn,.w3-button{-webkit-touch-callout:none;user-select:none}
65.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none}
66.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none}
67.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%}
68.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none}
69.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block}
70.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s}
71.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%}
72.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc}
73.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer}
74.w3-dropdown-hover:hover .w3-dropdown-content{display:block;z-index:1}
75.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
76.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
77.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0}
78.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}
79.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
80.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
81.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%}
82.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px}
83.w3-main,#main{transition:margin-left .4s}
84.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
85.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
86.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto}
87.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;outline:none;display:block}
88.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left}
89.w3-bar .w3-button{white-space:normal}
90.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;outline:none;white-space:normal;float:none}
91.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%}
92.w3-responsive{overflow-x:auto}
93.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
94.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both}
95.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%}
96.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%}
97.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%}
98.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%}
99@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}
100	.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%}
101	.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}}
102@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%}
103	.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%}
104	.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}}
105.w3-content{max-width:980px;margin:auto}.w3-rest{overflow:hidden}
106.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell}
107.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom}
108.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important}
109@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px}
110	.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative}
111	.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center}
112	.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}}
113@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}}
114@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}}
115@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}}
116@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}}
117.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0}
118.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
119.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0}
120.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0}
121.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
122.w3-display-left{position:absolute;top:50%;left:0;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
123.w3-display-right{position:absolute;top:50%;right:0;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
124.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
125.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
126.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none}
127.w3-display-position{position:absolute}
128.w3-circle{border-radius:50%}
129.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
130.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
131/* Cards in 2-/3-column rows stretch to equal height. :has() scopes this to rows that contain cards so other column layouts keep float behavior; browsers without :has() fall back to unequal heights. */
132.w3-row-padding:has(> .w3-half > .w3-card),.w3-row-padding:has(> .w3-third > .w3-card){display:flex;flex-wrap:wrap}
133.w3-row-padding>.w3-half:has(> .w3-card),.w3-row-padding>.w3-third:has(> .w3-card){display:flex;flex-direction:column;float:none}
134.w3-row-padding>.w3-half>.w3-card,.w3-row-padding>.w3-third>.w3-card{flex:1}
135.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
136.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
137.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
138.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
139.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}
140.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
141.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
142.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
143.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
144.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
145.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
146.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
147.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
148.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
149.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
150.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1}
151.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75}
152.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)}
153.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)}
154.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)}
155.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important}
156.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important}
157.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important}
158.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important}
159.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important}
160.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important}
161.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important}
162.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important}
163.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important}
164.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important}
165.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important}
166.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important}
167.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important}
168.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important}
169.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important}
170.w3-left{float:left!important}.w3-right{float:right!important}
171.w3-button:hover{color:#000!important;background-color:#ccc!important}
172.w3-transparent,.w3-hover-none:hover{background-color:transparent!important}
173.w3-hover-none:hover{box-shadow:none!important}
174/* Colors */
175.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important}
176.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
177.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
178.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
179.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important}
180.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
181.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important}
182.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
183.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
184.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
185.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
186.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important}
187.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important}
188.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
189.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
190.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
191.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
192.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important}
193.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
194.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important}
195.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
196.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important}
197.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important}
198.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#bbb!important}
199.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important}
200.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important}
201.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important}
202.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important}
203.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important}
204.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important}
205.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important}
206.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important}
207.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important}
208.w3-text-yellow,.w3-hover-text-yellow:hover{color:#ffeb3b!important}
209.w3-text-white,.w3-hover-text-white:hover{color:#fff!important}
210.w3-text-black,.w3-hover-text-black:hover{color:#000!important}
211.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important}
212.w3-text-amber{color:#ffc107!important}
213.w3-text-aqua{color:#00ffff!important}
214.w3-text-light-blue{color:#87CEEB!important}
215.w3-text-brown{color:#795548!important}
216.w3-text-cyan{color:#00bcd4!important}
217.w3-text-blue-grey,.w3-text-blue-gray{color:#607d8b!important}
218.w3-text-light-green{color:#8bc34a!important}
219.w3-text-indigo{color:#3f51b5!important}
220.w3-text-khaki{color:#b4aa50!important}
221.w3-text-lime{color:#cddc39!important}
222.w3-text-orange{color:#ff9800!important}
223.w3-text-deep-orange{color:#ff5722!important}
224.w3-text-pink{color:#e91e63!important}
225.w3-text-purple{color:#9c27b0!important}
226.w3-text-deep-purple{color:#673ab7!important}
227.w3-text-sand{color:#fdf5e6!important}
228.w3-text-teal{color:#009688!important}
229.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important}
230.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important}
231.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important}
232.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important}
233.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important}
234.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important}
235.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important}
236.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important}
237.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#bbb!important}
238
239/*********************************************************/
240
241.w3-container.pad0 { padding: 0; }
242.pad-sides-10 { padding-left: 10px; padding-right: 10px}
243
244body {
245	margin:0;
246	font-family: "Segoe UI",system-ui,-apple-system,sans-serif;
247	color: black;
248	/* see: https://stackoverflow.com/questions/2545542/font-size-rendering-inconsistencies-on-an-iphone*/
249	-webkit-text-size-adjust: 100%;
250}
251
252h1, h2, h3, h4 {
253	font-family: "Segoe UI",system-ui,-apple-system,sans-serif;
254	font-weight: 500;
255	line-height: 1.2;
256}
257h1 {font-size: 36px;}
258h2 {font-size: 30px;}
259h3 {font-size: 24px;}
260h4 {font-size: 20px;}
261p {
262	font-weight: 400;
263	line-height: 1.5;
264}
265a {
266	color: #2971b3;
267	font-weight: 500;
268}
269.CallToAction {
270	text-align: center;
271}
272div.CallToAction {
273	margin-top: 80px;
274	margin-bottom: 80px;
275}
276.CallToAction h1, .CallToAction h2, .CallToAction h3, .CallToAction h4, .CallToAction a {
277	font-weight: 500;
278}
279.CallToAction p b {
280	font-weight: 500;
281}
282div.CallToAction a.phoneNumber {
283	font-size: 40px;
284}
285
286#header {
287	position: fixed;
288	top: 0;
289	left: 0;
290	z-index: 999;
291	width: 100%; /* margins can make 100% width wider than viewport */
292	box-shadow: 0 2px lightgrey;
293}
294.headerStyle, .headerStyle * {
295	font-weight:300;
296}
297.headerLine1Style h1 {
298	font-size: 8vmin;
299	line-height: 1.4em;
300	justify-content: right;
301	/*margin-left: 20px;*/
302	/*margin-right: 20px;*/
303}
304@media screen and (min-width: 320px) {
305	.headerLine1Style h1 {
306		font-size: 20px;
307	}
308}
309@media screen and (min-width: 768px) {
310	.headerLine1Style h1 {
311		font-size: 30px;
312	}
313}
314@media screen and (min-width: 922px) {
315	.headerLine1Style h1 {
316		font-size: 36px;
317	}
318}
319@media only screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-min-device-pixel-ratio: 1) {
320	/* ipad fix - font wider than windows */
321	.headerLine1Style h1 {
322		font-size: 28px;
323	}
324}
325.header_line1_company {
326	max-width: 60%;
327}
328.headerLine1Style a {
329	text-decoration: none;
330	cursor: pointer;
331}
332.headerLine1Style a h2 {
333	margin: 0;
334}
335
336.headingTxt{text-align:center; font-size:34px; font-weight:bold; color:#000000; line-height:2;
337	padding-top:10px;
338}
339.headingTxt small{ display:block; font-weight:normal; font-size:18px;}
340
341.contentX {
342	text-align: left;
343}
344.contentX h1, .contentX h2, .contentX h3, .contentX h4 {
345	margin-top: 1.2em;
346	margin-bottom: 1.2em;
347}
348.contentX img {
349	margin: 0 -16px 10px;
350	border: 3px transparent;
351	max-width: calc(100% + 32px);
352}
353.contentX img[style*="width:100%"],
354.contentX img[style*="width: 100%"] {
355	width: calc(100% + 32px) !important;
356	height: auto !important;
357}
358.contentX img[style*="float:left"],
359.contentX img[style*="float: left"],
360.contentX img.floatleft {
361	margin: 0 15px 10px 0;
362	max-width: 100%;
363}
364.contentX img[style*="float:right"],
365.contentX img[style*="float: right"] {
366	margin: 0 0 10px 15px;
367	max-width: 100%;
368}
369.contentX img.autoPost {
370	margin-left: 0;
371	margin-bottom: 0;
372	border: 2px solid transparent ;
373	vertical-align: bottom;
374}
375.contentX figure {
376	margin: 0 0 2em;
377}
378.photoPage { max-width: 700px; margin: 0 auto}
379.photoPage p {min-height: 1.25em}
380.photoPage p img { margin: 0 auto 4px}
381
382.contentX ul { margin-bottom: 20px}
383.contentX li {
384	margin-bottom: 10px;
385	list-style-type: disc;
386}
387
388.contentX {
389	overflow:hidden;
390	font-size:16px;
391	line-height:1.7;
392	color:#000000;
393	padding: 40px 16px;
394}
395
396#header_subtext {
397	font-weight: normal;
398	color: black;
399	padding: 0 0 10px 0;
400	font-size: 20px;
401}
402.greyblocks{overflow:hidden; text-align:center; font-size:20px; font-weight:600;
403	margin: 10px auto 10px;
404}
405.greyblocks-box {
406	border-color: #f0f0f0;
407	border-width: 1px;
408	border-style: solid;
409	padding:10px;
410	max-width: 600px;
411	margin: 35px auto 35px;
412}
413.greyblock-col-1{padding:10px 0; background:#ffffff; overflow:hidden; margin:10px 0 0 0;box-sizing: unset}
414.greyblocks span{color:#2971b3; font-weight:500; font-size:18px}
415.greyblocks img {max-width:100%; height:auto; border-style: none}
416
417.callfreeQuote{text-align:center; padding:10px 0; overflow:hidden; clear:both; font-size:30px; font-weight:normal;
417 color:#000000;}
418.callUsBtn{clear:both; width:280px; padding:10px 10px; border-radius:40px; background:#49b9bf; font-size:30px; font-weight:bold; color:#ffffff; margin:10px auto;}
419.callUsBtn i{ padding:6px 10px; background:#ffffff; color:#49b9bf; border-radius:50px; }
420
421.getPriceDiv{background:#428bca; padding:14px 2px 2px 2px; text-align:center; font-size:26px; color:#ffffff; overflow:hidden;
422	margin: 35px auto 35px;
423	max-width: 640px;
424	border-radius: 12px;
425	box-shadow: 0 4px 20px rgba(0,0,0,0.10);
426}
427.getPriceFormDiv{background:#f6f7fe; padding:20px 20px 10px 20px; overflow:hidden; margin:10px 0 0 0; border-radius: 0 0 10px 10px;}
428.getPriceFormDiv ul{padding:0; margin:0; list-style-type:none;}
429.getPriceFormDiv ul li{padding:6px 0; margin:0; display:block; font-size:14px; }
430.text-field{border:1px solid #d4d4d4; color:#555; font-weight:normal; padding:14px; width:92%; font-size: 15px; border-radius: 6px; transition: border-color 0.2s;}
431.text-field:focus{border-color:#2971b3; outline:none;}
432.check-field { padding-left: 24px; text-align: left; vertical-align: center;}
433.check-field label { color: black;}
434.submit-field{background:#2971b3; border: medium none; padding: 14px 0; display: inline-block; cursor: pointer; color: #FFF; width: 100%;
435	font-size: 20px;
436	border-radius: 8px;
437	font-weight: 500;
438	transition: background-color 0.2s, transform 0.1s;
439}
440.submit-field:hover{background:#1e5f99;}
441.submit-field:active{transform: scale(0.98);}
442textarea{font-size:16px; font-weight:normal;}
443.followus img{padding:15px}
444
445.cities-panel{
446	padding-bottom: 30px;
447}
448
449.cities-panel h2,.cities-panel h3 {
450	display: inline-block;
451}
452.cities-panel h3 {margin:30px 0 }
453.cities-panel ul{
454	padding:0;
455	margin:0;
456	list-style-type:none;
457	overflow: hidden;
458}
459.cities-panel ul li{
460	margin-bottom: 2px;
461	font-size:16px;
462	font-weight:500; display:inline-block; line-height:28px; width:29%;
463}
464.cities-panel ul li a{text-decoration: none}
465.cities-panel ul li a:hover{text-decoration:underline;}
466
467.wrapperuseful{padding:0; overflow:hidden;}
468.usefullinksDiv{padding:0 15px 15px 15px; overflow:hidden;}
469.usefullinksDiv h2{ font-size:28px; font-weight:bold; color:#000000; padding:0; margin:0;}
470.usefullinksDiv ul{ list-style:none; margin:0 0 10px 0; padding:0; overflow:hidden;}
471.usefullinksDiv ul li {
472	margin:0 0 0 40px; padding:5px 0; float:left; width:26%;
473}
474.usefullinksDiv ul li a{ color:#000000; text-decoration:none;}
475a.reviewBtn{
476	text-decoration:none; display:block; clear:both;
477	margin: 0 auto;
478}
479a.reviewBtn div {
480	background: orange;
481	border: medium none;
482	padding: 10px 0;
483	cursor: pointer;
484	color: #FFF;
485	font-size: 20px;
486	text-align: center;
487	border-radius: 6px;
488	margin: 50px auto;
489	font-weight: 400;
490}
491
492.smallScreenMenuPhone a, .header_line1_phone a {
493	cursor: pointer;
494	color: #FFF;
495	text-align:center;
496}
497
498.useboxright{
499	text-align:center; background: black; padding:15px;
499 color:#ffffff;
500	font-weight: 300;
501}
502.callNoDiv{
503	padding:10px; text-align:center; font-size:26px;
504	color:#ffffff;
505	border-radius: 6px;
506	max-width: 300px;
507	margin: 0 auto;
508}
509.callNoDiv a {
510	text-align:center; font-size:32px;
511	color:#ffffff; text-decoration: none; position: relative;
512
513	font-weight: 400;
514	border-radius:6px;
515	border-style: solid;
516	border-color: rgba(170, 170, 170, .4);
517	border-width: 1px;
518	padding: 2px 20px 5px;
519
520}
521.callNoDiv span a{font-size:.6em}
522
523footer { margin-top: 40px }
524.footerDivMn{
525	width:100%;
526	text-align:center;
527	font-size:12px;
528	color:#ffffff;
529	background: #2971b3;
530	clear:both;
531}
532
533.toggleMenu {
534	display:none;
535	clear:both;
536	font-size: 16px;
537	color: white;
538	padding: 10px 10px 10px 10px;
539	cursor: pointer;
540}
541a.toggleMenu {text-decoration:none;}
542
543.contentX a.phoneNumber, a.phoneNumber {
544	color: #2870b3;
545	text-decoration: none;
546	white-space: nowrap;
547}
548
549#townServiceList p {
550	min-height: 50px;
551}
552#townServiceList img {
553	float: left;
554	border: none;
555	margin: 8px 10px 0 0;
556	box-shadow: 2px 2px 2px grey;
557	width: 50px;
558	height: 50px !important;
559	max-width: 50px;
560}
561#townServiceList a {
562	font-weight: 700;
563	font-size: 15px;
564	text-decoration:none;
565}
566
567div.BBB {
568	padding-top: 10px;
569}
570p.BBBText {
571	font-size: 16px;
572	font-weight: bold;
573	text-align: center;
574}
575p.BBBText a {
576	text-decoration: none;
577}
578p.BBBImage {
579	text-align: center;
580}
581.contentX p.BBBImage img {
582	display: inline-block;
583	margin-right: 10px;
584	margin-left:  10px;
585}
586.BBBImage img {
587	border:none;
588	margin: 0;
589	box-shadow: none;
590}
591.BBB_script {
592	width: 282px;
593	margin: auto;
594	padding: 30px 0 30px 0;
595}
596
597img.CreditCard {
598	max-width:100%;
599	padding-top: 15px;
600}
601.license { margin: auto; }
602
603ul.listCSV {
604	padding:0
605}
606.listCSV li {
607	display: inline;
608}
609.listCSV li:after {
610	content: ", ";
611}
612.listCSV li:last-child:after {
613	content: "";
614}
615hr {
616	clear: both;
617	margin-top: 20px;
618	margin-bottom: 20px;
619	border: 0;
620	border-top: 1px solid #d6d6d6;
621}
622ul.zipCodesServed li {
623	font-weight: 400;
624}
625
626/* override inline style ... update all themes, then remove inline style in site_render */
627p.ctaPhone a{font-size: 36px; text-align: center}
628
629.smallScreenHeader {display: none}
630.showLargeScreenHeader {
631	display:inherit
632}
633.showLargeScreenHeader a {
634	font-size: 36px;
635}
636.headerBackground {
637	background-color: darkorange;
638}
639
640.contentX {
641	width: 100%;
642}
643
644.contentX .selectTestimonials {
645	clear: both;
646	margin-top: 40px;
647	margin-bottom: 40px;
648}
649.contentX .selectTestimonials  ul {
650	padding-left: 0;
651}
652.contentX .selectTestimonials  ul li {
653	list-style: none;
654	margin:2px 5px 20px 1px;
655	padding: 18px 22px;
656	border-radius: 8px;
657	box-shadow: 0 2px 12px rgba(0,0,0,0.08);
658	border: 1px solid #eee;
659}
660.contentX .testimonialBody {
661	font-weight: 400;
662	font-style: italic;
663}
664.contentX div.schema.review span[itemprop="ratingValue"] {
665	display:none
666}
667.contentX div.schema.review .review-stars {
668	color: #428BCA;
669	font-size: 20px;
670}
671.contentX div.schema.review span[itemprop="datePublished"]::before {
672	content: "Review date: ";
673	font-size: 12px;
674}
675.contentX div.schema.review span[itemprop="datePublished"] {
676	font-style: italic;
677	color: grey;
678	font-size: 12px;
679}
680span[itemprop="datePublished"] {
681	display:none
682}
683
684.contentX .selectTestimonials  ul li strong em, .contentX .selectTestimonials .testimonialAuthor {
685	font-weight: 500;
686	font-style: italic;
687}
688
689.paypal {max-width:100%}
690
691ul.phoneList {list-style: none;padding-left: 0;margin:0 auto}
692footer li.primaryPhone {
693	margin-bottom: 10px;
694}
695.phoneSmall {font-size: 16px; font-weight: normal;}
696.mainTopSpacer {height: 105px}
697
698.w3-container .padGetPrice {
699	padding-top: 40px;
700	margin-top: -40px;
701}
702
703.center-cropped {
704	width: 100%;
705	max-height: 60vh;
706	overflow: hidden;
707}
708@media screen and (min-height: 1000px) {
709	.center-cropped {
710		height: 1000px;
711	}
712}
713@media screen and (max-width: 600px) {
714	.center-cropped {
715		height: 400px;
716	}
717}
718
719/* LCP image - visible with object-fit cover for cropping effect */
720/* Note: object-position can be overridden per-registration via inline media queries */
721/* for responsive focal point control (GalleryFocalPoint{Mobile,Tablet,Desktop} reg_vars) */
722.center-cropped img {
723	width: 100%;
724	height: 100%;
725	object-fit: cover;
726	object-position: center;
727}
728@media (max-width: 768px) {
729    .center-cropped {
730        max-height: 40vh;
731    }
732}
733
734/* Gallery Overlay Styles */
735.center-cropped.has-overlay {
736	position: relative;
737}
738
739/* Full image tint overlay - covers entire image */
740.gallery-image-tint {
741	position: absolute;
742	top: 0;
743	left: 0;
744	right: 0;
745	bottom: 0;
746	z-index: 5;  /* Above image, below positioned overlay */
747	pointer-events: none;  /* Allow clicks through to image */
748}
749
750/* Positioned overlay sits above tint */
751.gallery-overlay {
752	position: absolute;
753	z-index: 10;  /* Above tint layer */
754	padding: 20px;
755	max-width: 80%;
756	color: white;
757	text-shadow: 2px 2px 4px rgba(0,0,0,0.8);
758}
759.gallery-overlay h1,
760.gallery-overlay h2,
761.gallery-overlay h3,
762.gallery-overlay h4,
763.gallery-overlay p {
764	margin: 0 0 0.5em 0;
765	color: inherit;
766	text-shadow: inherit;
767}
768.gallery-overlay a {
769	color: inherit;
770	text-decoration: underline;
771}
772
773/* Overlay vertical positions */
774.gallery-overlay-top-left,
775.gallery-overlay-top-center,
776.gallery-overlay-top-right {
777	top: 5%;
778}
779.gallery-overlay-middle-left,
780.gallery-overlay-center,
781.gallery-overlay-middle-right {
782	top: 50%;
783}
784.gallery-overlay-bottom-left,
785.gallery-overlay-bottom-center,
786.gallery-overlay-bottom-right {
787	bottom: 5%;
788}
789
790/* Overlay horizontal positions */
791.gallery-overlay-top-left,
792.gallery-overlay-middle-left,
793.gallery-overlay-bottom-left {
794	left: 5%;
795}
796.gallery-overlay-top-center,
797.gallery-overlay-center,
798.gallery-overlay-bottom-center {
799	left: 50%;
800}
801.gallery-overlay-top-right,
802.gallery-overlay-middle-right,
803.gallery-overlay-bottom-right {
804	right: 5%;
805}
806
807/* Overlay transforms for centering */
808.gallery-overlay-top-center,
809.gallery-overlay-bottom-center {
810	transform: translateX(-50%);
811}
812.gallery-overlay-middle-left,
813.gallery-overlay-middle-right {
814	transform: translateY(-50%);
815}
816.gallery-overlay-center {
817	transform: translate(-50%, -50%);
818}
819
820/* Responsive font scaling for overlay */
821@media (max-width: 479px) {
822	.gallery-overlay {
823		font-size: 0.7em;
824		padding: 8px;
825		max-width: 90%;
826	}
827}
828@media (min-width: 480px) and (max-width: 767px) {
829	.gallery-overlay {
830		font-size: 0.85em;
831		padding: 12px;
832		max-width: 85%;
833	}
834}
835@media (min-width: 768px) and (max-width: 1199px) {
836	.gallery-overlay {
837		font-size: 1em;
838		padding: 16px;
839	}
840}
841@media (min-width: 1200px) {
842	.gallery-overlay {
843		font-size: 1.2em;
844		padding: 20px;
845	}
846}
847
848.center_image {
849	display: block;
850	max-width:100%;
851	height:auto;
852	margin: 0 auto;
853}
854
855a.privacyPolicy { text-decoration: none}
856a.privacyPolicy:hover { text-decoration: underline}
857
858.video-container {
859	position:relative;
860	padding-bottom:56.25%;
861	padding-top:30px;
862	height:0;
863	overflow:hidden;
864}
865.video-container iframe, .video-container object, .video-container embed {
866	position:absolute;
867	top:0;
868	left:0;
869	width:100%;
870	height:100%;
871}
872/* add after video-container if video is square */
873.video-square {
874	padding-bottom: 100%
875}
876
877/* was in sm-core-css.css */
878/* Mobile first layout SmartMenus Core CSS (it's not recommended editing these rules)
879   You need this once per page no matter how many menu trees or different themes you use.
880-------------------------------------------------------------------------------------------*/
881
882.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;-webkit-tap-highlight-color:rgba(0,0,0,0);}
883.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right;}
884.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0;}
885.sm ul{display:none;}
886.sm li,.sm a{position:relative; text-align: left}
887.sm a{display:block;}
888.sm a.disabled{cursor:not-allowed;}
889.sm:after{display:block;height:0; /*noinspection CssInvalidPropertyValue*/
890	font:0/0 serif;clear:both;visibility:hidden;overflow:hidden;}
891.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}
892/* ----- end ------ */
893
894@media screen and (max-width:600px) {
895	h1 {
896		font-size: 30px;
897	}
898
899	h2 {
900		font-size: 26px;
901	}
902
903	h3 {
904		font-size: 22px;
905	}
906
907	h4 {
908		font-size: 20px;
909	}
910}
911
912@media screen and (min-width:768px) {
913	a.reviewBtn {width:300px}
914	/* smartmenu hides menu when width expands after menu toggle clicked twice*/
915	.contentX img.floatleft {float:left;margin-left:0;margin-right:10px;}
916}
917@media screen and (min-width:981px) {
918	.contentX img {
919		margin: 0 0 10px;
920		width: 100%;
921		max-width: 100%;
922		height: auto;
923	}
924	.contentX img[style*="float"],
925	.contentX img.floatleft {
926		width: auto;
927	}
928	.contentX img.autoPost {
929		width: auto;
930	}
931}
932@media screen and (max-width:768px) {
933	.container-fluid{ width:100%; margin:auto; overflow:hidden;}
934	/* full menu */
935	.header {padding: 6px 15px 6px 15px;}
936	.logoDiv{
937        text-align:center; padding-top:6px; padding-bottom: 6px;
938    }
939}
940@media screen and (max-width:767px) {
941	.cities-panel ul li{width:28%;}
942	a.reviewBtn div{
943		max-width: 300px;
944		margin: 0 auto 40px;
945	}
946	.contentX * {margin-right: 0;}
947	.contentX img {
948		margin: 0 -16px 10px;
949		border: none;
950		max-width: calc(100% + 32px);
951		height: auto !important;
952	}
953	.contentX img.autoPost {
954		margin: 0 auto;
955	}
956	.contentX img.floatleft {}
957}
958@media screen and (max-width:768px) {
959	.contentX {
960		text-align:left;
961	}
962	h2 {text-align: center}
963}
964
965@media screen and (max-width:767px) {
966	.contentX * img{ float:none !important; display:block; margin-left:-16px; margin-right:-16px}
967	/* Preserve inline centering for icons inside cards/specials (override the edge-bleed above) */
968	.contentX .w3-card img,
969	.contentX [data-special-id] img { display:inline; margin-left:0; margin-right:0; max-width:100%; }
970	.contentX img[style*="float:left"],
971	.contentX img[style*="float: left"],
972	.contentX img[style*="float:right"],
973	.contentX img[style*="float: right"],
974	.contentX img.floatleft {
975		margin: 0 -16px 10px;
976		max-width: calc(100% + 32px);
977		width: calc(100% + 32px) !important;
978		height: auto;
979	}
980	/* Edge-to-edge content images on mobile. Content images already get the
981	   negative side margins above; only the width was missing for fixed-pixel
982	   images (e.g. a centered 400px hero photo), which left side gaps on phones
983	   wider than the image. Force them to fill. Desktop is untouched, so low-res
984	   photos stay sharp at their native size on large screens. */
985	.contentX img {
986		max-width: calc(100% + 32px);
987		width: calc(100% + 32px) !important;
988		height: auto !important;
989	}
990	/* ...but never enlarge small / decorative images. These selectors are more
991	   specific than the rule above, so they win even though both use !important. */
992	.contentX img.noBleed,
993	.contentX img[alt="Author's Face"],
994	.contentX img[src*="/faces/"],
995	.contentX img[src*="/bbb/"],
996	.contentX p.BBBImage img,
997	.contentX .w3-card img,
998	.contentX [data-special-id] img {
999		width: auto !important;
1000		max-width: 100% !important;
1001		margin-left: 0;
1002		margin-right: 0;
1003		display: inline;
1004	}
1005	/* ...except a small image that floats on desktop: inline, the text it floated beside
1006	   would start on its bottom line, a word or two stranded to its right. Give it a row. */
1007	.contentX img.noBleed[style*="float:left"],
1008	.contentX img.noBleed[style*="float: left"],
1009	.contentX img.noBleed[style*="float:right"],
1010	.contentX img.noBleed[style*="float: right"],
1011	.contentX img.noBleed.floatleft {
1012		display: block;
1013		margin-left: auto;
1014		margin-right: auto;
1015	}
1016	/* Photos page: each detail photo spans almost the full screen width with a thin
1017	   uniform white border (one photo per row). Using width:100% (pinned to the row)
1018	   rather than auto also stops the retina @2x swap (retina99.js) from enlarging
1019	   them, since the width no longer follows the swapped file's intrinsic size.
1020	   Grid thumbnails keep their own cover sizing. */
1021	.contentX .photo-category-figures figure {
1022		flex: 0 0 100% !important;
1023		max-width: 100% !important;
1024		margin: 10px 0 !important;
1025	}
1026	.contentX img.autoPost {
1027		width: 100% !important;
1028		max-width: 100% !important;
1029		height: auto !important;
1030		margin: 0 auto !important;
1031	}
1032	.contentX .photo-category-card-img img {
1033		width: 100% !important;
1034		height: 100% !important;
1035		max-width: 100% !important;
1036	}
1037	/* A table cannot shrink below the min-content width of its columns, so a wide
1038	   one clips at the viewport edge (even with max-width:100%). display:block
1039	   lets max-width cap the box and overflow-x scroll the excess sideways.
1040	   width:fit-content keeps narrow tables shrink-to-fit (and centered via
1041	   margin:auto / align=center) instead of stretching their border full-width. */
1042	.contentX table {
1043		display: block;
1044		width: fit-content;
1045		max-width: 100% !important;
1046		overflow-x: auto;
1047	}
1048	/* Wide tables stamped by ContentMutate::stampTableCardLabels (class
1049	   mobile-cards + data-label per cell) render as stacked cards instead of
1050	   scrolling: each body row becomes a card titled by its first cell, and the
1051	   other cells show their column header from data-label. Unstamped tables
1052	   keep the scroll fallback above; desktop renders the normal table. */
1053	.contentX table.mobile-cards {
1054		width: 100%;
1055		max-width: 100% !important;
1056		border: none;
1057		overflow: visible;
1058		background: transparent;
1059	}
1060	.contentX .mobile-cards thead,
1061	.contentX .mobile-cards tbody { display: block; width: 100%; }
1062	.contentX .mobile-cards tr {
1063		display: block;
1064		/* Google Docs pastes style="height:0pt" on every row; as a block that
1065		   collapses the card and stacks every row's text on top of the next. */
1066		height: auto !important;
1067		border: 1px solid #d7dbe0;
1068		border-radius: 10px;
1069		margin: 0 0 14px;
1070		padding: 10px 14px;
1071		background: #fff;
1072		box-shadow: 0 2px 6px rgba(0,0,0,.06);
1073	}
1074	.contentX .mobile-cards tr.mobile-cards-hdr { display: none; }
1075	.contentX .mobile-cards td,
1076	.contentX .mobile-cards th {
1077		display: block;
1078		width: 100% !important;
1079		height: auto !important;
1080		border: none !important;
1081		padding: 7px 0;
1082		text-align: left;
1083	}
1084	.contentX .mobile-cards td:first-child,
1085	.contentX .mobile-cards th:first-child {
1086		font-weight: 800;
1087		font-size: 17px;
1088		border-bottom: 1px solid #eef0f2 !important;
1089		padding-bottom: 8px;
1090		margin-bottom: 4px;
1091	}
1092	.contentX .mobile-cards td::before,
1093	.contentX .mobile-cards th::before {
1094		content: attr(data-label);
1095		display: block;
1096		font-weight: 700;
1097		font-size: 12.5px;
1098		letter-spacing: .03em;
1099		text-transform: uppercase;
1100		color: #546575;
1101		margin-bottom: 1px;
1102	}
1103	.contentX .mobile-cards td:first-child::before,
1104	.contentX .mobile-cards th:first-child::before { content: none; }
1105	.logoDiv span{
1106		font-size:14px;
1107	}
1108	.cities-panel ul li{ float:none; width:90%;}
1109	.usefullinksDiv ul li{width:36%;}
1110	.headingTxt{
1111		font-size:26px;
1112	}
1113	.getPriceDiv {margin-top:20px}
1114
1115	h1, h2, h3, h4 {text-align: center}
1116
1117}
1118
1119/* menu mobile v desktop*/
1120@media screen and (max-width:767px) {
1121	.showLargeScreenHeader {display: none}
1122	.smallScreenHeader {display: block;}
1123	.smallScreenMenuPhone {
1124		color: white;
1125		float:right;
1126		padding:5px 10px;
1127		font-size:20px;
1128		font-weight: bold
1129	}
1130	.toggleMenu{display:block;}
1131	.menu{ display:none;}
1132	.menu{ width:98%;}
1133
1134	.smallScreenMenuPhone a, .header_line1_phone a {
1135		border-radius:6px;
1136		border-style: solid;
1137		border-color: rgba(170, 170, 170, .4);
1138		border-width: 1px;
1139		padding: 2px 20px 5px;
1140	}
1141}
1142
1143/* Shrinking header on scroll */
1144.mainTopSpacer {
1145	transition: height 0.3s ease-out;
1146}
1147
1148/* Gallery text adjustment when header shrinks */
1149body.header-shrunk .gallery-text-container {
1150	top: 75px;
1151	transition: top 0.3s ease-out;
1152}
1153.gallery-text-container {
1154	transition: top 0.3s ease-out;
1155}
1156
1157/* Desktop: logo scales, wrappers shrink in height, phone stays full size */
1158@media screen and (min-width:768px) {
1159	.headerLine1Style .header_line1_company {
1160		transition: height 0.3s ease-out;
1161	}
1162	.headerLine1Style .call99-flex-vert-center {
1163		transition: height 0.3s ease-out;
1164	}
1165	.showLargeScreenHeader img {
1166		transition: transform 0.3s ease-out;
1167		transform-origin: left top;
1168	}
1169}
1170
1171/* Mobile: logo scales, row collapses via negative margin */
1172@media screen and (max-width:767px) {
1173	.headerLine1Style {
1174		transition: margin-bottom 0.3s ease-out;
1175	}
1176	.smallScreenHeader img {
1177		transition: transform 0.3s ease-out;
1178		transform-origin: center top;
1179	}
1180}
1181
1182/* Mobile Call Bar - mobile only */
1183/* Note: popup lead form positioning is handled in pop.up.lead.form.css */
1184
1185/* Hide mobile call bar on desktop */
1186@media screen and (min-width:768px) {
1187	#mobile-call-bar {
1188		display: none;
1189	}
1190}
1191
1192/* sm-blue.css */
1193.sm-blue {
1194	background: transparent;
1195}
1196.sm-blue a, .sm-blue a:hover, .sm-blue a:focus, .sm-blue a:active {
1197	padding: 10px 14px;
1198	/* make room for the toggle button (sub indicator) */
1199	/*background: black;*/
1200	color: white;
1201	font-size: 14px;
1202	font-weight: 500;
1203	line-height: 23px;
1204	text-transform:uppercase;
1205	text-decoration: none;
1206}
1207.sm-blue a:hover {
1208	background-color: #a1d1e8;
1209}
1210.sm-blue a.current {
1211	background: #e80000;
1212	color: white;
1213}
1214.sm-blue a.disabled {
1215	color: #a1d1e8;
1216}
1217.sm-blue a span.sub-arrow {
1218	position: absolute;
1219	top: 48%;
1220	margin-top: -17px;
1221	left: auto;
1222	right: 4px;
1223	width: 34px;
1224	height: 34px;
1225	overflow: hidden;
1226	font: bold 16px/34px monospace !important;
1227	text-align: center;
1228	text-shadow: none;
1229	background: #143621;
1230	border-radius: 4px; text-decoration:none;
1231}
1232.sm-blue a.highlighted span.sub-arrow:before {
1233	display: block;
1234	content: '-';
1235}
1236.sm-blue > li:first-child > a, .sm-blue > li:first-child > :not(ul) a {
1237}
1238.sm-blue > li:last-child > a, .sm-blue > li:last-child > *:not(ul) a, .sm-blue > li:last-child > ul,
1239.sm-blue > li:last-child > ul > li:last-child > a, .sm-blue > li:last-child > ul > li:last-child > *:not(ul) a, .sm-blue > li:last-child > ul > li:last-child > ul,
1240.sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > a, .sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > *:not(ul) a, .sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul,
1241.sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > a, .sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > *:not(ul) a, .sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > ul,
1242.sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > a, .sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > *:not(ul) a, .sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > ul {
1243}
1244.sm-blue > li:last-child > a.highlighted, .sm-blue > li:last-child > *:not(ul) a.highlighted,
1245.sm-blue > li:last-child > ul > li:last-child > a.highlighted, .sm-blue > li:last-child > ul > li:last-child > *:not(ul) a.highlighted,
1246.sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > a.highlighted, .sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > *:not(ul) a.highlighted,
1247.sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > a.highlighted, .sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > *:not(ul) a.highlighted,
1248.sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > a.highlighted, .sm-blue > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > ul > li:last-child > *:not(ul) a.highlighted {
1249	border-radius: 0;
1250}
1251.sm-blue ul {
1252	background: white;
1253}
1254.sm-blue ul ul {
1255	background: rgba(102, 102, 102, 0.1);
1256}
1257.sm-blue ul a {
1258	background: transparent;
1259	color: #333333;
1260	font-size: 14px;
1261	text-shadow: none;
1262	border-left: 8px solid transparent;
1263}
1264.sm-blue ul a.current {
1265	color: white; text-decoration:none;
1266}
1267.sm-blue ul a.disabled {
1268	color: #b3b3b3;
1269}
1270.sm-blue ul ul a,
1271.sm-blue ul ul a:hover,
1272.sm-blue ul ul a:focus,
1273.sm-blue ul ul a:active {
1274	border-left: 16px solid transparent; text-decoration:none;
1275}
1276.sm-blue ul ul ul a,
1277.sm-blue ul ul ul a:hover,
1278.sm-blue ul ul ul a:focus,
1279.sm-blue ul ul ul a:active {
1280	border-left: 24px solid transparent;
1281}
1282.sm-blue ul ul ul ul a,
1283.sm-blue ul ul ul ul a:hover,
1284.sm-blue ul ul ul ul a:focus,
1285.sm-blue ul ul ul ul a:active {
1286	border-left: 32px solid transparent;
1287}
1288.sm-blue ul ul ul ul ul a,
1289.sm-blue ul ul ul ul ul a:hover,
1290.sm-blue ul ul ul ul ul a:focus,
1291.sm-blue ul ul ul ul ul a:active {
1292	border-left: 40px solid transparent;
1293}
1294.sm-blue ul li {
1295	border-top: 1px solid rgba(0, 0, 0, 0.05);
1296	min-width: 240px;
1297}
1298.sm-blue ul li:first-child {
1299	border-top: 0;
1300}
1301.sm-blue ul li:hover {
1302	background-color: transparent;
1303}
1304
1305/* menu mobile v desktop*/
1306@media screen and (min-width: 768px) {
1307
1308	/* why? */
1309	/*.menu {display: inherit !important;}*/
1310
1311	/* Switch to ipad / desktop layout
1312	-----------------------------------------------
1313	   These transform the menu tree from
1314	   collapsible to desktop (navbar + dropdowns)
1315	-----------------------------------------------*/
1316	/* start... (it's not recommended editing these rules) */
1317	.sm-blue ul {
1318		position: absolute;
1319	}
1320
1321	.sm-blue li {
1322		display: inline-block;
1323	}
1324
1325	.sm-blue.sm-rtl li {
1326		float: right;
1327	}
1328
1329	.sm-blue ul li, .sm-blue.sm-rtl ul li, .sm-blue.sm-vertical li {
1330		float: none;
1331	}
1332
1333	.sm-blue a {
1334		white-space: nowrap;
1335	}
1336
1337	.sm-blue ul a, .sm-blue.sm-vertical a {
1338		white-space: normal;
1339	}
1340
1341	.sm-blue .sm-nowrap > li > a, .sm-blue .sm-nowrap > li > :not(ul) a {
1342		white-space: nowrap;
1343	}
1344
1345	/* ...end */
1346	.sm-blue {
1347	}
1348	.sm-blue a, .sm-blue a:hover, .sm-blue a:focus, .sm-blue a:active, .sm-blue a.highlighted {
1349		padding: 10px 22px;
1350	}
1351	.sm-blue a:hover, .sm-blue a:focus, .sm-blue a:active, .sm-blue a.highlighted {
1352		background: #2c91c3;
1353	}
1354	.sm-blue a.current {
1355		/*background: #333;*/
1356		/*color: white;*/
1357	}
1358	.sm-blue a.disabled {
1359		/*background: #333;*/
1360		/*color: #a1d1e8;*/
1361	}
1362	.sm-blue a span.sub-arrow {
1363		/*top: auto;*/
1364		margin-top: 0;
1365		bottom: 16px;
1366		left: 90%;
1367		margin-left: -5px;
1368		right: auto;
1369		width: 0;
1370		height: 0;
1371		border-width: 5px;
1372		border-style: solid dashed dashed dashed;
1373		border-color: #d2d3d4 transparent transparent transparent;
1374		background: transparent;
1375		border-radius: 0;
1376	}
1377	.sm-blue a.highlighted span.sub-arrow:before {
1378		display: none;
1379	}
1380	.sm-blue > li:first-child > a, .sm-blue > li:first-child > :not(ul) a {
1381	}
1382	.sm-blue > li {
1383		border-left: 0 solid #2b82ac;
1384	}
1385	.sm-blue > li:first-child {
1386		border-left: 0;
1387	}
1388	.sm-blue ul {
1389		border: 1px solid #a8a8a8;
1390		padding: 7px 0;
1391		background: white;
1392		border-radius: 0 0 4px 4px;
1393		-webkit-box-shadow: 0 5px 12px rgba(0, 0, 0, 0.3);
1394		-moz-box-shadow: 0 5px 12px rgba(0, 0, 0, 0.3);
1395		box-shadow: 0 5px 12px rgba(0, 0, 0, 0.3);
1396	}
1397	.sm-blue ul ul {
1398		background: white;
1399	}
1400	.sm-blue ul a, .sm-blue ul a:hover, .sm-blue ul a:focus, .sm-blue ul a:active, .sm-blue ul a.highlighted {
1401		border: 0 !important;
1402		padding: 9px 18px;
1403		background: transparent;
1404		/*color: #333333;*/
1405	}
1406	.sm-blue ul a:hover, .sm-blue ul a:focus, .sm-blue ul a:active, .sm-blue ul a.highlighted {
1407		/*background: #333;*/
1408		/*color: white;*/
1409	}
1410	.sm-blue ul a.current {
1411		/*background: #333;*/
1412		/*color: white;*/
1413	}
1414	.sm-blue ul a.disabled {
1415		/*background: white;*/
1416		/*color: #333333;*/
1417	}
1418	.sm-blue ul a span.sub-arrow {
1419		top: 50%;
1420		margin-top: -5px;
1421		bottom: auto;
1422		left: auto;
1423		margin-left: 0;
1424		right: 10px;
1425		border-style: dashed dashed dashed solid;
1426		border-color: transparent transparent transparent #a1d1e8;
1427	}
1428	.sm-blue ul li {
1429		border: 0;
1430	}
1431	.sm-blue span.scroll-up,
1432	.sm-blue span.scroll-down {
1433		position: absolute;
1434		display: none;
1435		visibility: hidden;
1436		overflow: hidden;
1437		background: white;
1438		height: 20px;
1439	}
1440	.sm-blue span.scroll-up-arrow, .sm-blue span.scroll-down-arrow {
1441		position: absolute;
1442		top: -2px;
1443		left: 50%;
1444		margin-left: -8px;
1445		width: 0;
1446		height: 0;
1447		overflow: hidden;
1448		border-width: 8px;
1449		border-style: dashed dashed solid dashed;
1450		border-color: transparent transparent #333333 transparent;
1451	}
1452	.sm-blue span.scroll-down-arrow {
1453		top: 6px;
1454		border-style: solid dashed dashed dashed;
1455		border-color: #333333 transparent transparent transparent;
1456	}
1457	.sm-blue.sm-rtl.sm-vertical a span.sub-arrow {
1458		right: auto;
1459		left: 10px;
1460		border-style: dashed solid dashed dashed;
1461		border-color: transparent #d2d3d4 transparent transparent;
1462	}
1463	.sm-blue.sm-rtl > li:first-child > a, .sm-blue.sm-rtl > li:first-child > :not(ul) a {
1464		border-radius: 0 8px 8px 0;
1465	}
1466	.sm-blue.sm-rtl > li:first-child {
1467		border-left: 1px solid #333333;
1468	}
1469	.sm-blue.sm-rtl > li:last-child {
1470		border-left: 0;
1471	}
1472	.sm-blue.sm-rtl ul a span.sub-arrow {
1473		right: auto;
1474		left: 10px;
1475		border-style: dashed solid dashed dashed;
1476		border-color: transparent #d2d3d4 transparent transparent;
1477	}
1478	.sm-blue.sm-vertical {
1479		-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
1480		-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
1481		box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
1482	}
1483	.sm-blue.sm-vertical a {
1484		padding: 9px 23px;
1485	}
1486	.sm-blue.sm-vertical a span.sub-arrow {
1487		top: 50%;
1488		margin-top: -5px;
1489		bottom: auto;
1490		left: auto;
1491		margin-left: 0;
1492		right: 10px;
1493		border-style: dashed dashed dashed solid;
1494		border-color: transparent transparent transparent #a1d1e8;
1495	}
1496	.sm-blue.sm-vertical > li:first-child > a, .sm-blue.sm-vertical > li:first-child > :not(ul) a {
1497		border-radius: 8px 8px 0 0;
1498	}
1499	.sm-blue.sm-vertical > li:last-child > a, .sm-blue.sm-vertical > li:last-child > :not(ul) a {
1500		border-radius: 0 0 8px 8px;
1501	}
1502	.sm-blue.sm-vertical > li {
1503		border-left: 0 !important;
1504	}
1505	.sm-blue.sm-vertical ul {
1506		border-radius: 4px !important;
1507	}
1508	.sm-blue.sm-vertical ul a {
1509		padding: 9px 23px;
1510	}
1511}
1512
1513/* align tracking telephone number to vertical center of logo */
1514@media screen and (min-width:768px) {
1515	div.call99-flex-vert-center {
1516		display: flex;
1517		flex-direction: column;
1518		justify-content: center;
1519		text-align: right;
1520	}
1521	div.headerLine1Style {
1522		display: flex;
1523		flex-direction: row;
1524		vertical-align: middle;
1525		justify-content: space-between;
1526		max-width: 980px;
1527		margin: auto;
1528	}
1529}
1530
1531/* ============================================================
1532   Pro v3 Enhancements — Hero with Integrated Lead Form
1533   ============================================================ */
1534
1535/* Get a Price section - light background for visual separation */
1536.padGetPrice {
1537	background-color: #f8f9fa;
1538	padding-top: 40px;
1539	padding-bottom: 20px;
1540}
1541
1542/* Cities panel - subtle top border for section separation */
1543.cities-panel {
1544	border-top: 1px solid #e9ecef;
1545	padding-top: 30px;
1546}
1547
1548/* ---- Hero v3: override base .center-cropped constraints ---- */
1549/* The overlay is position:relative and drives the container height.
1550   The image is position:absolute, filling the container as a background.
1551   This ensures the hero auto-sizes to fit the form content at all breakpoints. */
1552.center-cropped.hero-v3-hero {
1553	position: relative;
1554	max-height: none;
1555	height: auto;
1556	overflow: hidden;
1557}
1558
1559/* Image becomes absolute background, filling the container */
1560.center-cropped.hero-v3-hero > img.gallery-hero-img {
1561	position: absolute;
1562	top: 0;
1563	left: 0;
1564}
1565
1566/* ---- Hero v3 overlay: split layout with form ---- */
1567.hero-v3-overlay {
1568	position: relative;
1569	z-index: 15;
1570	display: flex;
1571	align-items: center;
1572	justify-content: center;
1573	background: rgba(0,0,0,0.3);
1574	padding: 30px 3%;
1575	min-height: 420px;
1576}
1577
1578/* Inner container: side-by-side on desktop */
1579.hero-v3-inner {
1580	display: flex;
1581	align-items: center;
1582	justify-content: space-between;
1583	width: 100%;
1584	max-width: 1100px;
1585	gap: 5%;
1586}
1587
1588/* Left column: branding + badges */
1589.hero-v3-branding {
1590	flex: 0 1 55%;
1591	color: #fff;
1592	text-align: left;
1593}
1594
1595.hero-v3-headline {
1596	font-size: 36px;
1597	font-weight: 700;
1598	margin: 0 0 8px;
1599	text-shadow: 0 2px 8px rgba(0,0,0,0.5);
1600	line-height: 1.15;
1601	color: inherit;
1602}
1603
1604.hero-v3-subline {
1605	font-size: 25px;
1606	font-weight: 400;
1607	margin: 0 0 18px;
1608	line-height: 1.4;
1609	text-shadow: 0 1px 4px rgba(0,0,0,0.5);
1610	opacity: 0.95;
1611	color: inherit;
1612}
1613
1614/* Google reviews link */
1615.hero-v3-reviews {
1616	display: inline-flex;
1617	align-items: center;
1618	gap: 6px;
1619	color: #fff;
1620	text-decoration: none;
1621	font-size: 15px;
1622	font-weight: 500;
1623	text-shadow: 0 1px 3px rgba(0,0,0,0.4);
1624	margin-top: 12px;
1625}
1626.hero-v3-reviews:hover {
1627	text-decoration: underline;
1628	color: #fff;
1629}
1630.hero-v3-google-g {
1631	display: inline-flex;
1632	align-items: center;
1633	justify-content: center;
1634	background: #fff;
1635	border-radius: 50%;
1636	width: 28px;
1637	height: 28px;
1638	filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
1639}
1640.hero-v3-stars {
1641	color: #FFC107;
1642	font-size: 16px;
1643	letter-spacing: 1px;
1644}
1645.hero-v3-review-text {
1646	color: inherit;
1647}
1648
1649/* Click-to-call button (Pro v6 glossy red pill style) */
1650.hero-v6-call-btn {
1651	position: relative;
1652	display: inline-flex;
1653	align-items: center;
1654	gap: 10px;
1655	background: linear-gradient(180deg, #e52222 0%, #cc1212 28%, #a80808 58%, #7a0000 100%);
1656	color: #fff;
1657	font-weight: 700;
1658	font-size: 22px;
1659	letter-spacing: 0.5px;
1660	text-decoration: none;
1661	padding: 0 32px 0 0;
1662	border-radius: 50px;
1663	box-shadow: 0 5px 14px rgba(0,0,0,0.45);
1664	margin-top: 12px;
1665	margin-bottom: 4px;
1666	text-shadow: 0 1px 3px rgba(0,0,0,0.5);
1667	transition: filter 0.2s;
1668	overflow: hidden;
1669}
1670/* Glossy gel shine overlay — sharp bright band */
1671.hero-v6-call-btn::before {
1672	content: '';
1673	position: absolute;
1674	top: 0;
1675	left: 0;
1676	right: 0;
1677	height: 50%;
1678	background: linear-gradient(180deg, rgba(255,255,255,0.75) 0%, rgba(255,255,255,0.5) 20%, rgba(255,255,255,0.12) 48%, rgba(255,255,255,0) 100%);
1679	border-radius: 50px 50px 0 0;
1680	pointer-events: none;
1681}
1682.hero-v6-call-btn:hover {
1683	filter: brightness(1.1);
1684	text-decoration: none;
1685	color: #fff;
1686}
1687.hero-v6-call-circle {
1688	position: relative;
1689	z-index: 1;
1690	display: inline-flex;
1691	align-items: center;
1692	justify-content: center;
1693	width: 52px;
1694	height: 52px;
1695	margin: 0;
1696	border-radius: 50%;
1697	background: linear-gradient(180deg, #a81010 0%, #b81818 50%, #cc2222 100%);
1698	border: 1px solid rgba(255,255,255,0.06);
1699	box-shadow:
1700		inset 0 3px 5px rgba(0,0,0,0.28),
1701		inset 0 -2px 4px rgba(255,180,180,0.15);
1702	flex-shrink: 0;
1703}
1704.hero-v6-call-icon {
1705	width: 26px;
1706	height: 26px;
1707}
1708
1709/* "Highly Rated" badge — shown when no GBP link.
1710   Mirrors the Google reviews row layout: white circle with shield
1711   icon on the left, label on the right. */
1712.hero-v6-highly-rated {
1713	display: inline-flex;
1714	align-items: center;
1715	gap: 10px;
1716	color: #fff;
1717	font-size: 15px;
1718	font-weight: 500;
1719	text-shadow: 0 1px 3px rgba(0,0,0,0.4);
1720	margin-top: 12px;
1721}
1722.hero-v6-highly-rated-circle {
1723	display: inline-flex;
1724	align-items: center;
1725	justify-content: center;
1726	background: #fff;
1727	border-radius: 50%;
1728	width: 28px;
1729	height: 28px;
1730	flex-shrink: 0;
1731	filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
1732}
1733/* Scoped to the circle so it beats the hero's `.center-cropped img` rule
1734   (which would otherwise stretch the shield to fill the circle); margin:0
1735   cancels the global `img{margin-bottom:-5px}` that, under flex centering,
1736   nudged the shield ~2.5px low. */
1737.hero-v6-highly-rated-circle .hero-v6-shield-img {
1738	width: 30px;
1739	height: 30px;
1740	margin: 2px 0 0 1px;
1741	object-fit: contain;
1742	display: block;
1743}
1744.hero-v6-highly-rated-text {
1745	letter-spacing: 0.3px;
1746}
1747
1748/* Callout strip below hero */
1749.hero-v3-callouts {
1750	position: relative;
1751	z-index: 15;
1752	display: flex;
1753	align-items: center;
1754	justify-content: center;
1755	padding: 14px 3%;
1756	font-weight: 600;
1757	font-size: 15px;
1758	gap: 60px;
1759	background: #e0dedc;
1760	color: #2965a8;
1761}
1762.hero-v3-callout {
1763	display: inline-flex;
1764	align-items: center;
1765	gap: 8px;
1766}
1767.hero-v3-callout + .hero-v3-callout::before {
1768	content: '|';
1769	position: absolute;
1770	margin-left: -34px;
1771	color: #aaa;
1772	font-weight: 300;
1773	font-size: 18px;
1774}
1775.hero-v3-callout {
1776	position: relative;
1777}
1778.hero-v3-callout-icon {
1779	flex-shrink: 0;
1780}
1781.hero-v3-callout-icon-check {
1782	color: #64b03f;
1783}
1784
1785/* Customer photos next to reviews */
1786.hero-v3-customer-photos {
1787	display: inline-flex;
1788	align-items: center;
1789	margin-right: 6px;
1790}
1791.center-cropped .hero-v3-customer-photo {
1792	width: 36px;
1793	height: 36px;
1794	border-radius: 50%;
1795	object-fit: cover;
1796	border: 2px solid #fff;
1797	margin-left: -8px;
1798	box-shadow: 0 1px 3px rgba(0,0,0,0.2);
1799	position: static;
1800}
1801.hero-v3-customer-photo:first-child {
1802	margin-left: 0;
1803}
1804
1805/* Right column: form card */
1806.hero-v3-form-card {
1807	flex: 0 1 40%;
1808	background: #f1f0f0;
1809	border-radius: 12px;
1810	box-shadow: 0 8px 32px rgba(0,0,0,0.2);
1811	padding: 24px 22px 20px;
1812	color: #333;
1813}
1814
1815.hero-v3-form-header {
1816	font-size: 20px;
1817	font-weight: 700;
1818	margin: 0 0 14px;
1819	color: #000;
1820	text-align: center;
1821}
1822
1823.hero-v3-form-card ul {
1824	padding: 0;
1825	margin: 0;
1826	list-style-type: none;
1827}
1828
1829.hero-v3-form-card ul li {
1830	padding: 4px 0;
1831	margin: 0;
1832	display: block;
1833	font-size: 14px;
1834}
1835
1836.hero-v3-form-card .text-field {
1837	width: 100%;
1838	padding: 11px 12px;
1839	font-size: 14px;
1840	border: 1px solid #d4d4d4;
1841	border-radius: 6px;
1842	color: #333;
1843	background: #fff;
1844	transition: border-color 0.2s;
1845	box-sizing: border-box;
1846}
1847
1848.hero-v3-form-card .text-field:focus {
1849	border-color: #2971b3;
1850	outline: none;
1851}
1852
1853.hero-v3-form-card textarea.text-field {
1854	resize: vertical;
1855}
1856
1857.hero-v3-form-card .check-field {
1858	padding-left: 0;
1859	width: 100% !important;
1860}
1861
1862.hero-v3-form-card .check-field label {
1863	color: #333;
1864}
1865
1866/* Submit button — flat fallback; inline style from html.tpl overrides with site button colors */
1867.hero-v3-form-card .submit-field {
1868	background: #e82428;
1869	border: none;
1870	padding: 13px 0;
1871	display: inline-block;
1872	cursor: pointer;
1873	color: #fff;
1874	width: 100%;
1875	font-size: 17px;
1876	font-weight: 600;
1877	border-radius: 8px;
1878	box-shadow: 0 2px 8px rgba(0,0,0,0.15);
1879	transition: filter 0.2s, transform 0.1s;
1880}
1881
1882.hero-v3-form-card .submit-field:hover {
1883	filter: brightness(0.9);
1884}
1885
1886.hero-v3-form-card .submit-field:active {
1887	transform: scale(0.98);
1888}
1889
1890/* ---- Tablet (601px–992px): stacked, form below headline ---- */
1891@media screen and (max-width: 992px) {
1892	.hero-v3-inner {
1893		flex-direction: column;
1894		text-align: center;
1895		gap: 16px;
1896		padding: 20px 0;
1897	}
1898
1899	.hero-v3-branding {
1900		flex: none;
1901		width: 100%;
1902		text-align: center;
1903	}
1904
1905	.hero-v3-headline {
1906		font-size: 30px;
1907	}
1908
1909	.hero-v3-subline {
1910		font-size: 15px;
1911		margin-bottom: 10px;
1912	}
1913
1914	.hero-v3-reviews {
1915		justify-content: center;
1916	}
1917
1918	.hero-v6-call-btn {
1919		margin: 8px auto 4px;
1920	}
1921
1922	.hero-v3-form-card {
1923		flex: none;
1924		width: 100%;
1925		max-width: 540px;
1926	}
1927}
1928
1929/* ---- Name+Phone: side-by-side on tablet+desktop, stacked on mobile ---- */
1930/* Specificity must beat .hero-v3-form-card ul li (0,1,2) */
1931.hero-v3-form-card li.hero-v3-form-row {
1932	padding: 0;
1933}
1934.hero-v3-form-card .hero-v3-form-row > div {
1935	padding: 4px 0;
1936}
1937@media screen and (min-width: 601px) {
1938	.hero-v3-form-card li.hero-v3-form-row {
1939		display: flex;
1940		gap: 8px;
1941		padding: 4px 0;
1942	}
1943	.hero-v3-form-card .hero-v3-form-row > div {
1944		flex: 1;
1945		padding: 0;
1946	}
1947}
1948
1949/* ---- Mobile (≤600px): stacked, compact ---- */
1950@media screen and (max-width: 600px) {
1951	.hero-v3-overlay {
1952		padding: 20px 12px;
1953	}
1954
1955	.hero-v3-inner {
1956		flex-direction: column;
1957		text-align: center;
1958		gap: 12px;
1959		padding: 10px 0;
1960	}
1961
1962	.hero-v3-branding {
1963		text-align: center;
1964	}
1965
1966	.hero-v3-headline {
1967		font-size: 24px;
1968	}
1969
1970	.hero-v3-subline {
1971		font-size: 13px;
1972		margin-bottom: 8px;
1973	}
1974
1975	.hero-v3-reviews {
1976		justify-content: center;
1977		font-size: 13px;
1978	}
1979
1980	/* On mobile, branding becomes a flex column so we can reorder the
1981	   call button to appear AFTER the reviews/highly-rated badge,
1982	   directly above the lead form (per Melanie's mock-up). */
1983	.hero-v3-branding {
1984		display: flex;
1985		flex-direction: column;
1986	}
1987	.hero-v6-call-btn {
1988		order: 99;
1989		align-self: center;
1990		margin-top: 14px;
1991		margin-bottom: 0;
1992	}
1993
1994	.hero-v3-callouts {
1995		display: none;
1996	}
1997
1998	.center-cropped .hero-v3-customer-photo {
1999		width: 28px;
2000		height: 28px;
2001	}
2002
2003	.hero-v3-form-card {
2004		flex: none;
2005		width: 100%;
2006		padding: 18px 16px 14px;
2007	}
2008
2009	.hero-v3-form-header {
2010		font-size: 18px;
2011		margin-bottom: 10px;
2012	}
2013}
2014
2015/* =============================================================================
2016   v6.1 MENU — CSS-first SmartMenus replacement.
2017   Keeps v6's .sm-blue visual language; adds :hover/:focus-within dropdowns
2018   (desktop), max-height drawer + .is-open accordion (mobile), hamburger
2019   morph-to-×, and scrim. Caret is a single down-pointing CSS triangle;
2020   nested/mobile variants are just CSS rotations of that triangle.
2021   ============================================================================= */
2022
2023button.toggleMenu {
2024	display: none; /* → inline-flex on mobile */
2025	align-items: center;
2026	gap: 10px;
2027	background: none;
2028	border: 0;
2029	margin: 0;
2030	padding: 8px 12px;
2031	min-height: 44px; /* WCAG 2.5.5 AAA tap target */
2032	border-radius: 6px;
2033	cursor: pointer;
2034	text-align: left;
2035	font: inherit;
2036	font-weight: 500;
2037	letter-spacing: 0.02em;
2038	-webkit-tap-highlight-color: transparent;
2039	transition: background-color 160ms cubic-bezier(.4,0,.2,1),
2040	            transform 120ms cubic-bezier(.4,0,.2,1);
2041}
2042button.toggleMenu:hover { background-color: rgba(255,255,255,0.08); }
2043button.toggleMenu:active { transform: scale(0.96); }
2044button.toggleMenu:focus-visible {
2045	outline: 2px solid currentColor;
2046	outline-offset: 2px;
2047}
2048
2049.toggleMenuIcon {
2050	position: relative;
2051	display: inline-block;
2052	width: 22px;
2053	height: 16px;
2054	flex-shrink: 0;
2055}
2056.toggleMenuIcon > span {
2057	position: absolute;
2058	left: 0;
2059	width: 100%;
2060	height: 2px;
2061	background: currentColor;
2062	border-radius: 1px;
2063	transition: transform 220ms cubic-bezier(.4,0,.2,1),
2064	            opacity 120ms ease,
2065	            top 220ms cubic-bezier(.4,0,.2,1);
2066}
2067.toggleMenuIcon > span:nth-child(1) { top: 2px; }
2068.toggleMenuIcon > span:nth-child(2) { top: 7px; }
2069.toggleMenuIcon > span:nth-child(3) { top: 12px; }
2070
2071/* Open state: rails morph into an × */
2072button.toggleMenu[aria-expanded="true"] .toggleMenuIcon > span:nth-child(1) {
2073	top: 7px; transform: rotate(45deg);
2074}
2075button.toggleMenu[aria-expanded="true"] .toggleMenuIcon > span:nth-child(2) {
2076	opacity: 0;
2077}
2078button.toggleMenu[aria-expanded="true"] .toggleMenuIcon > span:nth-child(3) {
2079	top: 7px; transform: rotate(-45deg);
2080}
2081
2082/* Caret on .has-sub triggers (replaces SmartMenus' JS-injected sub-arrow).
2083   Base points down; rotated in nested/mobile contexts via transform. */
2084#main-menu li.has-sub > a::after {
2085	content: "";
2086	display: inline-block;
2087	width: 0;
2088	height: 0;
2089	margin-left: 8px;
2090	vertical-align: middle;
2091	border: 4px solid transparent;
2092	border-top-color: currentColor;
2093	opacity: 0.75;
2094	transition: transform 180ms ease;
2095}
2096
2097/* ── DESKTOP (≥768px): hover/focus-within dropdowns ───────────────────────── */
2098@media screen and (min-width: 768px) {
2099	#main-menu > li,
2100	#main-menu ul li { position: relative; }
2101
2102	#main-menu li:hover > ul,
2103	#main-menu li:focus-within > ul { display: block; }
2104
2105	/* No-JS baseline: scroll only "flat" dropdowns (no nested fly-out). A panel
2106	   that hosts a fly-out must stay overflow:visible here — otherwise
2107	   overflow-y:auto promotes overflow-x to auto too, clipping the left:100%
2108	   fly-out and trapping it scrolling inside the parent. Long flat menus (e.g.
2109	   16-item Services) still scroll: #header is fixed at ~160px; the 220px
2110	   offset leaves ~60px bottom margin so the last row clears the viewport. */
2111	#main-menu ul:not(:has(> li.has-sub)) {
2112		max-height: calc(100vh - 220px);
2113		overflow-y: auto;
2114		overscroll-behavior: contain;
2115		scrollbar-gutter: stable;
2116	}
2117	/* JS present (html.menu-js): scroll fly-out-hosting panels as well — the nav
2118	   controller re-anchors each open fly-out as position:fixed so it escapes
2119	   this overflow instead of being clipped. Keeps long Learn-style menus
2120	   scrollable without sacrificing the fly-out. */
2121	html.menu-js #main-menu ul {
2122		max-height: calc(100vh - 220px);
2123		overflow-y: auto;
2124		overscroll-behavior: contain;
2125		scrollbar-gutter: stable;
2126	}
2127	#main-menu > li > ul { top: 100%; left: 0; }
2128	/* A fly-out opens flush against the parent's right edge; the inherited
2129	   .sm-blue drop shadow would blur back across that seam as a gray band.
2130	   The panel's 1px border already separates it, so drop the shadow here. */
2131	#main-menu ul ul { top: 0; left: 100%; box-shadow: none; }
2132
2133	/* Top-level caret flips to ▲ when its dropdown is open */
2134	#main-menu > li.has-sub:hover > a::after,
2135	#main-menu > li.has-sub:focus-within > a::after {
2136		transform: rotate(180deg);
2137	}
2138	/* Nested items: caret points ▶ (floated next to the label) */
2139	#main-menu ul li.has-sub > a::after {
2140		float: right;
2141		margin: 6px 0 0;
2142		transform: rotate(-90deg);
2143	}
2144
2145	.menu-drawer-scrim { display: none; }
2146}
2147
2148/* ── MOBILE (<768px): slide-down drawer + accordion submenus ──────────────── */
2149@media screen and (max-width: 767px) {
2150	button.toggleMenu { display: inline-flex; }
2151	button.toggleMenu[aria-expanded="true"] { opacity: 0.85; }
2152
2153	/* Drawer panel. .menu.headerMenuStyle has to out-specify v6's
2154	   .menu{display:none} at this breakpoint (line ~996). */
2155	.menu.headerMenuStyle {
2156		display: block;
2157		max-height: 0;
2158		overflow: hidden;
2159		transition: max-height 320ms ease;
2160	}
2161	body[data-menu-drawer="open"] .menu.headerMenuStyle {
2162		max-height: 85vh;
2163		overflow-y: auto;
2164	}
2165	body[data-menu-drawer="open"] { overflow: hidden; }
2166
2167	.menu-drawer-scrim {
2168		position: fixed;
2169		inset: 0;
2170		background: rgba(0,0,0,0.4);
2171		z-index: 998;
2172	}
2173
2174	/* Accordion submenus */
2175	#main-menu li.has-sub > ul { display: none; }
2176	#main-menu li.has-sub.is-open > ul { display: block; }
2177
2178	/* Caret points ▶ when closed, ▼ when open (rotated back to base) */
2179	#main-menu li.has-sub > a::after {
2180		float: right;
2181		margin: 10px 4px 0 0;
2182		transform: rotate(-90deg);
2183	}
2184	#main-menu li.has-sub.is-open > a::after {
2185		transform: rotate(0deg);
2186	}
2187}
2188
2189	</style>
2190
2191
2192	
2193
2194															
2195		
2196		
2197			
2198	
2199																											
2200							
2201							
2202														
2203																				
2204																									
2205
2206	<style>
2207		#header {
2208			color: #e88c14;
2209			background-color: white;
2210			
2211		}
2212		#header .phoneNumber {
2213			color: #e88c14;
2214			text-decoration: none;
2215			
2216		}
2217		.headerLine1Style a, .headerLine1Style a h2 {
2218			color: inherit;
2219		}
2220						.headerLine2Style {
2221			background-color: #e88c14;
2222		}
2223		.sm-blue ul, .sm-blue ul a, .sm-blue a, .sm-blue a:hover, .sm-blue a:focus, .sm-blue a:active {
2224			color: white;
2225			background-color: #e88c14;
2226		}
2227		.sm-blue a:hover, .sm-blue a.highlighted {
2228			color: black;
2229			background-color: #e88c14;
2230		}
2231		.sm-blue ul a:hover {
2232			color: black;
2233			background-color: #e88c14;
2234		}
2235				@media screen and (min-width: 768px) {
2236			#main-menu > li.has-sub:hover > a,
2237			#main-menu > li.has-sub:focus-within > a {
2238				background-color: #e88c14;
2239				color: black;
2240			}
2241						#main-menu ul ul {
2242				background-color: #e88c14;
2243			}
2244		}
2245		.toggleMenu {
2246			color: white
2247		}
2248		#header .smallScreenHeader .phoneNumber {
2249			color: white;
2250			text-decoration: none;
2251		}
2252		
2253		a, .contentX a.phoneNumber, a.phoneNumber {
2254			color: #e88c14;
2255		}
2256		a:hover {
2257			color: black;
2258			text-decoration: underline;
2259		}
2260
2261		.useboxright, .useboxright a, .useboxright li {
2262			color: white;
2263			background-color: black;
2264		}
2265		a.reviewBtn div {
2266			color: black;
2267			background-color: #e88c14;
2268			
2269		}
2270		.getPriceDiv {
2271			color: white;
2272			background-color: black;
2273		}
2274		.submit-field {
2275            color: black;
2276			background-color: #e88c14;
2277			
2278		}
2279		.getPriceFormDiv {
2280			background: #f6f7fe;
2281			color: #333;
2282		}
2283		.getPriceFormDiv .check-field label {
2284			color: #333;
2285		}
2286		.footerDivMn {
2287			color: white;
2288			background-color: black;
2289		}
2290
2291
2292		
2293		.hero-v3-form-card .submit-field {
2294			background: #e88c14;
2295			color: black;
2296			border-color: #e88c14;
2297			
2298		}
2299		.hero-v3-form-card .submit-field:hover {
2300			filter: brightness(0.9);
2301		}
2302
2303			</style>
2304
2305
2306
2307	
2307<script type="application/ld+json">
2308{"@context":"https://www.schema.org","@type":"LocalBusiness","name":"Gary's Plumbing, Inc.","telephone":"+19497796129","url":"https://gary-s-plumbing.com","image":"https://gary-s-plumbing.com/images/layout01/favicon.ico","priceRange":"$$","address":{"@type":"PostalAddress","streetAddress":"3419 Spectrum","addressLocality":"Irvine","addressRegion":"CA","postalCode":"92618","addressCountry":"United States"},"contactPoint":[{"@type":"ContactPoint","telephone":"+19497796129","contactType":"sales"}],"sameAs":["https://search.google.com/local/writereview?placeid=ChIJ715k0ffn3IARIvRckEhcc9g","https://www.bing.com/maps/search?q=Gary%27s+Plumbing%2C+Inc.%2C+Irvine+California","https://local.yahoo.com/info-151864476-moses-plumbing-irvine","https://www.yelp.com/biz/garys-plumbing-irvine","https://www.neustarlocaleze.biz/directory/us/ca/irvine/garys-plumbing-inc/904622062/","https://www.manta.com/c/mkxmbk2/gary-s-plumbing-inc","https://local-listings.data-axle.com/places/4CY6HPSW","https://www.facebook.com/Garys-Plumbing-Inc-112558552701636/","https://www.angieslist.com/companylist/us/ca/irvine/garys-plumbing-reviews-7532120.htm","https://www.houzz.com/hznb/professionals/plumbers/gary-s-plumbing-inc-pfvwus-pf~917674296/__public","https://www.screencast.com/t/64JVnKqcc","https://nextdoor.com/pages/garys-plumbing-irvine-ca/"],"aggregateRating":{"@type":"AggregateRating","ratingValue":"4.8","ratingCount":"4"}}
2309</script>
2309				<style>		.cta-call-btn {
2310			background-color: #FFA500;
2311			color: #FFFFFF;
2312		}
2313		.cta-call-btn:hover {
2314			background-color: #FFB733;
2315			color: #FFFFFF;
2316			transform: translateY(-1px);
2317			text-decoration: none;
2318		}
2319		.cta-call-btn.cta-shadow-subtle {
2320			box-shadow: 0 4px 10px rgba(0,0,0,0.2);
2321		}
2322		.cta-call-btn.cta-shadow-subtle:hover {
2323			box-shadow: 0 8px 18px rgba(0,0,0,0.26);
2324		}
2325		.cta-call-btn.cta-shadow-strong {
2326			box-shadow: 0 8px 20px rgba(0,0,0,0.3);
2327		}
2328		.cta-call-btn.cta-shadow-strong:hover {
2329			box-shadow: 0 12px 26px rgba(0,0,0,0.34);
2330		}
2331		.cta-call-btn.cta-shadow-none:hover {
2332			box-shadow: 0 6px 16px rgba(0,0,0,0.18);
2333		}
2334</style>
2335
2336			<style>.specials-1card { border-radius: 50px; }
2337.specials-2card { border-radius: 50px; }
2338.specials-3card { border-radius: 50px; }</style>	
2339			</head>
2340
2341<body>
2342<!-- Header Starts Here -->
2343
2344<header class="w3-container pad0">
2345
2346		<div id="header" class="w3-container pad0 headerStyle">
2347
2348				<div class="headerLine1Style">
2349							<a href="/" class="showLargeScreenHeader w3-rest w3-left w3-left-align pad-sides-10 header_line1_company"><h2>Gary&#039;s Plumbing, Inc.</h2></a>
2350				<a href="/" class="smallScreenHeader w3-rest w3-center pad-sides-10"><h2>Gary&#039;s Plumbing, Inc.</h2></a>
2351						<div class="call99-flex-vert-center">
2352				<h4 class="showLargeScreenHeader header_line1_phone pad-sides-10">
2353					<a class="phoneNumber primaryPhone" href="tel:+19497796129">(949) 779-6129</a>
2354				</h4>
2355			</div>
2356		</div>
2357
2358				<div class="w3-container pad0 w3-row headerLine2Style">
2359
2360						<button type="button" class="toggleMenu headerMenuStyle" id="menuIcn"
2361			        aria-label="Menu" aria-expanded="false" aria-controls="main-menu-drawer">
2362				<span class="toggleMenuIcon" aria-hidden="true">
2363					<span></span><span></span><span></span>
2364				</span>
2365				<span class="toggleMenuLabel">Menu</span>
2366			</button>
2367			<span class="smallScreenHeader smallScreenMenuPhone headerMenuStyle">
2368				<p style="font-size: xx-small;position: relative;top: 13px;display: inline;right: -50%;background-color: #e88c14;color: white">Call Now</p>
2369				<a class="phoneNumber primaryPhone" href="tel:+19497796129">(949) 779-6129</a>
2370			</span>
2371
2372			<div class="menu headerMenuStyle w3-clear w3-center" id="main-menu-drawer">
2373
2374								<nav aria-label="Primary">
2375					<ul id="main-menu" class="sm sm-blue">
2376																											<li><a href="/">Home</a></li>
2377																												<li class="has-sub"><a href="#">Services</a><ul><li><a href="/Plumbing.htm">Plumbing</a></li><li><a href="/Emergency-Plumbing-Service.htm">Emergency Plumbing Service</a></li><li><a href="/RePiping.htm">RePiping</a></li><li><a href="/Slab-Leaks.htm">Slab Leaks</a></li><li><a href="/Leak-Detection-and-Repairs.htm">Leak Detection and Repairs</a></li><li><a href="/Piping.htm">Piping</a></li><li><a href="/Water-Filtration.htm">Water Filtration</a></li><li><a href="/Sewer-Repair.htm">Sewer Repair</a></li><li><a href="/Burst-Pipe.htm">Burst Pipe</a></li><li><a href="/Clogged-Drain.htm">Clogged Drain</a></li><li><a href="/Drain-Cleaning.htm">Drain Cleaning</a></li><li><a href="/Earthquake-Shut-Off-Valve.htm">Earthquake Shut Off Valve</a></li><li><a href="/Plumbing-Camera-Inspection.htm">Plumbing Camera Inspection</a></li><li><a href="/Water-Damage-Restoration.htm">Water Damage Restoration</a></li><li><a href="/Gas-Piping.htm">Gas Piping</a></li><li><a href="/Sewer-Line-Camera-Inspection.htm">Sewer Line Camera Inspection</a></li><li><a href="/Sewer-Line-Cleaning.htm">Sewer Line Cleaning</a></li><li><a href="/Water-Heater.htm">Water Heater</a></li><li><a href="/Furnace-Plumbing.htm">Furnace Plumbing</a></li><li><a href="/Boiler-Installation.htm">Boiler Installation</a></li><li><a href="/Boiler-Repair.htm">Boiler Repair</a></li><li><a href="/Wells-and-Pumps.htm">Wells and Pumps</a></li></ul></li>
2378																												<li><a href="/towns.htm">Service Area</a></li>
2379																												<li><a href="/testimonials.htm">Reviews</a></li>
2380																												<li><a href="/photos.htm">Photos</a></li>
2381																												<li><a href="/contact.htm">Contact Us</a></li>
2382																								</ul>
2383				</nav>
2384
2385			</div>
2386
2387		</div>
2388
2389	</div>
2390	
2391		<div class="menu-drawer-scrim" id="menu-drawer-scrim" hidden></div>
2392
2393</header>
2394
2395
2396<script>
2397(function() {
2398	var btn = document.getElementById('menuIcn');
2399	var drawer = document.getElementById('main-menu-drawer');
2400	var scrim = document.getElementById('menu-drawer-scrim');
2401	if (!btn || !drawer || !scrim) return;
2402
2403	var body = document.body;
2404	var isMobile = function() { return window.innerWidth < 768; };
2405	var isOpen = function() { return body.getAttribute('data-menu-drawer') === 'open'; };
2406
2407	function setDrawer(open) {
2408		if (open) body.setAttribute('data-menu-drawer', 'open');
2409		else body.removeAttribute('data-menu-drawer');
2410		btn.setAttribute('aria-expanded', open ? 'true' : 'false');
2411		scrim.hidden = !open;
2412		if (!open) {
2413			// collapse submenus so the drawer reopens clean
2414			drawer.querySelectorAll('.has-sub.is-open').forEach(function(li) {
2415				li.classList.remove('is-open');
2416			});
2417		}
2418	}
2419
2420	btn.addEventListener('click', function(e) { e.preventDefault(); setDrawer(!isOpen()); });
2421	scrim.addEventListener('click', function() { setDrawer(false); });
2422
2423	document.addEventListener('keydown', function(e) {
2424		if (e.key === 'Escape' && isOpen()) { setDrawer(false); btn.focus(); }
2425	});
2426
2427	// Mobile-only: tap a has-sub trigger (href="#") → toggle accordion
2428	drawer.addEventListener('click', function(e) {
2429		var link = e.target.closest('a');
2430		if (!link || !isMobile()) return;
2431		var parent = link.parentElement;
2432		if (!parent || !parent.classList.contains('has-sub')) return;
2433		var href = link.getAttribute('href');
2434		if (href && href !== '#') return;
2435		e.preventDefault();
2436		parent.classList.toggle('is-open');
2437	});
2438
2439	// Cross the breakpoint while open → close cleanly
2440	var resizeTimer;
2441	window.addEventListener('resize', function() {
2442		clearTimeout(resizeTimer);
2443		resizeTimer = setTimeout(function() {
2444			if (!isMobile() && isOpen()) setDrawer(false);
2445			clearAllFlyouts(); // drop stale fixed-position styles; next hover re-places
2446		}, 100);
2447	});
2448
2449	// Desktop keyboard nav across top-level items
2450	var topItems = drawer.querySelectorAll('#main-menu > li > a');
2451	topItems.forEach(function(a, idx) {
2452		a.addEventListener('keydown', function(e) {
2453			if (isMobile()) return;
2454			var n = topItems.length, target;
2455			if (e.key === 'ArrowRight') target = (idx + 1) % n;
2456			else if (e.key === 'ArrowLeft') target = (idx - 1 + n) % n;
2457			else if (e.key === 'Home') target = 0;
2458			else if (e.key === 'End') target = n - 1;
2459			else return;
2460			e.preventDefault();
2461			topItems[target].focus();
2462		});
2463	});
2464
2465	// ── Desktop fly-out escape ────────────────────────────────────────────────
2466	// With html.menu-js, fly-out-hosting panels scroll vertically (CSS), which
2467	// would clip a nested fly-out. Re-anchor each open fly-out as position:fixed
2468	// (escapes ancestor overflow) and keep it aligned to its trigger row. JS and
2469	// the scroll-enabling CSS are coupled via the menu-js flag so the no-JS
2470	// baseline never clips.
2471	function flyoutOf(li) { return li.querySelector(':scope > ul'); }
2472
2473	function placeFlyout(li) {
2474		var ul = flyoutOf(li);
2475		if (!ul) return;
2476		ul.style.position = 'fixed';
2477		ul.style.left = '0px';
2478		ul.style.top = '0px';
2479		// Fixed positioning makes the viewport the containing block, so the panel
2480		// would shrink-to-fit to max-content and lay its inline-block items out as
2481		// a horizontal strip. Pin to min-content to keep it a single column.
2482		ul.style.width = 'min-content';
2483		var row = li.getBoundingClientRect();
2484		var w = ul.offsetWidth, h = ul.offsetHeight;
2485		// open to the right of the row; flip to the left if there's no room
2486		var left = row.right;
2487		if (left + w > window.innerWidth - 4) left = Math.max(4, row.left - w);
2488		// align tops, but clamp so a tall fly-out stays within the viewport
2489		var top = Math.min(row.top, Math.max(8, window.innerHeight - 8 - h));
2490		ul.style.left = left + 'px';
2491		ul.style.top = top + 'px';
2492	}
2493
2494	function clearFlyout(li) {
2495		var ul = flyoutOf(li);
2496		if (!ul) return;
2497		ul.style.position = ul.style.left = ul.style.top = ul.style.width = '';
2498	}
2499
2500	function clearAllFlyouts() {
2501		drawer.querySelectorAll('#main-menu ul li.has-sub').forEach(clearFlyout);
2502	}
2503
2504	drawer.querySelectorAll('#main-menu ul li.has-sub').forEach(function(li) {
2505		li.addEventListener('mouseenter', function() { if (!isMobile()) placeFlyout(li); });
2506		li.addEventListener('mouseleave', function() { if (!isMobile()) clearFlyout(li); });
2507		li.addEventListener('focusin', function() { if (!isMobile()) placeFlyout(li); });
2508		li.addEventListener('focusout', function(e) {
2509			if (!isMobile() && !li.contains(e.relatedTarget)) clearFlyout(li);
2510		});
2511	});
2512
2513	// Keep an open fly-out aligned as its scroll-parent (or the window) scrolls.
2514	// Capture phase catches non-bubbling scroll on the inner panels too.
2515	window.addEventListener('scroll', function() {
2516		if (isMobile()) return;
2517		drawer.querySelectorAll('#main-menu ul li.has-sub').forEach(function(li) {
2518			if (li.matches(':hover') || li.contains(document.activeElement)) placeFlyout(li);
2519		});
2520	}, true);
2521
2522	document.documentElement.classList.add('menu-js');
2523})();
2524</script>
2524
2525
2526
2527<!-- Header Ends here -->
2528
2529
2530<!-- page content starts here -->
2531
2532<main class="w3-container pad0 w3-center">
2533
2534		<div class="w3-container pad0 showLargeScreenHeader mainTopSpacer"></div>
2535
2536	<div class="w3-container pad0 smallScreenHeader">
2537		<div class="w3-container pad0 mainTopSpacer"></div>
2538	</div>
2539
2540	
2540<script>
2541				function setMainTopSpacer() {
2542			var headerHeight = document.getElementById('header').offsetHeight;
2543			var elements = document.getElementsByClassName('mainTopSpacer');
2544			for (var i = 0, len = elements.length; i < len; i++) {
2545				elements[i].style.height = headerHeight+"px";
2546			}
2547		}
2548		setMainTopSpacer();
2549
2550								(function() {
2551			'use strict';
2552
2553			var header = document.getElementById('header');
2554			var SHRINK_THRESHOLD = 50;
2555			var isShrunk = false;
2556			var ticking = false;
2557			var MOBILE_SCALE = 0.5;
2558			var DESKTOP_SCALE = 0.7;
2559
2560			function getVisibleLogo() {
2561				if (window.innerWidth >= 768) {
2562					return header.querySelector('.showLargeScreenHeader img');
2563				}
2564				return header.querySelector('.smallScreenHeader img');
2565			}
2566
2567			var isDesktop = window.innerWidth >= 768;
2568			var scale = isDesktop ? DESKTOP_SCALE : MOBILE_SCALE;
2569			var logoImg = getVisibleLogo();
2570			if (!logoImg) return;
2571
2572			var headerLine1 = header.querySelector('.headerLine1Style');
2573			// Desktop: get logo wrapper and phone container for independent height control
2574			var logoWrapper = isDesktop ? (logoImg.closest('a') || logoImg.parentElement) : null;
2575			var phoneContainer = isDesktop ? headerLine1.querySelector('.call99-flex-vert-center') : null;
2576			var expandedLine1Width = headerLine1 ? headerLine1.offsetWidth : 0;
2577			var expandedHeight = header.offsetHeight;
2578			var expandedLogoWrapperH = logoWrapper ? logoWrapper.offsetHeight : 0;
2579			var expandedPhoneH = phoneContainer ? phoneContainer.offsetHeight : 0;
2580			// Mobile: margin collapse on headerLine1
2581			var expandedLine1H = headerLine1 ? headerLine1.offsetHeight : 0;
2582			var mobileShrinkMargin = Math.round(expandedLine1H * (1 - MOBILE_SCALE));
2583			var shrunkHeight;
2584
2585			// Desktop shrunk heights: scale both containers so flex row actually shrinks
2586			var shrunkLogoWrapperH = Math.round(expandedLogoWrapperH * DESKTOP_SCALE);
2587			var shrunkPhoneH = Math.round(expandedPhoneH * DESKTOP_SCALE);
2588
2589			function applyDesktopShrink() {
2590				logoImg.style.transform = 'scale(' + DESKTOP_SCALE + ')';
2591				logoWrapper.style.height = shrunkLogoWrapperH + 'px';
2592				logoWrapper.style.overflow = 'hidden';
2593				if (phoneContainer) {
2594					phoneContainer.style.height = shrunkPhoneH + 'px';
2595					phoneContainer.style.overflow = 'hidden';
2596				}
2597			}
2598
2599			function clearDesktopShrink() {
2600				logoImg.style.transform = '';
2601				logoWrapper.style.height = expandedLogoWrapperH + 'px';
2602				logoWrapper.style.overflow = '';
2603				if (phoneContainer) {
2604					phoneContainer.style.height = expandedPhoneH + 'px';
2605					phoneContainer.style.overflow = '';
2606				}
2607			}
2608
2609			function applyMobileShrink() {
2610				logoImg.style.transform = 'scale(' + MOBILE_SCALE + ')';
2611				headerLine1.style.marginBottom = '-' + mobileShrinkMargin + 'px';
2612			}
2613
2614			function clearMobileShrink() {
2615				logoImg.style.transform = '';
2616				headerLine1.style.marginBottom = '';
2617			}
2618
2619			// Measure shrunk height without transitions
2620			function disableTransitions() {
2621				header.style.transition = 'none';
2622				if (headerLine1) headerLine1.style.transition = 'none';
2623				if (logoWrapper) logoWrapper.style.transition = 'none';
2624				if (phoneContainer) phoneContainer.style.transition = 'none';
2625			}
2626			function enableTransitions() {
2627				header.style.transition = '';
2628				if (headerLine1) headerLine1.style.transition = '';
2629				if (logoWrapper) logoWrapper.style.transition = '';
2630				if (phoneContainer) phoneContainer.style.transition = '';
2631			}
2632
2633			disableTransitions();
2634			header.classList.add('header-shrunk');
2635			if (isDesktop) { applyDesktopShrink(); } else { applyMobileShrink(); }
2636			shrunkHeight = header.offsetHeight;
2637			if (isDesktop) { clearDesktopShrink(); } else { clearMobileShrink(); }
2638			header.classList.remove('header-shrunk');
2639			void header.offsetHeight;
2640			enableTransitions();
2641
2642			// Set explicit expanded heights so CSS can transition between px values (auto→px doesn't animate)
2643			if (isDesktop) {
2644				logoWrapper.style.height = expandedLogoWrapperH + 'px';
2645				if (phoneContainer) phoneContainer.style.height = expandedPhoneH + 'px';
2646			}
2647
2648			function setSpacerHeight(height) {
2649				var elements = document.getElementsByClassName('mainTopSpacer');
2650				for (var i = 0, len = elements.length; i < len; i++) {
2651					elements[i].style.height = height + 'px';
2652				}
2653			}
2654
2655			function updateHeader() {
2656				var scrollY = window.scrollY || window.pageYOffset;
2657				var shouldShrink = scrollY > SHRINK_THRESHOLD;
2658
2659				if (shouldShrink !== isShrunk) {
2660					isShrunk = shouldShrink;
2661					if (shouldShrink) {
2662						header.classList.add('header-shrunk');
2663						document.body.classList.add('header-shrunk');
2664						if (isDesktop) { applyDesktopShrink(); } else { applyMobileShrink(); }
2665						setSpacerHeight(shrunkHeight);
2666					} else {
2667						header.classList.remove('header-shrunk');
2668						document.body.classList.remove('header-shrunk');
2669						if (isDesktop) { clearDesktopShrink(); } else { clearMobileShrink(); }
2670						setSpacerHeight(expandedHeight);
2671					}
2672				}
2673				ticking = false;
2674			}
2675
2676			window.addEventListener('scroll', function() {
2677				if (!ticking) {
2678					requestAnimationFrame(updateHeader);
2679					ticking = true;
2680				}
2681			}, { passive: true });
2682
2683			window.addEventListener('resize', function() {
2684				var wasDesktop = isDesktop;
2685				isDesktop = window.innerWidth >= 768;
2686				logoImg = getVisibleLogo();
2687				if (!logoImg) return;
2688
2689				disableTransitions();
2690
2691				// Clear previous state
2692				header.classList.remove('header-shrunk');
2693				document.body.classList.remove('header-shrunk');
2694				if (wasDesktop && logoWrapper) {
2695					logoWrapper.style.height = '';
2696					if (phoneContainer) phoneContainer.style.height = '';
2697					clearDesktopShrink();
2698				} else { clearMobileShrink(); }
2699
2700				// Re-acquire elements if viewport crossed breakpoint
2701				logoWrapper = isDesktop ? (logoImg.closest('a') || logoImg.parentElement) : null;
2702				phoneContainer = isDesktop ? headerLine1.querySelector('.call99-flex-vert-center') : null;
2703
2704				// Re-measure expanded (heights must be auto for accurate measurement)
2705				expandedHeight = header.offsetHeight;
2706				expandedLogoWrapperH = logoWrapper ? logoWrapper.offsetHeight : 0;
2707				expandedPhoneH = phoneContainer ? phoneContainer.offsetHeight : 0;
2708				expandedLine1H = headerLine1 ? headerLine1.offsetHeight : 0;
2709				mobileShrinkMargin = Math.round(expandedLine1H * (1 - MOBILE_SCALE));
2710				shrunkLogoWrapperH = Math.round(expandedLogoWrapperH * DESKTOP_SCALE);
2711				shrunkPhoneH = Math.round(expandedPhoneH * DESKTOP_SCALE);
2712
2713				// Measure shrunk
2714				header.classList.add('header-shrunk');
2715				if (isDesktop) { applyDesktopShrink(); } else { applyMobileShrink(); }
2716				shrunkHeight = header.offsetHeight;
2717
2718				if (!isShrunk) {
2719					header.classList.remove('header-shrunk');
2720					if (isDesktop) { clearDesktopShrink(); } else { clearMobileShrink(); }
2721				} else {
2722					document.body.classList.add('header-shrunk');
2723				}
2724				// Set explicit expanded heights for smooth transitions
2725				if (isDesktop) {
2726					if (logoWrapper) logoWrapper.style.height = (isShrunk ? shrunkLogoWrapperH : expandedLogoWrapperH) + 'px';
2727					if (phoneContainer) phoneContainer.style.height = (isShrunk ? shrunkPhoneH : expandedPhoneH) + 'px';
2728				}
2729				void header.offsetHeight;
2730				enableTransitions();
2731				setSpacerHeight(isShrunk ? shrunkHeight : expandedHeight);
2732			});
2733		})();
2734			</script>
2734
2735
2736							
2737		<div id="content" class="w3-container pad0 w3-clear contactPage">
2738		
2739											<div class="w3-container w3-content contentX">
2740					<div style="max-width: 600px; margin: 0 auto">
2741					<h1>Contact <span itemprop="name">Gary&#039;s Plumbing, Inc.</span></h1>
2742 
2743 <p>&nbsp;</p>
2744 
2745 <p><strong>Office:</strong></p>
2746 
2747 <div itemprop="address" itemscope="" itemtype="http://schema.org/PostalAddress">
2748 <div>
2749 <p style="font-weight: normal; margin-left: 40px; ">Gary Alberici<br />
2750 Gary&#039;s Plumbing, Inc.<br />
2751 <span itemprop="streetAddress">3419 Spectrum</span><br />
2752 <span itemprop="addressLocality">Irvine</span>, <span itemprop="addressRegion">CA</span>&nbsp;&nbsp;<span itemprop="postalCode">92618</span></p>
2753 </div>
2754 </div>
2755 
2756 <p style="font-weight:bold">Phone:</p>
2757 
2758 <p style="font-weight: normal; margin-left: 40px; ">(949) 779-6129<br><br></p></p>
2759 
2760 <p style="font-weight:bold">Hours:</p>
2761 
2762 <p style="margin-left: 40px; "><table class="bizHours" style="margin: 20px 20px 20px 40px;"><tr><td>Monday</td><td>7:00 am - 7:00 pm</td></tr><tr><td>Tuesday</td><td>7:00 am - 7:00 pm</td></tr><tr><td>Wednesday</td><td>7:00 am - 7:00 pm</td></tr><tr><td>Thursday</td><td>7:00 am - 7:00 pm</td></tr><tr><td>Friday</td><td>7:00 am - 7:00 pm</td></tr><tr><td>Saturday </td><td>7:00 am - 7:00 pm</td></tr><tr><td>Sunday</td><td>7:00 am - 7:00 pm</td></tr></table></p>
2763 
2764 <p style="font-weight:bold">Email:</p>
2765 
2766 <p style="font-weight: normal; margin-left: 40px; ">Available upon request.</p>
2767					</div>
2768				</div>
2769					
2770	</div>
2771
2772		<div id="get_a_price" class="w3-container pad0 padGetPrice">
2773	<div id="right_block" class="w3-container w3-content">
2774					<div class="getPriceDiv">
2775				<span id="getPriceHeader">Get a Price</span>
2776				<div class="getPriceFormDiv">
2777					<form id="demo-form" name="contactForm"  action="/webservice/processForm.php" method="post">
2778						<input type="hidden" name="domainId" id="domainId" value="5685"/>
2779						<input type="hidden" id="hdnThankYouUrl" value=""/>
2780						<ul>
2781															<li><input name="senderName" id="senderName" type="text" class="text-field" placeholder="Name" required="required" maxlength="40"/></li>
2782<li><input name="senderEmail" id="senderEmail" type="email" class="text-field" placeholder="Email" required="required"/></li>
2783<li><input name="senderPhone" id="senderPhone" class="text-field validatePhone" placeholder="Phone Number" required="required" maxlength="20"/></li>
2784<li><textarea name="message" id="message" class="text-field" rows="5" cols="5" placeholder="Enter Your Message" required="required"></textarea></li>																						<li>
2785									<div class="check-field" style="width: 92%; box-sizing: border-box;">
2786										<input type="checkbox" name="optInService" id="optInService" value="1" tabindex="9" accesskey="i" title="Check to opt in" />
2787										<label for="optInService">Text Me!</label>
2788										<div style="font-size: 12px; margin-top: 2px; line-height: 1.4;">I agree to receive service-related text messages from Gary's Plumbing, Inc. (appointment reminders, service updates, missed call follow-ups).</div>
2789										<input type="hidden" name="optInServiceText" value="I agree to receive service-related text messages from Gary&#039;s Plumbing, Inc. (appointment reminders, service updates, missed call follow-ups)." />
2790									</div>
2791								</li>
2792																						<li>
2793									<div class="check-field" style="width: 92%; box-sizing: border-box;">
2794										<input type="checkbox" name="optInMarketing" id="optInMarketing" value="1" tabindex="9" title="Check to opt in to marketing messages" />
2795										<label for="optInMarketing">Opt-In</label>
2796										<div style="font-size: 12px; margin-top: 2px; line-height: 1.4;">I agree to receive promotional offers and marketing text messages from Gary's Plumbing, Inc..</div>
2797									</div>
2798								</li>
2799																						<li>
2800									<div style="width: 92%; box-sizing: border-box; padding-left: 24px; text-align: left; font-size: 11px; color: #333; line-height: 1.4;">Msg frequency varies. Msg & data rates may apply. Reply STOP to opt out or HELP for help. By checking above, you agree to our <a href="/privacy-policy.htm" target="_blank" style="color: #0066cc;">Privacy Policy</a> and <a href="/terms-conditions.htm" target="_blank" style="color: #0066cc;">Terms &amp; Conditions</a>.</div>
2801								</li>
2802														<li><button class="g-recaptcha submit-field" data-sitekey="6LfVQZwhAAAAALN3wyVxWvmdFsX4R3Yh64Un7v2D" data-callback='onRecaptchaSubmit' data-action='submit' tabindex="10" accesskey="u" title="Submit form">Submit</button></li>
2803							<li><input type="text" name="senderZip" id="senderZip" required="required" style="display:none" placeholder="Enter your zip code" maxlength="10" value="
28030" /></li>
2804
2805						</ul>
2806					</form>
2807				</div>
2808			</div>
2809		
2810					<div class="greyblocks greyblocks-box">
2811				<h3>Credit Cards Accepted</h3>
2812				<div class="greyblock-col-1">
2813					<img src="https://www.paypalobjects.com/webstatic/mktg/logo/AM_mc_vs_dc_ae.jpg" width="319" height="110" style="border:none" alt="PayPal Acceptance Mark"  >
2814				</div>
2815			</div>
2816		
2817					<div class="greyblocks greyblocks-box">
2818				<h3>Social Media</h3>
2819				<div class="greyblock-col-1 followus">
2820					<a href="https://www.facebook.com/Garys-Plumbing-Inc-112558552701636/" target="_blank" title="Facebook"><img alt="Facebook" src="/images/social/facebook_logo_43x43.png" width="43" height="43"  /></a><a href="https://search.google.com/local/writereview?placeid=ChIJ715k0ffn3IARIvRckEhcc9g" target="_blank" title="Google"><img alt="Google" src="/images/social/google_icon_43x43.png" width="43" height="43"  /></a><a href="https://www.yelp.com/biz/garys-plumbing-irvine" target="_blank" title="Yelp"><img alt="Yelp" src="/images/social/yelp43x43.png" width="43" height="43"  /></a><a href="https://www.houzz.com/hznb/professionals/plumbers/gary-s-plumbing-inc-pfvwus-pf~917674296/__public" target="_blank" title="Houzz"><img alt="Houzz" src="/images/social/houzz_43x43.png" width="43" height="43"  /></a><a href="https://nextdoor.com/pages/garys-plumbing-irvine-ca/" target="_blank" title="Nextdoor"><img alt="Nextdoor" src="/images/social/nextdoor_43x43.png" width="43" height="43" loading="lazy"/></a>				</div>
2821			</div>
2822		
2823	</div>
2824	</div>
2825		
2826				
2827				
2828</main>
2829
2830<!-- page content ends here -->
2831
2832<!-- footer starts here -->
2833
2834<footer class="w3-container pad0">
2835			<div class="w3-container pad0">
2836
2837		
2838		<div class="w3-container pad0">
2839		<div class="useboxright">
2840		Gary&#039;s Plumbing, Inc.<br>
2841							3419 Spectrum, Irvine, CA&nbsp; 92618
2842					<div class="callNoDiv">
2843		<ul class="phoneList">
2844		<li class="primaryPhone"><a class="phoneNumber primaryPhone" href="tel:+19497796129">(949) 779-6129</a></li>
2845																</ul>
2846		</div>
2847						
2848		<p><a class="privacyPolicy" href="/privacy-policy.htm">Privacy Policy</a> | <a class="termsConditions" href="/terms-conditions.htm">Terms &amp; Conditions</a></p>
2849
2850		</div>
2851		</div>
2852	</div>
2853
2854	<div class="w3-container pad0 footerDivMn">Copyright &copy; 2026 - 99 Calls</div>	<p style="font-size:10px;color:#888;text-align:center;margin:8px 0 0;line-height:1.4">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener" style="color:#666">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener" style="color:#666">Terms of Service</a> apply.</p>
2855	</footer>
2856
2857<!-- footer ends here -->
2858
2859<!-- Menu Styles -->
2860<script src="/js/jquery-3.7.1.min.js"></script>
2860
2861
2862
2863
2864<script>
2865		var leadFormPopUpRedirectUrl = null;
2866	
2867	$(document).ready(function () {
2868				$(window).resize(function () {
2869			setMainTopSpacer();
2870			// ipad (others?) slow to redraw screen on orientation change
2871			setTimeout(setMainTopSpacer, 500);
2872		});
2873	});
2874</script>
2874
2875
2876
2877
2878<script src="/js/jquery.mask.min.js" defer></script>
2878
2879
2880<div id="overlay-back"></div>
2881<link rel="preload" href="/templates/contactForm.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
2882<noscript>
2883	<link rel="stylesheet" href="/templates/contactForm.css">
2884</noscript>
2885<div>
2886	<style>.statusMessage {
2887			height: 6em;
2888		}</style>
2889</div>
2890
2891<div id="sendingMessage" class="statusMessage"><p>Sending your message. Please wait...</p></div>
2892<div id="failureMessage" class="statusMessage"><p>There was a problem sending your message. Please try again or call
2893		us.</p></div>
2894<div id="incompleteMessage" class="statusMessage"><p>Please complete all the fields in the form before sending.</p>
2895</div>
2896<div id="limitMessage" class="statusMessage"><p>You may only send 3 messages per day, but you are welcome to call
2897		us!</p></div>
2898<div id="invalid_phone" class="statusMessage"><p>The phone number is invalid. Please check your phone number and try
2899		again.</p></div>
2900<div id="invalid_email" class="statusMessage"><p>The email address is invalid. Please check your email address and try
2901		again.</p></div>
2902	<div id="successMessage" class="statusMessage"><p>Thanks for contacting us! We'll get back to you shortly.</p></div>
2903
2904
2905
2906	
2906<script>
2907		let messageDelay = 3000;  // How long to display status messages (in milliseconds)
2908
2909		// Init the form once the document is ready
2910		$(init);
2911
2912		// Initialize the form
2913		function init() {
2914			$("[name='contactForm']").submit(submitForm);
2915			$(".validatePhone").mask('(000) 000-0000');
2916		}
2917
2918		// reCAPTCHA v3
2919		function onRecaptchaSubmit(token) {
2920			// token does not need to be processed
2921			if (!validateForm()) return false;
2922			let recaptchaForm = document.getElementById("demo-form");
2923			// the form *magickly* includes the token
2924			submitForm.apply(recaptchaForm);
2925		}
2926		function onRecaptchaLandingSubmit(token) {
2927			// token does not need to be processed
2928			let recaptchaForm = document.getElementById("landing-form");
2929			// the form *magickly* includes the token
2930			submitForm.apply(recaptchaForm);
2931		}
2932
2933		// Submit the form via Ajax
2934		function submitForm() {
2935			var contactForm = $(this);
2936
2937			// Are all the fields filled in?
2938			$('#overlay-back').fadeIn(200);
2939			$('#page').fadeTo('fast', .2);
2940
2941			if (!contactForm.find("[name='senderName']").val() || !contactForm.find("[name='senderEmail']").val() || !contactForm.find("[name='message']").val()) {
2942
2943				// No; display a warning message and return to the form
2944				$('#incompleteMessage').fadeIn().delay(messageDelay).fadeOut();
2945				$('#overlay-back').delay(messageDelay + 500).fadeOut(200);
2946				$('#page').delay(messageDelay + 500).fadeTo('fast', 1);
2947
2948
2949			} else {
2950
2951				// Yes; submit the form to the PHP script via Ajax
2952				$('#sendingMessage').fadeIn();
2953
2954				$.ajax({
2955					url: contactForm.attr('action') + "?ajax=true",
2956					type: contactForm.attr('method'),
2957					data: contactForm.serialize(),
2958					timeout: 30000,
2959					success: submitFinished,
2960					error: function (x, t, m) {
2961						if (t === "timeout") {
2962							submitFinished(t);
2963						} else if (t === "invalid_email") {
2964							submitFinished(t);
2965						} else if (t === "invalid_phone") {
2966							submitFinished(t);
2967						}
2968					}
2969				});
2970			}
2971
2972			// Prevent the default form submission occurring
2973			return false;
2974		}
2975
2976		// Handle the Ajax response
2977		function submitFinished(response) {
2978			response = $.trim(response);
2979			$('#sendingMessage').fadeOut();
2980
2981			if (response == "success") {
2982
2983				// Form submitted successfully:
2984				// 1. Display the success message
2985				// 2. Clear the form fields
2986				// 3. Fade the content back in
2987
2988				$('#successMessage').fadeIn().delay(messageDelay).fadeOut();
2989				var leadName = $("[name='senderName']").val();
2990				var leadEmail = $("[name='senderEmail']").val();
2991				var leadPhone = $("[name='senderPhone']").val();
2992				$("[name='senderName']").val("");
2993				$("[name='senderEmail']").val("");
2994				$("[name='senderPhone']").val("");
2995				$("[name='message']").val("");
2996
2997				if (leadFormPopUpRedirectUrl) {
2998					// client has supplied url to send customer after form is accepted
2999					var params = new URLSearchParams();
3000					if (leadName) params.set('full_name', leadName);
3001					if (leadEmail) params.set('email', leadEmail);
3002					if (leadPhone) params.set('phone', leadPhone);
3003					var a = document.getElementById('propertyAddress');
3004					var c = document.getElementById('propertyCity');
3005					var s = document.getElementById('propertyState');
3006					var z = document.getElementById('propertyZip');
3007					if (a && a.value) params.set('address', a.value.trim());
3008					if (c && c.value) params.set('city', c.value.trim());
3009					if (s && s.value) params.set('state', s.value.trim());
3010					if (z && z.value) params.set('postal_code', z.value.trim());
3011					var sep = leadFormPopUpRedirectUrl.includes('?') ? '&' : '?';
3012					window.location.href = params.toString()
3013						? leadFormPopUpRedirectUrl + sep + params.toString()
3014						: leadFormPopUpRedirectUrl;
3015				}
3016
3017				$('#overlay-back').delay(messageDelay + 500).fadeOut(200);
3018				$('#page').delay(messageDelay + 500).fadeTo('fast', 1);
3019
3020			} else if (response == "toomany") {
3021				$('#limitMessage').fadeIn().delay(messageDelay).fadeOut();
3022				$('#overlay-back').delay(messageDelay + 500).fadeOut(200);
3023				$('#page').delay(messageDelay + 500).fadeTo('fast', 1);
3024			} else if (response === "invalid_email") {
3025				$('#invalid_email').fadeIn().delay(messageDelay).fadeOut();
3026				$('#overlay-back').delay(messageDelay+500).fadeOut(200);
3027				$('#page').delay(messageDelay+500).fadeTo( 'fast', 1 );
3028			} else if (response === "invalid_phone") {
3029				$('#invalid_phone').fadeIn().delay(messageDelay).fadeOut();
3030				$('#overlay-back').delay(messageDelay+500).fadeOut(200);
3031				$('#page').delay(messageDelay+500).fadeTo( 'fast', 1 );
3032			} else {
3033				// Form submission failed: Display the failure message,
3034				// then redisplay the form
3035				$('#failureMessage').fadeIn().delay(messageDelay).fadeOut();
3036				$('#overlay-back').delay(messageDelay + 500).fadeOut(200);
3037				$('#page').delay(messageDelay + 500).fadeTo('fast', 1);
3038			}
3039		}
3040
3041		$(".gotoGetAPrice").click(function () {
3042			$('html, body').animate({
3043				scrollTop: $("#get_a_price").offset().top - 100
3044			}, 1000);
3045			document.getElementById("senderName").focus();
3046		});
3047
3048	</script>
3048
3049
3050
3051
3052
3053
3054	<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 3054-3055
3054
3055	<script async src="https://www.googletagmanager.com/gtag/js?id=
3055AW-768206984
vendor: 13 bytes, lines 3055-3056
3055"></script>
3056	
3056<script>
3057		
vendor: 135 bytes, lines 3057-3060
3057window.dataLayer = window.dataLayer || [];
3058		function gtag(){dataLayer.push(arguments);}
3059		gtag('js', new Date());
3060				gtag('config', '
3060AW-768206984
vendor: 4 bytes, line 3060
3060');	
3060</script>
3060
3061
3062
3063<script>
3064	setTimeout(function() {
3065		var script = document.createElement('script');
3066		script.src = 'https://www.google.com/recaptcha/api.js';
3067		script.defer = true;
3068		document.body.appendChild(script);
3069	}, 4200);
3070	setTimeout(function() {
3071		var script = document.createElement('script');
3072		// look for hi-res images - same file name with @2x appended
3073		//script.src = '/js/retina99.min.js';
3074		script.src = '/js/retina99.js';
3075		script.defer = true;
3076		document.body.appendChild(script);
3077	}, 4300);
3078</script>
3078
3079
3080	
3080<script>
3081		
3082
3083		function validateForm() {
3084			var senderName = document.getElementById("senderName").value;
3085			var senderEmail = document.getElementById("senderEmail").value;
3086			var senderPhone = document.getElementById("senderPhone").value;
3087
3088			if (senderName.trim() === "") {
3089				alert("Please enter your name.");
3090				return false;
3091			}
3092
3093			if (senderEmail.trim() === "") {
3094				alert("Please enter your email.");
3095				return false;
3096			}
3097
3098			if (senderPhone.trim() === "") {
3099				alert("Please enter your phone number.");
3100				return false;
3101			}
3102
3103			// Validate address if address step is enabled
3104			var addressField = document.getElementById("propertyAddress");
3105			if (addressField) {
3106				if (addressField.value.trim() === "") {
3107					alert("Please enter the property address.");
3108					return false;
3109				}
3110				// Only require autocomplete selection if Google Maps loaded OK
3111				if (!window.googleMapsAuthFailed) {
3112					var cityField = document.getElementById("propertyCity");
3113					if (!cityField || cityField.value.trim() === "") {
3114						alert("Please select an address from the suggestions.");
3115						return false;
3116					}
3117				}
3118			}
3119
3120			// Regular expression pattern for validating email addresses
3121			var pattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
3122			if (!pattern.test(senderEmail)) {
3123				alert("Please check your email address.");
3124				return false;
3125			}
3126
3127			// if email address ends in .con, ask if they meant .com
3128			if (senderEmail.endsWith('.con')) {
3129				confirm('Did you mean .com at the end of your email address?');
3130				return false;
3131			}
3132
3133			// validate phone number is US format - remove non-numeric characters and check it's 10 digits and first digit is not 0 or 1
3134			var phone = senderPhone.replace(/\D/g, '');
3135			if (phone.length != 10) {
3136				alert("Please check your phone number.");
3137				return false;
3138			}
3139			// Area codes start with a number 2–9, followed by 0–8, and then any third digit.
3140			// The second group of three digits, known as the central office or exchange code, starts with a number 2–9, followed by any two digits.
3141			// The final four digits, known as the station code, have no restrictions.
3142			pattern = /^[2-9][0-8][0-9][2-9][0-9]{2}[0-9]{4}$/;
3143			if (!pattern.test(phone)) {
3144				alert("Please check your phone number.");
3145				return false;
3146			}
3147			// 222 and 555 are not valid area codes
3148			if (phone.substring(0, 3) == '222' || phone.substring(0, 3) == '555') {
3149				alert("Please check your phone number.");
3150				return false;
3151			}
3152
3153			return true; // Form submission will proceed if all fields are filled
3154		}
3155
3156		$(document).ready(function () { // when the document is ready
3157			// add a listener to the form submit event
3158			$("#demo-form").submit(function (e) {
3159				e.preventDefault(); // avoid execution of the actual submit of the form.
3160				const idSubmit =  document.getElementById("idSubmit");
3161				if (idSubmit)
3162				   idSubmit.innerText = "... processing ...";
3163
3164				var form = $(this);
3165				var url = form.attr('action') + '?ajax';
3166
3167				$.ajax({
3168					type: "POST",
3169					url: url,
3170					data: form.serialize(), // serializes the form's elements.
3171					success: function (data) {
3172						if (data == 'invalid_email') {
3173							//alert('Invalid email address. Please review your email address for typos and try again.');
3174							if (idSubmit)
3175								idSubmit.innerText = "Get exclusive leads!";
3176							return;
3177						}
3178						if (data == 'success') {
3179							let url = $("#hdnThankYouUrl").val();
3180							if (url)
3181								window.location = url;
3182							else
3183								document.getElementById("idSubmit").innerText = "Success!";
3184						}
3185
3186						const d = new Date();
3187						d.toLocaleString('en-US', { timeZone: 'America/New_York' })
3188						if (d.getDay() >= 1 && d.getDay() <= 5 && d.getHours() >= 9 && d.getHours() < 17) {
3189							// it's Mon-Fri between 9am - 5pm
3190							document.getElementById("overlay_open").style.display = "block";
3191						} else {
3192							document.getElementById("overlay_closed").style.display = "block";
3193						}
3194						document.getElementById("idPopUp").style.display = "none";
3195						// document.getElementById("idPopUp").style.zIndex = 1;
3196					},
3197					error: function (jqXHR, textStatus, errorThrown) {
3198						if (errorThrown) {
3199							alert('Error - ' + errorThrown);
3200						} else if (textStatus) {
3201							alert('Error - ' + textStatus);
3202						} else {
3203							alert('An unexpected error occurred. Please call us. We apologize for the inconvenience.')
3204						}
3205					}
3206				});
3207
3208			});
3209		});
3210
3211		
3212	</script>
3212
3213
3214
3215<link href="/css/pop.up.lead.form.css?v=2026.01.27e" rel="stylesheet" type="text/css"/>
3216
3217<div  class="user-agent-warp">
3218    <div id="divuseragent" class="user-agent-bubble message-left">
3219        <div class="user-agent-avatar user-agent-fade-in">
3220            <div class="user-agent-bubble-avatar">
3221                <div class="user-agent-avatar-img-wrapper">
3222                    <img src="/css/images/repagent.png" id="imgAgentAvatar" alt="support Agent"/>
3223                </div>
3224                <div id="divPopUpLeadFormCounter" class="user-agent-bubble-avatar-counter">1</div>
3225            </div>
3226        </div>
3227        <div class="user-agent-bubble-message user-agent-fade-in" id="divuseragentmessage">
3228            <button type="button" class="user-agent-bubble-close" id="btnCloseBubbleMessage" aria-label="Close message">&times;</button>
3229            <span id="spanuseragentmessage">Which type of leads are you looking for?</span>
3230            <div class="user-agent-bubble-arrow-left"></div>
3231        </div>
3232    </div>
3233</div>
3234<div style="display: none;">
3235    <div id="modal-useragent" >
3236        <div id="divAgentDialogContent">
3237
3238        </div>
3239    </div>
3240</div>
3241<script src="/js/pop.up.lead.form.99calls.js?v=2026.03.09a" defer></script>
3241
3242</body>
3243
3244
3245<div id="mobile-call-bar">
3246<div style="
3247	position:fixed;
3248	left:0;
3249	right:0;
3250	bottom:0;
3251	z-index:900;
3252	background:#0959a7;
3253	box-shadow: 0 -6px 14px rgba(0,0,0,.50), inset 0 1px 0 rgba(255,255,255,.35);
3254	border-top:1px solid rgba(255,255,255,.25);
3255"><a aria-label="Click To Call"
3256	href="tel:9497796129"
3257	onmouseout="this.style.backgroundColor='#0959a7'"
3258	onmouseover="this.style.backgroundColor='#0b6fd1'"
3259	ontouchend="this.style.backgroundColor='#0959a7'"
3260	ontouchstart="this.style.backgroundColor='#0b6fd1'"
3261	style="display: flex; align-items: center; justify-content: center; gap: 12px; height: 60px; width: 100%; background: #0b6fd1; text-decoration: none; color: white; font-family: -apple-system, BlinkMacSystemFont, Arial, sans-serif; -webkit-tap-highlight-color: transparent; position: relative;">
3262	<span aria-hidden="true" style="
3263		width:34px;
3264		height:34px;
3265		border-radius:50%;
3266		display:flex;
3267		align-items:center;
3268		justify-content:center;
3269		background:#ffffff;
3270		border:1px solid rgba(0,0,0,.28);
3271		box-shadow: inset 0 3px 4px rgba(0,0,0,.32), inset 0 -1px 0 rgba(255,255,255,.20);
3272		position:relative;
3273		z-index:2;
3274	">
3275		<svg aria-hidden="true" height="16" style="fill:#0959a7;" viewBox="0 0 24 24" width="16">
3276			<path d="M20.01 15.38c-1.23 0-2.42-.2-3.53-.56-.35-.12-.74-.03-1.01.24l-1.57 1.97c-2.83-1.35-5.48-3.9-6.89-6.83l1.95-1.66c.27-.28.35-.67.24-1.02-.37-1.11-.56-2.3-.56-3.53 0-.54-.45-.99-.99-.99H4.19C3.65 3 3 3.24 3 3.99 3 13.28 10.73 21 20.01 21c.71 0 .99-.63.99-1.18v-3.45c0-.54-.45-.99-.99-.99z"></path>
3277		</svg>
3278	</span>
3279	<span style="line-height:1.05; text-align:center; position:relative; z-index:2;">
3280		<span style="
3281			display:block;
3282			font-size:13px;
3283			font-weight:800;
3284			letter-spacing:.25px;
3285			text-shadow:0 1px 2px rgba(0,0,0,.35);
3286		">Click To Call</span>
3287		<span style="
3288			display:block;
3289			font-size:19px;
3290			font-weight:900;
3291			letter-spacing:.4px;
3292			text-shadow:0 2px 3px rgba(0,0,0,.45);
3293		">(949) 779-6129</span>
3294	</span>
3295</a></div>
3296<div style="height:60px;">&nbsp;</div>
3297</div>
3298<script>document.body.classList.add('has-fixed-call-now');</script>
3298
3299
3300<script>
3301
3302function onHeroRecaptchaSubmit(token) {
3303	var form = document.getElementById("hero-form");
3304	var name = form.querySelector("[name='senderName']").value;
3305	var email = form.querySelector("[name='senderEmail']").value;
3306	var phone = form.querySelector("[name='senderPhone']").value;
3307
3308	if (name.trim() === "") { alert("Please enter your name."); return false; }
3309	if (email.trim() === "") { alert("Please enter your email."); return false; }
3310	if (phone.trim() === "") { alert("Please enter your phone number."); return false; }
3311
3312	var address = document.getElementById("hero-propertyAddress");
3313	if (address) {
3314		if (address.value.trim() === "") { alert("Please enter the property address."); return false; }
3315		// Only require an autocomplete selection if Google Maps loaded OK
3316		if (!window.googleMapsAuthFailed && document.getElementById("hero-propertyCity").value.trim() === "") {
3317			alert("Please select an address from the suggestions."); return false;
3318		}
3319	}
3320
3321	var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
3322	if (!emailRegex.test(email)) { alert("Please enter a valid email address."); return false; }
3323
3324	submitForm.apply(form);
3325}
3326
3327// Apply phone mask to hero form field once jQuery and mask plugin load
3328$(function() {
3329	if ($.fn.mask) {
3330		$("#hero-senderPhone").mask('(000) 000-0000');
3331	}
3332});
3333
3334</script>
3334
3335
3336
3337</html>

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.