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 & 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.
Call 412-737-4524

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.

// 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);