# Wind 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-wind">

<style>
.rr.rr-wind{--steel:#4F6A8A;--steel-deep:#34506E;--gale:#EEF1F4;--gale-line:#D5DCE4;--amber:#C98A1E;--amber-deep:#9A6710}
.rr.rr-wind .is-gale{background:var(--gale);border-top:1px solid var(--gale-line);border-bottom:1px solid var(--gale-line)}
.rr.rr-wind .rr-eyebrow{color:var(--steel-deep)}
.rr.rr-wind .rr-eyebrow.on-dark{color:#C9D5E2}
.rr.rr-wind .rr-badgebar .dot{background:var(--steel)}
.rr.rr-wind .rr-arow .num{background:var(--steel)}
.rr.rr-wind .rr-spec-list .rr-arow.rr-row-on{background:rgba(79,106,138,.08);box-shadow:inset 4px 0 0 var(--amber)}
.rr.rr-wind .rr-spec-list .rr-arow.rr-row-on h4{color:var(--steel-deep)}
.rr.rr-wind .rr-spec-list .rr-arow.rr-row-on .num{box-shadow:0 0 0 4px rgba(201,138,30,.25);background:var(--amber)}
.rr.rr-wind .rr-spec-fig svg .rr-hot-on{filter:drop-shadow(0 1px 6px rgba(201,138,30,.8))}
.rr.rr-wind .rr-spec-tag{color:var(--steel-deep)}
.rr.rr-wind .rr-spec-fig{position:relative}
.rr.rr-wind .rr-hero .rr-hero-ctas{gap:10px}
.rr.rr-wind .rr-hero .rr-btn{white-space:nowrap;padding:12px 16px;font-size:14.5px}
.rr.rr-wind .rr-ctrow{align-items:stretch}
.rr.rr-wind .rr-ctrow>div{display:flex;align-items:center;flex-wrap:wrap}
.rr.rr-wind .rr-ctrow:not(.rr-cthead)>div{background:#fff}
.rr.rr-wind .rr-cthead>div{background:var(--navy)!important;color:#fff!important}
.rr.rr-wind .rr-ctrow.pick>div{background:rgba(201,138,30,.08)}
.rr.rr-wind .rr-ctrow.pick .m{box-shadow:inset 3px 0 0 var(--amber)}
.rr.rr-wind .rr-ctrow .pill{color:var(--amber-deep);background:rgba(201,138,30,.16)}
/* gust scale */
.rr.rr-wind .rr-gust{background:#fff;border:1px solid var(--gale-line);border-radius:18px;box-shadow:var(--shadow-md);padding:160px 30px 22px;max-width:1100px;margin:0 auto;overflow:visible}
.rr.rr-wind .rr-gust-bar{position:relative;height:22px;border-radius:999px;background:linear-gradient(90deg,#DCE6EF 0%,#9FB6CC 30%,#4F6A8A 55%,#C98A1E 78%,#9A3B1E 100%);margin:0 0 10px}
.rr.rr-wind .rr-gust-ticks{position:relative;height:30px}
.rr.rr-wind .rr-gust-ticks span{position:absolute;transform:translateX(-50%);font-family:'Space Mono',monospace;font-size:11px;color:var(--cool-grey);white-space:nowrap}
.rr.rr-wind .rr-gust-ticks span::before{content:"";position:absolute;left:50%;top:-14px;width:1px;height:10px;background:var(--gale-line)}
.rr.rr-wind .rr-pin{position:absolute;bottom:26px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:2px}
.rr.rr-wind .rr-pin b{font-family:'Archivo',sans-serif;font-size:11.5px;font-weight:700;color:var(--navy);white-space:nowrap;background:#fff;border:1px solid var(--gale-line);border-radius:6px;padding:3px 7px;box-shadow:var(--shadow-sm)}
.rr.rr-wind .rr-pin i{width:2px;height:16px;background:var(--navy)}
.rr.rr-wind .rr-pin.alt{bottom:56px}
.rr.rr-wind .rr-pin.alt i{height:46px}
.rr.rr-wind .rr-pin.alt2{bottom:84px}
.rr.rr-wind .rr-pin.alt2 i{height:74px}
.rr.rr-wind .rr-bands{display:grid!important;grid-template-columns:repeat(5,1fr)!important;gap:10px;margin-top:22px}
.rr.rr-wind .rr-bands div{background:var(--gale);border:1px solid var(--gale-line);border-radius:12px;padding:14px 14px}
.rr.rr-wind .rr-bands b{display:block;font-family:'Archivo',sans-serif;font-size:15px;color:var(--navy);margin-bottom:4px}
.rr.rr-wind .rr-bands p{color:var(--slate-grey);font-size:13.5px;line-height:1.45;margin:0}
/* verdicts */
.rr.rr-wind .rr-verdicts{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:18px;max-width:1100px;margin:0 auto}
.rr.rr-wind .rr-vd{background:#fff;border:1px solid var(--gale-line);border-radius:16px;padding:24px 22px;border-top:6px solid var(--steel)}
.rr.rr-wind .rr-vd.no{border-top-color:#9FB6CC}.rr.rr-wind .rr-vd.yes{border-top-color:var(--amber)}
.rr.rr-wind .rr-vd .k{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--steel-deep)}
.rr.rr-wind .rr-vd.yes .k{color:var(--amber-deep)}
.rr.rr-wind .rr-vd h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:21px;color:var(--navy);margin:8px 0 10px;line-height:1.2}
.rr.rr-wind .rr-vd p{color:var(--slate-grey);font-size:14.5px;line-height:1.55}
.rr.rr-wind .rr-vd .tag{display:inline-block;margin-top:12px;font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;border-radius:999px;padding:4px 10px;background:var(--gale);color:var(--steel-deep)}
.rr.rr-wind .rr-vd.yes .tag{background:rgba(201,138,30,.16);color:var(--amber-deep)}
/* storm-date card */
.rr.rr-wind .rr-card-sd{background:#fff;border:1px solid var(--gale-line);border-radius:18px;box-shadow:var(--shadow-md);padding:30px;max-width:900px;margin:0 auto}
.rr.rr-wind .rr-card-sd .hd{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;border-bottom:2px solid var(--navy);padding-bottom:12px;margin-bottom:16px}
.rr.rr-wind .rr-card-sd .hd b{font-family:'Archivo',sans-serif;font-weight:800;font-size:20px;color:var(--navy)}
.rr.rr-wind .rr-card-sd .hd span{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--cool-grey)}
.rr.rr-wind .rr-card-sd ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px 30px}
.rr.rr-wind .rr-card-sd li{position:relative;padding-left:30px;font-size:15px;color:var(--slate);line-height:1.5}
.rr.rr-wind .rr-card-sd li::before{content:"";position:absolute;left:0;top:3px;width:18px;height:18px;border-radius:4px;border:2px solid var(--steel)}
.rr.rr-wind .rr-card-sd .ln{margin-top:18px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.rr.rr-wind .rr-card-sd .ln div{border-bottom:1.5px solid var(--gale-line);padding:8px 0 6px;font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--cool-grey)}
/* law cards */
.rr.rr-wind .rr-law{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:16px;max-width:1100px;margin:0 auto}
.rr.rr-wind .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-wind .rr-law b{display:block;font-family:'Archivo',sans-serif;font-size:16px;color:#fff;margin-bottom:6px}
.rr.rr-wind .rr-law p{color:#c9d6e3;font-size:14px;line-height:1.5;margin:0}
.rr.rr-wind .rr-law small{display:block;margin-top:8px;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#8FA8C2}
/* storm log */
.rr.rr-wind .rr-log{max-width:980px;margin:0 auto;display:grid;gap:10px}
.rr.rr-wind .rr-logrow{display:grid;grid-template-columns:130px 90px 1fr;gap:18px;align-items:center;background:#fff;border:1px solid var(--gale-line);border-radius:12px;padding:14px 20px}
.rr.rr-wind .rr-logrow .d{font-family:'Archivo',sans-serif;font-weight:800;font-size:15px;color:var(--navy)}
.rr.rr-wind .rr-logrow .g{font-family:'Space Mono',monospace;font-size:13px;color:var(--amber-deep);white-space:nowrap}
.rr.rr-wind .rr-logrow p{color:var(--slate);font-size:14px;line-height:1.5;margin:0}
.rr.rr-wind .rr-shores{display:grid!important;grid-template-columns:1fr 1fr!important;gap:20px;max-width:1000px;margin:0 auto}
.rr.rr-wind .rr-shore{background:#fff;border:1px solid var(--gale-line);border-radius:16px;padding:26px}
.rr.rr-wind .rr-shore .k{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--steel-deep)}
.rr.rr-wind .rr-shore h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:21px;color:var(--navy);margin:8px 0 8px}
.rr.rr-wind .rr-shore p{color:var(--slate-grey);font-size:14.5px;line-height:1.55;margin-bottom:12px}
.rr.rr-wind .rr-chips{justify-content:center;max-width:940px;margin:0 auto}
.rr.rr-wind .rr-two-tel{display:flex;gap:12px;flex-wrap:wrap}
@media(max-width:980px){.rr.rr-wind .rr-bands{grid-template-columns:1fr 1fr 1fr!important}.rr.rr-wind .rr-law{grid-template-columns:1fr 1fr!important}.rr.rr-wind .rr-pin b{font-size:10px}}
@media(max-width:860px){.rr.rr-wind .rr-verdicts{grid-template-columns:1fr!important}.rr.rr-wind .rr-shores{grid-template-columns:1fr!important}.rr.rr-wind .rr-pin{display:none}.rr.rr-wind .rr-gust-bar{margin-top:16px}}
@media(max-width:620px){.rr.rr-wind .rr-bands{grid-template-columns:1fr!important}.rr.rr-wind .rr-law{grid-template-columns:1fr!important}.rr.rr-wind .rr-card-sd ul{grid-template-columns:1fr}.rr.rr-wind .rr-card-sd .ln{grid-template-columns:1fr}.rr.rr-wind .rr-logrow{grid-template-columns:1fr;gap:4px}}

/* mobile polish 2026-09-14 */
@media(hover:none){.rr.rr-wind .rr-spec-hint{display:none!important}}
@media(max-width:760px){.rr.rr-wind .rr-hero{box-shadow:inset 0 0 0 2000px rgba(8,16,26,.40)}.rr.rr-wind .rr-hero .rr-tagline{color:#BFD6F2!important}.rr.rr-wind .rr-spec-fig{padding:10px;border-radius:14px}.rr.rr-wind .rr-spec-fig figcaption{font-size:11px;letter-spacing:.04em}.rr.rr-wind .rr-ctable .cl{font-size:11px}.rr.rr-wind .rr-ctrow .pill{font-size:10px}.rr.rr-wind small,.rr.rr-wind .k,.rr.rr-wind .tag,.rr.rr-wind .v,.rr.rr-wind .who,.rr.rr-wind .cty span,.rr.rr-wind .rr-tick .t span{font-size:11px!important}.rr.rr-wind .rr-section{padding-top:64px;padding-bottom:64px}}
@media(max-width:860px){.rr.rr-wind .rr-gust{padding:24px 18px 18px!important}.rr.rr-wind .rr-gust-ticks span{font-size:10px}}
</style>
<section class="rr-hero" style="background:linear-gradient(100deg,rgba(12,20,30,.86) 0%,rgba(52,80,110,.66) 45%,rgba(52,80,110,.28) 100%),url('https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide.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/06/Complete-Storm-Roof-Damage-Guide.jpg" class="skip-lazy" loading="eager" fetchpriority="high" decoding="sync" alt="Shingles lifted and creased by high wind on a Michigan roof" srcset="https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide-480x320.jpg 480w, https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide-510x382.jpg 510w, https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide-768x512.jpg 768w, https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide-980x653.jpg 980w, https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide-1024x682.jpg 1024w, https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide-1080x720.jpg 1080w, https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide-1280x853.jpg 1280w, https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide-1536x1024.jpg 1536w, https://reasonablecontractingservices.com/wp-content/uploads/2026/06/Complete-Storm-Roof-Damage-Guide.jpg 2000w" 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">Wind Damage · Roof Repair</div>
      <h1>Your roof has three wind zones. One of them fails first.</h1>
      <p class="rr-tagline">Blown-off, lifted, and creased shingles · HAAG-trained inspection · free estimates.</p>
      <p class="rr-prose" style="color:#dbe4ee">Wind doesn't hit a roof evenly, so neither should an inspection. We read the windward slopes, the edges, the corners, and the ridge — where uplift actually concentrates — find the creases that prove wind, and tell you straight whether it's a few tabs or a compromised roof. 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">HAAG-Certified Inspectors</div><div class="item">Since 1984</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 the wind did and which side of the house it came from. A local expert calls you back.</p></div>

Service Type Form Fill

GET IN TOUCH

If you are human, leave this field blank.			

<div class="privacy">No door-knockers, no pressure. Office lines are voice only — call or use this form.</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>HAAG-Certified Inspectors</div>
  <div class="rr-badge"><span class="dot"></span>Wind & Storm Repair</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>

<!-- UPLIFT MAP -->
<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="Diagram of a roof showing where wind uplift concentrates: field, edges, corners, ridge, and the seal strip">
<rect x="0" y="0" width="640" height="400" fill="#FFFFFF"/>
<rect x="0" y="0" width="640" height="400" fill="#EEF1F4"/>
<!-- wind arrows -->
<g stroke="#9FB6CC" stroke-width="3" stroke-linecap="round" fill="none"><path d="M20 120 h70"/><path d="M20 160 h50"/><path d="M20 200 h80"/><path d="M20 240 h60"/></g>
<g fill="#9FB6CC"><path d="M90 114 l12 6 l-12 6z"/><path d="M70 154 l12 6 l-12 6z"/><path d="M100 194 l12 6 l-12 6z"/><path d="M80 234 l12 6 l-12 6z"/></g>
<text x="22" y="98" font-family="Archivo,sans-serif" font-weight="800" font-size="12" fill="#4F6A8A">WIND</text>
<!-- roof plan (hip roof in perspective) -->
<polygon points="150,300 490,300 590,110 250,110" fill="#5B6B7C"/>
<!-- hips and ridge -->
<polygon points="250,110 590,110 500,180 340,180" fill="#6C7D8F"/>
<polygon points="150,300 250,110 340,180 300,300" fill="#4E5D6E"/>
<polygon points="490,300 590,110 500,180 470,300" fill="#4E5D6E"/>
<line x1="340" y1="180" x2="500" y2="180" stroke="#2C3A48" stroke-width="4"/>
<!-- eave edge highlight (windward) -->
<path d="M150 300 L250 110" stroke="#C98A1E" stroke-width="5" opacity=".85"/>
<path d="M150 300 L300 300" stroke="#C98A1E" stroke-width="5" opacity=".85"/>
<!-- corner glow -->
<circle cx="150" cy="300" r="26" fill="#C98A1E" opacity=".25"/><circle cx="250" cy="110" r="20" fill="#C98A1E" opacity=".2"/>
<!-- field shingles hint -->
<g stroke="#4A5A6B" stroke-width="1"><path d="M330 240 h120"/><path d="M345 265 h100"/><path d="M360 290 h80"/></g>
<!-- lifted tab detail -->
<path d="M395 236 q10 -14 22 -6" stroke="#C98A1E" stroke-width="3" fill="none" stroke-linecap="round"/>
<text x="320" y="345" text-anchor="middle" font-family="Archivo,sans-serif" font-weight="700" font-size="11.5" fill="#34506E">Edges, corners and the ridge carry several times the field load</text>
<g><circle cx="400" cy="250" r="13" fill="#4F6A8A"/><text x="400" y="254.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">1</text></g><g><circle cx="200" cy="205" r="13" fill="#4F6A8A"/><text x="200" y="209.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">2</text></g><g><circle cx="150" cy="300" r="13" fill="#4F6A8A"/><text x="150" y="304.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">3</text></g><g><circle cx="420" cy="180" r="13" fill="#4F6A8A"/><text x="420" y="184.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">4</text></g><g><circle cx="250" cy="300" r="13" fill="#4F6A8A"/><text x="250" y="304.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">5</text></g>
</svg><figcaption>The Uplift Map · hover or tap the numbers</figcaption></figure>
    <div>
      <span class="rr-spec-tag">Where Wind Actually Works</span>
      <h2>Field, edge, corner, ridge — and the seal that holds them.</h2>
      <div class="rr-spec-list">
        <div class="rr-arow"><div class="num">1</div><div><h4>The field</h4><p>The open middle of each slope. Lowest pressure, last to fail. Damage here usually means the wind was extreme or the roof was already unsealed.</p></div></div>
        <div class="rr-arow"><div class="num">2</div><div><h4>The edges: eaves and rakes</h4><p>Wind separates and accelerates as it crosses an edge. Starter courses and rake tabs see several times the field load. Most blow-offs begin here.</p></div></div>
        <div class="rr-arow"><div class="num">3</div><div><h4>The corners</h4><p>Two edges meet and the pressure multiplies. A missing corner tab on the windward side is the classic first sign of a wind event.</p></div></div>
        <div class="rr-arow"><div class="num">4</div><div><h4>The ridge and hips</h4><p>Cap shingles sit in the fastest air on the house. Lifted or missing caps let water straight into the ridge vent and the deck.</p></div></div>
        <div class="rr-arow"><div class="num">5</div><div><h4>The seal strip</h4><p>The adhesive line that bonds each shingle to the one below is the whole system. Wind that breaks the bond leaves a crease — the evidence an adjuster reads.</p></div></div>
      </div>
    </div>
  </div></div>
</div></section>

<!-- GUST SCALE -->
<section class="rr-reveal rr-section is-gale"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">The Gust Scale</span><h2>How much wind does it take?</h2><p>Damage bands for asphalt roofs, with the gusts our counties have actually recorded pinned on the scale.</p></div>
  <div class="rr-gust">
    <div class="rr-gust-bar">
      <div class="rr-pin " style="left:22%"><b>Troy Airport 58 · Aug 2024</b><i></i></div>
      <div class="rr-pin alt" style="left:37%"><b>Oakland Co. 66 · Aug 2024</b><i></i></div>
      <div class="rr-pin " style="left:51%"><b>Bad Axe 73 · Nov 2015</b><i></i></div>
      <div class="rr-pin alt2" style="left:55%"><b>Roseville 75 · Aug 2024</b><i></i></div>
      <div class="rr-pin alt" style="left:56%"><b>Marysville tornado 75 · Sept 2026</b><i></i></div>
      <div class="rr-pin " style="left:77%"><b>Thumb downburst 85 · Nov 2015</b><i></i></div>
    </div>
    <div class="rr-gust-ticks"><span style="left:4%">40 mph</span><span style="left:22%">58 severe</span><span style="left:44%">70</span><span style="left:66%">80</span><span style="left:88%">90+</span></div>
    <div class="rr-bands">
      <div><b>45–50 mph</b><p>Older or poorly sealed roofs begin to lift. Unsealed tabs flutter and crease.</p></div>
      <div><b>58 mph</b><p>The National Weather Service severe-thunderstorm threshold. Edge and corner tabs on average roofs start to go.</p></div>
      <div><b>60–75 mph</b><p>Sealed shingles in fair condition tear at edges and ridges. Debris punctures begin.</p></div>
      <div><b>75–90 mph</b><p>Multiple losses per slope, caps gone, underlayment exposed. Most of our August 2024 calls.</p></div>
      <div><b>90+ mph</b><p>Sections of roof, decking, and structure. Tornado and downburst territory.</p></div>
    </div>
  </div>
</div></section>

<!-- SEAL CREASE TEAR -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Seal, Crease, Tear</span><h2>The three wind verdicts — and the one that isn't.</h2><p>A HAAG-trained eye finds the crease, not just the lift. This is the standard adjusters are trained on, and the reason our reports hold up.</p></div>
  <div class="rr-verdicts">
    <div class="rr-vd no"><span class="k">Unsealed only</span><h3>Loose, but not creased.</h3><p>A tab that lifts by hand but has no crease, fold, or tear is not proof of wind damage by itself. Shingles also unseal from cold-weather installation, age, and thermal cycling — often in diagonal “racked” patterns that have nothing to do with the wind direction.</p><span class="tag">Document, don't claim</span></div>
    <div class="rr-vd yes"><span class="k">Creased</span><h3>The signature of wind.</h3><p>A horizontal crease line across the tab means the wind bent it back past the seal and the mat broke inside. Test-simulator work shows every shingle that unbonds in wind leaves at least a crease. A creased shingle is functionally finished, however it looks from the ground.</p><span class="tag">Wind damage</span></div>
    <div class="rr-vd yes"><span class="k">Torn or missing</span><h3>The part everyone can see.</h3><p>Tabs in the yard and dark rectangles on the slope. Clean black asphalt at the tear means it happened recently; faded gray means it's been open for a while. The pattern — windward slopes, edges, corners, ridge — is what ties it to the storm date.</p><span class="tag">Wind damage</span></div>
  </div>
</div></section>

<!-- STORM-DATE CARD -->
<section class="rr-reveal rr-section is-gale"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">The Storm-Date Card</span><h2>Six things to check from the ground, in raking light.</h2><p>Early morning or late afternoon, when the sun is low across the roof, lifted tabs throw shadows. Fill this out the day of the storm.</p></div>
  <div class="rr-card-sd">
    <div class="hd"><b>Wind check</b><span>date · wind from · gust</span></div>
    <ul>
      <li>Shingles or shingle pieces in the yard, the gutters, or the neighbor's yard — your storm date, in evidence</li>
      <li>Dark rectangles on the slope where a tab is gone</li>
      <li>Tabs that flutter or look wavy when the wind picks up</li>
      <li>Horizontal crease lines across shingles, visible in low light</li>
      <li>Ridge or hip caps lifted, cracked, or missing</li>
      <li>Fence panels, trampoline, patio furniture moved — a measure of the gust at your house</li>
    </ul>
    <div class="ln"><div>Date of storm</div><div>Side of house facing the wind</div><div>Reported gust (NWS)</div></div>
  </div>
  <p class="rr-prose" style="margin-top:22px;text-align:center;max-width:760px;margin-left:auto;margin-right:auto">Wind damage clusters on the slopes that faced the storm and on their edges. Knowing which side the wind came from tells us where to look first and tells the adjuster why the pattern makes sense.</p>
</div></section>

<!-- REPAIR OR REPLACE -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">A Few Tabs, or a Compromised Roof?</span><h2>Repair or replace: the math, not the pitch.</h2><p>If it's a four-hundred-dollar repair, you get a four-hundred-dollar estimate. Here's how we decide which conversation to have.</p></div>
  <div class="rr-ctable">
    <div class="rr-ctrow rr-cthead"><div>What we find</div><div>Roof age</div><div>Verdict</div><div>Why</div></div>
    <div class="rr-ctrow pick"><div class="m"><span class="cl">Finding</span>A few tabs on one slope<span class="pill">Repair</span></div><div><span class="cl">Age</span>Under ~12 years</div><div><span class="cl">Verdict</span><span class="ct">Repair</span></div><div><span class="cl">Why</span>Isolated damage on a sound, sealed roof. Replace the tabs, hand-seal the neighbors, done.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Finding</span>Creases across several slopes</div><div><span class="cl">Age</span>Any</div><div><span class="cl">Verdict</span><span class="ct">Claim</span></div><div><span class="cl">Why</span>Systemic seal failure from one event. Documented on the windward pattern, this is what a wind claim is for.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Finding</span>Repeated blow-offs, storm after storm</div><div><span class="cl">Age</span>12–20 years</div><div><span class="cl">Verdict</span><span class="ct">Replace</span></div><div><span class="cl">Why</span>The seal strips are done. Every patch buys one season and the next gust finds the next tab.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Finding</span>Discontinued shingle, no match</div><div><span class="cl">Age</span>15+ years</div><div><span class="cl">Verdict</span><span class="ct">Replace conversation</span></div><div><span class="cl">Why</span>Michigan has no matching law; it turns on your policy's like-kind language. We document the mismatch and help you make the case.</div></div>
  </div>
</div></section>

<!-- MICHIGAN CLAIM -->
<section class="rr-reveal rr-section is-navy"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow on-dark">The Michigan Wind Claim, Honestly</span><h2>Four things to know before you call your carrier.</h2></div>
  <div class="rr-law">
    <div><b>The 1% deductible</b><p>Many Michigan policies now carry a separate wind-and-hail deductible — often one percent of dwelling coverage. On a $300,000 home that's $3,000 before the claim pays a dollar.</p><small>Check your declarations page</small></div>
    <div><b>RCV vs. ACV</b><p>Replacement-cost policies pay to replace, often holding back depreciation until the work is done. Actual-cash-value pays the depreciated roof. Roofs past 15 years are increasingly endorsed to ACV for wind and hail.</p><small>Roof-age endorsements</small></div>
    <div><b>Why claims get denied</b><p>Wear and tear is the most-cited basis nationally. The counter is evidence: dated debris photos, the NWS gust for your date, creases on the windward pattern, and a contractor on the roof with the adjuster.</p><small>Documentation wins</small></div>
    <div><b>One year, minimum</b><p>Michigan law requires insurers to allow at least one year from the date of loss to bring a claim, and the clock pauses while your claim is open. Deductible waiving by a contractor is insurance fraud.</p><small>MCL 500.2833 · DIFS 877-999-6442</small></div>
  </div>
</div></section>

<!-- RATING DECODER -->
<section class="rr-reveal rr-section is-gale"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">The Wind-Rating Decoder</span><h2>What the letter on the bundle actually promises.</h2><p>A wind rating only counts when the shingle is nailed and sealed the way the manufacturer specifies. That's what our factory certifications are for.</p></div>
  <div class="rr-ctable">
    <div class="rr-ctrow rr-cthead"><div>Rating</div><div>Test</div><div>Speed</div><div>Where you'll see it</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Rating</span>Class D / F</div><div><span class="cl">Test</span>ASTM D3161 fan test</div><div><span class="cl">Speed</span><span class="ct">90 / 110 mph</span></div><div><span class="cl">Where</span>Most 3-tab and standard laminated shingles.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Rating</span>Class G / H</div><div><span class="cl">Test</span>ASTM D7158 uplift-force test</div><div><span class="cl">Speed</span><span class="ct">120 / 150 mph</span></div><div><span class="cl">Where</span>Premium laminated shingles; the rating most of our installs carry.</div></div>
    <div class="rr-ctrow pick"><div class="m"><span class="cl">Rating</span>Owens Corning Duration<span class="pill">Platinum</span></div><div><span class="cl">Test</span>SureNail reinforced nailing zone</div><div><span class="cl">Speed</span><span class="ct">130 mph</span></div><div><span class="cl">Where</span>Our Platinum status carries Owens Corning's strongest warranty tier.</div></div>
    <div class="rr-ctrow pick"><div class="m"><span class="cl">Rating</span>GAF Timberline HDZ<span class="pill">Master Elite</span></div><div><span class="cl">Test</span>LayerLock + four GAF accessories</div><div><span class="cl">Speed</span><span class="ct">No maximum</span></div><div><span class="cl">Where</span>GAF's WindProven warranty has no wind-speed limit when the full system is installed by a certified crew.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Rating</span>CertainTeed Landmark</div><div><span class="cl">Test</span>With CertainTeed starter + hip/ridge, 6 nails</div><div><span class="cl">Speed</span><span class="ct">110 / 130 mph</span></div><div><span class="cl">Where</span>The 130 rating requires the full accessory system — a detail a lot of installs skip.</div></div>
  </div>
  <p class="rr-compare-note"><b>The cold-weather truth:</b> shingle sealant activates with sun heat. Below about 40°F it may not bond until spring, so a roof installed in November rides out January gales on its nails alone — unless the rakes and eaves are hand-sealed. We hand-seal.</p>
</div></section>

<!-- STORM LOG + SHORELINES -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Wind We've Worked</span><h2>The events adjusters can look up.</h2><p>A wind claim is anchored to a date and a gust. These are the ones our counties remember, from National Weather Service records.</p></div>
  <div class="rr-log"><div class="rr-logrow"><span class="d">Sept 2–3, 2026</span><span class="g">75 mph</span><p>EF-0 tornado through Marysville (St. Clair County); 60 mph in St. Clair Shores; roughly 300,000 without power across the region.</p></div><div class="rr-logrow"><span class="d">May 4, 2026</span><span class="g">storms</span><p>Line of storms crushes a St. Clair Shores home; tornado watches for Oakland, Macomb, and St. Clair.</p></div><div class="rr-logrow"><span class="d">Aug 27, 2024</span><span class="g">75 mph</span><p>Derecho: Roseville 75, White Lake 67, Oakland County International 66, Troy Airport 58; trees down in Hadley; about 380,000 outages.</p></div><div class="rr-logrow"><span class="d">2025 season</span><span class="g">33 tornadoes</span><p>Michigan's third-highest tornado count on record, including a St. Clair County tornado.</p></div><div class="rr-logrow"><span class="d">Nov 6, 2015</span><span class="g">85 mph</span><p>November gale front through the Thumb: 73 mph at Bad Axe, an 85 mph downburst, EF-0 in Yale, EF-1 in Applegate.</p></div><div class="rr-logrow"><span class="d">June 8, 2008</span><span class="g">60–80 mph</span><p>Derecho with 80 mph gusts in Bloomfield Hills and Walled Lake, 70 in Chesterfield, 64 in Troy, 60 in Almont; Oakland, Macomb, Lapeer, and St. Clair counties hit hardest — the storm many of our longest customers still date their roof by.</p></div></div>
  <div class="rr-shead" style="margin-top:56px"><span class="rr-eyebrow">Two Offices, Two Kinds of Wind</span><h2>The Thumb's gales and Metro Detroit's derechos.</h2></div>
  <div class="rr-shores">
    <div class="rr-shore"><span class="k">Port Huron office</span><h3>Lake Huron gale season</h3><p>Open water is nearly frictionless, so shoreline wind runs faster than inland. From October through January, gale warnings on the lake put 39-to-54-mph sustained winds on Fort Gratiot, Lexington, Port Sanilac, and Harbor Beach roofs — on top of the summer thunderstorms everyone gets.</p><a class="rr-btn rr-btn-navy" href="tel:8109843420">Call Port Huron (810) 984-3420</a></div>
    <div class="rr-shore"><span class="k">Troy office</span><h3>The derecho corridor</h3><p>Oakland and Macomb sit in the path of the straight-line wind events — the 2008 derecho, August 2024, the July 2026 squall line — that take corner tabs and ridge caps off thousands of roofs in one evening. Most wind damage here is straight-line, not tornado.</p><a class="rr-btn rr-btn-navy" href="tel:2488003269">Call Troy (248) 800-3269</a></div>
  </div>
  <div class="rr-shead" style="margin-top:44px"><span class="rr-eyebrow">Related</span><h2 style="font-size:24px">If the storm brought more than wind.</h2></div>
  <div class="rr-chips">
    <a href="https://reasonablecontractingservices.com/hail-damage/">Hail came with it</a>
    <a href="https://reasonablecontractingservices.com/tree-damage/">A tree or limb came down</a>
    <a href="https://reasonablecontractingservices.com/emergency-roof-leak/">Water is coming in now</a>
    <a href="https://reasonablecontractingservices.com/roof-insurance-claim-after-storm-damage/">Filing a roof claim in Michigan</a>
    <a href="https://reasonablecontractingservices.com/storm-damage-roof-repair/">Storm damage roof repair</a>
    <a href="https://reasonablecontractingservices.com/siding-repair/">Siding the wind peeled</a>
  </div>
</div></section>

<!-- FAQ -->
<section class="rr-reveal rr-section is-gale"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Wind Questions</span><h2>Answered in miles per hour.</h2></div>
  <div class="rr-faq-list"><div class="rr-qa"><button class="rr-qa-q" type="button">How much wind does it take to blow shingles off?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Damage can start around 45 to 50 mph on older or poorly sealed roofs. The National Weather Service calls 58 mph severe, and healthy sealed shingles begin tearing in the 58-to-75 band — with edges, corners, and the ridge seeing much higher loads than the reported gust. Troy Airport recorded 58 and Roseville 75 in the August 2024 derecho.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Can you replace just a few shingles?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Yes, when the damage is isolated and the rest of the roof is sound. A few tabs on a roof under about twelve years old is a repair. Repeated blow-offs, systemic seal failure, or a roof near twenty years is a replacement conversation — and color matching on an old roof is never exact.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">My shingles are loose but not creased. Is that wind damage?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Not by itself, under the standard adjusters use. Shingles also unseal from cold-weather installation, age, and thermal cycling. What proves wind is a crease, a fold, a tear, or a missing tab, and a pattern that follows the windward slopes and edges. That is what our HAAG-trained inspectors look for.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Are creased shingles covered by insurance?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Creases are the recognized signature of wind damage and a creased shingle is functionally finished. Wind is a covered peril on nearly every standard Michigan homeowner's policy, subject to your deductible.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Does Michigan insurance cover wind damage?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Standard policies cover wind as a named peril. Many now carry a separate wind-and-hail deductible — often one percent of the dwelling coverage, so three thousand dollars on a three-hundred-thousand-dollar home. Check your declarations page before you file.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Why do wind claims get denied?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Wear and tear is the most-cited reason nationally. Roofs past ten or fifteen years draw the “deterioration” argument. Dated photos of yard debris, the NWS wind record for your date, and documented creases on the windward slopes are what counter it.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">My shingles are discontinued. Will they replace the whole roof?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Michigan has no statute requiring matching. It turns on your policy's “like kind and quality” language and the state's unfair-claims rules. Document the mismatch and escalate through appraisal if needed; we'll help you build the case.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">How long do I have to file a wind claim in Michigan?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Michigan law requires insurers to allow at least one year from the date of loss to bring a claim to court (MCL 500.2833), and the clock pauses while your claim is pending. Your policy asks for prompt notice — in practice, file within weeks.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">What does a wind rating like Class H mean?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Class F means the shingle passed a fan test at 110 mph (ASTM D3161). Class H means it passed an uplift-force test rated to 150 mph (ASTM D7158). The rating only counts if the shingle was nailed and sealed the way the manufacturer specifies — which is why the installer's certification matters.</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. If it's a four-hundred-dollar repair, you get a four-hundred-dollar estimate. If the wind found a roof at the end of its life, we'll show you the evidence and let you decide.</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>Wind damage repair from the lakeshore 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. 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/auburn-hills-roofers/">Auburn Hills</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">Before the Next Front</span><h2>Get the creases found while the storm date still matters.</h2><p>A HAAG-trained inspection, a straight repair-or-replace answer, and the evidence your claim runs on. 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": "Wind Damage Roof Repair", "serviceType": "Wind damage roof inspection and repair: blown-off, lifted and creased shingles, ridge caps, flashing, insurance claim support", "description": "HAAG-trained wind damage inspections that find the creases that prove wind, repair of blown-off, lifted and creased shingles and ridge caps, an honest repair-or-replace answer, and Michigan wind claim support. 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/wind-damage/"}</script><script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "How much wind does it take to blow shingles off?", "acceptedAnswer": {"@type": "Answer", "text": "Damage can start around 45 to 50 mph on older or poorly sealed roofs. The National Weather Service calls 58 mph severe, and healthy sealed shingles begin tearing in the 58-to-75 band - with edges, corners, and the ridge seeing much higher loads than the reported gust. Troy Airport recorded 58 and Roseville 75 in the August 2024 derecho."}}, {"@type": "Question", "name": "Can you replace just a few shingles?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, when the damage is isolated and the rest of the roof is sound. A few tabs on a roof under about twelve years old is a repair. Repeated blow-offs, systemic seal failure, or a roof near twenty years is a replacement conversation - and color matching on an old roof is never exact."}}, {"@type": "Question", "name": "My shingles are loose but not creased. Is that wind damage?", "acceptedAnswer": {"@type": "Answer", "text": "Not by itself, under the standard adjusters use. Shingles also unseal from cold-weather installation, age, and thermal cycling. What proves wind is a crease, a fold, a tear, or a missing tab, and a pattern that follows the windward slopes and edges. That is what our HAAG-trained inspectors look for."}}, {"@type": "Question", "name": "Are creased shingles covered by insurance?", "acceptedAnswer": {"@type": "Answer", "text": "Creases are the recognized signature of wind damage and a creased shingle is functionally finished. Wind is a covered peril on nearly every standard Michigan homeowner's policy, subject to your deductible."}}, {"@type": "Question", "name": "Does Michigan insurance cover wind damage?", "acceptedAnswer": {"@type": "Answer", "text": "Standard policies cover wind as a named peril. Many now carry a separate wind-and-hail deductible - often one percent of the dwelling coverage, so three thousand dollars on a three-hundred-thousand-dollar home. Check your declarations page before you file."}}, {"@type": "Question", "name": "Why do wind claims get denied?", "acceptedAnswer": {"@type": "Answer", "text": "Wear and tear is the most-cited reason nationally. Roofs past ten or fifteen years draw the \"deterioration\" argument. Dated photos of yard debris, the NWS wind record for your date, and documented creases on the windward slopes are what counter it."}}, {"@type": "Question", "name": "My shingles are discontinued. Will they replace the whole roof?", "acceptedAnswer": {"@type": "Answer", "text": "Michigan has no statute requiring matching. It turns on your policy's \"like kind and quality\" language and the state's unfair-claims rules. Document the mismatch and escalate through appraisal if needed; we'll help you build the case."}}, {"@type": "Question", "name": "How long do I have to file a wind claim in Michigan?", "acceptedAnswer": {"@type": "Answer", "text": "Michigan law requires insurers to allow at least one year from the date of loss to bring a claim to court (MCL 500.2833), and the clock pauses while your claim is pending. Your policy asks for prompt notice - in practice, file within weeks."}}, {"@type": "Question", "name": "What does a wind rating like Class H mean?", "acceptedAnswer": {"@type": "Answer", "text": "Class F means the shingle passed a fan test at 110 mph (ASTM D3161). Class H means it passed an uplift-force test rated to 150 mph (ASTM D7158). The rating only counts if the shingle was nailed and sealed the way the manufacturer specifies - which is why the installer's certification matters."}}]}</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": "Wind Damage", "item": "https://reasonablecontractingservices.com/wind-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>
```
