1<!DOCTYPE html> 2<html lang="en-US"> 3<head > 4<meta charset="UTF-8" /> 5<meta name="viewport" content="width=device-width, initial-scale=1" /> 6<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 7 8 <!-- This site is optimized with the Yoast SEO plugin v28.6 - https://yoast.com/product/yoast-seo-wordpress/ --> 9 <title>Residential Metal Roofing Installation, Roof Repair & Replacement Company Culpeper, Greene County, Orange County & More Areas In VA - Cowan Roofing</title> 10 <meta name="description" content="Cowan Roofing serves residential and commercial customers in and around Culpeper and Madison, VA. Our roofing services include roof repair, roof replacement more Schedule a free estimate today!" /> 11 <link rel="canonical" href="https://cowanroofing.com/roofing/" /> 12 <meta property="og:locale" content="en_US" /> 13 <meta property="og:type" content="article" /> 14 <meta property="og:title" content="Residential Metal Roofing Installation, Roof Repair & Replacement Company Culpeper, Greene County, Orange County & More Areas In VA - Cowan Roofing" /> 15 <meta property="og:description" content="Cowan Roofing serves residential and commercial customers in and around Culpeper and Madison, VA. Our roofing services include roof repair, roof replacement more Schedule a free estimate today!" /> 16 <meta property="og:url" content="https://cowanroofing.com/roofing/" /> 17 <meta property="og:site_name" content="Cowan Roofing" /> 18 <meta property="article:modified_time" content="2026-06-25T09:51:24+00:00" /> 19 <meta property="og:image" content="https://cowanroofing.com/wp-content/uploads/2020/06/roof-installation-services.jpg" /> 20 <meta property="og:image:width" content="970" /> 21 <meta property="og:image:height" content="728" /> 22 <meta property="og:image:type" content="image/jpeg" /> 23 <meta name="twitter:card" content="summary_large_image" /> 24 <meta name="twitter:label1" content="Est. reading time" /> 25 <meta name="twitter:data1" content="2 minutes" /> 26
26<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cowanroofing.com\/roofing\/","url":"https:\/\/cowanroofing.com\/roofing\/","name":"Residential Metal Roofing Installation, Roof Repair & Replacement Company Culpeper, Greene County, Orange County & More Areas In VA - Cowan Roofing","isPartOf":{"@id":"https:\/\/cowanroofing.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cowanroofing.com\/roofing\/#primaryimage"},"image":{"@id":"https:\/\/cowanroofing.com\/roofing\/#primaryimage"},"thumbnailUrl":"https:\/\/cowanroofing.com\/wp-content\/uploads\/2020\/06\/roof-installation-services.jpg","datePublished":"2020-06-09T04:22:07+00:00","dateModified":"2026-06-25T09:51:24+00:00","description":"Cowan Roofing serves residential and commercial customers in and around Culpeper and Madison, VA. Our roofing services include roof repair, roof replacement more Schedule a free estimate today!","breadcrumb":{"@id":"https:\/\/cowanroofing.com\/roofing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cowanroofing.com\/roofing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cowanroofing.com\/roofing\/#primaryimage","url":"https:\/\/cowanroofing.com\/wp-content\/uploads\/2020\/06\/roof-installation-services.jpg","contentUrl":"https:\/\/cowanroofing.com\/wp-content\/uploads\/2020\/06\/roof-installation-services.jpg","width":970,"height":728,"caption":"Local Roof Replacement & Repair Specialists"},{"@type":"BreadcrumbList","@id":"https:\/\/cowanroofing.com\/roofing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cowanroofing.com\/"},{"@type":"ListItem","position":2,"name":"Roofing"}]},{"@type":"WebSite","@id":"https:\/\/cowanroofing.com\/#website","url":"https:\/\/cowanroofing.com\/","name":"Cowan Roofing","description":"","publisher":{"@id":"https:\/\/cowanroofing.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cowanroofing.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cowanroofing.com\/#organization","name":"Cowan Roofing","url":"https:\/\/cowanroofing.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cowanroofing.com\/#\/schema\/logo\/image\/","url":"https:\/\/cowanroofing.com\/wp-content\/uploads\/2023\/10\/cowan-roofing-logo.jpg","contentUrl":"https:\/\/cowanroofing.com\/wp-content\/uploads\/2023\/10\/cowan-roofing-logo.jpg","width":233,"height":85,"caption":"Cowan Roofing"},"image":{"@id":"https:\/\/cowanroofing.com\/#\/schema\/logo\/image\/"}}]}</script>
26 27 <!-- / Yoast SEO plugin. --> 28 29 30<link rel='dns-prefetch' href='//static.addtoany.com' /> 31<link rel='dns-prefetch' href='//cdn.jsdelivr.net' /> 32<link rel='dns-prefetch' href='//unpkg.com' /> 33<link rel='dns-prefetch' href='//seomarkoptimizer.sfs.io' /> 34<link rel='dns-prefetch' href='//maxcdn.bootstrapcdn.com' /> 35<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /> 36<link rel="alternate" type="application/rss+xml" title="Cowan Roofing » Feed" href="https://cowanroofing.com/feed/" /> 37<link rel="alternate" type="application/rss+xml" title="Cowan Roofing » Comments Feed" href="https://cowanroofing.com/comments/feed/" /> 38<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://cowanroofing.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fcowanroofing.com%2Froofing%2F" /> 39<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://cowanroofing.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fcowanroofing.com%2Froofing%2F&format=xml" /> 40<style id="wp-img-auto-sizes-contain-inline-css"> 41img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 42/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 43</style> 44<link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/google-reviews-business/static/css/google-review.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/style.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/contact-form-7/includes/css/styles.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/widget-options/assets/css/widget-options.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/uploads/maxmegamenu/style.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-includes/css/dashicons.min.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/pojo-accessibility/modules/legacy/assets/css/style.min.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/cache/w3-cache/fonts/4dd54e972af70b2a84dad75538fed704.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/css/custom-styles.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/css/slick.css" as="style" fetchpriority="high"><link rel="preload" href="//cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css" as="style" crossorigin fetchpriority="high"><link rel="preload" href="//unpkg.com/[email protected]/dist/aos.css" as="style" crossorigin fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/css/odometer.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/lib/gutenberg/front-end.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/easy-fancybox/fancybox/1.5.4/jquery.fancybox.min.css" as="style" fetchpriority="high"><link rel="preload" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/add-to-any/addtoany.min.css" as="style" fetchpriority="high"><link rel="preload" href="https://s.w.org/wp-includes/css/dashicons.min.css?ver=6.5" as="style" crossorigin fetchpriority="high"><style id="w3-bg-load">p[data-bglz],p[data-bglz]::before,p[data-bglz]::after,div[data-bglz],div[data-bglz]::before,div[data-bglz]::after,section[data-bglz],section[data-bglz]::before,section[data-bglz]::after,iframelazy[data-bglz],iframe[data-bglz]{background-image:none !important;} video[data-class="LazyLoad"]{opacity: 0;} </style>
44<script>var w3elem = window.innerWidth<768?'touchstart':'click';var w3LazyloadByPx=200, w3LazyloadJs = 0,w3ExcludedJs = 0, w3Inp = 0,w3BlankImgUrl="https://cowanroofing.com/wp-content/cache/w3-cache/blank.png",w3CallUrl="https://cowanroofing.com/wp-admin/admin-ajax.php?action=w3Call&token=bf5e9fa2a71f1fdc03b15a39b93b0ba6",w3Call=1;var w3pageshow="";!function(){let e=[];var t=EventTarget.prototype.addEventListener;e.click=[],e.touchstart=[],window.w3Html=[],window.w3Html.eventEcr=[],window.w3Html.class="",window.w3Html["css-preloaded"]=0,window.w3Html["data-css"]=0,window.w3Html["data-css-loaded"]=0;let i=document.querySelector("html"),r=new WeakMap;function s(t){!function e(t,i=0){return!!hasClickHandler(t)||i<3&&!["HTML","BODY"].includes(t.parentNode.tagName)&&e(t.parentNode,++i)}(t.target)&&("A"!=t.target.tagName||0==t.target.href.indexOf("#")||0==t.target.href.indexOf("javascript"))&&(t.preventDefault(),console.log("click",t.target),e.click.push(t.target))}window.hasClickHandler=e=>!!r.get(e)?.click?.size,"onpageshow"in window&&(window.onpageshow=function(e){w3pageshow=e}),EventTarget.prototype.addEventListener=function(e,i,s){if(["w3-DOMContentLoaded","w3-load"].includes(e))return t.call(this,e,i,"object"==typeof s?{...s,once:!0}:{once:!0});if(["click","touchstart"].includes(e)){let a=r.get(this);return a||(a={},r.set(this,a)),(a[e]||=new Set).add(i),t.call(this,e,i,s)}return"scroll"===e?t.call(this,e,i,"object"==typeof s?{...s,passive:!0}:!0===s?{passive:!0,capture:!0}:{passive:!0}):t.call(this,e,i,s)},i.addEventListener("click",s),window.addEventListener("w3-load",function t(){return -1!=window.w3Html.class.indexOf("jsload")?(i.removeEventListener("click",s),setTimeout(function(){(function t(i,r){if(r>3)return;let s=e[i];for(let a=0;a<s.length;a++){let n=s[a];if(!window.w3Html.eventEcr.includes(n)&&void 0!==n.click)return window.w3Html.eventEcr.push(n),n.click();if(!window.w3Html.eventEcr.includes(n)&&void 0===n.click&&!["HTML","BODY"].includes(n.parentNode.tagName))return e[i]=[],e[i].push(n.parentNode),t(i,r+1)}})("click",0)},200)):setTimeout(function(){t()},50)},{passive:!0})}();class w3LoadScripts{constructor(e){this.triggerEvents=e,this.eventOptions={passive:!0},this.userEventListener=this.triggerListener.bind(this),this.lazyTrigger,this.styleLoadFired,this.lazyScriptsLoadFired=0,this.scriptsLoadFired=0,this.excluded_js=w3ExcludedJs,this.w3LazyloadJs=w3LazyloadJs,this.w3_fonts="undefined"!=typeof w3GoogleFont?w3GoogleFont:[],this.w3Styles=[],this.w3Scripts={normal:[],async:[],defer:[],lazy:[]},this.allJQueries=[],this.validScriptAttributes=new Set(["src","type","async","defer","crossorigin","integrity","nomodule","referrerpolicy","nonce","id","onload","onerror"]),this.htmlElement=document.getElementsByTagName("html")[0]}userEventsAdd(e){let t=this.triggerEvents;for(let i=0;i<t.length;i++)window.addEventListener(t[i],e.userEventListener,e.eventOptions)}userEventsRemove(e){let t=this.triggerEvents;for(let i=0;i<t.length;i++)window.removeEventListener(t[i],e.userEventListener,e.eventOptions)}async triggerListener(e){this.userEventsRemove(this),setTimeout(()=>this.callEvents(),10,10)}callEvents(){this.lazyScriptsLoadFired=1,this.addHtmlClass("w3_user"),"loading"===document.readyState?this.scriptsLoadFire||document.addEventListener("DOMContentLoaded",this.loadResources.bind(this)):this.scriptsLoadFire||this.loadResources()}async loadStyleResources(){this.styleLoadFired||(this.styleLoadFired=!0,this.registerStyles(),window.w3Html["data-css"]=this.w3Styles.length,this.preloadScripts(this.w3Styles),this.loadStylesPreloaded(),this.loadFonts(this.w3_fonts))}async loadStylesPreloaded(){setTimeout(async()=>{1==window.w3Html["css-preloaded"]?(await this.loadStyles(this.w3Styles),await this.repaintFrame()):this.loadStylesPreloaded()},10)}async loadResources(){this.loadStyleResources(),this.scriptsLoadFired||(this.scriptsLoadFired=!0,this.exeDocumentWrite(),this.registerScripts(),this.addHtmlClass("w3_start"),"function"==typeof w3EventsOnStartJs&&w3EventsOnStartJs(),await this.preloadScripts(this.w3Scripts.normal),await this.preloadScripts(this.w3Scripts.defer),await this.preloadScripts(this.w3Scripts.async),await this.loadScripts(this.w3Scripts.normal),await this.loadScripts(this.w3Scripts.defer),await this.loadScripts(this.w3Scripts.async),await this.executeDomcontentloaded(),await this.executeWindowLoad(),window.dispatchEvent(new Event("w3-scripts-loaded")),this.addHtmlClass("w3_js"),"function"==typeof w3EventsOnEndJs&&w3EventsOnEndJs(),this.lazyTrigger=setInterval(this.w3TriggerLazyScript,500,this))}async w3TriggerLazyScript(e){e.lazyScriptsLoadFired&&(await e.loadScripts(e.w3Scripts.lazy),e.addHtmlClass("jsload"),clearInterval(e.lazyTrigger))}addHtmlClass(e){this.htmlElement.classList.add(e),window.w3Html.class+=" "+e}registerScripts(){let e=document.querySelectorAll("script[type=lazyJs]"),t=document.querySelectorAll("script[type=lazyExJs]");for(let i=0;i<e.length;i++){let r=e[i];r.hasAttribute("src")?r.hasAttribute("async")&&!1!==r.async?this.w3Scripts.async.push(r):r.hasAttribute("defer")&&!1!==r.defer||"module"===r.getAttribute("data-w3-type")?this.w3Scripts.defer.push(r):this.w3Scripts.normal.push(r):this.w3Scripts.normal.push(r)}for(let s=0;s<t.length;s++)this.w3Scripts.lazy.push(t[s])}registerStyles(){let e=document.querySelectorAll("link[data-href]");for(let t=0;t<e.length;t++)this.w3Styles.push(e[t])}async executeScript(e){return new Promise(t=>{let i=document.createElement("script"),r=e.attributes;for(let s=0;s<r.length;s++){let a=r[s],n=a.nodeName;"type"!==n&&"data-cfasync"!=n&&("data-w3-type"===n&&(n="type"),(-1!=n.indexOf("data-")||-1==n.indexOf("data-")&&this.validScriptAttributes.has(n))&&i.setAttribute(n,a.nodeValue))}if(e.hasAttribute("src")){i.removeAttribute("defer"),i.setAttribute("async","async");let o=i.getAttribute("type");"text/javascript"!=o&&"application/javascript"!=o&&"module"!=o&&i.setAttribute("type","text/javascript"),e.hasAttribute("nomodule")&&i.removeAttribute("type"),i.onload=()=>{i.loaded=!0,e.onload&&"function"==typeof e.onload&&e.onload(),t()},i.onerror=()=>{i.loaded=!0,t()}}else i.text=e.text,t();if(null!==e.parentNode)try{e.parentNode.replaceChild(i,e),e.hasAttribute("nomodule")&&t()}catch(l){console.error("error",l),t()}else document.head.appendChild(i)})}async executeStyles(e){e.href=e.dataset.href,e.removeAttribute("data-href"),e.rel="stylesheet"}async loadScripts(e){let t=e.shift();return t?(await this.repaintFrame(),await this.executeScript(t),this.loadScripts(e)):Promise.resolve()}async loadStyles(e){let t=e.shift();return t?(this.executeStyles(t),this.loadStyles(e)):"loaded"}async loadFonts(e){let t=document.createDocumentFragment();for(let i=0;i<e.length;i++){let r=e[i],s=document.createElement("link");s.href=r,s.rel="stylesheet",t.appendChild(s)}document.head.appendChild(t)}preloadScripts(e){let t=document.createDocumentFragment(),i=0,r=this;for(let s=0;s<e.length;s++){let a=e[s],n=a.getAttribute("src"),o=a.getAttribute("data-href"),l=a.getAttribute("data-w3-type");if(n){let d=document.createElement("link");d.href=n,d.rel="module"==l?"modulepreload":"preload",d.as="script",t.appendChild(d)}else if(o){let c=document.createElement("link");c.href=o,c.rel="preload",c.as="style",a.hasAttribute("crossorigin")&&(c.crossOrigin=a.getAttribute("crossorigin")),a.hasAttribute("integrity")&&(c.integrity=a.getAttribute("integrity")),i++,e.length==i&&(c.dataset.last=1),t.appendChild(c),c.onload=function(){fetch(this.href,{mode:"no-cors"}).then(e=>e.blob()).then(()=>r.updateCssLoader()).catch(()=>r.updateCssLoader())},c.onerror=function(){r.updateCssLoader()}}}document.head.appendChild(t)}updateCssLoader(){window.w3Html["data-css-loaded"]=window.w3Html["data-css-loaded"]+1,window.w3Html["data-css"]==window.w3Html["data-css-loaded"]&&(window.w3Html["css-preloaded"]=1)}holdEventListeners(){let e={};function t(t,i){let r=Object.getOwnPropertyDescriptor(t,"addEventListener");(void 0==r||r.writable)&&(!function(t){function i(i){return e[t].eventsToRewrite.indexOf(i)>=0?"w3-"+i:i}e[t]||(e[t]={originalFunctions:{add:t.addEventListener,remove:t.removeEventListener},eventsToRewrite:[]},t.addEventListener=function(){arguments[0]=i(arguments[0]),e[t].originalFunctions.add.apply(t,arguments)},t.removeEventListener=function(){arguments[0]=i(arguments[0]),e[t].originalFunctions.remove.apply(t,arguments)})}(t),e[t].eventsToRewrite.push(i))}function i(e,t){let i=e[t];Object.defineProperty(e,t,{get:()=>i||function(){},set(r){e["w3"+t]=i=r}})}t(document,"DOMContentLoaded"),t(window,"DOMContentLoaded"),t(window,"load"),t(window,"pageshow"),t(document,"readystatechange"),i(document,"onreadystatechange"),i(window,"onload"),i(window,"onpageshow")}bindFunc(e,t,i){if(-1==window.w3Html.class.indexOf("w3_js")){setTimeout(()=>this.bindFunc(e,t,i),50,50);return}e.bind(t)(i)}holdJquery(e){let t=window.jQuery;Object.defineProperty(window,"jQuery",{get:()=>t,set(i){if(i&&i.fn&&!e.allJQueries.includes(i)){i.fn.ready=i.fn.init.prototype.ready=function(t){if(void 0!==t)return e.scriptsLoadFired?e.domReadyFired?e.bindFunc(t,document,i):document.addEventListener("w3-DOMContentLoaded",()=>e.bindFunc(t,document,i)):document.addEventListener("DOMContentLoaded",()=>t.bind(document)(i)),i(document)};let r=i.fn.on;i.fn.on=i.fn.init.prototype.on=function(){if("ready"==arguments[0]||"w3-DOMContentLoad"==arguments[0]){if
44(this[0]!==document)return r.apply(this,arguments),this;if("string"!=typeof arguments[1])return e.bindFunc(arguments[1],document,i)}if(this[0]===window){function t(e){return e.split(" ").map(e=>"load"===e||0===e.indexOf("load")?"w3-jquery-load":e).join(" ")}"string"==typeof arguments[0]||arguments[0]instanceof String?arguments[0]=t(arguments[0]):"object"==typeof arguments[0]&&Object.keys(arguments[0]).forEach(e=>{Object.assign(arguments[0],{[t(e)]:arguments[0][e]})[e]})}return r.apply(this,arguments),this},e.allJQueries.push(i)}t=i}})}async executeDomcontentloaded(e){e||(this.domReadyFired=!0,document.w3readyState=document.readyState),await this.repaintFrame(),document.dispatchEvent(new Event("w3-DOMContentLoaded")),await this.repaintFrame(),window.dispatchEvent(new Event("w3-DOMContentLoaded")),await this.repaintFrame(),document.dispatchEvent(new Event("w3-readystatechange")),await this.repaintFrame(),document.w3onreadystatechange&&document.w3onreadystatechange()}async executeWindowLoad(e=0){if(!e&&-1==window.w3Html.class.indexOf("w3_js"))return setTimeout(()=>this.executeWindowLoad(),10);!0==this.domReadyFired&&(document.w3readyState=document.readyState),await this.repaintFrame(),setTimeout(()=>window.dispatchEvent(new Event("w3-load")),100),await this.repaintFrame(),window.w3onload&&window.w3onload(),await this.repaintFrame();for(let t=0;t<this.allJQueries.length;t++)this.allJQueries[t](window).trigger("w3-jquery-load");window.dispatchEvent(new Event("w3-pageshow")),await this.repaintFrame(),window.w3onpageshow&&window.w3onpageshow(w3pageshow)}exeDocumentWrite(){let e=new Map,t=new Map,i=null,r=function(i){if(!i||!t.has(i))return;let r=t.get(i);if(0===r.length)return;let s=r.join("");t.set(i,[]);let a=document.createRange(),n=i.parentElement,o=e.get(i);void 0===o&&(o=i.nextSibling,e.set(i,o));let l=document.createDocumentFragment();a.setStart(l,0),l.appendChild(a.createContextualFragment(s)),n.insertBefore(l,o)},s=function(e,s=!1){s&&(e+="\\n");let a=document.currentScript;a||console.error("unable to document.write this: "+e),t.has(a)||t.set(a,[]),t.get(a).push(e),i&&clearTimeout(i),i=setTimeout(()=>{r(a),i=null},0)};document.write=function(e){s(e,!1)},document.writeln=function(e){s(e,!0)}}async repaintFrame(){return new Promise(e=>requestAnimationFrame(e))}async execBeforeW3Load(){await this.executeDomcontentloaded(1),await this.executeWindowLoad(1)}static execute(){let e=new w3LoadScripts(["keydown","mousemove","touchmove","touchstart","touchend","wheel"]);if(window.addEventListener("DOMContentLoaded",()=>{e.execBeforeW3Load()}),e.holdJquery(e),e.holdEventListeners(),document.w3readyState="loading",e.userEventsAdd(e),window.location.href.indexOf("w3=1")>-1||window.location.href.indexOf("w3%3D1")>-1)return window.addEventListener("load",()=>{setTimeout(()=>{let t=new Image;t.src=w3BlankImgUrl,document.body.appendChild(t),e.triggerListener()},1e3)});let t=void 0!==window.w3TriggerUrls&&Array.isArray(window.w3TriggerUrls)?window.w3TriggerUrls:[],i=window.location.href,r=t.some(e=>i.indexOf(e)>-1);if(r||function e(){try{return window.self!==window.top}catch(t){return!0}}()||!e.w3LazyloadJs||window.scrollY>50||"complete"==document.readyState||"interactive"==document.readyState)return setTimeout(()=>e.triggerListener(),100,100);let s=setInterval(function e(t){if(null!=document.body){let i=document.body.getBoundingClientRect();i.top<-30&&setTimeout(()=>t.triggerListener(),100,100),clearInterval(s)}},500,e)}}w3LoadScripts.execute();</script>
44<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/google-reviews-business/static/css/google-review.css" rel='stylesheet' id='grw_css-css' media='all'> 45<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/style.css" rel='stylesheet' id='pleasanton-workspace-theme-css' media='all'> 46<style id="wp-emoji-styles-inline-css"> 47 48 img.wp-smiley, img.emoji { 49 display: inline !important; 50 border: none !important; 51 box-shadow: none !important; 52 height: 1em !important; 53 width: 1em !important; 54 margin: 0 0.07em !important; 55 vertical-align: -0.1em !important; 56 background: none !important; 57 padding: 0 !important; 58 } 59/*# sourceURL=wp-emoji-styles-inline-css */ 60</style> 61<style id="wp-block-library-inline-css"> 62:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
62--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 63 64/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 65</style> 66<style id="wp-block-heading-inline-css"> 67h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg} 68/*# sourceURL=https://cowanroofing.com/wp-includes/blocks/heading/style.min.css */ 69</style> 70<style id="wp-block-image-inline-css"> 71.wp-block-image>a,.wp-block-image>figure>a{display:inline-block}.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}@media not (prefers-reduced-motion){.wp-block-image img.hide{visibility:hidden}.wp-block-image img.show{animation:show-content-image .4s}}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull>a,.wp-block-image.alignwide>a{width:100%}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-image.is-style-circle-mask img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;backdrop-filter:blur(16px) saturate(180%);background-color:rgba(90,90,90,.25);border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;width:20px;z-index:100}@media not (prefers-reduced-motion){.wp-lightbox-container button{transition:opacity .2s ease}}.wp-lightbox-container button:focus-visible{outline:3px auto rgba(90,90,90,.25);outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:rgba(90,90,90,.25);border:none}.wp-lightbox-overlay{box-sizing:border-box;
71cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .wp-lightbox-close-button{align-items:center;cursor:pointer;display:flex;font-family:inherit;gap:8px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 4px;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .wp-lightbox-close-button:focus,.wp-lightbox-overlay .wp-lightbox-close-button:hover,.wp-lightbox-overlay .wp-lightbox-close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .wp-lightbox-close-button:has(.wp-lightbox-close-text:not([hidden])) .wp-lightbox-close-icon svg{height:1em;width:1em}.wp-lightbox-overlay .wp-lightbox-close-icon svg{display:block}.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{align-items:center;bottom:16px;cursor:pointer;display:flex;font-family:inherit;gap:4px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 8px;position:absolute;z-index:2000002}.wp-lightbox-overlay .wp-lightbox-navigation-button-next[hidden],.wp-lightbox-overlay .wp-lightbox-navigation-button-prev[hidden]{display:none}@media (min-width:960px){.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{bottom:50%;transform:translateY(-50%)}}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:not(:hover):not(:active):not(.has-background),.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:not(:hover):not(:active):not(.has-background){background:none;border:none;padding:0 8px}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg{display:block;height:1.5em;width:1.5em}.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{left:calc(env(safe-area-inset-left) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-button-next{right:calc(env(safe-area-inset-right) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-icon svg{vertical-align:middle}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:2000001}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{visibility:visible}@media not (prefers-reduced-motion){.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}
71@keyframes show-content-image{0%{visibility:hidden}99%{visibility:hidden}to{visibility:visible}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}} 72/*# sourceURL=https://cowanroofing.com/wp-includes/blocks/image/style.min.css */ 73</style> 74<style id="wp-block-paragraph-inline-css"> 75.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg} 76/*# sourceURL=https://cowanroofing.com/wp-includes/blocks/paragraph/style.min.css */ 77</style> 78 79<style id="classic-theme-styles-inline-css"> 80/*! This file is auto-generated */ 81.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 82/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 83</style> 84 85<style id="global-styles-inline-css"> 86:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--light-gray: #f5f5f5;--wp--preset--color--medium-gray: #999;--wp--preset--color--dark-gray: #333;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
86--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 12px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 20px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 16px;--wp--preset--font-size--larger: 24px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-light-gray-color{color: var(--wp--preset--color--light-gray) !important;}.has-medium-gray-color{color: var(--wp--preset--color--medium-gray) !important;}.has-dark-gray-color{color: var(--wp--preset--color--dark-gray) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-light-gray-background-color{background-color: var(--wp--preset--color--light-gray) !important;}.has-medium-gray-background-color{background-color: var(--wp--preset--color--medium-gray) !important;}.has-dark-gray-background-color{background-color: var(--wp--preset--color--dark-gray) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-light-gray-border-color{border-color: var(--wp--preset--color--light-gray) !important;}.has-medium-gray-border-color{border-color: var(--wp--preset--color--medium-gray) !important;}.has-dark-gray-border-color{border-color: var(--wp--preset--color--dark-gray) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
86.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-normal-font-size{font-size: var(--wp--preset--font-size--normal) !important;}.has-larger-font-size{font-size: var(--wp--preset--font-size--larger) !important;} 87/*# sourceURL=global-styles-inline-css */ 88</style> 89 90<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/contact-form-7/includes/css/styles.css" rel='stylesheet' id='contact-form-7-css' media='all'> 91<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/widget-options/assets/css/widget-options.css" rel='stylesheet' id='widgetopts-styles-css' media='all'> 92<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/uploads/maxmegamenu/style.css" rel='stylesheet' id='megamenu-css' media='all'> 93<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-includes/css/dashicons.min.css" rel='stylesheet' id='dashicons-css' media='all'> 94<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/pojo-accessibility/modules/legacy/assets/css/style.min.css" rel='stylesheet' id='pojo-a11y-css' media='all'> 95<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/cache/w3-cache/fonts/4dd54e972af70b2a84dad75538fed704.css" rel='stylesheet' id='smb-base-fonts-css' media='all'> 96<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/css/custom-styles.css" rel='stylesheet' id='my-style-css' media='all'> 97<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/css/slick.css" rel='stylesheet' id='slick-style-css' media='all'> 98<link data-href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel='stylesheet' id='font-awesome-css' media='all'> 99<link data-css="1" href="//cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css" rel='stylesheet' id='animate-css-css' media='all'> 100<link data-css="1" href="//unpkg.com/[email protected]/dist/aos.css" rel='stylesheet' id='aos-css-css' media='all'> 101<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/css/odometer.css" rel='stylesheet' id='odometer-css-css' media='all'> 102<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/themes/cowanroofing/lib/gutenberg/front-end.css" rel='stylesheet' id='genesis-sample-gutenberg-css' media='all'> 103<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/easy-fancybox/fancybox/1.5.4/jquery.fancybox.min.css" rel='stylesheet' id='fancybox-css' media='screen'> 104<link data-css="1" href="https://cowanroofing.com/wp-content/cache/w3-cache/css/558/wp-content/plugins/add-to-any/addtoany.min.css" rel='stylesheet' id='addtoany-css' media='all'> 105<link rel="https://api.w.org/" href="https://cowanroofing.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://cowanroofing.com/wp-json/wp/v2/pages/1878" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://cowanroofing.com/xmlrpc.php?rsd" /> 106 107<link rel='shortlink' href='https://cowanroofing.com/?p=1878' />
vendor: 60 bytes, lines 107-108
107 108 <script src="https://www.googletagmanager.com/gtag/js?id=
108G-3KT4C16M4V
vendor: 37 bytes, lines 108-109
108" async="" type="lazyJs"></script> 109
109<script type="lazyJs" > 110 window.dataLayer = window.dataLayer || []; 111 function gtag() { dataLayer.push(arguments); } 112 var tracking_ids = ["G-3KT4C16M4V"]; 113 var site_id = 'a0923e36b79c3b1fcd855c538c884c5646c6786d35401fa19fc119877a7d4d72'; 114 gtag('js', new Date()); 115 for (var i = 0; i < tracking_ids.length; i++) { 116 gtag('config', tracking_ids[i], { 'dimension1': site_id, 'send_page_view': false }); 117 gtag('event', 'page_view', { 'send_to': tracking_ids[i], 'dimension1': site_id }); 118 gtag('event', 'engaged_sessions', { 'send_to': tracking_ids[i], 'dimension1': site_id }); 119 } 120 </script>
120 121 <link data-css="1" href="https://s.w.org/wp-includes/css/dashicons.min.css?ver=6.5" rel='stylesheet'> 122<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> 123<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 124<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 125<link rel="manifest" href="/site.webmanifest"> 126<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#01567e"> 127<meta name="msapplication-TileColor" content="#ffffff"> 128<meta name="theme-color" content="#ffffff"> 129<!-- Google tag (gtag.js) -->
vendor: 59 bytes, lines 129-130
129 130<script src="https://www.googletagmanager.com/gtag/js?id=
130G-P6ECJ9LNL4
vendor: 36 bytes, line 130
130" async="" type="lazyJs"></script>
131<script type="lazyJs" > 132
vendor: 136 bytes, lines 132-135
132window.dataLayer = window.dataLayer || []; 133 function gtag(){dataLayer.push(arguments);} 134 gtag('js', new Date()); 135 gtag('config', '
135G-P6ECJ9LNL4
vendor: 5 bytes, line 135
135');
136</script>
136 137<!-- Google Tag Manager -->
138<script type="lazyJs" >
vendor: 331 bytes, lines 138-142
138(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 139new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 140j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 141'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 142})(window,document,'script','dataLayer','
142GTM-KPLNCCV
vendor: 3 bytes, line 142
142');
142</script>
142 143<!-- End Google Tag Manager --> 144
145<script type="lazyJs" > 146{ 147 "@context": "https://schema.org", 148 "@type": "RoofingContractor", 149 "@id": "https://cowanroofing.com/#organization", 150 "name": "Cowan Roofing", 151 "url": "https://cowanroofing.com/", 152 "logo": "https://cowanroofing.com/wp-content/uploads/2025/09/Untitled-100-x-90-px-200-x-90-px-1.png", 153 "image": "https://cowanroofing.com/wp-content/uploads/2025/09/Untitled-100-x-90-px-200-x-90-px-1.png", 154 "description": "Cowan Roofing provides expert residential and commercial roofing, including metal roofing and storm restoration in Madison, Culpeper, and surrounding areas.", 155 "telephone": "+1-540-308-5898", 156 "address": { 157 "@type": "PostalAddress", 158 "streetAddress": "357 Washington Street", 159 "addressLocality": "Madison", 160 "addressRegion": "VA", 161 "postalCode": "22727", 162 "addressCountry": "US" 163 }, 164 "geo": { 165 "@type": "GeoCoordinates", 166 "latitude": 38.3789, 167 "longitude": -78.2581 168 }, 169 "areaServed": [ 170 { "@type": "City", "name": "Orange" }, 171 { "@type": "City", "name": "Keswick" }, 172 { "@type": "City", "name": "Gordonsville" }, 173 { "@type": "City", "name": "Ruckersville" }, 174 { "@type": "City", "name": "Charlottesville" }, 175 { "@type": "City", "name": "Sperryville" }, 176 { "@type": "City", "name": "Culpeper" }, 177 { "@type": "AdministrativeArea", "name": "Greene County" } 178 ], 179 "openingHoursSpecification": [ 180 { 181 "@type": "OpeningHoursSpecification", 182 "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], 183 "opens": "08:00", 184 "closes": "17:00" 185 } 186 ], 187 "sameAs": [ 188 "https://www.facebook.com/CowanRoofing/", 189 "https://www.instagram.com/cowanroofing/", 190 "https://maps.google.com/maps?cid=16420466856541820905" 191 ], 192 "hasOfferCatalog": { 193 "@type": "OfferCatalog", 194 "name": "Cowan Roofing Services", 195 "itemListElement": [ 196 { 197 "@type": "Offer", 198 "itemOffered": { 199 "@type": "Service", 200 "name": "Roof Replacement", 201 "description": "Complete residential and commercial roof replacement services using top-quality asphalt shingles, metal, and specialty materials for properties in Central Virginia." 202 } 203 }, 204 { 205 "@type": "Offer", 206 "itemOffered": { 207 "@type": "Service", 208 "name": "Roof Repair", 209 "description": "Expert diagnosis and repair for leaks, missing shingles, and wear-and-tear to extend the lifespan of your roofing system." 210 } 211 }, 212 { 213 "@type": "Offer", 214 "itemOffered": { 215 "@type": "Service", 216 "name": "Specialty Roofing", 217 "description": "Specialized installation of unique materials including standing seam metal, cedar shakes, slate, and agricultural metal roofing." 218 } 219 }, 220 { 221 "@type": "Offer", 222 "itemOffered": { 223 "@type": "Service", 224 "name": "Commercial Roofing", 225 "description": "Professional flat roof solutions including TPO and EPDM installations tailored for commercial facilities." 226 } 227 }, 228 { 229 "@type": "Offer", 230 "itemOffered": { 231 "@type": "Service", 232 "name": "Gutter Installation", 233 "description": "Installation of high-quality gutter systems and downspouts to protect property foundations from water damage." 234 } 235 }, 236 { 237 "@type": "Offer", 238 "itemOffered": { 239 "@type": "Service", 240 "name": "Storm Damage Restoration", 241 "description": "Rapid response repair and insurance claim assistance for roofs damaged by hail, high winds, or falling trees." 242 } 243 } 244 ] 245 } 246} 247</script>
247<script type="lazyJs" > 248(function(url){ 249 if(/(?:Chrome\/26\.0\.1410\.63 Safari\/537\.31|WordfenceTestMonBot)/.test(navigator.userAgent)){ return; } 250 var addEvent = function(evt, handler) { 251 if (window.addEventListener) { 252 document.addEventListener(evt, handler, false); 253 } else if (window.attachEvent) { 254 document.attachEvent('on' + evt, handler); 255 } 256 }; 257 var removeEvent = function(evt, handler) { 258 if (window.removeEventListener) { 259 document.removeEventListener(evt, handler, false); 260 } else if (window.detachEvent) { 261 document.detachEvent('on' + evt, handler); 262 } 263 }; 264 var evts = 'contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop keydown keypress keyup mousedown mousemove mouseout mouseover mouseup mousewheel scroll'.split(' '); 265 var logHuman = function() { 266 if (window.wfLogHumanRan) { return; } 267 window.wfLogHumanRan = true; 268 var wfscr = document.createElement('script'); 269 wfscr.type = 'text/javascript'; 270 wfscr.async = true; 271 wfscr.src = url + '&r=' + Math.random(); 272 (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(wfscr); 273 for (var i = 0; i < evts.length; i++) { 274 removeEvent(evts[i], logHuman); 275 } 276 }; 277 for (var i = 0; i < evts.length; i++) { 278 addEvent(evts[i], logHuman); 279 } 280})('//cowanroofing.com/?wordfence_lh=1&hid=419D222C985E246681A418ECF17F922E'); 281</script>
281<style type="text/css"> 282#pojo-a11y-toolbar .pojo-a11y-toolbar-toggle a{ background-color: #01567f; color: #ffffff;} 283#pojo-a11y-toolbar .pojo-a11y-toolbar-overlay, #pojo-a11y-toolbar .pojo-a11y-toolbar-overlay ul.pojo-a11y-toolbar-items.pojo-a11y-links{ border-color: #01567f;} 284body.pojo-a11y-focusable a:focus{ outline-style: solid !important; outline-width: 1px !important; outline-color: #FF0000 !important;} 285#pojo-a11y-toolbar{ top: 100px !important;} 286#pojo-a11y-toolbar .pojo-a11y-toolbar-overlay{ background-color: #ffffff;} 287#pojo-a11y-toolbar .pojo-a11y-toolbar-overlay ul.pojo-a11y-toolbar-items li.pojo-a11y-toolbar-item a, #pojo-a11y-toolbar .pojo-a11y-toolbar-overlay p.pojo-a11y-toolbar-title{ color: #333333;} 288#pojo-a11y-toolbar .pojo-a11y-toolbar-overlay ul.pojo-a11y-toolbar-items li.pojo-a11y-toolbar-item a.active{ background-color: #4054b2; color: #ffffff;} 289@media (max-width: 767px) { #pojo-a11y-toolbar { top: 50px !important; } }</style><link rel="icon" href="https://cowanroofing.com/wp-content/themes/cowanroofing/images/favicon.ico" /> 290<link rel="pingback" href="https://cowanroofing.com/xmlrpc.php" /> 291<meta name="msvalidate.01" content="4FF8E8055197E38D57F1143F6881561D" /> <meta name="msvalidate.01" content="00CF405414D143A916E785CFF443AEB3" /> <meta name="google-site-verification" content="8ikqivozg7L88eyVPgl_G_H-rfB3eLQO7M_Uu11e0z8" />
291<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "RoofingContractor", "name": "Cowan Roofing", "image": "https://www.cowanroofing.com/wp-content/uploads/2020/07/cowan-roofing-logo.jpg", "url": "https://www.cowanroofing.com/", "telephone": "+1 540-308-5898", "priceRange": "$$", "address": { "@type": "PostalAddress", "streetAddress": "357 Washington Street", "addressLocality": "Madison", "addressRegion": "WI", "postalCode": "22727", "addressCountry": "US" }, "geo": { "@type": "GeoCoordinates", "latitude": 38.381105, "longitude": -78.2533547 }, "openingHoursSpecification": { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "08:00", "closes": "17:00" }, "sameAs": [ "https://www.facebook.com/CowanRoofing/", "https://www.houzz.com/pro/cowanroof/cowan-roofing", "https://www.yelp.com/biz/cowan-roofing-madison", "https://www.instagram.com/cowanroofing/" ] } </script>
291
291<script src="//script.crazyegg.com/pages/scripts/0022/1041.js" type="lazyJs" async="async"></script>
vendor: 1 bytes, line 291
291
292<script type="lazyJs" >(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({"gtm.start": 293 new Date().getTime(),event:"gtm.js"});var f=d.getElementsByTagName(s)[0], 294 j=d.createElement(s),dl=l!="dataLayer"?"&l="+l:"";j.async=true;j.src= 295 "https://www.googletagmanager.com/gtm.js?id="+i+dl;f.parentNode.insertBefore(j,f); 296 })(window,document,"script","dataLayer","");</script>
296<script type="lazyJs" > 297(function(){ 298 var d = document, t = 'script', 299 o = d.createElement(t), 300 s = d.getElementsByTagName(t)[0]; 301 o.src = 'https://app.realworklabs.com/static/plugin/loader.js?v=' + new Date().getTime(); 302 window.addEventListener('rwlPluginReady', function () { 303 window.rwlPlugin.init('https://app.realworklabs.com', 'lFJi4b4vZ__XM4lF'); 304 }, false); 305 s.parentNode.insertBefore(o, s); 306}()); 307</script>
307<style id="wp-custom-css"> 308 309.hide-menu{ 310 display: none; 311} 312input.wpcf7-form-control.wpcf7-submit { 313 margin-top: 7px !important; 314} 315.container .submit-form p { 316 margin: 0px !important; 317 height: auto !important; 318} 319 320 321.home-faq { 322 padding: 50px 0; 323 width: 100%; 324 max-width: 1000px; 325 margin: 0 auto; 326 font-family: sans-serif; 327} 328 329.home-faq details { 330 margin-bottom: 10px; 331 transition: all 0.3s ease; 332} 333 334.home-faq summary { 335 padding: 18px 25px; 336 background-color: #01567f; 337 color: #ffffff; 338 font-weight: 600; 339 font-size: 1.1rem; 340 cursor: pointer; 341 list-style: none; 342 border-radius: 5px; 343 transition: background-color 0.3s ease; 344 display: flex; 345 justify-content: space-between; 346 align-items: center; 347} 348 349.home-faq summary:hover { 350 background-color: #014566; 351} 352 353.home-faq details[open] summary { 354 background-color: #014566; 355 border-radius: 5px 5px 0 0; 356 border-bottom: 1px solid rgba(255,255,255,0.2); 357} 358 359.home-faq details p { 360 padding: 20px 25px; 361 background-color: #f9f9f9; 362 border: 1px solid #01567f; 363 border-top: none; 364 margin: 0; 365 color: #333; 366 line-height: 1.6; 367 border-radius: 0 0 5px 5px; 368} 369 370 371.home-faq summary::after { 372 content: '+'; 373 font-size: 1.4rem; 374 font-weight: bold; 375} 376 377.home-faq details[open] summary::after { 378 content: '-'; 379} 380 381 382@media (max-width: 768px) { 383 .home-faq { 384 padding: 30px 15px; 385 } 386 .home-faq summary { 387 font-size: 1rem; 388 padding: 15px; 389 } 390} 391 392span.wpcf7-spinner { 393 float: left; 394 display: inline-block !important; 395 position: absolute; 396 left: 0 !important; 397 margin-top: 24px !important; 398 z-index: 9999999; 399}.move-to-top { 400 bottom: 150px; 401} 402.container p { 403 margin: 0 0 5px !important; 404} 405 406.ext_home-clear { 407 display: block 408} 409a.ext_home-clear { 410 background-color: #01567f; 411 cursor: pointer; 412 padding: 10px 30px; 413 border-radius: 5px; 414 color: #fff; 415 text-transform: uppercase; 416 margin-bottom: 10px; 417 display: inline-block; 418} 419.badges-img img { 420 height: 100px; 421 width: auto; 422 object-fit: cover; 423} 424 425/* Hide Google review badge from homepage slider */ 426.page-id-2 .wp-gr.wpac { 427 display: none; 428} 429 430li.list-line-space{margin-top:20px;} 431.responsive-list { 432 display: grid; 433 grid-template-columns: repeat(4, 1fr); 434 gap: 10px; 435 list-style: none; 436 padding: 0; 437 margin: 0; 438} 439 440@media (max-width: 900px) { 441 .responsive-list { 442 grid-template-columns: repeat(2, 1fr); 443 } 444} 445 446@media (max-width: 600px) { 447 .responsive-list { 448 grid-template-columns: 1fr; 449 } 450} 451 452.load-more-btn { 453 background-color: #01567E; 454 color: #ffffff; 455 border: none; 456 padding: 10px 20px; 457 font-size: 16px; 458 border-radius: 5px; 459 cursor: pointer; 460 transition: background-color 0.3s ease; 461 margin-top: 20px; 462} 463 464.load-more-btn:hover { 465 background-color: #013a56; 466} 467/* Ensure all testimonial cards have the same height */ 468.homepage-testimonial .tt-slider { 469 display: flex; 470 flex-wrap: wrap; 471 gap: 20px; 472} 473 474.homepage-testimonial .tt-listing { 475 flex: 1 1 calc(33.333% - 20px); /* 3 per row with spacing */ 476 display: flex; 477 flex-direction: column; 478 justify-content: space-between; 479 min-height: 250px; /* Adjust as needed */ 480 box-sizing: border-box; 481 padding: 20px; 482 background: #fff; 483 border-radius: 8px; 484} 485 486/* Remove .homepage-testimonial if it limits scope */ 487.tt-content { 488 flex-grow: 4px; 489} 490.homepage-testimonial .testimonial-wrapper { 491 display: flex; 492 flex-wrap: wrap; 493 gap: 20px; /* This adds the gap between cards */ 494} 495 496.homepage-testimonial .tt-listing { 497 flex: 1 1 calc(33.333% - 20px); /* 3 cards per row minus gap */ 498 display: flex; 499 flex-direction: column; 500 justify-content: space-between; 501 min-height: 250px; 502 box-sizing: border-box; 503 padding: 20px; 504 background: #fff; 505 border-radius: 8px; 506} 507 508 509.review-info { 510 display: flex; 511 flex-direction: column; 512 align-items: center; 513 margin-bottom: 15px; 514 text-align: center; 515} 516 517.review-raiting { 518 color: #e7711b; 519 font-size: 18px; 520 margin-bottom: 5px; 521} 522 523.review-name span { 524 font-weight: 600; 525 display: inline-block; 526 margin: 0 2px; 527} 528 529.wp-google-powered img { 530 display: none; 531} 532 533.wp-google-powered::before { 534 content: ''; 535 display: block; 536 width: 150px; 537 height: 30px; 538 background-image: url('https://upload.wikimedia.org/wikipedia/commons/5/53/Powered_by_Google_logo.png'); 539 background-size: contain; 540 background-repeat: no-repeat; 541} 542.inner_page_banner { 543 min-height: 520px; 544 display: flex; 545 align-items: center; 546 background-size: cover; 547 background-position: center; 548} 549.homepage-testimonial { display: none; } 550/* Stop the Partners in Success slider and show logos in 4 columns */ 551.badges .badges-items .slick-track { 552 display: grid !important; 553 grid-template-columns: repeat(3, 1fr); 554 gap: 30px; 555 width: 100% !important; 556 transform: none !important; 557 transition: none !important; 558} 559 560.badges .badges-items .slick-list { 561 overflow: visible; 562} 563 564/* Hide the duplicate slides Slick adds for looping */ 565.badges .badges-items .slick-cloned { 566 display: none !important; 567} 568 569.badges .badges-items .badges-img { 570 width: auto !important; 571 float: none; 572 text-align: center; 573} 574.badges .badges-items .badges-img img { 575 max-width: 100px; 576 width: 100%; 577 height: auto; 578 margin: 0 auto; 579} 580 581/* Hide arrows/dots if the slider has them */ 582.badges .badges-items .slick-arrow, 583.badges .badges-items .slick-dots { 584 display: none !important; 585} 586 587/* Tablets: 2 columns, phones: 1 column */ 588@media (max-width: 900px) { 589 .badges .badges-items .slick-track { 590 grid-template-columns: repeat(2, 1fr); 591 } 592} 593@media (max-width: 600px) { 594 .badges .badges-items .slick-track { 595 grid-template-columns: 1fr; 596 } 597} 598/* Add space below the last logo on mobile */ 599@media (max-width: 600px) { 600 .badges { 601 padding-bottom: 100px !important; 602 } 603} 604@media (max-width: 600px) { 605 .badges .badges-items .slick-track { 606 row-gap: 35px !important; 607 } 608 609 .badges .badges-items .badges-img { 610 display: flex !important;
611 align-items: center; 612 justify-content: center; 613 min-height: 120px; 614 margin: 0 !important; 615 position: relative !important; 616 } 617 618 .badges .badges-items .badges-img img { 619 position: static !important; 620 transform: none !important; 621 margin: 0 auto !important; 622 } 623} 624/* Keep Slick duplicate logos hidden on mobile */ 625@media (max-width: 600px) { 626 .badges .badges-items .badges-img.slick-cloned, 627 .badges .badges-items .slick-slide.slick-cloned { 628 display: none !important; 629 } 630} 631 632 633 634 635</style> 636<style id="w3speedster-custom-css"></style></head> 637<body class="wp-singular page-template-default page page-id-1878 page-parent wp-embed-responsive wp-theme-genesis wp-child-theme-cowanroofing mega-menu-primary ally-default default content-sidebar genesis-breadcrumbs-visible genesis-footer-widgets-hidden"><style> 638#mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item > a.mega-menu-link{ 639 display: block; 640 font-size: 17px; 641 font-weight: 500; 642 outline-offset: -1px; 643 text-decoration: none; 644 padding: 10px 10px; 645 line-height: 24px; 646} 647 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-flyout ul.mega-sub-menu, #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item a.mega-menu-link { 648 background-color: #01567f; 649 color: #ffffff; 650 font-size: 16px; 651} 652 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item a.mega-menu-link:hover { 653 background-color: #01334c !important; 654 color: #ffffff; 655 } 656 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item.mega-toggle-on > a.mega-menu-link { 657 background-color: #fff; 658 color: #01334c; 659 } 660 661 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-megamenu > ul.mega-sub-menu{ 662 background-color: #01567f; 663 font-size:16px; 664 } 665 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item a.mega-menu-link:hover, #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item a.mega-menu-link:focus { 666 /*background-color: #01334c;*/ 667 background-color: #dddddd; 668 } 669 670 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:hover { 671 background-color: #01334c; 672 color: #fff; 673 padding: 4px 6px; 674 } 675 676 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link { 677 color: #fff; 678 font-family: inherit; 679 font-size: 16px; 680background-color: :#01567f; 681 text-transform: capitalize; 682 text-decoration: none; 683 font-weight: normal; 684 text-align: left; 685 margin: 0px 0px 0px 0px; 686 padding: 4px 6px; 687 vertical-align: top; 688 display: block; 689 border: 0; 690} 691 692 #mega-menu-wrap-primary { 693 background-color: #fff; 694 } 695 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item > a.mega-menu-link { 696 color:#01567f; 697 } 698 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item.mega-current-menu-item > a.mega-menu-link, #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item > a.mega-menu-link:hover{ 699 background-color: #fff; 700 color: #01334c; 701 } 702 703 #mega-menu-wrap-primary #mega-menu-primary li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row .mega-menu-column > ul.mega-sub-menu > li.mega-menu-item { 704 padding: 0px; 705 } 706 707 #mega-menu-wrap-primary.mega-keyboard-navigation > li.mega-menu-item > a.mega-menu-link:focus { 708 background-color: #fff !important; 709 } 710 711@media only screen and (max-width: 768px) { 712 #mega-menu-wrap-primary .mega-menu-toggle { 713 z-index: 1; 714 background-color: #fff; 715 } 716 #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item { 717 width:100%; 718 } 719 } 720 721/* Max Mega Menu - 2 columns on mobile */ 722@media (max-width: 768px) { 723 724 #mega-menu-wrap-primary .mega-sub-menu .mega-menu-row { 725 display: flex !important; 726 flex-wrap: wrap !important; 727 } 728 729 #mega-menu-wrap-primary .mega-sub-menu .mega-menu-column { 730 width: 50% !important; 731 max-width: 50% !important; 732 flex: 0 0 50% !important; 733 box-sizing: border-box; 734 } 735 736 #mega-menu-wrap-primary .mega-sub-menu .mega-menu-column > ul { 737 width: 100% !important; 738 } 739} 740 741</style><!-- Google Tag Manager (noscript) --><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><!-- End Google Tag Manager (noscript) --><div class="site-container"><ul class="genesis-skip-link"><li><a href="#genesis-nav-primary" class="screen-reader-shortcut"> Skip to primary navigation</a></li><li>
741<a href="#genesis-content" class="screen-reader-shortcut"> Skip to main content</a></li><li><a href="#genesis-sidebar-primary" class="screen-reader-shortcut"> Skip to primary sidebar</a></li></ul><div class="mobile-extras"><div class="extras-toggle"></div><div class="extras-content"><ul class="extras-list"><li id="site-operation"><span>Monday-Friday: 8:00 AM - 5:00 PM</span></li><li id="site-address"><span>357 Washington Street Madison, VA 22727</span></li><li class="site-sub-menu"><a href=""><span></span></a></li></ul></div></div><header class="site-header"><div class="wrap"><div class="title-area"><a class="main-logo" href="https://cowanroofing.com"><img src="https://cowanroofing.com/wp-content/uploads/2025/09/Untitled-100-x-90-px-200-x-90-px-1.png" alt="Cowan Roofing" title="Untitled (100 x 90 px) (200 x 90 px) (1)" /></a></div><div class="widget-area header-widget-area"><div class="header-right"><div class="tracking"><div class="tracking-number"><div class="container"><div class="tn-buttom"><a class="tracking_phone_number" href="tel:5403085898">(540) 308-5898</a></div></div></div></div><div class="cta-header"><div class="container"><div class="header-cta-btn"><a class="popup-form-btn">Request Estimate</a></div></div></div></div></div><nav class="nav-primary" aria-label="Main" id="genesis-nav-primary"><div class="wrap"><div id="mega-menu-wrap-primary" class="mega-menu-wrap"><div class="mega-menu-toggle"><div class="mega-toggle-blocks-left"></div><div class="mega-toggle-blocks-center"></div><div class="mega-toggle-blocks-right"><div class='mega-toggle-block mega-menu-toggle-block mega-toggle-block-1' id='mega-toggle-block-1'><button aria-controls="mega-menu-primary" aria-expanded="false" aria-haspopup="true" class='mega-toggle-standard mega-toggle-label'><span class='mega-toggle-label-closed'></span><span class='mega-toggle-label-open'></span></button></div></div></div><ul id="mega-menu-primary" class="mega-menu max-mega-menu mega-menu-horizontal mega-no-js" data-event="hover_intent" data-effect="disabled" data-effect-speed="200" data-effect-mobile="disabled" data-effect-speed-mobile="0" data-mobile-force-width="body" data-second-click="go" data-document-click="collapse" data-vertical-behaviour="standard" data-breakpoint="0" data-unbind="true" data-mobile-state="collapse_all" data-mobile-direction="vertical"><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-home mega-menu-item-40" id="mega-menu-item-40"><a class="mega-menu-link" href="https://cowanroofing.com/">Home</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-current-menu-item mega-page_item mega-page-item-1878 mega-current_page_item mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-1904" id="mega-menu-item-1904"><a class="mega-menu-link" href="https://cowanroofing.com/roofing/" aria-expanded="false" aria-controls="mega-sub-menu-1904" aria-current="page">Services<span class="mega-indicator" aria-hidden="true"></span></a> 742<ul class="mega-sub-menu" id='mega-sub-menu-1904'> 743<li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-1909" id="mega-menu-item-1909"><a class="mega-menu-link" href="https://cowanroofing.com/roofing/replacement/">Roof Replacement</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-1908" id="mega-menu-item-1908"><a class="mega-menu-link" href="https://cowanroofing.com/roofing/repair/">Roof Repair</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-1907" id="mega-menu-item-1907"><a class="mega-menu-link" href="https://cowanroofing.com/roofing/specialty/">Specialty Roofing</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-1906" id="mega-menu-item-1906"><a class="mega-menu-link" href="https://cowanroofing.com/roofing/commercial/">Commercial Roofing</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-2558" id="mega-menu-item-2558"><a class="mega-menu-link" href="https://cowanroofing.com/roofing/gutter-installation/">Gutter Installation</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-1905" id="mega-menu-item-1905"><a class="mega-menu-link" href="https://cowanroofing.com/roofing/storm-damage/">Storm Damage</a></li></ul> 744</li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-1910" id="mega-menu-item-1910"><a class="mega-menu-link" href="https://cowanroofing.com/about/" aria-expanded="false" aria-controls="mega-sub-menu-1910">About<span class="mega-indicator" aria-hidden="true"></span></a> 745<ul class="mega-sub-menu" id='mega-sub-menu-1910'> 746<li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3086" id="mega-menu-item-3086"><a class="mega-menu-link" href="https://cowanroofing.com/about/financing/">Financing</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-1911" id="mega-menu-item-1911"><a class="mega-menu-link" href="https://cowanroofing.com/about/community-involvement/">Community Involvement</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-1924" id="mega-menu-item-1924"><a class="mega-menu-link" href="https://cowanroofing.com/about/testimonials/">Testimonials</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-2211" id="mega-menu-item-2211"><a class="mega-menu-link" href="https://cowanroofing.com/about/resources/">Resources</a></li></ul> 747</li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-2672" id="mega-menu-item-2672"><a class="mega-menu-link" href="https://cowanroofing.com/your-five-steps-to-new-roof-success/">What To Expect</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-1914" id="mega-menu-item-1914"><a class="mega-menu-link" href="https://cowanroofing.com/gallery/">Gallery</a></li><li class="mega-areas-inner mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-has-children mega-menu-megamenu mega-menu-grid mega-align-bottom-left mega-hide-on-mobile mega-menu-item-1913 areas-inner" id="mega-menu-item-1913"><a class="mega-menu-link" href="https://cowanroofing.com/areas-we-serve/" aria-expanded="false" aria-controls="mega-sub-menu-1913">Areas We Serve<span class="mega-indicator" aria-hidden="true"></span></a> 748<ul class="mega-sub-menu" role='presentation' id='mega-sub-menu-1913'> 749<li class="mega-menu-row" id="mega-menu-1913-0"> 750 <ul class="mega-sub-menu" style='--columns:8' role='presentation'> 751<li class="mega-menu-column mega-menu-columns-2-of-8" style="--columns:8; --span:2" id="mega-menu-1913-0-0"> 752 <ul class="mega-sub-menu"> 753<li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3592" id="mega-menu-item-3592"><a class="mega-menu-link" href="https://cowanroofing.com/barboursville/">Barboursville</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3591" id="mega-menu-item-3591"><a class="mega-menu-link" href="https://cowanroofing.com/crozet/">Crozet</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3595" id="mega-menu-item-3595"><a class="mega-menu-link" href="https://cowanroofing.com/charlottesville/">Charlottesville</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3603" id="mega-menu-item-3603"><a class="mega-menu-link" href="https://cowanroofing.com/culpeper/">Culpeper</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3590" id="mega-menu-item-3590"><a class="mega-menu-link" href="https://cowanroofing.com/etlan/">Etlan</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3589" id="mega-menu-item-3589"><a class="mega-menu-link" href="https://cowanroofing.com/free-union/">Free Union</a></li>
753 </ul> 754</li><li class="mega-menu-column mega-menu-columns-2-of-8" style="--columns:8; --span:2" id="mega-menu-1913-0-1"> 755 <ul class="mega-sub-menu"> 756<li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3632" id="mega-menu-item-3632"><a class="mega-menu-link" href="https://cowanroofing.com/greene-county/">Greene County</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3596" id="mega-menu-item-3596"><a class="mega-menu-link" href="https://cowanroofing.com/gordonsville/">Gordonsville</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3597" id="mega-menu-item-3597"><a class="mega-menu-link" href="https://cowanroofing.com/keswick/">Keswick</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3588" id="mega-menu-item-3588"><a class="mega-menu-link" href="https://cowanroofing.com/north-garden/">North Garden</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3582" id="mega-menu-item-3582"><a class="mega-menu-link" href="https://cowanroofing.com/orange-county/">Orange County</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3587" id="mega-menu-item-3587"><a class="mega-menu-link" href="https://cowanroofing.com/remington/">Remington</a></li> </ul> 757</li><li class="mega-menu-column mega-menu-columns-2-of-8" style="--columns:8; --span:2" id="mega-menu-1913-0-2"> 758 <ul class="mega-sub-menu"> 759<li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3586" id="mega-menu-item-3586"><a class="mega-menu-link" href="https://cowanroofing.com/rixeyville/">Rixeyville</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3594" id="mega-menu-item-3594"><a class="mega-menu-link" href="https://cowanroofing.com/ruckersville/">Ruckersville</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3593" id="mega-menu-item-3593"><a class="mega-menu-link" href="https://cowanroofing.com/sperryville/">Sperryville</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3585" id="mega-menu-item-3585"><a class="mega-menu-link" href="https://cowanroofing.com/stanardsville/">Stanardsville</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3584" id="mega-menu-item-3584"><a class="mega-menu-link" href="https://cowanroofing.com/unionville/">Unionville</a></li> </ul> 760</li><li class="mega-menu-column mega-menu-columns-2-of-8" style="--columns:8; --span:2" id="mega-menu-1913-0-3"> 761 <ul class="mega-sub-menu"> 762<li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3583" id="mega-menu-item-3583"><a class="mega-menu-link" href="https://cowanroofing.com/woodville/">Woodville</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-3795" id="mega-menu-item-3795"><a class="mega-menu-link" href="https://cowanroofing.com/areas-we-serve/">And More</a></li> </ul> 763</li> </ul> 764</li></ul> 765</li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-2809" id="mega-menu-item-2809"><a class="mega-menu-link" href="https://cowanroofing.com/recent-projects/">Recent Projects</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-3084" id="mega-menu-item-3084"><a class="mega-menu-link" href="https://cowanroofing.com/about/financing/">Financing</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-42" id="mega-menu-item-42"><a class="mega-menu-link" href="https://cowanroofing.com/contact/">Contact</a></li></ul></div></div></nav></div></header><div class="default-phone-mobile" style="text-align:center; margin-top:10px;"><a href="tel:5403085898" style="color:#01567e; font-weight:700; font-size:20px; text-decoration:none;"><span class="visible-phone" style="color:#01567e;">(540) 308-5898</span><noscript>(540) 308-5898</noscript>
765<script type="lazyJs" > 766 var phoneEl = document.querySelector(".visible-phone"); 767 if(phoneEl) phoneEl.textContent = "(540) 308-5898"; 768 </script>
768</a></div><div class="inner_page_banner image-banner lozad no-top-adas no-below-adas" data-src="https://cowanroofing.com/wp-content/uploads/2020/06/roofing-services-page-banner.jpg"><div class="wrap"><div class="container"><div class="inner-banner-info"><div class="banner-title">Roofing<div class="breadcrumb"><span class="bc-wrap"><span class="breadcrumb-link-wrap"><a href="https://cowanroofing.com/"><span class="home-icon relative"></span></a><meta ></span><span class="separator" aria-label="breadcrumb separator"> / </span>Roofing</span></div></div></div></div></div></div><div class="site-inner"><div class="content-sidebar-wrap"><main class="content" id="genesis-content"><article class="post-1878 page type-page status-publish entry" aria-label="Roofing"><header class="entry-header"></header><div class="entry-content"> 769<h1 class="wp-block-heading">Local Roof Replacement & Repair Specialists</h1> 770 771 772 773<p class="wp-block-paragraph">Even the highest quality roofing system installed by the most professional roofers will eventually need work. That’s because asphalt shingles, the most common roofing material, only last about 15 to 20 years before they need to be replaced.</p> 774 775 776<div class="wp-block-image"> 777<figure class="aligncenter size-full"><img decoding="async" width="970" height="728" src="https://cowanroofing.com/wp-content/uploads/2020/06/roof-installation-services.jpg" alt="Local Roof Replacement & Repair Specialists" class="wp-image-2043" srcset="https://cowanroofing.com/wp-content/uploads/2020/06/roof-installation-services.jpg 970w, https://cowanroofing.com/wp-content/uploads/2020/06/roof-installation-services-300x225.jpg 300w, https://cowanroofing.com/wp-content/uploads/2020/06/roof-installation-services-768x576.jpg 768w, https://cowanroofing.com/wp-content/uploads/2020/06/roof-installation-services-595xh.jpg 595w" sizes="(max-width: 970px) 100vw, 970px" /></figure> 778</div> 779 780 781<p class="wp-block-paragraph">If your roofing system has begun to show signs of wear and tear – leaks, excessive granules in the gutters, missing shingles, etc. – you need to entrust your system to experienced roofing contractors who can diagnose the issues and present you with the right solution – whether it’s a simple repair or a <a href="/roofing/replacement/">full-on roof replacement</a>.</p> 782 783 784 785<p class="wp-block-paragraph">At Cowan Roofing, we’ve made it our mission to offer our customers great products from the top brands in the country, backed up by skilled workmanship. We offer quality, professionalism and superior customer service, all under one roof.</p> 786 787 788 789<h2 class="wp-block-heading">How We Can Help You</h2> 790 791 792 793<p class="wp-block-paragraph">Cowan Roofing serves residential and commercial customers in and around Madison, VA. Our roofing services include all of the following</p> 794 795 796 797<ul class="col2"> 798<li><a href="/roofing/repair/">Roof repair</a></li> 799 800 801 802<li>Roof replacement</li> 803 804 805 806<li>Roof maintenance</li> 807 808 809 810<li>Roofing inspections</li> 811 812 813 814<li><a href="/roofing/storm-damage/">Storm damage restoration</a></li> 815</ul> 816 817 818 819<p class="wp-block-paragraph">Unscrupulous roofers will always try to push you towards the most expensive products and services, but Cowan Roofing is different. We want to find a solution that works well within your budgetary constraints, but also will withstand local weather conditions for the long term. Our roofing specialists will fully inspect your roofing system and provide you with individualized solutions while fully educating you on your options.
819</p> 820 821 822 823<h2 class="wp-block-heading">Schedule a Free Estimate Today</h2> 824 825 826 827<p class="wp-block-paragraph">We know that there are a lot of roofers offering similar services, but that doesn’t mean that you should sign on the dotted line with the first company you find. At Cowan Roofing, we believe in customer education so you can make an informed decision. Schedule a free estimate by calling <a href="tel:5403085898">(540) 308-5898</a> or you can fill out <a href="/contact/">our online form</a>.</p> 828</div></article></main><aside class="sidebar sidebar-primary widget-area" role="complementary" aria-label="Primary Sidebar" id="genesis-sidebar-primary"><h2 class="genesis-sidebar-title screen-reader-text">Primary Sidebar</h2><section id="text-2" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><div class="sidebar-form"> 829<div class="wpcf7 no-js" id="wpcf7-f405-o1" lang="en-US" dir="ltr" data-wpcf7-id="405"> 830<div class="screen-reader-response"><p role="status" aria-live="polite" aria-atomic="true"></p> <ul></ul></div> 831<form action="/roofing/#wpcf7-f405-o1" method="post" class="wpcf7-form init use-floating-validation-tip" aria-label="Contact form" novalidate="novalidate" data-status="init"> 832<fieldset class="hidden-fields-container"><input type="hidden" name="_wpcf7" value="405" /><input type="hidden" name="_wpcf7_version" value="6.1.7" /><input type="hidden" name="_wpcf7_locale" value="en_US" /><input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f405-o1" /><input type="hidden" name="_wpcf7_container_post" value="0" /><input type="hidden" name="_wpcf7_posted_data_hash" value="" /> 833</fieldset> 834<div class="form-title"> 835 <p>Request Estimate 836 </p> 837</div> 838<div class="field-container"> 839 <div class="row"> 840 <div> 841 <p><span class="wpcf7-form-control-wrap" data-name="f-name"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" placeholder="First Name*" value="" type="text" name="f-name" /></span><span class="wpcf7-form-control-wrap" data-name="l-name"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" placeholder="Last Name*" value="" type="text" name="l-name" /></span> 842 </p> 843 </div> 844<!-- <div><span class="wpcf7-form-control-wrap" data-name="l-name"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" placeholder="Last Name*" value="" type="text" name="l-name" /></span></div>--> 845 <div> 846 <p><span class="wpcf7-form-control-wrap" data-name="email"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email" aria-required="true" aria-invalid="false" placeholder="Email*" value="" type="email" name="email" /></span> 847 </p> 848 </div> 849 <div> 850 <p><span class="wpcf7-form-control-wrap" data-name="tel"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel" aria-required="true" aria-invalid="false" placeholder="Phone Number*" value="" type="tel" name="tel" /></span> 851 </p> 852 </div> 853 <div> 854 <p><span class="wpcf7-form-control-wrap" data-name="form-services"><select class="wpcf7-form-control wpcf7-select" aria-invalid="false" name="form-services"><option value="Interested in:">Interested in:</option><option value="Roof Replacement">Roof Replacement</option><option value="Roof Repair">Roof Repair</option><option value="Commercial Roofing">Commercial Roofing</option><option value="Other">Other</option></select></span> 855 </p> 856 </div> 857 <div> 858 <p><span class="wpcf7-form-control-wrap" data-name="message"><textarea cols="40" rows="10" maxlength="2000" class="wpcf7-form-control wpcf7-textarea" aria-invalid="false" placeholder="Message" name="message"></textarea></span> 859 </p> 860 </div> 861 <p class="recaptcha-note">This site is protected by Cloudflare Turnstile and the Google <a href="https://policies.google.com/privacy" target="_blank">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank">Terms of Service</a> apply. 862 </p> 863 <div class="submit-form"> 864 <p><div class="cf7-cf-turnstile" style="margin-top: 0px; margin-bottom: -15px;"> <div id="cf-turnstile-cf7-2018247070" class="cf-turnstile" data-sitekey="0x4AAAAAAASU9yIdylS09CpW" data-theme="light" data-language="auto" data-size="" data-retry="auto" data-retry-interval="1000" data-refresh-expired="auto" data-refresh-timeout="auto" data-action="contact-form-7" data-callback="turnstileCF7Callback" data-appearance="always"></div> <br class="cf-turnstile-br cf-turnstile-br-cf7-2018247070"> </div><br/><input class="wpcf7-form-control wpcf7-submit has-spinner" type="submit" value="Submit" /> 865 </p> 866 </div> 867 </div> 868</div><div class="wpcf7-response-output" aria-hidden="true"></div> 869</form> 870</div> 871</div> 872</div> 873 </div></section> 874<section id="text-6" class="sidebar-testimonial no-click widget widget_text"><div class="sidebar-testimonial no-click widget-wrap"><div class="sidebar-widget-title">Testimonials</div> <div class="textwidget"><div class="sidebar-testimonials"><div class="tt-listing"><div class="tt-content"><!-- wp:paragraph {"dateUpdated":1743033586358} --> 875<p>We saw that they had recently replaced our neighbor's roof and decided to give them a call for an additional quote (Never get just one) and Cowan really impressed us. Their Roofing estimate was done casually without pressure, but what impressed </div><div class="tt-author">- Sean Kayton</div></div><div class="tt-listing"><div class="tt-content"><!-- wp:paragraph {"dateUpdated":1743033548861}
875 --> 876<p><br>The team at Cowan Roofing has been wonderful to work with from the initial estimate to the finished work. The office was very responsive to my questions and kept me in the loop as to all the details pertaining to the work as well as any nece</div><div class="tt-author">- Travis Hale</div></div><div class="tt-listing"><div class="tt-content"><!-- wp:paragraph {"dateUpdated":1743033677238} --> 877<p>I am very pleased with the job Cowan did replacing my roof, from the initial phone call with friendly response, to the exceptional workmanship. I would highly recommend them to anyone needing a roof replacement.<br></p> 878<!-- /wp:paragraph --></div><div class="tt-author">- Shawn Hunt</div></div><div class="tt-listing"><div class="tt-content"><!-- wp:paragraph {"dateUpdated":1743033407553} --> 879<p>Cowan replaced the old metal roof on my 200-year old home, and I would give them 6 stars if I could! Detailed, quality work, fair price, on-time (actually finished ahead of time), communicative throughout, great clean-up job, friendly, and also </div><div class="tt-author">- B.P</div></div><div class="tt-listing"><div class="tt-content"><!-- wp:paragraph --> 880<p>Our experience with Cowan Roofing was phenominal. They were professional, knowledgeable, prompt, trustworthy, and great communicators. Every person with whom I spoke was curtious and helpful.<br><br>Oh---the roof and gutters look spectacular!</p> 881<!-- /wp:paragraph --></div><div class="tt-author">- Lydia Hansen</div></div></div> 882<div class="testimonial-more"><a href="/about/testimonials/">Read More</a></div> 883</div> 884 </div></section> 885</aside></div></div><div class="full-width home-section"><div class="home_number"><div class="wrap"><div class="container"><div class="cn-title">Projects Completed</div><div class="cn-description">Cowan Roofing was founded in 2014 and has been steadily growing over the years because of our dedication to our customers and our willingness to always exceed their expectations. We provide unparalleled customer service, workmanship and customer education to homeowners and business owners.</div><div class="counter-section"><div class="wrap"><div class="container"><div class="counter-cont col-three-three"><div class="container"><div id="odometer" class="counter-count odometer" data-count="3628">1</div><span id="counter-symbol1">+</span><div class="counter-title">Completed projects</div></div></div><div class="counter-cont col-three-three"><div class="container"><div id="odometer" class="counter-count odometer" data-count="306746">1</div><span id="counter-symbol2">+</span><div class="counter-title">Man hours dedicated to customer satisfaction </div></div></div><div class="counter-cont col-three-three"><div class="container"><div id="odometer" class="counter-count odometer" data-count="205">1</div><span id="counter-symbol3">+</span><div class="counter-title">Years combined experience</div></div></div></div></div></div></div></div></div></div><footer class="site-footer-image"><div class="wrap"><div class="container"><div class="main-section footer-section col-four"><div class="footer-section"><div class="footer-logo"><a href="https://cowanroofing.com"><img class="lozad" data-src="https://cowanroofing.com/wp-content/uploads/2025/09/Untitled-100-x-90-px-200-x-90-px-1.png" alt="Cowan Roofing" title="Untitled (100 x 90 px) (200 x 90 px) (1)"></a></div></div><div class="footer-section"><div class="footer-section-title"></div><ul><li id="site-title"><strong></strong></li><li>357 Washington Street<br /> 886Madison, VA 22727</li><li><a href="tel:5403085898">(540) 308-5898</a></li><li>Monday-Friday 8:30 AM - 4:30 PM</li></ul></div><div class="footer-section"><p><p>Class A License #2705169358</p> 887</p></div><div class="footer-section"><div class="footer-section-title">Follow Us</div><div class="social-media"><ul class="social-media"><li class="sprite-facebook-icon"><a class="social" href="https://www.facebook.com/CowanRoofing/" title="Facebook" alt="Facebook" target="_blank"><i class="sprite sprite-facebook-icon" aria-hidden="true"></i></a></li><li class="sprite-houzz-icon"><a class="social" href="https://www.houzz.com/pro/cowanroof/cowan-roofing" title="Houzz" alt="Houzz" target="_blank"><i class="sprite sprite-houzz-icon" aria-hidden="true"></i></a></li><li class="sprite-yelp-icon"><a class="social" href="https://www.yelp.com/biz/cowan-roofing-madison" title="Yelp" alt="Yelp" target="_blank"><i class="sprite sprite-yelp-icon" aria-hidden="true"></i></a></li><li class="sprite-instagram-icon"><a class="social" href="https://www.instagram.com/cowanroofing/" title="Instagram" alt="Instagram" target="_blank"><i class="sprite sprite-instagram-icon" aria-hidden="true"></i></a></li></ul></div></div></div><div class="main-section footer-section col-four"><div class="footer-section"><div class="footer-section-title">Serving Madison County & Beyond</div><div class="footer-menu"><div class="menu-serving-these-areas-surrounding-communities-container"><ul id="menu-serving-these-areas-surrounding-communities" class="menu"><li id="menu-item-3051" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3051"><a href="https://cowanroofing.com/sperryville/">Sperryville, VA</a></li>
888<li id="menu-item-3052" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3052"><a href="https://cowanroofing.com/ruckersville/">Ruckersville, VA</a></li> 889<li id="menu-item-3053" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3053"><a href="https://cowanroofing.com/keswick/">Keswick, VA</a></li> 890<li id="menu-item-3054" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3054"><a href="https://cowanroofing.com/gordonsville/">Gordonsville, VA</a></li> 891<li id="menu-item-3055" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3055"><a href="https://cowanroofing.com/charlottesville/">Charlottesville, VA</a></li> 892<li id="menu-item-3061" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3061"><a href="https://cowanroofing.com/culpeper/">Culpeper, VA</a></li> 893</ul></div></div></div></div><div class="main-section footer-section col-four"><div class="footer-section"><div class="footer-section-title">Quick Links</div><div class="footer-menu"><div class="menu-quick-links-container"><ul id="menu-quick-links" class="menu"><li id="menu-item-123" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-123"><a href="https://cowanroofing.com/">Home</a></li> 894<li id="menu-item-2010" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2010"><a href="https://cowanroofing.com/about/">About</a></li> 895<li id="menu-item-3085" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3085"><a href="https://cowanroofing.com/about/financing/">Financing</a></li> 896<li id="menu-item-2011" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1878 current_page_item menu-item-2011"><a href="https://cowanroofing.com/roofing/" aria-current="page">Roofing</a></li> 897<li id="menu-item-2673" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2673"><a href="https://cowanroofing.com/your-five-steps-to-new-roof-success/">What To Expect</a></li> 898<li id="menu-item-2009" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2009"><a href="https://cowanroofing.com/gallery/">Gallery</a></li> 899<li id="menu-item-3049" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3049"><a href="https://cowanroofing.com/areas-we-serve/">Areas We Serve</a></li> 900</ul></div></div></div></div><div class="main-section footer-section col-four"><div class="footer-section"><div class="footer-section-title">Services</div><div class="footer-menu"><div class="menu-our-services-container"><ul id="menu-our-services" class="menu"><li id="menu-item-2016" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2016"><a href="https://cowanroofing.com/roofing/replacement/">Roof Replacement</a></li> 901<li id="menu-item-2015" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2015"><a href="https://cowanroofing.com/roofing/repair/">Roof Repair</a></li> 902<li id="menu-item-2014" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2014"><a href="https://cowanroofing.com/roofing/specialty/">Specialty Roofing</a></li> 903<li id="menu-item-2013" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2013"><a href="https://cowanroofing.com/roofing/commercial/">Commercial Roofing</a></li> 904<li id="menu-item-2593" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2593"><a href="https://cowanroofing.com/roofing/gutter-installation/">Gutter Installation</a></li> 905<li id="menu-item-2012" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2012"><a href="https://cowanroofing.com/roofing/storm-damage/">Storm Damage</a></li> 906</ul></div></div></div></div></div></div></footer><div class="copy-right"><div class="wrap"><div class="container">Copyright ©2026 Cowan Roofing All Rights Reserved. <a href="/sitemap/">Sitemap</a> | <a href="/privacy-policy/">Privacy Policy</a></div></div></div><div class="popup-form"><div class="site-form"><div class="form-fields"><a title="Close" class="close">X</a> 907<div class="wpcf7 no-js" id="wpcf7-f405-o2" lang="en-US" dir="ltr" data-wpcf7-id="405"> 908<div class="screen-reader-response">
908<p role="status" aria-live="polite" aria-atomic="true"></p> <ul></ul></div> 909<form action="/roofing/#wpcf7-f405-o2" method="post" class="wpcf7-form init use-floating-validation-tip" aria-label="Contact form" novalidate="novalidate" data-status="init"> 910<fieldset class="hidden-fields-container"><input type="hidden" name="_wpcf7" value="405" /><input type="hidden" name="_wpcf7_version" value="6.1.7" /><input type="hidden" name="_wpcf7_locale" value="en_US" /><input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f405-o2" /><input type="hidden" name="_wpcf7_container_post" value="0" /><input type="hidden" name="_wpcf7_posted_data_hash" value="" /> 911</fieldset> 912<div class="form-title"> 913 <p>Request Estimate 914 </p> 915</div> 916<div class="field-container"> 917 <div class="row"> 918 <div> 919 <p><span class="wpcf7-form-control-wrap" data-name="f-name"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" placeholder="First Name*" value="" type="text" name="f-name" /></span><span class="wpcf7-form-control-wrap" data-name="l-name"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" placeholder="Last Name*" value="" type="text" name="l-name" /></span> 920 </p> 921 </div> 922<!-- <div><span class="wpcf7-form-control-wrap" data-name="l-name"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" placeholder="Last Name*" value="" type="text" name="l-name" /></span></div>--> 923 <div> 924 <p><span class="wpcf7-form-control-wrap" data-name="email"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email" aria-required="true" aria-invalid="false" placeholder="Email*" value="" type="email" name="email" /></span> 925 </p> 926 </div> 927 <div> 928 <p><span class="wpcf7-form-control-wrap" data-name="tel"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel" aria-required="true" aria-invalid="false" placeholder="Phone Number*" value="" type="tel" name="tel" /></span> 929 </p> 930 </div> 931 <div> 932 <p><span class="wpcf7-form-control-wrap" data-name="form-services"><select class="wpcf7-form-control wpcf7-select" aria-invalid="false" name="form-services"><option value="Interested in:">Interested in:</option><option value="Roof Replacement">Roof Replacement</option><option value="Roof Repair">Roof Repair</option><option value="Commercial Roofing">Commercial Roofing</option><option value="Other">Other</option></select></span> 933 </p> 934 </div> 935 <div> 936 <p><span class="wpcf7-form-control-wrap" data-name="message"><textarea cols="40" rows="10" maxlength="2000" class="wpcf7-form-control wpcf7-textarea" aria-invalid="false" placeholder="Message" name="message"></textarea></span> 937 </p> 938 </div> 939 <p class="recaptcha-note">This site is protected by Cloudflare Turnstile and the Google <a href="https://policies.google.com/privacy" target="_blank">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank">Terms of Service</a> apply. 940 </p> 941 <div class="submit-form"> 942 <p><div class="cf7-cf-turnstile" style="margin-top: 0px; margin-bottom: -15px;"> <div id="cf-turnstile-cf7-1585545157" class="cf-turnstile" data-sitekey="0x4AAAAAAASU9yIdylS09CpW" data-theme="light" data-language="auto" data-size="" data-retry="auto" data-retry-interval="1000" data-refresh-expired="auto" data-refresh-timeout="auto" data-action="contact-form-7" data-callback="turnstileCF7Callback" data-appearance="always"></div> <br class="cf-turnstile-br cf-turnstile-br-cf7-1585545157"> </div><br/><input class="wpcf7-form-control wpcf7-submit has-spinner" type="submit" value="Submit" /> 943 </p> 944 </div> 945 </div> 946</div><div class="wpcf7-response-output" aria-hidden="true"></div> 947</form> 948</div> 949</div></div></div><div class="move-to-top"><div class="to-top">Top</div></div><!-- SLMC Lead Script -->
949<script type="lazyJs" >var pAuth="";</script>
949<div class="cta-footer"><div class="container"><div class="footer-cta-btn"><a class="popup-form-btn">Request Estimate</a></div></div></div></div>
949<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/google-reviews-business/static/js/wpac-time.js" id="wpac_time_js-js" type="lazyJs"></script>
vendor: 1 bytes, line 949
949
950<script type="lazyJs" id="addtoany-core-js-before" > 951window.a2a_config=window.a2a_config||{};a2a_config.callbacks=[];a2a_config.overlays=[];a2a_config.templates={}; 952 953//# sourceURL=addtoany-core-js-before 954</script>
vendor: 1 bytes, line 954
954
955<script src="https://static.addtoany.com/menu/page.js" id="addtoany-core-js" defer="defer" type="lazyJs"></script>
vendor: 1 bytes, line 955
955
956<script src="https://cowanroofing.com/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js" type="lazyJs"></script>
vendor: 1 bytes, line 956
956
957<script src="https://cowanroofing.com/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js" type="lazyJs"></script>
vendor: 1 bytes, line 957
957
958<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/add-to-any/addtoany.min.js" id="addtoany-jquery-js" defer="defer" type="lazyJs"></script>
vendor: 1 bytes, line 958
958
959<script src="https://cowanroofing.com/wp-includes/js/dist/hooks.min.js" id="wp-hooks-js" type="lazyJs"></script>
vendor: 1 bytes, line 959
959
960<script src="https://cowanroofing.com/wp-includes/js/dist/i18n.min.js" id="wp-i18n-js" type="lazyJs"></script>
vendor: 1 bytes, line 960
960
961<script type="lazyJs" id="wp-i18n-js-after" > 962wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 963//# sourceURL=wp-i18n-js-after 964</script>
vendor: 1 bytes, line 964
964
965<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/contact-form-7/includes/swv/js/index.js" id="swv-js" type="lazyJs"></script>
vendor: 1 bytes, line 965
965
966<script type="lazyJs" id="contact-form-7-js-before" > 967var wpcf7 = { 968 "api": { 969 "root": "https:\/\/cowanroofing.com\/wp-json\/", 970 "namespace": "contact-form-7\/v1" 971 }, 972 "cached": 1 973}; 974//# sourceURL=contact-form-7-js-before 975</script>
vendor: 1 bytes, line 975
975
976<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/contact-form-7/includes/js/index.js" id="contact-form-7-js" type="lazyJs"></script>
vendor: 1 bytes, line 976
976
977<script type="lazyJs" id="pojo-a11y-js-extra" > 978var PojoA11yOptions = {"focusable":"","remove_link_target":"","add_role_links":"1","enable_save":"1","save_expiration":"12"}; 979//# sourceURL=pojo-a11y-js-extra 980</script>
vendor: 1 bytes, line 980
980
981<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/pojo-accessibility/modules/legacy/assets/js/app.min.js" id="pojo-a11y-js" type="lazyJs"></script>
vendor: 1 bytes, line 981
981
982<script src="https://cowanroofing.com/wp-includes/js/hoverIntent.min.js" id="hoverIntent-js" type="lazyJs"></script>
vendor: 1 bytes, line 982
982
983<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/themes/genesis/lib/js/menu/superfish.min.js" id="superfish-js" type="lazyJs"></script>
vendor: 1 bytes, line 983
983
984<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/themes/genesis/lib/js/menu/superfish.args.min.js" id="superfish-args-js" type="lazyJs"></script>
vendor: 1 bytes, line 984
984
985<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/themes/genesis/lib/js/skip-links.min.js" id="skip-links-js" type="lazyJs"></script>
vendor: 1 bytes, line 985
985
986<script type="lazyJs" id="smb-base-responsive-menu-js-extra" > 987var genesis_responsive_menu = {"mainMenu":"","menuIconClass":"dashicons-before dashicons-menu","subMenu":"","subMenuIconClass":"dashicons-before dashicons-arrow-down-alt2","menuClasses":{"combine":[".nav-primary"],"others":[]}}; 988//# sourceURL=smb-base-responsive-menu-js-extra 989</script>
vendor: 1 bytes, line 989
989
990<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/themes/cowanroofing/js/responsive-menus.min.js" id="smb-base-responsive-menu-js" type="lazyJs"></script>
vendor: 1 bytes, line 990
990
991<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/themes/cowanroofing/js/jquery.matchHeight.min.js" id="smb-base-match-height-js" type="lazyJs"></script>
vendor: 1 bytes, line 991
991
992<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/themes/cowanroofing/js/slick.min.js" id="slick-js-js" type="lazyJs"></script>
vendor: 1 bytes, line 992
992
993<script type="lazyJs" id="dynamik-js-js-extra" > 994var ajax_object = {"ajax_url":"https://cowanroofing.com/wp-admin/admin-ajax.php"}; 995//# sourceURL=dynamik-js-js-extra 996</script>
vendor: 1 bytes, line 996
996
997<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/themes/cowanroofing/js/dynamik-js.js" id="dynamik-js-js" type="lazyJs"></script>
vendor: 1 bytes, line 997
997
998<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/themes/cowanroofing/js/custom-js.js" id="custom-js-js" type="lazyJs"></script>
vendor: 1 bytes, line 998
998
999<script src="//cdn.jsdelivr.net/npm/[email protected]/lazyload.js" id="lazyload-js-js" type="lazyJs"></script>
vendor: 1 bytes, line 999
999
1000<script src="//unpkg.com/[email protected]/dist/aos.js" id="aos-js-js" type="lazyJs"></script>
vendor: 1 bytes, line 1000
1000
1001<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/themes/cowanroofing/js/odometer.js" id="odometer-js-js" type="lazyJs"></script>
vendor: 1 bytes, line 1001
1001
1002<script src="https://cowanroofing.com/wp-content/themes/genesis/js/locations.js" id="cowanroofing-locations-js" type="lazyJs"></script>
vendor: 1 bytes, line 1002
1002
1003<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/easy-fancybox/vendor/purify.min.js" id="fancybox-purify-js" type="lazyJs"></script>
vendor: 1 bytes, line 1003
1003
1004<script type="lazyJs" id="jquery-fancybox-js-extra" > 1005var efb_i18n = {"close":"Close","next":"Next","prev":"Previous","startSlideshow":"Start slideshow","toggleSize":"Toggle size"}; 1006//# sourceURL=jquery-fancybox-js-extra 1007</script>
vendor: 1 bytes, line 1007
1007
1008<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/easy-fancybox/fancybox/1.5.4/jquery.fancybox.min.js" id="jquery-fancybox-js" type="lazyJs"></script>
vendor: 1 bytes, line 1008
1008
1009<script type="lazyJs" id="jquery-fancybox-js-after" > 1010var fb_timeout, fb_opts={'autoScale':true,'showCloseButton':true,'margin':20,'pixelRatio':'false','centerOnScroll':true,'enableEscapeButton':true,'overlayShow':true,'hideOnOverlayClick':true,'minVpHeight':320,'disableCoreLightbox':'true','enableBlockControls':'true','fancybox_openBlockControls':'true' }; 1011if(typeof easy_fancybox_handler==='undefined'){ 1012var easy_fancybox_handler=function(){ 1013jQuery([".nolightbox","a.wp-block-file__button","a.pin-it-button","a[href*='pinterest.com\/pin\/create']","a[href*='facebook.com\/share']","a[href*='twitter.com\/share']"].join(',')).addClass('nofancybox'); 1014jQuery('a.fancybox-close').on('click',function(e){e.preventDefault();jQuery.fancybox.close()}); 1015/* IMG */ 1016 var unlinkedImageBlocks=jQuery(".wp-block-image > img:not(.nofancybox,figure.nofancybox>img)"); 1017 unlinkedImageBlocks.wrap(function() { 1018 var href = jQuery( this ).attr( "src" ); 1019 return "<a href='" + href + "'></a>"; 1020 }); 1021var fb_IMG_select=jQuery('a[href*=".jpg" i]:not(.nofancybox,li.nofancybox>a,figure.nofancybox>a),area[href*=".jpg" i]:not(.nofancybox),a[href*=".jpeg" i]:not(.nofancybox,li.nofancybox>a,figure.nofancybox>a),area[href*=".jpeg" i]:not(.nofancybox),a[href*=".png" i]:not(.nofancybox,li.nofancybox>a,figure.nofancybox>a),area[href*=".png" i]:not(.nofancybox),a[href*=".webp" i]:not(.nofancybox,li.nofancybox>a,figure.nofancybox>a),area[href*=".webp" i]:not(.nofancybox)'); 1022fb_IMG_select.addClass('fancybox image'); 1023jQuery('a.fancybox,area.fancybox,.fancybox>a').each(function(){jQuery(this).fancybox(jQuery.extend(true,{},fb_opts,{'transition':'elastic','transitionIn':'elastic','easingIn':'easeOutBack','transitionOut':'elastic','easingOut':'easeInBack','opacity':false,'hideOnContentClick':false,'titleShow':true,'titlePosition':'over','titleFromAlt':true,'showNavArrows':true,'enableKeyboardNav':true,'cyclic':false,'mouseWheel':'true'}))}); 1024};}; 1025jQuery(easy_fancybox_handler);jQuery(document).on('post-load',easy_fancybox_handler); 1026 1027//# sourceURL=jquery-fancybox-js-after 1028</script>
vendor: 1 bytes, line 1028
1028
1029<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/easy-fancybox/vendor/jquery.easing.min.js" id="jquery-easing-js" type="lazyJs"></script>
vendor: 1 bytes, line 1029
1029
1030<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/easy-fancybox/vendor/jquery.mousewheel.min.js" id="jquery-mousewheel-js" type="lazyJs"></script>
vendor: 1 bytes, line 1030
1030
1031<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/plugins/megamenu/js/maxmegamenu.min.js" id="megamenu-js" type="lazyJs"></script>
vendor: 1 bytes, line 1031
1031
1032<script type="lazyJs" data-cfasync="false" id="cfturnstile-js-before" > 1033(function(w,d){var q=w.cfturnstileQueue=w.cfturnstileQueue||[];if(w.cfturnstileRender)return;var ready=false,hooked=false,ticks=0,timer=null;var cbs=["callback","error-callback","expired-callback","timeout-callback","unsupported-callback","before-interactive-callback","after-interactive-callback"];function opts(e){var p={};for(var i=0;i<cbs.length;i++){(function(n){var v=e.getAttribute("data-"+n);if(!v)return;p[n]=function(){var f=w[v];if(typeof f==="function")return f.apply(w,arguments);};})(cbs[i]);}return p;}w.cfturnstileOpts=function(e){if(typeof e==="string")e=d.querySelector(e);return e&&e.getAttribute?opts(e):{};};function one(id){var n="cf-turnstile"+id,e=d.getElementById(n);if(e&&e.cfturnstileQueued){e=null;var l=d.querySelectorAll(".cf-turnstile");for(var i=0;i<l.length;i++){if(l[i].id===n&&!l[i].cfturnstileQueued){e=l[i];break;}}}if(!e)return false;if(!e.firstElementChild){try{w.turnstile.render(e,opts(e));}catch(_){return false;}}e.cfturnstileQueued=1;return true;}function drain(){if(!ready)return;for(var i=q.length-1;i>=0;i--){if(one(q[i]))q.splice(i,1);}if(q.length&&!hooked&&d.readyState==="loading"){hooked=true;d.addEventListener("DOMContentLoaded",function(){hooked=false;drain();});}}function watch(){timer=null;if(!q.length)return;if(!ready&&w.turnstile&&typeof w.turnstile.render==="function")ready=true;drain();if(q.length&&++ticks<170)timer=setTimeout(watch,ticks<20?100:2000);}w.cfturnstileRender=function(){drain();if(q.length&&!timer)timer=setTimeout(watch,100);};w.cfturnstileOnload=function(){ready=true;w.cfturnstileRender();};w.cfturnstileRender();})(window,document); 1034(function(w,d){if(w.cfturnstileRefresh)return;w.cfturnstileRefresh=1;var F="input[name=cf-turnstile-response]",S="form.checkout, form.woocommerce-checkout, form.wc-block-checkout__form",u=false;function go(){u=true;}w.addEventListener("pagehide",go);w.addEventListener("beforeunload",go);d.addEventListener("submit",function(e){var f=e.target,s=[];if(!f||!f.querySelectorAll)return;try{if(S&&f.matches&&f.matches(S))return;}catch(_){}f.querySelectorAll(".cf-turnstile").forEach(function(el){var i=el.querySelector(F);if(i&&i.value)s.push([el,i.value]);});if(!s.length)return;setTimeout(function(){if(u||!w.turnstile||d.querySelector("#wfls-prompt-overlay,#wfls-token,#fls_2fa_form,.fls_2fs"))return;s.forEach(function(x){var i=x[0].querySelector(F);if(i&&i.value===x[1]){try{w.turnstile.reset(x[0]);}catch(_){}}});},2000);},true);})(window,document); 1035//# sourceURL=cfturnstile-js-before 1036</script>
vendor: 1 bytes, line 1036
1036
1037<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload=cfturnstileOnload" data-wp-strategy="defer" id="cfturnstile-js" type="lazyJs"></script>
vendor: 1 bytes, line 1037
1037
1038<script type="lazyJs" data-cfasync="false" id="cfturnstile-js-after" > 1039function turnstileCF7Callback() { 1040 document.querySelectorAll('.wpcf7-submit').forEach(function(el) { 1041 el.style.pointerEvents = 'auto'; 1042 el.style.opacity = '1'; 1043 }); 1044 } 1045function turnstileCF7Callback() { 1046 document.querySelectorAll('.wpcf7-submit').forEach(function(el) { 1047 el.style.pointerEvents = 'auto'; 1048 el.style.opacity = '1'; 1049 }); 1050 } 1051//# sourceURL=cfturnstile-js-after 1052</script>
vendor: 1 bytes, line 1052
1052
1053<script type="lazyJs" data-cfasync="false" id="cfturnstile-render-js-after" > 1054(window.cfturnstileQueue=window.cfturnstileQueue||[]).push("-cf7-2018247070");if(window.cfturnstileRender)window.cfturnstileRender(); 1055(window.cfturnstileQueue=window.cfturnstileQueue||[]).push("-cf7-1585545157");if(window.cfturnstileRender)window.cfturnstileRender(); 1056//# sourceURL=cfturnstile-render-js-after 1057</script>
vendor: 1 bytes, line 1057
1057
1058<script type="speculationrules"> 1059{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/cowanroofing/*","/wp-content/themes/genesis/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 1060</script>
vendor: 1 bytes, line 1060
1060
1061<script src="https://connect.podium.com/widget.js#API_TOKEN=f5994103-ff87-454f-88b4-0f21ff4dda76" defer="defer" id="podium-widget" data-api-token="f5994103-ff87-454f-88b4-0f21ff4dda76" type="lazyJs"></script>
vendor: 2 bytes, line 1061
1061
1062<script src="https://libs.sfs.io/public/lead-script-sf-wdoc-cf7.js?v=08.17.20" type="lazyJs"></script>
vendor: 2 bytes, line 1062
1062
1063<script src="https://knowledgetags.yextpages.net/embed?key=esCnRf8m9v5y1gRjNiiYtnJuddzZU7FzhjxKGQgE0NImCqZcRtHN5F60A2PDO_Gd&account_id=sp5126_4adHK&entity_id=5126_4adHK&locale=en" async="" type="lazyJs"></script>
vendor: 2 bytes, line 1063
1063
1064<script type="lazyJs" > 1065jQuery(document).ready(function(){ 1066 document.addEventListener( 'wpcf7mailsent', function( event ) { 1067 if ( '405' == event.detail.contactFormId ) { 1068 location.replace('/request-estimate-thank-you/'); 1069 } 1070 if ( '493' == event.detail.contactFormId ) { 1071 location.replace('/contact-us-thank-you/'); 1072 }}, false ); 1073}); 1074</script>
1074 1075 1076 1077
1078<script type="lazyJs" > 1079(function(cookieName, domain){ 1080 1081 var traffic_source_COOKIE_TOKEN_SEPARATOR = ">>"; //separating between concatenated lead source 1082 var traffic_source_date_SEPARATOR = "|>"; 1083 var NONE = "(website)"; 1084 1085 domain = domain || window.location.hostname; 1086 1087 function getCookie(cookieName){ 1088 var name = cookieName + "="; 1089 var cookieArray = document.cookie.split(';'); //break cookie into array 1090 for(var i = 0; i < cookieArray.length; i++){ 1091 var cookie = cookieArray[i].replace(/^\s+|\s+$/g, ''); //replace all space with '' = delete it 1092 if (cookie.indexOf(name)==0){ 1093 return cookie.substring(name.length,cookie.length); // 1094 } 1095 } 1096 return null; 1097 } 1098 1099/* 1100* Takes the current time of the session, and optional addition to the traffic source. 1101* The output will be of the format: >>{traffic source}|>DD-MM-YY HH:MM AM/PM>> 1102* 1103*/ 1104 1105/* 1106* Uncomment currTime() in order to activate. You should also uncomment the lines in the code that call this function (all marked with a comment). If you do so, uncomment the line above them which does not employ currTime() 1107 1108 1109 function currTime() { 1110 var date = new Date(); 1111 var currDate = date.getDate(); 1112 var hours = date.getHours(); 1113 var minutes = date.getMinutes(); 1114 var month = date.getMonth() + 1; 1115 var year = date.getFullYear(); 1116 var ampm = hours >= 12 ? 'pm' : 'am'; 1117 hours = hours % 12; 1118 hours = hours ? hours : 12; // the hour '0' makes '12' 1119 minutes = minutes < 10 ? '0' + minutes : minutes; 1120 var strTime = traffic_source_date_SEPARATOR + currDate + '-' + month + '-' + year + ' ' + hours + ':' + minutes + ' ' + ampm + ')'; 1121 return strTime; 1122 } 1123 1124*/ 1125 1126 /* 1127 Checks whether a certain parameter exist in the current browser URL. If it does, it returns its name. 1128 It will receive "src" later in the main function 1129 */ 1130 1131 function getURLParameter(param){ 1132 var pageURL = window.location.search.substring(1); //get the query string parameters without the "?" 1133 var URLVariables = pageURL.split('&'); //break the parameters and values attached together to an array 1134 for (var i = 0; i < URLVariables.length; i++) { 1135 var parameterName = URLVariables[i].split('='); //break the parameters from the values 1136 if (parameterName[0] == param) { 1137 return parameterName[1]; 1138 } 1139 } 1140 return null; 1141 } 1142 1143 /* 1144 Gets the first (latest) token from a cookie: THIS__ONE>>NOT__THIS__ONE>>AND__NOT__THIS__ONE 1145 */ 1146 1147 function getFirstTokenFromCookie(cookie){ 1148 var result = ""; 1149 var firstSeparatorIndex = cookie.indexOf(traffic_source_COOKIE_TOKEN_SEPARATOR); 1150 result = firstSeparatorIndex !== -1 ? cookie.substring(0, firstSeparatorIndex) : cookie; //if there is a separator, provide the newest value no the cookie 1151 return result; 1152 } 1153 1154 /* 1155 Set the cookie if it doesn't exist. 1156 */ 1157 1158 function setCookie(cookie, value){ 1159 var expires = new Date(); 1160 expires.setTime(expires.getTime() + 62208000000); //1000*60*60*24*30*24 (2 years) 1161 document.cookie = cookie + "=" + value + "; expires=" + expires.toGMTString() + "; domain=" + domain + "; path=/"; 1162 } 1163 1164 /* 1165 Boolean, whether or not it's not NULL or Empty 1166 */ 1167 1168 function isNotNullOrEmpty(string){ 1169 return string !== null && string !== ""; 1170 } 1171 1172 /* 1173 Remove the protocol for the referral token 1174 */ 1175 function removeProtocol(href) { 1176 return href.replace(/.*?:\/\//g, ""); 1177 } 1178 1179 /* 1180 Find lead source by checking cookie, url param "src" or referrer(that order) and set new cookie traffic_source. 1181 Do this only if cookie do not exist. This value will be used for contact form. 1182 If cookie exist add url "src" param on the beginning of the cookie if it exists and it is not already at the beginning of the cookie. 1183 This way "tokens" are made in traffic_source cookie. Token separator is ">>" (see above traffic_source_COOKIE_TOKEN_SEPARATOR) 1184 */ 1185 1186 var urlParamSRC = getURLParameter("src"); //take the SRC value 1187 if(document.cookie.indexOf(cookieName) === -1) { // if there is no cookie traffic_source set yet, check if there is an existing UTMZ campaign name. 1188 var traffic_source = ""; //reset lead source value 1189 var utmzCookie = getCookie("__utmz"); //get GA cookie 1190 var cookieCampaignName = ""; //reset lead source value 1191 if(utmzCookie != null) {
1192 var UTMSRC = "utmccn="; 1193 var start = utmzCookie.indexOf(UTMSRC); 1194 var end = utmzCookie.indexOf("|", start); 1195 if(start > -1) { 1196 if(end === -1) { 1197 end = utmzCookie.length; 1198 } 1199 cookieCampaignName = "utmz:" + utmzCookie.substring((start + UTMSRC.length), end); //get the value of the UTMZ, without the parameter name 1200 } 1201 } 1202 if(cookieCampaignName != "" && isNotNullOrEmpty(urlParamSRC)){ //if there is a campaign name AND there is SRC value 1203 traffic_source = urlParamSRC + traffic_source_COOKIE_TOKEN_SEPARATOR + cookieCampaignName; //concateane the SRC with the existing campaign name 1204 // traffic_source = urlParamSRC + currTime() + traffic_source_COOKIE_TOKEN_SEPARATOR + cookieCampaignName; // Optional: add the session time 1205 } else if(cookieCampaignName != ""){ //if there is campaign name 1206 traffic_source = cookieCampaignName; //just use it for the new cookie 1207 } else if(urlParamSRC != null) { //if there is not campaign name but we have SRC 1208 traffic_source = decodeURI(urlParamSRC); // decode URI of the SRC parameter 1209 // traffic_source = decodeURI(urlParamSRC) + currTime(); // Optional: add the session time 1210 } else if(document.referrer != ""){ //if there is not campaign, and no src, check if there is a referrer, 1211 var referrerHostName = removeProtocol(document.referrer); 1212 var GOOGLE = /www.google/; 1213 var YAHOO = /search.yahoo/; 1214 var BING = /www.bing/; 1215 if(GOOGLE.test(referrerHostName)){ 1216 traffic_source = "Google Search"; 1217 //traffic_source = "Google Search" + currTime(); // + Optional: Add the current session time. Choose one of them. 1218 } else if(YAHOO.test(referrerHostName)){ 1219 traffic_source = "Yahoo Search"; 1220 //traffic_source = "Yahoo Search" + currTime(); 1221 } else if(BING.test(referrerHostName)){ 1222 traffic_source = "Bing Search"; 1223 //traffic_source = "Bing Search" + currTime(); 1224 } else { 1225 traffic_source = referrerHostName; 1226 //traffic_source = referrerHostName + currTime(); 1227 } 1228 } else { 1229 traffic_source = NONE; 1230 } 1231 setCookie(cookieName, traffic_source); //set the cookie 1232 1233 } else if(isNotNullOrEmpty(urlParamSRC)){ //if there is a cookie, add the SRC to the cookie, unless the same src already exists as the first token. 1234 var firstToken = getFirstTokenFromCookie(getCookie(cookieName)); 1235 if(firstToken !== "" && urlParamSRC !== firstToken) { 1236 var newTrafficSourceCookie = urlParamSRC + traffic_source_COOKIE_TOKEN_SEPARATOR + getCookie(cookieName); //concetenate new SRC with old cookie values 1237 // var newTrafficSourceCookie = urlParamSRC + currTime() + traffic_source_COOKIE_TOKEN_SEPARATOR + getCookie(cookieName); // Optional: add the time of current session 1238 setCookie(cookieName, newTrafficSourceCookie); 1239 } 1240 } 1241 1242 })("traffic_source", ".sfs-baseline-wpvenus.com"); 1243 1244 function getCookie(name) { //Gets the value of traffic_source 1245 var value = "; " + document.cookie; 1246 var parts = value.split("; " + name + "="); 1247 if (parts.length == 2) return parts.pop().split(";").shift(); 1248 } 1249 1250 function addTrafficSourceToForm(){ //injects the traffic_source value to the form 1251 1252 jQuery("input[name='lead_source']").each(function() { 1253 this.value = getCookie("traffic_source"); 1254 console.log("Executing"); 1255 }); 1256 1257 } 1258 1259 addTrafficSourceToForm() //initates the process 1260</script>
1260 1261
1262<script type="lazyJs" > 1263(function(cookieName, domain){ 1264 1265 var traffic_source_COOKIE_TOKEN_SEPARATOR = ">>"; //separating between concatenated lead source 1266 var traffic_source_date_SEPARATOR = "|>"; 1267 var NONE = "(website)"; 1268 1269 domain = domain || window.location.hostname; 1270 1271 function getCookie(cookieName){ 1272 var name = cookieName + "="; 1273 var cookieArray = document.cookie.split(';'); //break cookie into array 1274 for(var i = 0; i < cookieArray.length; i++){ 1275 var cookie = cookieArray[i].replace(/^\s+|\s+$/g, ''); //replace all space with '' = delete it 1276 if (cookie.indexOf(name)==0){ 1277 return cookie.substring(name.length,cookie.length); // 1278 } 1279 } 1280 return null; 1281 } 1282 1283/* 1284* Takes the current time of the session, and optional addition to the traffic source. 1285* The output will be of the format: >>{traffic source}|>DD-MM-YY HH:MM AM/PM>> 1286* 1287*/ 1288 1289/* 1290* Uncomment currTime() in order to activate. You should also uncomment the lines in the code that call this function (all marked with a comment). If you do so, uncomment the line above them which does not employ currTime() 1291 1292 1293 function currTime() { 1294 var date = new Date(); 1295 var currDate = date.getDate(); 1296 var hours = date.getHours(); 1297 var minutes = date.getMinutes(); 1298 var month = date.getMonth() + 1; 1299 var year = date.getFullYear(); 1300 var ampm = hours >= 12 ? 'pm' : 'am'; 1301 hours = hours % 12; 1302 hours = hours ? hours : 12; // the hour '0' makes '12' 1303 minutes = minutes < 10 ? '0' + minutes : minutes; 1304 var strTime = traffic_source_date_SEPARATOR + currDate + '-' + month + '-' + year + ' ' + hours + ':' + minutes + ' ' + ampm + ')'; 1305 return strTime; 1306 } 1307 1308*/ 1309 1310 /* 1311 Checks whether a certain parameter exist in the current browser URL. If it does, it returns its name. 1312 It will receive "src" later in the main function 1313 */ 1314 1315 function getURLParameter(param){ 1316 var pageURL = window.location.search.substring(1); //get the query string parameters without the "?" 1317 var URLVariables = pageURL.split('&'); //break the parameters and values attached together to an array 1318 for (var i = 0; i < URLVariables.length; i++) { 1319 var parameterName = URLVariables[i].split('='); //break the parameters from the values 1320 if (parameterName[0] == param) { 1321 return parameterName[1]; 1322 } 1323 } 1324 return null; 1325 } 1326 1327 /* 1328 Gets the first (latest) token from a cookie: THIS__ONE>>NOT__THIS__ONE>>AND__NOT__THIS__ONE 1329 */ 1330 1331 function getFirstTokenFromCookie(cookie){ 1332 var result = ""; 1333 var firstSeparatorIndex = cookie.indexOf(traffic_source_COOKIE_TOKEN_SEPARATOR); 1334 result = firstSeparatorIndex !== -1 ? cookie.substring(0, firstSeparatorIndex) : cookie; //if there is a separator, provide the newest value no the cookie 1335 return result; 1336 } 1337 1338 /* 1339 Set the cookie if it doesn't exist. 1340 */ 1341 1342 function setCookie(cookie, value){ 1343 var expires = new Date(); 1344 expires.setTime(expires.getTime() + 62208000000); //1000*60*60*24*30*24 (2 years) 1345 document.cookie = cookie + "=" + value + "; expires=" + expires.toGMTString() + "; domain=" + domain + "; path=/"; 1346 } 1347 1348 /* 1349 Boolean, whether or not it's not NULL or Empty 1350 */ 1351 1352 function isNotNullOrEmpty(string){ 1353 return string !== null && string !== ""; 1354 } 1355 1356 /* 1357 Remove the protocol for the referral token 1358 */ 1359 function removeProtocol(href) { 1360 return href.replace(/.*?:\/\//g, ""); 1361 } 1362 1363 /* 1364 Find lead source by checking cookie, url param "src" or referrer(that order) and set new cookie traffic_source. 1365 Do this only if cookie do not exist. This value will be used for contact form. 1366 If cookie exist add url "src" param on the beginning of the cookie if it exists and it is not already at the beginning of the cookie. 1367 This way "tokens" are made in traffic_source cookie. Token separator is ">>" (see above traffic_source_COOKIE_TOKEN_SEPARATOR) 1368 */ 1369 1370 var urlParamSRC = getURLParameter("src"); //take the SRC value 1371 if(document.cookie.indexOf(cookieName) === -1) { // if there is no cookie traffic_source set yet, check if there is an existing UTMZ campaign name. 1372 var traffic_source = ""; //reset lead source value 1373 var utmzCookie = getCookie("__utmz"); //get GA cookie 1374 var cookieCampaignName = ""; //reset lead source value 1375 if(utmzCookie != null) {
1376 var UTMSRC = "utmccn="; 1377 var start = utmzCookie.indexOf(UTMSRC); 1378 var end = utmzCookie.indexOf("|", start); 1379 if(start > -1) { 1380 if(end === -1) { 1381 end = utmzCookie.length; 1382 } 1383 cookieCampaignName = "utmz:" + utmzCookie.substring((start + UTMSRC.length), end); //get the value of the UTMZ, without the parameter name 1384 } 1385 } 1386 if(cookieCampaignName != "" && isNotNullOrEmpty(urlParamSRC)){ //if there is a campaign name AND there is SRC value 1387 traffic_source = urlParamSRC + traffic_source_COOKIE_TOKEN_SEPARATOR + cookieCampaignName; //concateane the SRC with the existing campaign name 1388 // traffic_source = urlParamSRC + currTime() + traffic_source_COOKIE_TOKEN_SEPARATOR + cookieCampaignName; // Optional: add the session time 1389 } else if(cookieCampaignName != ""){ //if there is campaign name 1390 traffic_source = cookieCampaignName; //just use it for the new cookie 1391 } else if(urlParamSRC != null) { //if there is not campaign name but we have SRC 1392 traffic_source = decodeURI(urlParamSRC); // decode URI of the SRC parameter 1393 // traffic_source = decodeURI(urlParamSRC) + currTime(); // Optional: add the session time 1394 } else if(document.referrer != ""){ //if there is not campaign, and no src, check if there is a referrer, 1395 var referrerHostName = removeProtocol(document.referrer); 1396 var GOOGLE = /www.google/; 1397 var YAHOO = /search.yahoo/; 1398 var BING = /www.bing/; 1399 if(GOOGLE.test(referrerHostName)){ 1400 traffic_source = "Google Search"; 1401 //traffic_source = "Google Search" + currTime(); // + Optional: Add the current session time. Choose one of them. 1402 } else if(YAHOO.test(referrerHostName)){ 1403 traffic_source = "Yahoo Search"; 1404 //traffic_source = "Yahoo Search" + currTime(); 1405 } else if(BING.test(referrerHostName)){ 1406 traffic_source = "Bing Search"; 1407 //traffic_source = "Bing Search" + currTime(); 1408 } else { 1409 traffic_source = referrerHostName; 1410 //traffic_source = referrerHostName + currTime(); 1411 } 1412 } else { 1413 traffic_source = NONE; 1414 } 1415 setCookie(cookieName, traffic_source); //set the cookie 1416 1417 } else if(isNotNullOrEmpty(urlParamSRC)){ //if there is a cookie, add the SRC to the cookie, unless the same src already exists as the first token. 1418 var firstToken = getFirstTokenFromCookie(getCookie(cookieName)); 1419 if(firstToken !== "" && urlParamSRC !== firstToken) { 1420 var newTrafficSourceCookie = urlParamSRC + traffic_source_COOKIE_TOKEN_SEPARATOR + getCookie(cookieName); //concetenate new SRC with old cookie values 1421 // var newTrafficSourceCookie = urlParamSRC + currTime() + traffic_source_COOKIE_TOKEN_SEPARATOR + getCookie(cookieName); // Optional: add the time of current session 1422 setCookie(cookieName, newTrafficSourceCookie); 1423 } 1424 } 1425 1426 })("traffic_source", ".cowanroofing.com"); 1427 1428 function getCookie(name) { //Gets the value of traffic_source 1429 var value = "; " + document.cookie; 1430 var parts = value.split("; " + name + "="); 1431 if (parts.length == 2) return parts.pop().split(";").shift(); 1432 } 1433 1434 function addTrafficSourceToForm(){ //injects the traffic_source value to the form 1435 1436 jQuery("input[name='lead_source']").each(function() { 1437 this.value = getCookie("traffic_source"); 1438 console.log("Executing"); 1439 }); 1440 1441 } 1442 1443 addTrafficSourceToForm() //initates the process 1444</script>
1444<script id="wp-emoji-settings" type="application/json"> 1445{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://cowanroofing.com/wp-includes/js/wp-emoji-release.min.js"}} 1446</script>
vendor: 1 bytes, line 1446
1446
1447<script type="lazyJs" data-w3-type="module" > 1448/*! This file is auto-generated */ 1449var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 1450//# sourceURL=https://cowanroofing.com/wp-includes/js/wp-emoji-loader.min.js 1451</script>
1451 1452 <a id="pojo-a11y-skip-content" class="pojo-skip-link pojo-skip-content" tabindex="1" accesskey="s" href="#content">Skip to content</a> 1453 <nav id="pojo-a11y-toolbar" class="pojo-a11y-toolbar-right pojo-a11y-" aria-label="Accessibility Toolbar"> 1454 <div class="pojo-a11y-toolbar-toggle"> 1455 <a class="pojo-a11y-toolbar-link pojo-a11y-toolbar-toggle-link" href="javascript:void(0);" title="Accessibility Tools" role="button"> 1456 <span class="pojo-sr-only sr-only">Open toolbar</span> 1457 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="currentColor" width="1em"> 1458 <title>Accessibility Tools</title> 1459 <path d="M50 .8c5.7 0 10.4 4.7 10.4 10.4S55.7 21.6 50 21.6s-10.4-4.7-10.4-10.4S44.3.8 50 .8zM92.2 32l-21.9 2.3c-2.6.3-4.6 2.5-4.6 5.2V94c0 2.9-2.3 5.2-5.2 5.2H60c-2.7 0-4.9-2.1-5.2-4.7l-2.2-24.7c-.1-1.5-1.4-2.5-2.8-2.4-1.3.1-2.2 1.1-2.4 2.4l-2.2 24.7c-.2 2.7-2.5 4.7-5.2 4.7h-.5c-2.9 0-5.2-2.3-5.2-5.2V39.4c0-2.7-2-4.9-4.6-5.2L7.8 32c-2.6-.3-4.6-2.5-4.6-5.2v-.5c0-2.6 2.1-4.7 4.7-4.7h.5c19.3 1.8 33.2 2.8 41.7 2.8s22.4-.9 41.7-2.8c2.6-.2 4.9 1.6 5.2 4.3v1c-.1 2.6-2.1 4.8-4.8 5.1z"/> </svg> 1460 </a> 1461 </div> 1462 <div class="pojo-a11y-toolbar-overlay"> 1463 <div class="pojo-a11y-toolbar-inner"> 1464 <p class="pojo-a11y-toolbar-title">Accessibility Tools</p> 1465 1466 <ul class="pojo-a11y-toolbar-items pojo-a11y-tools"> 1467 <li class="pojo-a11y-toolbar-item"> 1468 <a href="#" class="pojo-a11y-toolbar-link pojo-a11y-btn-resize-font pojo-a11y-btn-resize-plus" data-action="resize-plus" data-action-group="resize" tabindex="-1" role="button"> 1469 <span class="pojo-a11y-toolbar-icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><title>Increase Text</title><path fill="currentColor" d="M256 200v16c0 4.25-3.75 8-8 8h-56v56c0 4.25-3.75 8-8 8h-16c-4.25 0-8-3.75-8-8v-56h-56c-4.25 0-8-3.75-8-8v-16c0-4.25 3.75-8 8-8h56v-56c0-4.25 3.75-8 8-8h16c4.25 0 8 3.75 8 8v56h56c4.25 0 8 3.75 8 8zM288 208c0-61.75-50.25-112-112-112s-112 50.25-112 112 50.25 112 112 112 112-50.25 112-112zM416 416c0 17.75-14.25 32-32 32-8.5 0-16.75-3.5-22.5-9.5l-85.75-85.5c-29.25 20.25-64.25 31-99.75 31-97.25 0-176-78.75-176-176s78.75-176 176-176 176 78.75 176 176c0 35.5-10.75 70.5-31 99.75l85.75 85.75c5.75 5.75 9.25 14 9.25 22.5z"></path></svg></span><span class="pojo-a11y-toolbar-text">Increase Text</span> </a> 1470 </li> 1471 1472 <li class="pojo-a11y-toolbar-item"> 1473 <a href="#" class="pojo-a11y-toolbar-link pojo-a11y-btn-resize-font pojo-a11y-btn-resize-minus" data-action="resize-minus" data-action-group="resize" tabindex="-1" role="button"> 1474 <span class="pojo-a11y-toolbar-icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><title>Decrease Text</title><path fill="currentColor" d="M256 200v16c0 4.25-3.75 8-8 8h-144c-4.25 0-8-3.75-8-8v-16c0-4.25 3.75-8 8-8h144c4.25 0 8 3.75 8 8zM288 208c0-61.75-50.25-112-112-112s-112 50.25-112 112 50.25 112 112 112 112-50.25 112-112zM416 416c0 17.75-14.25 32-32 32-8.5 0-16.75-3.5-22.5-9.5l-85.75-85.5c-29.25 20.25-64.25 31-99.75 31-97.25 0-176-78.75-176-176s78.75-176 176-176 176 78.75 176 176c0 35.5-10.75 70.5-31 99.75l85.75 85.75c5.75 5.75 9.25 14 9.25 22.5z"></path></svg></span><span class="pojo-a11y-toolbar-text">Decrease Text</span> </a> 1475 </li> 1476 1477 <li class="pojo-a11y-toolbar-item"> 1478 <a href="#" class="pojo-a11y-toolbar-link pojo-a11y-btn-background-group pojo-a11y-btn-grayscale" data-action="grayscale" data-action-group="schema" tabindex="-1" role="button"> 1479 <span class="pojo-a11y-toolbar-icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><title>Grayscale</title><path fill="currentColor" d="M15.75 384h-15.75v-352h15.75v352zM31.5 383.75h-8v-351.75h8v351.75zM55 383.75h-7.75v-351.75h7.75v351.75zM94.25 383.75h-7.75v-351.75h7.75v351.75zM133.5 383.75h-15.5v-351.75h15.5v351.75zM165 383.75h-7.75v-351.75h7.75v351.75zM180.75 383.75h-7.75v-351.75h7.75v351.75zM196.5 383.75h-7.75v-351.75h7.75v351.75zM235.75 383.75h-15.75v-351.75h15.75v351.75zM275 383.75h-15.75v-351.75h15.75v351.75zM306.5 383.75h-15.75v-351.75h15.75v351.75zM338 383.75h-15.75v-351.75h15.75v351.75zM361.5 383.75h-15.75v-351.75h15.75v351.75zM408.75 383.75h-23.5v-351.75h23.5v351.75zM424.5 383.75h-8v-351.75h8v351.75zM448 384h-15.75v-352h15.75v352z"></path></svg></span><span class="pojo-a11y-toolbar-text">Grayscale</span> </a> 1480 </li> 1481 1482 <li class="pojo-a11y-toolbar-item"> 1483 <a href="#" class="pojo-a11y-toolbar-link pojo-a11y-btn-background-group pojo-a11y-btn-high-contrast" data-action="high-contrast" data-action-group="schema" tabindex="-1" role="button"> 1484 <span class="pojo-a11y-toolbar-icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><title>High Contrast</title>
1484<path fill="currentColor" d="M192 360v-272c-75 0-136 61-136 136s61 136 136 136zM384 224c0 106-86 192-192 192s-192-86-192-192 86-192 192-192 192 86 192 192z"></path></svg></span><span class="pojo-a11y-toolbar-text">High Contrast</span> </a> 1485 </li> 1486 1487 <li class="pojo-a11y-toolbar-item"> 1488 <a href="#" class="pojo-a11y-toolbar-link pojo-a11y-btn-background-group pojo-a11y-btn-negative-contrast" data-action="negative-contrast" data-action-group="schema" tabindex="-1" role="button"> 1489 1490 <span class="pojo-a11y-toolbar-icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><title>Negative Contrast</title><path fill="currentColor" d="M416 240c-23.75-36.75-56.25-68.25-95.25-88.25 10 17 15.25 36.5 15.25 56.25 0 61.75-50.25 112-112 112s-112-50.25-112-112c0-19.75 5.25-39.25 15.25-56.25-39 20-71.5 51.5-95.25 88.25 42.75 66 111.75 112 192 112s149.25-46 192-112zM236 144c0-6.5-5.5-12-12-12-41.75 0-76 34.25-76 76 0 6.5 5.5 12 12 12s12-5.5 12-12c0-28.5 23.5-52 52-52 6.5 0 12-5.5 12-12zM448 240c0 6.25-2 12-5 17.25-46 75.75-130.25 126.75-219 126.75s-173-51.25-219-126.75c-3-5.25-5-11-5-17.25s2-12 5-17.25c46-75.5 130.25-126.75 219-126.75s173 51.25 219 126.75c3 5.25 5 11 5 17.25z"></path></svg></span><span class="pojo-a11y-toolbar-text">Negative Contrast</span> </a> 1491 </li> 1492 1493 <li class="pojo-a11y-toolbar-item"> 1494 <a href="#" class="pojo-a11y-toolbar-link pojo-a11y-btn-background-group pojo-a11y-btn-light-background" data-action="light-background" data-action-group="schema" tabindex="-1" role="button"> 1495 <span class="pojo-a11y-toolbar-icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><title>Light Background</title><path fill="currentColor" d="M184 144c0 4.25-3.75 8-8 8s-8-3.75-8-8c0-17.25-26.75-24-40-24-4.25 0-8-3.75-8-8s3.75-8 8-8c23.25 0 56 12.25 56 40zM224 144c0-50-50.75-80-96-80s-96 30-96 80c0 16 6.5 32.75 17 45 4.75 5.5 10.25 10.75 15.25 16.5 17.75 21.25 32.75 46.25 35.25 74.5h57c2.5-28.25 17.5-53.25 35.25-74.5 5-5.75 10.5-11 15.25-16.5 10.5-12.25 17-29 17-45zM256 144c0 25.75-8.5 48-25.75 67s-40 45.75-42 72.5c7.25 4.25 11.75 12.25 11.75 20.5 0 6-2.25 11.75-6.25 16 4 4.25 6.25 10 6.25 16 0 8.25-4.25 15.75-11.25 20.25 2 3.5 3.25 7.75 3.25 11.75 0 16.25-12.75 24-27.25 24-6.5 14.5-21 24-36.75 24s-30.25-9.5-36.75-24c-14.5 0-27.25-7.75-27.25-24 0-4 1.25-8.25 3.25-11.75-7-4.5-11.25-12-11.25-20.25 0-6 2.25-11.75 6.25-16-4-4.25-6.25-10-6.25-16 0-8.25 4.5-16.25 11.75-20.5-2-26.75-24.75-53.5-42-72.5s-25.75-41.25-25.75-67c0-68 64.75-112 128-112s128 44 128 112z"></path></svg></span><span class="pojo-a11y-toolbar-text">Light Background</span> </a> 1496 </li> 1497 1498 <li class="pojo-a11y-toolbar-item"> 1499 <a href="#" class="pojo-a11y-toolbar-link pojo-a11y-btn-links-underline" data-action="links-underline" data-action-group="toggle" tabindex="-1" role="button"> 1500 <span class="pojo-a11y-toolbar-icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><title>Links Underline</title><path fill="currentColor" d="M364 304c0-6.5-2.5-12.5-7-17l-52-52c-4.5-4.5-10.75-7-17-7-7.25 0-13 2.75-18 8 8.25 8.25 18 15.25 18 28 0 13.25-10.75 24-24 24-12.75 0-19.75-9.75-28-18-5.25 5-8.25 10.75-8.25 18.25 0 6.25 2.5 12.5 7 17l51.5 51.75c4.5 4.5 10.75 6.75 17 6.75s12.5-2.25 17-6.5l36.75-36.5c4.5-4.5 7-10.5 7-16.75zM188.25 127.75c0-6.25-2.5-12.5-7-17l-51.5-51.75c-4.5-4.5-10.75-7-17-7s-12.5 2.5-17 6.75l-36.75 36.5c-4.5 4.5-7 10.5-7 16.75 0 6.5 2.5 12.5 7 17l52 52c4.5 4.5 10.75 6.75 17 6.75 7.25 0 13-2.5 18-7.75-8.25-8.25-18-15.25-18-28 0-13.25 10.75-24 24-24 12.75 0 19.75 9.75 28 18 5.25-5 8.25-10.75 8.25-18.25zM412 304c0 19-7.75 37.5-21.25 50.75l-36.75 36.5c-13.5 13.5-31.75 20.75-50.75 20.75-19.25 0-37.5-7.5-51-21.25l-51.5-51.75c-13.5-13.5-20.75-31.75-20.75-50.75 0-19.75 8-38.5 22-52.25l-22-22c-13.75 14-32.25 22-52 22-19 0-37.5-7.5-51-21l-52-52c-13.75-13.75-21-31.75-21-51 0-19 7.75-37.5 21.25-50.75l36.75-36.5c13.5-13.5 31.75-20.75 50.75-20.75 19.25 0 37.5 7.5 51 21.25l51.5 51.75c13.5 13.5 20.75 31.75 20.75 50.75 0 19.75-8 38.5-22 52.25l22 22c13.7
15005-14 32.25-22 52-22 19 0 37.5 7.5 51 21l52 52c13.75 13.75 21 31.75 21 51z"></path></svg></span><span class="pojo-a11y-toolbar-text">Links Underline</span> </a> 1501 </li> 1502 1503 <li class="pojo-a11y-toolbar-item"> 1504 <a href="#" class="pojo-a11y-toolbar-link pojo-a11y-btn-readable-font" data-action="readable-font" data-action-group="toggle" tabindex="-1" role="button"> 1505 <span class="pojo-a11y-toolbar-icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><title>Readable Font</title><path fill="currentColor" d="M181.25 139.75l-42.5 112.5c24.75 0.25 49.5 1 74.25 1 4.75 0 9.5-0.25 14.25-0.5-13-38-28.25-76.75-46-113zM0 416l0.5-19.75c23.5-7.25 49-2.25 59.5-29.25l59.25-154 70-181h32c1 1.75 2 3.5 2.75 5.25l51.25 120c18.75 44.25 36 89 55 133 11.25 26 20 52.75 32.5 78.25 1.75 4 5.25 11.5 8.75 14.25 8.25 6.5 31.25 8 43 12.5 0.75 4.75 1.5 9.5 1.5 14.25 0 2.25-0.25 4.25-0.25 6.5-31.75 0-63.5-4-95.25-4-32.75 0-65.5 2.75-98.25 3.75 0-6.5 0.25-13 1-19.5l32.75-7c6.75-1.5 20-3.25 20-12.5 0-9-32.25-83.25-36.25-93.5l-112.5-0.5c-6.5 14.5-31.75 80-31.75 89.5 0 19.25 36.75 20 51 22 0.25 4.75 0.25 9.5 0.25 14.5 0 2.25-0.25 4.5-0.5 6.75-29 0-58.25-5-87.25-5-3.5 0-8.5 1.5-12 2-15.75 2.75-31.25 3.5-47 3.5z"></path></svg></span><span class="pojo-a11y-toolbar-text">Readable Font</span> </a> 1506 </li> 1507 <li class="pojo-a11y-toolbar-item"> 1508 <a href="#" class="pojo-a11y-toolbar-link pojo-a11y-btn-reset" data-action="reset" tabindex="-1" role="button"> 1509 <span class="pojo-a11y-toolbar-icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1em" viewBox="0 0 448 448"><title>Reset</title><path fill="currentColor" d="M384 224c0 105.75-86.25 192-192 192-57.25 0-111.25-25.25-147.75-69.25-2.5-3.25-2.25-8 0.5-10.75l34.25-34.5c1.75-1.5 4-2.25 6.25-2.25 2.25 0.25 4.5 1.25 5.75 3 24.5 31.75 61.25 49.75 101 49.75 70.5 0 128-57.5 128-128s-57.5-128-128-128c-32.75 0-63.75 12.5-87 34.25l34.25 34.5c4.75 4.5 6 11.5 3.5 17.25-2.5 6-8.25 10-14.75 10h-112c-8.75 0-16-7.25-16-16v-112c0-6.5 4-12.25 10-14.75 5.75-2.5 12.75-1.25 17.25 3.5l32.5 32.25c35.25-33.25 83-53 132.25-53 105.75 0 192 86.25 192 192z"></path></svg></span> 1510 <span class="pojo-a11y-toolbar-text">Reset</span> 1511 </a> 1512 </li> 1513 </ul> 1514 </div> 1515 </div> 1516 </nav> 1517
1517<script src="https://cowanroofing.com/wp-content/cache/w3-cache/js/558/wp-content/cache/w3-cache/js/custom_js_after_load.js" type="lazyJs"></script>
1517<script>if (window.innerWidth > 768) { 1518 var stretchedSections = document.querySelectorAll('.elementor-section-stretched'); 1519 var header = document.querySelector('.elementor-location-header'); 1520 1521 if (stretchedSections.length > 0 && header) { 1522 var w = stretchedSections[0].offsetWidth; 1523 var f = header.offsetWidth; 1524 var l = (f - w) / 2; 1525 1526 stretchedSections.forEach(section => { 1527 section.style.left = '-' + l + "px"; 1528 section.style.width = f + "px"; 1529 }); 1530 } 1531}</script>
1531<script>!function(){"use strict";let t=new class t{constructor(){this.lazyLoader=new class t{constructor(){this.observers=new Map,this.rootMargin=this.calculateRootMargin(),this.initObservers()}calculateRootMargin(){let t=window.w3LazyloadByPx||200;return`0px 0px ${t}px 0px`}initObservers(){["video","iframe","bgImg","img"].forEach(t=>{this.observers.set(t,new IntersectionObserver((e,a)=>this.handleIntersection(e,a,t),{rootMargin:this.rootMargin,threshold:.01,root:null}))}),this.initMutationObserver()}initMutationObserver(){this.mutationObserver=new MutationObserver(t=>{t.forEach(t=>{if("childList"===t.type&&t.addedNodes.forEach(t=>{if(t.nodeType===Node.ELEMENT_NODE){this.checkAndObserveElement(t);let e=t.querySelectorAll("*");e.forEach(t=>this.checkAndObserveElement(t))}}),"attributes"===t.type){let e=t.target;e.nodeType===Node.ELEMENT_NODE&&this.checkAndObserveElement(e)}})}),this.mutationObserver.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-class","data-BgLz","data-src","data-srcset"]})}checkAndObserveElement(t){return("1"===t.getAttribute("data-BgLz")&&this.observers.get("bgImg").observe(t),("VIDEO"===t.tagName||"AUDIO"===t.tagName)&&"LazyLoad"===t.getAttribute("data-class"))?this.observers.get("video").observe(t):"IFRAME"===t.tagName&&"LazyLoad"===t.getAttribute("data-class")?this.observers.get("iframe").observe(t):"IMG"===t.tagName&&"LazyLoad"===t.getAttribute("data-class")?this.observers.get("img").observe(t):void 0}handleIntersection(t,e,a){t.forEach(t=>{t.isIntersecting&&(e.unobserve(t.target),requestAnimationFrame(()=>{this.loadResource(t.target,a)}))})}loadResource(t,e){switch(e){case"img":this.loadImg(t);break;case"video":this.loadVideo(t);break;case"iframe":this.loadIframe(t);break;case"bgImg":this.loadBackgroundImage(t)}}loadVideo(t){let e=t.querySelectorAll("source");e.length>0?(e.forEach(t=>{(!t.src||-1!=t.src.indexOf("blank.mp4"))&&(t.dataset.src&&(t.src=t.dataset.src,t.removeAttribute("data-src")),t.dataset.srcset&&(t.srcset=t.dataset.srcset,t.removeAttribute("data-srcset")))}),t.src&&-1!=t.src.indexOf("blank.mp4")&&(t.src=e[0].src),t.load()):t.dataset.src&&(t.src=t.dataset.src,t.removeAttribute("data-src"),t.load()),t.removeAttribute("data-class"),t.dataset.poster&&(t.poster=t.dataset.poster,t.removeAttribute("data-poster")),t.hasAttribute("autoplay")&&t.play().catch(t=>console.warn("Autoplay failed:",t))}loadImg(t){let e=t.dataset.src||t.src;e&&(t.src=e,t.setAttribute("fetchpriority","high"),t.removeAttribute("data-src")),t.removeAttribute("data-class"),t.dataset.srcset&&(t.srcset=t.dataset.srcset,t.removeAttribute("data-srcset"))}loadIframe(t){let e=t.dataset.src||t.src,a=t.getAttribute("data-onload");a&&(t.setAttribute("onload",a),t.removeAttribute("data-onload")),e&&(t.src=e,t.removeAttribute("data-src")),t.removeAttribute("data-class")}loadBackgroundImage(t){t.removeAttribute("data-BgLz")}},this.initialized=!1}init(){if(this.initialized)return;setTimeout(()=>this.startLazyLoading(),10);let t=setInterval(()=>{-1!=window.w3Html.class.indexOf("jsload")&&(clearInterval(t),this.startLazyLoadingVideos())},500);this.initialized=!0}w3CallFunc(t,e,a){if(-1==window.w3Html.class.indexOf("jsload"))return setTimeout(()=>this.w3CallFunc(t,e,a),1e3);let s=0;!function r(){var i=new XMLHttpRequest;i.open("GET",t,!0),i.onreadystatechange=function(){4===i.readyState&&200!==i.status&&s<e&&(s++,setTimeout(r,a))},i.send()}()}startLazyLoadingVideos(){setTimeout(()=>{this.loadVideos(),this.loadIframes()},100),w3Call&&w3CallUrl&&this.w3CallFunc(w3CallUrl,2,3e4)}startLazyLoading(){setTimeout(()=>{this.loadImgs(),this.loadBackgrounds()},100)}loadImgs(){let t=document.querySelectorAll("img[data-class='LazyLoad']");this.observeElements(t,"img")}loadVideos(){let t=document.querySelectorAll("video[data-class='LazyLoad'], audio[data-class='LazyLoad']");this.observeElements(t,"video")}loadIframes(){let t=document.querySelectorAll("iframe[data-class='LazyLoad']");this.observeElements(t,"iframe")}loadBackgrounds(){let t=document.querySelectorAll('iframe[data-BgLz="1"], div[data-BgLz="1"], section[data-BgLz="1"]');this.observeElements(t,"bgImg")}observeElements(t,e){let a=this.lazyLoader.observers.get(e);a&&t.forEach(t=>{a.unobserve(t),a.observe(t)})}};t.init()}();</script>
1531</body></html> 1532<!-- 1533 generated 258 seconds ago 1534 generated in 1.071 seconds 1535 served from batcache in 0.003 seconds 1536 expires in 42 seconds 1537-->
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.