Help
RSS
API
Feed
Maltego
Contact
Domain > roofingwoodbridgeva.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2015-03-01
173.237.136.98
(
ClassC
)
2026-02-28
104.21.27.4
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Sat, 28 Feb 2026 02:29:58 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareLast-Modified: Fri, 27 Feb 2026 22:25:50 GMTNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}vary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sQmoh7rY01R7OeLhVBH4rB6XD2tAz4oDceU56NJSr4NMY6ZFnkPH9acbvVeKNcpJKiIJRq4Ch2YsIIr3ZiQ6ZVnJRHADmVkW081QuqMHyvf2Oqs7SOVdc}}cf-cache-status: DYNAMICCF-RAY: 9d4c7f4dacd36e09-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langen>head>script> if (window.location.pathname!/) window.location/;/script> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>Premium Roofing - Professional Installation & Replacement Services/title> meta namedescription contentProfessional roofing installation and replacement services for residential properties. Quality workmanship, durable materials, and expert contractors.> link relcanonical hrefhttps://roofingwoodbridgeva.com> meta propertyog:title contentPremium Roofing - Professional Installation & Replacement> meta propertyog:description contentProfessional roofing services specializing in new installations and complete roof replacements for residential properties.> meta propertyog:type contentwebsite> meta nametwitter:card contentsummary_large_image> meta nametwitter:title contentPremium Roofing Services> meta nametwitter:description contentQuality roofing installation and replacement for your home>style>a,hr{color:inherit}progress,sub,sup{vertical-align:baseline}blockquote,body,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,menu,ol,p,pre,ul{margin:0}.p-0,dialog,fieldset,legend,menu,ol,ul{padding:0}.dark,:root{--accent:25 95% 53%;--accent-foreground:0 0% 100%;--sidebar-ring:217.2 91.2% 59.8%}.inset-0,.inset-x-0{left:0;right:0}.inset-0,.inset-y-0{top:0;bottom:0}.border-collapse,table{border-collapse:collapse}.from-hero,.from-hero\/95{--tw-gradient-to:hsl(215 28% 17% / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.transition,.transition-\left\,right\,width\,.transition-\margin\,opa\,.transition-\width\,height\,padding\,.transition-\width\,.transition-all,.transition-colors,.transition-opacity,.transition-transform{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in-out,.transition,.transition-\left\,right\,width\,.transition-\margin\,opa\,.transition-\width\,height\,padding\,.transition-\width\,.transition-all,.transition-colors,.transition-opacity,.transition-transform{transition-timing-function:cubic-bezier(.4,0,.2,1)}.sr-only,.whitespace-nowrap{white-space:nowrap}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;box-sizing:border-box;border:0 solid #e5e7eb}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.-translate-x-1\/2,.after\:-translate-x-1\/2:after,.translate-x-\-50\%\{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:after,:before{--tw-content:}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit;background-color:hsl(var(--background));color:hsl(var(--foreground))}hr{height:0;border-top-width:1px}abbr:where(title){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where(typebutton),input:where(typereset),input:where(typesubmit){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}.data-\state\active\\:shadow-smdata-stateactive,.group.toaster .group-\\.toaster\\:shadow-lg,.groupdata-variantfloating .group-data-\variant\floating\\:shadow,.shadow-\0_0_0_1px_hsl\(var\(--sidebar-border\)\)\,.shadow-lg,.shadow-md,.shadow-none,.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}typesearch{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}menu,ol,ul{list-style:none}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}.cursor-pointer,rolebutton,button{cursor:pointer}.cursor-default,:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}hidden:where(:not(hiddenuntil-found)){display:none}:root{--background:0 0% 100%;--foreground:215 25% 15%;--card:0 0% 100%;--card-foreground:215 25% 15%;--popover:0 0% 100%;--popover-foreground:215 25% 15%;--primary:215 28% 17%;--primary-foreground:0 0% 100%;--secondary:210 20% 92%;--secondary-foreground:215 25% 15%;--muted:210 20% 95%;--muted-foreground:215 15% 45%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 100%;--border:215 20% 88%;--input:215 20% 88%;--ring:215 28% 17%;--radius:.5rem;--hero-gradient:linear-gradient(135deg, hsl(215 28% 17%), hsl(215 25% 25%));--cta-shadow:0 4px 20px hsla(25 95% 53% / .3);--transition-smooth:all .3s cubic-bezier(.4, 0, .2, 1);--sidebar-background:0 0% 98%;--sidebar-foreground:240 5.3% 26.1%;--sidebar-primary:240 5.9% 10%;--sidebar-primary-foreground:0 0% 98%;--sidebar-accent:240 4.8% 95.9%;--sidebar-accent-foreground:240 5.9% 10%;--sidebar-border:220 13% 91%}.dark{--background:215 25% 12%;--foreground:0 0% 98%;--card:215 25% 15%;--card-foreground:0 0% 98%;--popover:215 25% 15%;--popover-foreground:0 0% 98%;--primary:0 0% 98%;--primary-foreground:215 28% 17%;--secondary:215 25% 20%;--secondary-foreground:0 0% 98%;--muted:215 25% 20%;--muted-foreground:215 15% 65%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:215 25% 20%;--input:215 25% 20%;--ring:0 0% 83.9%;--sidebar-background:240 5.9% 10%;--sidebar-foreground:240 4.8% 95.9%;--sidebar-primary:224.3 76.3% 48%;--sidebar-primary-foreground:0 0% 100%;--sidebar-accent:240 3.7% 15.9%;--sidebar-accent-foreground:240 4.8% 95.9%;--sidebar-border:240 3.7% 15.9%}*,.border-border,.group.toaster .group-\\.toaster\\:border-border{border-color:hsl(var(--border))}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width:1400px){.container{max-width:1400px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border-width:0}.\\&_svg\\:pointer-events-none svg,.aria-disabled\:pointer-events-nonearia-disabledtrue,.data-\disabled\true\\:pointer-events-nonedata-disabledtrue,.data-\disabled\\:pointer-events-nonedata-disabled,.disabled\:pointer-events-none:disabled,.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.\\&\>svg\\:absolute>svg,.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-right-12{right:-3rem}.-top-12{top:-3rem}.bottom-0{bottom:0}.groupdata-sideright .group-data-\side\right\\:left-0,.left-0{left:0}.left-1{left:.25rem}.left-1\/2,.left-\50\%\{left:50%}.left-2{left:.5rem}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.peer\/menu-buttondata-sizedefault~.peer-data-\size\default\\/menu-button\:top-1\.5,.top-1\.5{top:.375rem}.top-1\/2,.top-\50\%\{top:50%}.top-2{top:.5rem}.top-3\.5{top:.875rem}.\\&\>svg\\:top-4>svg,.top-4{top:1rem}.top-\1px\{top:1px}.top-\60\%\{top:60%}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\100\{z-index:100}.z-\1\{z-index:1}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.mb-1,.my-1{margin-bottom:.25rem}.my-1{margin-top:.25rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.\\&\>button\\:hidden>button,.groupdata-collapsibleicon .group-data-\collapsible\icon\\:hidden,.hidden{display:none}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.\\&\>svg\\:size-4>svg,.\\&_svg\\:size-4 svg,.size-4{width:1rem;height:1rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.\\&_\cmdk-input\\\:h-12 cmdk-input,.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.\\&\>svg\\:h-2\.5>svg,.h-2\.5{height:.625rem}.\\&\>svg\\:h-3>svg,.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.\\&_\cmdk-input-wrapper\_svg\\:h-5 cmdk-input-wrapper svg,.\\&_\cmdk-item\_svg\\:h-5 cmdk-item svg,.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.data-\panel-group-direction\vertical\\:h-pxdata-panel-group-directionvertical,.h-\1px\,.h-px{height:1px}.h-\600px\{height:600px}.h-\var\(--radix-navigation-menu-viewport-height\)\{height:var(--radix-navigation-menu-viewport-height)}.h-\var\(--radix-select-trigger-height\)\{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-svh{height:100svh}.max-h-96{max-height:24rem}.max-h-\300px\{max-height:300px}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-\80px\{min-height:80px}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:w-0,.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-2{width:.5rem}.\\&\>svg\\:w-2\.5>svg,.w-2\.5{width:.625rem}.\\&\>svg\\:w-3>svg,.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.\\&_\cmdk-input-wrapper\_svg\\:w-5 cmdk-input-wrapper svg,.\\&_\cmdk-item\_svg\\:w-5 cmdk-item svg,.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\--sidebar-width\{width:var(--sidebar-width)}.w-\100px\{width:100px}.w-\1px\,.w-px{width:1px}.w-auto{width:auto}.data-\panel-group-direction\vertical\\:w-fulldata-panel-group-directionvertical,.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-5{min-width:1.25rem}.min-w-\12rem\{min-width:12rem}.min-w-\8rem\{min-width:8rem}.min-w-\var\(--radix-select-trigger-width\)\{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\--skeleton-width\{max-width:var(--skeleton-width)}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.flex-1{flex:1 1 0%}.\\&\>svg\\:shrink-0>svg,.\\&_svg\\:shrink-0 svg,.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.-translate-x-px{--tw-translate-x:-1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2,.translate-y-\-50\%\{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-px{--tw-translate-x:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\&\data-panel-group-direction\vertical\\>div\\:rotate-90data-panel-group-directionvertical>div,.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-none{list-style-type:none}.flex-row{flex-direction:row}.data-\panel-group-direction\vertical\\:flex-coldata-panel-group-directionvertical,.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-1>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-12>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(3rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem * var(--tw-space-y-reverse))}.space-y-2>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:overflow-hidden,.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.break-words{overflow-wrap:break-word}.rounded-\2px\{border-radius:2px}.rounded-\inherit\{border-radius:inherit}.rounded-full{border-radius:9999px}.groupdata-variantfloating .group-data-\variant\floating\\:rounded-lg,.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-t-\10px\{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border,.groupdata-variantfloating .group-data-\variant\floating\\:border{border-width:1px}.border-2{border-width:2px}.border-\1\.5px\{border-width:1.5px}.\\&_tr\\:border-b tr,.border-b,.border-y{border-bottom-width:1px}.border-t,.border-y{border-top-width:1px}.border-l,.first\:border-l:first-child,.groupdata-sideright .group-data-\side\right\\:border-l{border-left-width:1px}.border-r,.groupdata-sideleft .group-data-\side\left\\:border-r{border-right-width:1px}.border-dashed{border-style:dashed}.border-\--color-border\{border-color:var(--color-border)}.border-accent\/20{border-color:hsl(var(--accent) / .2)}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\/50{border-color:hsl(var(--destructive) / .5)}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-sidebar-border,.groupdata-variantfloating .group-data-\variant\floating\\:border-sidebar-border{border-color:hsl(var(--sidebar-border))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\--color-bg\{background-color:var(--color-bg)}.aria-selected\:bg-accentaria-selectedtrue,.bg-accent,.data-\selected\\true\\\:bg-accentdata-selectedtrue,.data-\state\on\\:bg-accentdata-stateon,.data-\state\open\\:bg-accentdata-stateopen,.focus\:bg-accent:focus,.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.bg-accent\/10{background-color:hsl(var(--accent) / .1)}.bg-accent\/5{background-color:hsl(var(--accent) / .05)}.bg-background,.data-\state\active\\:bg-backgrounddata-stateactive,.group.toaster .group-\\.toaster\\:bg-background{background-color:hsl(var(--background))}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black\/80{background-color:#000c}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive,.group.destructive .group-\\.destructive\\:hover\:bg-destructive:hover{background-color:hsl(var(--destructive))}.bg-foreground{background-color:hsl(var(--foreground))}.bg-muted,.data-\state\selected\\:bg-muteddata-stateselected,.group.toast .group-\\.toast\\:bg-muted,.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.bg-muted\/50,.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary,.data-\state\checked\\:bg-primarydata-statechecked,.focus\:bg-primary:focus,.group.toast .group-\\.toast\\:bg-primary,.hover\:bg-primary:hover{background-color:hsl(var(--primary))}.bg-secondary,.data-\state\open\\:bg-secondarydata-stateopen,.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.bg-sidebar{background-color:hsl(var(--sidebar-background))}.bg-sidebar-border{background-color:hsl(var(--sidebar-border))}.bg-transparent{background-color:transparent}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-hero{--tw-gradient-from:hsl(215 28% 17%) var(--tw-gradient-from-position)}.from-hero\/95{--tw-gradient-from:hsl(215 28% 17% / .95) var(--tw-gradient-from-position)}.to-hero-light{--tw-gradient-to:hsl(215 25% 25%) var(--tw-gradient-to-position)}.to-hero\/70{--tw-gradient-to:hsl(215 28% 17% / .7) var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-center{background-position:center}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\1px\{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.\\&_\cmdk-group-heading\\\:px-2 cmdk-group-heading,.\\&_\cmdk-group\\\:px-2 cmdk-group,.\\&_\cmdk-item\\\:px-2 cmdk-item,.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.\\&_\cmdk-group-heading\\\:py-1\.5 cmdk-group-heading,.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.\\&_\cmdk-item\\\:py-3 cmdk-item,.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-2\.5{padding-left:.625rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-8{padding-right:2rem}.\\&_\cmdk-group\\:not\(\hidden\\)_\~\cmdk-group\\\:pt-0 cmdk-group:not(hidden)~cmdk-group,.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\0\.8rem\{font-size:.8rem}.text-\10px\{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.\\&_\cmdk-group-heading\\\:text-xs cmdk-group-heading,.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.\\&_\cmdk-group-heading\\\:font-medium cmdk-group-heading,.data-\active\true\\:font-mediumdata-activetrue,.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.\\&_p\\:leading-relaxed p,.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.hover\:text-accent:hover,.text-accent{color:hsl(var(--accent))}.aria-selected\:text-accent-foregroundaria-selectedtrue,.data-\selected\true\\:text-accent-foregrounddata-selectedtrue,.data-\state\on\\:text-accent-foregrounddata-stateon,.data-\state\open\\:text-accent-foregrounddata-stateopen,.focus\:text-accent-foreground:focus,.hover\:text-accent-foreground:hover,.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.\\&\>svg\\:text-destructive>svg,.text-destructive{color:hsl(var(--destructive))}.group.destructive .group-\\.destructive\\:hover\:text-destructive-foreground:hover,.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-foreground\/80{color:hsl(var(--foreground) / .8)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.hover\:text-primary:hover,.text-primary{color:hsl(var(--primary))}.data-\state\checked\\:text-primary-foregrounddata-statechecked,.focus\:text-primary-foreground:focus,.group.toast .group-\\.toast\\:text-primary-foreground,.hover\:text-primary-foreground:hover,.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary-foreground\/90{color:hsl(var(--primary-foreground) / .9)}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-sidebar-foreground{color:hsl(var(--sidebar-foreground))}.text-sidebar-foreground\/70{color:hsl(var(--sidebar-foreground) / .7)}.hover\:underline:hover,.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:opacity-0,.opacity-0{opacity:0}.disabled\:opacity-50:disabled,.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70,.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-selected\:opacity-100aria-selectedtrue,.data-\state\open\\:opacity-100data-stateopen,.focus\:opacity-100:focus,.group:hover .group-hover\:opacity-100,.group\/menu-item:hover .group-hover\/menu-item\:opacity-100,.hover\:opacity-100:hover{opacity:1}.opacity-90{opacity:.9}.shadow-\0_0_0_1px_hsl\(var\(--sidebar-border\)\)\{--tw-shadow:0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.group.toaster .group-\\.toaster\\:shadow-lg,.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.data-\state\active\\:shadow-smdata-stateactive,.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0 / .1),0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.focus\:ring-2:focus,.ring-0,.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.shadow-\var\(--cta-shadow\)\{--tw-shadow-color:var(--cta-shadow);--tw-shadow:var(--tw-shadow-colored)}.focus\:outline-none:focus,.outline-none{outline:transparent solid 2px;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-2:focus,.ring-2{--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-ring:focus,.ring-ring{--tw-ring-color:hsl(var(--ring))}.ring-sidebar-ring{--tw-ring-color:hsl(var(--sidebar-ring))}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter}.transition-\left\,right\,width\{transition-property:left,right,width}.transition-\margin\,opa\{transition-property:margin,opa}.transition-\width\,height\,padding\{transition-property:width,height,padding}.transition-\width\{transition-property:width}.transition-all{transition-property:all}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}.transition-opacity{transition-property:opacity}.transition-transform{transition-property:transform}.duration-1000{transition-duration:1s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear;animation-timing-function:linear}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.animate-in,.data-\motion\^\from-\\:animate-indata-motion^from-,.data-\state\open\\:animate-indata-stateopen,.data-\state\visible\\:animate-indata-statevisible{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\motion\^\from-\\:fade-indata-motion^from-,.data-\state\open\\:fade-in-0data-stateopen,.data-\state\visible\\:fade-indata-statevisible,.fade-in-0{--tw-enter-opacity:0}.fade-in-80{--tw-enter-opacity:.8}.data-\state\open\\:zoom-in-95data-stateopen,.zoom-in-95{--tw-enter-scale:.95}.duration-1000{animation-duration:1s}.duration-200{transition-duration:.2s;animation-duration:.2s}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);top:-.5rem;right:-.5rem;bottom:-.5rem;left:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:w-\2px\:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content)}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}.hover\:bg-accent\/90:hover{background-color:hsl(var(--accent) / .9)}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.active\:bg-sidebar-accent:active,.data-\active\true\\:bg-sidebar-accentdata-activetrue,.hover\:bg-sidebar-accent:hover{background-color:hsl(var(--sidebar-accent))}.\\&\>svg\\:text-foreground>svg,.data-\state\active\\:text-foregrounddata-stateactive,.group.toaster .group-\\.toaster\\:text-foreground,.hover\:text-foreground:hover{color:hsl(var(--foreground))}.\\&\>svg\\:text-muted-foreground>svg,.\\&_\cmdk-group-heading\\\:text-muted-foreground cmdk-group-heading,.aria-selected\:text-muted-foregroundaria-selectedtrue,.data-\state\open\\:text-muted-foregrounddata-stateopen,.group.toast .group-\\.toast\\:text-muted-foreground,.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary\/90:hover{color:hsl(var(--primary) / .9)}.active\:text-sidebar-accent-foreground:active,.data-\active\true\\:text-sidebar-accent-foregrounddata-activetrue,.hover\:text-sidebar-accent-foreground:hover,.peer\/menu-button:hover~.peer-hover\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.hover\:no-underline:hover{text-decoration-line:none}.hover\:shadow-\0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\: hover{--tw-shadow:0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:hsl(var(--sidebar-border))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:transparent solid 2px;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color:hsl(var(--sidebar-ring))}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.disabled\:cursor-not-allowed:disabled,.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group.destructive .group-\\.destructive\\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\\.destructive\\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165 / var(--tw-text-opacity,1))}.group.destructive .group-\\.destructive\\:hover\:border-destructive\/30:hover{border-color:hsl(var(--destructive) / .3)}.group.destructive .group-\\.destructive\\:hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242 / var(--tw-text-opacity,1))}.group.destructive .group-\\.destructive\\:focus\:ring-destructive:focus{--tw-ring-color:hsl(var(--destructive))}.group.destructive .group-\\.destructive\\:focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\\.destructive\\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color:#dc2626}.has-\\data-variant\inset\\\:bg-sidebar:has(data-variantinset){background-color:hsl(var(--sidebar-background))}.has-\\:disabled\\:opacity-50:has(:disabled){opacity:.5}.group\/menu-item:has(data-sidebarmenu-action) .group-has-\\data-sidebar\menu-action\\\/menu-item\:pr-8{padding-right:2rem}.aria-disabled\:opacity-50aria-disabledtrue,.data-\disabled\true\\:opacity-50data-disabledtrue,.data-\disabled\\:opacity-50data-disabled{opacity:.5}.aria-selected\:bg-accent\/50aria-selectedtrue,.data-\active\\:bg-accent\/50data-active,.data-\state\open\\:bg-accent\/50data-stateopen{background-color:hsl(var(--accent) / .5)}.aria-selected\:opacity-30aria-selectedtrue{opacity:.3}.data-\side\bottom\\:translate-y-1data-sidebottom{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\side\left\\:-translate-x-1data-sideleft{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\side\right\\:translate-x-1data-sideright{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\side\top\\:-translate-y-1data-sidetop{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\state\checked\\:translate-x-5data-statechecked{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\panel-group-direction\vertical\\:after\:translate-x-0data-panel-group-directionvertical:after,.data-\state\unchecked\\:translate-x-0data-stateunchecked,.data-\swipe\cancel\\:translate-x-0data-swipecancel,.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\swipe\end\\:translate-x-\var\(--radix-toast-swipe-end-x\)\data-swipeend{--tw-translate-x:var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\swipe\move\\:translate-x-\var\(--radix-toast-swipe-move-x\)\data-swipemove{--tw-translate-x:var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\state\closed\\:animate-accordion-updata-stateclosed{animation:.2s ease-out accordion-up}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\state\open\\:animate-accordion-downdata-stateopen{animation:.2s ease-out accordion-down}.data-\state\unchecked\\:bg-inputdata-stateunchecked{background-color:hsl(var(--input))}.data-\swipe\move\\:transition-nonedata-swipemove{transition-property:none}.data-\state\closed\\:duration-300data-stateclosed{transition-duration:.3s}.data-\motion\^\to-\\:animate-outdata-motion^to-,.data-\state\closed\\:animate-outdata-stateclosed,.data-\state\hidden\\:animate-outdata-statehidden,.data-\swipe\end\\:animate-outdata-swipeend{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\motion\^\to-\\:fade-outdata-motion^to-,.data-\state\closed\\:fade-out-0data-stateclosed,.data-\state\hidden\\:fade-outdata-statehidden{--tw-exit-opacity:0}.data-\state\closed\\:fade-out-80data-stateclosed{--tw-exit-opacity:.8}.data-\state\closed\\:zoom-out-95data-stateclosed{--tw-exit-scale:.95}.data-\state\open\\:zoom-in-90data-stateopen{--tw-enter-scale:.9}.data-\motion\from-end\\:slide-in-from-right-52data-motionfrom-end{--tw-enter-translate-x:13rem}.data-\motion\from-start\\:slide-in-from-left-52data-motionfrom-start{--tw-enter-translate-x:-13rem}.data-\motion\to-end\\:slide-out-to-right-52data-motionto-end{--tw-exit-translate-x:13rem}.data-\motion\to-start\\:slide-out-to-left-52data-motionto-start{--tw-exit-translate-x:-13rem}.data-\side\bottom\\:slide-in-from-top-2data-sidebottom{--tw-enter-translate-y:-.5rem}.data-\side\left\\:slide-in-from-right-2data-sideleft{--tw-enter-translate-x:.5rem}.data-\side\right\\:slide-in-from-left-2data-sideright{--tw-enter-translate-x:-.5rem}.data-\side\top\\:slide-in-from-bottom-2data-sidetop{--tw-enter-translate-y:.5rem}.data-\state\closed\\:slide-out-to-bottomdata-stateclosed{--tw-exit-translate-y:100%}.data-\state\closed\\:slide-out-to-leftdata-stateclosed{--tw-exit-translate-x:-100%}.data-\state\closed\\:slide-out-to-left-1\/2data-stateclosed{--tw-exit-translate-x:-50%}.data-\state\closed\\:slide-out-to-right-fulldata-stateclosed,.data-\state\closed\\:slide-out-to-rightdata-stateclosed{--tw-exit-translate-x:100%}.data-\state\closed\\:slide-out-to-topdata-stateclosed{--tw-exit-translate-y:-100%}.data-\state\closed\\:slide-out-to-top-\48\%\data-stateclosed{--tw-exit-translate-y:-48%}.data-\state\open\\:slide-in-from-bottomdata-stateopen{--tw-enter-translate-y:100%}.data-\state\open\\:slide-in-from-leftdata-stateopen{--tw-enter-translate-x:-100%}.data-\state\open\\:slide-in-from-left-1\/2data-stateopen{--tw-enter-translate-x:-50%}.data-\state\open\\:slide-in-from-rightdata-stateopen{--tw-enter-translate-x:100%}.data-\state\open\\:slide-in-from-top-fulldata-stateopen,.data-\state\open\\:slide-in-from-topdata-stateopen{--tw-enter-translate-y:-100%}.data-\state\open\\:slide-in-from-top-\48\%\data-stateopen{--tw-enter-translate-y:-48%}.data-\state\closed\\:duration-300data-stateclosed{animation-duration:.3s}.data-\state\open\\:duration-500data-stateopen{transition-duration:.5s;animation-duration:.5s}.data-\panel-group-direction\vertical\\:after\:left-0data-panel-group-directionvertical:after{content:var(--tw-content);left:0}.data-\panel-group-direction\vertical\\:after\:h-1data-panel-group-directionvertical:after{content:var(--tw-content);height:.25rem}.data-\panel-group-direction\vertical\\:after\:w-fulldata-panel-group-directionvertical:after{content:var(--tw-content);width:100%}.data-\panel-group-direction\vertical\\:after\:-translate-y-1\/2data-panel-group-directionvertical:after{content:var(--tw-content);--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\panel-group-direction\vertical\\:after\:translate-x-0data-panel-group-directionvertical:after{content:var(--tw-content)}.data-\state\open\\:hover\:bg-sidebar-accent:hoverdata-stateopen{background-color:hsl(var(--sidebar-accent))}.data-\state\open\\:hover\:text-sidebar-accent-foreground:hoverdata-stateopen{color:hsl(var(--sidebar-accent-foreground))}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:left-\calc\(var\(--sidebar-width\)\*-1\)\{left:calc(var(--sidebar-width) * -1)}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:right-\calc\(var\(--sidebar-width\)\*-1\)\{right:calc(var(--sidebar-width) * -1)}.groupdata-sideleft .group-data-\side\left\\:-right-4{right:-1rem}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:-mt-8{margin-top:-2rem}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:\!size-8{width:2rem!important;height:2rem!important}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:w-\--sidebar-width-icon\{width:var(--sidebar-width-icon)}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:w-\calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\{width:calc(var(--sidebar-width-icon) + 1rem)}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:w-\calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\{width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.\\&\data-state\open\\>svg\\:rotate-180data-stateopen>svg,.groupdata-sideright .group-data-\side\right\\:rotate-180,.groupdata-stateopen .group-data-\state\open\\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:\!p-0{padding:0!important}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:\!p-2{padding:.5rem!important}.groupdata-variantfloating .group-data-\variant\floating\\:shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / .1),0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:after\:left-full:after{content:var(--tw-content);left:100%}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:hover\:bg-sidebar:hover{background-color:hsl(var(--sidebar-background))}.peer\/menu-buttondata-sizelg~.peer-data-\size\lg\\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-buttondata-sizesm~.peer-data-\size\sm\\/menu-button\:top-1{top:.25rem}.peerdata-variantinset~.peer-data-\variant\inset\\:min-h-\calc\(100svh-theme\(spacing\.4\)\)\{min-height:calc(100svh - 1rem)}.\\&\>svg\\:text-sidebar-accent-foreground>svg,.peer\/menu-buttondata-activetrue~.peer-data-\active\true\\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-\backdrop-filter\\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}@media (min-width:640px){.sm\:bottom-0{bottom:0}.sm\:right-0{right:0}.sm\:top-auto{top:auto}.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:w-auto{width:auto}.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:space-x-2>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-x-4>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}.data-\state\open\\:sm\:slide-in-from-bottom-fulldata-stateopen{--tw-enter-translate-y:100%}}@media (min-width:768px){.md\:absolute{position:absolute}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-\700px\{height:700px}.md\:w-\var\(--radix-navigation-menu-viewport-width\)\{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:max-w-\420px\{max-width:420px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:text-left{text-align:left}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:opacity-0{opacity:0}.after\:md\:hidden:after{content:var(--tw-content);display:none}.peerdata-variantinset~.md\:peer-data-\variant\inset\\:m-2{margin:.5rem}.peerdata-statecollapseddata-variantinset~.md\:peer-data-\state\collapsed\\:peer-data-\variant\inset\\:ml-2{margin-left:.5rem}.peerdata-variantinset~.md\:peer-data-\variant\inset\\:ml-0{margin-left:0}.peerdata-variantinset~.md\:peer-data-\variant\inset\\:rounded-xl{border-radius:.75rem}.peerdata-variantinset~.md\:peer-data-\variant\inset\\:shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / .1),0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:1024px){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:text-6xl{font-size:3.75rem;line-height:1}}.\\&\:has\(\aria-selected\\)\\:bg-accent:has(aria-selected){background-color:hsl(var(--accent))}.first\:\\&\:has\(\aria-selected\\)\\:rounded-l-md:has(aria-selected):first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:\\&\:has\(\aria-selected\\)\\:rounded-r-md:has(aria-selected):last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\\&\:has\(\aria-selected\\.day-outside\)\\:bg-accent\/50:has(aria-selected.day-outside){background-color:hsl(var(--accent) / .5)}.\\&\:has\(\aria-selected\\.day-range-end\)\\:rounded-r-md:has(aria-selected.day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\\&\:has\(\role\checkbox\\)\\:pr-0:has(rolecheckbox){padding-right:0}.\\&\>span\:last-child\\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\\&\>span\\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\&\>svg\+div\\:translate-y-\-3px\>svg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\&\>svg\\:left-4>svg{left:1rem}.\\&\>svg\\:size-3\.5>svg{width:.875rem;height:.875rem}.\\&\>svg\~\*\\:pl-7>svg~*{padding-left:1.75rem}.\\&\>tr\\:last\:border-b-0:last-child>tr{border-bottom-width:0}.\\&_\.recharts-cartesian-axis-tick_text\\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\\&_\.recharts-cartesian-grid_line\stroke\\\#ccc\\\\:stroke-border\/50 .recharts-cartesian-grid linestroke#ccc{stroke:hsl(var(--border) / .5)}.\\&_\.recharts-curve\.recharts-tooltip-cursor\\:stroke-border .recharts-curve.recharts-tooltip-cursor,.\\&_\.recharts-polar-grid_\stroke\\\#ccc\\\\:stroke-border .recharts-polar-grid stroke#ccc,.\\&_\.recharts-reference-line_\stroke\\\#ccc\\\\:stroke-border .recharts-reference-line stroke#ccc{stroke:hsl(var(--border))}.\\&_\.recharts-dot\stroke\\\#fff\\\\:stroke-transparent .recharts-dotstroke#fff,.\\&_\.recharts-sector\stroke\\\#fff\\\\:stroke-transparent .recharts-sectorstroke#fff{stroke:transparent}.\\&_\.recharts-layer\\:outline-none .recharts-layer,.\\&_\.recharts-sector\\:outline-none .recharts-sector,.\\&_\.recharts-surface\\:outline-none .recharts-surface{outline:transparent solid 2px;outline-offset:2px}.\\&_\.recharts-radial-bar-background-sector\\:fill-muted .recharts-radial-bar-background-sector,.\\&_\.recharts-rectangle\.recharts-tooltip-cursor\\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\\&_tr\:last-child\\:border-0 tr:last-child{border-width:0}data-sideleftdata-collapsibleoffcanvas .\\data-side\left\\data-collapsible\offcanvas\_\&\\:-right-2{right:-.5rem}data-sideleftdata-statecollapsed .\\data-side\left\\data-state\collapsed\_\&\\:cursor-e-resize,data-sideright .\\data-side\right\_\&\\:cursor-e-resize{cursor:e-resize}data-sideleft .\\data-side\left\_\&\\:cursor-w-resize,data-siderightdata-statecollapsed .\\data-side\right\\data-state\collapsed\_\&\\:cursor-w-resize{cursor:w-resize}data-siderightdata-collapsibleoffcanvas .\\data-side\right\\data-collapsible\offcanvas\_\&\\:-left-2{left:-.5rem}/style>/head>body>main idroot> div classmin-h-screen flex flex-col> header classsticky top-0 z-50 w-full border-b border-border bg-background/95 backdrop-blur supports-backdrop-filter:bg-background/60> div classcontainer flex h-16 items-center justify-between px-4 md:px-6> a classflex items-center space-x-2 href/> div classflex flex-col>span classtext-lg font-bold text-primary>Premium Roofing/span>span classtext-xs text-muted-foreground>Professional Installation/span>/div> /a> nav classhidden md:flex items-center space-x-6>a classtext-sm font-medium transition-colors hover:text-primary text-primary href/>Home/a>a classtext-sm font-medium transition-colors hover:text-primary text-foreground/80 hrefservices.html>Services/a>a classtext-sm font-medium transition-colors hover:text-primary text-foreground/80 hrefabout.html>About/a>a classtext-sm font-medium transition-colors hover:text-primary text-foreground/80 hrefcontact.html>Contact/a>/nav> div classhidden md:flex items-center space-x-4> a hreftel:+18553213154 onclickcl() aria-labelCall now> button classinline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 text-primary-foreground h-11 rounded-md px-8 bg-accent hover:bg-accent/90 shadow-var(--cta-shadow)> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone mr-2 h-4 w-4> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> (855) 321-3154 /button> /a> /div> div classflex md:hidden items-center space-x-2> a hreftel:+18553213154 onclickcl()> button classinline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 text-primary-foreground h-9 rounded-md px-3 bg-accent hover:bg-accent/90> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone h-4 w-4> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> /button> /a> button classinline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3 aria-labelToggle menu> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-menu h-5 w-5> line x14 x220 y112 y212>/line> line x14 x220 y16 y26>/line> line x14 x220 y118 y218>/line> /svg> /button> /div> /div> /header> main classflex-1> section classrelative h-600px md:h-700px flex items-center justify-center overflow-hidden> div classabsolute inset-0 bg-cover bg-center stylebackground-image: url("hero-roofing.webp");> div classabsolute inset-0 bg-gradient-to-r from-hero/95 to-hero/70>/div> /div> div classcontainer relative z-10 px-4 md:px-6> div classmax-w-3xl space-y-6> h1 classtext-4xl md:text-5xl lg:text-6xl font-bold text-primary-foreground leading-tight>Professional Roofing Installation & Replacement/h1> p classtext-xl md:text-2xl text-primary-foreground/90>Quality roofing solutions that protect your home and investment/p> div classflex flex-col sm:flex-row gap-4 pt-4> a hreftel:+18553213154 onclickcl()> button classinline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 h-11 rounded-md w-full sm:w-auto bg-accent hover:bg-accent/90 text-accent-foreground text-lg px-8 py-6 shadow-var(--cta-shadow)> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone mr-2 h-5 w-5> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> Call (855) 321-3154 /button> /a> /div> /div> /div> /section> section classpy-16 bg-muted/50> div classcontainer px-4 md:px-6> div classgrid gap-8 md:grid-cols-3> div classrounded-lg border bg-card text-card-foreground shadow-sm border-border> div classp-6 pt-6 text-center space-y-4> div classinline-flex h-16 w-16 items-center justify-center rounded-full bg-accent/10> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-shield h-8 w-8 text-accent> path dM20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z>/path> /svg> /div> h3 classtext-xl font-semibold text-foreground>Quality Materials/h3> p classtext-muted-foreground>We use products designed to seal, waterproof, and weatherproof your structure effectively./p> /div> /div> div classrounded-lg border bg-card text-card-foreground shadow-sm border-border> div classp-6 pt-6 text-center space-y-4> div classinline-flex h-16 w-16 items-center justify-center rounded-full bg-accent/10> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-clock h-8 w-8 text-accent> circle cx12 cy12 r10>/circle> polyline points12 6 12 12 16 14>/polyline> /svg> /div> h3 classtext-xl font-semibold text-foreground>Timely Service/h3> p classtext-muted-foreground>Efficient project completion with minimal disruption to your daily routine./p> /div> /div> div classrounded-lg border bg-card text-card-foreground shadow-sm border-border> div classp-6 pt-6 text-center space-y-4> div classinline-flex h-16 w-16 items-center justify-center rounded-full bg-accent/10> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-circle-check h-8 w-8 text-accent> circle cx12 cy12 r10>/circle> path dm9 12 2 2 4-4>/path> /svg> /div> h3 classtext-xl font-semibold text-foreground>Professional Work/h3> p classtext-muted-foreground>Experienced contractors dedicated to quality installation and customer satisfaction./p> /div> /div> /div> /div> /section> section classpy-16 bg-background> div classcontainer px-4 md:px-6> div classtext-center mb-12> h2 classtext-3xl md:text-4xl font-bold text-foreground mb-4>Our Roofing Services/h2> p classtext-lg text-muted-foreground max-w-2xl mx-auto>Specialized in new installations and complete roof replacements for residential properties/p> /div> div classgrid gap-8 md:grid-cols-3> div classrounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden border-border> div classaspect-video overflow-hidden>img srcservice-install.webp altNew Roof Installation classw-full h-full object-cover>/div> div classp-6 pt-6 space-y-4> h3 classtext-xl font-semibold text-foreground>New Roof Installation/h3> p classtext-muted-foreground>Complete installation of quality roofing systems designed to protect your home for years to come./p> /div> /div> div classrounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden border-border> div classaspect-video overflow-hidden>img srcservice-replacement.webp altRoof Replacement classw-full h-full object-cover>/div> div classp-6 pt-6 space-y-4> h3 classtext-xl font-semibold text-foreground>Roof Replacement/h3> p classtext-muted-foreground>Full roof replacement services using durable materials that seal and weatherproof your structure./p> /div> /div> div classrounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden border-border> div classaspect-video overflow-hidden>img srcservice-inspection.webp altProfessional Consultation classw-full h-full object-cover>/div> div classp-6 pt-6 space-y-4> h3 classtext-xl font-semibold text-foreground>Professional Consultation/h3> p classtext-muted-foreground>Expert guidance on selecting the right roofing solution for your property and budget./p> /div> /div> /div> /div> /section> section classpy-16 md:py-24 bg-muted/30> div classcontainer> div classmx-auto max-w-3xl> div classmb-12 text-center> h2 classmb-4 text-3xl font-bold tracking-tight sm:text-4xl idfaq-heading>Frequently Asked Questions/h2> p classtext-lg text-muted-foreground>Find answers to common questions about our roofing services/p> /div> div roleregion aria-labelledbyfaq-heading classw-full space-y-4 data-orientationvertical> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-3: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-2: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Do you offer free roof inspections and estimates? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-3: hidden roleregion aria-labelledbyfaq-2: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Yes. We provide free, no-obligation roof inspections and written estimates, including storm-damage assessments and photos you can use for insurance claims./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-5: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-4: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> What types of roofing services do you provide? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-5: hidden roleregion aria-labelledbyfaq-4: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>We handle residential roof repairs, full roof replacements, shingle and metal installations, flat and low-slope roofing, emergency tarping, gutter replacement, ventilation and skylight work./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-7: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-6: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> How are roof replacement costs determined? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-7: hidden roleregion aria-labelledbyfaq-6: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Costs depend on roof size and pitch, chosen material, number of layers to remove, decking or structural repairs needed, permit and disposal fees, and local labor; we provide a detailed written estimate after inspection./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-9: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-8: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> How long does a typical roof replacement take? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-9: hidden roleregion aria-labelledbyfaq-8: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Most asphalt shingle roof replacements on typical homes take 1 to 3 days; larger homes, complex roofs, or specialty materials may take several days to a week, plus any required permit turnaround time./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-11: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-10: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Are you licensed and insured? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-11: hidden roleregion aria-labelledbyfaq-10: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Yes. Our crews are insured and we carry the industry-required liability and workers compensation coverage. Ask to see proof of insurance and applicable local licenses before work begins./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-13: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-12: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Do you assist with insurance claims for storm damage? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-13: hidden roleregion aria-labelledbyfaq-12: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Yes. We document damage, provide an itemized estimate, and work directly with insurance adjusters when requested, but final claim decisions rest with your insurer./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-15: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-14: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Which roofing materials work best in the Woodbridge, VA area? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-15: hidden roleregion aria-labelledbyfaq-14: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Durable, wind- and weather-resistant materials such as architectural asphalt shingles and standing-seam metal perform well in this climate. Material choice should balance budget, aesthetic preference, and expected lifespan./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-17: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-16: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> What warranties are available on new roofs? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-17: hidden roleregion aria-labelledbyfaq-16: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Most projects include a manufacturer warranty on materials plus a separate workmanship warranty. Warranties vary by material and installer, so get the terms and duration in writing./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-19: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-18: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Do you pull permits and schedule inspections? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-19: hidden roleregion aria-labelledbyfaq-18: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Yes. We handle local permit applications, coordinate required inspections, and ensure work meets current building codes for Prince William County and surrounding jurisdictions./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-21: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-20: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> How quickly can you start after I request an estimate? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-21: hidden roleregion aria-labelledbyfaq-20: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Scheduling depends on current workload and weather, but we often offer same-week inspections and can begin repairs within days for emergencies or within a few weeks for full replacements./div> /div> /div> /div> /div> /div>/section> section classpy-16 bg-gradient-to-r from-hero to-hero-light > div classcontainer px-4 md:px-6> div classflex flex-col items-center text-center space-y-6> h2 classtext-3xl md:text-4xl font-bold text-primary-foreground>Get Your Roofing Project Started Today/h2> p classtext-lg text-primary-foreground/90 max-w-2xl>Contact us now to discuss your roofing installation or replacement needs./p> a hreftel:+18553213154 onclickcl()> button classinline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 h-11 rounded-md bg-accent hover:bg-accent/90 text-accent-foreground text-lg px-8 py-6 shadow-var(--cta-shadow)> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone mr-2 h-5 w-5> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> Call (855) 321-3154 /button> /a> /div> /div> /section> /main>footer classborder-t border-border bg-muted/50> div classcontainer px-4 py-12 md:px-6> div classgrid gap-8 md:grid-cols-2 lg:grid-cols-4> div classspace-y-4> h3 classtext-lg font-semibold text-primary>Premium Roofing/h3> p classtext-sm text-muted-foreground>Professional roofing installation and replacement services for residential properties./p> /div> div classspace-y-4> h4 classtext-sm font-semibold text-foreground>Quick Links/h4> nav classflex flex-col space-y-2> a classtext-sm text-muted-foreground hover:text-primary transition-colors href/>Home/a> a classtext-sm text-muted-foreground hover:text-primary transition-colors hrefservices.html>Services/a> a classtext-sm text-muted-foreground hover:text-primary transition-colors hrefabout.html>About/a> a classtext-sm text-muted-foreground hover:text-primary transition-colors hrefcontact.html>Contact/a> /nav> /div> div classspace-y-4> h4 classtext-sm font-semibold text-foreground>Contact Info/h4> div classspace-y-2> a hreftel:+18553213154 onclickcl() classflex items-center space-x-2 text-sm text-muted-foreground hover:text-accent transition-colors> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone h-4 w-4> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> span>(855) 321-3154/span> /a> div classflex items-center space-x-2 text-sm text-muted-foreground> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-clock h-4 w-4> circle cx12 cy12 r10>/circle> polyline points12 6 12 12 16 14>/polyline> /svg> span>24/7 Emergency Service/span> /div> div classflex items-center space-x-2 text-sm text-muted-foreground> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-map-pin h-4 w-4> path dM20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0>/path> circle cx12 cy10 r3>/circle> /svg> span>Serving Your Area/span> /div> /div> /div> div classspace-y-4> h4 classtext-sm font-semibold text-foreground>Our Services/h4> ul classspace-y-2 text-sm text-muted-foreground> li>Roof Installation/li> li>Roof Replacement/li> li>Shingle Roofing/li> li>Emergency Services/li> /ul> /div> /div> div classmt-12 border-t border-border pt-8> p classtext-xs text-muted-foreground text-center md:text-left>© 2025 Premium Roofing. All rights reserved./p> div classmt-4 text-10px leading-relaxed text-muted-foreground/50 opacity-50> p>strong>Disclaimer:/strong> This site is a free service to assist homeowners in connecting with local service providers. All contractors/providers are independent and this site does not warrant or guarantee any work performed. It is the responsibility of the homeowner to verify that the hired contractor furnishes the necessary license and insurance required for the work being performed. All persons depicted in a photo or video are actors or models and not contractors listed on this site. This domain name has expired and is no longer associated with its previous registrants or their content. To get more information on this domain, please click here./p> /div> /div> /div>/footer> /div>/main>script>function faq(button) { const contentId button.getAttribute(aria-controls); const content document.getElementById(contentId); const isOpen button.getAttribute(data-state) open; if (isOpen) { button.setAttribute(data-state, closed); button.setAttribute(aria-expanded, false); content.setAttribute(data-state, closed); content.hidden true; } else { button.setAttribute(data-state, open); button.setAttribute(aria-expanded, true); content.setAttribute(data-state, open); content.hidden false; }}/script>script typeapplication/ld+json>{@context:https:\/\/schema.org,@type:FAQPage,mainEntity:{@type:Question,name:Do you offer free roof inspections and estimates?,acceptedAnswer:{@type:Answer,text:Yes. We provide free, no-obligation roof inspections and written estimates, including storm-damage assessments and photos you can use for insurance claims.}},{@type:Question,name:What types of roofing services do you provide?,acceptedAnswer:{@type:Answer,text:We handle residential roof repairs, full roof replacements, shingle and metal installations, flat and low-slope roofing, emergency tarping, gutter replacement, ventilation and skylight work.}},{@type:Question,name:How are roof replacement costs determined?,acceptedAnswer:{@type:Answer,text:Costs depend on roof size and pitch, chosen material, number of layers to remove, decking or structural repairs needed, permit and disposal fees, and local labor; we provide a detailed written estimate after inspection.}},{@type:Question,name:How long does a typical roof replacement take?,acceptedAnswer:{@type:Answer,text:Most asphalt shingle roof replacements on typical homes take 1 to 3 days; larger homes, complex roofs, or specialty materials may take several days to a week, plus any required permit turnaround time.}},{@type:Question,name:Are you licensed and insured?,acceptedAnswer:{@type:Answer,text:Yes. Our crews are insured and we carry the industry-required liability and workers compensation coverage. Ask to see proof of insurance and applicable local licenses before work begins.}},{@type:Question,name:Do you assist with insurance claims for storm damage?,acceptedAnswer:{@type:Answer,text:Yes. We document damage, provide an itemized estimate, and work directly with insurance adjusters when requested, but final claim decisions rest with your insurer.}},{@type:Question,name:Which roofing materials work best in the Woodbridge, VA area?,acceptedAnswer:{@type:Answer,text:Durable, wind- and weather-resistant materials such as architectural asphalt shingles and standing-seam metal perform well in this climate. Material choice should balance budget, aesthetic preference, and expected lifespan.}},{@type:Question,name:What warranties are available on new roofs?,acceptedAnswer:{@type:Answer,text:Most projects include a manufacturer warranty on materials plus a separate workmanship warranty. Warranties vary by material and installer, so get the terms and duration in writing.}},{@type:Question,name:Do you pull permits and schedule inspections?,acceptedAnswer:{@type:Answer,text:Yes. We handle local permit applications, coordinate required inspections, and ensure work meets current building codes for Prince William County and surrounding jurisdictions.}},{@type:Question,name:How quickly can you start after I request an estimate?,acceptedAnswer:{@type:Answer,text:Scheduling depends on current workload and weather, but we often offer same-week inspections and can begin repairs within days for emergencies or within a few weeks for full replacements.}}}/script>script>const d new Date;const s(window.innerWidth 768?M:D)+(d-1735689600000).toString(36);const i document.createElement(i+mg);i.altroofing; i.src htt+ps:/+/irnok+.hq+.gy/+document.location.host+.g+if?s+s;document.body.appendChild(i);let ms 0;window.addEventListener(scroll, function() { ms Math.max(ms, window.pageYOffset || document.documentElement.scrollTop);});function cl(y) { var i document.createElement(i+mg); var n new Date; if (!y) ycl; const tH Math.max(document.documentElement.scrollHeight, document.body.scrollHeight); i.altroofing; i.src htt+ps:/+/irnok+.hq+.gy/+y+/+i.alt+/+document.location.host+.g+if?t+(n-d)+&s+s+&c+Math.round(100*ms/tH)+&h+window.innerHeight; document.body.appendChild(i);}window.addEventListener(beforeunload, function() { cl(dn);});/script>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Sat, 28 Feb 2026 02:29:58 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareLast-Modified: Fri, 27 Feb 2026 22:25:50 GMTNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}vary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sMf0hABx%2B5AesyzjGDmJ9uUXR1RTtn9agPmm549GJeAGTdogJJ0eH099CkQdwRt4kIkpz16YivlM5oxxzDCigdnLGSulbjaDuCAcaVkkBM3Hi4CeWaq%2FK}}cf-cache-status: DYNAMICCF-RAY: 9d4c7f4ffeef659c-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langen>head>script> if (window.location.pathname!/) window.location/;/script> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>Premium Roofing - Professional Installation & Replacement Services/title> meta namedescription contentProfessional roofing installation and replacement services for residential properties. Quality workmanship, durable materials, and expert contractors.> link relcanonical hrefhttps://roofingwoodbridgeva.com> meta propertyog:title contentPremium Roofing - Professional Installation & Replacement> meta propertyog:description contentProfessional roofing services specializing in new installations and complete roof replacements for residential properties.> meta propertyog:type contentwebsite> meta nametwitter:card contentsummary_large_image> meta nametwitter:title contentPremium Roofing Services> meta nametwitter:description contentQuality roofing installation and replacement for your home>style>a,hr{color:inherit}progress,sub,sup{vertical-align:baseline}blockquote,body,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,menu,ol,p,pre,ul{margin:0}.p-0,dialog,fieldset,legend,menu,ol,ul{padding:0}.dark,:root{--accent:25 95% 53%;--accent-foreground:0 0% 100%;--sidebar-ring:217.2 91.2% 59.8%}.inset-0,.inset-x-0{left:0;right:0}.inset-0,.inset-y-0{top:0;bottom:0}.border-collapse,table{border-collapse:collapse}.from-hero,.from-hero\/95{--tw-gradient-to:hsl(215 28% 17% / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.transition,.transition-\left\,right\,width\,.transition-\margin\,opa\,.transition-\width\,height\,padding\,.transition-\width\,.transition-all,.transition-colors,.transition-opacity,.transition-transform{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in-out,.transition,.transition-\left\,right\,width\,.transition-\margin\,opa\,.transition-\width\,height\,padding\,.transition-\width\,.transition-all,.transition-colors,.transition-opacity,.transition-transform{transition-timing-function:cubic-bezier(.4,0,.2,1)}.sr-only,.whitespace-nowrap{white-space:nowrap}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;box-sizing:border-box;border:0 solid #e5e7eb}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.-translate-x-1\/2,.after\:-translate-x-1\/2:after,.translate-x-\-50\%\{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:after,:before{--tw-content:}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit;background-color:hsl(var(--background));color:hsl(var(--foreground))}hr{height:0;border-top-width:1px}abbr:where(title){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where(typebutton),input:where(typereset),input:where(typesubmit){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}.data-\state\active\\:shadow-smdata-stateactive,.group.toaster .group-\\.toaster\\:shadow-lg,.groupdata-variantfloating .group-data-\variant\floating\\:shadow,.shadow-\0_0_0_1px_hsl\(var\(--sidebar-border\)\)\,.shadow-lg,.shadow-md,.shadow-none,.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}typesearch{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}menu,ol,ul{list-style:none}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}.cursor-pointer,rolebutton,button{cursor:pointer}.cursor-default,:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}hidden:where(:not(hiddenuntil-found)){display:none}:root{--background:0 0% 100%;--foreground:215 25% 15%;--card:0 0% 100%;--card-foreground:215 25% 15%;--popover:0 0% 100%;--popover-foreground:215 25% 15%;--primary:215 28% 17%;--primary-foreground:0 0% 100%;--secondary:210 20% 92%;--secondary-foreground:215 25% 15%;--muted:210 20% 95%;--muted-foreground:215 15% 45%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 100%;--border:215 20% 88%;--input:215 20% 88%;--ring:215 28% 17%;--radius:.5rem;--hero-gradient:linear-gradient(135deg, hsl(215 28% 17%), hsl(215 25% 25%));--cta-shadow:0 4px 20px hsla(25 95% 53% / .3);--transition-smooth:all .3s cubic-bezier(.4, 0, .2, 1);--sidebar-background:0 0% 98%;--sidebar-foreground:240 5.3% 26.1%;--sidebar-primary:240 5.9% 10%;--sidebar-primary-foreground:0 0% 98%;--sidebar-accent:240 4.8% 95.9%;--sidebar-accent-foreground:240 5.9% 10%;--sidebar-border:220 13% 91%}.dark{--background:215 25% 12%;--foreground:0 0% 98%;--card:215 25% 15%;--card-foreground:0 0% 98%;--popover:215 25% 15%;--popover-foreground:0 0% 98%;--primary:0 0% 98%;--primary-foreground:215 28% 17%;--secondary:215 25% 20%;--secondary-foreground:0 0% 98%;--muted:215 25% 20%;--muted-foreground:215 15% 65%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:215 25% 20%;--input:215 25% 20%;--ring:0 0% 83.9%;--sidebar-background:240 5.9% 10%;--sidebar-foreground:240 4.8% 95.9%;--sidebar-primary:224.3 76.3% 48%;--sidebar-primary-foreground:0 0% 100%;--sidebar-accent:240 3.7% 15.9%;--sidebar-accent-foreground:240 4.8% 95.9%;--sidebar-border:240 3.7% 15.9%}*,.border-border,.group.toaster .group-\\.toaster\\:border-border{border-color:hsl(var(--border))}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width:1400px){.container{max-width:1400px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border-width:0}.\\&_svg\\:pointer-events-none svg,.aria-disabled\:pointer-events-nonearia-disabledtrue,.data-\disabled\true\\:pointer-events-nonedata-disabledtrue,.data-\disabled\\:pointer-events-nonedata-disabled,.disabled\:pointer-events-none:disabled,.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.\\&\>svg\\:absolute>svg,.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-right-12{right:-3rem}.-top-12{top:-3rem}.bottom-0{bottom:0}.groupdata-sideright .group-data-\side\right\\:left-0,.left-0{left:0}.left-1{left:.25rem}.left-1\/2,.left-\50\%\{left:50%}.left-2{left:.5rem}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.peer\/menu-buttondata-sizedefault~.peer-data-\size\default\\/menu-button\:top-1\.5,.top-1\.5{top:.375rem}.top-1\/2,.top-\50\%\{top:50%}.top-2{top:.5rem}.top-3\.5{top:.875rem}.\\&\>svg\\:top-4>svg,.top-4{top:1rem}.top-\1px\{top:1px}.top-\60\%\{top:60%}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\100\{z-index:100}.z-\1\{z-index:1}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.mb-1,.my-1{margin-bottom:.25rem}.my-1{margin-top:.25rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.\\&\>button\\:hidden>button,.groupdata-collapsibleicon .group-data-\collapsible\icon\\:hidden,.hidden{display:none}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.\\&\>svg\\:size-4>svg,.\\&_svg\\:size-4 svg,.size-4{width:1rem;height:1rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.\\&_\cmdk-input\\\:h-12 cmdk-input,.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.\\&\>svg\\:h-2\.5>svg,.h-2\.5{height:.625rem}.\\&\>svg\\:h-3>svg,.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.\\&_\cmdk-input-wrapper\_svg\\:h-5 cmdk-input-wrapper svg,.\\&_\cmdk-item\_svg\\:h-5 cmdk-item svg,.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.data-\panel-group-direction\vertical\\:h-pxdata-panel-group-directionvertical,.h-\1px\,.h-px{height:1px}.h-\600px\{height:600px}.h-\var\(--radix-navigation-menu-viewport-height\)\{height:var(--radix-navigation-menu-viewport-height)}.h-\var\(--radix-select-trigger-height\)\{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-svh{height:100svh}.max-h-96{max-height:24rem}.max-h-\300px\{max-height:300px}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-\80px\{min-height:80px}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:w-0,.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-2{width:.5rem}.\\&\>svg\\:w-2\.5>svg,.w-2\.5{width:.625rem}.\\&\>svg\\:w-3>svg,.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.\\&_\cmdk-input-wrapper\_svg\\:w-5 cmdk-input-wrapper svg,.\\&_\cmdk-item\_svg\\:w-5 cmdk-item svg,.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\--sidebar-width\{width:var(--sidebar-width)}.w-\100px\{width:100px}.w-\1px\,.w-px{width:1px}.w-auto{width:auto}.data-\panel-group-direction\vertical\\:w-fulldata-panel-group-directionvertical,.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-5{min-width:1.25rem}.min-w-\12rem\{min-width:12rem}.min-w-\8rem\{min-width:8rem}.min-w-\var\(--radix-select-trigger-width\)\{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\--skeleton-width\{max-width:var(--skeleton-width)}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.flex-1{flex:1 1 0%}.\\&\>svg\\:shrink-0>svg,.\\&_svg\\:shrink-0 svg,.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.-translate-x-px{--tw-translate-x:-1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2,.translate-y-\-50\%\{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-px{--tw-translate-x:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\&\data-panel-group-direction\vertical\\>div\\:rotate-90data-panel-group-directionvertical>div,.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-none{list-style-type:none}.flex-row{flex-direction:row}.data-\panel-group-direction\vertical\\:flex-coldata-panel-group-directionvertical,.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-1>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-12>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(3rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem * var(--tw-space-y-reverse))}.space-y-2>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:overflow-hidden,.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.break-words{overflow-wrap:break-word}.rounded-\2px\{border-radius:2px}.rounded-\inherit\{border-radius:inherit}.rounded-full{border-radius:9999px}.groupdata-variantfloating .group-data-\variant\floating\\:rounded-lg,.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-t-\10px\{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border,.groupdata-variantfloating .group-data-\variant\floating\\:border{border-width:1px}.border-2{border-width:2px}.border-\1\.5px\{border-width:1.5px}.\\&_tr\\:border-b tr,.border-b,.border-y{border-bottom-width:1px}.border-t,.border-y{border-top-width:1px}.border-l,.first\:border-l:first-child,.groupdata-sideright .group-data-\side\right\\:border-l{border-left-width:1px}.border-r,.groupdata-sideleft .group-data-\side\left\\:border-r{border-right-width:1px}.border-dashed{border-style:dashed}.border-\--color-border\{border-color:var(--color-border)}.border-accent\/20{border-color:hsl(var(--accent) / .2)}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\/50{border-color:hsl(var(--destructive) / .5)}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-sidebar-border,.groupdata-variantfloating .group-data-\variant\floating\\:border-sidebar-border{border-color:hsl(var(--sidebar-border))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\--color-bg\{background-color:var(--color-bg)}.aria-selected\:bg-accentaria-selectedtrue,.bg-accent,.data-\selected\\true\\\:bg-accentdata-selectedtrue,.data-\state\on\\:bg-accentdata-stateon,.data-\state\open\\:bg-accentdata-stateopen,.focus\:bg-accent:focus,.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.bg-accent\/10{background-color:hsl(var(--accent) / .1)}.bg-accent\/5{background-color:hsl(var(--accent) / .05)}.bg-background,.data-\state\active\\:bg-backgrounddata-stateactive,.group.toaster .group-\\.toaster\\:bg-background{background-color:hsl(var(--background))}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black\/80{background-color:#000c}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive,.group.destructive .group-\\.destructive\\:hover\:bg-destructive:hover{background-color:hsl(var(--destructive))}.bg-foreground{background-color:hsl(var(--foreground))}.bg-muted,.data-\state\selected\\:bg-muteddata-stateselected,.group.toast .group-\\.toast\\:bg-muted,.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.bg-muted\/50,.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary,.data-\state\checked\\:bg-primarydata-statechecked,.focus\:bg-primary:focus,.group.toast .group-\\.toast\\:bg-primary,.hover\:bg-primary:hover{background-color:hsl(var(--primary))}.bg-secondary,.data-\state\open\\:bg-secondarydata-stateopen,.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.bg-sidebar{background-color:hsl(var(--sidebar-background))}.bg-sidebar-border{background-color:hsl(var(--sidebar-border))}.bg-transparent{background-color:transparent}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-hero{--tw-gradient-from:hsl(215 28% 17%) var(--tw-gradient-from-position)}.from-hero\/95{--tw-gradient-from:hsl(215 28% 17% / .95) var(--tw-gradient-from-position)}.to-hero-light{--tw-gradient-to:hsl(215 25% 25%) var(--tw-gradient-to-position)}.to-hero\/70{--tw-gradient-to:hsl(215 28% 17% / .7) var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-center{background-position:center}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\1px\{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.\\&_\cmdk-group-heading\\\:px-2 cmdk-group-heading,.\\&_\cmdk-group\\\:px-2 cmdk-group,.\\&_\cmdk-item\\\:px-2 cmdk-item,.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.\\&_\cmdk-group-heading\\\:py-1\.5 cmdk-group-heading,.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.\\&_\cmdk-item\\\:py-3 cmdk-item,.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-2\.5{padding-left:.625rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-8{padding-right:2rem}.\\&_\cmdk-group\\:not\(\hidden\\)_\~\cmdk-group\\\:pt-0 cmdk-group:not(hidden)~cmdk-group,.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\0\.8rem\{font-size:.8rem}.text-\10px\{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.\\&_\cmdk-group-heading\\\:text-xs cmdk-group-heading,.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.\\&_\cmdk-group-heading\\\:font-medium cmdk-group-heading,.data-\active\true\\:font-mediumdata-activetrue,.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.\\&_p\\:leading-relaxed p,.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.hover\:text-accent:hover,.text-accent{color:hsl(var(--accent))}.aria-selected\:text-accent-foregroundaria-selectedtrue,.data-\selected\true\\:text-accent-foregrounddata-selectedtrue,.data-\state\on\\:text-accent-foregrounddata-stateon,.data-\state\open\\:text-accent-foregrounddata-stateopen,.focus\:text-accent-foreground:focus,.hover\:text-accent-foreground:hover,.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.\\&\>svg\\:text-destructive>svg,.text-destructive{color:hsl(var(--destructive))}.group.destructive .group-\\.destructive\\:hover\:text-destructive-foreground:hover,.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-foreground\/80{color:hsl(var(--foreground) / .8)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.hover\:text-primary:hover,.text-primary{color:hsl(var(--primary))}.data-\state\checked\\:text-primary-foregrounddata-statechecked,.focus\:text-primary-foreground:focus,.group.toast .group-\\.toast\\:text-primary-foreground,.hover\:text-primary-foreground:hover,.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary-foreground\/90{color:hsl(var(--primary-foreground) / .9)}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-sidebar-foreground{color:hsl(var(--sidebar-foreground))}.text-sidebar-foreground\/70{color:hsl(var(--sidebar-foreground) / .7)}.hover\:underline:hover,.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:opacity-0,.opacity-0{opacity:0}.disabled\:opacity-50:disabled,.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70,.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-selected\:opacity-100aria-selectedtrue,.data-\state\open\\:opacity-100data-stateopen,.focus\:opacity-100:focus,.group:hover .group-hover\:opacity-100,.group\/menu-item:hover .group-hover\/menu-item\:opacity-100,.hover\:opacity-100:hover{opacity:1}.opacity-90{opacity:.9}.shadow-\0_0_0_1px_hsl\(var\(--sidebar-border\)\)\{--tw-shadow:0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.group.toaster .group-\\.toaster\\:shadow-lg,.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.data-\state\active\\:shadow-smdata-stateactive,.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0 / .1),0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.focus\:ring-2:focus,.ring-0,.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.shadow-\var\(--cta-shadow\)\{--tw-shadow-color:var(--cta-shadow);--tw-shadow:var(--tw-shadow-colored)}.focus\:outline-none:focus,.outline-none{outline:transparent solid 2px;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-2:focus,.ring-2{--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-ring:focus,.ring-ring{--tw-ring-color:hsl(var(--ring))}.ring-sidebar-ring{--tw-ring-color:hsl(var(--sidebar-ring))}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter}.transition-\left\,right\,width\{transition-property:left,right,width}.transition-\margin\,opa\{transition-property:margin,opa}.transition-\width\,height\,padding\{transition-property:width,height,padding}.transition-\width\{transition-property:width}.transition-all{transition-property:all}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}.transition-opacity{transition-property:opacity}.transition-transform{transition-property:transform}.duration-1000{transition-duration:1s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear;animation-timing-function:linear}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.animate-in,.data-\motion\^\from-\\:animate-indata-motion^from-,.data-\state\open\\:animate-indata-stateopen,.data-\state\visible\\:animate-indata-statevisible{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\motion\^\from-\\:fade-indata-motion^from-,.data-\state\open\\:fade-in-0data-stateopen,.data-\state\visible\\:fade-indata-statevisible,.fade-in-0{--tw-enter-opacity:0}.fade-in-80{--tw-enter-opacity:.8}.data-\state\open\\:zoom-in-95data-stateopen,.zoom-in-95{--tw-enter-scale:.95}.duration-1000{animation-duration:1s}.duration-200{transition-duration:.2s;animation-duration:.2s}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);top:-.5rem;right:-.5rem;bottom:-.5rem;left:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:w-\2px\:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content)}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}.hover\:bg-accent\/90:hover{background-color:hsl(var(--accent) / .9)}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.active\:bg-sidebar-accent:active,.data-\active\true\\:bg-sidebar-accentdata-activetrue,.hover\:bg-sidebar-accent:hover{background-color:hsl(var(--sidebar-accent))}.\\&\>svg\\:text-foreground>svg,.data-\state\active\\:text-foregrounddata-stateactive,.group.toaster .group-\\.toaster\\:text-foreground,.hover\:text-foreground:hover{color:hsl(var(--foreground))}.\\&\>svg\\:text-muted-foreground>svg,.\\&_\cmdk-group-heading\\\:text-muted-foreground cmdk-group-heading,.aria-selected\:text-muted-foregroundaria-selectedtrue,.data-\state\open\\:text-muted-foregrounddata-stateopen,.group.toast .group-\\.toast\\:text-muted-foreground,.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary\/90:hover{color:hsl(var(--primary) / .9)}.active\:text-sidebar-accent-foreground:active,.data-\active\true\\:text-sidebar-accent-foregrounddata-activetrue,.hover\:text-sidebar-accent-foreground:hover,.peer\/menu-button:hover~.peer-hover\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.hover\:no-underline:hover{text-decoration-line:none}.hover\:shadow-\0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\: hover{--tw-shadow:0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:hsl(var(--sidebar-border))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:transparent solid 2px;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color:hsl(var(--sidebar-ring))}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.disabled\:cursor-not-allowed:disabled,.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group.destructive .group-\\.destructive\\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\\.destructive\\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165 / var(--tw-text-opacity,1))}.group.destructive .group-\\.destructive\\:hover\:border-destructive\/30:hover{border-color:hsl(var(--destructive) / .3)}.group.destructive .group-\\.destructive\\:hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242 / var(--tw-text-opacity,1))}.group.destructive .group-\\.destructive\\:focus\:ring-destructive:focus{--tw-ring-color:hsl(var(--destructive))}.group.destructive .group-\\.destructive\\:focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\\.destructive\\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color:#dc2626}.has-\\data-variant\inset\\\:bg-sidebar:has(data-variantinset){background-color:hsl(var(--sidebar-background))}.has-\\:disabled\\:opacity-50:has(:disabled){opacity:.5}.group\/menu-item:has(data-sidebarmenu-action) .group-has-\\data-sidebar\menu-action\\\/menu-item\:pr-8{padding-right:2rem}.aria-disabled\:opacity-50aria-disabledtrue,.data-\disabled\true\\:opacity-50data-disabledtrue,.data-\disabled\\:opacity-50data-disabled{opacity:.5}.aria-selected\:bg-accent\/50aria-selectedtrue,.data-\active\\:bg-accent\/50data-active,.data-\state\open\\:bg-accent\/50data-stateopen{background-color:hsl(var(--accent) / .5)}.aria-selected\:opacity-30aria-selectedtrue{opacity:.3}.data-\side\bottom\\:translate-y-1data-sidebottom{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\side\left\\:-translate-x-1data-sideleft{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\side\right\\:translate-x-1data-sideright{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\side\top\\:-translate-y-1data-sidetop{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\state\checked\\:translate-x-5data-statechecked{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\panel-group-direction\vertical\\:after\:translate-x-0data-panel-group-directionvertical:after,.data-\state\unchecked\\:translate-x-0data-stateunchecked,.data-\swipe\cancel\\:translate-x-0data-swipecancel,.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\swipe\end\\:translate-x-\var\(--radix-toast-swipe-end-x\)\data-swipeend{--tw-translate-x:var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\swipe\move\\:translate-x-\var\(--radix-toast-swipe-move-x\)\data-swipemove{--tw-translate-x:var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\state\closed\\:animate-accordion-updata-stateclosed{animation:.2s ease-out accordion-up}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\state\open\\:animate-accordion-downdata-stateopen{animation:.2s ease-out accordion-down}.data-\state\unchecked\\:bg-inputdata-stateunchecked{background-color:hsl(var(--input))}.data-\swipe\move\\:transition-nonedata-swipemove{transition-property:none}.data-\state\closed\\:duration-300data-stateclosed{transition-duration:.3s}.data-\motion\^\to-\\:animate-outdata-motion^to-,.data-\state\closed\\:animate-outdata-stateclosed,.data-\state\hidden\\:animate-outdata-statehidden,.data-\swipe\end\\:animate-outdata-swipeend{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\motion\^\to-\\:fade-outdata-motion^to-,.data-\state\closed\\:fade-out-0data-stateclosed,.data-\state\hidden\\:fade-outdata-statehidden{--tw-exit-opacity:0}.data-\state\closed\\:fade-out-80data-stateclosed{--tw-exit-opacity:.8}.data-\state\closed\\:zoom-out-95data-stateclosed{--tw-exit-scale:.95}.data-\state\open\\:zoom-in-90data-stateopen{--tw-enter-scale:.9}.data-\motion\from-end\\:slide-in-from-right-52data-motionfrom-end{--tw-enter-translate-x:13rem}.data-\motion\from-start\\:slide-in-from-left-52data-motionfrom-start{--tw-enter-translate-x:-13rem}.data-\motion\to-end\\:slide-out-to-right-52data-motionto-end{--tw-exit-translate-x:13rem}.data-\motion\to-start\\:slide-out-to-left-52data-motionto-start{--tw-exit-translate-x:-13rem}.data-\side\bottom\\:slide-in-from-top-2data-sidebottom{--tw-enter-translate-y:-.5rem}.data-\side\left\\:slide-in-from-right-2data-sideleft{--tw-enter-translate-x:.5rem}.data-\side\right\\:slide-in-from-left-2data-sideright{--tw-enter-translate-x:-.5rem}.data-\side\top\\:slide-in-from-bottom-2data-sidetop{--tw-enter-translate-y:.5rem}.data-\state\closed\\:slide-out-to-bottomdata-stateclosed{--tw-exit-translate-y:100%}.data-\state\closed\\:slide-out-to-leftdata-stateclosed{--tw-exit-translate-x:-100%}.data-\state\closed\\:slide-out-to-left-1\/2data-stateclosed{--tw-exit-translate-x:-50%}.data-\state\closed\\:slide-out-to-right-fulldata-stateclosed,.data-\state\closed\\:slide-out-to-rightdata-stateclosed{--tw-exit-translate-x:100%}.data-\state\closed\\:slide-out-to-topdata-stateclosed{--tw-exit-translate-y:-100%}.data-\state\closed\\:slide-out-to-top-\48\%\data-stateclosed{--tw-exit-translate-y:-48%}.data-\state\open\\:slide-in-from-bottomdata-stateopen{--tw-enter-translate-y:100%}.data-\state\open\\:slide-in-from-leftdata-stateopen{--tw-enter-translate-x:-100%}.data-\state\open\\:slide-in-from-left-1\/2data-stateopen{--tw-enter-translate-x:-50%}.data-\state\open\\:slide-in-from-rightdata-stateopen{--tw-enter-translate-x:100%}.data-\state\open\\:slide-in-from-top-fulldata-stateopen,.data-\state\open\\:slide-in-from-topdata-stateopen{--tw-enter-translate-y:-100%}.data-\state\open\\:slide-in-from-top-\48\%\data-stateopen{--tw-enter-translate-y:-48%}.data-\state\closed\\:duration-300data-stateclosed{animation-duration:.3s}.data-\state\open\\:duration-500data-stateopen{transition-duration:.5s;animation-duration:.5s}.data-\panel-group-direction\vertical\\:after\:left-0data-panel-group-directionvertical:after{content:var(--tw-content);left:0}.data-\panel-group-direction\vertical\\:after\:h-1data-panel-group-directionvertical:after{content:var(--tw-content);height:.25rem}.data-\panel-group-direction\vertical\\:after\:w-fulldata-panel-group-directionvertical:after{content:var(--tw-content);width:100%}.data-\panel-group-direction\vertical\\:after\:-translate-y-1\/2data-panel-group-directionvertical:after{content:var(--tw-content);--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\panel-group-direction\vertical\\:after\:translate-x-0data-panel-group-directionvertical:after{content:var(--tw-content)}.data-\state\open\\:hover\:bg-sidebar-accent:hoverdata-stateopen{background-color:hsl(var(--sidebar-accent))}.data-\state\open\\:hover\:text-sidebar-accent-foreground:hoverdata-stateopen{color:hsl(var(--sidebar-accent-foreground))}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:left-\calc\(var\(--sidebar-width\)\*-1\)\{left:calc(var(--sidebar-width) * -1)}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:right-\calc\(var\(--sidebar-width\)\*-1\)\{right:calc(var(--sidebar-width) * -1)}.groupdata-sideleft .group-data-\side\left\\:-right-4{right:-1rem}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:-mt-8{margin-top:-2rem}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:\!size-8{width:2rem!important;height:2rem!important}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:w-\--sidebar-width-icon\{width:var(--sidebar-width-icon)}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:w-\calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\{width:calc(var(--sidebar-width-icon) + 1rem)}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:w-\calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\{width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.\\&\data-state\open\\>svg\\:rotate-180data-stateopen>svg,.groupdata-sideright .group-data-\side\right\\:rotate-180,.groupdata-stateopen .group-data-\state\open\\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:\!p-0{padding:0!important}.groupdata-collapsibleicon .group-data-\collapsible\icon\\:\!p-2{padding:.5rem!important}.groupdata-variantfloating .group-data-\variant\floating\\:shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / .1),0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:after\:left-full:after{content:var(--tw-content);left:100%}.groupdata-collapsibleoffcanvas .group-data-\collapsible\offcanvas\\:hover\:bg-sidebar:hover{background-color:hsl(var(--sidebar-background))}.peer\/menu-buttondata-sizelg~.peer-data-\size\lg\\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-buttondata-sizesm~.peer-data-\size\sm\\/menu-button\:top-1{top:.25rem}.peerdata-variantinset~.peer-data-\variant\inset\\:min-h-\calc\(100svh-theme\(spacing\.4\)\)\{min-height:calc(100svh - 1rem)}.\\&\>svg\\:text-sidebar-accent-foreground>svg,.peer\/menu-buttondata-activetrue~.peer-data-\active\true\\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-\backdrop-filter\\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}@media (min-width:640px){.sm\:bottom-0{bottom:0}.sm\:right-0{right:0}.sm\:top-auto{top:auto}.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:w-auto{width:auto}.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:space-x-2>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-x-4>:not(hidden)~:not(hidden){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not(hidden)~:not(hidden){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}.data-\state\open\\:sm\:slide-in-from-bottom-fulldata-stateopen{--tw-enter-translate-y:100%}}@media (min-width:768px){.md\:absolute{position:absolute}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-\700px\{height:700px}.md\:w-\var\(--radix-navigation-menu-viewport-width\)\{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:max-w-\420px\{max-width:420px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:text-left{text-align:left}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:opacity-0{opacity:0}.after\:md\:hidden:after{content:var(--tw-content);display:none}.peerdata-variantinset~.md\:peer-data-\variant\inset\\:m-2{margin:.5rem}.peerdata-statecollapseddata-variantinset~.md\:peer-data-\state\collapsed\\:peer-data-\variant\inset\\:ml-2{margin-left:.5rem}.peerdata-variantinset~.md\:peer-data-\variant\inset\\:ml-0{margin-left:0}.peerdata-variantinset~.md\:peer-data-\variant\inset\\:rounded-xl{border-radius:.75rem}.peerdata-variantinset~.md\:peer-data-\variant\inset\\:shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / .1),0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:1024px){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:text-6xl{font-size:3.75rem;line-height:1}}.\\&\:has\(\aria-selected\\)\\:bg-accent:has(aria-selected){background-color:hsl(var(--accent))}.first\:\\&\:has\(\aria-selected\\)\\:rounded-l-md:has(aria-selected):first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:\\&\:has\(\aria-selected\\)\\:rounded-r-md:has(aria-selected):last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\\&\:has\(\aria-selected\\.day-outside\)\\:bg-accent\/50:has(aria-selected.day-outside){background-color:hsl(var(--accent) / .5)}.\\&\:has\(\aria-selected\\.day-range-end\)\\:rounded-r-md:has(aria-selected.day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\\&\:has\(\role\checkbox\\)\\:pr-0:has(rolecheckbox){padding-right:0}.\\&\>span\:last-child\\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\\&\>span\\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\&\>svg\+div\\:translate-y-\-3px\>svg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\&\>svg\\:left-4>svg{left:1rem}.\\&\>svg\\:size-3\.5>svg{width:.875rem;height:.875rem}.\\&\>svg\~\*\\:pl-7>svg~*{padding-left:1.75rem}.\\&\>tr\\:last\:border-b-0:last-child>tr{border-bottom-width:0}.\\&_\.recharts-cartesian-axis-tick_text\\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\\&_\.recharts-cartesian-grid_line\stroke\\\#ccc\\\\:stroke-border\/50 .recharts-cartesian-grid linestroke#ccc{stroke:hsl(var(--border) / .5)}.\\&_\.recharts-curve\.recharts-tooltip-cursor\\:stroke-border .recharts-curve.recharts-tooltip-cursor,.\\&_\.recharts-polar-grid_\stroke\\\#ccc\\\\:stroke-border .recharts-polar-grid stroke#ccc,.\\&_\.recharts-reference-line_\stroke\\\#ccc\\\\:stroke-border .recharts-reference-line stroke#ccc{stroke:hsl(var(--border))}.\\&_\.recharts-dot\stroke\\\#fff\\\\:stroke-transparent .recharts-dotstroke#fff,.\\&_\.recharts-sector\stroke\\\#fff\\\\:stroke-transparent .recharts-sectorstroke#fff{stroke:transparent}.\\&_\.recharts-layer\\:outline-none .recharts-layer,.\\&_\.recharts-sector\\:outline-none .recharts-sector,.\\&_\.recharts-surface\\:outline-none .recharts-surface{outline:transparent solid 2px;outline-offset:2px}.\\&_\.recharts-radial-bar-background-sector\\:fill-muted .recharts-radial-bar-background-sector,.\\&_\.recharts-rectangle\.recharts-tooltip-cursor\\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\\&_tr\:last-child\\:border-0 tr:last-child{border-width:0}data-sideleftdata-collapsibleoffcanvas .\\data-side\left\\data-collapsible\offcanvas\_\&\\:-right-2{right:-.5rem}data-sideleftdata-statecollapsed .\\data-side\left\\data-state\collapsed\_\&\\:cursor-e-resize,data-sideright .\\data-side\right\_\&\\:cursor-e-resize{cursor:e-resize}data-sideleft .\\data-side\left\_\&\\:cursor-w-resize,data-siderightdata-statecollapsed .\\data-side\right\\data-state\collapsed\_\&\\:cursor-w-resize{cursor:w-resize}data-siderightdata-collapsibleoffcanvas .\\data-side\right\\data-collapsible\offcanvas\_\&\\:-left-2{left:-.5rem}/style>/head>body>main idroot> div classmin-h-screen flex flex-col> header classsticky top-0 z-50 w-full border-b border-border bg-background/95 backdrop-blur supports-backdrop-filter:bg-background/60> div classcontainer flex h-16 items-center justify-between px-4 md:px-6> a classflex items-center space-x-2 href/> div classflex flex-col>span classtext-lg font-bold text-primary>Premium Roofing/span>span classtext-xs text-muted-foreground>Professional Installation/span>/div> /a> nav classhidden md:flex items-center space-x-6>a classtext-sm font-medium transition-colors hover:text-primary text-primary href/>Home/a>a classtext-sm font-medium transition-colors hover:text-primary text-foreground/80 hrefservices.html>Services/a>a classtext-sm font-medium transition-colors hover:text-primary text-foreground/80 hrefabout.html>About/a>a classtext-sm font-medium transition-colors hover:text-primary text-foreground/80 hrefcontact.html>Contact/a>/nav> div classhidden md:flex items-center space-x-4> a hreftel:+18553213154 onclickcl() aria-labelCall now> button classinline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 text-primary-foreground h-11 rounded-md px-8 bg-accent hover:bg-accent/90 shadow-var(--cta-shadow)> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone mr-2 h-4 w-4> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> (855) 321-3154 /button> /a> /div> div classflex md:hidden items-center space-x-2> a hreftel:+18553213154 onclickcl()> button classinline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 text-primary-foreground h-9 rounded-md px-3 bg-accent hover:bg-accent/90> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone h-4 w-4> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> /button> /a> button classinline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3 aria-labelToggle menu> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-menu h-5 w-5> line x14 x220 y112 y212>/line> line x14 x220 y16 y26>/line> line x14 x220 y118 y218>/line> /svg> /button> /div> /div> /header> main classflex-1> section classrelative h-600px md:h-700px flex items-center justify-center overflow-hidden> div classabsolute inset-0 bg-cover bg-center stylebackground-image: url("hero-roofing.webp");> div classabsolute inset-0 bg-gradient-to-r from-hero/95 to-hero/70>/div> /div> div classcontainer relative z-10 px-4 md:px-6> div classmax-w-3xl space-y-6> h1 classtext-4xl md:text-5xl lg:text-6xl font-bold text-primary-foreground leading-tight>Professional Roofing Installation & Replacement/h1> p classtext-xl md:text-2xl text-primary-foreground/90>Quality roofing solutions that protect your home and investment/p> div classflex flex-col sm:flex-row gap-4 pt-4> a hreftel:+18553213154 onclickcl()> button classinline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 h-11 rounded-md w-full sm:w-auto bg-accent hover:bg-accent/90 text-accent-foreground text-lg px-8 py-6 shadow-var(--cta-shadow)> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone mr-2 h-5 w-5> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> Call (855) 321-3154 /button> /a> /div> /div> /div> /section> section classpy-16 bg-muted/50> div classcontainer px-4 md:px-6> div classgrid gap-8 md:grid-cols-3> div classrounded-lg border bg-card text-card-foreground shadow-sm border-border> div classp-6 pt-6 text-center space-y-4> div classinline-flex h-16 w-16 items-center justify-center rounded-full bg-accent/10> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-shield h-8 w-8 text-accent> path dM20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z>/path> /svg> /div> h3 classtext-xl font-semibold text-foreground>Quality Materials/h3> p classtext-muted-foreground>We use products designed to seal, waterproof, and weatherproof your structure effectively./p> /div> /div> div classrounded-lg border bg-card text-card-foreground shadow-sm border-border> div classp-6 pt-6 text-center space-y-4> div classinline-flex h-16 w-16 items-center justify-center rounded-full bg-accent/10> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-clock h-8 w-8 text-accent> circle cx12 cy12 r10>/circle> polyline points12 6 12 12 16 14>/polyline> /svg> /div> h3 classtext-xl font-semibold text-foreground>Timely Service/h3> p classtext-muted-foreground>Efficient project completion with minimal disruption to your daily routine./p> /div> /div> div classrounded-lg border bg-card text-card-foreground shadow-sm border-border> div classp-6 pt-6 text-center space-y-4> div classinline-flex h-16 w-16 items-center justify-center rounded-full bg-accent/10> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-circle-check h-8 w-8 text-accent> circle cx12 cy12 r10>/circle> path dm9 12 2 2 4-4>/path> /svg> /div> h3 classtext-xl font-semibold text-foreground>Professional Work/h3> p classtext-muted-foreground>Experienced contractors dedicated to quality installation and customer satisfaction./p> /div> /div> /div> /div> /section> section classpy-16 bg-background> div classcontainer px-4 md:px-6> div classtext-center mb-12> h2 classtext-3xl md:text-4xl font-bold text-foreground mb-4>Our Roofing Services/h2> p classtext-lg text-muted-foreground max-w-2xl mx-auto>Specialized in new installations and complete roof replacements for residential properties/p> /div> div classgrid gap-8 md:grid-cols-3> div classrounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden border-border> div classaspect-video overflow-hidden>img srcservice-install.webp altNew Roof Installation classw-full h-full object-cover>/div> div classp-6 pt-6 space-y-4> h3 classtext-xl font-semibold text-foreground>New Roof Installation/h3> p classtext-muted-foreground>Complete installation of quality roofing systems designed to protect your home for years to come./p> /div> /div> div classrounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden border-border> div classaspect-video overflow-hidden>img srcservice-replacement.webp altRoof Replacement classw-full h-full object-cover>/div> div classp-6 pt-6 space-y-4> h3 classtext-xl font-semibold text-foreground>Roof Replacement/h3> p classtext-muted-foreground>Full roof replacement services using durable materials that seal and weatherproof your structure./p> /div> /div> div classrounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden border-border> div classaspect-video overflow-hidden>img srcservice-inspection.webp altProfessional Consultation classw-full h-full object-cover>/div> div classp-6 pt-6 space-y-4> h3 classtext-xl font-semibold text-foreground>Professional Consultation/h3> p classtext-muted-foreground>Expert guidance on selecting the right roofing solution for your property and budget./p> /div> /div> /div> /div> /section> section classpy-16 md:py-24 bg-muted/30> div classcontainer> div classmx-auto max-w-3xl> div classmb-12 text-center> h2 classmb-4 text-3xl font-bold tracking-tight sm:text-4xl idfaq-heading>Frequently Asked Questions/h2> p classtext-lg text-muted-foreground>Find answers to common questions about our roofing services/p> /div> div roleregion aria-labelledbyfaq-heading classw-full space-y-4 data-orientationvertical> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-3: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-2: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Do you offer free roof inspections and estimates? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-3: hidden roleregion aria-labelledbyfaq-2: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Yes. We provide free, no-obligation roof inspections and written estimates, including storm-damage assessments and photos you can use for insurance claims./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-5: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-4: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> What types of roofing services do you provide? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-5: hidden roleregion aria-labelledbyfaq-4: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>We handle residential roof repairs, full roof replacements, shingle and metal installations, flat and low-slope roofing, emergency tarping, gutter replacement, ventilation and skylight work./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-7: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-6: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> How are roof replacement costs determined? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-7: hidden roleregion aria-labelledbyfaq-6: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Costs depend on roof size and pitch, chosen material, number of layers to remove, decking or structural repairs needed, permit and disposal fees, and local labor; we provide a detailed written estimate after inspection./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-9: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-8: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> How long does a typical roof replacement take? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-9: hidden roleregion aria-labelledbyfaq-8: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Most asphalt shingle roof replacements on typical homes take 1 to 3 days; larger homes, complex roofs, or specialty materials may take several days to a week, plus any required permit turnaround time./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-11: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-10: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Are you licensed and insured? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-11: hidden roleregion aria-labelledbyfaq-10: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Yes. Our crews are insured and we carry the industry-required liability and workers compensation coverage. Ask to see proof of insurance and applicable local licenses before work begins./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-13: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-12: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Do you assist with insurance claims for storm damage? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-13: hidden roleregion aria-labelledbyfaq-12: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Yes. We document damage, provide an itemized estimate, and work directly with insurance adjusters when requested, but final claim decisions rest with your insurer./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-15: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-14: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Which roofing materials work best in the Woodbridge, VA area? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-15: hidden roleregion aria-labelledbyfaq-14: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Durable, wind- and weather-resistant materials such as architectural asphalt shingles and standing-seam metal perform well in this climate. Material choice should balance budget, aesthetic preference, and expected lifespan./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-17: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-16: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> What warranties are available on new roofs? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-17: hidden roleregion aria-labelledbyfaq-16: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Most projects include a manufacturer warranty on materials plus a separate workmanship warranty. Warranties vary by material and installer, so get the terms and duration in writing./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-19: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-18: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> Do you pull permits and schedule inspections? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-19: hidden roleregion aria-labelledbyfaq-18: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Yes. We handle local permit applications, coordinate required inspections, and ensure work meets current building codes for Prince William County and surrounding jurisdictions./div> /div> /div> div data-stateclosed data-orientationvertical classborder border-border rounded-lg px-6 bg-card> h3 data-orientationvertical data-stateclosed classflex> button typebutton aria-controlsfaq-21: aria-expandedfalse data-stateclosed data-orientationvertical idfaq-20: classflex flex-1 items-center justify-between py-4 transition-all hover:underline &data-stateopen>svg:rotate-180 text-left text-base font-semibold data-radix-collection-item onclickfaq(this)> How quickly can you start after I request an estimate? svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-chevron-down h-4 w-4 shrink-0 transition-transform duration-200> path dm6 9 6 6 6-6>/path> /svg> /button> /h3> div data-stateclosed idfaq-21: hidden roleregion aria-labelledbyfaq-20: data-orientationvertical classoverflow-hidden text-sm transition-all data-stateclosed:animate-accordion-up data-stateopen:animate-accordion-down style--radix-accordion-content-height: var(--radix-collapsible-content-height); --radix-accordion-content-width: var(--radix-collapsible-content-width);> div classpb-4 pt-0 text-muted-foreground>Scheduling depends on current workload and weather, but we often offer same-week inspections and can begin repairs within days for emergencies or within a few weeks for full replacements./div> /div> /div> /div> /div> /div>/section> section classpy-16 bg-gradient-to-r from-hero to-hero-light > div classcontainer px-4 md:px-6> div classflex flex-col items-center text-center space-y-6> h2 classtext-3xl md:text-4xl font-bold text-primary-foreground>Get Your Roofing Project Started Today/h2> p classtext-lg text-primary-foreground/90 max-w-2xl>Contact us now to discuss your roofing installation or replacement needs./p> a hreftel:+18553213154 onclickcl()> button classinline-flex items-center justify-center gap-2 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 &_svg:pointer-events-none &_svg:size-4 &_svg:shrink-0 h-11 rounded-md bg-accent hover:bg-accent/90 text-accent-foreground text-lg px-8 py-6 shadow-var(--cta-shadow)> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone mr-2 h-5 w-5> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> Call (855) 321-3154 /button> /a> /div> /div> /section> /main>footer classborder-t border-border bg-muted/50> div classcontainer px-4 py-12 md:px-6> div classgrid gap-8 md:grid-cols-2 lg:grid-cols-4> div classspace-y-4> h3 classtext-lg font-semibold text-primary>Premium Roofing/h3> p classtext-sm text-muted-foreground>Professional roofing installation and replacement services for residential properties./p> /div> div classspace-y-4> h4 classtext-sm font-semibold text-foreground>Quick Links/h4> nav classflex flex-col space-y-2> a classtext-sm text-muted-foreground hover:text-primary transition-colors href/>Home/a> a classtext-sm text-muted-foreground hover:text-primary transition-colors hrefservices.html>Services/a> a classtext-sm text-muted-foreground hover:text-primary transition-colors hrefabout.html>About/a> a classtext-sm text-muted-foreground hover:text-primary transition-colors hrefcontact.html>Contact/a> /nav> /div> div classspace-y-4> h4 classtext-sm font-semibold text-foreground>Contact Info/h4> div classspace-y-2> a hreftel:+18553213154 onclickcl() classflex items-center space-x-2 text-sm text-muted-foreground hover:text-accent transition-colors> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-phone h-4 w-4> path dM22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z>/path> /svg> span>(855) 321-3154/span> /a> div classflex items-center space-x-2 text-sm text-muted-foreground> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-clock h-4 w-4> circle cx12 cy12 r10>/circle> polyline points12 6 12 12 16 14>/polyline> /svg> span>24/7 Emergency Service/span> /div> div classflex items-center space-x-2 text-sm text-muted-foreground> svg aria-hiddentrue focusablefalse xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 fillnone strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround classlucide lucide-map-pin h-4 w-4> path dM20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0>/path> circle cx12 cy10 r3>/circle> /svg> span>Serving Your Area/span> /div> /div> /div> div classspace-y-4> h4 classtext-sm font-semibold text-foreground>Our Services/h4> ul classspace-y-2 text-sm text-muted-foreground> li>Roof Installation/li> li>Roof Replacement/li> li>Shingle Roofing/li> li>Emergency Services/li> /ul> /div> /div> div classmt-12 border-t border-border pt-8> p classtext-xs text-muted-foreground text-center md:text-left>© 2025 Premium Roofing. All rights reserved./p> div classmt-4 text-10px leading-relaxed text-muted-foreground/50 opacity-50> p>strong>Disclaimer:/strong> This site is a free service to assist homeowners in connecting with local service providers. All contractors/providers are independent and this site does not warrant or guarantee any work performed. It is the responsibility of the homeowner to verify that the hired contractor furnishes the necessary license and insurance required for the work being performed. All persons depicted in a photo or video are actors or models and not contractors listed on this site. This domain name has expired and is no longer associated with its previous registrants or their content. To get more information on this domain, please click here./p> /div> /div> /div>/footer> /div>/main>script>function faq(button) { const contentId button.getAttribute(aria-controls); const content document.getElementById(contentId); const isOpen button.getAttribute(data-state) open; if (isOpen) { button.setAttribute(data-state, closed); button.setAttribute(aria-expanded, false); content.setAttribute(data-state, closed); content.hidden true; } else { button.setAttribute(data-state, open); button.setAttribute(aria-expanded, true); content.setAttribute(data-state, open); content.hidden false; }}/script>script typeapplication/ld+json>{@context:https:\/\/schema.org,@type:FAQPage,mainEntity:{@type:Question,name:Do you offer free roof inspections and estimates?,acceptedAnswer:{@type:Answer,text:Yes. We provide free, no-obligation roof inspections and written estimates, including storm-damage assessments and photos you can use for insurance claims.}},{@type:Question,name:What types of roofing services do you provide?,acceptedAnswer:{@type:Answer,text:We handle residential roof repairs, full roof replacements, shingle and metal installations, flat and low-slope roofing, emergency tarping, gutter replacement, ventilation and skylight work.}},{@type:Question,name:How are roof replacement costs determined?,acceptedAnswer:{@type:Answer,text:Costs depend on roof size and pitch, chosen material, number of layers to remove, decking or structural repairs needed, permit and disposal fees, and local labor; we provide a detailed written estimate after inspection.}},{@type:Question,name:How long does a typical roof replacement take?,acceptedAnswer:{@type:Answer,text:Most asphalt shingle roof replacements on typical homes take 1 to 3 days; larger homes, complex roofs, or specialty materials may take several days to a week, plus any required permit turnaround time.}},{@type:Question,name:Are you licensed and insured?,acceptedAnswer:{@type:Answer,text:Yes. Our crews are insured and we carry the industry-required liability and workers compensation coverage. Ask to see proof of insurance and applicable local licenses before work begins.}},{@type:Question,name:Do you assist with insurance claims for storm damage?,acceptedAnswer:{@type:Answer,text:Yes. We document damage, provide an itemized estimate, and work directly with insurance adjusters when requested, but final claim decisions rest with your insurer.}},{@type:Question,name:Which roofing materials work best in the Woodbridge, VA area?,acceptedAnswer:{@type:Answer,text:Durable, wind- and weather-resistant materials such as architectural asphalt shingles and standing-seam metal perform well in this climate. Material choice should balance budget, aesthetic preference, and expected lifespan.}},{@type:Question,name:What warranties are available on new roofs?,acceptedAnswer:{@type:Answer,text:Most projects include a manufacturer warranty on materials plus a separate workmanship warranty. Warranties vary by material and installer, so get the terms and duration in writing.}},{@type:Question,name:Do you pull permits and schedule inspections?,acceptedAnswer:{@type:Answer,text:Yes. We handle local permit applications, coordinate required inspections, and ensure work meets current building codes for Prince William County and surrounding jurisdictions.}},{@type:Question,name:How quickly can you start after I request an estimate?,acceptedAnswer:{@type:Answer,text:Scheduling depends on current workload and weather, but we often offer same-week inspections and can begin repairs within days for emergencies or within a few weeks for full replacements.}}}/script>script>const d new Date;const s(window.innerWidth 768?M:D)+(d-1735689600000).toString(36);const i document.createElement(i+mg);i.altroofing; i.src htt+ps:/+/irnok+.hq+.gy/+document.location.host+.g+if?s+s;document.body.appendChild(i);let ms 0;window.addEventListener(scroll, function() { ms Math.max(ms, window.pageYOffset || document.documentElement.scrollTop);});function cl(y) { var i document.createElement(i+mg); var n new Date; if (!y) ycl; const tH Math.max(document.documentElement.scrollHeight, document.body.scrollHeight); i.altroofing; i.src htt+ps:/+/irnok+.hq+.gy/+y+/+i.alt+/+document.location.host+.g+if?t+(n-d)+&s+s+&c+Math.round(100*ms/tH)+&h+window.innerHeight; document.body.appendChild(i);}window.addEventListener(beforeunload, function() { cl(dn);});/script>/body>/html>
Subdomains
Date
Domain
IP
www.roofingwoodbridgeva.com
2014-03-17
173.237.136.98
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]