# Tree Damage Roof Repair

```
<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>
/* ===== 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-tree">

<style>
.rr.rr-tree{--impact:#C8541F;--impact-deep:#9E3F13;--ash:#2B2F36;--dust:#F2F0EC;--dust-line:#DDD8CF;--steel2:#5B6B7C}
.rr.rr-tree .is-dust{background:var(--dust);border-top:1px solid var(--dust-line);border-bottom:1px solid var(--dust-line)}
.rr.rr-tree .rr-eyebrow{color:var(--impact-deep)}
.rr.rr-tree .rr-eyebrow.on-dark{color:#F0B48F}
.rr.rr-tree .rr-badgebar .dot{background:var(--impact)}
.rr.rr-tree .rr-arow .num{background:var(--ash)}
.rr.rr-tree .rr-spec-list .rr-arow.rr-row-on{background:rgba(200,84,31,.07);box-shadow:inset 4px 0 0 var(--impact)}
.rr.rr-tree .rr-spec-list .rr-arow.rr-row-on h4{color:var(--impact-deep)}
.rr.rr-tree .rr-spec-list .rr-arow.rr-row-on .num{box-shadow:0 0 0 4px rgba(200,84,31,.22);background:var(--impact)}
.rr.rr-tree .rr-spec-fig svg .rr-hot-on{filter:drop-shadow(0 1px 6px rgba(200,84,31,.8))}
.rr.rr-tree .rr-spec-tag{color:var(--impact-deep)}
.rr.rr-tree .rr-spec-fig{position:relative}
.rr.rr-tree .rr-hero .rr-hero-ctas{gap:10px}
.rr.rr-tree .rr-hero .rr-btn{white-space:nowrap;padding:12px 16px;font-size:14.5px}
.rr.rr-tree .rr-ctrow{align-items:stretch}
.rr.rr-tree .rr-ctrow>div{display:flex;align-items:center;flex-wrap:wrap}
.rr.rr-tree .rr-ctrow:not(.rr-cthead)>div{background:#fff}
.rr.rr-tree .rr-cthead>div{background:var(--ash)!important;color:#fff!important}
.rr.rr-tree .rr-ctrow.pick>div{background:rgba(200,84,31,.07)}
.rr.rr-tree .rr-ctrow.pick .m{box-shadow:inset 3px 0 0 var(--impact)}
.rr.rr-tree .rr-ctrow .pill{color:var(--impact-deep);background:rgba(200,84,31,.15)}
/* safety gate */
.rr.rr-tree .rr-gate{display:grid!important;grid-template-columns:1fr 1fr!important;gap:18px;max-width:1000px;margin:0 auto}
.rr.rr-tree .rr-gate div{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:24px}
.rr.rr-tree .rr-gate div.go{border-top:6px solid var(--impact)}
.rr.rr-tree .rr-gate div.ok{border-top:6px solid #6FBF8E}
.rr.rr-tree .rr-gate .k{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#F0B48F}
.rr.rr-tree .rr-gate div.ok .k{color:#9FD9B5}
.rr.rr-tree .rr-gate h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:22px;color:#fff;margin:8px 0 10px}
.rr.rr-tree .rr-gate ul{margin:0;padding-left:20px;color:#dbe4ee;font-size:15px;line-height:1.55}
.rr.rr-tree .rr-gate li{margin:5px 0}
.rr.rr-tree .rr-dte{max-width:1000px;margin:18px auto 0;background:rgba(200,84,31,.14);border:1px solid rgba(240,180,143,.35);border-radius:12px;padding:14px 18px;color:#fff;font-size:15px;text-align:center}
/* impact clock */
.rr.rr-tree .rr-clock{position:relative;max-width:980px;margin:0 auto}
.rr.rr-tree .rr-clock::before{content:"";position:absolute;left:104px;top:14px;bottom:14px;width:3px;background:var(--ash)}
.rr.rr-tree .rr-tick{display:grid;grid-template-columns:88px 1fr;gap:40px;padding:18px 0;position:relative}
.rr.rr-tree .rr-tick .t{text-align:right;padding-top:4px}
.rr.rr-tree .rr-tick .t b{display:block;font-family:'Archivo',sans-serif;font-size:20px;letter-spacing:-.02em;color:var(--ash);line-height:1.1}
.rr.rr-tree .rr-tick .t span{display:block;font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--impact-deep);margin-top:3px}
.rr.rr-tree .rr-tick::before{content:"";position:absolute;left:97px;top:26px;width:17px;height:17px;border-radius:50%;background:var(--impact);border:4px solid #fff;box-shadow:0 0 0 2px var(--ash)}
.rr.rr-tree .rr-tick .c{background:#fff;border:1px solid var(--dust-line);border-radius:14px;padding:18px 22px}
.rr.rr-tree .rr-tick .c .who{font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--steel2);display:block;margin-bottom:4px}
.rr.rr-tree .rr-tick h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:18px;color:var(--navy);margin:0 0 6px}
.rr.rr-tree .rr-tick p{color:var(--slate-grey);font-size:14.5px;line-height:1.55;margin:0}
/* triage levels */
.rr.rr-tree .rr-levels{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:18px;max-width:1100px;margin:0 auto}
.rr.rr-tree .rr-level{background:#fff;border:1px solid var(--dust-line);border-radius:16px;padding:24px 22px;border-top:8px solid var(--steel2)}
.rr.rr-tree .rr-level.l2{border-top-color:#C98A1E}.rr.rr-tree .rr-level.l3{border-top-color:var(--impact)}
.rr.rr-tree .rr-level .k{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--steel2)}
.rr.rr-tree .rr-level.l2 .k{color:#9A6710}.rr.rr-tree .rr-level.l3 .k{color:var(--impact-deep)}
.rr.rr-tree .rr-level h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:21px;color:var(--navy);margin:8px 0 8px;line-height:1.2}
.rr.rr-tree .rr-level p{color:var(--slate-grey);font-size:14.5px;line-height:1.55}
.rr.rr-tree .rr-level ul{margin:10px 0 0;padding-left:18px;color:var(--slate);font-size:14px;line-height:1.5}
.rr.rr-tree .rr-level .tl{margin-top:12px;padding-top:10px;border-top:1px solid var(--dust-line);font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--cool-grey)}
/* law cards on dark */
.rr.rr-tree .rr-law{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:16px;max-width:1100px;margin:26px auto 0}
.rr.rr-tree .rr-law div{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:20px 18px}
.rr.rr-tree .rr-law b{display:block;font-family:'Archivo',sans-serif;font-size:16px;color:#fff;margin-bottom:6px}
.rr.rr-tree .rr-law p{color:#c9d6e3;font-size:14px;line-height:1.5;margin:0}
.rr.rr-tree .rr-law small{display:block;margin-top:8px;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#F0B48F}
/* michigan context */
.rr.rr-tree .rr-ctx{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:18px;max-width:1100px;margin:0 auto}
.rr.rr-tree .rr-ctx div{background:#fff;border:1px solid var(--dust-line);border-radius:16px;padding:22px 20px}
.rr.rr-tree .rr-ctx .n{font-family:'Archivo',sans-serif;font-weight:800;font-size:34px;color:var(--impact-deep);letter-spacing:-.02em;line-height:1}
.rr.rr-tree .rr-ctx h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:17px;color:var(--navy);margin:10px 0 6px}
.rr.rr-tree .rr-ctx p{color:var(--slate-grey);font-size:14px;line-height:1.5;margin:0}
.rr.rr-tree .rr-log{max-width:980px;margin:26px auto 0;display:grid;gap:10px}
.rr.rr-tree .rr-logrow{display:grid;grid-template-columns:140px 1fr;gap:18px;align-items:center;background:#fff;border:1px solid var(--dust-line);border-radius:12px;padding:14px 20px}
.rr.rr-tree .rr-logrow .d{font-family:'Archivo',sans-serif;font-weight:800;font-size:15px;color:var(--navy)}
.rr.rr-tree .rr-logrow p{color:var(--slate);font-size:14px;line-height:1.5;margin:0}
.rr.rr-tree .rr-proofs{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:18px;max-width:1100px;margin:0 auto}
.rr.rr-tree .rr-proof{background:#fff;border:1px solid var(--dust-line);border-radius:16px;padding:24px 22px}
.rr.rr-tree .rr-proof h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:19px;color:var(--navy);margin:0 0 8px}
.rr.rr-tree .rr-proof p{color:var(--slate-grey);font-size:14.5px;line-height:1.55;margin:0}
.rr.rr-tree .rr-chips{justify-content:center;max-width:940px;margin:0 auto}
.rr.rr-tree .rr-two-tel{display:flex;gap:12px;flex-wrap:wrap}
@media(max-width:980px){.rr.rr-tree .rr-law{grid-template-columns:1fr 1fr!important}.rr.rr-tree .rr-ctx{grid-template-columns:1fr!important}}
@media(max-width:860px){.rr.rr-tree .rr-levels,.rr.rr-tree .rr-proofs,.rr.rr-tree .rr-gate{grid-template-columns:1fr!important}}
@media(max-width:760px){.rr.rr-tree .rr-clock::before{left:14px}.rr.rr-tree .rr-tick{grid-template-columns:1fr;gap:8px;padding-left:40px}.rr.rr-tree .rr-tick .t{text-align:left}.rr.rr-tree .rr-tick::before{left:7px}}
@media(max-width:620px){.rr.rr-tree .rr-law{grid-template-columns:1fr!important}.rr.rr-tree .rr-logrow{grid-template-columns:1fr;gap:4px}}

/* mobile polish 2026-09-14 */
@media(hover:none){.rr.rr-tree .rr-spec-hint{display:none!important}}
@media(max-width:760px){.rr.rr-tree .rr-hero{box-shadow:inset 0 0 0 2000px rgba(8,16,26,.40)}.rr.rr-tree .rr-hero .rr-tagline{color:#BFD6F2!important}.rr.rr-tree .rr-spec-fig{padding:10px;border-radius:14px}.rr.rr-tree .rr-spec-fig figcaption{font-size:11px;letter-spacing:.04em}.rr.rr-tree .rr-ctable .cl{font-size:11px}.rr.rr-tree .rr-ctrow .pill{font-size:10px}.rr.rr-tree small,.rr.rr-tree .k,.rr.rr-tree .tag,.rr.rr-tree .v,.rr.rr-tree .who,.rr.rr-tree .cty span,.rr.rr-tree .rr-tick .t span{font-size:11px!important}.rr.rr-tree .rr-section{padding-top:64px;padding-bottom:64px}}
</style>
<section class="rr-hero" style="background:linear-gradient(100deg,rgba(16,18,22,.88) 0%,rgba(43,47,54,.72) 45%,rgba(43,47,54,.34) 100%),url('https://reasonablecontractingservices.com/wp-content/uploads/2026/03/b86b8a2f-fa53-4c92-a282-586ecad6b44e.jpg') center/cover no-repeat">
  <div class="rr-wrap"><div class="rr-hero-grid">
    <div class="rr-hero-left">
      <div class="rrs-m rrs-band"><img src="https://reasonablecontractingservices.com/wp-content/uploads/2026/03/b86b8a2f-fa53-4c92-a282-586ecad6b44e.jpg" class="skip-lazy" loading="eager" fetchpriority="high" decoding="sync" alt="Tree damage to a Michigan roof being assessed by Reasonable Roofing" srcset="https://reasonablecontractingservices.com/wp-content/uploads/2026/03/b86b8a2f-fa53-4c92-a282-586ecad6b44e-480x640.jpg 480w, https://reasonablecontractingservices.com/wp-content/uploads/2026/03/b86b8a2f-fa53-4c92-a282-586ecad6b44e-510x382.jpg 510w, https://reasonablecontractingservices.com/wp-content/uploads/2026/03/b86b8a2f-fa53-4c92-a282-586ecad6b44e.jpg 768w" sizes="100vw"><span class="rrs-fade"></span></div><div class="rrs-m rrs-pill"><svg class="rrs-g" viewBox="0 0 48 48" aria-hidden="true"><path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"/><path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"/><path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"/><path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"/></svg><b><span data-rr-live="avg">4.8</span></b><span class="rrs-stars">★★★★★</span><span class="rrs-pilltxt"><span data-rr-live="total">255</span> Google reviews</span></div><div class="rrs-m rrs-cta"><a class="rrs-call" href="tel:8109843420"><span class="rrs-callrow"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg><b>Call Now</b><span class="rrs-num">(810) 984-3420</span></span><span class="rrs-callsub">Free estimate · No pressure</span></a><a class="rrs-alt" href="#estimate">Can’t talk? Request your estimate →</a><div class="rrs-trust"><span><b>1984</b>Family-run</span><span><b>A+</b>BBB Rated</span><span><b>Dual-Elite</b>Certified</span></div></div><div class="rr-hero-eyebrow">Tree Damage · Emergency Roof Repair</div>
      <h1>A tree is on your house. Here is the next 24 hours.</h1>
      <p class="rr-tagline">Tarp fast. Extract safely. Rebuild the structure — not just the hole.</p>
      <p class="rr-prose" style="color:#dbe4ee">A tree strike is the one storm loss with a live load still sitting on the house. The order of operations matters: protect the roof, get the tree off without doing more damage, then open the deck and read the framing before anyone calls it a patch. We coordinate the sequence, document every step for your claim, and rebuild it right. Two Michigan offices, family-owned since 1984.</p>
      <div class="rr-hero-ctas"><a class="rr-btn rr-btn-primary" href="#estimate">Get My Free 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"><span class="rrs-m rrs-eyebrow">Free, no-obligation estimate</span><h3>Get your free estimate</h3><p>Tell us what came down and whether it's through the roof. 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">Office lines are voice only — call or use this form. No pressure, no door-knockers.</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>Emergency Tarping</div>
  <div class="rr-badge"><span class="dot"></span>Structural Roof Rebuild</div>
  <div class="rr-badge"><span class="dot"></span>Free Estimates</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>

<!-- SAFETY GATE -->
<section class="rr-reveal rr-section is-navy"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow on-dark">Leave or Stay?</span><h2>The 60-second safety check.</h2><p>Before anything else. Structure that moved can keep moving for hours after the impact.</p></div>
  <div class="rr-gate">
    <div class="go"><span class="k">Leave now if</span><h3>Any of these are true.</h3><ul><li>The trunk or a major limb entered a room</li><li>You smell gas, or anything sparked</li><li>Outlets are dead or breakers keep tripping</li><li>New cracks in walls or ceilings, doors that suddenly jam</li><li>A ceiling or roofline is visibly sagging</li><li>Wires are down anywhere near the house</li></ul></div>
    <div class="ok"><span class="k">Likely fine to stay if</span><h3>The strike stayed outside.</h3><ul><li>A limb is resting on the roof or a detached garage</li><li>No water, no cracks, no smell, nothing electrical</li><li>Doors and windows work the way they did yesterday</li><li>The tree is stable and not moving in the wind</li></ul></div>
  </div>
  <div class="rr-dte">Downed line? Stay at least 25 feet away, call 911, then DTE at (800) 477-4747. Treat every line as live.</div>
</div></section>

<!-- IMPACT CLOCK -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">The Impact Clock</span><h2>Stabilize. Extract. Rebuild. Hour by hour.</h2><p>Who does what, in the order that keeps a bad day from becoming a worse one.</p></div>
  <div class="rr-clock"><div class="rr-tick"><div class="t"><b>0:00</b><span>first five minutes</span></div><div class="c"><span class="who">You</span><h3>People and pets out. Utilities off if anything sparked.</h3><p>Get everyone clear of the impact side of the house. If you smell gas or see wires, leave and call 911. Kill the main breaker if water is near electrical.</p></div></div><div class="rr-tick"><div class="t"><b>0:30</b><span>first half hour</span></div><div class="c"><span class="who">You</span><h3>Photograph everything from the ground.</h3><p>Wide shots of the tree on the house, close-ups of the entry point, the yard, the neighbor's side. Note the time and the weather. Do not climb anything.</p></div></div><div class="rr-tick"><div class="t"><b>1:00</b><span>first hour</span></div><div class="c"><span class="who">You + your insurer</span><h3>Open the claim. Then call us.</h3><p>Get a claim number; the adjuster's schedule starts now. Tell us what happened and we'll tell you when we can be there and what to do in the meantime.</p></div></div><div class="rr-tick"><div class="t"><b>Hours 1–12</b><span>stabilize</span></div><div class="c"><span class="who">Reasonable</span><h3>Tarp and board what can be reached safely.</h3><p>We protect the openings the tree isn't sitting on and document the damage before the extraction disturbs it. Nothing gets cut yet.</p></div></div><div class="rr-tick"><div class="t"><b>Day 1–2</b><span>extract</span></div><div class="c"><span class="who">Tree service, with us on site</span><h3>The crane lift.</h3><p>A tree service we trust rigs and lifts the trunk off the roof in sections so it doesn't do more damage on the way out. We tarp the exposed area the same visit.</p></div></div><div class="rr-tick"><div class="t"><b>Day 2–5</b><span>assess</span></div><div class="c"><span class="who">Reasonable + adjuster</span><h3>Open the deck. Read the framing.</h3><p>We strip to the last damaged board, check rafters, trusses, and the ridge from the attic side, and assign a triage level. The adjuster meets us on the roof.</p></div></div><div class="rr-tick"><div class="t"><b>Day 3–14</b><span>paper</span></div><div class="c"><span class="who">Engineer if needed, township</span><h3>Engineer's letter and permit, only when the structure calls for it.</h3><p>Level 3 damage gets an engineer's repair letter and a permit. Levels 1 and 2 usually don't.</p></div></div><div class="rr-tick"><div class="t"><b>Week 2–6</b><span>rebuild</span></div><div class="c"><span class="who">Reasonable</span><h3>Structure, deck, roof, and the rest of the exterior.</h3><p>Sistered or replaced framing, new decking, ice-and-water shield, shingles matched as closely as the market allows, plus the siding, gutters, and windows the tree took with it.</p></div></div></div>
</div></section>

<!-- WHO DOES WHAT -->
<section class="rr-reveal rr-section is-dust"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Two Trades, One Sequence</span><h2>The roofer tarps. The arborist cuts.</h2><p>A tree strike needs two crews that don't get in each other's way. Here is the division of labor we run.</p></div>
  <div class="rr-ctable">
    <div class="rr-ctrow rr-cthead"><div>Job</div><div>Who</div><div>Sequence</div><div>Why the order matters</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Job</span>Wires, gas, safety</div><div><span class="cl">Who</span>911 · DTE</div><div><span class="cl">Seq</span><span class="ct">First</span></div><div><span class="cl">Why</span>Nobody touches the tree until the lines are confirmed dead.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Job</span>Claim number</div><div><span class="cl">Who</span>Your insurer</div><div><span class="cl">Seq</span><span class="ct">First hour</span></div><div><span class="cl">Why</span>The adjuster's calendar starts when you call, not when the tree comes off.</div></div>
    <div class="rr-ctrow pick"><div class="m"><span class="cl">Job</span>Tarp, board, document<span class="pill">Reasonable</span></div><div><span class="cl">Who</span>Licensed roofer</div><div><span class="cl">Seq</span><span class="ct">Before extraction</span></div><div><span class="cl">Why</span>Photos before the lift disturb nothing; a tarp on the open side keeps the next rain out.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Job</span>Cut, rig, lift</div><div><span class="cl">Who</span>Tree service, crane if needed</div><div><span class="cl">Seq</span><span class="ct">Day 1–2</span></div><div><span class="cl">Why</span>Sections lifted off, not dragged off. We're on site so the roof isn't the landing pad.</div></div>
    <div class="rr-ctrow pick"><div class="m"><span class="cl">Job</span>Open the deck, read the framing<span class="pill">Reasonable</span></div><div><span class="cl">Who</span>Licensed roofer</div><div><span class="cl">Seq</span><span class="ct">After extraction</span></div><div><span class="cl">Why</span>Impact travels past the hole. The triage level gets assigned here.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Job</span>Repair letter</div><div><span class="cl">Who</span>Structural engineer</div><div><span class="cl">Seq</span><span class="ct">Level 3 only</span></div><div><span class="cl">Why</span>Truss chords, ridge, and wall-plate repairs need a stamped design before the permit.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Job</span>Permit and inspection</div><div><span class="cl">Who</span>Township or city</div><div><span class="cl">Seq</span><span class="ct">Before rebuild</span></div><div><span class="cl">Why</span>Decking, rafter, and truss replacement is permit work in Michigan. We pull it.</div></div>
    <div class="rr-ctrow pick"><div class="m"><span class="cl">Job</span>Rebuild<span class="pill">Reasonable</span></div><div><span class="cl">Who</span>Licensed roofer</div><div><span class="cl">Seq</span><span class="ct">Weeks 2–6</span></div><div><span class="cl">Why</span>Framing, deck, roof, siding, gutters, windows — one crew, one claim, one warranty conversation.</div></div>
  </div>
  <p class="rr-compare-note"><b>What we don't do:</b> cut or haul the tree. We protect the roof while a tree service we trust does that — and we tarp, not them.</p>
</div></section>

<!-- IMPACT ANATOMY (hotspot) + LEVELS -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-spec"><div class="rr-ana-grid">
    <figure class="rr-spec-fig"><svg viewBox="0 0 640 400" role="img" aria-label="Cross-section of a roof with a fallen tree resting on it, showing the parts of the structure a strike can damage">
<rect x="0" y="0" width="640" height="400" fill="#F2F0EC"/>
<!-- walls + living space -->
<rect x="120" y="222" width="400" height="150" fill="#FBF6EA" stroke="#D9CFBD"/>
<rect x="120" y="212" width="400" height="12" fill="#C9A98F"/>
<text x="320" y="310" text-anchor="middle" font-family="Archivo,sans-serif" font-weight="700" font-size="12" fill="#8A6A2B">LIVING SPACE</text>
<!-- rafters -->
<g stroke="#A88268" stroke-width="5" stroke-linecap="round"><path d="M132 216 L320 96"/><path d="M508 216 L320 96"/><path d="M200 216 L320 140"/><path d="M440 216 L320 140"/></g>
<!-- ridge -->
<rect x="312" y="88" width="16" height="14" fill="#8E6A55"/>
<!-- deck + shingles -->
<polygon points="100,230 320,82 540,230 540,240 320,96 100,240" fill="#5B6B7C"/>
<!-- fractured decking region (left slope) -->
<path d="M190 176 L232 148 L246 160 L214 190 Z" fill="#8A3A1E" opacity=".55"/>
<path d="M200 170 l8 -6 M214 160 l10 -8 M222 176 l10 -8" stroke="#F2F0EC" stroke-width="1.5"/>
<!-- tree trunk resting across -->
<path d="M40 60 L260 150 L300 176" stroke="#5A3E2B" stroke-width="26" stroke-linecap="round" fill="none"/>
<path d="M40 60 L260 150 L300 176" stroke="#7A5637" stroke-width="14" stroke-linecap="round" fill="none"/>
<!-- foliage -->
<circle cx="70" cy="46" r="44" fill="#4F7A4A" opacity=".9"/><circle cx="118" cy="70" r="34" fill="#5E8C55" opacity=".9"/><circle cx="46" cy="98" r="30" fill="#446B41" opacity=".9"/>
<!-- crushed shingles / puncture -->
<path d="M268 160 l14 -10 l10 14 l-14 10 z" fill="#2B2F36"/>
<!-- cracked rafter mark -->
<path d="M236 152 l10 6" stroke="#C8541F" stroke-width="4" stroke-linecap="round"/>
<!-- wall plate -->
<rect x="120" y="206" width="30" height="8" fill="#8E6A55"/>
<g><circle cx="285" cy="178" r="13" fill="#2B2F36"/><text x="285" y="182.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">1</text></g><g><circle cx="218" cy="176" r="13" fill="#2B2F36"/><text x="218" y="180.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">2</text></g><g><circle cx="248" cy="142" r="13" fill="#2B2F36"/><text x="248" y="146.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">3</text></g><g><circle cx="320" cy="78" r="13" fill="#2B2F36"/><text x="320" y="82.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">4</text></g><g><circle cx="134" cy="232" r="13" fill="#2B2F36"/><text x="134" y="236.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">5</text></g><g><circle cx="420" cy="200" r="13" fill="#2B2F36"/><text x="420" y="204.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">6</text></g>
</svg><figcaption>What a strike really damages · hover or tap the numbers</figcaption></figure>
    <div>
      <span class="rr-spec-tag">Impact Anatomy</span>
      <h2>The hole is the smallest part of the damage.</h2>
      <div class="rr-spec-list">
        <div class="rr-arow"><div class="num">1</div><div><h4>The puncture</h4><p>Shingles and underlayment crushed where the limb came down. The part everyone photographs. Usually the cheapest part to fix.</p></div></div>
        <div class="rr-arow"><div class="num">2</div><div><h4>Fractured decking beyond the breach</h4><p>Sheathing cracks along the impact shock, often two or three sheets past the visible hole. We strip until we find sound wood.</p></div></div>
        <div class="rr-arow"><div class="num">3</div><div><h4>Split rafter or truss web</h4><p>The member under the impact takes the load. A split rafter gets sistered or replaced; a broken truss web is an engineer's question.</p></div></div>
        <div class="rr-arow"><div class="num">4</div><div><h4>Ridge and top chord</h4><p>When a trunk lands on the peak, the ridge can displace and the top chords crack. This is load-path damage — Level 3.</p></div></div>
        <div class="rr-arow"><div class="num">5</div><div><h4>Wall plate and framing below</h4><p>Heavy strikes drive the load into the top of the wall. Crushed plates and racked studs show up as jammed doors and new cracks inside.</p></div></div>
        <div class="rr-arow"><div class="num">6</div><div><h4>The attic-side check</h4><p>Deflection, splits, pulled gusset plates, a ridge that isn't straight. Hidden damage surfaces months later if nobody looks now.</p></div></div>
      </div>
    </div>
  </div></div>
  <div class="rr-shead" style="margin-top:56px"><span class="rr-eyebrow">Structural Triage Levels</span><h2>Three levels. Three very different repairs.</h2><p>Every strike we open gets a level. It sets the scope, the paperwork, and the timeline.</p></div>
  <div class="rr-levels">
    <div class="rr-level l1"><span class="k">Level 1 · Surface</span><h3>Shingles, underlayment, a sheet or two of decking.</h3><p>Limb strikes and glancing blows. The framing is sound.</p><ul><li>Replace damaged decking and shingles</li><li>Ice-and-water shield at the repair</li><li>No permit, no engineer</li></ul><div class="tl">Days</div></div>
    <div class="rr-level l2"><span class="k">Level 2 · Deck and member</span><h3>Fractured sheathing past the breach, a cracked rafter or truss web.</h3><p>The most common outcome of a trunk on the roof.</p><ul><li>Sister or replace the damaged member</li><li>Re-deck to sound wood</li><li>Permit; engineer only if a truss is involved</li></ul><div class="tl">One to two weeks</div></div>
    <div class="rr-level l3"><span class="k">Level 3 · Load path</span><h3>Broken chords, displaced ridge or hip, crushed wall plate.</h3><p>The house moved. Shoring first, then a designed repair.</p><ul><li>Temporary shoring and full tarp</li><li>Engineer's repair letter and permit</li><li>Replacement trusses or rebuilt framing, then the roof</li></ul><div class="tl">Two to eight weeks</div></div>
  </div>
</div></section>

<!-- WHO PAYS -->
<section class="rr-reveal rr-section is-navy"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow on-dark">Whose Insurance Pays?</span><h2>Probably yours — and in Michigan, that's how it works.</h2><p>Five situations, one rule: the tree's owner is only liable when they ignored a known hazard.</p></div>
  <div class="rr-ctable" style="max-width:1000px;margin:0 auto">
    <div class="rr-ctrow rr-cthead"><div>Situation</div><div>Who pays</div><div>Deductible</div><div>Notes</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Situation</span>Your tree, your house</div><div><span class="cl">Pays</span>Your policy</div><div><span class="cl">Ded.</span><span class="ct">Yours</span></div><div><span class="cl">Notes</span>Covered peril: falling objects and the weight of the tree. Removal covered as part of the repair.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Situation</span>Neighbor's healthy tree, your house</div><div><span class="cl">Pays</span>Your policy</div><div><span class="cl">Ded.</span><span class="ct">Yours</span></div><div><span class="cl">Notes</span>Act of God. Your neighbor isn't obligated to reimburse your deductible.</div></div>
    <div class="rr-ctrow pick"><div class="m"><span class="cl">Situation</span>Neighbor's dead or known-hazard tree<span class="pill">Negligence</span></div><div><span class="cl">Pays</span>Their liability coverage</div><div><span class="cl">Ded.</span><span class="ct">Theirs, if proven</span></div><div><span class="cl">Notes</span>You need evidence they knew: prior notice, a dead ash, fungal conks, a hollow trunk. Photograph the stump and trunk before extraction.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Situation</span>Your tree, neighbor's house</div><div><span class="cl">Pays</span>Their policy</div><div><span class="cl">Ded.</span><span class="ct">Theirs</span></div><div><span class="cl">Notes</span>Same rule in reverse — unless you ignored a known hazard.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Situation</span>Tree falls, hits nothing</div><div><span class="cl">Pays</span>Usually you</div><div><span class="cl">Ded.</span><span class="ct">n/a</span></div><div><span class="cl">Notes</span>Removal typically isn't covered, or is capped at $500 to $1,000 in debris removal.</div></div>
  </div>
  <div class="rr-law">
    <div><b>Act of God</b><p>A healthy tree in a storm is nobody's fault. Michigan follows the general rule: the damaged property's own policy pays.</p><small>Negligence is the exception</small></div>
    <div><b>Debris cap</b><p>Most policies pay $500 per tree and $1,000 total to remove fallen trees that didn't hit a structure.</p><small>Check your policy</small></div>
    <div><b>Loss of use</b><p>If the home is uninhabitable from a covered loss, temporary housing and meals are covered, typically 10 to 30 percent of dwelling coverage. Keep every receipt.</p><small>Additional living expense</small></div>
    <div><b>Small claims: $7,000</b><p>If a negligent neighbor won't make you whole, Michigan small claims court handles disputes up to $7,000 without a lawyer.</p><small>DIFS 877-999-6442 for carrier disputes</small></div>
  </div>
</div></section>

<!-- MICHIGAN CONTEXT -->
<section class="rr-reveal rr-section is-dust"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Why Michigan Trees Come Down</span><h2>Dead ash, old maples, and a longer storm season.</h2></div>
  <div class="rr-ctx">
    <div><span class="n">30M+</span><h3>Ash trees killed by emerald ash borer in Michigan</h3><p>Dead ash fails without warning — in calm weather, not just storms. If there's a standing dead ash within reach of your roof, it is the most predictable tree strike in the state.</p></div>
    <div><span class="n">4</span><h3>Species that fail first in wind</h3><p>Silver maple, willow, cottonwood, and boxelder: fast-growing, weak-wooded, and everywhere in older Oakland and Macomb neighborhoods. The big silver maples of Royal Oak and Birmingham are past their strongest years.</p></div>
    <div><span class="n">Oct–Jan</span><h3>The Thumb's second season</h3><p>Lake Huron gales put sustained 40-plus-mph wind on Port Huron, Fort Gratiot, and Lexington long after thunderstorm season ends — on trees already carrying ice.</p></div>
  </div>
  <div class="rr-log"><div class="rr-logrow"><span class="d">Sept 2–3, 2026</span><p>EF-0 tornado through Marysville, 60 mph in St. Clair Shores, trees down through Port Huron's South Park, about 300,000 without power.</p></div><div class="rr-logrow"><span class="d">July 3, 2026</span><p>Squall line with 62–63 mph gusts across Oakland and Chesterfield; the Weather Service logged numerous trees onto homes, with strikes in Berkley and Royal Oak and roughly 400,000 outages.</p></div><div class="rr-logrow"><span class="d">May 4, 2026</span><p>A tree crushes a St. Clair Shores home; a Roseville roof hit the same afternoon; tornado watches for Oakland, Macomb, and St. Clair.</p></div><div class="rr-logrow"><span class="d">Aug 27, 2024</span><p>Derecho: 75 mph in Roseville, trees down through Hadley in Lapeer County, about 380,000 outages.</p></div></div>
</div></section>

<!-- PROOFS + RELATED -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">After a Strike</span><h2>Why homeowners call us first.</h2></div>
  <div class="rr-proofs">
    <div class="rr-proof"><h3>Documented before the lift.</h3><p>Our photos and measurements happen before the tree service disturbs anything. The claim file starts with the damage as it was, not as it looked after a crane moved it.</p></div>
    <div class="rr-proof"><h3>On the roof with the adjuster.</h3><p>We walk the opened deck with your adjuster and show the fractured sheathing, the split rafter, the displaced ridge — so the scope matches the damage, not the hole.</p></div>
    <div class="rr-proof"><h3>The whole exterior, one claim.</h3><p>A tree that hits the roof usually takes siding, gutters, a window, and a fence with it. We restore all of it under one estimate and one warranty conversation.</p></div>
  </div>
  <div class="rr-shead" style="margin-top:44px"><span class="rr-eyebrow">Related</span><h2 style="font-size:24px">If the storm did more than drop a tree.</h2></div>
  <div class="rr-chips">
    <a href="https://reasonablecontractingservices.com/emergency-roof-leak/">Water is coming in now</a>
    <a href="https://reasonablecontractingservices.com/wind-damage/">Wind took shingles too</a>
    <a href="https://reasonablecontractingservices.com/roof-insurance-claim-after-storm-damage/">Filing a roof claim in Michigan</a>
    <a href="https://reasonablecontractingservices.com/emergency-services/">Storm damage & insurance claims</a>
    <a href="https://reasonablecontractingservices.com/siding-repair/">Siding the tree took down</a>
    <a href="https://reasonablecontractingservices.com/window-repair/">Broken windows</a>
  </div>
</div></section>

<!-- FAQ -->
<section class="rr-reveal rr-section is-dust"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Tree Strike Questions</span><h2>What people ask us from the driveway.</h2></div>
  <div class="rr-faq-list"><div class="rr-qa"><button class="rr-qa-q" type="button">Who do I call first when a tree falls on the house?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">911 and DTE if there are wires or a gas smell. Then your insurer for a claim number. Then a licensed roofer to tarp and a tree service to extract — coordinated, not guessed at. We'll get the roof protected and work alongside a tree service we trust for the lift.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Is it safe to stay in the house?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Not if the trunk entered living space, you smell gas, breakers are tripping, doors have started jamming, or new cracks have appeared — those are signs the structure moved. A limb resting on a detached garage with no interior signs is a different situation. A contractor or engineer clears occupancy, not the adjuster.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">My neighbor's tree hit my house. Whose insurance pays?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">In Michigan, usually yours. A healthy tree that falls in a storm is an act of God, and your own policy covers your house. Liability shifts to the neighbor only if you can show they knew the tree was dead, diseased, or dangerous and ignored it. Your insurer may pursue them afterward; small claims court in Michigan goes up to $7,000.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Does insurance cover removing the tree?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">When the tree hit a covered structure, removal needed to make the repair is generally covered. Removing a tree that fell in the yard and hit nothing usually isn't, or is capped — typically $500 to $1,000 in debris removal.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Should the tree company tarp the roof?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">No. Tarping is roof work. A tarp that fails becomes an argument between two contractors and your insurer. We tarp, the tree service cuts and lifts, and the roof is protected the whole time.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">The hole looks small. Is it serious?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Impact travels. A limb that punched a two-foot hole routinely cracks decking well past the breach and splits the rafter underneath. We open the roof to the last damaged board and check the framing from the attic side before anyone calls it a patch.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Do I need an engineer?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Only when the load path is involved: a broken truss chord, a displaced ridge or hip, or a crushed wall plate. Truss repairs in Michigan typically need an engineer's letter, a permit, and an inspection. Most strikes don't get there. When one does, we tell you before the work starts.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Do I need a permit?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Patching shingles, no. Replacing decking, rafters, or trusses, yes — Michigan treats structural roof repair as permit work. Troy runs permits through its building department online; Port Huron through the planning department at 100 McMorran Boulevard. Township rules vary and we handle the paperwork.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">How long until it's fixed?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">The honest answer depends on the level of damage and the adjuster's schedule, which runs days to a couple of weeks after a big storm. Surface repairs are days; deck and rafter work is a week or two; load-path rebuilds with an engineer and a permit run longer. We'll give you real dates once we've opened it up.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Is the estimate really free?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Yes - the estimate is free, no strings. Emergency tarping is quoted before we do it and is typically reimbursed on a covered claim; the rebuild gets its own written estimate.</div></div></div></div>
</div></section>

<!-- AREAS -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Across Michigan</span><h2>Tree-strike response from Port Huron to Troy.</h2><p>Port Huron covers St. Clair, Sanilac, and Lapeer counties and the Thumb. Troy covers Oakland and Macomb. Call the office nearest you and we'll tell you when we can be there. Storm and hail claims in <a href="https://reasonablecontractingservices.com/kalamazoo-county-hail-storm-damage/">Kalamazoo County and Southwest Michigan</a> are handled by the same crews.</p></div>
  <div class="rr-areas">
    <div class="rr-area"><a class="cty" href="https://reasonablecontractingservices.com/st-clair-county-roofers/">St. Clair County</a><p><a href="https://reasonablecontractingservices.com/roofers-in-port-huron-mi/">Port Huron</a> · <a href="https://reasonablecontractingservices.com/marysville-roofers/">Marysville</a> · <a href="https://reasonablecontractingservices.com/fort-gratiot-roofers/">Fort Gratiot</a> · <a href="https://reasonablecontractingservices.com/st-clair-roofers/">St. Clair</a></p></div>
    <div class="rr-area"><a class="cty" href="https://reasonablecontractingservices.com/sanilac-county-roofers/">Sanilac County</a><p><a href="https://reasonablecontractingservices.com/sandusky-roofers/">Sandusky</a> · <a href="https://reasonablecontractingservices.com/lexington-roofers/">Lexington</a> · <a href="https://reasonablecontractingservices.com/croswell-roofers/">Croswell</a> · <a href="https://reasonablecontractingservices.com/marlette-roofers/">Marlette</a></p></div>
    <div class="rr-area"><a class="cty" href="https://reasonablecontractingservices.com/lapeer-county/">Lapeer County</a><p><a href="https://reasonablecontractingservices.com/lapeer-roofers/">Lapeer</a> · <a href="https://reasonablecontractingservices.com/imlay-city-roofers/">Imlay City</a> · <a href="https://reasonablecontractingservices.com/almont-roofers/">Almont</a> · <a href="https://reasonablecontractingservices.com/north-branch-roofers/">North Branch</a></p></div>
    <div class="rr-area"><a class="cty" href="https://reasonablecontractingservices.com/roofing-contractors-oakland-county-mi/">Oakland County</a><p><a href="https://reasonablecontractingservices.com/roofers-troy-mi/">Troy</a> · <a href="https://reasonablecontractingservices.com/rochester-michigan-roofers/">Rochester</a> · <a href="https://reasonablecontractingservices.com/roofers-birmingham-mi/">Birmingham</a> · <a href="https://reasonablecontractingservices.com/royal-oak-roofers/">Royal Oak</a></p></div>
    <div class="rr-area"><a class="cty" href="https://reasonablecontractingservices.com/macomb-county/">Macomb County</a><p><a href="https://reasonablecontractingservices.com/clinton-township-roofers/">Clinton Township</a> · <a href="https://reasonablecontractingservices.com/shelby-township-roofers/">Shelby Township</a> · <a href="https://reasonablecontractingservices.com/macomb-township-roofers/">Macomb Township</a> · <a href="https://reasonablecontractingservices.com/roofing-companies-warren-mi/">Warren</a></p></div>
  <div class="rr-area"><a class="cty" href="https://reasonablecontractingservices.com/kalamazoo-roofers/">Kalamazoo Area</a><p><a href="https://reasonablecontractingservices.com/kalamazoo-city-roofers/">Kalamazoo</a> · <a href="https://reasonablecontractingservices.com/portage-roofers/">Portage</a> · <a href="https://reasonablecontractingservices.com/battle-creek-roofers/">Battle Creek</a> · <a href="https://reasonablecontractingservices.com/texas-township-roofers/">Texas Township</a> · <a href="https://reasonablecontractingservices.com/oshtemo-roofers/">Oshtemo Township</a> · <a href="https://reasonablecontractingservices.com/richland-roofers/">Richland & Gull Lake</a> · <a href="https://reasonablecontractingservices.com/comstock-roofers/">Comstock</a></p></div><div class="rr-area"><a class="cty" href="https://reasonablecontractingservices.com/grand-rapids-roofers/">Grand Rapids Area</a><p><a href="https://reasonablecontractingservices.com/grand-rapids-roofers/">Grand Rapids</a> · <a href="https://reasonablecontractingservices.com/wyoming-roofers/">Wyoming</a> · <a href="https://reasonablecontractingservices.com/kentwood-roofers/">Kentwood</a> · <a href="https://reasonablecontractingservices.com/holland-roofers/">Holland</a> · <a href="https://reasonablecontractingservices.com/grandville-roofers/">Grandville</a> · <a href="https://reasonablecontractingservices.com/jenison-roofers/">Jenison</a> · <a href="https://reasonablecontractingservices.com/byron-center-roofers/">Byron Center</a></p></div></div>
</div></section>

<!-- FINAL -->
<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">Open Roof?</span><h2>Get people clear. Then call.</h2><p>Tarp, coordinated extraction, and a structural rebuild — documented for your claim from the first photo. Estimates are free.</p></div>
  <div class="rr-two-tel" style="justify-content:center">
    <a class="rr-btn rr-btn-primary" href="#estimate">Get My Free 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 · Office lines are voice only — please call.</p>
</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="#estimate" class="rr-btn rr-btn-primary">Free Estimate</a></div>
</div><script type="application/ld+json">{"@context": "https://schema.org", "@type": "Service", "name": "Tree Damage Roof Repair, Tarping and Structural Rebuild", "serviceType": "Emergency tarping, damage documentation, coordination with tree services, structural roof rebuild after a tree strike", "description": "When a tree falls on a house: emergency tarping and documentation before extraction, coordination with trusted tree services for the lift, structural assessment of decking, rafters and trusses, permits, and a full rebuild of the roof and exterior. Free estimates from two Michigan offices, Port Huron and Troy.", "areaServed": [{"@type": "AdministrativeArea", "name": "St. Clair County, MI"}, {"@type": "AdministrativeArea", "name": "Sanilac County, MI"}, {"@type": "AdministrativeArea", "name": "Lapeer County, MI"}, {"@type": "AdministrativeArea", "name": "Macomb County, MI"}, {"@type": "AdministrativeArea", "name": "Oakland County, MI"}], "provider": {"@type": "RoofingContractor", "name": "Reasonable Roofing & Contracting", "@id": "https://reasonablecontractingservices.com/#organization", "telephone": ["(810) 984-3420", "(248) 800-3269"], "address": {"@type": "PostalAddress", "streetAddress": "1605 Beard St", "addressLocality": "Port Huron", "addressRegion": "MI", "postalCode": "48060", "addressCountry": "US"}, "location": [{"@type": "Place", "name": "Reasonable Roofing & Contracting - Port Huron", "telephone": "(810) 984-3420", "address": {"@type": "PostalAddress", "streetAddress": "1605 Beard St", "addressLocality": "Port Huron", "addressRegion": "MI", "postalCode": "48060", "addressCountry": "US"}}, {"@type": "Place", "name": "Reasonable Roofing & Contracting - Troy", "telephone": "(248) 800-3269", "address": {"@type": "PostalAddress", "streetAddress": "1470 Souter Blvd", "addressLocality": "Troy", "addressRegion": "MI", "postalCode": "48083", "addressCountry": "US"}}], "hasCredential": {"@type": "EducationalOccupationalCredential", "name": "Michigan Residential Builders License", "identifier": "262000657"}}, "url": "https://reasonablecontractingservices.com/tree-damage/"}</script><script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Who do I call first when a tree falls on the house?", "acceptedAnswer": {"@type": "Answer", "text": "911 and DTE if there are wires or a gas smell. Then your insurer for a claim number. Then a licensed roofer to tarp and a tree service to extract - coordinated, not guessed at. We'll get the roof protected and work alongside a tree service we trust for the lift."}}, {"@type": "Question", "name": "Is it safe to stay in the house?", "acceptedAnswer": {"@type": "Answer", "text": "Not if the trunk entered living space, you smell gas, breakers are tripping, doors have started jamming, or new cracks have appeared - those are signs the structure moved. A limb resting on a detached garage with no interior signs is a different situation. A contractor or engineer clears occupancy, not the adjuster."}}, {"@type": "Question", "name": "My neighbor's tree hit my house. Whose insurance pays?", "acceptedAnswer": {"@type": "Answer", "text": "In Michigan, usually yours. A healthy tree that falls in a storm is an act of God, and your own policy covers your house. Liability shifts to the neighbor only if you can show they knew the tree was dead, diseased, or dangerous and ignored it. Your insurer may pursue them afterward; small claims court in Michigan goes up to $7,000."}}, {"@type": "Question", "name": "Does insurance cover removing the tree?", "acceptedAnswer": {"@type": "Answer", "text": "When the tree hit a covered structure, removal needed to make the repair is generally covered. Removing a tree that fell in the yard and hit nothing usually isn't, or is capped - typically $500 to $1,000 in debris removal."}}, {"@type": "Question", "name": "Should the tree company tarp the roof?", "acceptedAnswer": {"@type": "Answer", "text": "No. Tarping is roof work. A tarp that fails becomes an argument between two contractors and your insurer. We tarp, the tree service cuts and lifts, and the roof is protected the whole time."}}, {"@type": "Question", "name": "The hole looks small. Is it serious?", "acceptedAnswer": {"@type": "Answer", "text": "Impact travels. A limb that punched a two-foot hole routinely cracks decking well past the breach and splits the rafter underneath. We open the roof to the last damaged board and check the framing from the attic side before anyone calls it a patch."}}, {"@type": "Question", "name": "Do I need an engineer?", "acceptedAnswer": {"@type": "Answer", "text": "Only when the load path is involved: a broken truss chord, a displaced ridge or hip, or a crushed wall plate. Truss repairs in Michigan typically need an engineer's letter, a permit, and an inspection. Most strikes don't get there. When one does, we tell you before the work starts."}}, {"@type": "Question", "name": "Do I need a permit?", "acceptedAnswer": {"@type": "Answer", "text": "Patching shingles, no. Replacing decking, rafters, or trusses, yes - Michigan treats structural roof repair as permit work. Troy runs permits through its building department online; Port Huron through the planning department at 100 McMorran Boulevard. Township rules vary and we handle the paperwork."}}, {"@type": "Question", "name": "How long until it's fixed?", "acceptedAnswer": {"@type": "Answer", "text": "The honest answer depends on the level of damage and the adjuster's schedule, which runs days to a couple of weeks after a big storm. Surface repairs are days; deck and rafter work is a week or two; load-path rebuilds with an engineer and a permit run longer. We'll give you real dates once we've opened it up."}}]}</script><script type="application/ld+json">{"@context": "https://schema.org", "@type": "HowTo", "name": "What to do in the first 24 hours after a tree falls on your house", "step": [{"@type": "HowToStep", "name": "Get people and pets clear", "text": "Move everyone away from the impact side; leave the house and call 911 if you smell gas or see downed wires. Stay 25 feet from any line."}, {"@type": "HowToStep", "name": "Photograph from the ground", "text": "Wide and close photos of the tree on the house, the entry point, and the yard, with the time and weather. Do not climb."}, {"@type": "HowToStep", "name": "Open the insurance claim", "text": "Call your carrier for a claim number; the adjuster's schedule starts now."}, {"@type": "HowToStep", "name": "Call a licensed roofer to tarp and document", "text": "Reasonable Roofing & Contracting: (810) 984-3420 or (248) 800-3269. The roof is protected and documented before the tree is moved."}, {"@type": "HowToStep", "name": "Extract with a tree service", "text": "A tree service lifts the trunk off in sections, with the roofer on site."}, {"@type": "HowToStep", "name": "Open the deck and assess the framing", "text": "The roofer strips to sound wood and checks rafters, trusses and the ridge from the attic side, then assigns a repair level."}]}</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": "Storm Damage", "item": "https://reasonablecontractingservices.com/storm-damage-roof-repair/"}, {"@type": "ListItem", "position": 3, "name": "Tree Damage", "item": "https://reasonablecontractingservices.com/tree-damage/"}]}</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>
```
