Oklahoma Insurance Tool
Replacement Cost
Value Calculator
2025 Oklahoma construction data & insurance claim records
Independent Insurance Broker
(918) 816-9927
(918) 816-9927
```
```
01 Property Basics
02 Construction Type
03 Finish Quality
Standard / Builder Grade
Basic fixtures, vinyl flooring, stock cabinets
Mid-Range
Granite counters, hardwood floors, upgraded fixtures
Premium / Semi-Custom
Custom millwork, high-end appliances, tile baths
Luxury / Custom
Bespoke finishes, smart home, designer everything
04 Roof Details
⚠️ Oklahoma Roof Alert: 85% of OK homeowner claims are roof-related.
Roofs 15+ years old are typically settled at Actual Cash Value (ACV) — not full replacement cost —
by most Oklahoma carriers. Independent brokers can often find RCV-inclusive policies.
05 Additional Features
Oklahoma Insurance Tool
Replacement Cost
Value Calculator
2025 Oklahoma construction data & insurance claim records
Independent Insurance Broker
(918) 816-9927
(918) 816-9927
```
```
01 Property Basics
02 Construction Type
03 Finish Quality
Standard / Builder Grade
Basic fixtures, vinyl flooring, stock cabinets
Mid-Range
Granite counters, hardwood floors, upgraded fixtures
Premium / Semi-Custom
Custom millwork, high-end appliances, tile baths
Luxury / Custom
Bespoke finishes, smart home, designer everything
04 Roof Details
⚠️ Oklahoma Roof Alert: 85% of OK homeowner claims are roof-related.
Roofs 15+ years old are typically settled at Actual Cash Value (ACV) — not full replacement cost —
by most Oklahoma carriers. Independent brokers can often find RCV-inclusive policies.
05 Additional Features
{/* ── HEADER ── */}
Replacement Cost
```
{/* ── FORM ── */}
{/* Basic Info */}
setSqft(e.target.value)}
min={100}
max={20000}
/>
setYearBuilt(e.target.value)}
min={1900}
max={2025}
/>
{/* Construction */}
({
id: k, label: v.label,
badge: v.factor === 1.00 ? "Most Common" : null,
}))}
selected={construction}
onSelect={setConstruction}
/>
{/* Quality */}
setQuality(k)}
/>
))}
{/* Roof */}
{/* Extras */}
{/* CTA */}
{/* ── RESULTS ── */}
{result && (
{/* Breakdown bars */}
{result.extrasCost > 0 && (
)}
{/* Coverage Recommendations */}
{/* OK-specific notes */}
)}
```
);
}
// ── SUB-COMPONENTS ─────────────────────────────────────────────────────────────
function Field({ label, children }) {
return (
Oklahoma Insurance
Replacement Cost
Value Calculator
Built on 2025 Oklahoma construction data & insurance claim records
01 Property Basics
02 Construction Type
03 Finish Quality
{Object.entries(QUALITY_LEVELS).map(([k, v]) => (04 Roof Details
⚠️ Oklahoma Roof Note: 85% of OK homeowner claims are roof-related.
Roofs 15+ years old are typically covered at ACV (not full replacement cost) by most OK insurers.
05 Additional Features
{EXTRAS.map((e) => (
toggleExtra(e.id)}
/>
))}
Estimated Replacement Cost Value
{fmt(result.totalRCV)}
≈ {fmt(result.totalRCV / result.sqft)} per sq ft · {result.sqft.toLocaleString()} sq ft home
Cost Breakdown
Recommended Coverage Levels
🌪️ Oklahoma-Specific Factors
Wind/Hail Deductible (est. 2%):{" "}
{fmt(result.windHailDeductible)} out-of-pocket before coverage kicks in
Roof Coverage Status: {result.ageNote}
SoonerSafe Rebate: Up to $3,000 for FEMA-approved safe rooms (2025 program)
FORTIFIED Home Discount: 10–30% premium reduction available
2024 Loss Ratio: OK insurers paid $97 per $100 of premium collected — ensure adequate coverage
This estimate is based on 2025 Oklahoma construction cost data, NAHB benchmarks, and OID insurance records.
It is intended as a planning guide only — not a substitute for a professional appraisal or insurer's replacement cost estimator.
Actual costs vary by contractor, material availability, and site conditions.
{children}
);
}
function Select({ value, onChange, options }) {
return (
);
}
function CardGroup({ options, selected, onSelect }) {
return (
{options.map((o) => (
))}
);
}
function QualityRow({ id, label, desc, selected, onSelect }) {
return (
{label}
{desc}
{label}
{fmt(value)}
{highlight &&
);
}
// ── STYLES ─────────────────────────────────────────────────────────────────────
const styles = {
page: {
fontFamily: “‘Georgia’, ‘Times New Roman’, serif”,
background: “#1a1108”,
minHeight: “100vh”,
color: “#f5ede0”,
},
header: {
background: “linear-gradient(135deg, #8b2500 0%, #c45c1a 50%, #8b4513 100%)”,
padding: “48px 32px 56px”,
position: “relative”,
overflow: “hidden”,
},
headerInner: { position: “relative”, zIndex: 2, maxWidth: 720, margin: “0 auto” },
headerOrnament: {
position: “absolute”, bottom: -40, right: -40,
width: 220, height: 220,
borderRadius: “50%”,
background: “rgba(255,255,255,0.04)”,
zIndex: 1,
},
badge: {
display: “inline-block”,
background: “rgba(255,255,255,0.15)”,
border: “1px solid rgba(255,255,255,0.3)”,
borderRadius: 4,
padding: “4px 12px”,
fontSize: 11,
letterSpacing: “0.12em”,
textTransform: “uppercase”,
marginBottom: 16,
fontFamily: “‘Trebuchet MS’, sans-serif”,
},
title: {
fontSize: “clamp(32px, 5vw, 52px)”,
fontWeight: 700,
margin: “0 0 8px”,
lineHeight: 1.1,
letterSpacing: “-0.01em”,
},
titleAccent: { color: “#ffd4a0” },
subtitle: {
fontSize: 14,
opacity: 0.8,
margin: 0,
fontFamily: “‘Trebuchet MS’, sans-serif”,
fontStyle: “italic”,
},
main: {
maxWidth: 760,
margin: “0 auto”,
padding: “32px 20px 60px”,
},
form: {},
section: {
background: “#261a0e”,
border: “1px solid #3d2a15”,
borderRadius: 10,
padding: “24px 24px 20px”,
marginBottom: 18,
},
sectionTitle: {
fontSize: 14,
fontFamily: “‘Trebuchet MS’, sans-serif”,
textTransform: “uppercase”,
letterSpacing: “0.1em”,
color: “#e8a87c”,
margin: “0 0 18px”,
display: “flex”,
alignItems: “center”,
gap: 10,
},
num: {
display: “inline-block”,
background: “#c45c1a”,
color: “#fff”,
borderRadius: 4,
padding: “1px 8px”,
fontSize: 12,
fontWeight: 700,
},
grid2: { display: “grid”, gridTemplateColumns: “1fr 1fr”, gap: 14 },
label: {
display: “block”,
fontSize: 12,
fontFamily: “‘Trebuchet MS’, sans-serif”,
textTransform: “uppercase”,
letterSpacing: “0.08em”,
color: “#c49060”,
marginBottom: 6,
},
input: {
width: “100%”,
background: “#1a1108”,
border: “1px solid #4a3520”,
borderRadius: 6,
color: “#f5ede0”,
padding: “10px 12px”,
fontSize: 15,
fontFamily: “‘Georgia’, serif”,
boxSizing: “border-box”,
outline: “none”,
},
select: {
width: “100%”,
background: “#1a1108”,
border: “1px solid #4a3520”,
borderRadius: 6,
color: “#f5ede0”,
padding: “10px 12px”,
fontSize: 14,
fontFamily: “‘Trebuchet MS’, sans-serif”,
boxSizing: “border-box”,
cursor: “pointer”,
outline: “none”,
},
cardGroup: { display: “flex”, flexWrap: “wrap”, gap: 10 },
card: {
background: “#1a1108”,
border: “1px solid #4a3520”,
borderRadius: 7,
color: “#d4b08a”,
padding: “10px 16px”,
cursor: “pointer”,
fontSize: 13,
fontFamily: “‘Trebuchet MS’, sans-serif”,
display: “flex”,
flexDirection: “column”,
gap: 4,
alignItems: “flex-start”,
transition: “all 0.15s”,
},
cardActive: {
background: “#5c2a0a”,
border: “1px solid #c45c1a”,
color: “#ffd4a0”,
},
cardBadge: {
fontSize: 10,
background: “#c45c1a”,
color: “#fff”,
borderRadius: 3,
padding: “1px 6px”,
letterSpacing: “0.06em”,
textTransform: “uppercase”,
},
qualityRow: {
display: “flex”,
alignItems: “center”,
gap: 14,
padding: “12px 14px”,
borderRadius: 7,
border: “1px solid transparent”,
cursor: “pointer”,
marginBottom: 6,
transition: “all 0.12s”,
},
qualityRowActive: {
background: “#3d1e08”,
border: “1px solid #c45c1a”,
},
qualityDot: (active) => ({
width: 14, height: 14,
borderRadius: “50%”,
border: “2px solid “ + (active ? “#c45c1a” : “#4a3520”),
background: active ? “#c45c1a” : “transparent”,
flexShrink: 0,
transition: “all 0.12s”,
}),
qualityLabel: { fontSize: 14, color: “#f5ede0”, fontWeight: 600 },
qualityDesc: { fontSize: 12, color: “#8a6540”, fontFamily: “‘Trebuchet MS’, sans-serif”, marginTop: 2 },
roofNote: {
background: “#2a1400”,
border: “1px solid #6b3210”,
borderLeft: “4px solid #c45c1a”,
borderRadius: 6,
padding: “10px 14px”,
fontSize: 12,
fontFamily: “‘Trebuchet MS’, sans-serif”,
color: “#e8a87c”,
lineHeight: 1.5,
marginTop: 12,
},
extrasGrid: { display: “grid”, gridTemplateColumns: “repeat(auto-fill, minmax(210px, 1fr))”, gap: 8 },
chip: {
background: “#1a1108”,
border: “1px solid #4a3520”,
borderRadius: 7,
color: “#c49060”,
padding: “10px 12px”,
cursor: “pointer”,
fontSize: 12,
fontFamily: “‘Trebuchet MS’, sans-serif”,
display: “flex”,
justifyContent: “space-between”,
alignItems: “center”,
gap: 8,
transition: “all 0.12s”,
textAlign: “left”,
},
chipActive: {
background: “#4a1e06”,
border: “1px solid #c45c1a”,
color: “#ffd4a0”,
},
chipCost: { fontSize: 11, opacity: 0.75, whiteSpace: “nowrap” },
calcBtn: {
width: “100%”,
padding: “18px”,
background: “linear-gradient(135deg, #8b2500, #c45c1a)”,
color: “#fff”,
border: “none”,
borderRadius: 8,
fontSize: 16,
fontFamily: “‘Trebuchet MS’, sans-serif”,
fontWeight: 700,
letterSpacing: “0.04em”,
cursor: “pointer”,
marginTop: 8,
transition: “opacity 0.15s”,
},
results: {
marginTop: 28,
transition: “transform 0.3s ease”,
},
pop: { transform: “scale(1.005)” },
rcvBanner: {
background: “linear-gradient(135deg, #8b2500 0%, #c45c1a 60%, #8b4513 100%)”,
borderRadius: 12,
padding: “32px 28px”,
textAlign: “center”,
marginBottom: 20,
},
rcvLabel: {
fontSize: 12,
fontFamily: “‘Trebuchet MS’, sans-serif”,
textTransform: “uppercase”,
letterSpacing: “0.14em”,
opacity: 0.8,
marginBottom: 8,
},
rcvValue: {
fontSize: “clamp(36px, 8vw, 56px)”,
fontWeight: 700,
letterSpacing: “-0.02em”,
marginBottom: 6,
},
rcvSub: { fontSize: 13, opacity: 0.75, fontFamily: “‘Trebuchet MS’, sans-serif” },
breakdownTitle: {
fontSize: 11,
fontFamily: “‘Trebuchet MS’, sans-serif”,
textTransform: “uppercase”,
letterSpacing: “0.14em”,
color: “#c49060”,
marginBottom: 12,
paddingLeft: 4,
},
barRow: {
display: “flex”,
alignItems: “center”,
gap: 12,
marginBottom: 10,
},
barLabel: {
width: 190,
fontSize: 12,
fontFamily: “‘Trebuchet MS’, sans-serif”,
color: “#d4b08a”,
flexShrink: 0,
},
barTrack: {
flex: 1,
height: 10,
background: “#261a0e”,
borderRadius: 5,
overflow: “hidden”,
},
barFill: {
height: “100%”,
borderRadius: 5,
transition: “width 0.8s cubic-bezier(.25,.46,.45,.94)”,
},
barValue: {
width: 90,
fontSize: 12,
fontFamily: “‘Trebuchet MS’, sans-serif”,
color: “#f5ede0”,
textAlign: “right”,
flexShrink: 0,
},
covTitle: {
fontSize: 11,
fontFamily: “‘Trebuchet MS’, sans-serif”,
textTransform: “uppercase”,
letterSpacing: “0.14em”,
color: “#c49060”,
margin: “24px 0 12px”,
paddingLeft: 4,
},
covGrid: { display: “grid”, gridTemplateColumns: “1fr 1fr”, gap: 14, marginBottom: 20 },
covCard: {
background: “#261a0e”,
border: “1px solid #3d2a15”,
borderRadius: 10,
padding: “18px 16px”,
},
covCardHL: {
background: “#3d1e08”,
border: “2px solid #c45c1a”,
},
covBadge: {
fontSize: 10,
fontFamily: “‘Trebuchet MS’, sans-serif”,
letterSpacing: “0.1em”,
color: “#c45c1a”,
fontWeight: 700,
marginBottom: 6,
},
covCardLabel: {
fontSize: 11,
fontFamily: “‘Trebuchet MS’, sans-serif”,
color: “#c49060”,
marginBottom: 6,
textTransform: “uppercase”,
letterSpacing: “0.06em”,
},
covCardValue: {
fontSize: 22,
fontWeight: 700,
letterSpacing: “-0.01em”,
marginBottom: 4,
},
covCardNote: {
fontSize: 11,
fontFamily: “‘Trebuchet MS’, sans-serif”,
color: “#8a6540”,
fontStyle: “italic”,
},
okNotes: {
background: “#1e1208”,
border: “1px solid #3d2a15”,
borderRadius: 10,
padding: “18px 20px”,
marginBottom: 16,
},
okNotesTitle: {
fontSize: 13,
fontFamily: “‘Trebuchet MS’, sans-serif”,
fontWeight: 700,
color: “#e8a87c”,
marginBottom: 12,
textTransform: “uppercase”,
letterSpacing: “0.06em”,
},
okNoteItem: {
fontSize: 12,
fontFamily: “‘Trebuchet MS’, sans-serif”,
color: “#b08060”,
lineHeight: 1.6,
marginBottom: 6,
paddingLeft: 12,
borderLeft: “2px solid #4a2a10”,
},
disclaimer: {
fontSize: 11,
fontFamily: “‘Trebuchet MS’, sans-serif”,
color: “#6a4a2a”,
fontStyle: “italic”,
lineHeight: 1.6,
borderTop: “1px solid #2a1a08”,
paddingTop: 14,
marginTop: 8,
},
footer: {
textAlign: “center”,
padding: “20px”,
fontSize: 11,
fontFamily: “‘Trebuchet MS’, sans-serif”,
color: “#4a3020”,
borderTop: “1px solid #2a1a08”,
},
};
✓ RECOMMENDED
}
{label}
{value}
{note}