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 <meta name="robots" content="noindex"> 8 <title>Carpet Cleaning by Certified Green Team</title> 9 <link href="/images/layout01/favicon.ico" type="image/x-icon" rel="shortcut icon"/> 10 <meta name="description" content="Learn about Carpet Cleaning by Certified Green Team"/> 11 12 <meta property="og:type" content="website"/> 13 <meta property="og:title" content="Carpet Cleaning by Certified Green Team"/> 14 <meta property="og:description" content="Learn about Carpet Cleaning by Certified Green Team"/> 15 <meta property="og:url" content="https://certified-green-team-li.com/Carpet-Cleaning.htm"/> 16 <meta property="og:site_name" content="Certified Green Team"/> 17 <meta name="twitter:card" content="summary"/> 18 <meta name="google-site-verification" content=""/> 19 <meta name="msvalidate.01" content=""/> 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:Verdana,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",Arial,sans-serif;font-weight:400;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: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",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: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; 254 font-weight: 400; 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: 1em; 346 margin-bottom: 1em; 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:24px; 392 color:#000000; 393} 394 395#header_subtext { 396 font-weight: normal; 397 color: black; 398 padding: 0 0 10px 0; 399 font-size: 20px; 400} 401.greyblocks{overflow:hidden; text-align:center; font-size:20px; font-weight:600; 402 margin: 10px auto 10px; 403} 404.greyblocks-box { 405 border-color: #f0f0f0; 406 border-width: 1px; 407 border-style: solid; 408 padding:10px; 409 max-width: 600px; 410 margin: 35px auto 35px; 411} 412.greyblock-col-1{padding:10px 0; background:#ffffff; overflow:hidden; margin:10px 0 0 0;box-sizing: unset} 413.greyblocks span{color:#2971b3; font-weight:500; font-size:18px} 414.greyblocks img {max-width:100%; height:auto; border-style: none} 415 416.callfreeQuote{text-align:center; padding:10px 0; overflow:hidden; clear:both; font-size:30px; font-weight:normal;
416 color:#000000;} 417.callUsBtn{clear:both; width:280px; padding:10px 10px; border-radius:40px; background:#49b9bf; font-size:30px; font-weight:bold; color:#ffffff; margin:10px auto;} 418.callUsBtn i{ padding:6px 10px; background:#ffffff; color:#49b9bf; border-radius:50px; } 419 420.getPriceDiv{background:#428bca; padding:10px 1px 1px 1px; text-align:center; font-size:24px; color:#ffffff; overflow:hidden; 421 margin: 35px auto 35px; 422 max-width: 600px; 423} 424.getPriceFormDiv{background:#f6f7fe; padding:10px 10px 0 10px; overflow:hidden; margin:10px 0 0 0;} 425.getPriceFormDiv ul{padding:0; margin:0; list-style-type:none;} 426.getPriceFormDiv ul li{padding:5px 0; margin:0; display:block; font-size:14px; } 427.text-field{border:1px solid #d4d4d4; color:#555; font-weight:normal; padding:10px; width:92%; font-size: 14px;} 428.check-field { padding-left: 24px; text-align: left; vertical-align: center;} 429.check-field label { color: black;} 430.submit-field{background:#2971b3; border: medium none; padding: 10px 0; display: inline-block; cursor: pointer; color: #FFF; width: 100%; 431 font-size: 20px; 432 border-radius: 5px; 433 font-weight: 400; 434} 435textarea{font-size:16px; font-weight:normal;} 436.followus img{padding:15px} 437 438.cities-panel{ 439 padding-bottom: 30px; 440} 441 442.cities-panel h2,.cities-panel h3 { 443 display: inline-block; 444} 445.cities-panel h3 {margin:30px 0 } 446.cities-panel ul{ 447 padding:0; 448 margin:0; 449 list-style-type:none; 450 overflow: hidden; 451} 452.cities-panel ul li{ 453 margin-bottom: 2px; 454 font-size:16px; 455 font-weight:500; display:inline-block; line-height:28px; width:29%; 456} 457.cities-panel ul li a{text-decoration: none} 458.cities-panel ul li a:hover{text-decoration:underline;} 459 460.wrapperuseful{padding:0; overflow:hidden;} 461.usefullinksDiv{padding:0 15px 15px 15px; overflow:hidden;} 462.usefullinksDiv h2{ font-size:28px; font-weight:bold; color:#000000; padding:0; margin:0;} 463.usefullinksDiv ul{ list-style:none; margin:0 0 10px 0; padding:0; overflow:hidden;} 464.usefullinksDiv ul li { 465 margin:0 0 0 40px; padding:5px 0; float:left; width:26%; 466} 467.usefullinksDiv ul li a{ color:#000000; text-decoration:none;} 468a.reviewBtn{ 469 text-decoration:none; display:block; clear:both; 470 margin: 0 auto; 471} 472a.reviewBtn div { 473 background: orange; 474 border: medium none; 475 padding: 10px 0; 476 cursor: pointer; 477 color: #FFF; 478 font-size: 20px; 479 text-align: center; 480 border-radius: 6px; 481 margin: 50px auto; 482 font-weight: 400; 483} 484 485.smallScreenMenuPhone a, .header_line1_phone a { 486 cursor: pointer; 487 color: #FFF; 488 text-align:center; 489} 490 491.useboxright{ 492 text-align:center; background: black; padding:15px;
492 color:#ffffff; 493 font-weight: 300; 494} 495.callNoDiv{ 496 padding:10px; text-align:center; font-size:26px; 497 color:#ffffff; 498 border-radius: 6px; 499 max-width: 300px; 500 margin: 0 auto; 501} 502.callNoDiv a { 503 text-align:center; font-size:32px; 504 color:#ffffff; text-decoration: none; position: relative; 505 506 font-weight: 400; 507 border-radius:6px; 508 border-style: solid; 509 border-color: rgba(170, 170, 170, .4); 510 border-width: 1px; 511 padding: 2px 20px 5px; 512 513} 514.callNoDiv span a{font-size:.6em} 515 516footer { margin-top: 40px } 517.footerDivMn{ 518 width:100%; 519 text-align:center; 520 font-size:12px; 521 color:#ffffff; 522 background: #2971b3; 523 clear:both; 524} 525 526.toggleMenu { 527 display:none; 528 clear:both; 529 font-size: 16px; 530 color: white; 531 padding: 10px 10px 10px 10px; 532 cursor: pointer; 533} 534a.toggleMenu {text-decoration:none;} 535 536.contentX a.phoneNumber, a.phoneNumber { 537 color: #2870b3; 538 text-decoration: none; 539 white-space: nowrap; 540} 541 542#townServiceList p { 543 min-height: 50px; 544} 545#townServiceList img { 546 float: left; 547 border: none; 548 margin: 8px 10px 0 0; 549 box-shadow: 2px 2px 2px grey; 550 width: 50px; 551 height: 50px !important; 552 max-width: 50px; 553} 554#townServiceList a { 555 font-weight: 700; 556 font-size: 15px; 557 text-decoration:none; 558} 559 560div.BBB { 561 padding-top: 10px; 562} 563p.BBBText { 564 font-size: 16px; 565 font-weight: bold; 566 text-align: center; 567} 568p.BBBText a { 569 text-decoration: none; 570} 571p.BBBImage { 572 text-align: center; 573} 574.contentX p.BBBImage img { 575 display: inline-block; 576 margin-right: 10px; 577 margin-left: 10px; 578} 579.BBBImage img { 580 border:none; 581 margin: 0; 582 box-shadow: none; 583} 584.BBB_script { 585 width: 282px; 586 margin: auto; 587 padding: 30px 0 30px 0; 588} 589 590img.CreditCard { 591 max-width:100%; 592 padding-top: 15px; 593} 594.license { margin: auto; } 595 596ul.listCSV { 597 padding:0 598} 599.listCSV li {
600 display: inline; 601} 602.listCSV li:after { 603 content: ", "; 604} 605.listCSV li:last-child:after { 606 content: ""; 607} 608hr { 609 clear: both; 610 margin-top: 20px; 611 margin-bottom: 20px; 612 border: 0; 613 border-top: 1px solid #d6d6d6; 614} 615ul.zipCodesServed li { 616 font-weight: 400; 617} 618 619/* override inline style ... update all themes, then remove inline style in site_render */ 620p.ctaPhone a{font-size: 36px; text-align: center} 621 622.smallScreenHeader {display: none} 623.showLargeScreenHeader { 624 display:inherit 625} 626.showLargeScreenHeader a { 627 font-size: 36px; 628} 629.headerBackground { 630 background-color: darkorange; 631} 632 633.contentX { 634 width: 100%; 635} 636 637.contentX .selectTestimonials { 638 clear: both; 639 margin-top: 40px; 640 margin-bottom: 40px; 641} 642.contentX .selectTestimonials ul { 643 padding-left: 0; 644} 645.contentX .selectTestimonials ul li { 646 list-style: none; 647 margin:2px 5px 20px 1px; 648 padding: 10px; 649 -webkit-box-shadow: 2px 2px 5px 2px rgba(0,0,0,0.25); 650 -moz-box-shadow: 2px 2px 5px 2px rgba(0,0,0,0.25); 651 box-shadow: 2px 2px 5px 2px rgba(0,0,0,0.25); 652} 653.contentX .testimonialBody { 654 font-weight: 400; 655 font-style: italic; 656} 657.contentX div.schema.review span[itemprop="ratingValue"] { 658 display:none 659} 660.contentX div.schema.review .review-stars { 661 color: #428BCA; 662 font-size: 20px; 663} 664.contentX div.schema.review span[itemprop="datePublished"]::before { 665 content: "Review date: "; 666 font-size: 12px; 667} 668.contentX div.schema.review span[itemprop="datePublished"] { 669 font-style: italic; 670 color: grey; 671 font-size: 12px; 672} 673span[itemprop="datePublished"] { 674 display:none 675} 676 677.contentX .selectTestimonials ul li strong em, .contentX .selectTestimonials .testimonialAuthor { 678 font-weight: 500; 679 font-style: italic; 680} 681 682.paypal {max-width:100%} 683 684ul.phoneList {list-style: none;padding-left: 0;margin:0 auto} 685footer li.primaryPhone { 686 margin-bottom: 10px; 687} 688.phoneSmall {font-size: 16px; font-weight: normal;} 689.mainTopSpacer {height: 105px} 690 691.w3-container .padGetPrice { 692 padding-top: 50px; 693 margin-top: -50px; 694} 695 696.center-cropped { 697 width: 100%; 698 max-height: 60vh; 699 overflow: hidden; 700} 701@media screen and (min-height: 1000px) { 702 .center-cropped { 703 height: 1000px; 704 } 705} 706@media screen and (max-width: 600px) { 707 .center-cropped { 708 height: 400px; 709 } 710} 711 712/* LCP image - visible with object-fit cover for cropping effect */ 713/* Note: object-position can be overridden per-registration via inline media queries */ 714/* for responsive focal point control (GalleryFocalPoint{Mobile,Tablet,Desktop} reg_vars) */ 715.center-cropped img { 716 width: 100%; 717 height: 100%; 718 object-fit: cover; 719 object-position: center; 720} 721@media (max-width: 768px) { 722 .center-cropped { 723 max-height: 40vh; 724 } 725} 726 727/* Gallery Overlay Styles */ 728.center-cropped.has-overlay { 729 position: relative; 730} 731 732/* Full image tint overlay - covers entire image */ 733.gallery-image-tint { 734 position: absolute; 735 top: 0; 736 left: 0; 737 right: 0; 738 bottom: 0; 739 z-index: 5; /* Above image, below positioned overlay */ 740 pointer-events: none; /* Allow clicks through to image */ 741} 742 743/* Positioned overlay sits above tint */ 744.gallery-overlay { 745 position: absolute; 746 z-index: 10; /* Above tint layer */ 747 padding: 20px; 748 max-width: 80%; 749 color: white; 750 text-shadow: 2px 2px 4px rgba(0,0,0,0.8); 751} 752.gallery-overlay h1, 753.gallery-overlay h2, 754.gallery-overlay h3, 755.gallery-overlay h4, 756.gallery-overlay p { 757 margin: 0 0 0.5em 0; 758 color: inherit; 759 text-shadow: inherit; 760} 761.gallery-overlay a { 762 color: inherit; 763 text-decoration: underline; 764} 765 766/* Overlay vertical positions */ 767.gallery-overlay-top-left, 768.gallery-overlay-top-center, 769.gallery-overlay-top-right { 770 top: 5%; 771} 772.gallery-overlay-middle-left, 773.gallery-overlay-center, 774.gallery-overlay-middle-right { 775 top: 50%; 776} 777.gallery-overlay-bottom-left, 778.gallery-overlay-bottom-center, 779.gallery-overlay-bottom-right { 780 bottom: 5%; 781} 782 783/* Overlay horizontal positions */ 784.gallery-overlay-top-left, 785.gallery-overlay-middle-left, 786.gallery-overlay-bottom-left { 787 left: 5%; 788} 789.gallery-overlay-top-center, 790.gallery-overlay-center, 791.gallery-overlay-bottom-center { 792 left: 50%; 793} 794.gallery-overlay-top-right, 795.gallery-overlay-middle-right, 796.gallery-overlay-bottom-right { 797 right: 5%; 798} 799 800/* Overlay transforms for centering */ 801.gallery-overlay-top-center, 802.gallery-overlay-bottom-center { 803 transform: translateX(-50%); 804} 805.gallery-overlay-middle-left, 806.gallery-overlay-middle-right { 807 transform: translateY(-50%); 808} 809.gallery-overlay-center { 810 transform: translate(-50%, -50%); 811} 812 813/* Responsive font scaling for overlay */ 814@media (max-width: 479px) { 815 .gallery-overlay { 816 font-size: 0.7em; 817 padding: 8px; 818 max-width: 90%; 819 } 820} 821@media (min-width: 480px) and (max-width: 767px) { 822 .gallery-overlay { 823 font-size: 0.85em; 824 padding: 12px; 825 max-width: 85%; 826 } 827} 828@media (min-width: 768px) and (max-width: 1199px) { 829 .gallery-overlay { 830 font-size: 1em; 831 padding: 16px; 832 } 833} 834@media (min-width: 1200px) { 835 .gallery-overlay { 836 font-size: 1.2em; 837 padding: 20px; 838 } 839} 840 841.center_image { 842 display: block; 843 max-width:100%; 844 height:auto; 845 margin: 0 auto; 846} 847 848a.privacyPolicy { text-decoration: none} 849a.privacyPolicy:hover { text-decoration: underline} 850 851.video-container { 852 position:relative; 853 padding-bottom:56.25%; 854 padding-top:30px; 855 height:0; 856 overflow:hidden; 857} 858.video-container iframe, .video-container object, .video-container embed { 859 position:absolute; 860 top:0; 861 left:0; 862 width:100%; 863 height:100%; 864} 865/* add after video-container if video is square */ 866.video-square { 867 padding-bottom: 100% 868} 869 870/* was in sm-core-css.css */ 871/* Mobile first layout SmartMenus Core CSS (it's not recommended editing these rules) 872 You need this once per page no matter how many menu trees or different themes you use. 873-------------------------------------------------------------------------------------------*/ 874 875.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);} 876.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right;} 877.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0;} 878.sm ul{display:none;} 879.sm li,.sm a{position:relative; text-align: left} 880.sm a{display:block;} 881.sm a.disabled{cursor:not-allowed;} 882.sm:after{display:block;height:0; /*noinspection CssInvalidPropertyValue*/ 883 font:0/0 serif;clear:both;visibility:hidden;overflow:hidden;} 884.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;} 885/* ----- end ------ */ 886 887@media screen and (max-width:600px) { 888 h1 { 889 font-size: 30px; 890 } 891 892 h2 { 893 font-size: 26px; 894 } 895 896 h3 { 897 font-size: 22px; 898 } 899 900 h4 { 901 font-size: 20px; 902 } 903} 904 905@media screen and (min-width:768px) { 906 a.reviewBtn {width:300px} 907 /* smartmenu hides menu when width expands after menu toggle clicked twice*/ 908 .contentX img.floatleft {float:left;margin-left:0;margin-right:10px;} 909} 910@media screen and (min-width:981px) { 911 .contentX img { 912 margin: 0 0 10px; 913 width: 100%; 914 max-width: 100%; 915 height: auto; 916 } 917 .contentX img[style*="float"], 918 .contentX img.floatleft { 919 width: auto; 920 } 921 .contentX img.autoPost { 922 width: auto; 923 } 924} 925@media screen and (max-width:768px) { 926 .container-fluid{ width:100%; margin:auto; overflow:hidden;} 927 /* full menu */ 928 .header {padding: 6px 15px 6px 15px;} 929 .logoDiv{ 930 text-align:center; padding-top:6px; padding-bottom: 6px; 931 } 932} 933@media screen and (max-width:767px) { 934 .cities-panel ul li{width:28%;} 935 a.reviewBtn div{ 936 max-width: 300px; 937 margin: 0 auto 40px; 938 } 939 .contentX * {margin-right: 0;} 940 .contentX img { 941 margin: 0 -16px 10px; 942 border: none; 943 max-width: calc(100% + 32px); 944 height: auto !important; 945 } 946 .contentX img.autoPost { 947 margin: 0 auto; 948 } 949 .contentX img.floatleft {} 950} 951@media screen and (max-width:768px) { 952 .contentX { 953 text-align:left; 954 } 955 h2 {text-align: center} 956} 957 958@media screen and (max-width:767px) { 959 .contentX * img{ float:none !important; display:block; margin-left:-16px; margin-right:-16px} 960 /* Preserve inline centering for icons inside cards/specials (override the edge-bleed above) */ 961 .contentX .w3-card img, 962 .contentX [data-special-id] img { display:inline; margin-left:0; margin-right:0; max-width:100%; } 963 .contentX img[style*="float:left"], 964 .contentX img[style*="float: left"], 965 .contentX img[style*="float:right"], 966 .contentX img[style*="float: right"], 967 .contentX img.floatleft { 968 margin: 0 -16px 10px; 969 max-width: calc(100% + 32px); 970 width: calc(100% + 32px) !important; 971 height: auto; 972 } 973 /* Edge-to-edge content images on mobile. Content images already get the 974 negative side margins above; only the width was missing for fixed-pixel 975 images (e.g. a centered 400px hero photo), which left side gaps on phones 976 wider than the image. Force them to fill. Desktop is untouched, so low-res 977 photos stay sharp at their native size on large screens. */ 978 .contentX img { 979 max-width: calc(100% + 32px); 980 width: calc(100% + 32px) !important; 981 height: auto !important; 982 } 983 /* ...but never enlarge small / decorative images. These selectors are more 984 specific than the rule above, so they win even though both use !important. */ 985 .contentX img.noBleed, 986 .contentX img[alt="Author's Face"], 987 .contentX img[src*="/faces/"], 988 .contentX img[src*="/bbb/"], 989 .contentX p.BBBImage img, 990 .contentX .w3-card img, 991 .contentX [data-special-id] img { 992 width: auto !important; 993 max-width: 100% !important; 994 margin-left: 0; 995 margin-right: 0; 996 display: inline; 997 } 998 /* ...except a small image that floats on desktop: inline, the text it floated beside 999 would start on its bottom line, a word or two stranded to its right. Give it a row. */ 1000 .contentX img.noBleed[style*="float:left"], 1001 .contentX img.noBleed[style*="float: left"], 1002 .contentX img.noBleed[style*="float:right"], 1003 .contentX img.noBleed[style*="float: right"], 1004 .contentX img.noBleed.floatleft { 1005 display: block; 1006 margin-left: auto; 1007 margin-right: auto; 1008 } 1009 /* Photos page: each detail photo spans almost the full screen width with a thin 1010 uniform white border (one photo per row). Using width:100% (pinned to the row)
1011 rather than auto also stops the retina @2x swap (retina99.js) from enlarging 1012 them, since the width no longer follows the swapped file's intrinsic size. 1013 Grid thumbnails keep their own cover sizing. */ 1014 .contentX .photo-category-figures figure { 1015 flex: 0 0 100% !important; 1016 max-width: 100% !important; 1017 margin: 10px 0 !important; 1018 } 1019 .contentX img.autoPost { 1020 width: 100% !important; 1021 max-width: 100% !important; 1022 height: auto !important; 1023 margin: 0 auto !important; 1024 } 1025 .contentX .photo-category-card-img img { 1026 width: 100% !important; 1027 height: 100% !important; 1028 max-width: 100% !important; 1029 } 1030 /* A table cannot shrink below the min-content width of its columns, so a wide 1031 one clips at the viewport edge (even with max-width:100%). display:block 1032 lets max-width cap the box and overflow-x scroll the excess sideways. 1033 width:fit-content keeps narrow tables shrink-to-fit (and centered via 1034 margin:auto / align=center) instead of stretching their border full-width. */ 1035 .contentX table { 1036 display: block; 1037 width: fit-content; 1038 max-width: 100% !important; 1039 overflow-x: auto; 1040 } 1041 /* Wide tables stamped by ContentMutate::stampTableCardLabels (class 1042 mobile-cards + data-label per cell) render as stacked cards instead of 1043 scrolling: each body row becomes a card titled by its first cell, and the 1044 other cells show their column header from data-label. Unstamped tables 1045 keep the scroll fallback above; desktop renders the normal table. */ 1046 .contentX table.mobile-cards { 1047 width: 100%; 1048 max-width: 100% !important; 1049 border: none; 1050 overflow: visible; 1051 background: transparent; 1052 } 1053 .contentX .mobile-cards thead, 1054 .contentX .mobile-cards tbody { display: block; width: 100%; } 1055 .contentX .mobile-cards tr { 1056 display: block; 1057 /* Google Docs pastes style="height:0pt" on every row; as a block that 1058 collapses the card and stacks every row's text on top of the next. */ 1059 height: auto !important; 1060 border: 1px solid #d7dbe0; 1061 border-radius: 10px; 1062 margin: 0 0 14px; 1063 padding: 10px 14px; 1064 background: #fff; 1065 box-shadow: 0 2px 6px rgba(0,0,0,.06); 1066 } 1067 .contentX .mobile-cards tr.mobile-cards-hdr { display: none; } 1068 .contentX .mobile-cards td, 1069 .contentX .mobile-cards th { 1070 display: block; 1071 width: 100% !important; 1072 height: auto !important; 1073 border: none !important; 1074 padding: 7px 0; 1075 text-align: left; 1076 } 1077 .contentX .mobile-cards td:first-child, 1078 .contentX .mobile-cards th:first-child { 1079 font-weight: 800; 1080 font-size: 17px; 1081 border-bottom: 1px solid #eef0f2 !important; 1082 padding-bottom: 8px; 1083 margin-bottom: 4px; 1084 } 1085 .contentX .mobile-cards td::before, 1086 .contentX .mobile-cards th::before { 1087 content: attr(data-label); 1088 display: block; 1089 font-weight: 700; 1090 font-size: 12.5px; 1091 letter-spacing: .03em; 1092 text-transform: uppercase; 1093 color: #546575; 1094 margin-bottom: 1px; 1095 } 1096 .contentX .mobile-cards td:first-child::before, 1097 .contentX .mobile-cards th:first-child::before { content: none; } 1098 .logoDiv span{ 1099 font-size:14px; 1100 } 1101 .cities-panel ul li{ float:none; width:90%;} 1102 .usefullinksDiv ul li{width:36%;} 1103 .headingTxt{ 1104 font-size:26px; 1105 } 1106 .getPriceDiv {margin-top:20px} 1107 1108 h1, h2, h3, h4 {text-align: center} 1109 1110} 1111 1112/* menu mobile v desktop*/ 1113@media screen and (max-width:767px) { 1114 .showLargeScreenHeader {display: none} 1115 .smallScreenHeader {display: block;} 1116 .smallScreenMenuPhone { 1117 color: white; 1118 float:right; 1119 padding:5px 10px; 1120 font-size:20px; 1121 font-weight: bold 1122 } 1123 .toggleMenu{display:block;} 1124 .menu{ display:none;} 1125 .menu{ width:98%;} 1126 1127 .smallScreenMenuPhone a, .header_line1_phone a { 1128 border-radius:6px; 1129 border-style: solid; 1130 border-color: rgba(170, 170, 170, .4); 1131 border-width: 1px; 1132 padding: 2px 20px 5px; 1133 } 1134} 1135 1136/* Shrinking header on scroll */ 1137.mainTopSpacer { 1138 transition: height 0.3s ease-out; 1139} 1140 1141/* Gallery text adjustment when header shrinks */ 1142body.header-shrunk .gallery-text-container { 1143 top: 75px; 1144 transition: top 0.3s ease-out; 1145} 1146.gallery-text-container { 1147 transition: top 0.3s ease-out; 1148} 1149 1150/* Desktop: logo scales, wrappers shrink in height, phone stays full size */ 1151@media screen and (min-width:768px) { 1152 .headerLine1Style .header_line1_company { 1153 transition: height 0.3s ease-out; 1154 } 1155 .headerLine1Style .call99-flex-vert-center { 1156 transition: height 0.3s ease-out; 1157 } 1158 .showLargeScreenHeader img { 1159 transition: transform 0.3s ease-out; 1160 transform-origin: left top; 1161 } 1162} 1163 1164/* Mobile: logo scales, row collapses via negative margin */ 1165@media screen and (max-width:767px) { 1166 .headerLine1Style { 1167 transition: margin-bottom 0.3s ease-out; 1168 } 1169 .smallScreenHeader img { 1170 transition: transform 0.3s ease-out; 1171 transform-origin: center top; 1172 } 1173} 1174 1175/* Mobile Call Bar - mobile only */ 1176/* Note: popup lead form positioning is handled in pop.up.lead.form.css */ 1177
1178/* Hide mobile call bar on desktop */ 1179@media screen and (min-width:768px) { 1180 #mobile-call-bar { 1181 display: none; 1182 } 1183} 1184 1185/* sm-blue.css */ 1186.sm-blue { 1187 background: transparent; 1188} 1189.sm-blue a, .sm-blue a:hover, .sm-blue a:focus, .sm-blue a:active { 1190 padding: 10px 14px; 1191 /* make room for the toggle button (sub indicator) */ 1192 /*background: black;*/ 1193 color: white; 1194 font-size: 14px; 1195 font-weight: 500; 1196 line-height: 23px; 1197 text-transform:uppercase; 1198 text-decoration: none; 1199} 1200.sm-blue a:hover { 1201 background-color: #a1d1e8; 1202} 1203.sm-blue a.current { 1204 background: #e80000; 1205 color: white; 1206} 1207.sm-blue a.disabled { 1208 color: #a1d1e8; 1209} 1210.sm-blue a span.sub-arrow { 1211 position: absolute; 1212 top: 48%; 1213 margin-top: -17px; 1214 left: auto; 1215 right: 4px; 1216 width: 34px; 1217 height: 34px; 1218 overflow: hidden; 1219 font: bold 16px/34px monospace !important; 1220 text-align: center; 1221 text-shadow: none; 1222 background: #143621; 1223 border-radius: 4px; text-decoration:none; 1224} 1225.sm-blue a.highlighted span.sub-arrow:before { 1226 display: block; 1227 content: '-'; 1228} 1229.sm-blue > li:first-child > a, .sm-blue > li:first-child > :not(ul) a { 1230} 1231.sm-blue > li:last-child > a, .sm-blue > li:last-child > *:not(ul) a, .sm-blue > li:last-child > ul, 1232.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, 1233.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, 1234.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, 1235.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 { 1236} 1237.sm-blue > li:last-child > a.highlighted, .sm-blue > li:last-child > *:not(ul) a.highlighted, 1238.sm-blue > li:last-child > ul > li:last-child > a.highlighted, .sm-blue > li:last-child > ul > li:last-child > *:not(ul) a.highlighted, 1239.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, 1240.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, 1241.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 { 1242 border-radius: 0; 1243} 1244.sm-blue ul { 1245 background: white; 1246} 1247.sm-blue ul ul { 1248 background: rgba(102, 102, 102, 0.1); 1249} 1250.sm-blue ul a { 1251 background: transparent; 1252 color: #333333; 1253 font-size: 14px; 1254 text-shadow: none; 1255 border-left: 8px solid transparent; 1256} 1257.sm-blue ul a.current { 1258 color: white; text-decoration:none; 1259} 1260.sm-blue ul a.disabled { 1261 color: #b3b3b3; 1262} 1263.sm-blue ul ul a, 1264.sm-blue ul ul a:hover, 1265.sm-blue ul ul a:focus, 1266.sm-blue ul ul a:active { 1267 border-left: 16px solid transparent; text-decoration:none; 1268} 1269.sm-blue ul ul ul a, 1270.sm-blue ul ul ul a:hover, 1271.sm-blue ul ul ul a:focus, 1272.sm-blue ul ul ul a:active { 1273 border-left: 24px solid transparent; 1274} 1275.sm-blue ul ul ul ul a, 1276.sm-blue ul ul ul ul a:hover, 1277.sm-blue ul ul ul ul a:focus, 1278.sm-blue ul ul ul ul a:active { 1279 border-left: 32px solid transparent; 1280} 1281.sm-blue ul ul ul ul ul a, 1282.sm-blue ul ul ul ul ul a:hover, 1283.sm-blue ul ul ul ul ul a:focus, 1284.sm-blue ul ul ul ul ul a:active { 1285 border-left: 40px solid transparent; 1286} 1287.sm-blue ul li { 1288 border-top: 1px solid rgba(0, 0, 0, 0.05); 1289 min-width: 240px; 1290} 1291.sm-blue ul li:first-child { 1292 border-top: 0; 1293} 1294.sm-blue ul li:hover { 1295 background-color: transparent; 1296} 1297
1298/* menu mobile v desktop*/ 1299@media screen and (min-width: 768px) { 1300 1301 /* why? */ 1302 /*.menu {display: inherit !important;}*/ 1303 1304 /* Switch to ipad / desktop layout 1305 ----------------------------------------------- 1306 These transform the menu tree from 1307 collapsible to desktop (navbar + dropdowns) 1308 -----------------------------------------------*/ 1309 /* start... (it's not recommended editing these rules) */ 1310 .sm-blue ul { 1311 position: absolute; 1312 } 1313 1314 .sm-blue li { 1315 display: inline-block; 1316 } 1317 1318 .sm-blue.sm-rtl li { 1319 float: right; 1320 } 1321 1322 .sm-blue ul li, .sm-blue.sm-rtl ul li, .sm-blue.sm-vertical li { 1323 float: none; 1324 } 1325 1326 .sm-blue a { 1327 white-space: nowrap; 1328 } 1329 1330 .sm-blue ul a, .sm-blue.sm-vertical a { 1331 white-space: normal; 1332 } 1333 1334 .sm-blue .sm-nowrap > li > a, .sm-blue .sm-nowrap > li > :not(ul) a { 1335 white-space: nowrap; 1336 } 1337 1338 /* ...end */ 1339 .sm-blue { 1340 } 1341 .sm-blue a, .sm-blue a:hover, .sm-blue a:focus, .sm-blue a:active, .sm-blue a.highlighted { 1342 padding: 10px 22px; 1343 } 1344 .sm-blue a:hover, .sm-blue a:focus, .sm-blue a:active, .sm-blue a.highlighted { 1345 background: #2c91c3; 1346 } 1347 .sm-blue a.current { 1348 /*background: #333;*/ 1349 /*color: white;*/ 1350 } 1351 .sm-blue a.disabled { 1352 /*background: #333;*/ 1353 /*color: #a1d1e8;*/ 1354 } 1355 .sm-blue a span.sub-arrow { 1356 /*top: auto;*/ 1357 margin-top: 0; 1358 bottom: 16px; 1359 left: 90%; 1360 margin-left: -5px; 1361 right: auto; 1362 width: 0; 1363 height: 0; 1364 border-width: 5px; 1365 border-style: solid dashed dashed dashed; 1366 border-color: #d2d3d4 transparent transparent transparent; 1367 background: transparent; 1368 border-radius: 0; 1369 } 1370 .sm-blue a.highlighted span.sub-arrow:before { 1371 display: none; 1372 } 1373 .sm-blue > li:first-child > a, .sm-blue > li:first-child > :not(ul) a { 1374 } 1375 .sm-blue > li { 1376 border-left: 0 solid #2b82ac; 1377 } 1378 .sm-blue > li:first-child { 1379 border-left: 0; 1380 } 1381 .sm-blue ul { 1382 border: 1px solid #a8a8a8; 1383 padding: 7px 0; 1384 background: white; 1385 border-radius: 0 0 4px 4px; 1386 -webkit-box-shadow: 0 5px 12px rgba(0, 0, 0, 0.3); 1387 -moz-box-shadow: 0 5px 12px rgba(0, 0, 0, 0.3); 1388 box-shadow: 0 5px 12px rgba(0, 0, 0, 0.3); 1389 } 1390 .sm-blue ul ul { 1391 background: white; 1392 } 1393 .sm-blue ul a, .sm-blue ul a:hover, .sm-blue ul a:focus, .sm-blue ul a:active, .sm-blue ul a.highlighted { 1394 border: 0 !important; 1395 padding: 9px 18px; 1396 background: transparent; 1397 /*color: #333333;*/ 1398 } 1399 .sm-blue ul a:hover, .sm-blue ul a:focus, .sm-blue ul a:active, .sm-blue ul a.highlighted { 1400 /*background: #333;*/ 1401 /*color: white;*/ 1402 } 1403 .sm-blue ul a.current { 1404 /*background: #333;*/ 1405 /*color: white;*/ 1406 } 1407 .sm-blue ul a.disabled { 1408 /*background: white;*/ 1409 /*color: #333333;*/ 1410 } 1411 .sm-blue ul a span.sub-arrow { 1412 top: 50%; 1413 margin-top: -5px; 1414 bottom: auto; 1415 left: auto; 1416 margin-left: 0; 1417 right: 10px; 1418 border-style: dashed dashed dashed solid; 1419 border-color: transparent transparent transparent #a1d1e8; 1420 } 1421 .sm-blue ul li { 1422 border: 0; 1423 } 1424 .sm-blue span.scroll-up, 1425 .sm-blue span.scroll-down { 1426 position: absolute; 1427 display: none; 1428 visibility: hidden; 1429 overflow: hidden; 1430 background: white; 1431 height: 20px; 1432 } 1433 .sm-blue span.scroll-up-arrow, .sm-blue span.scroll-down-arrow { 1434 position: absolute; 1435 top: -2px; 1436 left: 50%; 1437 margin-left: -8px; 1438 width: 0; 1439 height: 0; 1440 overflow: hidden; 1441 border-width: 8px; 1442 border-style: dashed dashed solid dashed; 1443 border-color: transparent transparent #333333 transparent; 1444 } 1445 .sm-blue span.scroll-down-arrow { 1446 top: 6px; 1447 border-style: solid dashed dashed dashed; 1448 border-color: #333333 transparent transparent transparent; 1449 } 1450 .sm-blue.sm-rtl.sm-vertical a span.sub-arrow { 1451 right: auto; 1452 left: 10px; 1453 border-style: dashed solid dashed dashed; 1454 border-color: transparent #d2d3d4 transparent transparent; 1455 } 1456 .sm-blue.sm-rtl > li:first-child > a, .sm-blue.sm-rtl > li:first-child > :not(ul) a { 1457 border-radius: 0 8px 8px 0; 1458 } 1459 .sm-blue.sm-rtl > li:first-child { 1460 border-left: 1px solid #333333; 1461 } 1462 .sm-blue.sm-rtl > li:last-child { 1463 border-left: 0; 1464 } 1465 .sm-blue.sm-rtl ul a span.sub-arrow { 1466 right: auto; 1467 left: 10px; 1468 border-style: dashed solid dashed dashed; 1469 border-color: transparent #d2d3d4 transparent transparent; 1470 } 1471 .sm-blue.sm-vertical { 1472 -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); 1473 -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); 1474 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); 1475 } 1476 .sm-blue.sm-vertical a { 1477 padding: 9px 23px; 1478 } 1479 .sm-blue.sm-vertical a span.sub-arrow { 1480 top: 50%; 1481 margin-top: -5px; 1482 bottom: auto; 1483 left: auto; 1484 margin-left: 0; 1485 right: 10px; 1486 border-style: dashed dashed dashed solid; 1487 border-color: transparent transparent transparent #a1d1e8; 1488 } 1489 .sm-blue.sm-vertical > li:first-child > a, .sm-blue.sm-vertical > li:first-child > :not(ul) a { 1490 border-radius: 8px 8px 0 0; 1491 } 1492 .sm-blue.sm-vertical > li:last-child > a, .sm-blue.sm-vertical > li:last-child > :not(ul) a { 1493 border-radius: 0 0 8px 8px; 1494 } 1495 .sm-blue.sm-vertical > li { 1496 border-left: 0 !important; 1497 } 1498 .sm-blue.sm-vertical ul { 1499 border-radius: 4px !important; 1500 } 1501 .sm-blue.sm-vertical ul a { 1502 padding: 9px 23px; 1503 } 1504} 1505 1506/* align tracking telephone number to vertical center of logo */ 1507@media screen and (min-width:768px) { 1508 div.call99-flex-vert-center { 1509 display: flex; 1510 flex-direction: column; 1511 justify-content: center; 1512 text-align: right; 1513 } 1514 div.headerLine1Style { 1515 display: flex; 1516 flex-direction: row; 1517 vertical-align: middle; 1518 justify-content: space-between; 1519 max-width: 980px; 1520 margin: auto; 1521 } 1522} 1523 1524/* ============================================================================= 1525 MENU â CSS-first SmartMenus replacement (from Pro v6.1). 1526 Keeps the .sm-blue visual language; adds :hover/:focus-within dropdowns 1527 (desktop), max-height drawer + .is-open accordion (mobile), hamburger 1528 morph-to-Ã, and scrim. Caret is a single down-pointing CSS triangle; 1529 nested/mobile variants are just CSS rotations of that triangle. 1530 ============================================================================= */ 1531 1532button.toggleMenu { 1533 display: none; /* â inline-flex on mobile */ 1534 align-items: center; 1535 gap: 10px; 1536 background: none; 1537 border: 0; 1538 margin: 0; 1539 padding: 8px 12px; 1540 min-height: 44px; /* WCAG 2.5.5 AAA tap target */ 1541 border-radius: 6px;
1542 cursor: pointer; 1543 text-align: left; 1544 font: inherit; 1545 font-weight: 500; 1546 letter-spacing: 0.02em; 1547 -webkit-tap-highlight-color: transparent; 1548 transition: background-color 160ms cubic-bezier(.4,0,.2,1), 1549 transform 120ms cubic-bezier(.4,0,.2,1); 1550} 1551button.toggleMenu:hover { background-color: rgba(255,255,255,0.08); } 1552button.toggleMenu:active { transform: scale(0.96); } 1553button.toggleMenu:focus-visible { 1554 outline: 2px solid currentColor; 1555 outline-offset: 2px; 1556} 1557 1558.toggleMenuIcon { 1559 position: relative; 1560 display: inline-block; 1561 width: 22px; 1562 height: 16px; 1563 flex-shrink: 0; 1564} 1565.toggleMenuIcon > span { 1566 position: absolute; 1567 left: 0; 1568 width: 100%; 1569 height: 2px; 1570 background: currentColor; 1571 border-radius: 1px; 1572 transition: transform 220ms cubic-bezier(.4,0,.2,1), 1573 opacity 120ms ease, 1574 top 220ms cubic-bezier(.4,0,.2,1); 1575} 1576.toggleMenuIcon > span:nth-child(1) { top: 2px; } 1577.toggleMenuIcon > span:nth-child(2) { top: 7px; } 1578.toggleMenuIcon > span:nth-child(3) { top: 12px; } 1579 1580/* Open state: rails morph into an à */ 1581button.toggleMenu[aria-expanded="true"] .toggleMenuIcon > span:nth-child(1) { 1582 top: 7px; transform: rotate(45deg); 1583} 1584button.toggleMenu[aria-expanded="true"] .toggleMenuIcon > span:nth-child(2) { 1585 opacity: 0; 1586} 1587button.toggleMenu[aria-expanded="true"] .toggleMenuIcon > span:nth-child(3) { 1588 top: 7px; transform: rotate(-45deg); 1589} 1590 1591/* Caret on .has-sub triggers (replaces SmartMenus' JS-injected sub-arrow). 1592 Base points down; rotated in nested/mobile contexts via transform. */ 1593#main-menu li.has-sub > a::after { 1594 content: ""; 1595 display: inline-block; 1596 width: 0; 1597 height: 0; 1598 margin-left: 8px; 1599 vertical-align: middle; 1600 border: 4px solid transparent; 1601 border-top-color: currentColor; 1602 opacity: 0.75; 1603 transition: transform 180ms ease; 1604} 1605 1606/* ââ DESKTOP (â¥768px): hover/focus-within dropdowns âââââââââââââââââââââââââ */ 1607@media screen and (min-width: 768px) { 1608 #main-menu > li, 1609 #main-menu ul li { position: relative; } 1610 1611 #main-menu li:hover > ul, 1612 #main-menu li:focus-within > ul { display: block; } 1613 1614 /* No-JS baseline: scroll only "flat" dropdowns (no nested fly-out). A panel 1615 that hosts a fly-out must stay overflow:visible here â otherwise 1616 overflow-y:auto promotes overflow-x to auto too, clipping the left:100% 1617 fly-out and trapping it scrolling inside the parent. Long flat menus (e.g. 1618 16-item Services) still scroll: #header is fixed at ~160px; the 220px 1619 offset leaves ~60px bottom margin so the last row clears the viewport. */ 1620 #main-menu ul:not(:has(> li.has-sub)) { 1621 max-height: calc(100vh - 220px); 1622 overflow-y: auto; 1623 overscroll-behavior: contain; 1624 scrollbar-gutter: stable; 1625 } 1626 /* JS present (html.menu-js): scroll fly-out-hosting panels as well â the nav 1627 controller re-anchors each open fly-out as position:fixed so it escapes 1628 this overflow instead of being clipped. Keeps long Learn-style menus 1629 scrollable without sacrificing the fly-out. */ 1630 html.menu-js #main-menu ul { 1631 max-height: calc(100vh - 220px); 1632 overflow-y: auto; 1633 overscroll-behavior: contain; 1634 scrollbar-gutter: stable; 1635 } 1636 #main-menu > li > ul { top: 100%; left: 0; } 1637 /* A fly-out opens flush against the parent's right edge; the inherited 1638 .sm-blue drop shadow would blur back across that seam as a gray band. 1639 The panel's 1px border already separates it, so drop the shadow here. */ 1640 #main-menu ul ul { top: 0; left: 100%; box-shadow: none; } 1641 1642 /* Top-level caret flips to â² when its dropdown is open */ 1643 #main-menu > li.has-sub:hover > a::after, 1644 #main-menu > li.has-sub:focus-within > a::after { 1645 transform: rotate(180deg); 1646 } 1647 /* Nested items: caret points â¶ (floated next to the label) */ 1648 #main-menu ul li.has-sub > a::after { 1649 float: right; 1650 margin: 6px 0 0; 1651 transform: rotate(-90deg); 1652 } 1653 1654 .menu-drawer-scrim { display: none; } 1655} 1656 1657/* ââ MOBILE (<768px): slide-down drawer + accordion submenus ââââââââââââââââ */ 1658@media screen and (max-width: 767px) { 1659 button.toggleMenu { display: inline-flex; } 1660 button.toggleMenu[aria-expanded="true"] { opacity: 0.85; } 1661 1662 /* Drawer panel. .menu.headerMenuStyle has to out-specify the mobile 1663 .menu{display:none} rule (line ~990). */ 1664 .menu.headerMenuStyle { 1665 display: block; 1666 max-height: 0; 1667 overflow: hidden; 1668 transition: max-height 320ms ease; 1669 } 1670 body[data-menu-drawer="open"] .menu.headerMenuStyle { 1671 max-height: 85vh; 1672 overflow-y: auto; 1673 } 1674 body[data-menu-drawer="open"] { overflow: hidden; } 1675 1676 .menu-drawer-scrim { 1677 position: fixed; 1678 inset: 0; 1679 background: rgba(0,0,0,0.4); 1680 z-index: 998; 1681 } 1682 1683 /* Accordion submenus */ 1684 #main-menu li.has-sub > ul { display: none; } 1685 #main-menu li.has-sub.is-open > ul { display: block; } 1686 1687 /* Caret points â¶ when closed, â¼ when open (rotated back to base) */ 1688 #main-menu li.has-sub > a::after { 1689 float: right; 1690 margin: 10px 4px 0 0; 1691 transform: rotate(-90deg); 1692 } 1693 #main-menu li.has-sub.is-open > a::after { 1694 transform: rotate(0deg); 1695 } 1696} 1697 1698 1699 </style> 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 <style> 1717 #header {
1718 color: #36923d; 1719 background-color: white; 1720 1721 } 1722 #header .phoneNumber { 1723 color: #36923d; 1724 text-decoration: none; 1725 1726 } 1727 .headerLine1Style a, .headerLine1Style a h2 { 1728 color: inherit; 1729 } 1730 .headerLine1Style * { 1731 font-weight: 550; 1732 } 1733 .headerLine2Style { 1734 background-color: #56a05c; 1735 } 1736 .sm-blue ul, .sm-blue ul a, .sm-blue a, .sm-blue a:hover, .sm-blue a:focus, .sm-blue a:active { 1737 color: white; 1738 background-color: #56a05c; 1739 } 1740 .sm-blue a:hover, .sm-blue a.highlighted { 1741 color: white; 1742 background-color: #36923d; 1743 } 1744 .sm-blue ul a:hover { 1745 color: white; 1746 background-color: #36923d; 1747 } 1748 @media screen and (min-width: 768px) { 1749 #main-menu > li.has-sub:hover > a, 1750 #main-menu > li.has-sub:focus-within > a { 1751 background-color: #36923d; 1752 color: white; 1753 } 1754 #main-menu ul ul { 1755 background-color: #56a05c; 1756 } 1757 } 1758 .toggleMenu { 1759 color: white 1760 } 1761 #header .smallScreenHeader .phoneNumber { 1762 color: white; 1763 text-decoration: none; 1764 } 1765 1766 a, .contentX a.phoneNumber, a.phoneNumber { 1767 color: #36923d; 1768 } 1769 a:hover { 1770 color: black; 1771 text-decoration: underline; 1772 } 1773 1774 .useboxright, .useboxright a, .useboxright li { 1775 color: white; 1776 background-color: #56a05c; 1777 } 1778 a.reviewBtn div {
1779 color: white; 1780 background-color: #36923d; 1781 1782 } 1783 .getPriceDiv { 1784 color: white; 1785 background-color: #56a05c; 1786 } 1787 .submit-field { 1788 color: white; 1789 background-color: #36923d; 1790 1791 } 1792 .getPriceFormDiv { 1793 background: #f6f7fe; 1794 color: #333; 1795 } 1796 .getPriceFormDiv .check-field label { 1797 color: #333; 1798 } 1799 .footerDivMn { 1800 color: white; 1801 background-color: #56a05c; 1802 } 1803 1804 1805 1806 </style> 1807 1808 1809 1810
1810<script type="application/ld+json"> 1811{"@context":"https://www.schema.org","@type":"LocalBusiness","name":"Certified Green Team","telephone":"+16315282509","url":"https://certified-green-team-li.com","image":"https://certified-green-team-li.com/userfiles/4660/cgt_logo_animated_1.gif","priceRange":"$$","address":{"@type":"PostalAddress","streetAddress":"123 Main St","addressLocality":"Westbury","addressRegion":"NY","postalCode":"11590","addressCountry":"United States"},"contactPoint":[{"@type":"ContactPoint","telephone":"+16315282509","contactType":"sales"}]} 1812</script>
1812
1812<script type="application/ld+json"> 1813{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"How often should I have my carpets professionally cleaned?","acceptedAnswer":{"@type":"Answer","text":"At Certified Green Team, we recommend professional carpet cleaning every 12 months for most homes. Homes with pets, children, allergy concerns, or high traffic should schedule cleaning every 6\u20139 months. Regular maintenance extends the life of your carpet and keeps your indoor air healthier."}},{"@type":"Question","name":"What carpet cleaning method do you use?","acceptedAnswer":{"@type":"Answer","text":"We use a powerful eco-friendly hot water extraction method (commonly known as steam cleaning). Our process removes deep-embedded dirt, allergens, bacteria, and residues using non-toxic, biodegradable cleaning solutions that are safe for your family and pets."}},{"@type":"Question","name":"How long does it take for carpets to dry after cleaning?","acceptedAnswer":{"@type":"Answer","text":"Most carpets dry within 4\u20138 hours. Our commercial-grade extraction equipment removes the majority of moisture during cleaning to ensure faster drying and minimal disruption to your home."}},{"@type":"Question","name":"Can professional carpet cleaning remove pet stains and odors?","acceptedA
1813nswer":{"@type":"Answer","text":"Yes. We specialize in advanced pet stain and odor treatment. Our enzyme-based solutions break down urine crystals at the source instead of masking odors. For severe contamination, we offer deep sub-surface treatment options."}},{"@type":"Question","name":"Is professional carpet cleaning safe for children and pets?","acceptedAnswer":{"@type":"Answer","text":"Absolutely. Certified Green Team uses green, non-toxic, eco-safe cleaning products that leave no harsh chemical residue behind. Your carpets are safe for children and pets once dry."}}]} 1814</script>
1814 <style> .cta-call-btn { 1815 background-color: #FFA500; 1816 color: #FFFFFF; 1817 } 1818 .cta-call-btn:hover { 1819 background-color: #FFB733; 1820 color: #FFFFFF; 1821 transform: translateY(-1px); 1822 text-decoration: none; 1823 } 1824 .cta-call-btn.cta-shadow-subtle { 1825 box-shadow: 0 4px 10px rgba(0,0,0,0.2); 1826 } 1827 .cta-call-btn.cta-shadow-subtle:hover { 1828 box-shadow: 0 8px 18px rgba(0,0,0,0.26); 1829 } 1830 .cta-call-btn.cta-shadow-strong { 1831 box-shadow: 0 8px 20px rgba(0,0,0,0.3); 1832 } 1833 .cta-call-btn.cta-shadow-strong:hover { 1834 box-shadow: 0 12px 26px rgba(0,0,0,0.34); 1835 } 1836 .cta-call-btn.cta-shadow-none:hover { 1837 box-shadow: 0 6px 16px rgba(0,0,0,0.18); 1838 } 1839</style> 1840 1841 <style>.headerLine1Style * { 1842 font-weight: 550 1843} 1844.specials-1card { border-radius: 30px; } 1845.specials-2card { border-radius: 30px; } 1846.specials-3card { border-radius: 30px; }</style> 1847 <link rel="stylesheet" href="/css/faq.css?v1.0" type="text/css"/> 1848
1848<script src="/js/faq.js?v1.0"></script>
1848 1849 </head> 1850 1851<body> 1852<!-- Header Starts Here --> 1853 1854<header class="w3-container pad0"> 1855 1856 <div id="header" class="w3-container pad0 headerStyle"> 1857 1858 <div class="headerLine1Style"> 1859 <a href="/" class="showLargeScreenHeader header_line1_company"><img src="/userfiles/4660/cgt_logo_animated_1.gif" alt="Certified Green Team" class="LogoDesktop" 1860 style="width:300px; height:129px; margin-top: 20px; margin-bottom: 10px; margin-left: 30px;"></a> 1861 <a href="/" class="smallScreenHeader w3-rest w3-center"><img src="/userfiles/4660/cgt_logo_animated_1.gif" alt="Certified Green Team" class="LogoMobile" 1862 style="width:240px; height:93px; margin: 10px auto 5px auto;"></a> 1863 <div class="call99-flex-vert-center"> 1864 <h4 class="showLargeScreenHeader header_line1_phone pad-sides-10"> 1865 <a class="phoneNumber primaryPhone" href="tel:+16315282509">(631) 528-2509</a> 1866 </h4> 1867 </div> 1868 </div> 1869 1870 <div class="w3-container pad0 w3-row headerLine2Style"> 1871 1872 <button type="button" class="toggleMenu headerMenuStyle" id="menuIcn" 1873 aria-label="Menu" aria-expanded="false" aria-controls="main-menu-drawer"> 1874 <span class="toggleMenuIcon" aria-hidden="true"> 1875 <span></span><span></span><span></span> 1876 </span> 1877 <span class="toggleMenuLabel">Menu</span> 1878 </button> 1879 <span class="smallScreenHeader smallScreenMenuPhone headerMenuStyle"> 1880 <p style="font-size: xx-small;position: relative;top: 13px;display: inline;right: -50%;background-color: #56a05c;color: white">Call Now</p> 1881 <a class="phoneNumber primaryPhone" href="tel:+16315282509">(631) 528-2509</a> 1882 </span> 1883 1884 <div class="menu headerMenuStyle w3-clear w3-center" id="main-menu-drawer"> 1885 1886 <nav aria-label="Primary"> 1887 <ul id="main-menu" class="sm sm-blue"> 1888 <li><a href="/">Home</a></li> 1889 <li class="has-sub"><a href="#">Services</a><ul><li><a href="/Carpet-Cleaning.htm">Carpet Cleaning</a></li><li><a href="/Upholstery-Cleaning.htm">Upholstery Cleaning</a></li><li><a href="/Mattress-Cleaning.htm">Mattress Cleaning</a></li><li><a href="/Sofa-Cleaning.htm">Sofa Cleaning</a></li><li><a href="/Chimney-Cleaning.htm">Chimney Cleaning</a></li><li><a href="/Area-Rug-Repair.htm">Area Rug Repair</a></li><li><a href="/Curtain-Cleaning.htm">Curtain Cleaning</a></li><li><a href="/Air-Duct-Cleaning.htm">Air Duct Cleaning</a></li><li><a href="/Dryer-Vent-Cleaning.htm">Dryer Vent Cleaning</a></li><li><a href="/Area-Rug-Cleaning.htm">Area Rug Cleaning</a></li><li><a href="/Oriental-Rug-Cleaning.htm">Oriental Rug Cleaning</a></li><li><a href="/Carpet-Stain-Removal.htm">Carpet Stain Removal</a></li><li><a href="/Steam-Cleaning.htm">Steam Cleaning</a></li><li><a href="/Mold-Removal.htm">Mold Removal</a></li><li><a href="/Gutter-Cleaning.htm">Gutter Cleaning</a></li><li><a href="/Pressure-Washing.htm">Pressure Washing</a></li><li><a href="/Water-Damage-Restoration.htm">Water Damage Restoration</a></li><li><a href="/Emergency-Water-Extraction.htm">Emergency Water Extraction</a></li></ul></li> 1890 <li><a href="/towns.htm">Service Area</a></li> 1891 <li><a href="/testimonials.htm">Reviews</a></li> 1892 <li><a href="/contact.htm">Contact Us</a></li> 1893 </ul> 1894 </nav> 1895 1896 </div> 1897 1898 </div> 1899 1900 </div> 1901 1902 <div class="menu-drawer-scrim" id="menu-drawer-scrim" hidden></div> 1903 1904</header> 1905 1906
1907<script> 1908(function() { 1909 var btn = document.getElementById('menuIcn'); 1910 var drawer = document.getElementById('main-menu-drawer'); 1911 var scrim = document.getElementById('menu-drawer-scrim'); 1912 if (!btn || !drawer || !scrim) return; 1913 1914 var body = document.body; 1915 var isMobile = function() { return window.innerWidth < 768; }; 1916 var isOpen = function() { return body.getAttribute('data-menu-drawer') === 'open'; }; 1917 1918 function setDrawer(open) { 1919 if (open) body.setAttribute('data-menu-drawer', 'open'); 1920 else body.removeAttribute('data-menu-drawer'); 1921 btn.setAttribute('aria-expanded', open ? 'true' : 'false'); 1922 scrim.hidden = !open; 1923 if (!open) { 1924 // collapse submenus so the drawer reopens clean 1925 drawer.querySelectorAll('.has-sub.is-open').forEach(function(li) { 1926 li.classList.remove('is-open'); 1927 }); 1928 } 1929 } 1930 1931 btn.addEventListener('click', function(e) { e.preventDefault(); setDrawer(!isOpen()); }); 1932 scrim.addEventListener('click', function() { setDrawer(false); }); 1933 1934 document.addEventListener('keydown', function(e) { 1935 if (e.key === 'Escape' && isOpen()) { setDrawer(false); btn.focus(); } 1936 }); 1937 1938 // Mobile-only: tap a has-sub trigger (href="#") â toggle accordion 1939 drawer.addEventListener('click', function(e) { 1940 var link = e.target.closest('a'); 1941 if (!link || !isMobile()) return; 1942 var parent = link.parentElement; 1943 if (!parent || !parent.classList.contains('has-sub')) return; 1944 var href = link.getAttribute('href'); 1945 if (href && href !== '#') return; 1946 e.preventDefault(); 1947 parent.classList.toggle('is-open'); 1948 }); 1949 1950 // Cross the breakpoint while open â close cleanly 1951 var resizeTimer; 1952 window.addEventListener('resize', function() { 1953 clearTimeout(resizeTimer); 1954 resizeTimer = setTimeout(function() { 1955 if (!isMobile() && isOpen()) setDrawer(false); 1956 clearAllFlyouts(); // drop stale fixed-position styles; next hover re-places 1957 }, 100); 1958 }); 1959 1960 // Desktop keyboard nav across top-level items 1961 var topItems = drawer.querySelectorAll('#main-menu > li > a'); 1962 topItems.forEach(function(a, idx) { 1963 a.addEventListener('keydown', function(e) { 1964 if (isMobile()) return; 1965 var n = topItems.length, target; 1966 if (e.key === 'ArrowRight') target = (idx + 1) % n; 1967 else if (e.key === 'ArrowLeft') target = (idx - 1 + n) % n; 1968 else if (e.key === 'Home') target = 0; 1969 else if (e.key === 'End') target = n - 1; 1970 else return; 1971 e.preventDefault(); 1972 topItems[target].focus(); 1973 }); 1974 }); 1975 1976 // ââ Desktop fly-out escape ââââââââââââââââââââââââââââââââââââââââââââââââ 1977 // With html.menu-js, fly-out-hosting panels scroll vertically (CSS), which 1978 // would clip a nested fly-out. Re-anchor each open fly-out as position:fixed 1979 // (escapes ancestor overflow) and keep it aligned to its trigger row. JS and 1980 // the scroll-enabling CSS are coupled via the menu-js flag so the no-JS 1981 // baseline never clips. 1982 function flyoutOf(li) { return li.querySelector(':scope > ul'); } 1983 1984 function placeFlyout(li) { 1985 var ul = flyoutOf(li); 1986 if (!ul) return; 1987 ul.style.position = 'fixed'; 1988 ul.style.left = '0px'; 1989 ul.style.top = '0px'; 1990 // Fixed positioning makes the viewport the containing block, so the panel 1991 // would shrink-to-fit to max-content and lay its inline-block items out as 1992 // a horizontal strip. Pin to min-content to keep it a single column. 1993 ul.style.width = 'min-content'; 1994 var row = li.getBoundingClientRect(); 1995 var w = ul.offsetWidth, h = ul.offsetHeight; 1996 // open to the right of the row; flip to the left if there's no room 1997 var left = row.right; 1998 if (left + w > window.innerWidth - 4) left = Math.max(4, row.left - w); 1999 // align tops, but clamp so a tall fly-out stays within the viewport 2000 var top = Math.min(row.top, Math.max(8, window.innerHeight - 8 - h)); 2001 ul.style.left = left + 'px'; 2002 ul.style.top = top + 'px'; 2003 } 2004 2005 function clearFlyout(li) { 2006 var ul = flyoutOf(li); 2007 if (!ul) return; 2008 ul.style.position = ul.style.left = ul.style.top = ul.style.width = ''; 2009 } 2010 2011 function clearAllFlyouts() { 2012 drawer.querySelectorAll('#main-menu ul li.has-sub').forEach(clearFlyout); 2013 } 2014 2015 drawer.querySelectorAll('#main-menu ul li.has-sub').forEach(function(li) { 2016 li.addEventListener('mouseenter', function() { if (!isMobile()) placeFlyout(li); }); 2017 li.addEventListener('mouseleave', function() { if (!isMobile()) clearFlyout(li); }); 2018 li.addEventListener('focusin', function() { if (!isMobile()) placeFlyout(li); }); 2019 li.addEventListener('focusout', function(e) { 2020 if (!isMobile() && !li.contains(e.relatedTarget)) clearFlyout(li); 2021 }); 2022 }); 2023 2024 // Keep an open fly-out aligned as its scroll-parent (or the window) scrolls. 2025 // Capture phase catches non-bubbling scroll on the inner panels too. 2026 window.addEventListener('scroll', function() { 2027 if (isMobile()) return; 2028 drawer.querySelectorAll('#main-menu ul li.has-sub').forEach(function(li) { 2029 if (li.matches(':hover') || li.contains(document.activeElement)) placeFlyout(li); 2030 }); 2031 }, true); 2032 2033 document.documentElement.classList.add('menu-js'); 2034})(); 2035</script>
2035 2036 2037 2038<!-- Header Ends here --> 2039 2040 2041<!-- page content starts here --> 2042 2043<main class="w3-container pad0 w3-center"> 2044 2045 <div class="w3-container pad0 showLargeScreenHeader mainTopSpacer"></div> 2046 2047 <div class="w3-container pad0 smallScreenHeader"> 2048 <div class="w3-container pad0 mainTopSpacer"></div> 2049 </div> 2050 2051
2051<script> 2052 function setMainTopSpacer() { 2053 var headerHeight = document.getElementById('header').offsetHeight; 2054 var elements = document.getElementsByClassName('mainTopSpacer'); 2055 for (var i = 0, len = elements.length; i < len; i++) { 2056 elements[i].style.height = headerHeight+"px"; 2057 } 2058 document.documentElement.style.setProperty('--header-h', headerHeight + 'px'); 2059 } 2060 setMainTopSpacer(); 2061 2062 (function() { 2063 'use strict'; 2064 2065 var header = document.getElementById('header'); 2066 var SHRINK_THRESHOLD = 50; 2067 var isShrunk = false; 2068 var ticking = false; 2069 var MOBILE_SCALE = 0.5; 2070 var DESKTOP_SCALE = 0.7; 2071 2072 function getVisibleLogo() { 2073 if (window.innerWidth >= 768) { 2074 return header.querySelector('.showLargeScreenHeader img'); 2075 } 2076 return header.querySelector('.smallScreenHeader img'); 2077 } 2078 2079 var isDesktop = window.innerWidth >= 768; 2080 var scale = isDesktop ? DESKTOP_SCALE : MOBILE_SCALE; 2081 var logoImg = getVisibleLogo(); 2082 if (!logoImg) return; 2083 2084 var headerLine1 = header.querySelector('.headerLine1Style'); 2085 // Desktop: get logo wrapper and phone container for independent height control 2086 var logoWrapper = isDesktop ? (logoImg.closest('a') || logoImg.parentElement) : null; 2087 var phoneContainer = isDesktop ? headerLine1.querySelector('.call99-flex-vert-center') : null; 2088 2089 var expandedHeight = header.offsetHeight; 2090 var expandedLogoWrapperH = logoWrapper ? logoWrapper.offsetHeight : 0; 2091 var expandedPhoneH = phoneContainer ? phoneContainer.offsetHeight : 0; 2092 // Mobile: margin collapse on headerLine1 2093 var expandedLine1H = headerLine1 ? headerLine1.offsetHeight : 0; 2094 var mobileShrinkMargin = Math.round(expandedLine1H * (1 - MOBILE_SCALE)); 2095 var shrunkHeight; 2096 2097 // Desktop shrunk heights: scale both containers so flex row actually shrinks 2098 var shrunkLogoWrapperH = Math.round(expandedLogoWrapperH * DESKTOP_SCALE); 2099 var shrunkPhoneH = Math.round(expandedPhoneH * DESKTOP_SCALE); 2100 2101 function applyDesktopShrink() { 2102 logoImg.style.transform = 'scale(' + DESKTOP_SCALE + ')'; 2103 logoWrapper.style.height = shrunkLogoWrapperH + 'px'; 2104 logoWrapper.style.overflow = 'hidden'; 2105 if (phoneContainer) { 2106 phoneContainer.style.height = shrunkPhoneH + 'px'; 2107 phoneContainer.style.overflow = 'hidden'; 2108 } 2109 } 2110 2111 function clearDesktopShrink() { 2112 logoImg.style.transform = ''; 2113 logoWrapper.style.height = expandedLogoWrapperH + 'px'; 2114 logoWrapper.style.overflow = ''; 2115 if (phoneContainer) { 2116 phoneContainer.style.height = expandedPhoneH + 'px'; 2117 phoneContainer.style.overflow = ''; 2118 } 2119 } 2120 2121 function applyMobileShrink() { 2122 logoImg.style.transform = 'scale(' + MOBILE_SCALE + ')'; 2123 headerLine1.style.marginBottom = '-' + mobileShrinkMargin + 'px'; 2124 } 2125 2126 function clearMobileShrink() { 2127 logoImg.style.transform = ''; 2128 headerLine1.style.marginBottom = ''; 2129 } 2130 2131 // Measure shrunk height without transitions 2132 function disableTransitions() { 2133 header.style.transition = 'none'; 2134 if (headerLine1) headerLine1.style.transition = 'none'; 2135 if (logoWrapper) logoWrapper.style.transition = 'none'; 2136 if (phoneContainer) phoneContainer.style.transition = 'none'; 2137 } 2138 function enableTransitions() { 2139 header.style.transition = ''; 2140 if (headerLine1) headerLine1.style.transition = ''; 2141 if (logoWrapper) logoWrapper.style.transition = ''; 2142 if (phoneContainer) phoneContainer.style.transition = ''; 2143 } 2144 2145 disableTransitions(); 2146 header.classList.add('header-shrunk'); 2147 if (isDesktop) { applyDesktopShrink(); } else { applyMobileShrink(); } 2148 shrunkHeight = header.offsetHeight; 2149 if (isDesktop) { clearDesktopShrink(); } else { clearMobileShrink(); } 2150 header.classList.remove('header-shrunk'); 2151 void header.offsetHeight; 2152 // Set explicit heights so CSS can transition between values (auto â px doesn't animate) 2153 if (isDesktop) { 2154 logoWrapper.style.height = expandedLogoWrapperH + 'px'; 2155 if (phoneContainer) phoneContainer.style.height = expandedPhoneH + 'px'; 2156 } 2157 enableTransitions(); 2158 2159 function setSpacerHeight(height) { 2160 var elements = document.getElementsByClassName('mainTopSpacer'); 2161 for (var i = 0, len = elements.length; i < len; i++) { 2162 elements[i].style.height = height + 'px'; 2163 } 2164 document.documentElement.style.setProperty('--header-h', height + 'px'); 2165 } 2166 2167 function updateHeader() { 2168 var scrollY = window.scrollY || window.pageYOffset; 2169 var shouldShrink = scrollY > SHRINK_THRESHOLD; 2170 2171 if (shouldShrink !== isShrunk) { 2172 isShrunk = shouldShrink; 2173 if (shouldShrink) { 2174 header.classList.add('header-shrunk'); 2175 document.body.classList.add('header-shrunk'); 2176 if (isDesktop) { applyDesktopShrink(); } else { applyMobileShrink(); } 2177 setSpacerHeight(shrunkHeight); 2178 } else { 2179 header.classList.remove('header-shrunk'); 2180 document.body.classList.remove('header-shrunk'); 2181 if (isDesktop) { clearDesktopShrink(); } else { clearMobileShrink(); } 2182 setSpacerHeight(expandedHeight); 2183 } 2184 } 2185 ticking = false;
2186 } 2187 2188 window.addEventListener('scroll', function() { 2189 if (!ticking) { 2190 requestAnimationFrame(updateHeader); 2191 ticking = true; 2192 } 2193 }, { passive: true }); 2194 2195 window.addEventListener('resize', function() { 2196 var wasDesktop = isDesktop; 2197 isDesktop = window.innerWidth >= 768; 2198 logoImg = getVisibleLogo(); 2199 if (!logoImg) return; 2200 2201 disableTransitions(); 2202 2203 // Clear previous state fully (use '' not expanded px so auto-height is measured) 2204 header.classList.remove('header-shrunk'); 2205 document.body.classList.remove('header-shrunk'); 2206 if (wasDesktop && logoWrapper) { 2207 logoImg.style.transform = ''; 2208 logoWrapper.style.height = ''; 2209 logoWrapper.style.overflow = ''; 2210 if (phoneContainer) { phoneContainer.style.height = ''; phoneContainer.style.overflow = ''; } 2211 } else { clearMobileShrink(); } 2212 headerLine1.style.marginBottom = ''; 2213 2214 // Re-acquire elements if viewport crossed breakpoint 2215 logoWrapper = isDesktop ? (logoImg.closest('a') || logoImg.parentElement) : null; 2216 phoneContainer = isDesktop ? headerLine1.querySelector('.call99-flex-vert-center') : null; 2217 2218 // Re-measure expanded (heights are auto now) 2219 expandedHeight = header.offsetHeight; 2220 expandedLogoWrapperH = logoWrapper ? logoWrapper.offsetHeight : 0; 2221 expandedPhoneH = phoneContainer ? phoneContainer.offsetHeight : 0; 2222 expandedLine1H = headerLine1 ? headerLine1.offsetHeight : 0; 2223 mobileShrinkMargin = Math.round(expandedLine1H * (1 - MOBILE_SCALE)); 2224 shrunkLogoWrapperH = Math.round(expandedLogoWrapperH * DESKTOP_SCALE); 2225 shrunkPhoneH = Math.round(expandedPhoneH * DESKTOP_SCALE); 2226 2227 // Measure shrunk 2228 header.classList.add('header-shrunk'); 2229 if (isDesktop) { applyDesktopShrink(); } else { applyMobileShrink(); } 2230 shrunkHeight = header.offsetHeight; 2231 2232 if (!isShrunk) { 2233 header.classList.remove('header-shrunk'); 2234 if (isDesktop) { clearDesktopShrink(); } else { clearMobileShrink(); } 2235 } else { 2236 document.body.classList.add('header-shrunk'); 2237 } 2238 void header.offsetHeight; 2239 // Set explicit heights for smooth transitions 2240 if (isDesktop && !isShrunk) { 2241 logoWrapper.style.height = expandedLogoWrapperH + 'px'; 2242 if (phoneContainer) phoneContainer.style.height = expandedPhoneH + 'px'; 2243 } 2244 enableTransitions(); 2245 setSpacerHeight(isShrunk ? shrunkHeight : expandedHeight); 2246 }); 2247 })(); 2248 </script>
2248 2249 2250 2251 <div id="content" class="w3-container pad0 w3-clear servicePage"> 2252 2253 2254 <div class="w3-container w3-content contentX"> 2255 <div style="max-width:580px; margin:0 auto; padding:14px 12px 10px; text-align:center;"> 2256 2257 <p style="font-size:13px; font-weight:700; letter-spacing:1px; text-transform:uppercase; color:#339933; margin:0 0 10px 0;"></p> 2258 2259 <h1 style="font-size:clamp(26px,6.5vw,38px); font-weight:900; line-height:1.2; color:#1a1a1a; margin:0 0 14px 0;">Professional Carpet Cleaning</h1> 2260 2261 <a href="tel:tel:6315282509" style="display:block; background:#339933; color:#fff; font-size:22px; font-weight:900; padding:17px 12px; border-radius:6px; text-decoration:none; margin:0 0 8px 0; line-height:1.25;">(631) 528-2509<br><span style="font-size:13px; font-weight:400; opacity:0.9;">Call Now - Real person picks up</span></a> 2262 2263 <p style="font-size:13px; color:#666; margin:0 0 20px 0;">Same-day and next-day appointments available - call now, spots go fast</p> 2264 2265 <p style="font-size:16px; color:#444; line-height:1.55; margin:0 0 16px 0;">Carpets, rugs, and upholstery cleaned by <strong>Certified Green Team</strong> - a local team with <strong>10+ years</strong> serving homes and businesses in the area.</p> 2266
2267 <div style="text-align:left; border-top:1px solid #e0e0e0; padding-top:14px;"> 2268 <div style="display:flex; align-items:flex-start; gap:10px; padding:9px 0; border-bottom:1px solid #f0f0f0;"> 2269 <span style="color:#339933; font-size:18px; font-weight:900; flex-shrink:0;">✓</span> 2270 <span style="font-size:14px; color:#333; line-height:1.4;">Carpets, area rugs, and upholstery - all welcome</span> 2271 </div> 2272 <div style="display:flex; align-items:flex-start; gap:10px; padding:9px 0; border-bottom:1px solid #f0f0f0;"> 2273 <span style="color:#339933; font-size:18px; font-weight:900; flex-shrink:0;">✓</span> 2274 <span style="font-size:14px; color:#333; line-height:1.4;">Residential homes and commercial spaces</span> 2275 </div> 2276 <div style="display:flex; align-items:flex-start; gap:10px; padding:9px 0;"> 2277 <span style="color:#339933; font-size:18px; font-weight:900; flex-shrink:0;">✓</span> 2278 <span style="font-size:14px; color:#333; line-height:1.4;">10+ years serving local homes - one call handles it all</span> 2279 </div> 2280 </div> 2281 2282</div> 2283<p style="text-align:center"><img alt="Carpet Cleaning by Certified Green Team" height="470" src="/images/carpet-cleaning/girl%20and%20dog%20on%20clean%20carpet%20982x513.jpg" style="width: 900px; height: 470px;" width="900" /></p> 2284 2285 2286<p style="text-align: center;">Are you looking for a dependable company to clean your carpets? You just found one! Certified Green Team has provided reliable carpet cleaning services for homes and businesses throughout the area for over 10 years, and we'd love to add you to our list of satisfied customers. Call today, and we'll be happy to schedule an appointment to assess your cleaning needs. Whether you have your carpets cleaned quarterly, or haven't had them cleaned since you moved in, Certified Green Team can help!</p> 2287 2288<div data-special-id="3041"> 2289<div class="w3-row-padding"> 2290<div class="w3-third"> 2291<div class="w3-card w3-margin w3-padding-16 w3-padding specials-3card" style="background-color:#36923d"> 2292<h2 style="text-align: center;"><strong><span style="color:#ffffff;">$69</span></strong></h2> 2293 2294<p style="text-align: center;"><span style="color:#ffffff;"><strong>2 Rooms of Carpet Cleaning</strong></span></p> 2295 2296<p style="text-align: center;"><span style="color:#ffffff;"><span style="font-size:10px;"><em>expires 09/30/2026</em></span></span></p> 2297</div> 2298</div> 2299 2300<div class="w3-third"> 2301<div class="w3-card w3-margin w3-padding-16 w3-padding specials-3card" style="background-color:#36923d"> 2302<h2 style="text-align: center;"><strong><span style="color:#ffffff;">$79</span></strong></h2> 2303 2304<p style="text-align: center;"><span style="color:#ffffff;"><strong>3 Rooms of Carpet Cleaning</strong></span></p> 2305 2306<p style="text-align: center;"><span style="color:#ffffff;"><span style="font-size:10px;"><em>expires 09/30/2026</em></span></span></p> 2307</div> 2308</div> 2309 2310<div class="w3-third"> 2311<div class="w3-card w3-margin w3-padding-16 w3-padding specials-3card" style="background-color:#36923d"> 2312<h2 style="text-align: center;"><strong><span style="color:#ffffff;">$99</span></strong></h2> 2313 2314<p style="text-align: center;"><span style="color:#ffffff;"><strong>4 Rooms of Carpet Cleaning</strong></span></p> 2315 2316<p style="text-align: center;"><span style="color:#ffffff;"><span style="font-size:10px;"><em>expires 09/30/2026</em></span></span></p> 2317</div> 2318</div> 2319</div> 2320</div> 2321 2322<hr /> 2323<h3 style="text-align: center;"><strong>Call for a FREE Quote</strong></h3> 2324 2325<p style="text-align: center;"><span style="font-size:36px;"><strong><a class="phoneNumber primaryPhone" href="tel:+16315282509">(631) 528-2509</a></strong></span></p> 2326 2327<hr /> 2328<p> </p> 2329 2330<div class="w3-row-padding"> 2331<div class="w3-card w3-padding-16 w3-padding specials-1card" style="max-width:800px;margin:0 auto; background: #fafaff"> 2332<div style="display: flex; justify-content: space-between; align-items: center;"> 2333<div style="flex-grow: 1; margin-left: 20px; margin-right: 20px"> 2334<p style="font-weight: bold; font-size: 18px">âAmazing Experience!â</p> 2335 2336<p><span style="color:#f1c40f">â â â â â </span> - "I had an amazing experience with Certified Green Team. Quality, Professional, and great results. definitely recommend!"</p> 2337 2338<div style="display: inline-flex; float: left"><img class="noBleed" alt="Author's Face" height="53" src="/images/faces/14_53x53.png" style="width: 53px !important; height: 53px; border-radius: 50%; margin-right: 10px;" width="53" /> 2339<p data-no-check="" style="font-weight: bold; margin-bottom: 0">Davizinho</p> 2340</div> 2341</div> 2342</div> 2343</div> 2344</div> 2345 2346<p> </p> 2347 2348<h3>Regular Carpet Cleaning Improves Air Quality</h3> 2349 2350<p>Did you know your carpet is a big air filter? It is. Carpets trap airborne particles and hold them there making the indoor air cleaner. However, a filter can only hold so much before it stops working. In fact, walking across a dirty carpet actually releases some of the trapped particles resulting in airborne particles. Yuck! That is
2350why it is important to vacuum carpets regularly and ideally perform a professional carpet extraction once every 6 months.</p> 2351 2352<h3> </h3> 2353 2354<h3>Carpet Cleaning Extends The Life of Your Flooring Investment</h3> 2355 2356<p>Would you rub sandpaper on your carpet? Of course not. However, once sand and dirt are in a carpet, simply walking on the carpet damages the fibers just like sandpaper would. The result is frayed fibers and a prematurely worn carpet. Protect your investment through frequent vacuuming and semi-annual carpet steam cleanings.</p> 2357 2358<h3> </h3> 2359 2360<h3>Call the Carpet Cleaning Professionals</h3> 2361 2362<p>Yes, you can run to your local DIY center and rent a steam cleaner, then buy some basic carpet cleaning solutions and do the job yourself. However, those portable rentals just don't have the same power to fully agitate your carpets and extract excess water. The result: super wet carpets that stay damp for days and possibly begin to smell. And worse, they may not be much cleaner.</p> 2363 2364<p>Doing it yourself may save you some money, but it won't get the job done, and you may end up having to call a professional after the fact anyway. When you call <a class="phoneNumber primaryPhone" href="tel:+16315282509">(631) 528-2509</a> for carpet cleaning, you'll be dealing with a cleaning professional who will strive to complete each job properly, on time, and within your budget.</p> 2365 2366<p> </p> 2367 2368<div class="faq-container"> 2369 <h2 class="faq-title"><strong>Carpet Cleaning FAQ</strong></h2> 2370 2371 <ul class="faq-list"> 2372 <li class="faq-item"> 2373 <div class="faq-question" onclick="toggleAnswer(this)"><span class="faq-triangle">â¼</span> <span>How often should I have my carpets professionally cleaned?</span></div> 2374 2375 <div class="faq-answer"><span style="color: rgb(0, 0, 0); font-family: "Times New Roman"; font-size: 19px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.2px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">At Certified Green Team, we recommend professional carpet cleaning every 12 months for most homes. Homes with pets, children, allergy concerns, or high traffic should schedule cleaning every 6–9 months. Regular maintenance extends the life of your carpet and keeps your indoor air healthier.</span></div> 2376 </li> 2377 <li class="faq-item"> 2378 <div class="faq-question" onclick="toggleAnswer(this)"><span class="faq-triangle">â¼</span> <span>What carpet cleaning method do you use?</span></div> 2379 2380 <div class="faq-answer"><span style="color: rgb(0, 0, 0); font-family: "Times New Roman"; font-size: 19px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.2px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">We use a powerful eco-friendly hot water extraction method (commonly known as steam cleaning). Our process removes deep-embedded dirt, allergens, bacteria, and residues using non-toxic, biodegradable cleaning solutions that are safe for your family and pets.</span></div> 2381 </li> 2382 <li class="faq-item"> 2383 <div class="faq-question" onclick="toggleAnswer(this)"><span class="faq-triangle">â¼</span> <span>How long does it take for carpets to dry after cleaning?</span></div> 2384 2385 <div class="faq-answer"><span style="color: rgb(0, 0, 0); font-family: "Times New Roman"; font-size: 19px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.2px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">Most carpets dry within 4–8 hours. Our commercial-grade extraction equipment removes the majority of moisture during cleaning to ensure faster drying and minimal disruption to your home.</span></div> 2386 </li> 2387 <li class="faq-item"> 2388 <div class="faq-question" onclick="toggleAnswer(this)"><span class="faq-triangle">â¼</span> <span>Can professional carpet cleaning remove pet stains and odors?</span></div> 2389 2390 <div class="faq-answer"><span style="color: rgb(0, 0, 0); font-family: "Times New Roman"; font-size: 19px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.2px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">Yes. We specialize in advanced pet stain and odor treatment. Our enzyme-based solutions break down urine crystals at the source instead of masking odors. For severe contamination, we offer deep sub-surface treatment options.
2390</span></div> 2391 </li> 2392 <li class="faq-item"> 2393 <div class="faq-question" onclick="toggleAnswer(this)"><span class="faq-triangle">â¼</span> <span>Is professional carpet cleaning safe for children and pets?</span></div> 2394 2395 <div class="faq-answer"><span style="color: rgb(0, 0, 0); font-family: "Times New Roman"; font-size: 19px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.2px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">Absolutely. Certified Green Team uses green, non-toxic, eco-safe cleaning products that leave no harsh chemical residue behind. Your carpets are safe for children and pets once dry.</span></div> 2396 </li> 2397 </ul> 2398</div> 2399 <div id="cta1service" class="CallToAction"> 2400 <hr> 2401 <h3>Call for Fast FREE Quote</h3> 2402 <p><a class="phoneNumber primaryPhone" href="tel:+16315282509">(631) 528-2509</a></p> 2403 <hr> 2404 </div> 2405 2406 </div> 2407 2408 <div class="w3-container w3-content contentX"> 2409 2410 </div> 2411 2412
2412<script type="application/ld+json"> 2413 { 2414 "@context": "http://schema.org/", 2415 "@type": "Service", 2416 "serviceType": "Carpet Cleaning", 2417 "provider": { 2418 "@type": "LocalBusiness", 2419 "name": "Certified Green Team", 2420 "image": "https://certified-green-team-li.com/images/layout01/favicon.ico", 2421 "priceRange": "$$", 2422 "address": { 2423 "@type": "PostalAddress", 2424 "streetAddress": "123 Main St", 2425 "addressLocality": "Westbury", 2426 "addressRegion": "NY", 2427 "postalCode": "11590", 2428 "addressCountry": "United States" 2429 }, 2430 "telephone": "(631) 528-2509" 2431 } 2432 } 2433 </script>
2433 2434 2435 2436 2437 </div> 2438 2439 <div id="get_a_price" class="w3-container pad0 padGetPrice"> 2440 <div id="right_block" class="w3-container w3-content"> 2441 <div class="getPriceDiv"> 2442 <span id="getPriceHeader">Get a Price</span> 2443 <div class="getPriceFormDiv"> 2444 <form id="demo-form" name="contactForm" action="/webservice/processForm.php" method="post"> 2445 <input type="hidden" name="domainId" id="domainId" value="6909"/> 2446 <input type="hidden" id="hdnThankYouUrl" value=""/> 2447 <ul> 2448 <li><input name="senderName" id="senderName" type="text" class="text-field" placeholder="Name" required="required" maxlength="40"/></li> 2449<li><input name="senderEmail" id="senderEmail" type="email" class="text-field" placeholder="Email" required="required"/></li> 2450<li><input name="senderPhone" id="senderPhone" class="text-field validatePhone" placeholder="Phone Number" required="required" maxlength="20"/></li> 2451<li><textarea name="message" id="message" class="text-field" rows="5" cols="5" placeholder="Enter Your Message" required="required"></textarea></li> <li> 2452 <div class="check-field" style="width: 92%; box-sizing: border-box;"> 2453 <input type="checkbox" name="optInService" id="optInService" value="1" tabindex="9" accesskey="i" title="Check to opt in" /> 2454 <label for="optInService">Text Me!</label> 2455 <div style="font-size: 12px; margin-top: 2px; line-height: 1.4;">I agree to receive service-related text messages from Certified Green Team (appointment reminders, service updates, missed call follow-ups).</div> 2456 <input type="hidden" name="optInServiceText" value="I agree to receive service-related text messages from Certified Green Team (appointment reminders, service updates, missed call follow-ups)." /> 2457 </div> 2458 </li> 2459 <li> 2460 <div class="check-field" style="width: 92%; box-sizing: border-box;"> 2461 <input type="checkbox" name="optInMarketing" id="optInMarketing" value="1" tabindex="9" title="Check to opt in to marketing messages" /> 2462 <label for="optInMarketing">Opt-In</label> 2463 <div style="font-size: 12px; margin-top: 2px; line-height: 1.4;">I agree to receive promotional offers and marketing text messages from Certified Green Team.</div> 2464 </div> 2465 </li> 2466 <li> 2467 <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 & Conditions</a>.</div> 2468 </li> 2469 <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> 2470 <li><input type="text" name="senderZip" id="senderZip" required="required" style="display:none" placeholder="Enter your zip code" maxlength="10" value="0" /></li> 2471 2472 </ul> 2473 </form>
2474 </div> 2475 </div> 2476 2477 <div class="greyblocks greyblocks-box"> 2478 <h3>Credit Cards Accepted</h3> 2479 <div class="greyblock-col-1"> 2480 <img class="CreditCard" alt="Credit Cards Accepted:" src="/themes/responsive-1/img/visa_mc_amex_discover301x69.png" width="301" height="69" /> 2481 </div> 2482 </div> 2483 2484 2485 </div> 2486 </div> 2487 2488 2489 <div class="w3-container w3-content cities-panel"> 2490 <h3>Cities Served</h3> 2491 <ul class="w3-container w3-row"> 2492 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Albertson_NY.htm">Albertson, NY</a></li> 2493 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Alden-Manor_NY.htm">Alden Manor, NY</a></li> 2494 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Allenwood_NY.htm">Allenwood, NY</a></li> 2495 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Amity-Harbor_NY.htm">Amity Harbor, NY</a></li> 2496 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Amityville_NY.htm">Amityville, NY</a></li> 2497 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Argo-Village_NY.htm">Argo Village, NY</a></li> 2498 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Asharoken_NY.htm">Asharoken, NY</a></li> 2499 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Atlantic-Beach_NY.htm">Atlantic Beach, NY</a></li> 2500 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Babylon_NY.htm">Babylon, NY</a></li> 2501 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Baldwin_NY.htm">Baldwin, NY</a></li> 2502 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Baldwin-Harbor_NY.htm">Baldwin Harbor, NY</a></li> 2503 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Bar-Harbor_NY.htm">Bar Harbor, NY</a></li> 2504 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Barnum-Island_NY.htm">Barnum Island, NY</a></li> 2505 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Baxter-Estates_NY.htm">Baxter Estates, NY</a></li> 2506 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Bayville_NY.htm">Bayville, NY</a></li> 2507 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Bellerose-Terrace_NY.htm">Bellerose Terrace, NY</a></li> 2508 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Bellerose-Village_NY.htm">Bellerose Village, NY</a></li> 2509 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Bellmore_NY.htm">Bellmore, NY</a></li> 2510 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Bethpage_NY.htm">Bethpage, NY</a></li> 2511 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Briar-Park_NY.htm">Briar Park, NY</a></li> 2512 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Brookville_NY.htm">Brookville, NY</a></li> 2513 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Captree-Island_NY.htm">Captree Island, NY</a></li> 2514 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Carle-Place_NY.htm">Carle Place, NY</a></li> 2515 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Cedarhurst_NY.htm">Cedarhurst, NY</a></li> 2516 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Centerport_NY.htm">Centerport, NY</a></li> 2517 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Centre-Island_NY.htm">Centre Island, NY</a></li> 2518 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Cold-Spring-Harbor_NY.htm">Cold Spring Harbor, NY</a></li> 2519 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Copiague_NY.htm">Copiague, NY</a></li> 2520 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Cove-Neck_NY.htm">Cove Neck, NY</a></li> 2521 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Crab-Meadow_NY.htm">Crab Meadow, NY</a></li> 2522 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Deer-Park_NY.htm">Deer Park, NY</a></li> 2523 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Dix-Hills_NY.htm">Dix Hills, NY</a></li> 2524 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_East-Atlantic-Beach_NY.htm">East Atlantic Beach, NY</a></li> 2525 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_East-Farmingdale_NY.htm">East Farmingdale, NY</a></li> 2526 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_East-Hills_NY.htm">East Hills, NY</a></li> 2527 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_East-Massapequa_NY.htm">East Massapequa, NY</a></li> 2528 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_East-Meadow_NY.htm">East Meadow, NY</a></li> 2529 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_East-Northport_NY.htm">East Northport, NY</a></li> 2530 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_East-Norwich_NY.htm">East Norwich, NY</a></li> 2531 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_East-Rockaway_NY.htm">East Rockaway, NY</a></li> 2532 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_East-Williston_NY.htm">East Williston, NY</a></li> 2533 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Eatons-Neck_NY.htm">Eatons Neck, NY</a></li> 2534 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Elmont_NY.htm">Elmont, NY</a></li> 2535 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Elwood_NY.htm">Elwood, NY</a></li> 2536 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Farmingdale_NY.htm">Farmingdale, NY</a></li> 2537 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Floral-Park_NY.htm">Floral Park, NY</a></li> 2538 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Fort-Salonga_NY.htm">Fort Salonga, NY</a></li> 2539 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Franklin-Square_NY.htm">Franklin Square, NY</a></li> 2540 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Freeport_NY.htm">Freeport, NY</a></li> 2541 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Garden-City_NY.htm">Garden City, NY</a></li> 2542 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Garden-City-Park_NY.htm">Garden City Park, NY</a></li> 2543 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Garden-City-South_NY.htm">Garden City South, NY</a></li> 2544 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Gilgo-Beach_NY.htm">Gilgo Beach, NY</a></li> 2545 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Glen-Cove_NY.htm">Glen Cove, NY</a></li> 2546 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Glen-Head_NY.htm">Glen Head, NY</a></li> 2547 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Glenwood-Landing_NY.htm">Glenwood Landing, NY</a></li> 2548 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Great-Neck_NY.htm">Great Neck, NY</a></li> 2549 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Great-Neck-Estates_NY.htm">Great Neck Estates, NY</a></li> 2550 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Greenlawn_NY.htm">Greenlawn, NY</a></li> 2551 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Greenvale_NY.htm">Greenvale, NY</a></li> 2552 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Halesite_NY.htm">Halesite, NY</a></li> 2553 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Harbor-Acres_NY.htm">Harbor Acres, NY</a></li> 2554 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Harbor-Hills_NY.htm">Harbor Hills, NY</a></li> 2555 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Harbor-Island_NY.htm">Harbor Island, NY</a></li> 2556 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Harbor-Isle_NY.htm">Harbor Isle, NY</a></li> 2557 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Hempstead_NY.htm">Hempstead, NY</a></li> 2558 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Herricks_NY.htm">Herricks, NY</a></li> 2559 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Hewlett_NY.htm">Hewlett, NY</a></li> 2560 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Hewlett-Bay_NY.htm">Hewlett Bay, NY</a></li> 2561 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Hewlett-Bay-Park_NY.htm">Hewlett Bay Park, NY</a></li> 2562 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Hewlett-Harbor_NY.htm">Hewlett Harbor, NY</a></li> 2563 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Hewlett-Neck_NY.htm">Hewlett Neck, NY</a></li> 2564 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Hicksville_NY.htm">Hicksville, NY</a></li> 2565 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Hillside-Manor_NY.htm">Hillside Manor, NY</a></li> 2566 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Hunt_NY.htm">Hunt, NY</a></li> 2567 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Huntington_NY.htm">Huntington, NY</a></li> 2568 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Huntington-Bay_NY.htm">Huntington Bay, NY</a></li> 2569 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Huntington-Station_NY.htm">Huntington Station, NY</a></li> 2570 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Inwood_NY.htm">Inwood, NY</a></li> 2571 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Island-Park_NY.htm">Island Park, NY</a></li> 2572 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Island-Trees_NY.htm">Island Trees, NY</a></li> 2573 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Jericho_NY.htm">Jericho, NY</a></li> 2574 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Kings-Point_NY.htm">Kings Point, NY</a></li> 2575 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Knollwood-Beach_NY.htm">Knollwood Beach, NY</a></li> 2576 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lake-Gardens_NY.htm">Lake Gardens, NY</a></li> 2577 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lake-Success_NY.htm">Lake Success, NY</a></li> 2578 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lakeview_NY.htm">Lakeview, NY</a></li> 2579 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lakeville-Estates_NY.htm">Lakeville Estates, NY</a></li> 2580 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lattingtown_NY.htm">Lattingtown, NY</a></li> 2581 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Laurel-Hollow_NY.htm">Laurel Hollow, NY</a></li> 2582 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lawrence_NY.htm">Lawrence, NY</a></li> 2583 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Levittown_NY.htm">Levittown, NY</a></li> 2584 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lido-Beach_NY.htm">Lido Beach, NY</a></li> 2585 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lindenhurst_NY.htm">Lindenhurst, NY</a></li> 2586 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lloyd-Harbor_NY.htm">Lloyd Harbor, NY</a></li> 2587 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lloyd-Neck_NY.htm">Lloyd Neck, NY</a></li> 2588 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Locust-Valley_NY.htm">Locust Valley, NY</a></li> 2589 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Locustwood_NY.htm">Locustwood, NY</a></li> 2590 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Long-Beach_NY.htm">Long Beach, NY</a></li> 2591 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Lynbrook_NY.htm">Lynbrook, NY</a></li> 2592 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Malverne_NY.htm">
2592Malverne, NY</a></li> 2593 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Manhasset_NY.htm">Manhasset, NY</a></li> 2594 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Manhasset-Hills_NY.htm">Manhasset Hills, NY</a></li> 2595 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Manorhaven_NY.htm">Manorhaven, NY</a></li> 2596 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Massapequa_NY.htm">Massapequa, NY</a></li> 2597 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Massapequa-Park_NY.htm">Massapequa Park, NY</a></li> 2598 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Matinecock_NY.htm">Matinecock, NY</a></li> 2599 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Meacham_NY.htm">Meacham, NY</a></li> 2600 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Meadowmere-Park_NY.htm">Meadowmere Park, NY</a></li> 2601 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Melville_NY.htm">Melville, NY</a></li> 2602 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Merrick_NY.htm">Merrick, NY</a></li> 2603 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Mill-Neck_NY.htm">Mill Neck, NY</a></li> 2604 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Mineola_NY.htm">Mineola, NY</a></li> 2605 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Muttontown_NY.htm">Muttontown, NY</a></li> 2606 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_New-Cassel_NY.htm">New Cassel, NY</a></li> 2607 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_New-Hyde-Park_NY.htm">New Hyde Park, NY</a></li> 2608 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Amityville_NY.htm">North Amityville, NY</a></li> 2609 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Babylon_NY.htm">North Babylon, NY</a></li> 2610 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Baldwin_NY.htm">North Baldwin, NY</a></li> 2611 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Bellmore_NY.htm">North Bellmore, NY</a></li> 2612 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Hills_NY.htm">North Hills, NY</a></li> 2613 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Lindenhurst_NY.htm">North Lindenhurst, NY</a></li> 2614 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Massapequa_NY.htm">North Massapequa, NY</a></li> 2615 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Merrick_NY.htm">North Merrick, NY</a></li> 2616 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-New-Hyde-Park_NY.htm">North New Hyde Park, NY</a></li> 2617 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Valley-Stream_NY.htm">North Valley Stream, NY</a></li> 2618 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_North-Woodmere_NY.htm">North Woodmere, NY</a></li> 2619 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Northport_NY.htm">Northport, NY</a></li> 2620 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Oak-Beach_NY.htm">Oak Beach, NY</a></li> 2621 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Oak-Island_NY.htm">Oak Island, NY</a></li> 2622 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Oceanside_NY.htm">Oceanside, NY</a></li> 2623 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Old-Bethpage_NY.htm">Old Bethpage, NY</a></li> 2624 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Old-Brookville_NY.htm">Old Brookville, NY</a></li> 2625 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Old-Village_NY.htm">Old Village, NY</a></li> 2626 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Old-Westbury_NY.htm">Old Westbury, NY</a></li> 2627 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Oyster-Bay_NY.htm">Oyster Bay, NY</a></li> 2628 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Oyster-Bay-Cove_NY.htm">Oyster Bay Cove, NY</a></li> 2629 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Plainedge_NY.htm">Plainedge, NY</a></li> 2630 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Plainview_NY.htm">Plainview, NY</a></li> 2631 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Plandome_NY.htm">Plandome, NY</a></li> 2632 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Point-Lookout_NY.htm">Point Lookout, NY</a></li> 2633 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Port-Wash_NY.htm">Port Wash, NY</a></li> 2634 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Port-Washington_NY.htm">Port Washington, NY</a></li> 2635 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Rockville-Center_NY.htm">Rockville Center, NY</a></li> 2636 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Rockville-Centre_NY.htm">Rockville Centre, NY</a></li> 2637 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Roosevelt_NY.htm">Roosevelt, NY</a></li> 2638 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Roslyn_NY.htm">Roslyn, NY</a></li> 2639 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Roslyn-Estates_NY.htm">Roslyn Estates, NY</a></li> 2640 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Roslyn-Harbor_NY.htm">Roslyn Harbor, NY</a></li> 2641 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Roslyn-Heights_NY.htm">Roslyn Heights, NY</a></li> 2642 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Russell-Gardens_NY.htm">Russell Gardens, NY</a></li> 2643 <li class="w3-col s12 m6 l4">
2643<a href="/Carpet-Cleaning_Saddle-Rock_NY.htm">Saddle Rock, NY</a></li> 2644 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Saddle-Rock-Estates_NY.htm">Saddle Rock Estates, NY</a></li> 2645 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Sands-Point_NY.htm">Sands Point, NY</a></li> 2646 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Sea-Cliff_NY.htm">Sea Cliff, NY</a></li> 2647 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Seaford_NY.htm">Seaford, NY</a></li> 2648 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_South-Farmingdale_NY.htm">South Farmingdale, NY</a></li> 2649 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_South-Floral-Park_NY.htm">South Floral Park, NY</a></li> 2650 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_South-Hempstead_NY.htm">South Hempstead, NY</a></li> 2651 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_South-Huntington_NY.htm">South Huntington, NY</a></li> 2652 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Stewart-Manor_NY.htm">Stewart Manor, NY</a></li> 2653 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Strathmore_NY.htm">Strathmore, NY</a></li> 2654 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Syosset_NY.htm">Syosset, NY</a></li> 2655 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_The-Terrace_NY.htm">The Terrace, NY</a></li> 2656 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Thomaston_NY.htm">Thomaston, NY</a></li> 2657 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Uniondale_NY.htm">Uniondale, NY</a></li> 2658 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Upper-Brookville_NY.htm">Upper Brookville, NY</a></li> 2659 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Usmma_NY.htm">Usmma, NY</a></li> 2660 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Valley-Stream_NY.htm">Valley Stream, NY</a></li> 2661 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Wantagh_NY.htm">Wantagh, NY</a></li> 2662 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_West-Babylon_NY.htm">West Babylon, NY</a></li> 2663 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_West-Gilgo-Beach_NY.htm">West Gilgo Beach, NY</a></li> 2664 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_West-Hempstead_NY.htm">West Hempstead, NY</a></li> 2665 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_West-Hills_NY.htm">West Hills, NY</a></li> 2666 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Westbury_NY.htm">Westbury, NY</a></li> 2667 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Wheatley-Heights_NY.htm">Wheatley Heights, NY</a></li> 2668 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Williston-Park_NY.htm">Williston Park, NY</a></li> 2669 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Wincoma_NY.htm">Wincoma, NY</a></li> 2670 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Woodbury_NY.htm">Woodbury, NY</a></li> 2671 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Woodmere_NY.htm">Woodmere, NY</a></li> 2672 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Woodsburgh_NY.htm">Woodsburgh, NY</a></li> 2673 <li class="w3-col s12 m6 l4"><a href="/Carpet-Cleaning_Wyandanch_NY.htm">Wyandanch, NY</a></li> 2674 </ul> 2675 </div> 2676 2677 2678 2679 2680</main> 2681 2682<!-- page content ends here --> 2683 2684<!-- footer starts here --> 2685 2686<footer class="w3-container pad0"> 2687 <div class="w3-container pad0"> 2688 2689 2690 <div class="w3-container pad0"> 2691 <div class="useboxright"> 2692 Certified Green Team<br> 2693 Westbury, NY 11590 2694 <div class="callNoDiv"> 2695 <ul class="phoneList"> 2696 <li class="primaryPhone"><a class="phoneNumber primaryPhone" href="tel:+16315282509">(631) 528-2509</a></li> 2697 </ul> 2698 </div> 2699 2700 <p><a class="privacyPolicy" href="/privacy-policy.htm">Privacy Policy</a> | <a class="termsConditions" href="/terms-conditions.htm">Terms & Conditions</a></p> 2701 2702 </div> 2703 </div> 2704 </div> 2705 2706 <div class="w3-container pad0 footerDivMn">
2706Copyright © 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> 2707 </footer> 2708 2709<!-- footer ends here --> 2710 2711<!-- Menu Styles -->
2712<script src="/js/jquery-3.7.1.min.js"></script>
2712 2713 2714 2715
2716<script> 2717 var leadFormPopUpRedirectUrl = null; 2718 2719 $(document).ready(function () { 2720 $(window).resize(function () { 2721 setMainTopSpacer(); 2722 // ipad (others?) slow to redraw screen on orientation change 2723 setTimeout(setMainTopSpacer, 500); 2724 }); 2725 }); 2726</script>
2726 2727 2728 2729
2730<script src="/js/jquery.mask.min.js" defer></script>
2730 2731 2732<div id="overlay-back"></div> 2733<link rel="preload" href="/templates/contactForm.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2734<noscript> 2735 <link rel="stylesheet" href="/templates/contactForm.css"> 2736</noscript> 2737<div> 2738 <style>.statusMessage { 2739 height: 6em; 2740 }</style> 2741</div> 2742 2743<div id="sendingMessage" class="statusMessage"><p>Sending your message. Please wait...</p></div> 2744<div id="failureMessage" class="statusMessage"><p>There was a problem sending your message. Please try again or call 2745 us.</p></div> 2746<div id="incompleteMessage" class="statusMessage"><p>Please complete all the fields in the form before sending.</p> 2747</div> 2748<div id="limitMessage" class="statusMessage"><p>You may only send 3 messages per day, but you are welcome to call 2749 us!</p></div> 2750<div id="invalid_phone" class="statusMessage"><p>The phone number is invalid. Please check your phone number and try 2751 again.</p></div> 2752<div id="invalid_email" class="statusMessage"><p>The email address is invalid. Please check your email address and try 2753 again.</p></div> 2754 <div id="successMessage" class="statusMessage"><p>Thanks for contacting us! We'll get back to you shortly.</p></div> 2755 2756 2757 2758
2758<script> 2759 let messageDelay = 3000; // How long to display status messages (in milliseconds) 2760 2761 // Init the form once the document is ready 2762 $(init); 2763 2764 // Initialize the form 2765 function init() { 2766 $("[name='contactForm']").submit(submitForm); 2767 $(".validatePhone").mask('(000) 000-0000'); 2768 } 2769 2770 // reCAPTCHA v3 2771 function onRecaptchaSubmit(token) { 2772 // token does not need to be processed 2773 if (!validateForm()) return false; 2774 let recaptchaForm = document.getElementById("demo-form"); 2775 // the form *magickly* includes the token 2776 submitForm.apply(recaptchaForm); 2777 } 2778 function onRecaptchaLandingSubmit(token) { 2779 // token does not need to be processed 2780 let recaptchaForm = document.getElementById("landing-form"); 2781 // the form *magickly* includes the token 2782 submitForm.apply(recaptchaForm); 2783 } 2784 2785 // Submit the form via Ajax 2786 function submitForm() { 2787 var contactForm = $(this); 2788 2789 // Are all the fields filled in? 2790 $('#overlay-back').fadeIn(200); 2791 $('#page').fadeTo('fast', .2); 2792 2793 if (!contactForm.find("[name='senderName']").val() || !contactForm.find("[name='senderEmail']").val() || !contactForm.find("[name='message']").val()) { 2794 2795 // No; display a warning message and return to the form 2796 $('#incompleteMessage').fadeIn().delay(messageDelay).fadeOut(); 2797 $('#overlay-back').delay(messageDelay + 500).fadeOut(200); 2798 $('#page').delay(messageDelay + 500).fadeTo('fast', 1); 2799 2800 2801 } else { 2802 2803 // Yes; submit the form to the PHP script via Ajax 2804 $('#sendingMessage').fadeIn(); 2805 2806 $.ajax({
2807 url: contactForm.attr('action') + "?ajax=true", 2808 type: contactForm.attr('method'), 2809 data: contactForm.serialize(), 2810 timeout: 30000, 2811 success: submitFinished, 2812 error: function (x, t, m) { 2813 if (t === "timeout") { 2814 submitFinished(t); 2815 } else if (t === "invalid_email") { 2816 submitFinished(t); 2817 } else if (t === "invalid_phone") { 2818 submitFinished(t); 2819 } 2820 } 2821 }); 2822 } 2823 2824 // Prevent the default form submission occurring 2825 return false; 2826 } 2827 2828 // Handle the Ajax response 2829 function submitFinished(response) { 2830 response = $.trim(response); 2831 $('#sendingMessage').fadeOut(); 2832 2833 if (response == "success") { 2834 2835 // Form submitted successfully: 2836 // 1. Display the success message 2837 // 2. Clear the form fields 2838 // 3. Fade the content back in 2839 2840 $('#successMessage').fadeIn().delay(messageDelay).fadeOut(); 2841 var leadName = $("[name='senderName']").val(); 2842 var leadEmail = $("[name='senderEmail']").val(); 2843 var leadPhone = $("[name='senderPhone']").val(); 2844 $("[name='senderName']").val(""); 2845 $("[name='senderEmail']").val(""); 2846 $("[name='senderPhone']").val(""); 2847 $("[name='message']").val(""); 2848 2849 if (leadFormPopUpRedirectUrl) { 2850 // client has supplied url to send customer after form is accepted 2851 var params = new URLSearchParams(); 2852 if (leadName) params.set('full_name', leadName); 2853 if (leadEmail) params.set('email', leadEmail); 2854 if (leadPhone) params.set('phone', leadPhone); 2855 var a = document.getElementById('propertyAddress'); 2856 var c = document.getElementById('propertyCity'); 2857 var s = document.getElementById('propertyState'); 2858 var z = document.getElementById('propertyZip'); 2859 if (a && a.value) params.set('address', a.value.trim()); 2860 if (c && c.value) params.set('city', c.value.trim()); 2861 if (s && s.value) params.set('state', s.value.trim()); 2862 if (z && z.value) params.set('postal_code', z.value.trim()); 2863 var sep = leadFormPopUpRedirectUrl.includes('?') ? '&' : '?'; 2864 window.location.href = params.toString() 2865 ? leadFormPopUpRedirectUrl + sep + params.toString() 2866 : leadFormPopUpRedirectUrl; 2867 } 2868 2869 $('#overlay-back').delay(messageDelay + 500).fadeOut(200); 2870 $('#page').delay(messageDelay + 500).fadeTo('fast', 1); 2871 2872 } else if (response == "toomany") { 2873 $('#limitMessage').fadeIn().delay(messageDelay).fadeOut(); 2874 $('#overlay-back').delay(messageDelay + 500).fadeOut(200); 2875 $('#page').delay(messageDelay + 500).fadeTo('fast', 1); 2876 } else if (response === "invalid_email") { 2877 $('#invalid_email').fadeIn().delay(messageDelay).fadeOut(); 2878 $('#overlay-back').delay(messageDelay+500).fadeOut(200); 2879 $('#page').delay(messageDelay+500).fadeTo( 'fast', 1 ); 2880 } else if (response === "invalid_phone") { 2881 $('#invalid_phone').fadeIn().delay(messageDelay).fadeOut(); 2882 $('#overlay-back').delay(messageDelay+500).fadeOut(200); 2883 $('#page').delay(messageDelay+500).fadeTo( 'fast', 1 ); 2884 } else { 2885 // Form submission failed: Display the failure message, 2886 // then redisplay the form 2887 $('#failureMessage').fadeIn().delay(messageDelay).fadeOut(); 2888 $('#overlay-back').delay(messageDelay + 500).fadeOut(200); 2889 $('#page').delay(messageDelay + 500).fadeTo('fast', 1); 2890 } 2891 } 2892 2893 $(".gotoGetAPrice").click(function () { 2894 $('html, body').animate({ 2895 scrollTop: $("#get_a_price").offset().top - 100 2896 }, 1000); 2897 document.getElementById("senderName").focus(); 2898 }); 2899 2900 </script>
2900 2901 2902 2903 2904 2905 2906 <!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 2906-2907
2906 2907 <script async src="https://www.googletagmanager.com/gtag/js?id=
2907AW-688358925
vendor: 13 bytes, lines 2907-2908
2907"></script> 2908
2908<script> 2909
vendor: 135 bytes, lines 2909-2912
2909window.dataLayer = window.dataLayer || []; 2910 function gtag(){dataLayer.push(arguments);} 2911 gtag('js', new Date()); 2912 gtag('config', '
2912AW-688358925
vendor: 4 bytes, line 2912
2912');
2912</script>
2912 2913 2914
2915<script> 2916 setTimeout(function() { 2917 var script = document.createElement('script'); 2918 script.src = 'https://www.google.com/recaptcha/api.js'; 2919 script.defer = true; 2920 document.body.appendChild(script); 2921 }, 4200); 2922 setTimeout(function() { 2923 var script = document.createElement('script'); 2924 // look for hi-res images - same file name with @2x appended 2925 //script.src = '/js/retina99.min.js'; 2926 script.src = '/js/retina99.js'; 2927 script.defer = true; 2928 document.body.appendChild(script); 2929 }, 4300); 2930</script>
2930 2931 2932
2932<script> 2933 2934 2935 function validateForm() { 2936 var senderName = document.getElementById("senderName").value; 2937 var senderEmail = document.getElementById("senderEmail").value; 2938 var senderPhone = document.getElementById("senderPhone").value; 2939 2940 if (senderName.trim() === "") { 2941 alert("Please enter your name."); 2942 return false; 2943 } 2944 2945 if (senderEmail.trim() === "") { 2946 alert("Please enter your email."); 2947 return false; 2948 } 2949 2950 if (senderPhone.trim() === "") { 2951 alert("Please enter your phone number."); 2952 return false; 2953 } 2954 2955 // Validate address if address step is enabled 2956 var addressField = document.getElementById("propertyAddress"); 2957 if (addressField) { 2958 if (addressField.value.trim() === "") { 2959 alert("Please enter the property address."); 2960 return false; 2961 } 2962 // Only require autocomplete selection if Google Maps loaded OK 2963 if (!window.googleMapsAuthFailed) { 2964 var cityField = document.getElementById("propertyCity"); 2965 if (!cityField || cityField.value.trim() === "") { 2966 alert("Please select an address from the suggestions."); 2967 return false; 2968 } 2969 } 2970 } 2971 2972 // Regular expression pattern for validating email addresses 2973 var pattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; 2974 if (!pattern.test(senderEmail)) { 2975 alert("Please check your email address."); 2976 return false; 2977 } 2978 2979 // if email address ends in .con, ask if they meant .com 2980 if (senderEmail.endsWith('.con')) { 2981 confirm('Did you mean .com at the end of your email address?'); 2982 return false; 2983 } 2984 2985 // validate phone number is US format - remove non-numeric characters and check it's 10 digits and first digit is not 0 or 1 2986 var phone = senderPhone.replace(/\D/g, ''); 2987 if (phone.length != 10) { 2988 alert("Please check your phone number."); 2989 return false; 2990 } 2991 // Area codes start with a number 2â9, followed by 0â8, and then any third digit. 2992 // 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. 2993 // The final four digits, known as the station code, have no restrictions. 2994 pattern = /^[2-9][0-8][0-9][2-9][0-9]{2}[0-9]{4}$/; 2995 if (!pattern.test(phone)) { 2996 alert("Please check your phone number."); 2997 return false; 2998 } 2999 // 222 and 555 are not valid area codes 3000 if (phone.substring(0, 3) == '222' || phone.substring(0, 3) == '555') { 3001 alert("Please check your phone number."); 3002 return false; 3003 } 3004 3005 return true; // Form submission will proceed if all fields are filled 3006 } 3007 3008 $(document).ready(function () { // when the document is ready 3009 // add a listener to the form submit event 3010 $("#demo-form").submit(function (e) { 3011 e.preventDefault(); // avoid execution of the actual submit of the form. 3012 const idSubmit = document.getElementById("idSubmit"); 3013 if (idSubmit) 3014 idSubmit.innerText = "... processing ..."; 3015 3016 var form = $(this); 3017 var url = form.attr('action') + '?ajax'; 3018 3019 $.ajax({ 3020 type: "POST", 3021 url: url, 3022 data: form.serialize(), // serializes the form's elements. 3023 success: function (data) { 3024 if (data == 'invalid_email') { 3025 //alert('Invalid email address. Please review your email address for typos and try again.'); 3026 if (idSubmit) 3027 idSubmit.innerText = "Get exclusive leads!"; 3028 return; 3029 } 3030 if (data == 'success') { 3031 let url = $("#hdnThankYouUrl").val(); 3032 if (url) 3033 window.location = url; 3034 else 3035 document.getElementById("idSubmit").innerText = "Success!"; 3036 } 3037 3038 const d = new Date(); 3039 d.toLocaleString('en-US', { timeZone: 'America/New_York' }) 3040 if (d.getDay() >= 1 && d.getDay() <= 5 && d.getHours() >= 9 && d.getHours() < 17) { 3041 // it's Mon-Fri between 9am - 5pm 3042 document.getElementById("overlay_open").style.display = "block"; 3043 } else { 3044 document.getElementById("overlay_closed").style.display = "block"; 3045 } 3046 document.getElementById("idPopUp").style.display = "none"; 3047 // document.getElementById("idPopUp").style.zIndex = 1; 3048 }, 3049 error: function (jqXHR, textStatus, errorThrown) { 3050 if (errorThrown) { 3051 alert('Error - ' + errorThrown); 3052 } else if (textStatus) { 3053 alert('Error - ' + textStatus); 3054 } else { 3055 alert('An unexpected error occurred. Please call us. We apologize for the inconvenience.') 3056 } 3057 } 3058 }); 3059 3060 }); 3061 }); 3062 3063 3064 </script>
3064 3065 3066 3067<link href="/css/pop.up.lead.form.css?v=2026.01.27e" rel="stylesheet" type="text/css"/> 3068 3069<div class="user-agent-warp"> 3070 <div id="divuseragent" class="user-agent-bubble message-left"> 3071 <div class="user-agent-avatar user-agent-fade-in"> 3072 <div class="user-agent-bubble-avatar"> 3073 <div class="user-agent-avatar-img-wrapper"> 3074 <img src="/css/images/repagent.png" id="imgAgentAvatar" alt="support Agent"/> 3075 </div> 3076 <div id="divPopUpLeadFormCounter" class="user-agent-bubble-avatar-counter">1</div> 3077 </div> 3078 </div> 3079 <div class="user-agent-bubble-message user-agent-fade-in" id="divuseragentmessage"> 3080 <button type="button" class="user-agent-bubble-close" id="btnCloseBubbleMessage" aria-label="Close message">×</button> 3081 <span id="spanuseragentmessage">Which type of leads are you looking for?</span> 3082 <div class="user-agent-bubble-arrow-left"></div> 3083 </div> 3084 </div> 3085</div> 3086<div style="display: none;"> 3087 <div id="modal-useragent" > 3088 <div id="divAgentDialogContent"> 3089 3090 </div> 3091 </div> 3092</div>
3093<script src="/js/pop.up.lead.form.99calls.js?v=2026.03.09a" defer></script>
3093 3094</body> 3095 3096 3097 3098 3099</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.