# Commercial Roofing Projects

```
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800&family=Public+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Newsreader:ital,wght@1,400;1,500&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet">
<style>
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800&family=Public+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Newsreader:ital,wght@1,400;1,500&family=Space+Mono:wght@400;700&display=swap');

/* ===== DIRECTION A — DESIGN TOKENS (scoped) ===== */
.rr{
  --navy:#1F4068; --royal:#355EA4; --sky:#6A9FDB;
  --white:#FFFFFF; --offwhite:#FAF7F1; --slate:#2C3742; --slate-grey:#5A6672; --cool-grey:#9AA6B2;
  --orange:#FF8C42; --orange-deep:#E87A35;
  --line:#e4ddd0; --line-cool:#e7eaee; --navy-deep:#15314F;
  --r-sm:6px; --r-md:10px; --r-lg:16px; --r-pill:999px;
  --shadow-sm:0 2px 10px rgba(20,46,71,.08);
  --shadow-md:0 10px 30px rgba(20,46,71,.12);
  --shadow-lg:0 24px 60px rgba(20,46,71,.18);
  --maxw:1200px;
  font-family:'Public Sans',system-ui,-apple-system,sans-serif;
  color:var(--slate); line-height:1.6; -webkit-font-smoothing:antialiased;
}
.rr *{box-sizing:border-box;margin:0;padding:0}
.rr img{max-width:100%;display:block}
.rr .rr-wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.rr h1,.rr h2,.rr h3,.rr h4{font-family:'Archivo',sans-serif;font-weight:800;color:var(--navy);line-height:1.06;letter-spacing:-.01em}
.rr section{position:relative}

.rr-eyebrow{font-family:'Public Sans';font-weight:600;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--royal);display:inline-block;margin-bottom:16px}
.rr-eyebrow.on-dark{color:var(--sky)}
.rr-section{padding:86px 0}
.rr-section.is-navy{background:var(--navy);color:#dbe4ee}
.rr-section.is-navy h2,.rr-section.is-navy h3{color:#fff}
.rr-shead{max-width:680px;margin:0 auto 52px;text-align:center}
.rr-shead h2{font-size:clamp(28px,3.6vw,44px)}
.rr-shead p{margin-top:16px;color:var(--slate-grey);font-size:17px}
.rr-section.is-navy .rr-shead p{color:#aab8c7}

.rr-btn{display:inline-flex;align-items:center;gap:10px;font-family:'Public Sans';font-weight:700;font-size:16px;text-decoration:none;border-radius:var(--r-sm);padding:16px 30px;border:2px solid transparent;cursor:pointer;transition:.18s ease;text-align:center;line-height:1.1}
.rr-btn-primary{background:var(--orange);color:#fff}
.rr-btn-primary:hover{background:var(--orange-deep);transform:translateY(-1px)}
.rr-btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.5)}
.rr-btn-ghost:hover{border-color:#fff;background:rgba(255,255,255,.08)}
.rr-stars{color:var(--sky);letter-spacing:2px;font-size:15px}

/* ===== HERO ===== */
.rr-hero{background:linear-gradient(100deg,rgba(14,25,36,.78) 0%,rgba(20,46,71,.60) 45%,rgba(20,46,71,.24) 100%),url('IMG') center/cover no-repeat;color:#fff;padding:64px 0 72px;overflow:hidden}
.rr-hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:start}@media(min-width:981px){.rr-hero-grid>.rr-hero-form{margin-top:36px}}
.rr-hero-eyebrow{font-family:'Space Mono';font-weight:700;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--sky);margin-bottom:18px}
.rr-hero h1{color:#fff;font-size:clamp(34px,4.6vw,58px);line-height:1.02}
.rr-hero .rr-tagline{font-family:'Archivo';font-weight:700;font-size:clamp(18px,2vw,24px);color:var(--sky);margin-top:14px;letter-spacing:-.01em}
.rr-hero-services{margin-top:16px;font-family:'Public Sans';font-weight:600;font-size:13px;letter-spacing:.04em;color:#bcd0e4;text-transform:uppercase}
.rr-hero .rr-sub{margin-top:22px;font-size:18px;color:#d6e0ea;max-width:560px}
.rr-hero-ctas{display:flex;flex-wrap:wrap;gap:14px;margin-top:30px}
.rr-trustline{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;margin-top:34px;padding-top:26px;border-top:1px solid rgba(255,255,255,.18)}
.rr-trustline .item{font-size:13px;font-weight:600;color:#d2dde8;white-space:nowrap}
.rr-trustline .trust-pills{flex-basis:100%;display:flex;flex-wrap:wrap;gap:10px}
.rr-trustline .g-rating{display:flex;align-items:center;gap:8px;font-weight:700;color:#fff}

.rr-hero-form{background:#fff;border-radius:var(--r-lg);padding:30px;box-shadow:var(--shadow-lg);color:var(--slate)}
.rr-hero-form .fh{margin-bottom:18px}
.rr-hero-form .fh h3{font-size:22px}
.rr-hero-form .fh p{font-size:14px;color:var(--slate-grey);margin-top:6px}
.rr-hero-form .privacy{font-size:12px;color:var(--cool-grey);margin-top:14px;text-align:center}
.rr-hero-form .frm_forms input[type=text],.rr-hero-form .frm_forms input[type=email],.rr-hero-form .frm_forms input[type=tel],.rr-hero-form .frm_forms select,.rr-hero-form .frm_forms textarea,.rr-hero-form .mock-field{width:100%;font-family:'Public Sans';font-size:15px;color:var(--slate);background:var(--offwhite);border:1.5px solid var(--line-cool);border-radius:var(--r-sm);padding:13px 14px;margin-bottom:12px;transition:.15s ease}
.rr-hero-form .frm_forms input:focus,.rr-hero-form .mock-field:focus{outline:none;border-color:var(--royal);background:#fff;box-shadow:0 0 0 3px rgba(53,94,164,.12)}
.rr-hero-form .frm_forms .frm_submit button,.rr-hero-form .mock-submit{width:100%;font-family:'Public Sans';font-weight:700;font-size:16px;color:#fff;background:var(--royal);border:none;border-radius:var(--r-sm);padding:15px;cursor:pointer;transition:.18s ease}
.rr-hero-form .frm_forms .frm_submit button:hover,.rr-hero-form .mock-submit:hover{background:var(--navy)}
.rr-hero-form .frm_forms .frm_submit{margin:0}

/* ===== TRUST BADGE BAR ===== */
.rr-badgebar{background:var(--white);border-bottom:1px solid var(--line-cool);padding:22px 0}
.rr-badgebar .row{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:18px 38px}
.rr-badge{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:600;color:var(--slate);white-space:nowrap}
.rr-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--sky)}
.rr-badge strong{color:var(--navy)}

/* ===== STATS BAND ===== */
.rr-stats{background:var(--navy);color:#fff;padding:54px 0}
.rr-stats .grid{display:grid;grid-template-columns:repeat(5,1fr);gap:18px;text-align:center}
.rr-stat .num{font-family:'Archivo';font-weight:800;font-size:clamp(30px,4vw,46px);color:var(--sky);line-height:1}
.rr-stat .lbl{font-size:12.5px;font-weight:600;color:#aebccb;margin-top:8px;letter-spacing:.02em}

/* ===== THE REASONABLE STANDARD ===== */
.rr-standard{background:var(--offwhite)}
.rr-steps{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.rr-step{padding:34px 26px 8px;border-right:1px solid var(--line)}
.rr-step:last-child{border-right:none}
.rr-step .idx{font-family:'Space Mono';font-weight:700;font-size:15px;color:var(--royal)}
.rr-step .tick{width:26px;height:2px;background:var(--sky);margin:14px 0 16px}
.rr-step h3{font-size:20px;text-transform:uppercase;letter-spacing:.01em}
.rr-step p{margin-top:10px;color:var(--slate-grey);font-size:14.5px}

/* ===== SERVICES ===== */
.rr-services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.rr-card{background:#fff;border:1px solid var(--line-cool);border-radius:var(--r-md);overflow:hidden;text-decoration:none;color:inherit;transition:.2s ease;display:flex;flex-direction:column}
.rr-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--sky)}
.rr-card .img{aspect-ratio:16/10;background:linear-gradient(135deg,#1d3a57,var(--navy));position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}
.rr-card .img img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.rr-card:hover .img img{transform:scale(1.04)}
.rr-card .body{padding:22px}
.rr-card h3{font-size:19px}
.rr-card p{margin-top:8px;color:var(--slate-grey);font-size:14.5px}
.rr-card .more{margin-top:14px;font-weight:700;font-size:14px;color:var(--royal)}
.ph-label{font-family:'Space Mono';font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.66);text-align:center;padding:10px 14px;border:1px dashed rgba(255,255,255,.3);border-radius:6px;max-width:80%}

/* ===== WHY ===== */
.rr-why{background:var(--offwhite)}
.rr-pillars{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.rr-pillar{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:30px}
.rr-pillar .pidx{font-family:'Space Mono';font-weight:700;color:var(--sky);font-size:13px}
.rr-pillar h3{font-size:21px;margin-top:6px}
.rr-pillar .promise{color:var(--slate);margin-top:10px;font-size:15.5px}
.rr-pillar .proof{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);font-size:13.5px;color:var(--slate-grey)}
.rr-pillar .proof b{color:var(--navy)}

/* ===== WORK + MAP ===== */
.rr-work-grid{display:grid;grid-template-columns:2fr 1fr;gap:22px}
.rr-work-main,.rr-work-map{border-radius:var(--r-md);overflow:hidden;min-height:360px;display:flex;align-items:center;justify-content:center;position:relative}
.rr-work-main img{width:100%;height:100%;object-fit:cover}
.rr-work-map{background:linear-gradient(135deg,#274a6c,#27517f)}

/* ===== REVIEWS ===== */
.rr-reviews .topline{text-align:center;margin-bottom:40px}
.rr-reviews .topline .big{font-family:'Archivo';font-weight:800;font-size:40px;color:#fff;display:flex;align-items:center;justify-content:center;gap:12px}
.rr-reviews .topline .sub{color:#aab8c7;font-size:14px;margin-top:6px}
.rr-quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.rr-quote{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:var(--r-md);padding:26px}
.rr-quote .rr-stars{margin-bottom:14px}
.rr-quote blockquote{font-family:'Newsreader';font-style:italic;font-size:18px;line-height:1.5;color:#eaf0f6}
.rr-quote .who{margin-top:16px;font-size:13px;font-weight:600;color:var(--sky)}

/* ===== FINANCING ===== */
.rr-fin{background:var(--offwhite)}
.rr-fin-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
.rr-fin .lead{font-family:'Archivo';font-weight:800;font-size:clamp(26px,3vw,38px);color:var(--navy)}
.rr-fin p{margin-top:16px;color:var(--slate-grey);font-size:16px}
.rr-fin .paycard{background:var(--navy);color:#fff;border-radius:var(--r-lg);padding:34px;text-align:center;box-shadow:var(--shadow-md)}
.rr-fin .paycard .est{font-size:13px;color:#aebccb;letter-spacing:.04em;text-transform:uppercase}
.rr-fin .paycard .amt{font-family:'Archivo';font-weight:800;font-size:46px;color:var(--sky);margin:8px 0}
.rr-fin .paycard .note{font-size:13px;color:#aebccb}

/* ===== COMMUNITIES ===== */
.rr-comm-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:40px;align-items:center}
.rr-counties{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.rr-county{font-family:'Public Sans';font-weight:600;font-size:13px;color:var(--navy);background:#fff;border:1px solid var(--sky);border-radius:var(--r-pill);padding:8px 16px}
.rr-comm-map{min-height:320px;border-radius:var(--r-md);background:linear-gradient(135deg,#274a6c,#27517f);display:flex;align-items:center;justify-content:center}

/* ===== FINAL CTA ===== */
.rr-final{background:linear-gradient(160deg,var(--navy) 0%,var(--navy-deep) 100%);color:#fff;text-align:center;padding:80px 0}
.rr-final h2{color:#fff;font-size:clamp(28px,3.4vw,42px)}
.rr-final p{color:#c6d3e0;font-size:17px;margin-top:14px;max-width:560px;margin-left:auto;margin-right:auto}
.rr-final .rr-hero-ctas{justify-content:center}
.rr-final .phones{margin-top:22px;font-size:14px;color:#aab8c7}
.rr-final .phones a{color:#fff;text-decoration:none;font-weight:700}

.rr .rr-reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
.rr .rr-reveal.is-in{opacity:1;transform:none}

@media(max-width:980px){
  .rr-hero-grid{grid-template-columns:1fr;gap:34px}
  .rr-stats .grid{grid-template-columns:repeat(2,1fr);gap:28px 18px}
  .rr-services-grid,.rr-quotes{grid-template-columns:1fr 1fr}
  .rr-steps{grid-template-columns:1fr 1fr}
  .rr-step{border-bottom:1px solid var(--line)}
  .rr-step:nth-child(odd){border-right:1px solid var(--line)}
  .rr-pillars,.rr-work-grid,.rr-fin-grid,.rr-comm-grid{grid-template-columns:1fr}
}
@media(max-width:620px){
  .rr-section{padding:60px 0}
  .rr-services-grid,.rr-quotes,.rr-stats .grid,.rr-steps{grid-template-columns:1fr}
  .rr-step{border-right:none}
  .rr-btn{width:100%;justify-content:center}
}

/* ================= HEADER ================= */
.rr{--util-h:38px}
.rr section{scroll-margin-top:118px}
.rr-header{position:sticky;top:0;z-index:1000;font-family:'Public Sans',sans-serif}
/* utility bar */
.rr-util{background:var(--navy-deep);color:#aebccb;font-size:12.5px;transition:max-height .3s ease,opacity .25s ease;max-height:60px;overflow:hidden}
.rr-util-row{display:flex;align-items:center;justify-content:space-between;height:var(--util-h)}
.rr-util-left{display:flex;gap:22px}
.rr-util-left span{display:flex;align-items:center;gap:6px;font-weight:600;letter-spacing:.02em}
.rr-util-left .star{color:var(--sky)}
.rr-util-right{display:flex;align-items:center;gap:14px}
.rr-util-right a{color:#cdd9e6;text-decoration:none;font-weight:600}
.rr-util-right a:hover{color:#fff}
.rr-util-right .sep{color:#3c5573}
.rr-util-right .hours{color:#7e93ab}
/* main nav */
.rr-nav{background:#fff;border-bottom:1px solid var(--line-cool);transition:box-shadow .25s ease,padding .25s ease}
.rr-nav-row{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;transition:padding .25s ease}
.rr-logo img{height:46px;width:auto;transition:height .25s ease}
.rr-navlinks{display:flex;align-items:center;gap:26px}
.rr-navlinks a{color:var(--navy);text-decoration:none;font-weight:600;font-size:15px;letter-spacing:-.01em;transition:color .15s ease}
.rr-navlinks a:hover{color:var(--royal)}
.rr-nav-item{position:relative}
.rr-nav-item>a{display:inline-flex;align-items:center;gap:5px}
.rr-mega{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%) translateY(8px);background:#fff;border:1px solid var(--line-cool);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:14px;display:grid;grid-template-columns:1fr 1fr;gap:4px;width:430px;opacity:0;visibility:hidden;transition:.2s ease}
.rr-nav-item:hover .rr-mega{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.rr-mega::before{content:"";position:absolute;top:-14px;left:0;right:0;height:14px}
.rr-mega a{display:block;padding:11px 13px;border-radius:var(--r-sm);transition:background .15s ease}
.rr-mega a:hover{background:var(--offwhite)}
.rr-mega a .mt{font-weight:700;font-size:14.5px;color:var(--navy);display:block}
.rr-mega a .md{font-size:12px;color:var(--slate-grey);margin-top:2px}
.rr-nav-cta{display:flex;align-items:center;gap:18px}
.rr-nav-phone{color:var(--navy);text-decoration:none;font-weight:800;font-size:16px;white-space:nowrap}
.rr-nav-phone:hover{color:var(--royal)}
.rr-nav-btn{padding:12px 22px;font-size:14.5px}
.rr-burger{display:none;background:none;border:none;cursor:pointer;width:42px;height:42px;flex-direction:column;justify-content:center;gap:5px;padding:9px}
.rr-burger span{display:block;height:2.5px;background:var(--navy);border-radius:2px;transition:.25s ease}
/* stuck state */
.rr-header.is-stuck .rr-util{max-height:0;opacity:0}
.rr-header.is-stuck .rr-nav{box-shadow:0 6px 24px rgba(20,46,71,.12)}
.rr-header.is-stuck .rr-nav-row{padding-top:11px;padding-bottom:11px}
.rr-header.is-stuck .rr-logo img{height:38px}
/* mobile drawer */
.rr-drawer{position:fixed;top:0;right:0;height:100%;width:88%;max-width:360px;background:#fff;z-index:1200;transform:translateX(100%);transition:transform .3s ease;box-shadow:-20px 0 60px rgba(20,46,71,.25);display:flex;flex-direction:column;padding:22px}
.rr-drawer.is-open{transform:translateX(0)}
.rr-drawer .dhead{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line-cool);padding-bottom:18px;margin-bottom:8px}
.rr-drawer .dhead img{height:40px}
.rr-drawer .dclose{background:none;border:none;font-size:26px;color:var(--navy);cursor:pointer;line-height:1}
.rr-drawer nav{display:flex;flex-direction:column;padding:8px 0}
.rr-drawer nav a{padding:14px 4px;color:var(--navy);text-decoration:none;font-weight:600;font-size:17px;border-bottom:1px solid var(--line-cool)}
.rr-drawer .dcta{margin-top:18px;display:flex;flex-direction:column;gap:12px}
.rr-drawer .dphones{margin-top:18px;font-size:14px;color:var(--slate-grey);line-height:2}
.rr-drawer .dphones a{color:var(--navy);font-weight:700;text-decoration:none}
.rr-scrim{position:fixed;inset:0;background:rgba(14,25,36,.5);z-index:1150;opacity:0;visibility:hidden;transition:.3s ease}
.rr-scrim.is-open{opacity:1;visibility:visible}
/* sticky mobile CTA */
.rr-mcta{position:fixed;bottom:0;left:0;right:0;z-index:900;display:none;gap:10px;padding:10px 14px;background:#fff;border-top:1px solid var(--line-cool);box-shadow:0 -8px 24px rgba(20,46,71,.1);transform:translateY(110%);transition:transform .3s ease}
.rr-mcta.is-show{transform:translateY(0)}
.rr-mcta a{flex:1;justify-content:center;padding:14px}

/* ====== ELEVATION: editorial eyebrows ====== */
.rr-shead .rr-eyebrow{display:inline-flex;align-items:center}
.rr-shead .rr-eyebrow::before,.rr-shead .rr-eyebrow::after{content:"";display:inline-block;width:26px;height:1px;background:var(--royal);margin:0 12px}
.rr-section.is-navy .rr-shead .rr-eyebrow::before,.rr-section.is-navy .rr-shead .rr-eyebrow::after{background:var(--sky)}
.rr-fin .rr-eyebrow::before,.rr-comm-grid .rr-eyebrow::before{content:"";display:inline-block;width:26px;height:1px;background:var(--royal);vertical-align:middle;margin-right:12px}
/* hero trust chips + depth */
.rr-hero{position:relative}
.rr-hero::after{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 78% 12%,transparent 40%,rgba(14,25,36,.35) 100%);pointer-events:none}
.rr-hero .rr-wrap{position:relative;z-index:1}
.rr-trustline .item{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:var(--r-pill);padding:6px 14px;backdrop-filter:blur(2px)}
.rr-tagline-rule{width:54px;height:2px;background:var(--sky);margin-top:16px;border-radius:2px}
/* premium trust strip dividers */
.rr-badgebar .row{gap:0}
.rr-badge{padding:4px 26px;border-right:1px solid var(--line-cool)}
.rr-badge:last-child{border-right:none}
@media(max-width:980px){
  .rr-navlinks,.rr-nav-cta{display:none}
  .rr-burger{display:flex}
  .rr-mcta{display:flex}
  .rr-util-left span:nth-child(2),.rr-util-right .hours{display:none}
  .rr-badge{border-right:none;padding:4px 14px}
}
@media(max-width:620px){
  .rr-util-left span:nth-child(3){display:none}
  .rr-util{font-size:11.5px}
}

/* ===== TOP-THIRD REFINEMENT (final) ===== */
.rr{--util-h:34px}
.rr-util{background:var(--navy-deep);font-size:12px}
.rr-util-row{height:34px}
.rr-util-left{color:#8ea2b7}
.rr-util-left span{font-weight:500;letter-spacing:.01em}
.rr-util-left .star{color:var(--sky)}
.rr-util-right{gap:12px}
.rr-util-right a{color:#bccadb;font-weight:600}
.rr-util-right .sep{color:#39516e}
.rr-util-right .hours{color:#6f8095;font-weight:500}
.rr-nav-row{padding:20px 24px}
.rr-logo img{height:44px}
.rr-navlinks{gap:30px}
.rr-navlinks a{font-size:15px;font-weight:600;letter-spacing:-.005em}
.rr-nav-cta{gap:18px;padding-left:26px;margin-left:6px;border-left:1px solid var(--line-cool)}
.rr-nav-btn{padding:13px 24px}
.rr-header.is-stuck .rr-nav-row{padding-top:12px;padding-bottom:12px}
/* calm WHITE proof strip (replaces the second dark banner) */
.rr-stats{background:#fff;color:var(--slate);padding:64px 0;border-bottom:1px solid var(--line-cool)}
.rr-stats .grid{gap:0}
.rr-stat{position:relative;padding:6px 14px}
.rr-stat + .rr-stat::before{content:"";position:absolute;left:0;top:16%;height:68%;width:1px;background:var(--line-cool)}
.rr-stat .num{color:var(--navy)}
.rr-stat .lbl{color:var(--slate-grey);text-transform:uppercase;letter-spacing:.08em;font-size:11.5px}
@media(max-width:980px){.rr-stat + .rr-stat::before{display:none}}

/* ===== FIXES PASS ===== */
.rr-hero{padding-top:98px;padding-bottom:84px}
.rr-reviews .topline .topline-stars{display:block;font-size:30px;letter-spacing:7px;line-height:1;margin-bottom:10px;color:var(--sky)}
.rr-reviews .topline .big{display:block;gap:0;font-size:54px;line-height:1}
.rr-reviews .topline .big .of5{font-size:24px;color:#7d93ab;font-weight:700}
.rr-reviews .topline .sub{margin-top:12px}

/* ===== NAV REFINEMENT (research-led) ===== */
.rr-navlinks{gap:34px}
.rr-navlinks a{font-size:15px}
.caret{font-size:10px;opacity:.65;margin-left:2px}
.rr-mega.rr-mega-sm{grid-template-columns:1fr;width:250px}
.rr-nav-row{padding:22px 28px}
.rr-nav-cta{gap:20px;padding-left:28px}

/* ===== HEADER v3 — big-brand calm/spacious ===== */
.rr-util{background:var(--navy-deep);font-size:12px}
.rr-util-row{height:36px}
.rr-util-left{color:#93a6ba;font-weight:500;letter-spacing:.02em}
.rr-util-left .star{color:var(--sky)}
.rr-util-right{gap:14px}
.rr-util-right a{color:#c4d2df;font-weight:600}
.rr-util-right .sep{color:#39516e}
.rr-util-right .hours{color:#6f8095;font-weight:500}
.rr-nav{border-bottom:1px solid #eef1f4}
.rr-nav-row{padding:22px 30px}
.rr-logo img{height:44px}
.rr-navlinks{gap:34px}
.rr-navlinks a{font-size:15px;font-weight:600;color:var(--navy);letter-spacing:-.005em}
.rr-navlinks a:hover{color:var(--royal)}
.rr-navlinks .caret{font-size:9px;opacity:.55;margin-left:3px;vertical-align:middle}
.rr-nav-cta{gap:24px;padding-left:0;margin-left:0;border-left:none}
.rr-nav-phone{font-size:16px;font-weight:800;color:var(--navy)}
.rr-nav-phone:hover{color:var(--royal)}
.rr-nav-btn{padding:12px 26px;font-size:14.5px;border-radius:8px;box-shadow:0 6px 16px rgba(255,140,66,.26)}
.rr-nav-btn:hover{box-shadow:0 8px 22px rgba(255,140,66,.34);transform:translateY(-1px)}
.rr-header.is-stuck .rr-nav-row{padding-top:13px;padding-bottom:13px}
.rr-header.is-stuck .rr-logo img{height:38px}
/* refined mega */
.rr-mega{width:440px;padding:12px;gap:2px}
.rr-mega a{padding:12px 14px}
.rr-mega a .mt{font-size:14.5px}
.rr-mega a .md{font-size:11.5px;margin-top:3px}

/* ===== UNIFIED VERTICAL RHYTHM (one system) ===== */
.rr{--sp-section:clamp(72px,8vw,108px); --sp-head:clamp(40px,5vw,56px)}
.rr-section{padding:var(--sp-section) 0}
.rr-final{padding:var(--sp-section) 0}
.rr-stats{padding:clamp(52px,6vw,76px) 0}
.rr-shead{margin-bottom:var(--sp-head)}
.rr-services-grid,.rr-pillars,.rr-quotes,.rr-work-grid{gap:24px}
.rr-reviews .topline{margin-bottom:clamp(36px,4vw,48px)}
.rr-hero{padding-top:clamp(72px,8vw,104px);padding-bottom:clamp(64px,7vw,92px)}
@media(max-width:620px){.rr{--sp-section:60px;--sp-head:36px}}

</style>
<style>
/* ===== ADDITIONS — reusable components for secondary pages (added to the .rr library) ===== */
.rr .rr-btn-navy{background:transparent;color:var(--navy);border-color:var(--line-cool)}
.rr .rr-btn-navy:hover{border-color:var(--royal);color:var(--royal);background:var(--offwhite)}

/* SLIM HERO — tier-2 secondary-page banner (bg photo + navy overlay + inline trust) */
.rr .rr-hero-slim{position:relative;background:linear-gradient(180deg,rgba(14,25,36,.74),rgba(20,46,71,.80)),#1F4068 center/cover no-repeat;color:#fff;text-align:center;padding:clamp(74px,9vw,116px) 0 clamp(58px,7vw,88px)}
.rr .rr-hero-slim .rr-hero-eyebrow{font-family:'Space Mono';font-weight:700;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--sky);margin-bottom:16px}
.rr .rr-hero-slim h1{color:#fff;font-size:clamp(32px,4.4vw,52px);line-height:1.04;max-width:880px;margin:0 auto}
.rr .rr-hero-slim .rr-tagline-rule{margin:16px auto 0}
.rr .rr-hero-slim .rr-sub{margin:18px auto 0;max-width:620px;color:#d6e0ea;font-size:18px}
.rr .rr-hero-slim .rr-hero-ctas{justify-content:center;margin-top:28px}
.rr .rr-slim-trust{margin-top:26px;font-size:13.5px;font-weight:600;color:#cdd9e6;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;justify-content:center}
.rr .rr-slim-trust .rr-stars{font-size:15px}

/* Offer cards */
.rr .rr-offer-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.rr .rr-offer{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;display:flex;flex-direction:column;transition:.2s ease}
.rr .rr-offer:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--sky)}
.rr .rr-offer-head{background:var(--navy);color:#fff;padding:26px 28px;display:flex;align-items:center;gap:18px}
.rr .rr-offer.is-fin .rr-offer-head{background:var(--royal)}
.rr .rr-offer-tag{font-family:'Archivo';font-weight:800;font-size:30px;color:var(--sky);line-height:1;white-space:nowrap}
.rr .rr-offer-head h3{color:#fff;font-size:20px;line-height:1.15}
.rr .rr-offer-head p{color:#c6d3e0;font-size:13px;margin-top:4px}
.rr .rr-offer-body{padding:26px 28px;display:flex;flex-direction:column;flex:1}
.rr .rr-checks{list-style:none;display:flex;flex-direction:column;gap:12px}
.rr .rr-checks li{position:relative;padding-left:30px;font-size:15px;color:var(--slate)}
.rr .rr-checks li::before{content:"";position:absolute;left:0;top:3px;width:18px;height:18px;border-radius:50%;background:rgba(106,159,219,.16)}
.rr .rr-checks li::after{content:"";position:absolute;left:6px;top:7px;width:5px;height:9px;border:solid var(--royal);border-width:0 2px 2px 0;transform:rotate(45deg)}
.rr .rr-offer .fine{font-size:12px;color:var(--cool-grey);margin-top:18px}
.rr .rr-offer .rr-btn{margin-top:20px;justify-content:center}

/* Quick compare */
.rr .rr-compare{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.rr .rr-cmp{border:1px solid var(--line-cool);border-radius:var(--r-md);padding:30px;background:#fff}
.rr .rr-cmp .lbl{font-family:'Archivo';font-weight:800;font-size:22px;color:var(--navy)}
.rr .rr-cmp .lbl .pin{display:inline-block;font-family:'Space Mono';font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--royal);background:var(--offwhite);border:1px solid var(--line);border-radius:var(--r-pill);padding:4px 12px;margin-left:8px;vertical-align:middle}
.rr .rr-cmp p{margin-top:12px;color:var(--slate-grey);font-size:15.5px}
.rr .rr-compare-note{margin-top:24px;text-align:center;color:var(--slate-grey);font-size:15.5px}
.rr .rr-compare-note b{color:var(--navy)}

/* FAQ accordion */
.rr .rr-faq-list{max-width:820px;margin:0 auto;border-top:1px solid var(--line)}
.rr .rr-qa{border-bottom:1px solid var(--line)}
.rr .rr-qa-q{width:100%;background:none;border:none;cursor:pointer;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 4px;font-family:'Public Sans';font-weight:700;font-size:17px;color:var(--navy)}
.rr .rr-qa-q .mk{flex:0 0 auto;width:22px;height:22px;position:relative;transition:transform .25s ease}
.rr .rr-qa-q .mk::before,.rr .rr-qa-q .mk::after{content:"";position:absolute;background:var(--royal);border-radius:2px}
.rr .rr-qa-q .mk::before{left:0;right:0;top:10px;height:2px}
.rr .rr-qa-q .mk::after{top:0;bottom:0;left:10px;width:2px}
.rr .rr-qa.is-open .rr-qa-q .mk{transform:rotate(135deg)}
.rr .rr-qa-a{max-height:0;overflow:hidden;transition:max-height .3s ease}
.rr .rr-qa-a .inner{padding:0 4px 24px;color:var(--slate-grey);font-size:15.5px;line-height:1.65}
.rr .rr-qa-a .inner b{color:var(--navy)}
.rr .rr-section.is-mist{background:var(--offwhite)}

@media(max-width:980px){ .rr .rr-offer-grid,.rr .rr-compare{grid-template-columns:1fr} }

/* ===== font lock (beat Divi theme fonts) ===== */
.rr, .rr p, .rr li, .rr a, .rr span, .rr div, .rr button, .rr input{font-family:'Public Sans',system-ui,-apple-system,sans-serif !important}
.rr h1, .rr h2, .rr h3, .rr h4, .rr .rr-offer-tag, .rr .rr-hero-offer .pct, .rr .rr-cmp .lbl, .rr .num{font-family:'Archivo',sans-serif !important}
.rr .rr-hero-eyebrow, .rr .rr-step .idx, .rr .rr-cmp .pin, .rr .ph-label, .rr .rr-hero-offer .ey{font-family:'Space Mono',monospace !important}
.rr .rr-quote blockquote{font-family:'Newsreader',serif !important}
/* ===== hero featured-offer card (full hero, right column) ===== */
.rr .rr-hero-offer{background:#fff;border-radius:var(--r-lg);padding:32px;box-shadow:var(--shadow-lg);color:var(--slate);text-align:center}
.rr .rr-hero-offer .ey{font-weight:700;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--royal)}
.rr .rr-hero-offer .pct{font-weight:800;font-size:64px;color:var(--navy);line-height:1;margin:10px 0 4px}
.rr .rr-hero-offer .pct small{font-size:24px;color:var(--royal);vertical-align:super}
.rr .rr-hero-offer h3{font-size:20px}
.rr .rr-hero-offer .or{margin:18px 0;font-size:13px;font-weight:700;letter-spacing:.1em;color:var(--cool-grey);text-transform:uppercase;position:relative}
.rr .rr-hero-offer .or::before,.rr .rr-hero-offer .or::after{content:"";position:absolute;top:50%;width:34%;height:1px;background:var(--line-cool)}
.rr .rr-hero-offer .or::before{left:0}.rr .rr-hero-offer .or::after{right:0}
.rr .rr-hero-offer .fin{font-size:15px;color:var(--slate-grey)}
.rr .rr-hero-offer .fin b{color:var(--navy)}
.rr .rr-hero-offer .rr-btn{width:100%;justify-content:center;margin-top:20px}
.rr .rr-hero-offer .fine{font-size:11.5px;color:var(--cool-grey);margin-top:14px}
/* ===== robust 2-up services (never stack on desktop) ===== */
.rr-specials .rr-services-grid{display:grid !important;grid-template-columns:1fr 1fr !important;gap:24px}.rr-specials .rr-services-grid>.rr-card{min-width:0}.rr-specials .rr-final{margin-bottom:0 !important}
@media(max-width:620px){.rr-services-grid{grid-template-columns:1fr !important}}
.rr .rr-card .img img{width:100%;height:100%;object-fit:cover}
/* MOBILE-OPT v1 — homepage parity: center hero + hide trust pills on phone */@media(max-width:980px){.rr .rr-hero-left{text-align:center}.rr .rr-hero .rr-tagline-rule{margin-left:auto;margin-right:auto}.rr .rr-hero .rr-sub{margin-left:auto;margin-right:auto}.rr .rr-hero .rr-hero-ctas{justify-content:center}.rr .rr-hero .rr-trustline{justify-content:center}.rr .rr-hero .rr-trustline .trust-pills{justify-content:center}}@media(max-width:620px){.rr .rr-hero .rr-trustline .trust-pills{display:none}.rr .rr-hero .rr-sub{font-size:16px}}</style><style>.rr .rr-cards-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.rr .rr-card2{background:#fff;border:1px solid var(--line-cool);border-radius:var(--r-md);padding:26px;transition:.2s ease}.rr .rr-card2:hover{border-color:var(--sky);box-shadow:var(--shadow-md);transform:translateY(-3px)}.rr .rr-card2-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}.rr .rr-card2-top h3{font-size:19px}.rr .rr-card2 .badge{font-family:'Space Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--royal);background:rgba(106,159,219,.14);border-radius:999px;padding:5px 12px;white-space:nowrap}.rr .rr-card2 p{color:var(--slate-grey);font-size:15px;line-height:1.6}.rr .rr-card2 p a{color:var(--royal);font-weight:600;text-decoration:none}@media(max-width:900px){.rr .rr-cards-grid{grid-template-columns:1fr 1fr}}@media(max-width:580px){.rr .rr-cards-grid{grid-template-columns:1fr}}.rr .rr-signs{display:grid;grid-template-columns:1fr 1fr;gap:20px}.rr .rr-sign{display:flex;gap:16px;background:#fff;border:1px solid var(--line-cool);border-radius:var(--r-md);padding:24px}.rr .rr-sign .sk{flex-shrink:0;width:42px;height:42px;border-radius:11px;background:rgba(255,140,66,.12);display:flex;align-items:center;justify-content:center}.rr .rr-sign .sk svg{width:22px;height:22px;stroke:var(--orange-deep);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.rr .rr-sign h3{font-size:16.5px}.rr .rr-sign p{margin-top:6px;color:var(--slate-grey);font-size:14.5px;line-height:1.6}@media(max-width:760px){.rr .rr-signs{grid-template-columns:1fr}}.rr .rr-values{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.rr .rr-value{background:#fff;border:1px solid var(--line-cool);border-radius:var(--r-md);padding:28px}.rr .rr-value .ic{width:46px;height:46px;border-radius:12px;background:rgba(106,159,219,.14);display:flex;align-items:center;justify-content:center;margin-bottom:16px}.rr .rr-value .ic svg{width:23px;height:23px;stroke:var(--royal);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.rr .rr-value h3{font-size:18px}.rr .rr-value p{margin-top:8px;color:var(--slate-grey);font-size:15px;line-height:1.6}.rr .rr-value p a{color:var(--royal);font-weight:600;text-decoration:none}@media(max-width:880px){.rr .rr-values{grid-template-columns:1fr 1fr}}@media(max-width:560px){.rr .rr-values{grid-template-columns:1fr}}.rr .rr-areas{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}.rr .rr-area .cty{font-family:'Archivo',sans-serif;font-weight:800;font-size:16px;color:var(--navy);text-decoration:none;display:block;border-bottom:1px solid var(--line-cool);padding-bottom:8px}.rr .rr-area .cty:hover{color:var(--royal)}.rr .rr-area p{margin-top:10px;color:var(--slate-grey);font-size:13px;line-height:1.9}.rr .rr-area p a{color:var(--slate-grey);text-decoration:none;border-bottom:1px solid var(--line-cool);transition:.15s ease}.rr .rr-area p a:hover{color:var(--royal);border-bottom-color:var(--royal)}@media(max-width:980px){.rr .rr-areas{grid-template-columns:1fr 1fr 1fr}}@media(max-width:620px){.rr .rr-areas{grid-template-columns:1fr 1fr}}.rr .rr-prose{max-width:780px;margin:0 auto;color:var(--slate-grey);font-size:17px;line-height:1.8}.rr .rr-prose b{color:var(--navy)}.rr .rr-prose a{color:var(--royal);font-weight:600;text-decoration:none}.rr .rr-prose+.rr-prose{margin-top:18px}.rr .rr-hero-form .frm_forms input[type=text],.rr .rr-hero-form .frm_forms input[type=email],.rr .rr-hero-form .frm_forms input[type=tel],.rr .rr-hero-form .frm_forms input[type=number],.rr .rr-hero-form .frm_forms select,.rr .rr-hero-form .frm_forms textarea{width:100%;font-family:'Public Sans',system-ui,sans-serif;font-size:15px;color:var(--slate);background:var(--offwhite);border:1.5px solid var(--line-cool);border-radius:var(--r-sm);padding:13px 14px;box-sizing:border-box;margin-bottom:0}.rr .rr-hero-form .frm_forms input:focus,.rr .rr-hero-form .frm_forms select:focus,.rr .rr-hero-form .frm_forms textarea:focus{outline:none;border-color:var(--royal);background:#fff;box-shadow:0 0 0 3px rgba(53,94,164,.12)}.rr .rr-hero-form .frm_forms .frm_submit button,.rr .rr-hero-form .frm_forms .frm_button_submit{width:100%;font-family:'Public Sans',sans-serif;font-weight:700;font-size:16px;color:#fff !important;background:var(--royal) !important;border:none !important;border-radius:var(--r-sm) !important;padding:15px;cursor:pointer;transition:.18s ease}.rr .rr-hero-form .frm_forms .frm_submit button:hover,.rr .rr-hero-form .frm_forms .frm_button_submit:hover{background:#2A5BAE !important}.rr .rr-hero-form .frm_forms,.rr .rr-hero-form form{margin:0;padding:0}.rr .rr-hero-form .frm_form_field{width:100%;margin:0 0 12px}.rr .rr-hero-form .frm_primary_label{font-weight:600;color:var(--slate);font-size:14px;margin-bottom:5px;display:block}.rr .rr-hero-form .frm_forms select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235A6672' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:16px;padding-right:40px}.rr .rr-hero-form .frm_forms input::placeholder,.rr .rr-hero-form .frm_forms textarea::placeholder{color:var(--cool-grey);opacity:1}</style><div class="rr rr-specials"><style>.rr-js .rr-reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}.rr-js .rr-reveal.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.rr-js .rr-reveal{opacity:1 !important;transform:none !important;transition:none}}.rr .rr-ana-grid{display:grid;grid-template-columns:1.04fr .96fr;gap:46px;align-items:center}.rr .rr-spec-fig{margin:0;background:#fff;border:1px solid var(--line-cool);border-radius:18px;padding:24px;box-shadow:var(--shadow-md)}.rr .rr-spec-fig svg{width:100%;height:auto;display:block}.rr .rr-spec-fig figcaption{margin-top:12px;text-align:center;font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--cool-grey)}.rr .rr-spec-tag{display:inline-block;font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--orange-deep);margin-bottom:10px}.rr .rr-arow{display:flex;gap:16px;padding:17px 0;border-top:1px solid var(--line-cool)}.rr .rr-arow .num{flex-shrink:0;width:27px;height:27px;border-radius:50%;background:var(--orange);color:#fff;font-family:'Space Mono',monospace;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}.rr .rr-arow h4{font-family:'Archivo',sans-serif;font-weight:700;font-size:16.5px;color:var(--navy);margin-bottom:4px}.rr .rr-arow p{color:var(--slate-grey);font-size:14px;line-height:1.55}@media(max-width:860px){.rr .rr-ana-grid{grid-template-columns:1fr;gap:26px}}.rr .rr-svcstats{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}.rr .rr-svcstat{background:#fff;border:1px solid var(--line-cool);border-radius:16px;padding:30px 16px;text-align:center}.rr .rr-svcstatnum{font-family:'Archivo',sans-serif;font-weight:800;font-size:46px;line-height:1;color:var(--navy);letter-spacing:-.02em;display:inline-block}.rr .rr-svcstat .star{font-family:'Archivo',sans-serif;font-size:30px;color:var(--orange);display:inline-block;margin-left:1px;vertical-align:2px}.rr .rr-svcstat .lbl{display:block;margin-top:12px;font-family:'Archivo',sans-serif;font-weight:700;font-size:15px;color:var(--slate)}.rr .rr-svcstat .sub{display:block;margin-top:3px;font-size:12.5px;color:var(--cool-grey)}@media(max-width:760px){.rr .rr-svcstats{grid-template-columns:1fr 1fr;gap:14px}.rr .rr-svcstatnum{font-size:40px}}.rr .rr-ctable{border:1px solid var(--line-cool);border-radius:16px;overflow:hidden;background:#fff;box-shadow:var(--shadow-md)}.rr .rr-ctrow{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.7fr;align-items:center}.rr .rr-ctrow>div{padding:18px 20px;border-bottom:1px solid var(--line-cool);font-size:15px;color:var(--slate-grey)}.rr .rr-cthead>div{background:var(--navy);color:#fff;font-family:'Archivo',sans-serif;font-weight:700;font-size:12.5px;letter-spacing:.05em;text-transform:uppercase;border-bottom:none}.rr .rr-ctrow .m{font-family:'Archivo',sans-serif;font-weight:700;color:var(--navy);font-size:16px}.rr .rr-ctrow .ls,.rr .rr-ctrow .ct{font-family:'Space Mono',monospace;color:var(--navy);font-size:14px}.rr .rr-ctrow.pick>div{background:rgba(255,140,66,.06)}.rr .rr-ctrow.pick .m{box-shadow:inset 3px 0 0 var(--orange)}.rr .rr-ctrow .pill{display:inline-block;font-family:'Space Mono',monospace;font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--orange-deep);background:rgba(255,140,66,.15);border-radius:999px;padding:3px 8px;margin-left:8px;vertical-align:middle}.rr .rr-ctrow:last-child>div{border-bottom:none}.rr .rr-ctable .cl{display:none;font-family:'Space Mono',monospace;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--cool-grey);margin-right:8px}@media(max-width:760px){.rr .rr-cthead{display:none}.rr .rr-ctrow{grid-template-columns:1fr;border-bottom:7px solid var(--offwhite)}.rr .rr-ctrow:last-child{border-bottom:none}.rr .rr-ctrow>div{border-bottom:1px solid var(--line-cool);padding:11px 18px}.rr .rr-ctrow .m{padding-top:15px}.rr .rr-ctable .cl{display:inline-block}.rr .rr-ctrow.pick .m{box-shadow:inset 0 3px 0 var(--orange)}}.rr .rr-ror{display:grid;grid-template-columns:1fr 1fr;gap:22px}.rr .rr-ror-card{background:#fff;border:1px solid var(--line-cool);border-radius:16px;padding:30px;box-shadow:var(--shadow-md)}.rr .rr-ror-tag{display:inline-block;font-family:'Space Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:4px 10px;border-radius:999px;margin-bottom:12px}.rr .rr-ror-card.rep .rr-ror-tag{color:#1f7a52;background:rgba(46,158,107,.13)}.rr .rr-ror-card.rep2 .rr-ror-tag{color:var(--orange-deep);background:rgba(255,140,66,.15)}.rr .rr-ror-card h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:20px;color:var(--navy);margin-bottom:14px}.rr .rr-ror-card ul{list-style:none;margin:0;padding:0}.rr .rr-ror-card li{position:relative;padding:10px 0 10px 30px;font-size:14.5px;color:var(--slate-grey);line-height:1.5;border-top:1px solid var(--line-cool)}.rr .rr-ror-card li:first-child{border-top:none}.rr .rr-ror-card li:before{position:absolute;left:0;top:9px;font-family:'Archivo',sans-serif;font-weight:700;font-size:15px}.rr .rr-ror-card.rep li:before{content:'\2713';color:#2e9e6b}.rr .rr-ror-card.rep2 li:before{content:'\21BB';color:var(--orange-deep)}@media(max-width:760px){.rr .rr-ror{grid-template-columns:1fr}}.rr .rr-edband{background:#15314F;padding:74px 0;text-align:center}.rr .rr-edband .rr-wrap{max-width:880px}.rr .rr-edband .eb-ey{font-family:'Space Mono',monospace;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--orange)}.rr .rr-edband .eb-q{font-family:'Newsreader',Georgia,serif;font-style:italic;font-weight:400;font-size:clamp(24px,3.4vw,37px);line-height:1.32;color:#fff;margin:20px 0 20px}.rr .rr-edband .eb-s{color:#bccadb;font-size:16px;line-height:1.75;max-width:640px;margin:0 auto}.rr .rr-ctaband{padding:70px 0;background:var(--offwhite);border-top:1px solid var(--line-cool);border-bottom:1px solid var(--line-cool);text-align:center}.rr .rr-ctaband .rr-wrap{max-width:720px}.rr .rr-ctaband .ey{display:inline-block;font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--orange-deep);margin-bottom:16px}.rr .rr-ctaband h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:clamp(26px,3.3vw,34px);color:var(--navy);letter-spacing:-.025em;line-height:1.16}.rr .rr-ctaband p{color:var(--slate-grey);font-size:16px;line-height:1.6;margin:16px auto 28px;max-width:560px}.rr .rr-ctaband .rr-btn-primary{white-space:nowrap}.rr .rr-locserv{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.rr .rr-locserv a{display:block;background:#fff;border:1px solid var(--line-cool);border-radius:var(--r-md);padding:24px;text-decoration:none;transition:.2s ease}.rr .rr-locserv a:hover{border-color:var(--sky);box-shadow:var(--shadow-md);transform:translateY(-3px)}.rr .rr-locserv .ic{width:44px;height:44px;border-radius:11px;background:rgba(106,159,219,.14);display:flex;align-items:center;justify-content:center;margin-bottom:14px}.rr .rr-locserv .ic svg{width:22px;height:22px;stroke:var(--royal);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.rr .rr-locserv h3{font-size:18px;color:var(--navy);margin-bottom:6px}.rr .rr-locserv p{color:var(--slate-grey);font-size:14.5px;line-height:1.55}.rr .rr-locserv .go{display:inline-block;margin-top:10px;font-family:'Space Mono',monospace;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--royal)}@media(max-width:880px){.rr .rr-locserv{grid-template-columns:1fr 1fr}}@media(max-width:560px){.rr .rr-locserv{grid-template-columns:1fr}}.rr .rr-chips{display:flex;flex-wrap:wrap;gap:10px}.rr .rr-chips a{display:inline-block;background:#fff;border:1px solid var(--line-cool);border-radius:999px;padding:9px 16px;font-size:14px;font-weight:600;color:var(--navy);text-decoration:none;transition:.15s ease}.rr .rr-chips a:hover{border-color:var(--royal);color:var(--royal);box-shadow:var(--shadow-sm)}.rr .rr-projects{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.rr .rr-proj{position:relative;border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line-cool);box-shadow:var(--shadow-md);aspect-ratio:4/3;background:var(--navy)}.rr .rr-proj img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}.rr .rr-proj:hover img{transform:scale(1.06)}.rr .rr-proj .cap{position:absolute;left:0;right:0;bottom:0;padding:16px 16px 14px;background:linear-gradient(to top,rgba(15,30,45,.92),rgba(15,30,45,.4) 55%,rgba(15,30,45,0))}.rr .rr-proj .cap h4{font-family:'Archivo',sans-serif;font-weight:700;font-size:16px;color:#fff}.rr .rr-proj .cap span{display:block;margin-top:3px;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:#bcd6ea}@media(max-width:880px){.rr .rr-projects{grid-template-columns:1fr 1fr}}@media(max-width:560px){.rr .rr-projects{grid-template-columns:1fr}}.rr .rr-creds{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}.rr .rr-cred{background:#fff;border:1px solid var(--line-cool);border-radius:var(--r-md);padding:22px 14px 20px;text-align:center;display:flex;flex-direction:column;align-items:center}.rr .rr-cred-logo{height:56px;display:flex;align-items:center;justify-content:center;margin-bottom:14px}.rr .rr-cred-logo img{max-height:56px;max-width:100%;width:auto;object-fit:contain;display:block}.rr .rr-cred h4{font-family:'Archivo',sans-serif;font-weight:700;font-size:13px;color:var(--navy);line-height:1.3}.rr .rr-cred p{font-family:'Space Mono',monospace;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--cool-grey);margin-top:5px}@media(max-width:860px){.rr .rr-creds{grid-template-columns:1fr 1fr 1fr}}@media(max-width:520px){.rr .rr-creds{grid-template-columns:1fr 1fr}}.rr .rr-feature{display:grid;grid-template-columns:1fr 1fr;gap:46px;align-items:center}.rr .rr-feat-media{border-radius:18px;overflow:hidden;border:1px solid var(--line-cool);box-shadow:var(--shadow-md);aspect-ratio:4/3}.rr .rr-feat-media img{width:100%;height:100%;object-fit:cover;display:block}.rr .rr-feature.rev .rr-feat-media{order:2}.rr .rr-feat-body h2{font-family:'Archivo',sans-serif;font-weight:800;font-size:clamp(24px,3vw,32px);color:var(--navy);letter-spacing:-.02em;line-height:1.14;margin:8px 0 14px}.rr .rr-feat-body>p{color:var(--slate-grey);font-size:16px;line-height:1.7;margin-bottom:18px}.rr .rr-feat-list{list-style:none;margin:0;padding:0}.rr .rr-feat-list li{position:relative;padding:9px 0 9px 30px;color:var(--slate-grey);font-size:15px;line-height:1.5;border-top:1px solid var(--line-cool)}.rr .rr-feat-list li:first-child{border-top:none}.rr .rr-feat-list li:before{content:'\2713';position:absolute;left:0;top:9px;color:var(--orange-deep);font-weight:700}.rr .rr-feat-list li b{color:var(--navy)}@media(max-width:820px){.rr .rr-feature{grid-template-columns:1fr;gap:24px}.rr .rr-feature.rev .rr-feat-media{order:0}}.rr .rr-spec-fig svg .rr-hot{cursor:pointer;transition:transform .25s cubic-bezier(.34,1.56,.64,1),opacity .25s ease;transform-box:fill-box;transform-origin:center}.rr .rr-spec-fig svg .rr-hot-on{transform:scale(1.28);filter:drop-shadow(0 1px 5px rgba(214,109,38,.65))}.rr .rr-spec-fig svg .rr-hot-dim{opacity:.3}.rr .rr-spec-fig{position:relative}.rr .rr-spec-hint{position:absolute;top:14px;right:16px;font-family:'Space Mono',monospace;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--cool-grey);background:var(--offwhite);border:1px solid var(--line-cool);border-radius:999px;padding:5px 11px;pointer-events:none;transition:opacity .4s ease}.rr .rr-spec-hint.hide{opacity:0}.rr .rr-spec-list .rr-arow{cursor:pointer;transition:background .22s ease,opacity .22s ease,box-shadow .22s ease;padding-left:14px;margin-left:-14px;border-radius:0 10px 10px 0}.rr .rr-spec-list .rr-arow.rr-row-on{background:rgba(255,140,66,.08);box-shadow:inset 4px 0 0 var(--orange)}.rr .rr-spec-list .rr-arow.rr-row-dim{opacity:.5}.rr .rr-spec-list .rr-arow .num{transition:transform .2s ease,box-shadow .2s ease}.rr .rr-spec-list .rr-arow.rr-row-on .num{transform:scale(1.14);box-shadow:0 0 0 4px rgba(255,140,66,.2)}.rr .rr-spec-list .rr-arow.rr-row-on h4{color:var(--orange-deep)}.rr .rr-arow:focus,.rr .rr-spec-fig svg .rr-hot:focus{outline:none}@media(prefers-reduced-motion:reduce){.rr .rr-spec-fig svg .rr-hot{transition:none}}</style><script>document.documentElement.classList.add("rr-js");</script>
<div class="rr rr-cp">

<style>
.rr.rr-cp{--steel:#2C3742;--steel-deep:#1F4068;--concrete:#FAF7F1;--line:#E4DDD0;--hv:#FF8C42;--hv-deep:#E87A35}
.rr.rr-cp .rr-eyebrow{color:var(--hv-deep)}
.rr.rr-cp .rr-eyebrow.on-dark{color:#F7B96F}
.rr.rr-cp .rr-badgebar .dot{background:var(--hv)}
.rr.rr-cp .is-concrete{background:var(--concrete);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
/* portfolio switch: two big tabs */
.rr.rr-cp .pf-tabs{display:grid!important;grid-template-columns:1fr 1fr!important;gap:6px;background:#FAF7F1;border:1px solid rgba(255,255,255,.6);border-radius:13px;padding:5px;max-width:500px;margin:0 0 20px;box-shadow:0 10px 28px rgba(9,20,34,.28)}
.rr.rr-cp .pf-tab{position:relative;display:flex;align-items:center;gap:10px;padding:8px 14px 10px;border-radius:9px;text-decoration:none;color:#1F4068;min-width:0;transition:background .2s,color .2s}
.rr.rr-cp .pf-tab .ic{flex:0 0 30px;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,140,66,.14);color:#E87A35;transition:background .2s,color .2s}
.rr.rr-cp .pf-tab svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.9}
.rr.rr-cp .pf-tab b{display:block;font-family:'Archivo',sans-serif;font-weight:800;font-size:15px;line-height:1.15;letter-spacing:-.01em;white-space:nowrap}
.rr.rr-cp .pf-tab b .w{display:inline!important;font:inherit!important;color:inherit!important;letter-spacing:inherit}
.rr.rr-cp .pf-tab span{display:block;font-family:'Public Sans',sans-serif;font-size:11.5px;color:#5A6672;margin-top:1px}
.rr.rr-cp .pf-tab.on{background:#1F4068;color:#fff;box-shadow:0 4px 14px rgba(31,64,104,.35)}
.rr.rr-cp .pf-tab.on span{color:#c9d6e3}
.rr.rr-cp .pf-tab.on .ic{background:#FF8C42;color:#fff}
.rr.rr-cp .pf-tab.on:after{content:"";position:absolute;left:16px;right:16px;bottom:4px;height:3px;border-radius:3px;background:#FF8C42}
.rr.rr-cp .pf-tab:not(.on):hover{background:#fff}
.rr.rr-cp .pf-tab:not(.on){padding-right:32px}
.rr.rr-cp .pf-tab:not(.on):after{content:"\2192";position:absolute;right:13px;top:50%;transform:translateY(-50%);color:#FF8C42;font-weight:800;font-size:17px;font-family:'Archivo',sans-serif}
.rr.rr-cp .pf-viewing{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 14px;margin:18px auto 0;font-size:15px;color:var(--slate-grey);text-align:center}
.rr.rr-cp .pf-viewing a{font-family:'Archivo',sans-serif;font-weight:800;color:var(--steel-deep);border:2px solid var(--steel-deep);border-radius:999px;padding:6px 14px;text-decoration:none;white-space:nowrap}
.rr.rr-cp .pf-viewing a:hover{background:var(--steel-deep);color:#fff}
/* filters */
.rr.rr-cp .cp-filters{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:0 auto 34px}
.rr.rr-cp .cp-filters button{border:1px solid var(--line);background:#fff;color:var(--steel-deep);border-radius:999px;padding:9px 16px;font-family:'Archivo',sans-serif;font-weight:700;font-size:14px;cursor:pointer}
.rr.rr-cp .cp-filters button.on{background:var(--steel-deep);border-color:var(--steel-deep);color:#fff}
/* project cards */
.rr.rr-cp .cp-list{display:flex!important;flex-direction:column;gap:34px;max-width:1180px;margin:0 auto}
.rr.rr-cp .cp-card{display:grid!important;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)!important;gap:0;background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow-md);scroll-margin-top:120px}
.rr.rr-cp .cp-card.flip .cp-media{order:2}
.rr.rr-cp .cp-card[hidden]{display:none!important}
.rr.rr-cp .cp-media{background:#10181f;display:flex;flex-direction:column;min-width:0}
.rr.rr-cp .cp-main{position:relative;margin:0;aspect-ratio:4/3;overflow:hidden;cursor:zoom-in}
.rr.rr-cp .cp-main img{width:100%;height:100%;object-fit:cover;display:block}
.rr.rr-cp .cp-main figcaption{position:absolute;left:12px;bottom:12px;right:12px;background:rgba(16,24,31,.78);color:#fff;font-size:13px;line-height:1.35;padding:7px 11px;border-radius:8px;width:max-content;max-width:calc(100% - 24px)}
.rr.rr-cp .cp-thumbs{display:flex;gap:6px;padding:8px;overflow-x:auto}
.rr.rr-cp .cp-thumbs button{flex:0 0 76px;height:56px;padding:0;border:2px solid transparent;border-radius:6px;overflow:hidden;cursor:pointer;background:none;opacity:.7}
.rr.rr-cp .cp-thumbs button.on{border-color:var(--hv);opacity:1}
.rr.rr-cp .cp-thumbs img{width:100%;height:100%;object-fit:cover;display:block}
.rr.rr-cp .cp-body{padding:32px 34px;display:flex;flex-direction:column;gap:14px;min-width:0}
.rr.rr-cp .cp-kicker{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--hv-deep)}
.rr.rr-cp .cp-body h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:27px;line-height:1.15;color:var(--navy);margin:0}
.rr.rr-cp .cp-body h3 small{display:block;font-size:15px;font-weight:600;color:var(--slate-grey);margin-top:5px}
.rr.rr-cp .cp-body p{color:var(--slate-grey);font-size:15.5px;line-height:1.6;margin:0}
.rr.rr-cp .cp-spec{display:grid!important;grid-template-columns:1fr 1fr!important;gap:0;border-top:2px solid var(--steel-deep);margin:4px 0 0}
.rr.rr-cp .cp-spec div{padding:11px 12px 11px 0;border-bottom:1px solid var(--line);min-width:0}
.rr.rr-cp .cp-spec dt{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate-grey)}
.rr.rr-cp .cp-spec dd{margin:3px 0 0;font-family:'Archivo',sans-serif;font-weight:700;font-size:15px;color:var(--steel-deep);line-height:1.3}
.rr.rr-cp .cp-chip{align-self:flex-start;margin-top:auto;background:var(--concrete);border:1px solid var(--line);color:var(--steel-deep);border-radius:999px;padding:6px 13px;font-size:13px;font-weight:700}
.rr.rr-cp .cp-chip:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--hv);margin-right:8px;vertical-align:1px}
/* how row */
.rr.rr-cp .cp-how{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.rr.rr-cp .cp-how div{border-top:3px solid var(--hv);padding-top:14px}
.rr.rr-cp .cp-how b{display:block;font-family:'Archivo',sans-serif;font-size:17px;color:#fff;margin-bottom:6px}
.rr.rr-cp .cp-how p{color:#c7d2dc;font-size:14.5px;line-height:1.55}
/* more work grid */
.rr.rr-cp .cp-more{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.rr.rr-cp .cp-more figure{margin:0;aspect-ratio:1/1;border-radius:12px;overflow:hidden;cursor:zoom-in;position:relative}
.rr.rr-cp .cp-more img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s}
.rr.rr-cp .cp-more figure:hover img{transform:scale(1.04)}
.rr.rr-cp .cp-more figcaption{position:absolute;left:0;right:0;bottom:0;padding:22px 10px 8px;background:linear-gradient(transparent,rgba(0,0,0,.72));color:#fff;font-size:12px;line-height:1.3}
/* brands */
.rr.rr-cp .cp-certs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.rr.rr-cp .cp-certs div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 12px;text-align:center}
.rr.rr-cp .cp-certs b{display:block;font-family:'Archivo',sans-serif;font-weight:800;font-size:17px;color:var(--navy)}
.rr.rr-cp .cp-certs span{display:block;font-size:12.5px;color:var(--slate-grey);margin-top:4px}
/* final CTA button row: the theme's .rr-two-tel leaves them touching */
.rr.rr-cp .rr-two-tel{display:flex!important;flex-wrap:wrap;gap:14px;align-items:center;margin:0 auto;max-width:900px}
.rr.rr-cp .rr-two-tel .rr-btn{margin:0!important}
.rr.rr-cp .rr-two-tel br,.rr.rr-cp .rr-hero-ctas br{display:none!important}   /* wpautop inserts <br> between the anchors */
/* map banner */
.rr.rr-cp .pf-map{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;background:var(--steel-deep);border-radius:18px;padding:26px 30px;color:#fff}
.rr.rr-cp .pf-map b{font-family:'Archivo',sans-serif;font-weight:800;font-size:22px;display:block}
.rr.rr-cp .pf-map span{color:#c7d2dc;font-size:15px}
/* lightbox */
.cp-lb{position:fixed;inset:0;background:rgba(8,12,16,.92);display:flex;align-items:center;justify-content:center;z-index:99999;padding:20px;flex-direction:column;gap:12px}
.cp-lb[hidden]{display:none!important}
.cp-lb img{max-width:100%;max-height:82vh;border-radius:8px}
.cp-lb p{color:#fff;font:14px/1.4 'Public Sans',sans-serif;text-align:center;margin:0}
.cp-lb button{position:absolute;top:14px;right:16px;background:none;border:0;color:#fff;font-size:34px;cursor:pointer;line-height:1}
/* responsive */
@media (max-width:1024px){ .rr.rr-cp .cp-certs{grid-template-columns:repeat(3,minmax(0,1fr))}.rr.rr-cp .cp-more{grid-template-columns:repeat(3,minmax(0,1fr))}.rr.rr-cp .cp-how{grid-template-columns:1fr 1fr}}
@media (max-width:820px){.rr.rr-cp .cp-card{grid-template-columns:1fr!important}.rr.rr-cp .cp-card.flip .cp-media{order:0}.rr.rr-cp .cp-body{padding:24px 20px}.rr.rr-cp .cp-body h3{font-size:23px}}
@media (max-width:600px){ .rr.rr-cp .pf-tabs{max-width:100%}.rr.rr-cp .pf-tab{flex-direction:row;align-items:center;gap:9px;padding:7px 10px 9px}.rr.rr-cp .pf-tab b .w{display:none!important}.rr.rr-cp .pf-tab b{font-size:14.5px}.rr.rr-cp .pf-tab .ic{width:26px;height:26px;flex-basis:26px}.rr.rr-cp .pf-tab svg{width:15px;height:15px}.rr.rr-cp .pf-tab.on:after{left:12px;right:12px}
 .rr.rr-cp .cp-spec{grid-template-columns:1fr!important}.rr.rr-cp .cp-certs{grid-template-columns:1fr 1fr}.rr.rr-cp .cp-more{grid-template-columns:1fr 1fr}.rr.rr-cp .cp-how{grid-template-columns:1fr}
 .rr.rr-cp .cp-filters{justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px}.rr.rr-cp .cp-filters button{flex:0 0 auto;font-size:13px}.rr.rr-cp .cp-main figcaption{font-size:12px}
 .rr.rr-cp .pf-map{padding:22px 20px}.rr.rr-cp .pf-map b{font-size:19px}}
</style>
<section class="rr-hero" style="background:linear-gradient(100deg,rgba(15,22,30,.88) 0%,rgba(28,42,56,.7) 48%,rgba(28,42,56,.25) 100%),url('https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-hero.jpg') center/cover no-repeat">
  <div class="rr-wrap"><div class="rr-hero-grid">
    <div class="rr-hero-left">
      <nav class="pf-tabs" aria-label="Choose a portfolio"><a class="pf-tab" href="https://reasonablecontractingservices.com/gallery/"><span class="ic"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 11.5 12 4l9 7.5"/><path d="M5.5 10v10h13V10"/><path d="M10 20v-6h4v6"/></svg></span><div><b>Residential<span class="w"> Projects</span></b><span>Homes</span></div></a><a class="pf-tab on" href="https://reasonablecontractingservices.com/commercial-roofing-projects/" aria-current="page"><span class="ic"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20V6l8-3v17"/><path d="M12 9h8v11"/><path d="M2 20h20"/><path d="M7 8h2M7 12h2M7 16h2M15 13h2M15 16h2"/></svg></span><div><b>Commercial<span class="w"> Projects</span></b><span>Buildings</span></div></a></nav>
      <div class="rr-hero-eyebrow">Commercial Roofing · Project Portfolio</div>
      <h1>Commercial roofing, on the record.</h1>
      <p class="rr-tagline">Named buildings, real systems, the year we finished.</p>
      <p class="rr-prose" style="color:#dbe4ee">A sample of our recent commercial work: condominium complexes, senior living, manufacturing, office buildings and municipal work. Each project below lists the building, the roof system that went on, and what the job involved, so a property manager or facility owner can see the kind of work we do before we ever walk the roof.</p>
      <div class="rr-hero-ctas"><a class="rr-btn rr-btn-primary" href="#estimate">Request a Commercial Estimate</a><a class="rr-btn rr-btn-ghost" href="tel:8109843420">Port Huron (810) 984-3420</a><a class="rr-btn rr-btn-ghost" href="tel:2488003269">Troy (248) 800-3269</a></div>
      <div class="rr-trustline"><div class="g-rating"><span class="rr-stars">★★★★★</span> <span data-rr-live="avg">4.8</span> · <span data-rr-live="total">255</span> Reviews</div><div class="trust-pills"><div class="item">Since 1984</div><div class="item">Licensed & Insured</div></div></div>
    </div>
    <div class="rr-hero-form" id="estimate">
      <div class="fh"><h3>Request a commercial estimate</h3><p>Tell us about the building: the address, the roof type if you know it, and what is going on. A local expert calls you back.</p></div>

Service Type Form Fill

GET IN TOUCH

If you are human, leave this field blank.			

<div class="privacy">No spam, ever. Estimates are free.</div>
    </div>
  </div></div>
</section>

<section class="rr-section" style="padding:30px 0 0"><div class="rr-wrap">
  <div class="pf-viewing"><span>You are viewing <b>commercial projects</b> only. Looking for homes?</span><a href="https://reasonablecontractingservices.com/gallery/">See Residential Projects →</a></div>
</div></section>

<section class="rr-reveal rr-section" style="padding-top:10px"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Recent Projects</span><h2>A look at some of our recent commercial work.</h2><p>A sample of the commercial roofs we have completed, from flat roofs that held water to a riverfront complex with every building due at once. We add projects as they wrap up. Filter by the kind of property you manage.</p></div>
  <div class="cp-filters" role="group" aria-label="Filter projects"><button type="button" data-f="all" class="on">All projects</button><button type="button" data-f="lowslope" class="">Low-slope & TPO</button><button type="button" data-f="shingle" class="">Shingle</button><button type="button" data-f="multifamily" class="">Multi-family & senior living</button><button type="button" data-f="institutional" class="">Municipal & office</button><button type="button" data-f="industrial" class="">Industrial</button></div>
  <div class="cp-list"><article class="cp-card" id="blue-water-counseling" data-tags="lowslope institutional"><div class="cp-media"><figure class="cp-main" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-before-ballast-ponding.jpg"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-before-ballast-ponding-1024x768.jpg" alt="Before: ballast and standing water" loading="lazy"><figcaption>Before: ballast and standing water</figcaption></figure><div class="cp-thumbs"><button type="button" class="on" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-before-ballast-ponding-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-before-ballast-ponding.jpg" data-cap="Before: ballast and standing water" aria-label="Before: ballast and standing water"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-before-ballast-ponding-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-after-membrane-aerial-1024x577.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-after-membrane-aerial.jpg" data-cap="After: new white TPO membrane" aria-label="After: new white TPO membrane"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-after-membrane-aerial-300x169.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-after-clean-wide-1024x577.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-after-clean-wide.jpg" data-cap="After: finished field and chimney" aria-label="After: finished field and chimney"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-after-clean-wide-300x169.jpg" alt="" loading="lazy"></button></div></div><div class="cp-body"><div class="cp-kicker">Low-slope · Office building</div><h3>Blue Water Counseling<small>Fort Gratiot, Michigan</small></h3><p>A mid-century brick office with a ballasted flat roof and chronic ponding. The ballast came off, tapered insulation went down to move water to new drains, and a fully adhered white TPO membrane went over it, finished with new two-tone fascia metal.</p><dl class="cp-spec"><div><dt>System</dt><dd>Firestone 60-mil TPO</dd></div><div><dt>Insulation</dt><dd>Tapered polyiso</dd></div><div><dt>Completed</dt><dd>2024</dd></div><div><dt>Scope</dt><dd>Ballast removal · new drains</dd></div></dl><div class="cp-chip">Before & after, same angle</div></div></article><article class="cp-card flip" id="wright-plastic-products" data-tags="lowslope industrial"><div class="cp-media"><figure class="cp-main" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-building-saint-clair.jpg"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-building-saint-clair-1024x768.jpg" alt="The facility" loading="lazy"><figcaption>The facility</figcaption></figure><div class="cp-thumbs"><button type="button" class="on" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-building-saint-clair-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-building-saint-clair.jpg" data-cap="The facility" aria-label="The facility"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-building-saint-clair-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-before-failed-seam-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-before-failed-seam.jpg" data-cap="Before: failed parapet seam" aria-label="Before: failed parapet seam"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-before-failed-seam-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-tpo-completed-wide-768x1024.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-tpo-completed-wide.jpg" data-cap="After: new TPO section beside the existing ballast roof" aria-label="After: new TPO section beside the existing ballast roof"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-tpo-completed-wide-225x300.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-parapet-metal-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-parapet-metal.jpg" data-cap="New parapet and edge metal" aria-label="New parapet and edge metal"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-parapet-metal-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-tpo-curb-flashing-768x1024.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-tpo-curb-flashing.jpg" data-cap="TPO curb flashing detail" aria-label="TPO curb flashing detail"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-tpo-curb-flashing-225x300.jpg" alt="" loading="lazy"></button></div></div><div class="cp-body"><div class="cp-kicker">Low-slope · Manufacturing facility</div><h3>Wright Plastic Products<small>Saint Clair, Michigan</small></h3><p>An active manufacturing plant with failing seams at the parapet. The failed sections came out and a fully adhered Elevate TPO membrane went in, with new curb flashing and edge metal, while the plant kept running below.</p><dl class="cp-spec"><div><dt>System</dt><dd>Elevate (Firestone) 60-mil TPO</dd></div><div><dt>Completed</dt><dd>2026</dd></div><div><dt>Building</dt><dd>Manufacturing plant</dd></div><div><dt>Scope</dt><dd>Membrane · curbs · edge metal</dd></div></dl><div class="cp-chip">Occupied facility</div></div></article><article class="cp-card" id="lamplighter-condominiums" data-tags="shingle multifamily"><div class="cp-media"><figure class="cp-main" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-hero.jpg"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-hero-1024x768.jpg" alt="The riverfront main building, finished" loading="lazy"><figcaption>The riverfront main building, finished</figcaption></figure><div class="cp-thumbs"><button type="button" class="on" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-hero-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-hero.jpg" data-cap="The riverfront main building, finished" aria-label="The riverfront main building, finished"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-hero-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-before-aged-roof-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-before-aged-roof.jpg" data-cap="Before: aged, storm-worn shingles" aria-label="Before: aged, storm-worn shingles"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-before-aged-roof-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-roofline-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-roofline.jpg" data-cap="New roofline against the river" aria-label="New roofline against the river"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-roofline-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-complex-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-complex.jpg" data-cap="Overhead: the courtyard wings" aria-label="Overhead: the courtyard wings"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-complex-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-porch-building-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-porch-building.jpg" data-cap="Screened-porch building re-roofed" aria-label="Screened-porch building re-roofed"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-porch-building-300x225.jpg" alt="" loading="lazy"></button></div></div><div class="cp-body"><div class="cp-kicker">Shingle · Riverfront condominium complex</div><h3>Lamplighter Condominiums<small>Saint Clair, Michigan</small></h3><p>A multi-building condominium complex on the St. Clair River with aged, storm-worn roofs. Every building was re-roofed end to end, from the riverfront main house to the back courtyard wings.</p><dl class="cp-spec"><div><dt>System</dt><dd>Asphalt shingle re-roof</dd></div><div><dt>Completed</dt><dd>2024</dd></div><div><dt>Building</dt><dd>Multi-building condominium</dd></div><div><dt>Scope</dt><dd>Every building on the property</dd></div></dl><div class="cp-chip">Whole complex</div></div></article><article class="cp-card flip" id="porthaven-manor" data-tags="shingle multifamily"><div class="cp-media"><figure class="cp-main" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-community-wide.jpg"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-community-wide-1024x768.jpg" alt="The community, with the Blue Water Bridge behind" loading="lazy"><figcaption>The community, with the Blue Water Bridge behind</figcaption></figure><div class="cp-thumbs"><button type="button" class="on" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-community-wide-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-community-wide.jpg" data-cap="The community, with the Blue Water Bridge behind" aria-label="The community, with the Blue Water Bridge behind"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-community-wide-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-overhead-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-overhead.jpg" data-cap="Overhead: every wing" aria-label="Overhead: every wing"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-overhead-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-hip-detail-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-hip-detail.jpg" data-cap="Hip and valley geometry" aria-label="Hip and valley geometry"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-hip-detail-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-full-length-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-full-length.jpg" data-cap="Down the full roofline" aria-label="Down the full roofline"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-full-length-300x225.jpg" alt="" loading="lazy"></button></div></div><div class="cp-body"><div class="cp-kicker">Shingle · Senior living community</div><h3>Porthaven Manor<small>Port Huron, Michigan</small></h3><p>A multi-wing senior living community with complex hip-and-valley roofs over occupied residences. Porthaven keeps calling us back: six separate roofing projects since 2023, each done over residences that stay occupied.</p><dl class="cp-spec"><div><dt>System</dt><dd>Asphalt shingle · hip & valley</dd></div><div><dt>Projects</dt><dd>Six since 2023</dd></div><div><dt>Building</dt><dd>Senior living, multi-wing</dd></div><div><dt>Client</dt><dd>Property management</dd></div></dl><div class="cp-chip">Repeat client · 6 projects</div></div></article><article class="cp-card" id="armed-forces-career-center" data-tags="shingle lowslope institutional"><div class="cp-media"><figure class="cp-main" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-wide.jpg"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-wide-1024x768.jpg" alt="After: the finished roof" loading="lazy"><figcaption>After: the finished roof</figcaption></figure><div class="cp-thumbs"><button type="button" class="on" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-wide-1024x768.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-wide.jpg" data-cap="After: the finished roof" aria-label="After: the finished roof"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-wide-300x225.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-before-aged-shingle-768x1024.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-before-aged-shingle.jpg" data-cap="Before: aged shingle at the HVAC" aria-label="Before: aged shingle at the HVAC"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-before-aged-shingle-225x300.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-hip-ridge-768x1024.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-hip-ridge.jpg" data-cap="Clean hip and ridge lines" aria-label="Clean hip and ridge lines"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-hip-ridge-225x300.jpg" alt="" loading="lazy"></button><button type="button" class="" data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-corridor-768x1024.jpg" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-corridor.jpg" data-cap="Over the commercial corridor" aria-label="Over the commercial corridor"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-corridor-225x300.jpg" alt="" loading="lazy"></button></div></div><div class="cp-body"><div class="cp-kicker">Shingle + low-slope · Commercial corridor</div><h3>Armed Forces Career Center<small>Port Huron, Michigan</small></h3><p>A commercial building on a busy Port Huron corridor. The pitched roof was torn off to the deck and replaced with Owens Corning Duration shingles, the low-slope section got a Mule-Hide EPDM membrane, and the job wrapped with new seamless gutters and rotted-wood repair and paint out front.</p><dl class="cp-spec"><div><dt>System</dt><dd>Owens Corning Duration + Mule-Hide EPDM</dd></div><div><dt>Completed</dt><dd>2026</dd></div><div><dt>Building</dt><dd>Commercial office</dd></div><div><dt>Scope</dt><dd>Roof · gutters · wood & paint</dd></div></dl><div class="cp-chip">Two roof systems, one job</div></div></article><article class="cp-card flip" id="rochester-fire-department" data-tags="institutional"><div class="cp-media"><figure class="cp-main" data-big="https://reasonablecontractingservices.com/wp-content/uploads/2021/03/Layer-649.jpg"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2021/03/Layer-649-1024x372.jpg" alt="Rochester Fire Department" loading="lazy"><figcaption>Rochester Fire Department</figcaption></figure></div><div class="cp-body"><div class="cp-kicker">Municipal · Fire station</div><h3>Rochester Fire Department<small>Rochester, Michigan</small></h3><p>Roofing on the Rochester fire station, a working public-safety building for the City of Rochester.</p><dl class="cp-spec"><div><dt>Building</dt><dd>Municipal fire station</dd></div><div><dt>Client</dt><dd>City of Rochester</dd></div><div><dt>Trade</dt><dd>Roofing</dd></div><div><dt>County</dt><dd>Oakland</dd></div></dl><div class="cp-chip">Public-sector work</div></div></article></div>
</div></section>

<section class="rr-reveal rr-section is-navy"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow on-dark">What You Get</span><h2>How a commercial job runs.</h2></div>
  <div class="cp-how"><div><b>A walk of the whole roof</b><p>We look at the full roof, the drains, the edges and the penetrations before we price anything, and we photograph what we find.</p></div><div><b>Manufacturer systems</b><p>TPO, EPDM, PVC, coatings and commercial shingle systems from the manufacturers we are certified with. Warranty terms follow the system and manufacturer.</p></div><div><b>Work around your tenants</b><p>Plants that keep running and residents who live on site. We plan the work around the building's schedule.</p></div><div><b>Documented start to finish</b><p>Before, during and after photos on every project, so you have a record for your board, your owner or your insurer.</p></div></div>
</div></section>

<section class="rr-reveal rr-section is-concrete"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Low-Slope Systems</span><h2>Certified on the systems commercial roofs use.</h2><p>Flat and low-slope roofs are only as good as the installer's training on that exact system.</p></div>
  <div class="cp-certs"><div><b>Firestone</b><span>TPO & EPDM systems</span></div><div><b>Mule-Hide</b><span>EPDM & TPO</span></div><div><b>GAF</b><span>Gold Elite</span></div><div><b>GenFlex</b><span>Single-ply membranes</span></div><div><b>IB Roof Systems</b><span>PVC membranes</span></div><div><b>Gaco</b><span>Silicone roof coatings</span></div></div>
</div></section>

<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">More Work</span><h2>From the rest of the commercial archive.</h2><p>Tap any photo to see it full size.</p></div>
  <div class="cp-more"><figure><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-768x576.jpg" srcset='https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-150x150.jpg 150w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-300x225.jpg 300w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-400x516.jpg 400w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-480x360.jpg 480w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-510x382.jpg 510w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-768x576.jpg 768w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-980x735.jpg 980w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-1024x768.jpg 1024w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-1080x810.jpg 1080w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-1280x960.jpg 1280w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building-1536x1152.jpg 1536w' sizes='(max-width:640px) 46vw, (max-width:1024px) 31vw, 23vw' data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-lakefront-building.jpg" alt="Lamplighter Condominiums: lakefront building" loading="lazy" decoding="async"><figcaption>Lamplighter Condominiums: lakefront building</figcaption></figure><figure><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-768x576.jpg" srcset='https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-150x150.jpg 150w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-300x225.jpg 300w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-400x516.jpg 400w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-480x360.jpg 480w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-510x382.jpg 510w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-768x576.jpg 768w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-980x735.jpg 980w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-1024x768.jpg 1024w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-1080x810.jpg 1080w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-1280x960.jpg 1280w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns-1536x1152.jpg 1536w' sizes='(max-width:640px) 46vw, (max-width:1024px) 31vw, 23vw' data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-roofline-lawns.jpg" alt="Lamplighter Condominiums: new roofline over the grounds" loading="lazy" decoding="async"><figcaption>Lamplighter Condominiums: new roofline over the grounds</figcaption></figure><figure><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/klecha-park-pavilion-768x675.jpg" srcset='https://reasonablecontractingservices.com/wp-content/uploads/2026/09/klecha-park-pavilion-150x150.jpg 150w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/klecha-park-pavilion-225x300.jpg 225w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/klecha-park-pavilion-400x516.jpg 400w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/klecha-park-pavilion-480x640.jpg 480w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/klecha-park-pavilion-510x382.jpg 510w, https://reasonablecontractingservices.com/wp-content/uploads/2026/09/klecha-park-pavilion-768x675.jpg 768w' sizes='(max-width:640px) 46vw, (max-width:1024px) 31vw, 23vw' data-full="https://reasonablecontractingservices.com/wp-content/uploads/2026/09/klecha-park-pavilion.jpg" alt="Klecha Park: timber pavilion roof" loading="lazy" decoding="async"><figcaption>Klecha Park: timber pavilion roof</figcaption></figure><figure><img src="https://reasonablecontractingservices.com/wp-content/uploads/2021/05/Double-Tree-3-768x373.jpg" srcset='https://reasonablecontractingservices.com/wp-content/uploads/2021/05/Double-Tree-3-150x150.jpg 150w, https://reasonablecontractingservices.com/wp-content/uploads/2021/05/Double-Tree-3-300x146.jpg 300w, https://reasonablecontractingservices.com/wp-content/uploads/2021/05/Double-Tree-3-768x373.jpg 768w, https://reasonablecontractingservices.com/wp-content/uploads/2021/05/Double-Tree-3-1024x498.jpg 1024w, https://reasonablecontractingservices.com/wp-content/uploads/2021/05/Double-Tree-3-1536x747.jpg 1536w' sizes='(max-width:640px) 46vw, (max-width:1024px) 31vw, 23vw' data-full="https://reasonablecontractingservices.com/wp-content/uploads/2021/05/Double-Tree-3-scaled.jpg" alt="Commercial complex" loading="lazy" decoding="async"><figcaption>Commercial complex</figcaption></figure><figure><img src="https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Visting-Nurses-Association-768x459.jpg" srcset='https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Visting-Nurses-Association-150x150.jpg 150w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Visting-Nurses-Association-300x179.jpg 300w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Visting-Nurses-Association-768x459.jpg 768w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Visting-Nurses-Association-1024x612.jpg 1024w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Visting-Nurses-Association-1536x919.jpg 1536w' sizes='(max-width:640px) 46vw, (max-width:1024px) 31vw, 23vw' data-full="https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Visting-Nurses-Association-scaled.jpg" alt="Visiting Nurses Association" loading="lazy" decoding="async"><figcaption>Visiting Nurses Association</figcaption></figure><figure><img src="https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Sienna-Heights-768x576.jpg" srcset='https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Sienna-Heights-150x150.jpg 150w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Sienna-Heights-300x225.jpg 300w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Sienna-Heights-768x576.jpg 768w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Sienna-Heights-1024x768.jpg 1024w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Sienna-Heights-1536x1152.jpg 1536w' sizes='(max-width:640px) 46vw, (max-width:1024px) 31vw, 23vw' data-full="https://reasonablecontractingservices.com/wp-content/uploads/2021/04/Sienna-Heights.jpg" alt="Sienna Heights" loading="lazy" decoding="async"><figcaption>Sienna Heights</figcaption></figure><figure><img src="https://reasonablecontractingservices.com/wp-content/uploads/2021/04/red-brick-building-768x333.jpg" srcset='https://reasonablecontractingservices.com/wp-content/uploads/2021/04/red-brick-building-150x150.jpg 150w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/red-brick-building-300x130.jpg 300w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/red-brick-building-768x333.jpg 768w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/red-brick-building-1024x444.jpg 1024w, https://reasonablecontractingservices.com/wp-content/uploads/2021/04/red-brick-building-1536x666.jpg 1536w' sizes='(max-width:640px) 46vw, (max-width:1024px) 31vw, 23vw' data-full="https://reasonablecontractingservices.com/wp-content/uploads/2021/04/red-brick-building-scaled.jpg" alt="Red brick building restoration" loading="lazy" decoding="async"><figcaption>Red brick building restoration</figcaption></figure></div>
  <div style="margin-top:34px"><div class="pf-viewing"><span>You are viewing <b>commercial projects</b> only. Looking for homes?</span><a href="https://reasonablecontractingservices.com/gallery/">See Residential Projects →</a></div></div>
</div></section>

<section class="rr-reveal rr-section" style="padding-top:0"><div class="rr-wrap">
  <div class="pf-map"><div><b>See 2,000+ completed projects on the map.</b><span>Find the roofs we have done in your neighborhood.</span></div><a class="rr-btn rr-btn-primary" href="https://hub.reasonablecontractingservices.com/projects" target="_blank" rel="noopener">Open the Project Map</a></div>
</div></section>

<section class="rr-reveal rr-section is-navy"><div class="rr-wrap" style="text-align:center">
  <div class="rr-shead" style="margin-bottom:28px"><span class="rr-eyebrow on-dark">Your Building Next</span><h2>Put your roof on this list.</h2><p>Send us the address and what is going on. We will walk it and give you a straight estimate. Estimates are free.</p></div>
  <div class="rr-two-tel" style="justify-content:center"><a class="rr-btn rr-btn-primary" href="#estimate">Request a Commercial Estimate</a><a class="rr-btn rr-btn-ghost" href="tel:8109843420">Port Huron (810) 984-3420</a><a class="rr-btn rr-btn-ghost" href="tel:2488003269">Troy (248) 800-3269</a></div>
  <p style="margin-top:22px;color:#aab8c7;font-size:14px">Family-owned since 1984 · Michigan Builders License #262000657 · Licensed & insured · <a href="https://reasonablecontractingservices.com/commercial-roofing/" style="color:#F7B96F">Commercial roofing services</a></p>
</div></section>
</div><script type="application/ld+json">{"@context": "https://schema.org", "@type": "CollectionPage", "name": "Commercial Roofing Projects", "url": "https://reasonablecontractingservices.com/commercial-roofing-projects/", "description": "Recent commercial roofing projects by Reasonable Roofing & Contracting in Michigan, with the roof system and scope of each.", "publisher": {"@type": "RoofingContractor", "name": "Reasonable Roofing & Contracting", "@id": "https://reasonablecontractingservices.com/#organization", "url": "https://reasonablecontractingservices.com/", "telephone": ["(810) 984-3420", "(248) 800-3269"], "hasCredential": {"@type": "EducationalOccupationalCredential", "name": "Michigan Residential Builders License", "identifier": "262000657"}}, "mainEntity": {"@type": "ItemList", "itemListElement": [{"@type": "ListItem", "position": 1, "url": "https://reasonablecontractingservices.com/commercial-roofing-projects/#blue-water-counseling", "item": {"@type": "CreativeWork", "name": "Blue Water Counseling roofing project", "image": "https://reasonablecontractingservices.com/wp-content/uploads/2026/09/krafft-rd-before-ballast-ponding.jpg", "description": "A mid-century brick office with a ballasted flat roof and chronic ponding. The ballast came off, tapered insulation went down to move water to new drains, and a fully adhered white TPO membrane went over it, finished with new two-tone fascia metal.", "contentLocation": {"@type": "Place", "address": {"@type": "PostalAddress", "addressLocality": "Fort Gratiot", "addressRegion": "MI", "addressCountry": "US"}}, "creator": {"@id": "https://reasonablecontractingservices.com/#organization"}}}, {"@type": "ListItem", "position": 2, "url": "https://reasonablecontractingservices.com/commercial-roofing-projects/#wright-plastic-products", "item": {"@type": "CreativeWork", "name": "Wright Plastic Products roofing project", "image": "https://reasonablecontractingservices.com/wp-content/uploads/2026/09/wrights-plastic-building-saint-clair.jpg", "description": "An active manufacturing plant with failing seams at the parapet. The failed sections came out and a fully adhered Elevate TPO membrane went in, with new curb flashing and edge metal, while the plant kept running below.", "contentLocation": {"@type": "Place", "address": {"@type": "PostalAddress", "addressLocality": "Saint Clair", "addressRegion": "MI", "addressCountry": "US"}}, "creator": {"@id": "https://reasonablecontractingservices.com/#organization"}}}, {"@type": "ListItem", "position": 3, "url": "https://reasonablecontractingservices.com/commercial-roofing-projects/#lamplighter-condominiums", "item": {"@type": "CreativeWork", "name": "Lamplighter Condominiums roofing project", "image": "https://reasonablecontractingservices.com/wp-content/uploads/2026/09/river-rd-drone-hero.jpg", "description": "A multi-building condominium complex on the St. Clair River with aged, storm-worn roofs. Every building was re-roofed end to end, from the riverfront main house to the back courtyard wings.", "contentLocation": {"@type": "Place", "address": {"@type": "PostalAddress", "addressLocality": "Saint Clair", "addressRegion": "MI", "addressCountry": "US"}}, "creator": {"@id": "https://reasonablecontractingservices.com/#organization"}}}, {"@type": "ListItem", "position": 4, "url": "https://reasonablecontractingservices.com/commercial-roofing-projects/#porthaven-manor", "item": {"@type": "CreativeWork", "name": "Porthaven Manor roofing project", "image": "https://reasonablecontractingservices.com/wp-content/uploads/2026/09/porthaven-manor-community-wide.jpg", "description": "A multi-wing senior living community with complex hip-and-valley roofs over occupied residences. Porthaven keeps calling us back: six separate roofing projects since 2023, each done over residences that stay occupied.", "contentLocation": {"@type": "Place", "address": {"@type": "PostalAddress", "addressLocality": "Port Huron", "addressRegion": "MI", "addressCountry": "US"}}, "creator": {"@id": "https://reasonablecontractingservices.com/#organization"}}}, {"@type": "ListItem", "position": 5, "url": "https://reasonablecontractingservices.com/commercial-roofing-projects/#armed-forces-career-center", "item": {"@type": "CreativeWork", "name": "Armed Forces Career Center roofing project", "image": "https://reasonablecontractingservices.com/wp-content/uploads/2026/09/24th-ave-after-wide.jpg", "description": "A commercial building on a busy Port Huron corridor. The pitched roof was torn off to the deck and replaced with Owens Corning Duration shingles, the low-slope section got a Mule-Hide EPDM membrane, and the job wrapped with new seamless gutters and rotted-wood repair and paint out front.", "contentLocation": {"@type": "Place", "address": {"@type": "PostalAddress", "addressLocality": "Port Huron", "addressRegion": "MI", "addressCountry": "US"}}, "creator": {"@id": "https://reasonablecontractingservices.com/#organization"}}}, {"@type": "ListItem", "position": 6, "url": "https://reasonablecontractingservices.com/commercial-roofing-projects/#rochester-fire-department", "item": {"@type": "CreativeWork", "name": "Rochester Fire Department roofing project", "image": "https://reasonablecontractingservices.com/wp-content/uploads/2021/03/Layer-649.jpg", "description": "Roofing on the Rochester fire station, a working public-safety building for the City of Rochester.", "contentLocation": {"@type": "Place", "address": {"@type": "PostalAddress", "addressLocality": "Rochester", "addressRegion": "MI", "addressCountry": "US"}}, "creator": {"@id": "https://reasonablecontractingservices.com/#organization"}}}]}}</script><script type="application/ld+json">{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://reasonablecontractingservices.com/"}, {"@type": "ListItem", "position": 2, "name": "Commercial Roofing", "item": "https://reasonablecontractingservices.com/commercial-roofing/"}, {"@type": "ListItem", "position": 3, "name": "Commercial Projects", "item": "https://reasonablecontractingservices.com/commercial-roofing-projects/"}]}</script><script>document.documentElement.classList.add("rr-js");</script><script>(function(){var D=document;D.documentElement.classList.add("rr-js");function ready(fn){if(D.readyState!="loading")fn();else D.addEventListener("DOMContentLoaded",fn);}ready(function(){var rm=window.matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches;var rev=[].slice.call(D.querySelectorAll(".rr-reveal"));if(rm||!("IntersectionObserver"in window)){rev.forEach(function(e){e.classList.add("in");});}else{var io=new IntersectionObserver(function(es){es.forEach(function(en){if(en.isIntersecting){en.target.classList.add("in");io.unobserve(en.target);}});},{threshold:0.12,rootMargin:"0px 0px -8% 0px"});rev.forEach(function(e){io.observe(e);});}var nums=[].slice.call(D.querySelectorAll(".rr-svcstatnum[data-to]"));function run(el){var to=parseFloat(el.getAttribute("data-to")),suf=el.getAttribute("data-suf")||"",dec=to%1!=0,t0=null,dur=1400;function st(ts){if(!t0)t0=ts;var p=Math.min((ts-t0)/dur,1),e=1-Math.pow(1-p,3),v=to*e;el.textContent=(dec?v.toFixed(1):Math.round(v))+suf;if(p<1)requestAnimationFrame(st);}requestAnimationFrame(st);}if(rm||!("IntersectionObserver"in window)){nums.forEach(function(el){el.textContent=el.getAttribute("data-to")+(el.getAttribute("data-suf")||"");});}else{var io2=new IntersectionObserver(function(es){es.forEach(function(en){if(en.isIntersecting){run(en.target);io2.unobserve(en.target);}});},{threshold:0.6});nums.forEach(function(el){io2.observe(el);});}});})();</script><script>(function(){var D=document;function init(spec){var fig=spec.querySelector('.rr-spec-fig svg');if(!fig)return;var rows=[].slice.call(spec.querySelectorAll('.rr-arow'));var hotByNum={},rowByNum={};rows.forEach(function(r){var x=r.querySelector('.num');if(x){rowByNum[parseInt(x.textContent,10)]=r;}});[].slice.call(fig.querySelectorAll('g')).forEach(function(g){var t=g.querySelector('text'),c=g.querySelector('circle');if(t&&c){var nn=parseInt(t.textContent,10);if(nn){hotByNum[nn]=g;g.setAttribute('class',(g.getAttribute('class')||'')+' rr-hot');g.setAttribute('tabindex','0');}}});var nums=Object.keys(rowByNum).map(Number).filter(function(x){return hotByNum[x];}).sort(function(a,b){return a-b;});if(!nums.length)return;var fc=spec.querySelector('.rr-spec-fig');var hint=null;if(fc){hint=D.createElement('span');hint.className='rr-spec-hint';hint.textContent='Hover to explore';fc.appendChild(hint);}var cur=-1,timer=null,locked=false;function paint(num){nums.forEach(function(k){var on=(k===num);hotByNum[k].classList.toggle('rr-hot-on',on);hotByNum[k].classList.toggle('rr-hot-dim',!on);rowByNum[k].classList.toggle('rr-row-on',on);rowByNum[k].classList.toggle('rr-row-dim',!on);});cur=num;}function stop(){if(timer){clearInterval(timer);timer=null;}}nums.forEach(function(k){function act(){locked=true;stop();if(hint)hint.classList.add('hide');paint(k);}hotByNum[k].addEventListener('mouseenter',act);hotByNum[k].addEventListener('click',act);hotByNum[k].addEventListener('focus',act);rowByNum[k].setAttribute('tabindex','0');rowByNum[k].addEventListener('mouseenter',act);rowByNum[k].addEventListener('click',act);rowByNum[k].addEventListener('focus',act);});paint(nums[0]);var rm=window.matchMedia&&matchMedia('(prefers-reduced-motion: reduce)').matches;if(!rm){timer=setInterval(function(){if(locked){stop();return;}var i=nums.indexOf(cur);paint(nums[(i+1)%nums.length]);},2600);}}function ready(fn){if(D.readyState!='loading')fn();else D.addEventListener('DOMContentLoaded',fn);}ready(function(){[].slice.call(D.querySelectorAll('.rr-spec')).forEach(init);});})();</script><script>
(function(){
  'use strict';
  function tryOpenQuoteWidget(){
    var apis=[
      function(){return window.RoofleWidget&&typeof window.RoofleWidget.open==='function'&&(window.RoofleWidget.open(),true);},
      function(){return window.Roofle&&typeof window.Roofle.open==='function'&&(window.Roofle.open(),true);},
      function(){return typeof window.openRoofleWidget==='function'&&(window.openRoofleWidget(),true);}
    ];
    for(var i=0;i<apis.length;i++){try{if(apis[i]())return true;}catch(e){}}
    var sel=['[data-roofle-widget]','.roofle-widget-trigger','.roofle-launcher','.roofle-trigger','iframe[src*="roofle"]'];
    for(var j=0;j<sel.length;j++){try{var el=document.querySelector(sel[j]);if(el&&el.click){el.click();return true;}}catch(e){}}
    return false;
  }
  document.addEventListener('click',function(e){var t=e.target.closest&&e.target.closest('[data-rr-quote]');if(!t)return;if(tryOpenQuoteWidget())e.preventDefault();},false);
  function initReveal(){
    var targets=document.querySelectorAll('.rr-specials .rr-shead, .rr-specials .rr-offer, .rr-specials .rr-cmp, .rr-specials .rr-step, .rr-specials .rr-card, .rr-specials .rr-final');
    if(!targets.length||!('IntersectionObserver' in window))return;
    targets.forEach(function(el){el.classList.add('rr-reveal');});
    var io=new IntersectionObserver(function(ents){ents.forEach(function(en){if(en.isIntersecting){en.target.classList.add('is-in');io.unobserve(en.target);}});},{threshold:.12,rootMargin:'0px 0px -40px 0px'});
    targets.forEach(function(el){io.observe(el);});
  }
  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',initReveal);else initReveal();
})();
</script><script>
(function(){
  document.querySelectorAll('.rr-specials .rr-qa-q').forEach(function(b){
    b.addEventListener('click',function(){
      var qa=b.closest('.rr-qa'),a=qa.querySelector('.rr-qa-a'),open=qa.classList.contains('is-open');
      qa.classList.toggle('is-open',!open); a.style.maxHeight=open?null:a.scrollHeight+'px';
    });
  });
  var mcta=document.getElementById('rrMcta');
  function onScroll(){if(mcta){mcta.classList.toggle('is-show',window.pageYOffset>520);}}
  window.addEventListener('scroll',onScroll,{passive:true});onScroll();
})();
</script><script>
(function(){
var root=document.querySelector('.rr-cp');if(!root)return;
var lb=document.createElement('div');lb.className='cp-lb';lb.hidden=true;lb.innerHTML='<button type="button" aria-label="Close">×</button><img alt=""><p></p>';document.body.appendChild(lb);
function openLb(src,cap){lb.querySelector('img').src=src;lb.querySelector('img').alt=cap;lb.querySelector('p').textContent=cap;lb.hidden=false;}
lb.addEventListener('click',function(e){if(e.target===lb||e.target.tagName==='BUTTON')lb.hidden=true;});
document.addEventListener('keydown',function(e){if(e.key==='Escape')lb.hidden=true;});
root.querySelectorAll('.cp-card').forEach(function(card){
  var main=card.querySelector('.cp-main img'),cap=card.querySelector('.cp-main figcaption');
  card.querySelectorAll('.cp-thumbs button').forEach(function(b){b.addEventListener('click',function(){
    main.removeAttribute('srcset');main.src=b.dataset.full;main.alt=b.dataset.cap;cap.textContent=b.dataset.cap;card.querySelector('.cp-main').dataset.big=b.dataset.big;
    card.querySelectorAll('.cp-thumbs button').forEach(function(x){x.classList.toggle('on',x===b)});});});
  card.querySelector('.cp-main').addEventListener('click',function(){openLb(this.dataset.big||main.src,main.alt)});
});
root.querySelectorAll('.cp-more figure').forEach(function(f){f.addEventListener('click',function(){var i=f.querySelector('img');openLb(i.dataset.full||i.src,i.alt)})});
var btns=root.querySelectorAll('.cp-filters button');
btns.forEach(function(b){b.addEventListener('click',function(){
  var f=b.dataset.f;btns.forEach(function(x){x.classList.toggle('on',x===b)});
  root.querySelectorAll('.cp-card').forEach(function(c){c.hidden=!(f==='all'||(' '+c.dataset.tags+' ').indexOf(' '+f+' ')>-1)});});});
})();
</script>
```
