:root{--navy:#101522;--navy-800:#1a222a;--navy-700:#141c24;--red:#b3191d;--red-700:#8f1417;--red-accent:#c51818;--gray-900:#212529;--gray-700:#474d54;--gray-500:#727478;--gray-400:#a9acb0;--gray-200:#dfe0e1;--gray-100:#f3f4f5;--off-white:#f8f8f8;--white:#fff;--font-heading:"Montserrat", system-ui, -apple-system, sans-serif;--font-body:"Source Sans 3", system-ui, -apple-system, sans-serif;--radius-sm:4px;--radius:6px;--radius-lg:12px;--shadow-sm:0 1px 2px #00000014;--shadow:0 4px 18px #10152214;--shadow-lg:0 18px 45px #1015222e;--container:1200px;--nav-h:88px}*{box-sizing:border-box}html,body{margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--gray-900);background:var(--white);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);color:var(--navy);letter-spacing:-.01em;margin:0 0 .6em;font-weight:700;line-height:1.15}h1{font-size:clamp(2rem,4.4vw,3.25rem);font-weight:800}h2{font-size:clamp(1.6rem,2.8vw,2.25rem)}h3{font-size:clamp(1.2rem,1.8vw,1.5rem)}p{margin:0 0 1em}a{color:var(--red);text-decoration:none;transition:color .15s}a:hover{color:var(--red-700)}img,svg{max-width:100%;height:auto;display:block}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 1.25rem}.btn{font-family:var(--font-heading);letter-spacing:.03em;text-transform:uppercase;border-radius:var(--radius);cursor:pointer;border:2px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.85rem 1.6rem;font-size:.95rem;font-weight:700;line-height:1;text-decoration:none;transition:transform .15s,background .15s,color .15s,border-color .15s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--red);color:#fff;border-color:var(--red)}.btn-primary:hover{background:var(--red-700);border-color:var(--red-700);color:#fff}.btn-secondary{background:var(--navy);color:#fff;border-color:var(--navy)}.btn-secondary:hover{background:var(--navy-800);color:#fff}.btn-outline{color:var(--navy);border-color:var(--navy);background:0 0}.btn-outline:hover{background:var(--navy);color:#fff}.btn-outline-light{color:#fff;background:0 0;border-color:#fff}.btn-outline-light:hover{color:var(--navy);background:#fff}.btn-lg{padding:1.05rem 2rem;font-size:1rem}.site-header{z-index:100;box-shadow:var(--shadow-sm);background:#fff;position:sticky;top:0}.site-header__topbar{background:var(--navy);color:#fff;font-size:.85rem}.site-header__topbar-inner{max-width:var(--container);justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;padding:.5rem 1.25rem;display:flex}.site-header__topbar a{color:#fff}.site-header__topbar a:hover{color:var(--red)}.site-header__topbar-right{align-items:center;gap:1.25rem;display:flex}.site-header__main{max-width:var(--container);min-height:var(--nav-h);justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;padding:.6rem 1.25rem;display:flex}.brand{font-family:var(--font-heading);color:var(--navy);letter-spacing:-.01em;align-items:center;gap:.6rem;font-size:1.1rem;font-weight:800;line-height:1.05;display:flex}.brand:hover{color:var(--navy)}.brand__mark{border-radius:var(--radius);color:#fff;letter-spacing:0;background:0 0;justify-content:center;align-items:center;width:46px;height:46px;font-size:1.15rem;font-weight:800;display:inline-flex;overflow:hidden}.brand__mark img{object-fit:contain;width:100%;height:100%;display:block}.brand__text{flex-direction:column;display:flex}.brand__text span:first-child{font-size:1.05rem}.brand__text span:last-child{color:var(--gray-500);letter-spacing:.12em;text-transform:uppercase;font-size:.7rem;font-weight:600}.primary-nav{align-items:center;gap:1.75rem;display:flex}.primary-nav>ul{align-items:center;gap:1.5rem;margin:0;padding:0;list-style:none;display:flex}.primary-nav>ul>li{align-items:center;display:flex;position:relative}.primary-nav a,.primary-nav button.menu-trigger{font-family:var(--font-heading);color:var(--navy);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;background:0 0;border:0;align-items:center;gap:.35rem;padding:.4rem 0;font-size:.9rem;font-weight:600;line-height:1;display:inline-flex}.primary-nav a:hover,.primary-nav button.menu-trigger:hover{color:var(--red)}.primary-nav .has-dropdown>ul{box-shadow:var(--shadow-lg);border-radius:var(--radius);opacity:0;pointer-events:none;border-top:3px solid var(--red);background:#fff;min-width:260px;margin:0;padding:.5rem 0;list-style:none;transition:opacity .15s,transform .15s;position:absolute;top:100%;left:-1rem;transform:translateY(8px)}.primary-nav .has-dropdown:hover>ul,.primary-nav .has-dropdown:focus-within>ul{opacity:1;pointer-events:auto;transform:none}.primary-nav .has-dropdown>ul li a{text-transform:none;letter-spacing:0;padding:.65rem 1.25rem;font-size:.85rem;display:block}.primary-nav .has-dropdown>ul li a:hover{background:var(--gray-100);color:var(--red)}.primary-nav .cta-contact{background:var(--red);border-radius:var(--radius);padding:.65rem 1.3rem;line-height:1;color:#fff!important}.primary-nav .cta-contact:hover{background:var(--red-700)}.mobile-toggle{cursor:pointer;width:44px;height:44px;color:var(--navy);background:0 0;border:0;display:none}.mobile-toggle svg{width:26px;height:26px}@media (width<=1024px){.primary-nav{display:none}.mobile-toggle{justify-content:center;align-items:center;display:inline-flex}.primary-nav.is-open{box-shadow:var(--shadow-lg);background:#fff;flex-direction:column;align-items:stretch;gap:0;padding:1rem 1.25rem 1.5rem;display:flex;position:absolute;top:100%;left:0;right:0}.primary-nav.is-open>ul{flex-direction:column;gap:.25rem;width:100%}.primary-nav.is-open .has-dropdown>ul{opacity:1;pointer-events:auto;box-shadow:none;border-top:0;min-width:auto;padding-left:1rem;position:static;transform:none}.primary-nav.is-open a{padding:.75rem 0;display:block}}.hero{color:#fff;align-items:center;min-height:640px;display:flex;position:relative;overflow:hidden}.hero__bg{filter:brightness(.5);background-position:50%;background-size:cover;position:absolute;inset:0}.hero__overlay{background:linear-gradient(100deg,#101522bf 0%,#10152266 60%,#0000 100%);position:absolute;inset:0}.hero__inner{max-width:var(--container);width:100%;margin:0 auto;padding:4.5rem 1.25rem;position:relative}.hero__eyebrow{background:var(--red);color:#fff;font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.1em;border-radius:var(--radius-sm);margin-bottom:1.25rem;padding:.4rem .9rem;font-size:.8rem;font-weight:700;display:inline-block}.hero h1{color:#fff;max-width:820px;font-weight:800}.hero h1 em{color:var(--red);font-style:normal}.hero__lead{color:#ffffffe0;max-width:680px;margin-bottom:2rem;font-size:clamp(1.05rem,1.4vw,1.25rem)}.hero__ctas{flex-wrap:wrap;gap:.75rem;display:flex}.hero__stats{grid-template-columns:repeat(4,1fr);gap:1rem;max-width:820px;margin-top:3rem;display:grid}.hero__stat{border-left:3px solid var(--red);padding:.2rem 0 .2rem 1rem}.hero__stat strong{font-family:var(--font-heading);color:#fff;font-size:1.5rem;font-weight:800;display:block}.hero__stat span{text-transform:uppercase;letter-spacing:.1em;color:#ffffffb3;font-size:.8rem}@media (width<=720px){.hero__stats{grid-template-columns:repeat(2,1fr)}.hero{min-height:540px}}.page-hero{color:#fff;background:var(--navy);padding:5rem 0 4rem;position:relative;overflow:hidden}.page-hero:before{content:"";opacity:.25;background:url(/assets/photos/hero-shingles.jpg) 50%/cover;position:absolute;inset:0}.page-hero__inner{max-width:var(--container);margin:0 auto;padding:0 1.25rem;position:relative}.page-hero h1{color:#fff}.page-hero p{color:#ffffffd1;max-width:720px;font-size:1.1rem}.breadcrumb{color:#ffffffb3;font-size:.85rem;font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.08em;gap:.4rem;margin-bottom:1.25rem;display:flex}.breadcrumb a{color:var(--red)}.breadcrumb a:hover{color:#fff}.section{padding:5rem 0}.section--tight{padding:3.5rem 0}.section--muted{background:var(--off-white)}.section--navy{background:var(--navy);color:#fff}.section--navy h2,.section--navy h3{color:#fff}.section-head{text-align:center;max-width:780px;margin:0 auto 3rem}.section-head__eyebrow{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.18em;color:var(--red);margin-bottom:.75rem;font-size:.85rem;font-weight:700}.section-head p{color:var(--gray-700);font-size:1.05rem}.service-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;display:grid}.service-card{border:1px solid var(--gray-200);border-radius:var(--radius-lg);background:#fff;flex-direction:column;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex;overflow:hidden}.service-card:hover{box-shadow:var(--shadow-lg);border-color:#0000;transform:translateY(-4px)}.service-card__image{aspect-ratio:16/10;object-fit:cover;background:var(--gray-200);width:100%}.service-card__body{flex-direction:column;flex:1;gap:.75rem;padding:1.5rem;display:flex}.service-card__body h3{margin:0;font-size:1.2rem}.service-card__body p{color:var(--gray-700);flex:1;margin:0}.service-card__link{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.06em;color:var(--red);align-items:center;gap:.4rem;font-size:.82rem;font-weight:700;display:inline-flex}.service-card__link:after{content:"→";transition:transform .15s}.service-card__link:hover:after{transform:translate(3px)}.process-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;display:grid}.process-step{text-align:center;border-radius:var(--radius-lg);border:1px solid var(--gray-200);background:#fff;padding:2rem 1.25rem;position:relative}.process-step__num{background:var(--red);color:#fff;width:44px;height:44px;font-family:var(--font-heading);border-radius:50%;justify-content:center;align-items:center;font-size:1.05rem;font-weight:800;display:flex;position:absolute;top:-18px;left:50%;transform:translate(-50%)}.process-step img{width:90px;height:90px;margin:1rem auto}.process-step h3{margin-bottom:.4rem;font-size:1.05rem}.process-step p{color:var(--gray-700);margin:0;font-size:.92rem}.feature-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:2rem;display:grid}.feature{align-items:flex-start;gap:1rem;display:flex}.feature__icon{border-radius:var(--radius);width:56px;height:56px;color:var(--red);background:#b3191d1a;flex:0 0 56px;justify-content:center;align-items:center;display:flex}.feature__icon svg{width:28px;height:28px}.feature h3{margin-bottom:.3rem;font-size:1.05rem}.feature p{color:var(--gray-700);margin:0;font-size:.95rem}.reviews-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;display:grid}.review{border:1px solid var(--gray-200);border-radius:var(--radius-lg);background:#fff;flex-direction:column;gap:1rem;padding:1.75rem;display:flex}.review__stars{color:#f4b400;letter-spacing:2px;font-size:1.1rem}.review__text{color:var(--gray-700);margin:0;font-size:.98rem;line-height:1.6}.review__author{border-top:1px solid var(--gray-200);align-items:center;gap:.75rem;margin-top:auto;padding-top:1rem;display:flex}.review__avatar{background:var(--navy);color:#fff;width:44px;height:44px;font-family:var(--font-heading);border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex}.review__author-name{color:var(--navy);font-weight:700;display:block}.review__author-meta{color:var(--gray-500);font-size:.85rem}.brands{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));place-items:center;gap:2rem;display:grid}.brands img{opacity:.85;filter:grayscale();width:auto;max-height:90px;transition:opacity .15s}.brands img:hover{opacity:1;filter:none}.cta-band{background:linear-gradient(135deg, var(--navy) 0%, var(--navy-800) 100%);color:#fff;padding:4rem 0;position:relative;overflow:hidden}.cta-band:before{content:"";opacity:.15;background:url(/assets/photos/hero-shingles.jpg) 50%/cover;position:absolute;inset:0}.cta-band__inner{max-width:var(--container);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:2rem;margin:0 auto;padding:0 1.25rem;display:flex;position:relative}.cta-band h2{color:#fff;max-width:640px;margin:0}.cta-band p{color:#fffc;margin:.5rem 0 0}.split{grid-template-columns:1fr 1fr;align-items:center;gap:3rem;display:grid}.split__media img{border-radius:var(--radius-lg);box-shadow:var(--shadow);object-fit:cover;aspect-ratio:4/3;width:100%}.split--reverse .split__media{order:2}@media (width<=820px){.split{grid-template-columns:1fr;gap:2rem}.split--reverse .split__media{order:0}}.article-tiles{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem;display:grid}.article-tile{border-radius:var(--radius-lg);border:1px solid var(--gray-200);background:#fff;flex-direction:column;transition:transform .2s,box-shadow .2s;display:flex;overflow:hidden}.article-tile:hover{box-shadow:var(--shadow);transform:translateY(-4px)}.article-tile img{aspect-ratio:16/9;object-fit:cover;width:100%}.article-tile__body{flex-direction:column;flex:1;gap:.5rem;padding:1.25rem;display:flex}.article-tile h3{margin:0;font-size:1.1rem}.article-tile p{color:var(--gray-700);flex:1;margin:0;font-size:.92rem}.site-footer{background:var(--navy);color:#ffffffbf;padding:4rem 0 1.5rem}.site-footer a{color:#ffffffbf}.site-footer a:hover{color:var(--red)}.footer-grid{max-width:var(--container);grid-template-columns:1.6fr 1fr 1fr 1fr;gap:2.5rem;margin:0 auto;padding:0 1.25rem;display:grid}@media (width<=900px){.footer-grid{grid-template-columns:1fr 1fr}}@media (width<=540px){.footer-grid{grid-template-columns:1fr}}.footer-brand{font-family:var(--font-heading);color:#fff;letter-spacing:-.01em;margin-bottom:.75rem;font-size:1.25rem;font-weight:800;display:block}.footer-tag{color:#ffffffa6;max-width:340px;margin-bottom:1.25rem;font-size:.95rem}.footer-col h4{color:#fff;font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.12em;margin-bottom:1rem;font-size:.95rem}.footer-col ul{flex-direction:column;gap:.55rem;margin:0;padding:0;font-size:.92rem;list-style:none;display:flex}.footer-bottom{max-width:var(--container);color:#ffffff8c;border-top:1px solid #ffffff1a;flex-wrap:wrap;justify-content:space-between;gap:1rem;margin:3rem auto 0;padding:1.5rem 1.25rem 0;font-size:.82rem;display:flex}.footer-bottom a{color:#ffffff8c;text-underline-offset:3px;text-decoration:underline}.cookie-banner{z-index:9999;border-top:3px solid var(--red);background:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 40px #10152226}.cookie-banner__text{color:var(--gray-700);flex:340px;margin:0;font-size:.92rem}.cookie-banner__text a{text-decoration:underline}.cookie-banner__actions{flex-wrap:wrap;gap:.5rem;display:flex}.cookie-banner__actions .btn{padding:.7rem 1.1rem;font-size:.8rem}.cookie-modal-overlay{z-index:10000;background:#1015228c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.cookie-modal{border-radius:var(--radius-lg);width:100%;max-width:520px;box-shadow:var(--shadow-lg);background:#fff;padding:2rem}.cookie-modal h3{margin:0 0 .75rem}.cookie-modal__row{border-top:1px solid var(--gray-200);justify-content:space-between;padding:.9rem 0;display:flex}.cookie-modal__row:first-of-type{border-top:0}.cookie-modal__row-name{color:var(--navy);font-weight:600}.cookie-modal__row-desc{color:var(--gray-500);margin-top:.15rem;font-size:.85rem;display:block}.cookie-modal__actions{justify-content:flex-end;gap:.5rem;margin-top:1.25rem;display:flex}.toggle{appearance:none;background:var(--gray-200);cursor:pointer;border-radius:999px;width:44px;height:24px;position:relative}.toggle:checked{background:var(--red)}.toggle:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:3px;left:3px}.toggle:checked:before{transform:translate(20px)}.toggle:disabled{opacity:.6;cursor:not-allowed}.prose{max-width:820px;color:var(--gray-900);margin:0 auto}.prose h2{margin-top:2.25rem;font-size:1.4rem}.prose h3{margin-top:1.5rem;font-size:1.1rem}.prose p,.prose li{color:var(--gray-700);font-size:1rem;line-height:1.75}.prose ul,.prose ol{padding-left:1.4rem}.prose table{border-collapse:collapse;width:100%;margin:1rem 0;font-size:.92rem}.prose th,.prose td{text-align:left;border:1px solid var(--gray-200);vertical-align:top;padding:.65rem .85rem}.prose th{background:var(--off-white);font-family:var(--font-heading)}.prose .caps{text-transform:uppercase}.faq details{border:1px solid var(--gray-200);border-radius:var(--radius-lg);background:#fff;margin-bottom:.75rem;padding:0;transition:border-color .15s}.faq details[open]{border-color:var(--red)}.faq summary{cursor:pointer;font-family:var(--font-heading);color:var(--navy);justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem 1.25rem;font-weight:700;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";color:var(--red);font-size:1.4rem;font-weight:400;transition:transform .15s}.faq details[open] summary:after{content:"−"}.faq details>:not(summary){color:var(--gray-700);padding:0 1.25rem 1.25rem}.contact-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem;margin-top:2.5rem;display:grid}.contact-card{border:1px solid var(--gray-200);border-radius:var(--radius-lg);text-align:center;background:#fff;padding:2rem 1.5rem}.contact-card__icon{width:56px;height:56px;color:var(--red);background:#b3191d1a;border-radius:50%;justify-content:center;align-items:center;margin:0 auto 1rem;display:flex}.contact-card h3{margin:0 0 .4rem;font-size:1.1rem}.contact-card p,.contact-card a{color:var(--gray-700);margin:0;font-size:1rem}.contact-card a:hover{color:var(--red)}.text-center{text-align:center}.mt-4{margin-top:2.5rem}.mb-2{margin-bottom:1rem}.grid-2{grid-template-columns:1fr 1fr;gap:2rem;display:grid}@media (width<=720px){.grid-2{grid-template-columns:1fr}}.badge-list{flex-wrap:wrap;gap:.5rem;display:flex}.badge{background:var(--gray-100);color:var(--gray-700);border-radius:999px;align-items:center;gap:.4rem;padding:.4rem .8rem;font-size:.85rem;font-weight:600;display:inline-flex}.info-strip{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin-top:2.5rem;display:grid}.info-strip__item{border:1px solid var(--gray-200);border-radius:var(--radius-lg);background:#fff;padding:1.5rem}.info-strip__item h3{margin:0 0 .4rem;font-size:1rem}.info-strip__item p{color:var(--gray-700);margin:0;font-size:.92rem}
