# Clinton Township Roofers

```
<!-- ============================================================
REASONABLE ROOFING & CONTRACTING — SEASONAL SPECIALS (SLIM-HERO build)
Rebrand "THE STANDARD" (Direction A) · built to REASONABLE_PAGE_SYSTEM.
Tier-2 secondary page: SLIM hero (bg photo + navy overlay) + inline trust line,
NO full stats band — keeps the page lighter than Home/Service pages so the
hierarchy reads. Drop into the Divi Code module. Scoped .rr / .rr-specials.

PRESERVED PER BLAKE: instant-quote -> Roofle [data-rr-quote]; free-estimate -> /free-estimate/.
HERO PHOTO: .rr-hero-slim background is a navy fallback for preview — in WordPress,
  set background-image to a real hero photo URL (same imagery as the homepage drone shots).
SERVICE CARD PHOTOS: placeholders — point at the homepage roofing/siding media URLs.
ACCURACY (Page System §2 + Brand Guide §0): 42 years / since 1984 · dual-elite /
  top 3% (not the inflated tier) · 4.8 / 255+ · 3,000+ / 100+ / 16 counties ·
  "Michigan" only (no regional prefix) · no always-on claim · real offers only.
============================================================ -->
<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><section class="rr-hero" style="background:linear-gradient(100deg,rgba(14,25,36,.86) 0%,rgba(20,46,71,.68) 45%,rgba(20,46,71,.34) 100%),url('https://reasonablecontractingservices.com/wp-content/uploads/2025/09/Untitled-2025-09-26T154421.618.jpg') center/cover no-repeat"><div class="rr-wrap"><div class="rr-hero-grid"><div class="rr-hero-left"><div class="rr-hero-eyebrow">Macomb County · Michigan's Largest Township</div><h1>Clinton Township roofing & exterior contractor.</h1><div class="rr-tagline-rule"></div><div class="rr-hero-services">Roofing · Siding · Gutters · Windows · Doors · Storm Restoration</div><p class="rr-sub">Roof repair, replacement, and siding for Michigan's largest township — subdivisions, condo communities, and association boards, flanked by our Port Huron and Troy offices.</p><div class="rr-hero-ctas"><a class="rr-btn rr-btn-primary" href="https://reasonablecontractingservices.com/free-estimate/">Schedule a Free Roof Assessment →</a><a class="rr-btn rr-btn-ghost" href="tel:8109843420">Call (810) 984-3420</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">Licensed & Insured</div><div class="item">Dual Manufacturer-Elite</div></div></div></div><div class="rr-hero-form" id="estimate"><div class="fh"><h3>Get your free Clinton Township estimate</h3><p>Tell us about your Clinton Township home — we'll be in touch within one business day.</p></div>

Service Type Form Fill

GET IN TOUCH

If you are human, leave this field blank.			

<div class="privacy">No spam, ever. Your details are used only to prepare your estimate.</div></div></div></div></section><div class="rr-badgebar"><div class="rr-wrap"><div class="row"><div class="rr-badge"><span class="dot"></span><strong>Since 1984</strong></div><div class="rr-badge"><span class="dot"></span>Licensed & Insured</div><div class="rr-badge"><span class="dot"></span>Dual Manufacturer-Elite</div><div class="rr-badge"><span class="dot"></span>Workmanship Warranty</div><div class="rr-badge"><span class="dot"></span><span data-rr-live="avg">4.8</span>★ <span data-rr-live="total">255</span> Reviews</div></div></div></div><section class="rr-reveal rr-section"><div class="rr-wrap"><div class="rr-shead"><span class="rr-eyebrow">Serving Clinton Township, Michigan</span><h2>Clinton Township's trusted exterior contractor since 1984.</h2></div><p class="rr-prose">Clinton Township is Michigan's most populous township, and its roofs tell that story in layers: 1960s and '70s ranches near Gratiot, waves of '80s and '90s colonials, newer builds near Partridge Creek — and one of the largest concentrations of condo and site-condo communities in the state.</p><p class="rr-prose">That mix is why Clinton Township searches lean toward roof <i>repair</i> and siding as much as full replacement — and why we diagnose before we quote. A 1990s colonial with one bad flashing detail needs a repair, not a pitch; a condo association needs unit-consistent specs and a board-ready proposal, not twelve different contractors. We've worked the township both ways since 1984.</p><p class="rr-prose">As an <b>Owens Corning Platinum Preferred Contractor and GAF Master Elite™</b> roofer — a dual credential held by roughly the top 3% of contractors — we install premium materials to manufacturer spec across Clinton Township. And because we handle roofing, siding, gutters, windows, and doors, your entire Clinton Township exterior can be done by one trusted local contractor.</p></div></section><style>.rr .rr-togrid{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;align-items:center;margin-top:8px}.rr .rr-tocard{background:#fff;border:1px solid var(--line-cool);border-radius:var(--r-md);padding:30px}.rr .rr-tocard b{display:block;font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--royal);margin-bottom:5px}.rr .rr-tocard .line{color:var(--navy);font-size:17px;font-weight:700;margin-bottom:16px}.rr .rr-tocard .line a{color:var(--navy);text-decoration:none}.rr .rr-tocard .line.last{margin-bottom:0}@media(max-width:900px){.rr .rr-togrid{grid-template-columns:1fr}}</style><section class="rr-reveal rr-section is-mist"><div class="rr-wrap"><div class="rr-shead"><span class="rr-eyebrow">Close By</span><h2>Flanked by both of our offices.</h2></div><div class="rr-togrid"><div><p class="rr-prose">Clinton Township sits between our two homes: the Port Huron headquarters up Gratiot, and our Troy office to the west. Whichever crew is closest responds — which is how estimates, repairs, and storm calls in the township get handled fast, season after season.</p></div><div class="rr-tocard"><b>Port Huron HQ</b><div class="line">1605 Beard St · <a href="tel:8109843420">(810) 984-3420</a></div><b>Troy Office</b><div class="line">1470 Souter Blvd · <a href="tel:2488003269">(248) 800-3269</a></div><b>Hours</b><div class="line last">Mon–Fri · 8am–5pm</div></div></div></div></section><section class="rr-reveal rr-section"><div class="rr-wrap"><div class="rr-shead"><span class="rr-eyebrow">Our Services</span><h2>Every era of township housing, covered.</h2><p>Repair-first roofing, siding, and full exteriors — for single homes and whole associations alike.</p></div><div class="rr-locserv"><a href="https://reasonablecontractingservices.com/roofing-contractors/"><div class="ic"><svg viewBox="0 0 24 24"><path d="M3 11l9-8 9 8M5 10v10h14V10"/></svg></div><h3>Roofing</h3><p>Full replacements across the township's ranch, colonial, and condo stock — specified to the house, priced line by line.</p><span class="go">Learn more →</span></a><a href="https://reasonablecontractingservices.com/storm-damage-roof-repair/"><div class="ic"><svg viewBox="0 0 24 24"><path d="M14.7 6.3a4 4 0 0 0-5.4 5.4l-6 6 2 2 6-6a4 4 0 0 0 5.4-5.4l-2.3 2.3-2-2 2.3-2.3z"/></svg></div><h3>Roof Repair</h3><p>The township's most-searched need — flashing leaks, wind damage, and aging-roof repairs, priced as repairs when repairs are honest.</p><span class="go">Learn more →</span></a><a href="https://reasonablecontractingservices.com/siding/"><div class="ic"><svg viewBox="0 0 24 24"><path d="M12 3l8 4v5c0 5-3.5 8-8 9-4.5-1-8-4-8-9V7l8-4z"/><path d="M9 12l2 2 4-4"/></svg></div><h3>Siding</h3><p>Clinton Township searches for siding almost as often as roofing — James Hardie, vinyl, and LP SmartSide, installed with matching trim across whole elevations.</p><span class="go">Learn more →</span></a><a href="https://reasonablecontractingservices.com/gutters/"><div class="ic"><svg viewBox="0 0 24 24"><path d="M11 20A7 7 0 0 1 4 13c0-6 8-9 16-9 0 8-3 16-9 16zM4 21c3-3 5-5 8-7"/></svg></div><h3>Gutters</h3><p>Seamless gutters and guards for subdivision maples that fill them every October.</p><span class="go">Learn more →</span></a><a href="https://reasonablecontractingservices.com/window-installation/"><div class="ic"><svg viewBox="0 0 24 24"><path d="M12 3l2.5 5.5 6 .5-4.5 4 1.4 6L12 16.5 6.6 19l1.4-6L3.5 9l6-.5L12 3z"/></svg></div><h3>Windows & Doors</h3><p>Energy-efficient windows and doors for every era of township housing, '60s ranch to Partridge Creek new-build.</p><span class="go">Learn more →</span></a><a href="https://reasonablecontractingservices.com/emergency-services/"><div class="ic"><svg viewBox="0 0 24 24"><path d="M13 2L4 14h7l-1 8 9-12h-7l1-8z"/></svg></div><h3>Storm & Insurance</h3><p>Storm damage documented unit by unit when needed — HAAG-certified, insurance-fluent, association-experienced.</p><span class="go">Learn more →</span></a></div></div></section><section class="rr-reveal rr-section"><div class="rr-wrap"><div class="rr-shead"><span class="rr-eyebrow">The Reasonable Difference</span><h2>Why Clinton Township homeowners choose us.</h2><p>Repair-first honesty, association fluency, and 42 years answering to Macomb County.</p></div><div class="rr-values"><div class="rr-value"><div class="ic"><svg viewBox="0 0 24 24"><circle cx="12" cy="8" r="6"/><path d="M8.5 13.5 7 22l5-3 5 3-1.5-8.5"/></svg></div><h3>Dual Manufacturer-Elite</h3><p>Owens Corning Platinum Preferred <b>and</b> GAF Master Elite™ — a bar about 3 in 100 roofers clear — which is what lets us register the strongest manufacturer warranties on Clinton Township homes and entire condo communities alike.</p></div><div class="rr-value"><div class="ic"><svg viewBox="0 0 24 24"><path d="M12 21s-7-5.2-7-11a7 7 0 0 1 14 0c0 5.8-7 11-7 11z"/><circle cx="12" cy="10" r="2.5"/></svg></div><h3>Local & Established</h3><p>Family-run since 1984 and serving Clinton Township for decades. Two offices flank the township — Port Huron up Gratiot, Troy to the west — and the same family has run both since 1984. Storm calls get answered by whoever's closer.</p></div><div class="rr-value"><div class="ic"><svg viewBox="0 0 24 24"><path d="M3 11l9-8 9 8M5 10v10h14V10"/></svg></div><h3>Your Whole Exterior</h3><p>Roof, siding, gutters, windows — one contractor, one warranty file. For associations, that also means one spec, one schedule, one accountable point of contact.</p></div><div class="rr-value"><div class="ic"><svg viewBox="0 0 24 24"><path d="M12 3l8 4v5c0 5-3.5 8-8 9-4.5-1-8-4-8-9V7l8-4z"/><path d="M9 12l2 2 4-4"/></svg></div><h3>Storm & Insurance Help</h3><p>When hail crosses Macomb County, we document damage to carrier standards — per home or per association — and meet the adjusters on the roof.</p></div><div class="rr-value"><div class="ic"><svg viewBox="0 0 24 24"><path d="M12 3l8 4v5c0 5-3.5 8-8 9-4.5-1-8-4-8-9V7l8-4z"/><path d="M12 8v8M9.5 10.5h3.5a1.5 1.5 0 0 1 0 3h-2a1.5 1.5 0 0 0 0 3H14"/></svg></div><h3>Fair Pricing & Financing</h3><p>Clear, itemized estimates and flexible <a href="https://reasonablecontractingservices.com/financing/">financing</a>, including 0% on qualifying projects — line-item written pricing — and financing, including 0% on qualifying projects.</p></div><div class="rr-value"><div class="ic"><svg viewBox="0 0 24 24"><path d="M12 3l2.5 5.5 6 .5-4.5 4 1.4 6L12 16.5 6.6 19l1.4-6L3.5 9l6-.5L12 3z"/></svg></div><h3>Workmanship Warranty</h3><p>Our workmanship warranty rides on top of manufacturer coverage — and it applies whether we roofed one house or forty units.</p></div></div></div></section><section class="rr-reveal rr-section"><div class="rr-wrap"><div class="rr-shead"><span class="rr-eyebrow">Associations & Condos</span><h2>Board-ready roofing for condo communities.</h2></div><p class="rr-prose">A township this size runs on associations — and association roofing is its own discipline. We give boards what they actually need: a single spec applied consistently across every unit, phased schedules that respect residents, insurance-grade documentation after storms, and proposals written so a board can vote on them without a translator. For clubhouses and community buildings with flat roofs, our <a href="https://reasonablecontractingservices.com/commercial-roofing/">commercial roofing</a> crew handles <a href="https://reasonablecontractingservices.com/tpo-roofing-contractors/">TPO</a> and single-ply systems — and <a href="https://reasonablecontractingservices.com/roofing-for-property-managers/">property managers</a> get vendor-file documentation as standard.</p></div></section><section class="rr-reveal rr-section is-mist"><div class="rr-wrap"><div class="rr-shead"><span class="rr-eyebrow">By The Numbers</span><h2>42 years. One standard.</h2><p>The kind of track record that only comes from doing it right, in the same communities, for a very long time.</p></div><div class="rr-svcstats"><div class="rr-svcstat"><span class="rr-svcstatnum" data-to="42" data-suf="+">0</span><span class="lbl">Years in Michigan</span><span class="sub">Family-owned since 1984</span></div><div class="rr-svcstat"><span class="rr-svcstatnum" data-to="3000" data-suf="+">0</span><span class="lbl">Roofs Installed</span><span class="sub">Across Michigan since 1984</span></div><div class="rr-svcstat"><span class="rr-svcstatnum" data-to="4.8">0</span><span class="star">★</span><span class="lbl">Google Rating</span><span class="sub"><span data-rr-live="total">255</span> homeowner reviews</span></div><div class="rr-svcstat"><span class="rr-svcstatnum" data-to="16">0</span><span class="lbl">Counties Served</span><span class="sub">St. Clair to Kent</span></div></div></div></section><section class="rr-reveal rr-edband"><div class="rr-wrap"><span class="eb-ey">Serving Clinton Township Since 1984</span><p class="eb-q">“In a township of a hundred thousand roofs, the honest answer is usually a repair. We're the crew that says so — and proves it in writing.”</p><p class="eb-s">Family-run since 1984, dual manufacturer-elite, and equally at home fixing one flashing leak or re-roofing an entire condo community on a board-approved schedule.</p></div></section><section class="rr-reveal rr-section is-mist"><div class="rr-wrap"><div class="rr-shead"><span class="rr-eyebrow">Nearby Areas</span><h2>Roofing across Macomb County.</h2><p>The whole township and the county around it — explore nearby towns:</p></div><div class="rr-chips"><a href="https://reasonablecontractingservices.com/roofing-companies-chesterfield-mi/">Chesterfield</a><a href="https://reasonablecontractingservices.com/grosse-pointe-roofers/">Grosse Pointe</a><a href="https://reasonablecontractingservices.com/harrison-township-roofers/">Harrison Township</a><a href="https://reasonablecontractingservices.com/macomb-township-roofers/">Macomb Township</a><a href="https://reasonablecontractingservices.com/mount-clemens-roofers/">Mount Clemens</a><a href="https://reasonablecontractingservices.com/new-baltimore-roofers/">New Baltimore</a><a href="https://reasonablecontractingservices.com/ray-township-roofers/">Ray Township</a><a href="https://reasonablecontractingservices.com/richmond-roofers/">Richmond</a><a href="https://reasonablecontractingservices.com/roseville-roofers/">Roseville</a><a href="https://reasonablecontractingservices.com/macomb-county/">Macomb County</a></div></div></section><section class="rr-reveal rr-section"><div class="rr-wrap"><div class="rr-shead"><span class="rr-eyebrow">Common Questions</span><h2>Clinton Township roofing & exterior FAQs.</h2></div><div class="rr-faq-list"><div class="rr-qa"><button class="rr-qa-q" type="button">Do you provide roofing services in Clinton Township?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Yes — everywhere in the township, from the Gratiot corridor to Partridge Creek, with crews responding from both our Port Huron and Troy offices. Homes, condos, and association communities; roofing, siding, gutters, windows, and storm work.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">How much does a new roof cost in Clinton Township?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">A typical asphalt shingle roof in Clinton Township runs $6–9 per square foot installed — roughly $9,000–18,000 for an average home, depending on size, pitch, and shingle line. We provide free, itemized written estimates with exact pricing for your Clinton Township home.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Do you help with storm-damage insurance claims in Clinton Township?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">We do. Our HAAG-certified inspectors document the damage to Clinton Township roofs the way adjusters expect, meet your adjuster on-site, and help you get the repair your policy owes — minus your deductible.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Do you work with condo and homeowner associations?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Constantly — Clinton Township is one of Michigan's densest condo markets. Boards get a single consistent spec across units, phased schedules that respect residents, storm documentation the association's carrier accepts, and proposals written for a board vote. One point of contact from first walk-through to final punch list.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Should I repair or replace my Clinton Township roof?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Ask the roof, not the salesman. Age, leak history, and what a close inspection actually finds decide it — a '90s colonial with one failed flashing detail needs a repair; a roof shedding granules across the whole field is telling you something else. We inspect first, show you photos, and price both paths when both are real options.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Are you licensed and insured?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Yes — fully licensed (Michigan Builders License #262000657) and insured, and dual-certified as an Owens Corning Platinum Preferred Contractor and GAF Master Elite™ roofer. Every Clinton Township job is done to manufacturer spec and backed by real warranties.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Do you offer free estimates in Clinton Township?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Yes — free, written, itemized. For associations, we prepare board-ready proposals with per-unit consistency and phased scheduling at no charge. Call (810) 984-3420.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">What areas near Clinton Township do you serve?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">All of central Macomb — Sterling Heights, Macomb Township, Mount Clemens, Fraser, Roseville, Harrison Township, Shelby Township — plus our full Michigan footprint.</div></div></div></div></div></section><section class="rr-reveal rr-final"><div class="rr-wrap"><h2>Need a roofer in Clinton Township?</h2><p>One house or one hundred units — a free written assessment, repair-first honesty, and two offices close enough to prove it.</p><div class="rr-hero-ctas"><a href="https://reasonablecontractingservices.com/free-estimate/" class="rr-btn rr-btn-primary">Schedule My Free Roof Assessment →</a><a href="tel:8109843420" class="rr-btn rr-btn-ghost">Call (810) 984-3420</a></div><div class="phones">Port Huron <a href="tel:8109843420">(810) 984-3420</a>  ·  Troy <a href="tel:2488003269">(248) 800-3269</a></div></div></section><div class="rr-mcta" id="rrMcta"><a href="tel:8109843420" class="rr-btn rr-btn-ghost" style="color:var(--navy);border-color:rgba(20,46,71,.3)">Call Now</a><a href="https://reasonablecontractingservices.com/free-estimate/" class="rr-btn rr-btn-primary">Free Estimate</a></div><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></div><!-- /.rr clinton-township-roofers --><script type="application/ld+json">{"@context": "https://schema.org", "@type": "RoofingContractor", "name": "Reasonable Roofing & Contracting", "telephone": "+1-810-984-3420", "url": "https://reasonablecontractingservices.com", "foundingDate": "1984", "priceRange": "$$", "areaServed": [{"@type": "City", "name": "Clinton Township, MI"}, {"@type": "AdministrativeArea", "name": "Macomb County, MI"}], "address": {"@type": "PostalAddress", "streetAddress": "1605 Beard St", "addressLocality": "Port Huron", "addressRegion": "MI", "postalCode": "48060", "addressCountry": "US"}}</script><script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Do you provide roofing services in Clinton Township?", "acceptedAnswer": {"@type": "Answer", "text": "Yes - everywhere in the township, from the Gratiot corridor to Partridge Creek, with crews responding from both our Port Huron and Troy offices. Homes, condos, and association communities; roofing, siding, gutters, windows, and storm work."}}, {"@type": "Question", "name": "How much does a new roof cost in Clinton Township?", "acceptedAnswer": {"@type": "Answer", "text": "A typical asphalt shingle roof in Clinton Township runs $6-9 per square foot installed - roughly $9,000-18,000 for an average home, depending on size, pitch, and shingle line. We provide free, itemized written estimates with exact pricing for your Clinton Township home."}}, {"@type": "Question", "name": "Do you help with storm-damage insurance claims in Clinton Township?", "acceptedAnswer": {"@type": "Answer", "text": "We do. Our HAAG-certified inspectors document the damage to Clinton Township roofs the way adjusters expect, meet your adjuster on-site, and help you get the repair your policy owes - minus your deductible."}}, {"@type": "Question", "name": "Do you work with condo and homeowner associations?", "acceptedAnswer": {"@type": "Answer", "text": "Constantly - Clinton Township is one of Michigan's densest condo markets. Boards get a single consistent spec across units, phased schedules that respect residents, storm documentation the association's carrier accepts, and proposals written for a board vote. One point of contact from first walk-through to final punch list."}}, {"@type": "Question", "name": "Should I repair or replace my Clinton Township roof?", "acceptedAnswer": {"@type": "Answer", "text": "Ask the roof, not the salesman. Age, leak history, and what a close inspection actually finds decide it - a '90s colonial with one failed flashing detail needs a repair; a roof shedding granules across the whole field is telling you something else. We inspect first, show you photos, and price both paths when both are real options."}}, {"@type": "Question", "name": "Are you licensed and insured?", "acceptedAnswer": {"@type": "Answer", "text": "Yes - fully licensed (Michigan Builders License #262000657) and insured, and dual-certified as an Owens Corning Platinum Preferred Contractor and GAF Master Elite™ roofer. Every Clinton Township job is done to manufacturer spec and backed by real warranties."}}, {"@type": "Question", "name": "Do you offer free estimates in Clinton Township?", "acceptedAnswer": {"@type": "Answer", "text": "Yes - free, written, itemized. For associations, we prepare board-ready proposals with per-unit consistency and phased scheduling at no charge. Call (810) 984-3420."}}, {"@type": "Question", "name": "What areas near Clinton Township do you serve?", "acceptedAnswer": {"@type": "Answer", "text": "All of central Macomb - Sterling Heights, Macomb Township, Mount Clemens, Fraser, Roseville, Harrison Township, Shelby Township - plus our full Michigan footprint."}}]}</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 type="application/ld+json">
{"@context":"https://schema.org","@type":"RoofingContractor","name":"Reasonable Roofing & Contracting","url":"https://reasonablecontractingservices.com","telephone":"+1-810-984-3420","address":[{"@type":"PostalAddress","streetAddress":"1605 Beard St","addressLocality":"Port Huron","addressRegion":"MI","postalCode":"48060","addressCountry":"US"},{"@type":"PostalAddress","streetAddress":"1470 Souter Blvd","addressLocality":"Troy","addressRegion":"MI","postalCode":"48083","addressCountry":"US"}],"openingHoursSpecification":{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"08:00","closes":"17:00"},"priceRange":"$$","areaServed":[{"@type":"County","name":"St. Clair County, MI"},{"@type":"County","name":"Macomb County, MI"},{"@type":"County","name":"Oakland County, MI"},{"@type":"County","name":"Lapeer County, MI"},{"@type":"County","name":"Sanilac County, MI"}],"foundingDate":"1984","slogan":"Michigan's Exterior Standard","award":["BBB A+ Rating","Owens Corning Platinum Preferred Contractor","GAF Master Elite Contractor — Top 3%","HAAG Certified Inspector"]}
</script>
```

```
<!-- rr-city-projects:Clinton Township (auto-generated from live hub project data — refreshed weekly) -->
<script type="application/ld+json">{"@context": "https://schema.org", "@type": "Service", "serviceType": "Roofing, siding, gutters and exterior remodeling", "provider": {"@type": "RoofingContractor", "name": "Reasonable Roofing & Contracting", "telephone": "(810) 984-3420", "url": "https://reasonablecontractingservices.com/"}, "areaServed": {"@type": "City", "name": "Clinton Township, MI"}, "description": "15 documented completed exterior projects in Clinton Township, Michigan since 2020."}</script>
<div style="font-family:'Public Sans',-apple-system,'Segoe UI',sans-serif;background:#FAF7F1;border:1px solid #e4ddd0;border-radius:16px;padding:36px 32px;margin:36px 0;">
  <p style="color:#3475C9;font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;margin:0 0 12px;display:inline-flex;align-items:center;gap:10px;"><span style="display:inline-block;width:16px;height:1px;background:#3475C9;"></span>Our Track Record in Clinton Township</p>
  <h2 style="color:#1F4068;font-family:'Archivo','Public Sans',sans-serif;font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.2;margin:0 0 6px;">15 Completed Projects in Clinton Township, MI</h2>
  <p style="color:#5A6672;font-size:15px;line-height:1.6;margin:0 0 22px;">We’ve been Clinton Township’s neighbors since 1984 — and since 2020 alone our crews have completed <strong>15 documented projects</strong> in and around the city, including <strong>3 so far this year</strong>: roof replacements, roof repairs, gutters, siding and windows.</p>
  <div style="background:#fff;border:1px solid #e4ddd0;border-radius:12px;padding:6px 20px;margin-bottom:24px;"><div style="display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #e4ddd0;"><span style="width:8px;height:8px;border-radius:50%;background:#3475C9;flex-shrink:0;"></span><span style="font-weight:600;color:#15314F;">Roof warranty on Harbor Hill Dr</span><span style="margin-left:auto;font-size:12px;font-weight:700;color:#3475C9;background:rgba(52,117,201,.08);border:1px solid rgba(52,117,201,.16);padding:3px 11px;border-radius:99px;">2026</span></div><div style="display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #e4ddd0;"><span style="width:8px;height:8px;border-radius:50%;background:#3475C9;flex-shrink:0;"></span><span style="font-weight:600;color:#15314F;">Gutter replacement on Julie Dr</span><span style="margin-left:auto;font-size:12px;font-weight:700;color:#3475C9;background:rgba(52,117,201,.08);border:1px solid rgba(52,117,201,.16);padding:3px 11px;border-radius:99px;">2026</span></div><div style="display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #e4ddd0;"><span style="width:8px;height:8px;border-radius:50%;background:#3475C9;flex-shrink:0;"></span><span style="font-weight:600;color:#15314F;">Roof replacement on Schroeder Dr</span><span style="margin-left:auto;font-size:12px;font-weight:700;color:#3475C9;background:rgba(52,117,201,.08);border:1px solid rgba(52,117,201,.16);padding:3px 11px;border-radius:99px;">2026</span></div><div style="display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #e4ddd0;"><span style="width:8px;height:8px;border-radius:50%;background:#3475C9;flex-shrink:0;"></span><span style="font-weight:600;color:#15314F;">Window replacement on Birch Tree LN</span><span style="margin-left:auto;font-size:12px;font-weight:700;color:#3475C9;background:rgba(52,117,201,.08);border:1px solid rgba(52,117,201,.16);padding:3px 11px;border-radius:99px;">2025</span></div><div style="display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #e4ddd0;"><span style="width:8px;height:8px;border-radius:50%;background:#3475C9;flex-shrink:0;"></span><span style="font-weight:600;color:#15314F;">Roof replacement on Whalen Dr</span><span style="margin-left:auto;font-size:12px;font-weight:700;color:#3475C9;background:rgba(52,117,201,.08);border:1px solid rgba(52,117,201,.16);padding:3px 11px;border-radius:99px;">2025</span></div><div style="display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #e4ddd0;"><span style="width:8px;height:8px;border-radius:50%;background:#3475C9;flex-shrink:0;"></span><span style="font-weight:600;color:#15314F;">Roof repair on Wurfel St</span><span style="margin-left:auto;font-size:12px;font-weight:700;color:#3475C9;background:rgba(52,117,201,.08);border:1px solid rgba(52,117,201,.16);padding:3px 11px;border-radius:99px;">2025</span></div></div>
  <div style="display:flex;gap:14px;flex-wrap:wrap;align-items:center;">
    <a href="https://reasonablecontractingservices.com/our-work/?city=Clinton%20Township" style="display:inline-block;background:#3475C9;color:#fff;text-decoration:none;font-weight:700;font-size:15px;padding:13px 26px;border-radius:8px;">See all 15 on our interactive map →</a>
    <a href="https://reasonablecontractingservices.com/free-estimate/" style="display:inline-block;background:#FF8C42;color:#fff;text-decoration:none;font-weight:700;font-size:15px;padding:13px 26px;border-radius:8px;box-shadow:0 6px 16px rgba(255,140,66,.26);">Free Estimate</a>
  </div>
</div>
```
