Roof Size (Squares)
squares
approx. 2,000 sq ft
1
200
1 square = 100 sq ft
Upgrade Options
Architectural Shingles
Enhanced aesthetics & wind resistance — +$50/sq
Standing Seam Metal Florida Rec.
Hidden fasteners, premium durability — +$150/sq
Your Estimate
🏠
Asphalt Shingle
Cost-effective • 15–20 yr lifespan
Per Square
$350
Total Estimate
$7,000
* Estimates reflect square count only. Actual costs vary with pitch, tear-off, wood rot, and material prices. Call us for a precise, transparent quote.
#srp10-wrap{font-family:’Arimo’,Arial,sans-serif;background:#0d1117;border-radius:18px;padding:4px;max-width:860px;margin:40px auto;box-shadow:0 8px 40px rgba(0,0,0,.5)}
#srp10{background:linear-gradient(160deg,#0d1421 0%,#091019 100%);border-radius:16px;padding:40px 36px 32px;color:#d8d8d8}
@media(max-width:600px){#srp10{padding:28px 18px 24px}}
.srp10-header{text-align:center;margin-bottom:32px}
.srp10-title{font-size:clamp(20px,4vw,28px);font-weight:800;color:#c9a84c;margin:0 0 10px;letter-spacing:-.02em}
.srp10-sub{font-size:14px;color:#8a8a8a;margin:0;line-height:1.7}
.srp10-link{color:#c9a84c;font-weight:700;text-decoration:none}
.srp10-link:hover{text-decoration:underline}
.srp10-section{background:linear-gradient(135deg,#131b2e 0%,#0e1520 100%);border:1px solid rgba(201,168,76,.22);border-radius:14px;padding:24px 24px 18px;margin-bottom:22px}
.srp10-sec-label{display:block;font-size:12px;font-weight:700;color:#c9a84c;text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px}
.srp10-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.srp10-num{font-size:34px;font-weight:800;color:#fff;width:110px;background:#080e17;border:2px solid rgba(201,168,76,.45);border-radius:10px;padding:7px 12px;outline:none;font-family:inherit;-moz-appearance:textfield;transition:border-color .2s}
.srp10-num::-webkit-outer-spin-button,.srp10-num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.srp10-num:focus{border-color:#c9a84c;box-shadow:0 0 0 3px rgba(201,168,76,.18)}
.srp10-unit{font-size:15px;font-weight:600;color:#777}
.srp10-equiv{font-size:14px;font-weight:600;color:rgba(201,168,76,.85);margin-left:2px}
.srp10-slider-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.srp10-edge{font-size:11px;color:#555;white-space:nowrap;flex-shrink:0}
.srp10-slider{flex:1;-webkit-appearance:none;appearance:none;height:7px;border-radius:4px;outline:none;cursor:pointer;background:linear-gradient(to right,#c9a84c 10%,#1e2535 10%)}
.srp10-slider:focus{outline:2px solid #c9a84c;outline-offset:3px}
.srp10-slider::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:#c9a84c;border:3px solid #080e17;box-shadow:0 2px 8px rgba(201,168,76,.5);cursor:pointer}
.srp10-slider::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:#c9a84c;border:3px solid #080e17;box-shadow:0 2px 8px rgba(201,168,76,.5);cursor:pointer}
.srp10-note{font-size:12px;color:#555;margin:0;text-align:center}
.srp10-opts{margin-bottom:26px}
.srp10-opts-title{font-size:15px;font-weight:700;color:#fff;margin:0 0 12px}
.srp10-opts-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:540px){.srp10-opts-grid{grid-template-columns:1fr}}
.srp10-opt{display:flex;align-items:center;justify-content:space-between;gap:12px;background:linear-gradient(135deg,#131b2e,#0e1520);border:1.5px solid rgba(255,255,255,.08);border-radius:12px;padding:14px 16px;cursor:pointer;transition:border-color .2s,box-shadow .2s;user-select:none}
.srp10-opt:hover{border-color:rgba(201,168,76,.5);box-shadow:0 0 0 2px rgba(201,168,76,.1)}
.srp10-opt-blue:hover{border-color:rgba(58,123,213,.5);box-shadow:0 0 0 2px rgba(58,123,213,.1)}
.srp10-opt-info{flex:1}
.srp10-opt-name{display:block;font-size:13px;font-weight:700;color:#fff;margin-bottom:4px}
.srp10-opt-desc{display:block;font-size:12px;color:#777;line-height:1.4}
.srp10-opt-desc strong{color:#c9a84c}
.srp10-opt-blue .srp10-opt-desc strong{color:#5b9bd5}
.srp10-badge{display:inline-block;background:linear-gradient(90deg,#c9a84c,#a07c28);color:#fff;font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:20px;margin-left:6px;vertical-align:middle}
.srp10-tog-wrap{position:relative;width:48px;height:26px;flex-shrink:0}
.srp10-cb{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1}
.srp10-tog{position:absolute;inset:0;background:#1e2535;border-radius:26px;pointer-events:none;transition:background .25s}
.srp10-tog::before{content:”;position:absolute;width:20px;height:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .25s;box-shadow:0 1px 4px rgba(0,0,0,.4)}
.srp10-cb:checked + .srp10-tog{background:#c9a84c}
.srp10-cb:checked + .srp10-tog-blue{background:#3a7bd5}
.srp10-cb:checked + .srp10-tog::before{transform:translateX(22px)}
.srp10-cb:focus-visible + .srp10-tog{outline:2px solid #c9a84c;outline-offset:2px;border-radius:26px}
.srp10-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:28px}
.srp10-btn{font-size:15px;font-weight:800;font-family:’Arimo’,Arial,sans-serif;padding:14px 36px;border:none;border-radius:10px;cursor:pointer;letter-spacing:.03em;transition:background .2s,transform .1s,box-shadow .2s}
.srp10-btn:active{transform:scale(.97)}
.srp10-btn:focus-visible{outline:3px solid #fff;outline-offset:3px}
.srp10-btn-primary{background:linear-gradient(135deg,#c9a84c,#a07c28);color:#fff;box-shadow:0 4px 18px rgba(201,168,76,.38)}
.srp10-btn-primary:hover{box-shadow:0 6px 26px rgba(201,168,76,.55);background:linear-gradient(135deg,#d9b85c,#b08c38)}
.srp10-btn-reset{background:#1a2236;color:#888;border:1.5px solid rgba(255,255,255,.1)}
.srp10-btn-reset:hover{background:#1f2a42;color:#ccc;border-color:rgba(255,255,255,.2)}
#srp10-results{margin-bottom:28px}
.srp10-res-title{font-size:18px;font-weight:800;color:#fff;margin:0 0 16px;text-align:center}
.srp10-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:14px}
@media(max-width:540px){.srp10-cards{grid-template-columns:1fr}}
.srp10-card{border-radius:12px;overflow:hidden;border:1.5px solid rgba(255,255,255,.07);background:linear-gradient(160deg,#131b2e,#0b1019);box-shadow:0 4px 18px rgba(0,0,0,.3)}
.srp10-card-hd{background:linear-gradient(135deg,#001f3f,#071526);padding:14px 18px;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.05)}
.srp10-card-icon{font-size:20px}
.srp10-card-name{font-size:16px;font-weight:800;color:#fff}
.srp10-card-tag{font-size:12px;color:#c9a84c;font-weight:600;margin:0;padding:9px 18px;background:rgba(201,168,76,.06);border-bottom:1px solid rgba(255,255,255,.04)}
.srp10-card-metal .srp10-card-tag{color:#5b9bd5;background:rgba(58,123,213,.06)}
.srp10-card-body{padding:16px 18px;display:flex;flex-direction:column;gap:10px}
.srp10-stat{display:flex;justify-content:space-between;align-items:baseline}
.srp10-stat-lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#555}
.srp10-stat-val{font-size:22px;font-weight:800;color:#fff}
.srp10-stat-total .srp10-stat-val{font-size:30px;color:#c9a84c}
.srp10-card-metal .srp10-stat-total .srp10-stat-val{color:#5b9bd5}
.srp10-disc{font-size:12px;color:#555;line-height:1.7;background:rgba(201,168,76,.05);border-left:3px solid #c9a84c;border-radius:0 7px 7px 0;padding:10px 14px;margin:0}
.srp10-cta-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:14px;margin-top:24px}
.srp10-cta{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#131b2e,#0e1520);border:1.5px solid rgba(201,168,76,.28);border-radius:30px;padding:9px 20px;font-size:13px;font-weight:700;color:#d8d8d8;text-decoration:none;transition:background .2s,border-color .2s}
.srp10-cta:hover{background:#1a2236;border-color:#c9a84c;color:#fff}
.srp10-foot{text-align:center;font-size:11px;color:#444;margin:0;line-height:1.7}
(function(){
‘use strict’;
var S_BASE=350,S_UP=50,M_BASE=800,M_UP=150,MIN=1,MAX=200,DEF=20;
function clamp(v){return Math.max(MIN,Math.min(MAX,Math.round(v)));}
function fmt(n){return ‘$’+Math.round(n).toLocaleString(‘en-US’);}
function grad(slider){
var pct=((parseFloat(slider.value)-MIN)/(MAX-MIN))*100;
slider.style.background=’linear-gradient(to right,#c9a84c 0%,#c9a84c ‘+pct+’%,#1e2535 ‘+pct+’%,#1e2535 100%)’;
slider.setAttribute(‘aria-valuenow’,slider.value);
}
function sync(sq){
sq=clamp(sq);
var n=document.getElementById(‘srp10-num’);
var s=document.getElementById(‘srp10-slider’);
var e=document.getElementById(‘srp10-equiv’);
if(n) n.value=sq;
if(s){s.value=sq;grad(s);}
if(e) e.textContent=’approx. ‘+(sq*100).toLocaleString(‘en-US’)+’ sq ft’;
}
function calc(){
var n=document.getElementById(‘srp10-num’);
var a=document.getElementById(‘srp10-arch’);
var b=document.getElementById(‘srp10-seam’);
if(!n) return;
var sq=clamp(parseInt(n.value,10)||DEF);
var sp=S_BASE+(a&&a.checked?S_UP:0);
var mp=M_BASE+(b&&b.checked?M_UP:0);
function el(id){return document.getElementById(id);}
if(el(‘srp10-s-psq’)) el(‘srp10-s-psq’).textContent=fmt(sp);
if(el(‘srp10-s-tot’)) el(‘srp10-s-tot’).textContent=fmt(sq*sp);
if(el(‘srp10-m-psq’)) el(‘srp10-m-psq’).textContent=fmt(mp);
if(el(‘srp10-m-tot’)) el(‘srp10-m-tot’).textContent=fmt(sq*mp);
}
function resetCalc(){
var a=document.getElementById(‘srp10-arch’);
var b=document.getElementById(‘srp10-seam’);
if(a) a.checked=false;
if(b) b.checked=false;
sync(DEF);
calc();
}
function init(){
var w=document.getElementById(‘srp10′);
if(!w||w.dataset.r) return;
w.dataset.r=’1’;
var n=document.getElementById(‘srp10-num’);
var s=document.getElementById(‘srp10-slider’);
var btn=document.getElementById(‘srp10-calc’);
var rst=document.getElementById(‘srp10-reset’);
var a=document.getElementById(‘srp10-arch’);
var b=document.getElementById(‘srp10-seam’);
if(s){
grad(s);
s.addEventListener(‘input’,function(){sync(parseFloat(s.value));calc();});
}
if(n){
n.addEventListener(‘input’,function(){sync(parseFloat(n.value)||DEF);calc();});
n.addEventListener(‘change’,function(){sync(parseInt(n.value,10)||DEF);calc();});
}
if(btn) btn.addEventListener(‘click’,calc);
if(rst) rst.addEventListener(‘click’,resetCalc);
if(a) a.addEventListener(‘change’,calc);
if(b) b.addEventListener(‘change’,calc);
sync(DEF);
calc();
}
if(document.readyState===’loading’){
document.addEventListener(‘DOMContentLoaded’,init);
} else {
init();
}
})();