ABC Commercial Roofing | Commercial & Industrial Roofing in Pittsburgh, PA
:root{
–bg:#0b1220;
–card:#0f1b33;
–muted:#93a4c7;
–text:#eaf0ff;
–accent:#f5c518; /* gold */
–accent2:#111111; /* black */
–line:rgba(255,255,255,.10);
–shadow: 0 18px 50px rgba(0,0,0,.45);
–radius: 18px;
–radius2: 26px;
–max: 1200px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
margin:0;
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, “Apple Color Emoji”,”Segoe UI Emoji”;
color:var(–text);
background:
radial-gradient(1200px 700px at 15% -10%, rgba(245,197,24,.18), transparent 55%),
radial-gradient(900px 600px at 90% 0%, rgba(147,164,199,.18), transparent 60%),
linear-gradient(180deg, #070b14 0%, #0b1220 55%, #060a12 100%);
line-height:1.5;
overflow-x:hidden;
}
a{color:inherit}
.container{width:min(var(–max), calc(100% – 44px)); margin:0 auto}
.topbar{
position:sticky; top:0; z-index:50;
backdrop-filter: blur(12px);
background: rgba(11,18,32,.66);
border-bottom: 1px solid var(–line);
}
.topbar-inner{
display:flex; align-items:center; justify-content:space-between;
padding:14px 0;
gap:14px;
}
.brand{
display:flex; align-items:center; gap:12px;
text-decoration:none;
}
.mark{
width:44px; height:44px; border-radius:14px;
background:
linear-gradient(135deg, rgba(245,197,24,.95), rgba(245,197,24,.25)),
radial-gradient(18px 18px at 30% 25%, rgba(255,255,255,.5), transparent 55%),
#000;
box-shadow: 0 10px 30px rgba(245,197,24,.18);
border:1px solid rgba(245,197,24,.35);
position:relative;
overflow:hidden;
}
.mark:after{
content:””;
position:absolute; inset:-40% -30%;
background: linear-gradient(120deg, rgba(255,255,255,.28), transparent 55%);
transform: rotate(18deg);
}
.brand h1{
font-size:16px; margin:0;
letter-spacing:.2px;
}
.brand .sub{
display:block;
font-size:12px;
color:var(–muted);
margin-top:2px;
}
.nav{
display:flex; align-items:center; gap:10px; flex-wrap:wrap;
}
.chip{
display:inline-flex; align-items:center; gap:8px;
padding:10px 12px;
border:1px solid var(–line);
background: rgba(255,255,255,.03);
border-radius:999px;
text-decoration:none;
font-size:13px;
color:var(–text);
transition:.2s ease;
}
.chip:hover{transform: translateY(-1px); border-color: rgba(245,197,24,.35)}
.chip strong{font-weight:700}
.btn{
display:inline-flex; align-items:center; justify-content:center;
gap:10px;
padding:12px 14px;
border-radius:999px;
text-decoration:none;
font-weight:700;
font-size:14px;
border:1px solid rgba(245,197,24,.45);
background: linear-gradient(135deg, rgba(245,197,24,.95), rgba(245,197,24,.55));
color:#111;
box-shadow: 0 14px 32px rgba(245,197,24,.18);
transition:.2s ease;
cursor:pointer;
}
.btn:hover{transform: translateY(-1px); filter: brightness(1.03)}
.btn.secondary{
background: rgba(255,255,255,.04);
color:var(–text);
border:1px solid var(–line);
box-shadow:none;
font-weight:650;
}
.btn.secondary:hover{border-color: rgba(255,255,255,.18)}
.hero{
padding:34px 0 10px;
}
.hero-grid{
display:grid;
grid-template-columns: 1.15fr .85fr;
gap:22px;
align-items:stretch;
}
@media (max-width: 940px){
.hero-grid{grid-template-columns:1fr}
.nav{display:none}
}
.card{
background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02));
border: 1px solid var(–line);
border-radius: var(–radius2);
box-shadow: var(–shadow);
overflow:hidden;
}
.hero-left{
padding:28px;
position:relative;
}
.badge{
display:inline-flex; align-items:center; gap:10px;
padding:8px 12px;
border-radius:999px;
border:1px solid rgba(245,197,24,.35);
background: rgba(245,197,24,.09);
color: var(–text);
font-size:13px;
width:fit-content;
}
.badge span{
width:10px; height:10px; border-radius:999px;
background: var(–accent);
box-shadow: 0 0 0 6px rgba(245,197,24,.15);
}
.hero-left h2{
font-size:46px;
line-height:1.08;
margin:16px 0 12px;
letter-spacing:-.8px;
}
@media (max-width: 520px){
.hero-left h2{font-size:36px}
}
.hero-left p{
margin:0 0 18px;
color: var(–muted);
font-size:16px;
max-width: 58ch;
}
.hero-actions{
display:flex; gap:12px; flex-wrap:wrap;
margin-top:16px;
}
.hero-stats{
display:grid;
grid-template-columns: repeat(3, 1fr);
gap:10px;
margin-top:18px;
}
@media (max-width: 520px){
.hero-stats{grid-template-columns:1fr}
}
.stat{
border:1px solid var(–line);
background: rgba(0,0,0,.18);
border-radius: 16px;
padding:12px 12px;
}
.stat b{display:block; font-size:14px}
.stat span{display:block; font-size:12px; color:var(–muted); margin-top:4px}
.hero-right{
display:flex;
flex-direction:column;
min-height: 100%;
}
.photo-stack{
display:grid;
grid-template-rows: 1.25fr .9fr;
height:100%;
}
.photo{
position:relative;
overflow:hidden;
border-bottom: 1px solid var(–line);
}
.photo:last-child{border-bottom:none}
.photo img{
width:100%;
height:100%;
object-fit:cover;
display:block;
filter: saturate(1.05) contrast(1.05);
transform: scale(1.02);
}
.photo:before{
content:””;
position:absolute; inset:0;
background: linear-gradient(180deg, rgba(0,0,0,.10), rgba(0,0,0,.55));
pointer-events:none;
}
.photo .caption{
position:absolute; left:16px; right:16px; bottom:14px;
display:flex; align-items:flex-end; justify-content:space-between;
gap:12px;
}
.caption .captext{
font-size:13px;
color: rgba(234,240,255,.92);
}
.captext b{display:block; font-size:14px; color:#fff}
.cap-pill{
font-size:12px;
padding:8px 10px;
border-radius:999px;
background: rgba(17,17,17,.72);
border:1px solid rgba(245,197,24,.35);
color:#fff;
white-space:nowrap;
}
.section{
padding:26px 0;
}
.section h3{
font-size:22px;
margin:0 0 10px;
letter-spacing:-.2px;
}
.muted{color:var(–muted)}
.grid-3{
display:grid;
grid-template-columns: repeat(3, 1fr);
gap:14px;
}
@media (max-width: 940px){
.grid-3{grid-template-columns:1fr}
}
.service{
padding:18px;
border-radius: var(–radius);
border:1px solid var(–line);
background: rgba(255,255,255,.03);
min-height: 142px;
}
.service .icon{
width:40px; height:40px; border-radius:14px;
background: rgba(245,197,24,.12);
border:1px solid rgba(245,197,24,.35);
display:grid; place-items:center;
margin-bottom:12px;
color: var(–accent);
font-weight:900;
}
.service h4{margin:0 0 8px; font-size:16px}
.service p{margin:0; color:var(–muted); font-size:14px}
.cta{
display:flex; align-items:center; justify-content:space-between;
gap:14px; flex-wrap:wrap;
padding:18px;
border-radius: var(–radius2);
border:1px solid rgba(245,197,24,.35);
background: linear-gradient(135deg, rgba(245,197,24,.12), rgba(255,255,255,.02));
}
.cta b{font-size:16px}
.cta small{display:block; color:var(–muted); margin-top:4px}
.footer{
padding:22px 0 34px;
border-top:1px solid var(–line);
margin-top: 14px;
color: var(–muted);
font-size:13px;
}
/* Modal */
.modal-backdrop{
position:fixed; inset:0;
background: rgba(0,0,0,.62);
display:none;
align-items:center;
justify-content:center;
padding:18px;
z-index:1000;
}
.modal{
width:min(560px, 100%);
border-radius: 22px;
border:1px solid rgba(255,255,255,.14);
background: linear-gradient(180deg, rgba(15,27,51,.96), rgba(11,18,32,.96));
box-shadow: 0 28px 70px rgba(0,0,0,.6);
overflow:hidden;
}
.modal-head{
padding:16px 18px;
display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
border-bottom:1px solid var(–line);
}
.modal-head h4{margin:0; font-size:16px}
.modal-head p{margin:6px 0 0; color:var(–muted); font-size:13px}
.xbtn{
background: transparent;
color: rgba(234,240,255,.85);
border:1px solid rgba(255,255,255,.16);
border-radius: 12px;
width:40px; height:40px;
cursor:pointer;
transition:.15s ease;
}
.xbtn:hover{border-color: rgba(245,197,24,.35); transform: translateY(-1px)}
.modal-body{padding:16px 18px}
form{display:grid; gap:12px}
.row{display:grid; gap:10px; grid-template-columns: 1fr 1fr}
@media (max-width: 520px){.row{grid-template-columns:1fr}}
label{font-size:12px; color: rgba(234,240,255,.88)}
input, select, textarea{
width:100%;
padding:12px 12px;
border-radius: 14px;
border:1px solid rgba(255,255,255,.14);
background: rgba(0,0,0,.24);
color: var(–text);
outline:none;
}
input:focus, select:focus, textarea:focus{
border-color: rgba(245,197,24,.55);
box-shadow: 0 0 0 6px rgba(245,197,24,.12);
}
textarea{min-height: 92px; resize:vertical}
.modal-foot{
padding:14px 18px 18px;
display:flex; align-items:center; justify-content:space-between;
gap:12px; flex-wrap:wrap;
}
.note{color:var(–muted); font-size:12px; max-width: 44ch}
.toast{
position: fixed;
left: 50%;
bottom: 22px;
transform: translateX(-50%);
background: rgba(17,17,17,.92);
border: 1px solid rgba(245,197,24,.35);
color: #fff;
padding: 12px 14px;
border-radius: 14px;
box-shadow: 0 18px 40px rgba(0,0,0,.45);
display:none;
z-index: 1100;
font-size: 13px;
max-width: min(520px, calc(100% – 34px));
}
Pittsburgh’s commercial & industrial roofing team
Commercial & Industrial Roofing Built for Pittsburgh Weather
ABC Commercial Roofing helps facilities, warehouses, retail centers, and property managers protect
their buildings with reliable repairs, replacements, and preventative maintenance—done safely, on schedule,
and with clear communication.
Leak Response
Fast diagnostics & targeted repairs
Flat & Low-Slope
TPO, EPDM, modified bitumen, coatings
Industrial Ready
Safety-first crews for complex sites
Commercial Roofing Systems
TPO • EPDM • Coatings • Repairs
Pittsburgh, PA
Industrial Facilities
Warehouses • Plants • Logistics
Tri-State Coverage
Commercial & Industrial Roofing Services
Roofing solutions for Pittsburgh businesses—built for durability, efficiency, and long-term performance.
01
Commercial Roof Repair
Leak detection, flashing repairs, punctures, membrane seams, storm damage, and corrective detailing.
02
Roof Replacement & Retrofits
Low-slope systems (TPO/EPDM), modified bitumen, metal retrofits, and tear-off / recover options.
03
Preventative Maintenance
Scheduled inspections, drain cleanouts, minor repairs, photo reports, and budget forecasting for owners.
04
Roof Coatings & Restoration
Extend roof life, improve reflectivity, and reduce lifecycle costs with restoration-grade coatings.
05
Flat & Low-Slope Roofing
TPO, EPDM, PVC (where applicable), insulation packages, tapered systems, and detail work done right.
06
Industrial Roofing
Large-scale roofs, penetrations, rooftop equipment coordination, and safety planning for active sites.
Serving Pittsburgh, PA and surrounding areas
Local support for Allegheny County and nearby communities. Call for availability and scheduling.
Why ABC Commercial Roofing
✓
Clear Communication
Upfront scope, honest recommendations, and photo documentation so you know exactly what’s happening.
✓
Safety-First Crews
Professional jobsite practices for occupied buildings, active facilities, and complex roof access.
✓
Built for Pittsburgh Conditions
Materials and details selected to handle wind, freeze-thaw cycles, heavy rain, and seasonal temperature swings.
Get a Free Roofing Quote
Tell us about your building in Pittsburgh (or nearby). We’ll follow up ASAP.
✕
Email
Service Needed
Select one
Leak Repair / Emergency
Commercial Roof Repair
Roof Replacement
Preventative Maintenance
Roof Coatings / Restoration
Inspection / Report
Property Type
Select one
Warehouse / Industrial
Retail / Strip Mall
Office / Commercial
Multi-Unit / HOA
Other
Job Location
Project Details
Send Request
// Year
document.getElementById(“year”).textContent = new Date().getFullYear();
// Modal controls
const backdrop = document.getElementById(“leadModalBackdrop”);
const openBtns = [“openModalBtn”,”openModalBtn2″,”openModalBtn3″].map(id => document.getElementById(id));
const closeBtns = [document.getElementById(“closeModalBtn”), document.getElementById(“closeModalBtn2”)];
function openModal(){
backdrop.style.display = “flex”;
document.body.style.overflow = “hidden”;
// focus first input
setTimeout(() => document.getElementById(“name”).focus(), 50);
}
function closeModal(){
backdrop.style.display = “none”;
document.body.style.overflow = “”;
}
openBtns.forEach(btn => btn && btn.addEventListener(“click”, openModal));
closeBtns.forEach(btn => btn && btn.addEventListener(“click”, closeModal));
// Close modal when clicking outside the dialog
backdrop.addEventListener(“click”, (e) => {
if (e.target === backdrop) closeModal();
});
// ESC to close
window.addEventListener(“keydown”, (e) => {
if (e.key === “Escape” && backdrop.style.display === “flex”) closeModal();
});
// Form handling (demo)
const form = document.getElementById(“leadForm”);
const toast = document.getElementById(“toast”);
function showToast(message){
toast.textContent = message;
toast.style.display = “block”;
clearTimeout(window.__toastTimer);
window.__toastTimer = setTimeout(() => {
toast.style.display = “none”;
}, 4200);
}
form.addEventListener(“submit”, (e) => {
e.preventDefault();
// Gather values (for connecting to a backend later)
const data = Object.fromEntries(new FormData(form).entries());
console.log(“Lead submission:”, data);
showToast(“Thanks! Your request was sent. We’ll reach out shortly.”);
form.reset();
closeModal();
/*
To make this form actually send emails/leads, connect to:
– Your backend (recommended): POST data to /api/leads
– Or a form service (Formspree, Getform, etc.)
*/
});
// Optional: open pop-up after a short delay (comment out if you don’t want auto-popup)
setTimeout(() => openModal(), 3500);