# Emergency Roof Leak 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-leak">

<style>
.rr.rr-leak{--wet:#1F6F8B;--wet-deep:#14526A;--tide:#E8F3F7;--tide-line:#C6DDE7;--alert:#C0392B}
.rr.rr-leak .is-tide{background:var(--tide);border-top:1px solid var(--tide-line);border-bottom:1px solid var(--tide-line)}
.rr.rr-leak .rr-eyebrow{color:var(--wet-deep)}
.rr.rr-leak .rr-badgebar .dot{background:var(--wet)}
.rr.rr-leak .rr-arow .num{background:var(--wet)}
.rr.rr-leak .rr-spec-list .rr-arow.rr-row-on{background:rgba(31,111,139,.08);box-shadow:inset 4px 0 0 var(--wet)}
.rr.rr-leak .rr-spec-list .rr-arow.rr-row-on h4{color:var(--wet-deep)}
.rr.rr-leak .rr-spec-list .rr-arow.rr-row-on .num{box-shadow:0 0 0 4px rgba(31,111,139,.2)}
.rr.rr-leak .rr-spec-fig svg .rr-hot-on{filter:drop-shadow(0 1px 5px rgba(31,111,139,.7))}
.rr.rr-leak .rr-spec-tag{color:var(--wet-deep)}
.rr.rr-leak .rr-spec-fig{position:relative}
.rr.rr-leak .rr-eyebrow.on-dark{color:#9FD3E6}
.rr.rr-leak .rr-ctrow{align-items:stretch}
.rr.rr-leak .rr-ctrow>div{display:flex;align-items:center;flex-wrap:wrap}

.rr.rr-leak .rr-hero .rr-hero-ctas{gap:10px}
.rr.rr-leak .rr-hero .rr-btn{white-space:nowrap;padding:12px 16px;font-size:14.5px}
/* triage tiles */
.rr.rr-leak .rr-tri{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:18px;max-width:1100px;margin:0 auto}
.rr.rr-leak .rr-tri div{background:#fff;border:1px solid var(--tide-line);border-radius:16px;padding:26px 24px;border-top:6px solid var(--wet)}
.rr.rr-leak .rr-tri div.now{border-top-color:var(--alert)}
.rr.rr-leak .rr-tri .k{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--wet-deep)}
.rr.rr-leak .rr-tri div.now .k{color:var(--alert)}
.rr.rr-leak .rr-tri h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:20px;color:var(--navy);margin:8px 0 10px;line-height:1.2}
.rr.rr-leak .rr-tri p{color:var(--slate-grey);font-size:14.5px;line-height:1.55}
.rr.rr-leak .rr-tri ul{margin:10px 0 0;padding-left:18px;color:var(--slate);font-size:14px;line-height:1.5}
/* the clock */
.rr.rr-leak .rr-clock{position:relative;max-width:980px;margin:0 auto;padding-left:0}
.rr.rr-leak .rr-clock::before{content:"";position:absolute;left:92px;top:12px;bottom:12px;width:3px;background:linear-gradient(180deg,var(--alert),var(--wet) 40%,var(--wet-deep))}
.rr.rr-leak .rr-tick{display:grid;grid-template-columns:76px 1fr;gap:40px;padding:26px 0;position:relative}
.rr.rr-leak .rr-tick .t{font-family:'Space Mono',monospace;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--wet-deep);text-align:right;padding-top:6px;line-height:1.3}
.rr.rr-leak .rr-tick .t b{display:block;font-family:'Archivo',sans-serif;font-size:22px;letter-spacing:-.02em;color:var(--navy);text-transform:none}
.rr.rr-leak .rr-tick::before{content:"";position:absolute;left:85px;top:34px;width:17px;height:17px;border-radius:50%;background:#fff;border:4px solid var(--wet)}
.rr.rr-leak .rr-tick.now::before{border-color:var(--alert)}
.rr.rr-leak .rr-tick .c{background:#fff;border:1px solid var(--tide-line);border-radius:16px;padding:22px 24px}
.rr.rr-leak .rr-tick h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:20px;color:var(--navy);margin:0 0 8px}
.rr.rr-leak .rr-tick p{color:var(--slate-grey);font-size:15px;line-height:1.6}
.rr.rr-leak .rr-tick ul{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 22px}
.rr.rr-leak .rr-tick li{position:relative;padding-left:26px;font-size:14.5px;color:var(--slate);line-height:1.45}
.rr.rr-leak .rr-tick li::before{content:"";position:absolute;left:0;top:4px;width:16px;height:16px;border-radius:4px;border:2px solid var(--wet)}
.rr.rr-leak .rr-tick li.x::before{border-color:var(--alert)}
.rr.rr-leak .rr-tick li.x::after{content:"\2715";position:absolute;left:3px;top:1px;font-size:11px;font-weight:700;color:var(--alert)}
/* stains */
.rr.rr-leak .rr-stains{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:16px;max-width:1100px;margin:0 auto}
.rr.rr-leak .rr-stain{background:#fff;border:1px solid var(--tide-line);border-radius:16px;padding:22px 20px}
.rr.rr-leak .rr-stain .sw{width:100%;height:54px;border-radius:10px;margin-bottom:14px;border:1px solid rgba(0,0,0,.06)}
.rr.rr-leak .rr-stain h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:17px;color:var(--navy);margin-bottom:6px}
.rr.rr-leak .rr-stain p{color:var(--slate-grey);font-size:14px;line-height:1.5}
.rr.rr-leak .rr-stain .v{display:inline-block;margin-top:10px;font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--wet-deep);background:var(--tide);border-radius:999px;padding:4px 10px}
/* seasons */
.rr.rr-leak .rr-seasons{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:16px;max-width:1100px;margin:0 auto}
.rr.rr-leak .rr-season{background:#fff;border:1px solid var(--tide-line);border-radius:16px;padding:22px 20px}
.rr.rr-leak .rr-season .m{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--wet-deep)}
.rr.rr-leak .rr-season h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:18px;color:var(--navy);margin:8px 0 8px;line-height:1.2}
.rr.rr-leak .rr-season p{color:var(--slate-grey);font-size:14px;line-height:1.5}
/* offices */
.rr.rr-leak .rr-offices{display:grid!important;grid-template-columns:1fr 1fr!important;gap:20px;max-width:900px;margin:0 auto}
.rr.rr-leak .rr-office{background:#fff;border:1px solid var(--tide-line);border-radius:16px;padding:26px;text-align:center}
.rr.rr-leak .rr-office .k{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--wet-deep)}
.rr.rr-leak .rr-office h3{font-family:'Archivo',sans-serif;font-weight:800;font-size:22px;color:var(--navy);margin:8px 0 6px}
.rr.rr-leak .rr-office p{color:var(--slate-grey);font-size:14.5px;line-height:1.5;margin-bottom:14px}
.rr.rr-leak .rr-notroof{list-style:none;padding:0;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:12px 40px;max-width:860px}
.rr.rr-leak .rr-notroof li{position:relative;padding-left:28px;color:var(--slate);font-size:15px;line-height:1.5}
.rr.rr-leak .rr-notroof li::before{content:"";position:absolute;left:0;top:7px;width:12px;height:12px;border-radius:50%;background:var(--wet)}
.rr.rr-leak .rr-chips{justify-content:center;max-width:940px;margin:0 auto}
.rr.rr-leak .rr-ctrow:not(.rr-cthead)>div{background:#fff}
.rr.rr-leak .rr-cthead>div{background:var(--navy)!important;color:#fff!important}
.rr.rr-leak .rr-ctrow.pick>div{background:rgba(31,111,139,.07)}
.rr.rr-leak .rr-ctrow.pick .m{box-shadow:inset 3px 0 0 var(--wet)}
.rr.rr-leak .rr-ctrow .pill{color:var(--wet-deep);background:rgba(31,111,139,.15)}
.rr.rr-leak .rr-two-tel{display:flex;gap:12px;flex-wrap:wrap}
@media(max-width:980px){.rr.rr-leak .rr-stains,.rr.rr-leak .rr-seasons{grid-template-columns:1fr 1fr!important}}
@media(max-width:760px){.rr.rr-leak .rr-tri{grid-template-columns:1fr!important}.rr.rr-leak .rr-clock::before{left:14px}.rr.rr-leak .rr-tick{grid-template-columns:1fr;gap:10px;padding-left:40px}.rr.rr-leak .rr-tick .t{text-align:left}.rr.rr-leak .rr-tick::before{left:7px}.rr.rr-leak .rr-tick ul{grid-template-columns:1fr}.rr.rr-leak .rr-offices{grid-template-columns:1fr!important}}
@media(max-width:620px){.rr.rr-leak .rr-stains,.rr.rr-leak .rr-seasons{grid-template-columns:1fr!important}.rr.rr-leak .rr-notroof{grid-template-columns:1fr}}

/* mobile polish 2026-09-14 */
@media(hover:none){.rr.rr-leak .rr-spec-hint{display:none!important}}
@media(max-width:760px){.rr.rr-leak .rr-hero{box-shadow:inset 0 0 0 2000px rgba(8,16,26,.40)}.rr.rr-leak .rr-hero .rr-tagline{color:#BFD6F2!important}.rr.rr-leak .rr-spec-fig{padding:10px;border-radius:14px}.rr.rr-leak .rr-spec-fig figcaption{font-size:11px;letter-spacing:.04em}.rr.rr-leak .rr-ctable .cl{font-size:11px}.rr.rr-leak .rr-ctrow .pill{font-size:10px}.rr.rr-leak small,.rr.rr-leak .k,.rr.rr-leak .tag,.rr.rr-leak .v,.rr.rr-leak .who,.rr.rr-leak .cty span,.rr.rr-leak .rr-tick .t span{font-size:11px!important}.rr.rr-leak .rr-section{padding-top:64px;padding-bottom:64px}}
</style>
<section class="rr-hero" style="background:linear-gradient(100deg,rgba(8,24,34,.86) 0%,rgba(14,52,68,.68) 45%,rgba(14,52,68,.30) 100%),url('https://hub.reasonablecontractingservices.com/projects/photo/2f5557ac3970_da059632.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/10/reasonable-roof-leak-ceiling-stain.webp" class="skip-lazy" loading="eager" fetchpriority="high" decoding="sync" alt="Brown water stain spreading across a white interior ceiling from a roof leak" srcset="https://reasonablecontractingservices.com/wp-content/uploads/2026/10/reasonable-roof-leak-ceiling-stain-480x360.webp 480w, https://reasonablecontractingservices.com/wp-content/uploads/2026/10/reasonable-roof-leak-ceiling-stain-510x382.webp 510w, https://reasonablecontractingservices.com/wp-content/uploads/2026/10/reasonable-roof-leak-ceiling-stain-768x576.webp 768w, https://reasonablecontractingservices.com/wp-content/uploads/2026/10/reasonable-roof-leak-ceiling-stain-980x735.webp 980w, https://reasonablecontractingservices.com/wp-content/uploads/2026/10/reasonable-roof-leak-ceiling-stain-1024x768.webp 1024w, https://reasonablecontractingservices.com/wp-content/uploads/2026/10/reasonable-roof-leak-ceiling-stain-1080x810.webp 1080w, https://reasonablecontractingservices.com/wp-content/uploads/2026/10/reasonable-roof-leak-ceiling-stain-1280x960.webp 1280w, https://reasonablecontractingservices.com/wp-content/uploads/2026/10/reasonable-roof-leak-ceiling-stain-1536x1152.webp 1536w, https://reasonablecontractingservices.com/wp-content/uploads/2026/10/reasonable-roof-leak-ceiling-stain.webp 1920w" 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">Emergency Roof Leak</div>
      <h1>Water coming in? Here's the next 60 minutes.</h1>
      <p class="rr-tagline">Emergency tarping · leak tracing · permanent repair.</p>
      <p class="rr-prose" style="color:#dbe4ee">An active leak is a race against elapsed time, not a storm date. Contain it, document it, then call — we'll tell you when we can be there, get a tarp on if weather is still coming, and trace the water to where it actually enters. Two Michigan offices, family-owned since 1984.</p>
      <div class="rr-hero-ctas"><a class="rr-btn rr-btn-primary" href="#estimate">Get My Free Estimate</a><a class="rr-btn rr-btn-ghost" href="tel:8109843420">Port Huron (810) 984-3420</a><a class="rr-btn rr-btn-ghost" href="tel:2488003269">Troy (248) 800-3269</a></div>
      <div class="rr-trustline"><div class="g-rating"><span class="rr-stars">★★★★★</span> <span data-rr-live="avg">4.8</span> · <span data-rr-live="total">255</span> Reviews</div><div class="trust-pills"><div class="item">Since 1984</div><div class="item">Licensed & Insured</div></div></div>
    </div>
    <div class="rr-hero-form" id="estimate">
      <div class="fh"><span class="rrs-m rrs-eyebrow">Free, no-obligation estimate</span><h3>Get your free estimate</h3><p>Tell us what you see and where the water is showing up. A local expert calls you back.</p></div>

Service Type Form Fill

GET IN TOUCH

If you are human, leave this field blank.			

<div class="privacy">Office lines are voice only — call or use this form. No spam, no pressure.</div>
    </div>
  </div></div>
</section>
<div class="rr-badgebar"><div class="rr-wrap"><div class="row">
  <div class="rr-badge"><span class="dot"></span><strong>Since 1984</strong></div>
  <div class="rr-badge"><span class="dot"></span>Emergency Tarping</div>
  <div class="rr-badge"><span class="dot"></span>Leak Tracing & 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>

<!-- TRIAGE -->
<section class="rr-reveal rr-section is-tide"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Emergency or Not?</span><h2>The 20-second check.</h2><p>Three kinds of leak, three different clocks. Find yours.</p></div>
  <div class="rr-tri">
    <div class="now"><span class="k">Call now</span><h3>Water is actively coming in.</h3><p>Dripping or pouring, a ceiling that's sagging or bulging, water near lights or outlets, or more than one room wet.</p><ul><li>Kill power to affected fixtures</li><li>Contain, then call</li></ul></div>
    <div><span class="k">This week</span><h3>It only shows up in hard rain.</h3><p>A stain that darkens during storms and dries between them. It's urgent — every storm adds water — but it's schedulable.</p><ul><li>Photograph it wet and dry</li><li>Note the wind direction that day</li></ul></div>
    <div><span class="k">Schedule a look</span><h3>An old stain that isn't growing.</h3><p>Dry to the touch, same size for months. Could be a past leak that was fixed, or a slow one waiting for the next big rain.</p><ul><li>Mark its edge with a pencil</li><li>Get it looked at before winter</li></ul></div>
  </div>
</div></section>

<!-- THE LEAK CLOCK -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">The Leak Clock</span><h2>What to do, and what we do, hour by hour.</h2><p>The damage a leak does is a function of time. Here is how the first week actually goes.</p></div>
  <div class="rr-clock">
    <div class="rr-tick now"><div class="t"><b>Minute 0</b>right now</div><div class="c"><h3>Contain it.</h3><p>Stop the water from spreading before you do anything else.</p>
      <ul><li>Bucket or bin under the drip; plastic or towels on the floor</li><li>Move furniture, electronics, rugs, and anything on the walls</li><li>Ceiling bulging? Poke a small hole at the low point and drain it into a bucket — a controlled drip beats a collapse</li><li>Kill the breaker to any fixture or outlet the water is near</li><li class="x">Don't go on the roof in the rain — ever</li><li class="x">Don't start tearing out drywall before it's photographed</li></ul></div></div>
    <div class="rr-tick"><div class="t"><b>Hour 1</b>document & dry</div><div class="c"><h3>Build the record. Start the drying.</h3><p>Everything you photograph now is what makes an insurance claim work later — and everything you dry now is mold that never starts.</p>
      <ul><li>Photos: the drip, the ceiling, the attic if you can reach it safely, the outside from the ground</li><li>Screenshot the weather and note when it started</li><li>Fans on, dehumidifier running, closet doors open</li><li>Soaked insulation comes out — it will not dry in place</li><li>Call us. Tell us what you see; we'll tell you when we can be there and what to do until then</li><li>Call your carrier if the cause was sudden — wind, hail, a limb, ice</li></ul></div></div>
    <div class="rr-tick"><div class="t"><b>Day 1</b>stabilize</div><div class="c"><h3>The tarp goes on. To a standard.</h3><p>A tarp is a bridge, not a repair — but a bad tarp is worse than none. Ours is done the same way every time.</p>
      <ul><li>Heavy poly run from above the damage over the ridge, at least four feet past it on every side</li><li>Edges rolled around furring strips and screwed into rafters — never held by grommets alone</li><li>Fastener locations recorded so the permanent repair closes every hole</li><li>Itemized invoice for your insurance file</li><li>If it's raining, we can still dry it in; the permanent work waits for a dry deck</li></ul></div></div>
    <div class="rr-tick"><div class="t"><b>Week 1</b>solve</div><div class="c"><h3>Trace it, then fix it for good.</h3><p>The patch stops the bleeding. The diagnosis ends it. We find where the water enters — not just where it exits — and repair the failed part properly.</p>
      <ul><li>Attic trace uphill from the wet spot; hose test on a dry day if needed</li><li>Replace the failed component: boot, flashing, valley, chimney counterflashing, skylight seal, backed-out nails</li><li>Shingles and underlayment around it, ice-and-water shield where the eave was involved</li><li>Interior: drywall, paint, insulation — with photos, on the same estimate</li><li>Honest verdict if the roof is at end of life: repair what leaks, or stop paying for patches</li></ul></div></div>
  </div>
</div></section>

<!-- STAIN READER -->
<section class="rr-reveal rr-section is-tide"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">The Ceiling-Stain Reader</span><h2>What the stain is telling you.</h2><p>Color, shape, and feel say how old the leak is and how urgent it is.</p></div>
  <div class="rr-stains">
    <div class="rr-stain"><div class="sw" style="background:linear-gradient(135deg,#F7EFC9,#EAD98F)"></div><h3>Light yellow, soft edge</h3><p>Fresh. One or two wettings. The water is still finding its way — and the source is probably new.</p><span class="v">Urgent</span></div>
    <div class="rr-stain"><div class="sw" style="background:linear-gradient(135deg,#C9A06A,#8C5A2B)"></div><h3>Dark brown, defined edge</h3><p>Weeks to months of wetting. Minerals and tannins have concentrated. The leak has been active through several rains.</p><span class="v">This week</span></div>
    <div class="rr-stain"><div class="sw" style="background:radial-gradient(circle at 50% 50%,#F6EBCF 30%,#D9B98A 32%,#F3E6C6 45%,#C9A06A 47%,#F1E3C0 60%)"></div><h3>Rings inside rings</h3><p>Repeated wet-and-dry cycles. A leak that comes with certain storms — usually tied to wind direction or a specific flashing.</p><span class="v">Trace the pattern</span></div>
    <div class="rr-stain"><div class="sw" style="background:linear-gradient(135deg,#9FC6D4,#4C8FA6)"></div><h3>Wet, soft, or bulging</h3><p>Active right now. Drywall is holding water. Drain it, contain it, and call — this is the one that comes down.</p><span class="v">Call now</span></div>
  </div>
</div></section>

<!-- SOURCE FINDER (hotspot) -->
<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 house roof showing the seven places roof leaks usually start">
<rect x="0" y="0" width="640" height="400" fill="#FFFFFF"/>
<!-- sky wash -->
<rect x="0" y="0" width="640" height="230" fill="#E8F3F7"/>
<!-- main house body -->
<rect x="120" y="230" width="400" height="140" fill="#F6F1E6" stroke="#D9CFBD"/>
<!-- main roof (gable) -->
<polygon points="100,232 320,90 540,232" fill="#5B6B7C"/>
<polygon points="116,226 320,100 524,226" fill="#6C7D8F"/>
<!-- dormer / upper wall for step flashing -->
<rect x="390" y="150" width="90" height="80" fill="#EFE7D6" stroke="#D9CFBD"/>
<polygon points="380,152 435,118 490,152" fill="#4E5D6E"/>
<!-- valley line where dormer roof meets main -->
<line x1="435" y1="118" x2="482" y2="196" stroke="#2C3A48" stroke-width="3"/>
<!-- chimney -->
<rect x="200" y="112" width="34" height="80" fill="#B98C73" stroke="#8E6A55"/>
<rect x="196" y="108" width="42" height="8" fill="#8E6A55"/>
<!-- skylight -->
<rect x="250" y="158" width="52" height="34" transform="skewX(-12)" fill="#BFE3FA" stroke="#2C3A48" stroke-width="2"/>
<!-- pipe boot -->
<rect x="330" y="150" width="10" height="26" fill="#8FA3B5"/><ellipse cx="335" cy="176" rx="12" ry="5" fill="#3E4C5A"/>
<!-- nail pops (dots in the field) -->
<circle cx="170" cy="200" r="3" fill="#2C3A48"/><circle cx="182" cy="212" r="3" fill="#2C3A48"/><circle cx="160" cy="214" r="3" fill="#2C3A48"/>
<!-- eave / gutter with ice -->
<rect x="96" y="226" width="448" height="8" fill="#3E4C5A"/>
<path d="M104 234 l4 22 l4 -22 M120 234 l3 30 l4 -30" fill="#DDF1FC" stroke="#7FB6DE"/>
<!-- water drip markers -->
<path d="M335 182 v14" stroke="#1F6F8B" stroke-width="3" stroke-linecap="round"/>
<!-- door/windows -->
<rect x="300" y="300" width="40" height="70" fill="#8E6A55"/><rect x="160" y="270" width="50" height="44" fill="#BFE3FA" stroke="#D9CFBD"/><rect x="430" y="270" width="50" height="44" fill="#BFE3FA" stroke="#D9CFBD"/>
<g><circle cx="335" cy="134" r="13" fill="#1F6F8B"/><text x="335" y="138.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">1</text></g><g><circle cx="470" cy="232" r="13" fill="#1F6F8B"/><text x="470" y="236.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">2</text></g><g><circle cx="500" cy="170" r="13" fill="#1F6F8B"/><text x="500" y="174.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">3</text></g><g><circle cx="217" cy="96" r="13" fill="#1F6F8B"/><text x="217" y="100.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">4</text></g><g><circle cx="270" cy="205" r="13" fill="#1F6F8B"/><text x="270" y="209.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">5</text></g><g><circle cx="172" cy="178" r="13" fill="#1F6F8B"/><text x="172" y="182.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">6</text></g><g><circle cx="110" cy="262" r="13" fill="#1F6F8B"/><text x="110" y="266.5" text-anchor="middle" font-family="Space Mono,monospace" font-size="12" font-weight="700" fill="#fff">7</text></g>
</svg><figcaption>Where roof leaks actually start · hover or tap the numbers</figcaption></figure>
    <div>
      <span class="rr-spec-tag">The Leak-Source Finder</span>
      <h2>Leaks start at the transitions, not the middle of the roof.</h2>
      <div class="rr-spec-list">
        <div class="rr-arow"><div class="num">1</div><div><h4>Pipe boots</h4><p>The rubber collar around a plumbing vent cracks from sun after roughly a decade. Symptom: a stain near a bathroom or kitchen. Fix: a new boot, a quick job.</p></div></div>
        <div class="rr-arow"><div class="num">2</div><div><h4>Valleys</h4><p>Two slopes dump water into one channel. Worn or debris-packed valleys leak in heavy rain. Symptom: a stain below where two rooflines meet. Fix: rebuild the valley with ice-and-water shield.</p></div></div>
        <div class="rr-arow"><div class="num">3</div><div><h4>Step and wall flashing</h4><p>Where a roof meets a wall or dormer, every course needs its own piece of flashing. Symptom: a stain along an upper wall. Fix: re-flash under the siding, not caulk over it.</p></div></div>
        <div class="rr-arow"><div class="num">4</div><div><h4>Chimneys</h4><p>Counterflashing pulls out of the mortar, crickets are missing, crowns crack. Symptom: a stain beside the fireplace. Fix: new counterflashing cut into the mortar joint.</p></div></div>
        <div class="rr-arow"><div class="num">5</div><div><h4>Skylights</h4><p>Seals age, flashing kits are installed wrong, condensation reads as a leak. Symptom: water at the skylight corners. Fix: re-flash or replace the unit.</p></div></div>
        <div class="rr-arow"><div class="num">6</div><div><h4>Nail pops and field damage</h4><p>Nails that missed the rafter back out and lift the shingle above them. Symptom: a stain in the open field, often after wind. Fix: reseat, seal, replace the shingle.</p></div></div>
        <div class="rr-arow"><div class="num">7</div><div><h4>The eave in winter</h4><p>Ice backs water up under the first courses. Symptom: leaks only during a thaw, along outside walls. Fix: the attic, not the roof — see the ice dam page.</p></div></div>
      </div>
    </div>
  </div></div>
  <p class="rr-prose" style="margin-top:28px"><b>Why the drip isn't under the hole:</b> water enters at a transition, rides the underlayment and the top of the rafter downhill, and drops at the first joint or nail it meets — sometimes a full rafter length away. Guessing from the stain and caulking the roof above it is how leaks get “fixed” four times. We trace it from the attic first.</p>
</div></section>

<!-- STABILIZE VS SOLVE -->
<section class="rr-reveal rr-section is-tide"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Stabilize vs. Solve</span><h2>Temporary and permanent are different jobs.</h2><p>Both have a place. Confusing them is how a $400 leak becomes a $4,000 ceiling.</p></div>
  <div class="rr-ctable">
    <div class="rr-ctrow rr-cthead"><div>Measure</div><div>What it is</div><div>How long it holds</div><div>Then what</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Measure</span>Emergency tarp</div><div><span class="cl">What</span>Anchored poly over the damage and the ridge</div><div><span class="cl">Holds</span><span class="ct">Weeks</span></div><div><span class="cl">Then</span>Permanent repair scheduled right behind it; keep the invoice for insurance.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Measure</span>Sealant patch</div><div><span class="cl">What</span>Roof cement or sealant at the suspected entry</div><div><span class="cl">Holds</span><span class="ct">One season, maybe</span></div><div><span class="cl">Then</span>Fine on a boot or a nail head; a red flag on flashing, valleys, or chimneys. We use it as a bridge, never as the fix.</div></div>
    <div class="rr-ctrow"><div class="m"><span class="cl">Measure</span>Interior dry-out</div><div><span class="cl">What</span>Fans, dehumidifier, wet insulation removed</div><div><span class="cl">Holds</span><span class="ct">Day 1–2</span></div><div><span class="cl">Then</span>Prevents mold; doesn't touch the cause. Pairs with a tarp.</div></div>
    <div class="rr-ctrow pick"><div class="m"><span class="cl">Measure</span>Permanent repair<span class="pill">The fix</span></div><div><span class="cl">What</span>Replace the failed component and the shingles around it</div><div><span class="cl">Holds</span><span class="ct">The life of the roof</span></div><div><span class="cl">Then</span>Written estimate, manufacturer-backed materials, and the interior repaired on the same job.</div></div>
  </div>
  <p class="rr-compare-note">A leak that <b>stopped on its own</b> didn't heal. Something plugged it — debris, ice, a swollen board — and it will open again.</p>
</div></section>

<!-- MICHIGAN LEAK CALENDAR -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">The Michigan Leak Calendar</span><h2>Different months, different leaks.</h2><p>Knowing when it started narrows down where it's coming from.</p></div>
  <div class="rr-seasons">
    <div class="rr-season"><span class="m">March – April</span><h3>The thaw</h3><p>Ice dams releasing, attic frost melting, spring rain on a roof that just spent four months under snow. Leaks along outside walls and at the eaves.</p></div>
    <div class="rr-season"><span class="m">May – June</span><h3>Peak rain and wind</h3><p>Michigan's wettest stretch. Wind-driven rain finds flashing, valleys, and any shingle the winter lifted. Most of our tarp calls happen here.</p></div>
    <div class="rr-season"><span class="m">July – August</span><h3>Pop-up storms</h3><p>Short, violent downpours overwhelm valleys and gutters. Leaks that only appear in the heaviest rain almost always trace to a valley or a clogged transition.</p></div>
    <div class="rr-season"><span class="m">November – February</span><h3>Winter leaks</h3><p>Condensation in a poorly vented attic, frost on the underside of the deck, and the first ice dams. Cold-weather repairs are possible; the attic is usually the real fix.</p></div>
  </div>
</div></section>

<!-- INSURANCE -->
<section class="rr-reveal rr-section is-navy"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow on-dark">Insurance, In One Screen</span><h2>Sudden gets covered. Gradual usually doesn't.</h2></div>
  <p class="rr-prose" style="color:#dbe4ee"><b style="color:#fff">Covered, usually:</b> leaks caused by a sudden event — wind, hail, a fallen limb, the weight of ice or snow — and the interior damage they cause. Emergency tarping on a covered loss is normally reimbursed as mitigation.</p>
  <p class="rr-prose" style="color:#dbe4ee"><b style="color:#fff">Not covered, usually:</b> leaks from wear, age, or neglect. Roofs past fifteen or twenty years may be paid at depreciated value, and some policies now schedule that by age. The adjuster's first two questions are what caused it and how old the roof is.</p>
  <p class="rr-prose" style="color:#dbe4ee"><b style="color:#fff">Your part:</b> your policy expects you to limit the damage once you know about it — that's the tarp and the dry-out. Photograph before anything is covered or removed, keep every receipt, and give prompt notice. Michigan law guarantees at least one year from the date of loss to bring a claim (MCL 500.2833); the state's insurance regulator, DIFS, takes consumer complaints at 877-999-6442. For the full claims process, see our <a href="https://reasonablecontractingservices.com/emergency-services/" style="color:#fff">storm damage and insurance claims page</a>.</p>
</div></section>

<!-- NOT THE ROOF -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">The Honest Part</span><h2>Sometimes it isn't the roof.</h2><p>About one in five “roof leaks” we trace ends somewhere else. We'll tell you, in writing, and not charge you for a roof repair you don't need.</p></div>
  <ul class="rr-notroof">
    <li>A bath fan or dryer duct venting into the attic — condensation dripping back through the ceiling.</li>
    <li>Attic frost melting on the first warm day, weeks after the snow.</li>
    <li>A plumbing supply or drain line above the stain.</li>
    <li>Window or siding flashing on the wall above — water running behind the siding.</li>
    <li>An overflowing or back-pitched gutter pushing water under the drip edge.</li>
    <li>A skylight sweating in winter, not leaking.</li>
  </ul>
  <div class="rr-shead" style="margin-top:44px"><span class="rr-eyebrow">Related</span><h2 style="font-size:24px">If the leak has a cause you can name.</h2></div>
  <div class="rr-chips">
    <a href="https://reasonablecontractingservices.com/storm-damage-roof-repair/">Storm damage roof repair</a>
    <a href="https://reasonablecontractingservices.com/emergency-services/">Storm damage & insurance claims</a>
    <a href="https://reasonablecontractingservices.com/ice-dam-removal/">Leaks only when snow melts — ice dams</a>
    <a href="https://reasonablecontractingservices.com/tree-damage/">A tree or limb came through</a>
    <a href="https://reasonablecontractingservices.com/gutter-repair/">Gutters overflowing at the eave</a>
    <a href="https://reasonablecontractingservices.com/roof-leak-heres-what-to-do-next/">Roof leak? What to do next</a>
  </div>
</div></section>

<!-- FAQ -->
<section class="rr-reveal rr-section is-tide"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Roof Leak Questions</span><h2>Answers for the wet-ceiling moment.</h2></div>
  <div class="rr-faq-list"><div class="rr-qa"><button class="rr-qa-q" type="button">Is a roof leak an emergency?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">If water is actively dripping or pouring, a ceiling is sagging or bulging, water is near lights or outlets, or more than one room is wet — yes. Call now. A slow drip that only shows up in heavy rain is urgent but schedulable this week. An old, dry stain that never grows is an inspection, not an emergency.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Can you stop a leak while it's still raining?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">We can stabilize it — a tarp or a dry-in goes on in the rain, and rain actually helps us trace where the water is entering. The permanent repair waits for dry surfaces, because sealants and shingles won't bond to a wet deck.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Why is the stain nowhere near where the roof is damaged?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Water rides the rafters, the underlayment laps, and the top of the deck until it finds a joint or a nail to drop from. It can travel the full length of a rafter first. We trace uphill from the wet spot, in the attic, before we touch the roof.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Will my insurance cover a roof leak?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Usually when the cause is sudden — wind, hail, a fallen limb, the weight of ice or snow. Usually not when the cause is wear, age, or neglect. Adjusters look at the cause and the roof's age. Your policy also expects you to limit the damage once you know about it, which is why we tarp first and diagnose second.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Will insurance pay for the tarp?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">On a covered loss, emergency tarping is typically reimbursed as mitigation. Photograph the damage before we cover it, keep our itemized invoice, and don't throw anything away until the adjuster has seen it.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">How fast does mold start?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">The EPA's guidance is that wet materials dried within 24 to 48 hours usually won't grow mold. That's why we push fans and a dehumidifier the first day and pull soaked insulation instead of hoping it dries in place.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">How long will a tarp hold?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">A properly anchored tarp is a bridge, not a repair. Ours is furring-strip anchored into rafters, not held by grommets, and it will ride out weeks of weather — but the permanent fix should be scheduled right behind it.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">What does a roof leak repair usually involve?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Most leaks start at a transition, not in the middle of a slope: a cracked pipe boot, failed step or counter flashing, a worn valley, a chimney, a skylight, or backed-out nails. The repair is usually replacing the failed part and the shingles around it. When leaks are everywhere at once, the honest conversation is about the roof's age.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">My roof only leaks when the snow melts. Is that the same thing?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Probably not. Melt-only leaks are usually an ice dam backing water up under the shingles, or attic frost melting, and the fix is in the attic. That's its own page — see our <a href="https://reasonablecontractingservices.com/ice-dam-removal/">ice dam guide</a>.</div></div></div><div class="rr-qa"><button class="rr-qa-q" type="button">Is the estimate really free?<span class="mk"></span></button><div class="rr-qa-a"><div class="inner">Yes - the estimate is free, no strings. Emergency stabilization is quoted before we do it, the permanent repair gets its own written estimate, and if the honest answer is that the water isn't coming from the roof, we'll tell you that too.</div></div></div></div>
</div></section>

<!-- OFFICES -->
<section class="rr-reveal rr-section"><div class="rr-wrap">
  <div class="rr-shead"><span class="rr-eyebrow">Two Offices</span><h2>Call the one nearest you.</h2><p>Same crews, same standard, two dispatch points. We'll tell you when we can be there — we don't guess.</p></div>
  <div class="rr-offices">
    <div class="rr-office"><span class="k">Port Huron office</span><h3>(810) 984-3420</h3><p>St. Clair, Sanilac, and Lapeer counties and the Thumb · 1605 Beard St, Port Huron</p><a class="rr-btn rr-btn-navy" href="tel:8109843420">Call Port Huron</a></div>
    <div class="rr-office"><span class="k">Troy office</span><h3>(248) 800-3269</h3><p>Oakland and Macomb counties · 1470 Souter Blvd, Troy</p><a class="rr-btn rr-btn-navy" href="tel:2488003269">Call Troy</a></div>
  </div>
  <div class="rr-areas" style="margin-top:40px">
    <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>
</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">Every Hour Counts</span><h2>Contain it, then call.</h2><p>Tarp if weather is coming, trace to the source, repair it for good. 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": "Emergency Roof Leak Repair and Tarping", "serviceType": "Emergency roof leak repair, emergency tarping, leak tracing and permanent roof repair", "description": "Emergency roof leak response: containment guidance, anchored emergency tarping, attic leak tracing to the true entry point, and permanent repair of pipe boots, flashing, valleys, chimneys, skylights and storm damage. 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"}}], "contactPoint": [{"@type": "ContactPoint", "telephone": "+1-810-984-3420", "contactType": "customer service", "areaServed": "St. Clair, Sanilac, Lapeer counties MI"}, {"@type": "ContactPoint", "telephone": "+1-248-800-3269", "contactType": "customer service", "areaServed": "Oakland, Macomb counties MI"}], "hasCredential": {"@type": "EducationalOccupationalCredential", "name": "Michigan Residential Builders License", "identifier": "262000657"}}, "url": "https://reasonablecontractingservices.com/emergency-roof-leak/"}</script><script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Is a roof leak an emergency?", "acceptedAnswer": {"@type": "Answer", "text": "If water is actively dripping or pouring, a ceiling is sagging or bulging, water is near lights or outlets, or more than one room is wet - yes. Call now. A slow drip that only shows up in heavy rain is urgent but schedulable this week. An old, dry stain that never grows is an inspection, not an emergency."}}, {"@type": "Question", "name": "Can you stop a leak while it's still raining?", "acceptedAnswer": {"@type": "Answer", "text": "We can stabilize it - a tarp or a dry-in goes on in the rain, and rain actually helps us trace where the water is entering. The permanent repair waits for dry surfaces, because sealants and shingles won't bond to a wet deck."}}, {"@type": "Question", "name": "Why is the stain nowhere near where the roof is damaged?", "acceptedAnswer": {"@type": "Answer", "text": "Water rides the rafters, the underlayment laps, and the top of the deck until it finds a joint or a nail to drop from. It can travel the full length of a rafter first. We trace uphill from the wet spot, in the attic, before we touch the roof."}}, {"@type": "Question", "name": "Will my insurance cover a roof leak?", "acceptedAnswer": {"@type": "Answer", "text": "Usually when the cause is sudden - wind, hail, a fallen limb, the weight of ice or snow. Usually not when the cause is wear, age, or neglect. Adjusters look at the cause and the roof's age. Your policy also expects you to limit the damage once you know about it, which is why we tarp first and diagnose second."}}, {"@type": "Question", "name": "Will insurance pay for the tarp?", "acceptedAnswer": {"@type": "Answer", "text": "On a covered loss, emergency tarping is typically reimbursed as mitigation. Photograph the damage before we cover it, keep our itemized invoice, and don't throw anything away until the adjuster has seen it."}}, {"@type": "Question", "name": "How fast does mold start?", "acceptedAnswer": {"@type": "Answer", "text": "The EPA's guidance is that wet materials dried within 24 to 48 hours usually won't grow mold. That's why we push fans and a dehumidifier the first day and pull soaked insulation instead of hoping it dries in place."}}, {"@type": "Question", "name": "How long will a tarp hold?", "acceptedAnswer": {"@type": "Answer", "text": "A properly anchored tarp is a bridge, not a repair. Ours is furring-strip anchored into rafters, not held by grommets, and it will ride out weeks of weather - but the permanent fix should be scheduled right behind it."}}, {"@type": "Question", "name": "What does a roof leak repair usually involve?", "acceptedAnswer": {"@type": "Answer", "text": "Most leaks start at a transition, not in the middle of a slope: a cracked pipe boot, failed step or counter flashing, a worn valley, a chimney, a skylight, or backed-out nails. The repair is usually replacing the failed part and the shingles around it. When leaks are everywhere at once, the honest conversation is about the roof's age."}}, {"@type": "Question", "name": "My roof only leaks when the snow melts. Is that the same thing?", "acceptedAnswer": {"@type": "Answer", "text": "Probably not. Melt-only leaks are usually an ice dam backing water up under the shingles, or attic frost melting, and the fix is in the attic. That's its own page - see our ice dam guide."}}]}</script><script type="application/ld+json">{"@context": "https://schema.org", "@type": "HowTo", "name": "What to do in the first hour of a roof leak", "step": [{"@type": "HowToStep", "name": "Contain the water", "text": "Put a bucket under the drip, protect the floor, and move furniture and electronics out of the wet area."}, {"@type": "HowToStep", "name": "Drain a bulging ceiling", "text": "Poke a small hole at the lowest point of a sagging ceiling and drain it into a bucket to prevent a collapse."}, {"@type": "HowToStep", "name": "Cut power near the water", "text": "Turn off the breaker to any light fixture or outlet the water is reaching."}, {"@type": "HowToStep", "name": "Document everything", "text": "Photograph the drip, the ceiling, the attic if safely reachable, and the exterior from the ground; note the time and weather."}, {"@type": "HowToStep", "name": "Start drying", "text": "Run fans and a dehumidifier and remove soaked insulation; the EPA advises drying wet materials within 24 to 48 hours to prevent mold."}, {"@type": "HowToStep", "name": "Call a roofer", "text": "Call Reasonable Roofing & Contracting at (810) 984-3420 or (248) 800-3269; we will tell you when we can be there and get a tarp on if weather is still coming."}]}</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": "Roof Repair", "item": "https://reasonablecontractingservices.com/storm-damage-roof-repair/"}, {"@type": "ListItem", "position": 3, "name": "Emergency Roof Leak", "item": "https://reasonablecontractingservices.com/emergency-roof-leak/"}]}</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>
```
