/* ===============================
BASE
================================ */
.ravasa-page {
font-family: "Inter", system-ui, sans-serif;
color: #000;
}
.inner {
max-width: 1320px;
margin: 0 auto;
padding: 0 32px;
}
/* ===============================
TYPOGRAPHY (FIXED — ONLY CHANGES)
================================ */
.ravasa-page h1,
.ravasa-page h2,
.ravasa-page h3,
.ravasa-page h4,
.ravasa-page h5,
.ravasa-page h6 {
font-family: "Inter Tight", "Inter", system-ui, sans-serif;
font-weight: 600;
line-height: 1.05;
margin-bottom: 20px;
letter-spacing: -0.015em;
}
.ravasa-page h1 {
font-size: clamp(47px, 5.4vw, 68px);
}
.ravasa-page h2 {
font-size: clamp(38px, 3.7vw, 49px);
}
.ravasa-page p,
.ravasa-page li {
font-family: "Inter", system-ui, sans-serif;
font-size: 18px;
line-height: 1.55;
font-weight: 400;
color: #1f2933;
max-width: 640px;
}
@media (min-width: 901px) {
.ravasa-page p,
.ravasa-page li {
font-size: 22px;
font-weight: 400;
}
}
/* ===============================
BUTTONS
================================ */
.btn {
background: #f37021;
color: #fff;
padding: 18px 38px; /* ⬅ bigger */
font-size: 16px; /* ⬅ readable */
font-weight: 600;
border-radius: 8px;
text-decoration: none;
display: inline-flex;
align-items: center;
justify-content: center;
transition: background 0.25s ease;
border: none;
outline: none;
box-shadow: none;
cursor: pointer;
}
.btn,
.btn-outline {
height: 52px; /* 🔑 lock height */
padding: 0 34px; /* horizontal only */
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 16px;
font-weight: 600;
line-height: 1;
}
.btn:focus-visible {
outline: 2px solid rgba(243, 112, 33, 0.6);
outline-offset: 2px;
}
.btn:hover {
background: #2f7d6a;
color: #fff;
}
.phone-link {
font-size: 16px;
font-weight: 600;
color: #0b3c5d;
text-decoration: none;
}
/* ===============================
IMAGE HOVER
================================ */
img {
transition: transform 0.35s ease;
}
img:hover {
transform: translateY(-6px) scale(1.015);
}
/* ===============================
HERO
================================ */
.hero {
width: 100vw;
margin-left: calc(50% - 50vw);
padding: 28px 0 64px;
background: linear-gradient(180deg, #ffffff, #f6f9fb);
}
.hero-grid {
display: grid;
grid-template-columns: 1.2fr 0.8fr;
gap: 72px;
align-items: flex-end;
}
.hero-content {
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.hero-cta {
display: flex;
align-items: center;
gap: 24px;
margin-top: 24px;
}
.hero-reviews {
font-size: 16px;
font-weight: 700;
text-align: center;
color: #2f5e5a;
}
.hero-reviews span {
display: block;
}
.hero-image-wrap {
position: relative;
}
.hero-image {
width: 90%;
max-width: 460px;
height: 460px;
object-fit: cover;
border-radius: 240px 240px 0 0;
}
.hero-image-wrap {
position: relative;
}
/* Team floating card */
.hero-team {
position: absolute;
top: -28px;
right: -24px;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
z-index: 10;
}
/* Profile photo */
.hero-team .team-pfp {
width: 92px;
height: 92px;
border-radius: 50%;
object-fit: cover;
border: 3px solid #fff;
box-shadow: 0 6px 18px rgba(0,0,0,0.18);
}
/* Connect button */
.hero-team .team-connect {
background: #6a8f8b;
color: #fff;
font-size: 13px;
font-weight: 600;
padding: 8px 14px;
border-radius: 999px;
text-decoration: none;
white-space: nowrap;
transition: background 0.25s ease, transform 0.2s ease;
}
.hero-team .team-connect:hover {
background: #f37021;
transform: translateY(-2px);
}
/* Mobile scaling */
@media (max-width: 900px) {
.hero-team {
top: -14px;
right: -12px;
}
.hero-team .team-pfp {
width: 68px;
height: 68px;
}
.hero-team .team-connect {
font-size: 12px;
padding: 6px 12px;
}
}
/* ===============================
HERO SLIDESHOW
================================ */
.hero-slideshow {
position: relative;
width: 460px;
height: 460px;
border-radius: 28px;
overflow: hidden;
background: #e9efee;
}
.hero-slideshow .slide {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0;
transition: opacity 0.9s ease;
}
.hero-slideshow .slide.active {
opacity: 1;
}
/* Badge stays clean */
.hero-badge {
z-index: 5;
}
/* ===============================
REVIEWS
================================ */
.reviews {
padding: 96px 0;
}
@media (min-width: 901px) {
.reviews h3 {
font-size: 38px;
line-height: 1.15;
font-weight: 700;
}
}
.review-track {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 32px;
margin-top: 48px;
}
.review {
background: #f2f6f5;
padding: 28px;
border-radius: 14px;
}
.review-head {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 12px;
}
.review-head img {
width: 36px;
height: 36px;
border-radius: 50%;
}
/* ===============================
SEO
================================ */
.seo {
width: 100vw;
margin-left: calc(50% - 50vw);
background:
linear-gradient(180deg, #ffffff, #f4f8f7),
repeating-linear-gradient(
45deg,
rgba(106,143,139,0.05),
rgba(106,143,139,0.05) 2px,
transparent 2px,
transparent 6px
);
padding: 96px 0;
}
.seo-title {
text-align: center;
margin-bottom: 16px;
}
.ravasa-page h3.seo-sub {
font-size: 22px;
font-weight: 400;
color: #4f6f6b;
text-align: center;
line-height: 1.4;
margin-bottom: 64px;
}
.seo-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 64px;
align-items: start;
margin-bottom: 72px;
}
.seo img {
width: 100%;
max-height: 400px;
object-fit: cover;
border-radius: 16px;
}
@media (min-width: 901px) {
.seo img {
max-height: 460px; /* try 520–600px */
}
}
.seo-cta {
display: flex;
gap: 24px;
align-items: center;
margin-top: 24px;
}
.btn-outline {
background: #0b3c5d; /* blue */
color: #fff;
}
.btn-outline:hover {
background: #f37021; /* orange hover (inverse) */
}
/* ===============================
ROOF TYPES (LEFT-ALIGNED INTRO)
================================ */
.roof-types {
padding: 96px 0;
background: #ffffff;
}
.roof-types h2 {
text-align: center;
margin-bottom: 42px;
}
.roof-types-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 32px;
}
.roof-type {
text-align: center;
padding: 28px 22px;
background: #f6f9fb;
border-radius: 16px;
}
.roof-type img {
height: 80px;
margin-bottom: 16px;
}
.roof-type h3 {
font-size: 20px;
margin-bottom: 8px;
}
.roof-type p {
font-size: 16px;
line-height: 1.5;
margin: 0 auto;
}
/* ROOF TYPES — CLICKABLE CARDS */
.roof-types-grid a.roof-type {
display: block;
text-decoration: none;
color: inherit;
cursor: pointer;
}
/* Hover polish */
.roof-types-grid a.roof-type:hover {
transform: translateY(-4px);
}
.roof-types-grid a.roof-type:hover h3 {
color: #1a7f5a;
}
/* ===============================
SERVICES
================================ */
.services {
padding: 96px 0 72px;
}
.services-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
margin-top: 48px;
}
.service {
position: relative;
height: 220px;
border-radius: 16px;
overflow: hidden;
}
.service::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(to top, rgba(0,0,0,.55), rgba(0,0,0,.15));
}
.service img {
width: 100%;
height: 100%;
object-fit: cover;
}
.service span {
position: absolute;
bottom: 16px;
left: 16px;
color: #fff;
font-weight: 700;
z-index: 2;
}
/* SERVICES — CLICKABLE CARDS */
.services-grid a.service {
display: block;
text-decoration: none;
color: inherit;
position: relative;
}
/* Hover lift */
.services-grid a.service:hover img {
transform: scale(1.05);
}
/* Cursor clarity */
.services-grid a.service {
cursor: pointer;
}
/* ===============================
FAQ
================================ */
.faq {
padding: 64px 0;
background: linear-gradient(180deg, #ffffff, #f6f9fb);
}
.faq-item {
border-bottom: 1px solid #ddd;
padding: 18px 0;
cursor: pointer;
}
.faq-item p {
display: none;
margin-top: 12px;
}
.faq-item.open p {
display: block;
}
/* ===============================
CTA
================================ */
.cta {
width: 100vw;
margin-left: calc(50% - 50vw);
background: #0e2f2d;
color: #fff;
padding: 96px 0;
}
.cta h2 {
color: #fff;
text-align: center;
}
.cta-steps {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 32px;
margin: 48px 0;
text-align: center;
}
.cta-actions {
display: flex;
align-items: center;
gap: 32px;
justify-content: center;
}
.cta .phone-link {
color: #fff;
}
@media (min-width: 901px) {
.cta-steps > div {
font-size: 20px; /* increase as needed */
line-height: 1.5;
}
}
/* ===============================
TEAM SPOTLIGHT
================================ */
.team-spotlight {
padding: 72px 0;
background: #ffffff;
}
.team-grid {
display: grid;
grid-template-columns: 0.9fr 1.1fr;
gap: 64px;
align-items: start;
}
.team-image {
height: 480px;
}
.team-image img {
height: 100%;
width: 100%;
object-fit: cover;
}
.team-content h2 {
margin-bottom: 20px;
}
.team-content p {
margin-bottom: 16px;
}
.team-highlight {
color: #2f5e5a;
margin-top: 12px;
}
.team-spotlight {
display: block;
}
.team-grid {
display: grid;
}
/* ===============================
CONNECT WITH TRICIA LINK
================================ */
.connect-tricia {
display: inline-flex;
align-items: center;
gap: 10px;
margin-top: 28px;
font-size: 24px;
text-decoration: none;
color: #1a7f5a;
}
.connect-tricia .arrow {
font-weight: 800;
letter-spacing: 1px;
}
.connect-tricia:hover {
opacity: 0.85;
}
/* ===============================
MORE HAPPY REVIEWS LINK (FIXED)
================================ */
.more-reviews-wrap {
width: 100%;
display: block;
text-align: center;
margin-top: 32px;
}
.more-reviews-link {
display: inline-flex;
align-items: center;
gap: 10px;
font-size: 20px;
font-weight: 600;
text-decoration: none;
color: #1a7f5a;
}
.more-reviews-link:hover {
opacity: 0.85;
}
.reviews .more-reviews-link {
justify-content: center;
}
/* ===============================
FINAL CTA
================================ */
.final-cta {
width: 100vw;
margin-left: calc(50% - 50vw);
padding: 96px 0;
margin-bottom: 0 !important;
padding-bottom: 0;
}
.final-cta-inner {
max-width: 1320px;
margin: 0 auto;
background: #4a8eca;
border-radius: 48px 48px 0 0; /* top rounded, bottom flush */
padding: 72px 72px 96px; /* extra bottom padding */
}
/* TOP */
.final-cta-top {
display: grid;
grid-template-columns: 1.4fr 0.6fr;
gap: 64px;
align-items: start;
}
.final-cta-top h2 {
font-size: clamp(40px, 4.5vw, 56px);
line-height: 1.05;
margin-bottom: 0;
}
.final-cta-actions {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 20px;
}
.final-cta-text {
font-size: 18px;
color: #0b3c5d;
}
.final-cta-phone {
font-weight: 800;
font-size: 20px;
color: #000;
text-decoration: none;
}
/* BUTTON */
.final-cta-btn {
background: #f37021;
padding: 16px 36px;
font-size: 16px;
}
/* DIVIDER */
.final-cta-divider {
margin: 56px 0;
height: 1px;
background: rgba(0,0,0,0.15);
position: relative;
}
/* BOTTOM */
.final-cta-bottom {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0px;
}
.trust-label {
font-size: 14px;
font-weight: 700;
margin-bottom: 12px;
}
.trust-logos {
display: flex;
gap: 20px;
}
.trust-logos img {
height: 42px;
width: auto;
}
.final-cta-stat {
text-align: right;
}
.stat-number {
font-size: 48px;
font-weight: 900;
display: block;
}
.stat-text {
font-size: 16px;
color: #0b3c5d;
}
/* OVERLAY */
.modal-overlay {
position: fixed;
inset: 0;
display: none; /* controlled by JS */
align-items: center; /* ✅ vertical center */
justify-content: center; /* ✅ horizontal center */
background: rgba(0,0,0,0.55);
z-index: 999999; /* higher than Elementor headers */
}
/* MODAL BOX */
.modal-box {
background: #fff;
width: 92%;
max-width: 640px;
max-height: 85vh;
overflow-y: auto;
padding: 32px;
border-radius: 20px;
position: relative;
}
/* CLOSE BUTTON */
.modal-close {
position: absolute;
top: 12px;
right: 16px;
font-size: 26px;
background: none;
border: none;
cursor: pointer;
}
/* LOCK BODY SCROLL */
body.modal-open {
overflow: hidden;
}
/* FORCE HEADER BELOW MODAL */
body.modal-open header,
body.modal-open .site-header,
body.modal-open .elementor-location-header {
z-index: 0 !important;
}
/* MODAL HEADER BRANDING */
.modal-header {
text-align: center;
margin-bottom: 12px;
}
.modal-logo {
max-width: 100px;
margin-bottom: 10px;
}
.modal-header h3 {
font-size: 22px;
margin-bottom: 6px;
}
.modal-header p {
font-size: 15px;
color: #5f6f73;
}
/* ===============================
MOBILE
================================ */
@media (max-width: 900px) {
/* ------------------------------------------------
GLOBAL OFFSET FIX (prevents hero being pushed down)
------------------------------------------------ */
main#main,
body {
margin-top: 0 !important;
padding-top: 0 !important;
}
@media (max-width: 900px) {
.ravasa-page h2 {
font-size: 32px;
}
}
/* ------------------------------------------------
SECTION SPACING (MOBILE RHYTHM)
------------------------------------------------ */
.hero {
padding: 28px 0 40px;
}
.reviews { padding: 48px 0; }
.seo {
padding: 40px 0 24px; /* controlled bottom */
}
/* ===============================
SEO LIST FIX (MOBILE SAFE)
================================ */
.seo-list {
padding-left: 20px;
margin: 16px 0 0;
}
.seo-list li {
margin-bottom: 10px;
list-style-position: inside;
}
/* Mobile tightening */
@media (max-width: 900px) {
.seo-list {
padding-left: 16px;
}
.seo-list li {
font-size: 18px;
line-height: 1.5;
}
}
.services {
padding: 32px 0 40px; /* FIXED: no extra top gap */
}
.faq { padding: 56px 0; }
.cta { padding: 56px 0; }
.final-seo { padding: 48px 0; }
/* ------------------------------------------------
HERO (LOCKED — matches your good version)
------------------------------------------------ */
.hero-grid {
grid-template-columns: 1fr;
gap: 24px;
text-align: center;
}
.hero-image-wrap { order: -1; }
.hero-image {
width: 100%;
height: 220px;
margin-bottom: 12px;
}
@media (max-width: 900px) {
.hero-slideshow {
width: 320px;
height: 280px;
margin: 0 auto;
}
.ravasa-page .hero h1 {
font-size: 36px;
line-height: 1.15;
font-weight: 600;
letter-spacing: -0.02em;
max-width: 320px; /* ✅ your fix */
margin-left: auto;
margin-right: auto;
}
.hero-content { align-items: center; }
.hero-reviews { font-size: 14px; }
/* ------------------------------------------------
BUTTONS (MOBILE SCALE — NOT GIANT)
------------------------------------------------ */
.btn {
padding: 12px 22px;
font-size: 15px;
}
.phone-link {
font-size: 18px;
}
/* ------------------------------------------------
REVIEWS
------------------------------------------------ */
.review-track {
display: flex;
overflow-x: auto;
gap: 20px;
}
.review {
min-width: 280px;
}
@media (min-width: 900px) {
.more-reviews-wrap {
margin-top: 24px;
text-align: left;
}
}
/* ------------------------------------------------
SEO (THIS IS THE IMPORTANT FIX)
------------------------------------------------ */
.seo-row {
grid-template-columns: 1fr;
gap: 8px;
margin-bottom: 24px; /* 🔑 OVERRIDES DESKTOP 72px */
}
.seo-row img {
order: -1;
}
.seo img {
max-height: 260px;
}
@media (max-width: 900px) {
.ravasa-page h3.seo-sub {
margin-bottom: 32px;
}
}
.seo-row p {
margin-bottom: 8px; /* paragraph spacing controlled */
}
@media (max-width: 900px) {
.seo-row p {
margin-top: 16px;
}
}
/* MOBILE — SEO buttons 65% / 35% */
.seo-cta {
display: flex;
flex-direction: row;
width: 100%;
gap: 12px;
}
.seo-cta .btn:first-child {
flex: 0 0 50%;
}
.seo-cta .btn:last-child {
flex: 0 0 50%;
}
@media (max-width: 900px) {
.roof-types-grid {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
}
.roof-type {
width: 100%;
}
}
/* ------------------------------------------------
SERVICES (FIXES BIG GAP ABOVE GRID)
------------------------------------------------ */
.services-grid {
grid-template-columns: repeat(2, 1fr);
margin-top: 16px; /* was too large */
}
.service {
height: 180px;
}
@media (max-width: 900px) {
.services-grid a.service:active {
transform: scale(0.98);
}
}
@media (max-width: 900px) {
.cta-steps {
grid-template-columns: 1fr; /* stack vertically */
gap: 20px;
}
}
/* ------------------------------------------------
Team Spotlight (MOBILE)
------------------------------------------------ */
.team-spotlight {
padding: 40px 0 0;
}
.team-grid {
grid-template-columns: 1fr;
gap: 24px;
text-align: center;
}
.team-image {
height: auto; /* 🔑 VERY IMPORTANT */
}
.team-image img {
display: block;
width: 100%;
max-width: 240px;
height: auto; /* 🔑 PREVENTS TALL IMAGE */
margin: 0 auto;
object-fit: contain; /* portrait-safe */
}
@media (max-width: 900px) {
.final-cta-inner {
padding: 44px 24px 64px;
border-radius: 32px 32px 0 0;
}
@media (max-width: 900px) {
.final-cta .inner {
padding-bottom: 0;
margin-bottom: 0;
}
/* ------------------------------------------------
FINAL CTA (MOBILE)
------------------------------------------------ */
.final-cta-top {
grid-template-columns: 1fr;
gap: 32px;
text-align: center;
}
.final-cta-actions {
align-items: center;
}
.final-cta-divider {
margin: 40px 0;
}
.final-cta-bottom {
flex-direction: column;
text-align: center;
gap: 0px;
}
.final-cta-stat {
text-align: center;
}
.trust-logos {
justify-content: center;
flex-wrap: wrap;
}
}
@media (max-width: 900px) {
.final-cta-actions {
align-items: center;
text-align: center;
}
}
@media (max-width: 900px) {
.final-cta-text {
text-align: center;
max-width: 100%;
}
}
@media (max-width: 900px) {
.modal-overlay {
align-items: flex-start;
padding-top: 0;
}
.modal-box {
width: 100%;
height: 100vh;
max-height: 100vh;
border-radius: 0;
padding: 24px 20px 32px;
overflow-y: auto;
}
.modal-close {
top: 16px;
right: 16px;
}
.modal-logo {
max-width: 120px;
}
}
document.addEventListener("DOMContentLoaded", function () {
const slides = document.querySelectorAll(".hero-slideshow .slide");
const teamPfp = document.querySelector(".team-pfp");
const teamName = document.querySelector(".team-connect span");
const teamLink = document.querySelector(".team-connect");
const teamData = [
{
name: "Don",
photo: "https://ravasagroup.com/wp-content/uploads/2026/01/DSC09951-Edit-copy-scaled.jpg",
link: "/contact"
},
{
name: "Tricia",
photo: "https://ravasagroup.com/wp-content/uploads/2026/01/IMG_2896.jpeg",
link: "/contact"
},
{
name: "Devin",
photo: "https://ravasagroup.com/wp-content/uploads/2026/01/Devin-scaled.jpg",
link: "/contact"
}
];
let current = 0;
function updateTeam(index) {
teamPfp.src = teamData[index].photo;
teamName.textContent = teamData[index].name;
teamLink.href = teamData[index].link;
}
// Init
updateTeam(0);
if (slides.length {
slides[current].classList.remove("active");
current = (current + 1) % slides.length;
slides[current].classList.add("active");
updateTeam(current);
}, 3500);
});
function openModal() {
const modal = document.getElementById("schedule-modal");
modal.style.display = "flex";
document.body.classList.add("modal-open");
}
function closeModal() {
const modal = document.getElementById("schedule-modal");
modal.style.display = "none";
document.body.classList.remove("modal-open");
}
document.addEventListener("DOMContentLoaded", function () {
document.querySelectorAll(".schedule-trigger").forEach(trigger => {
trigger.addEventListener("click", function (e) {
e.preventDefault();
openModal();
});
});
});
Roofing Services in Belleair
Dependable roofing for Belleair homeowners—repairs, replacements, and inspections done right by a local team focused on quality and clear communication.
Schedule Online
★★★★★
50+ Happy Reviews
Happy Customer Reviews
Renee F. ★★★★★ Don & his team did an excellent job for my client at a townhouse in Seminole, FL. Don & his crew were knowledgeable, friendly, easy to work with and professional. I highly recommend Ravasa Construction Group!
Elisa S. ★★★★★ We used Ravasa for our home's new roof and interior renovations and we highly recommend them. The team is professional and friendly and their leader, Don goes above and beyond. He was very communicative and transparent and just an all-around great person!
Rob S. ★★★★★ I have known Don Campbell with Ravasa for many years, he has an extensive history that serves him excellently in construction as well as specialties in roofing and electrical and exterior work.
Why homeowners in Belleair choose us for roofing
Ravasa makes roofing simple—honest inspections, clear estimates, and high-quality workmanship built for long-term protection.
Belleair homeowners trust Ravasa for roofing that’s built to handle Florida heat, storms, and years of wear. Whether your roof is aging, has missing shingles, leaks after heavy rain, or shows damage from wind, salt air, or fallen branches, we deliver reliable solutions with honest inspections and clear pricing. From repairs to full replacements, we focus on clean work and lasting protection. Follow our work on Instagram and see recent projects and updates.
Instagram
Roofing projects in Belleair should feel organized and stress-free. Here’s how Ravasa typically handles the process from start to finish:
Schedule inspection and identify leaks, wear, or storm damage
Receive a detailed quote with clear material and labor options
Confirm project scope and timeline, then order materials
Complete installation/repair, clean up debris, and run a final walk-through
Related roofing services offered in Belleair
From small repairs to full replacements, Ravasa provides roofing services designed to protect your home and extend roof life with expert craftsmanship.
Common questions about roofing in Belleair
How do I know if I need a roof repair or full replacement?
For roofing in Belleair, repairs are often enough when damage is isolated—like a small leak, missing shingles, or flashing issues. If your roof is older, has widespread wear, repeated leaks, or storm damage across multiple areas, a replacement may be the safer long-term option.
How long does a roofing job usually take?
Most Belleair roofing repairs can be completed in a single visit, depending on the scope. Full roof replacements commonly take 1–3 days, but timing varies based on roof size, material type, and weather conditions.
Do you help with storm or wind damage inspections?
Yes—Ravasa provides roofing inspections in Belleair for storm-related issues like lifted shingles, punctures, leaks, and hidden water intrusion. We document findings clearly and explain repair vs replacement options without pressure.
What roofing materials work best for coastal areas? In Belleair, roofing materials should handle wind, heat, moisture, and salt air. Architectural shingles and metal roofing are popular choices, and we’ll recommend options based on your home’s structure, budget, and long-term durability needs.
Is an inspection worth it even if I don’t see a leak?
Absolutely—roofing issues in Belleair often start small and don’t show up inside your home until damage spreads. A professional inspection can catch lifted shingles, failing seals, or soft spots early, helping prevent expensive repairs later.
Get Started in 3 Easy Steps
1. Schedule an appointment to speak with a Belleair roofing expert.
2. Receive a quick and accurate estimate
3. We start & complete your roofing project.
Meet the local experts behind our roofing work
Tricia leads Ravasa with a strong focus on quality, communication, and consistent results. Our team is local to the Tampa Bay area and dedicated to helping Belleair homeowners protect what matters with dependable roofing work.
✔ Tricia helps guide the team and ensures every customer gets clear communication
✔ Experienced roofing crew delivering clean, durable workmanship
✔ Local roots with a long-term commitment to Belleair homeowners
Connect with Tricia ➡️
Let’s Talk About Your Roofing Needs in Belleair
Ready to speak with a roofing expert?
(727) 565-2966
Schedule Service →
30+
Years serving Florida homeowners