update
@@ -0,0 +1,6 @@
|
|||||||
|
FROM nginx:alpine
|
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
COPY . /usr/share/nginx/html/
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
@@ -0,0 +1,139 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>About Floor It Hardwood Floors | Buffalo, NY</title>
|
||||||
|
<meta name="description" content="75 years of combined experience serving Western New York. Learn about Floor It Hardwood Floors, licensed, insured, and dedicated to quality in Buffalo and Erie County.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/about/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>About</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Our Story</span>
|
||||||
|
<h1>About Floor It Hardwood Floors</h1>
|
||||||
|
<p class="lead">Three decades of expertise, 75 years of combined experience, and an unwavering commitment to craftsmanship throughout Western New York.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- STORY -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Who We Are</span>
|
||||||
|
<h2>Craftsmanship is the Heart of Our Operation</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">We believe true craftsmanship combines skill, passion, and an unrelenting attention to detail.</p>
|
||||||
|
<p style="margin-top:1.25rem;color:var(--smoke);">At Floor It Hardwood Floors, we understand that every scratch has its story. After three decades in this business, we are experts at turning back the pages, breathing new life into your Buffalo home's flooring.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">Our team brings 75 years of combined experience to every job. We are relentless in our pursuit of perfection, continually refining our skills and staying abreast of the latest trends and techniques in hardwood floor care.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">We shine as the best pick for hardwood floor refinishing in Western New York. Your floors look new again, more beautiful and strong. When you choose us, you get a smooth process that boosts your home's worth and appearance.</p>
|
||||||
|
</div>
|
||||||
|
<div data-animate="right" style="background:var(--grain);border-radius:var(--radius-xl);overflow:hidden;aspect-ratio:4/5;display:flex;align-items:center;justify-content:center;">
|
||||||
|
<img src="/assets/images/refinishing-machine.webp" alt="Floor It professional equipment" style="width:100%;height:100%;object-fit:cover;" loading="lazy" onerror="this.style.display='none'">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- CREDENTIALS -->
|
||||||
|
<section class="section section--mid">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Our Credentials</span>
|
||||||
|
<h2>Why Western NY Homeowners Trust Us</h2>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid--auto-4">
|
||||||
|
<div style="text-align:center;padding:2rem;" data-animate="up">
|
||||||
|
<div style="font-size:3rem;font-weight:800;color:var(--amber);line-height:1;"><span data-count="75" data-suffix="+">75+</span></div>
|
||||||
|
<div style="font-size:var(--text-xs);font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ash);margin-top:0.5rem;">Years Combined Experience</div>
|
||||||
|
</div>
|
||||||
|
<div style="text-align:center;padding:2rem;" data-animate="up" data-delay="2">
|
||||||
|
<div style="font-size:3rem;font-weight:800;color:var(--amber);line-height:1;"><span data-count="500" data-suffix="+">500+</span></div>
|
||||||
|
<div style="font-size:var(--text-xs);font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ash);margin-top:0.5rem;">Projects Completed</div>
|
||||||
|
</div>
|
||||||
|
<div style="text-align:center;padding:2rem;" data-animate="up" data-delay="3">
|
||||||
|
<div style="font-size:3rem;font-weight:800;color:var(--amber);line-height:1;"><span data-count="4.9" data-suffix="/5">4.9/5</span></div>
|
||||||
|
<div style="font-size:var(--text-xs);font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ash);margin-top:0.5rem;">Google Rating</div>
|
||||||
|
</div>
|
||||||
|
<div style="text-align:center;padding:2rem;" data-animate="up" data-delay="4">
|
||||||
|
<div style="font-size:3rem;font-weight:800;color:var(--amber);line-height:1;">30+</div>
|
||||||
|
<div style="font-size:var(--text-xs);font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--ash);margin-top:0.5rem;">Years Serving Buffalo</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SERVICE AREA -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Where We Work</span>
|
||||||
|
<h2>Serving Buffalo and Erie County</h2>
|
||||||
|
<p>We serve residential homeowners throughout Western New York with the same professional standards and care at every location.</p>
|
||||||
|
</div>
|
||||||
|
<div class="location-grid" data-animate="up">
|
||||||
|
<a href="/locations/buffalo/" class="location-card">
|
||||||
|
<div class="location-card-icon"><svg viewBox="0 0 20 20"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg></div>
|
||||||
|
<div class="location-card-text"><strong>Buffalo, NY</strong><span>Primary hub</span></div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/amherst/" class="location-card">
|
||||||
|
<div class="location-card-icon"><svg viewBox="0 0 20 20"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg></div>
|
||||||
|
<div class="location-card-text"><strong>Amherst, NY</strong><span>Erie County</span></div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/williamsville/" class="location-card">
|
||||||
|
<div class="location-card-icon"><svg viewBox="0 0 20 20"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg></div>
|
||||||
|
<div class="location-card-text"><strong>Williamsville, NY</strong><span>Erie County</span></div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/east-amherst/" class="location-card">
|
||||||
|
<div class="location-card-icon"><svg viewBox="0 0 20 20"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg></div>
|
||||||
|
<div class="location-card-text"><strong>East Amherst, NY</strong><span>Erie County</span></div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/clarence/" class="location-card">
|
||||||
|
<div class="location-card-icon"><svg viewBox="0 0 20 20"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg></div>
|
||||||
|
<div class="location-card-text"><strong>Clarence, NY</strong><span>Erie County</span></div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/lancaster/" class="location-card">
|
||||||
|
<div class="location-card-icon"><svg viewBox="0 0 20 20"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg></div>
|
||||||
|
<div class="location-card-text"><strong>Lancaster, NY</strong><span>Erie County</span></div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- CTA -->
|
||||||
|
<div class="cta-strip">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Ready to Restore Your Floors?</h2>
|
||||||
|
<p>Contact our team today and take the first step toward beautiful hardwood floors.</p>
|
||||||
|
<div class="cta-group" style="justify-content:center;">
|
||||||
|
<a href="/contact/" class="btn btn--outline-dark btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,545 @@
|
|||||||
|
/* ============================================================
|
||||||
|
FLOOR IT HARDWOOD FLOORS — Design System
|
||||||
|
main.css: variables, reset, typography, layout, utilities
|
||||||
|
============================================================ */
|
||||||
|
|
||||||
|
/* --- Custom Properties ------------------------------------ */
|
||||||
|
:root {
|
||||||
|
/* Color palette — warm wood tones, no gradients */
|
||||||
|
--ink: #0c0805;
|
||||||
|
--charcoal: #1c1208;
|
||||||
|
--bark: #2e1d0a;
|
||||||
|
--bark-mid: #3d2710;
|
||||||
|
--amber: #c88b2a;
|
||||||
|
--amber-dark: #a87220;
|
||||||
|
--amber-light: #e8aa48;
|
||||||
|
--parchment: #f5f0e8;
|
||||||
|
--cream: #faf8f5;
|
||||||
|
--grain: #ede5d8;
|
||||||
|
--smoke: #7a6a56;
|
||||||
|
--ash: #b8a898;
|
||||||
|
--white: #ffffff;
|
||||||
|
|
||||||
|
/* Semantic aliases */
|
||||||
|
--bg-dark: var(--ink);
|
||||||
|
--bg-dark-alt: var(--charcoal);
|
||||||
|
--bg-mid-dark: var(--bark);
|
||||||
|
--bg-light: var(--cream);
|
||||||
|
--bg-light-alt: var(--parchment);
|
||||||
|
--bg-warm: var(--grain);
|
||||||
|
|
||||||
|
--text-on-dark: #f0e8da;
|
||||||
|
--text-muted-dark:var(--ash);
|
||||||
|
--text-on-light: var(--charcoal);
|
||||||
|
--text-muted-light:var(--smoke);
|
||||||
|
|
||||||
|
--cta: var(--amber);
|
||||||
|
--cta-hover: var(--amber-dark);
|
||||||
|
--cta-text: var(--ink);
|
||||||
|
|
||||||
|
--border-dark: rgba(255,255,255,0.08);
|
||||||
|
--border-light: rgba(0,0,0,0.08);
|
||||||
|
|
||||||
|
/* Typography */
|
||||||
|
--font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
||||||
|
--font-display: 'Inter', Georgia, serif;
|
||||||
|
|
||||||
|
/* Scale */
|
||||||
|
--text-xs: 0.75rem;
|
||||||
|
--text-sm: 0.875rem;
|
||||||
|
--text-base: 1rem;
|
||||||
|
--text-md: 1.125rem;
|
||||||
|
--text-lg: 1.25rem;
|
||||||
|
--text-xl: 1.5rem;
|
||||||
|
--text-2xl: 2rem;
|
||||||
|
--text-3xl: 2.5rem;
|
||||||
|
--text-4xl: 3.25rem;
|
||||||
|
--text-5xl: 4.25rem;
|
||||||
|
--text-6xl: 5.5rem;
|
||||||
|
|
||||||
|
/* Spacing */
|
||||||
|
--space-1: 0.25rem;
|
||||||
|
--space-2: 0.5rem;
|
||||||
|
--space-3: 0.75rem;
|
||||||
|
--space-4: 1rem;
|
||||||
|
--space-5: 1.25rem;
|
||||||
|
--space-6: 1.5rem;
|
||||||
|
--space-8: 2rem;
|
||||||
|
--space-10: 2.5rem;
|
||||||
|
--space-12: 3rem;
|
||||||
|
--space-16: 4rem;
|
||||||
|
--space-20: 5rem;
|
||||||
|
--space-24: 6rem;
|
||||||
|
--space-32: 8rem;
|
||||||
|
|
||||||
|
/* Section rhythm */
|
||||||
|
--section-py: clamp(4rem, 8vw, 8rem);
|
||||||
|
--section-py-sm: clamp(2.5rem, 5vw, 5rem);
|
||||||
|
|
||||||
|
/* Layout */
|
||||||
|
--container-max: 1200px;
|
||||||
|
--container-wide: 1380px;
|
||||||
|
--container-px: clamp(1.25rem, 5vw, 2.5rem);
|
||||||
|
|
||||||
|
/* Effects */
|
||||||
|
--radius-sm: 4px;
|
||||||
|
--radius: 8px;
|
||||||
|
--radius-lg: 16px;
|
||||||
|
--radius-xl: 24px;
|
||||||
|
--radius-full: 9999px;
|
||||||
|
|
||||||
|
--shadow-sm: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.08);
|
||||||
|
--shadow: 0 4px 16px rgba(0,0,0,0.12), 0 2px 6px rgba(0,0,0,0.08);
|
||||||
|
--shadow-lg: 0 12px 40px rgba(0,0,0,0.18), 0 4px 12px rgba(0,0,0,0.10);
|
||||||
|
--shadow-xl: 0 24px 64px rgba(0,0,0,0.22);
|
||||||
|
|
||||||
|
--transition: 0.25s ease;
|
||||||
|
--transition-slow: 0.5s ease;
|
||||||
|
|
||||||
|
/* Header height */
|
||||||
|
--header-h: 72px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Reset ------------------------------------------------ */
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: var(--font-body);
|
||||||
|
font-size: var(--text-base);
|
||||||
|
line-height: 1.65;
|
||||||
|
color: var(--text-on-light);
|
||||||
|
background: var(--bg-light);
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
img, video, svg {
|
||||||
|
display: block;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul, ol { list-style: none; }
|
||||||
|
|
||||||
|
button {
|
||||||
|
font-family: inherit;
|
||||||
|
cursor: pointer;
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input, textarea, select {
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Typography ------------------------------------------- */
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
font-family: var(--font-display);
|
||||||
|
font-weight: 800;
|
||||||
|
line-height: 1.15;
|
||||||
|
letter-spacing: -0.02em;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 { font-size: clamp(var(--text-3xl), 5vw, var(--text-5xl)); }
|
||||||
|
h2 { font-size: clamp(var(--text-2xl), 3.5vw, var(--text-4xl)); }
|
||||||
|
h3 { font-size: clamp(var(--text-xl), 2.5vw, var(--text-2xl)); }
|
||||||
|
h4 { font-size: var(--text-lg); font-weight: 700; }
|
||||||
|
h5 { font-size: var(--text-base); font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }
|
||||||
|
h6 { font-size: var(--text-sm); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
|
||||||
|
|
||||||
|
p { max-width: 68ch; }
|
||||||
|
|
||||||
|
.lead {
|
||||||
|
font-size: var(--text-md);
|
||||||
|
line-height: 1.7;
|
||||||
|
color: var(--text-muted-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
.eyebrow {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: var(--text-xs);
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.12em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: var(--amber);
|
||||||
|
margin-bottom: var(--space-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Layout ----------------------------------------------- */
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
max-width: var(--container-max);
|
||||||
|
margin-inline: auto;
|
||||||
|
padding-inline: var(--container-px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.container--wide {
|
||||||
|
max-width: var(--container-wide);
|
||||||
|
}
|
||||||
|
|
||||||
|
.section {
|
||||||
|
padding-block: var(--section-py);
|
||||||
|
}
|
||||||
|
|
||||||
|
.section--sm {
|
||||||
|
padding-block: var(--section-py-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
.section--dark { background: var(--bg-dark); color: var(--text-on-dark); }
|
||||||
|
.section--mid { background: var(--bg-dark-alt); color: var(--text-on-dark); }
|
||||||
|
.section--bark { background: var(--bg-mid-dark); color: var(--text-on-dark); }
|
||||||
|
.section--light { background: var(--bg-light); color: var(--text-on-light); }
|
||||||
|
.section--alt { background: var(--bg-light-alt); color: var(--text-on-light); }
|
||||||
|
.section--warm { background: var(--bg-warm); color: var(--text-on-light); }
|
||||||
|
|
||||||
|
/* Grid */
|
||||||
|
.grid {
|
||||||
|
display: grid;
|
||||||
|
gap: var(--space-8);
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid--2 { grid-template-columns: repeat(2, 1fr); }
|
||||||
|
.grid--3 { grid-template-columns: repeat(3, 1fr); }
|
||||||
|
.grid--4 { grid-template-columns: repeat(4, 1fr); }
|
||||||
|
|
||||||
|
.grid--auto-2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
|
||||||
|
.grid--auto-3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
|
||||||
|
.grid--auto-4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
|
||||||
|
|
||||||
|
/* Flex */
|
||||||
|
.flex { display: flex; }
|
||||||
|
.flex--center { align-items: center; justify-content: center; }
|
||||||
|
.flex--between { align-items: center; justify-content: space-between; }
|
||||||
|
.flex--gap-4 { gap: var(--space-4); }
|
||||||
|
.flex--gap-6 { gap: var(--space-6); }
|
||||||
|
.flex--gap-8 { gap: var(--space-8); }
|
||||||
|
|
||||||
|
/* Section header */
|
||||||
|
.section-header {
|
||||||
|
margin-bottom: clamp(2.5rem, 5vw, 4rem);
|
||||||
|
}
|
||||||
|
.section-header--center {
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.section-header p {
|
||||||
|
margin-top: var(--space-4);
|
||||||
|
font-size: var(--text-md);
|
||||||
|
color: var(--text-muted-light);
|
||||||
|
}
|
||||||
|
.section--dark .section-header p,
|
||||||
|
.section--mid .section-header p,
|
||||||
|
.section--bark .section-header p { color: var(--text-muted-dark); }
|
||||||
|
.section--dark .lead,
|
||||||
|
.section--mid .lead,
|
||||||
|
.section--bark .lead { color: var(--text-muted-dark); }
|
||||||
|
|
||||||
|
/* --- Buttons --------------------------------------------- */
|
||||||
|
.btn {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: var(--space-2);
|
||||||
|
padding: 0.875rem 2rem;
|
||||||
|
font-size: var(--text-sm);
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.04em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
border: 2px solid transparent;
|
||||||
|
transition: background var(--transition), color var(--transition), border-color var(--transition), transform var(--transition), box-shadow var(--transition);
|
||||||
|
white-space: nowrap;
|
||||||
|
cursor: pointer;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:hover { transform: translateY(-1px); }
|
||||||
|
.btn:active { transform: translateY(0); }
|
||||||
|
|
||||||
|
.btn--primary {
|
||||||
|
background: var(--amber);
|
||||||
|
color: var(--ink);
|
||||||
|
border-color: var(--amber);
|
||||||
|
}
|
||||||
|
.btn--primary:hover {
|
||||||
|
background: var(--amber-light);
|
||||||
|
border-color: var(--amber-light);
|
||||||
|
box-shadow: 0 6px 24px rgba(200, 139, 42, 0.35);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn--outline-light {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--text-on-dark);
|
||||||
|
border-color: rgba(255,255,255,0.35);
|
||||||
|
}
|
||||||
|
.btn--outline-light:hover {
|
||||||
|
background: rgba(255,255,255,0.1);
|
||||||
|
border-color: rgba(255,255,255,0.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn--outline-dark {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--text-on-light);
|
||||||
|
border-color: var(--bark-mid);
|
||||||
|
}
|
||||||
|
.btn--outline-dark:hover {
|
||||||
|
background: var(--bark-mid);
|
||||||
|
color: var(--text-on-dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn--ghost {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--amber);
|
||||||
|
border-color: var(--amber);
|
||||||
|
}
|
||||||
|
.btn--ghost:hover {
|
||||||
|
background: var(--amber);
|
||||||
|
color: var(--ink);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn--lg { padding: 1.1rem 2.5rem; font-size: var(--text-base); }
|
||||||
|
.btn--sm { padding: 0.625rem 1.25rem; font-size: var(--text-xs); }
|
||||||
|
.btn--full { width: 100%; }
|
||||||
|
|
||||||
|
/* CTA group */
|
||||||
|
.cta-group {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: var(--space-4);
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Forms ----------------------------------------------- */
|
||||||
|
.form-grid {
|
||||||
|
display: grid;
|
||||||
|
gap: var(--space-5);
|
||||||
|
}
|
||||||
|
.form-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
|
||||||
|
|
||||||
|
.form-field {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: var(--space-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-field label {
|
||||||
|
font-size: var(--text-sm);
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: 0.02em;
|
||||||
|
color: var(--text-on-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-field input,
|
||||||
|
.form-field textarea,
|
||||||
|
.form-field select {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0.875rem 1rem;
|
||||||
|
background: var(--white);
|
||||||
|
border: 1.5px solid var(--border-light);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
font-size: var(--text-base);
|
||||||
|
color: var(--text-on-light);
|
||||||
|
transition: border-color var(--transition), box-shadow var(--transition);
|
||||||
|
outline: none;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-field input:focus,
|
||||||
|
.form-field textarea:focus,
|
||||||
|
.form-field select:focus {
|
||||||
|
border-color: var(--amber);
|
||||||
|
box-shadow: 0 0 0 3px rgba(200,139,42,0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-field input.valid { border-color: #2d9e57; }
|
||||||
|
.form-field input.invalid { border-color: #c0392b; }
|
||||||
|
|
||||||
|
.form-field textarea {
|
||||||
|
min-height: 130px;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-field select {
|
||||||
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%237a6a56' d='M6 8L0 0h12z'/%3E%3C/svg%3E");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: right 1rem center;
|
||||||
|
padding-right: 2.5rem;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-field .hint {
|
||||||
|
font-size: var(--text-xs);
|
||||||
|
color: var(--smoke);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-field .err-msg {
|
||||||
|
font-size: var(--text-xs);
|
||||||
|
color: #c0392b;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.form-field.has-error .err-msg { display: block; }
|
||||||
|
|
||||||
|
.form-trust {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: var(--space-3) var(--space-6);
|
||||||
|
padding: var(--space-4) 0;
|
||||||
|
border-top: 1px solid var(--border-light);
|
||||||
|
margin-top: var(--space-2);
|
||||||
|
}
|
||||||
|
.form-trust-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--space-2);
|
||||||
|
font-size: var(--text-xs);
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--smoke);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.04em;
|
||||||
|
}
|
||||||
|
.form-trust-item::before {
|
||||||
|
content: '';
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
background: var(--amber);
|
||||||
|
border-radius: 50%;
|
||||||
|
flex-shrink: 0;
|
||||||
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='%230c0805' stroke='none' d='M10 3L5 8.5 2 5.5'/%3E%3C/svg%3E");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
background-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-status {
|
||||||
|
padding: var(--space-4) var(--space-5);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: var(--text-sm);
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.form-status--success { background: #d4edda; color: #155724; display: block; }
|
||||||
|
.form-status--error { background: #f8d7da; color: #721c24; display: block; }
|
||||||
|
|
||||||
|
/* --- Cards ----------------------------------------------- */
|
||||||
|
.card {
|
||||||
|
background: var(--white);
|
||||||
|
border-radius: var(--radius-lg);
|
||||||
|
overflow: hidden;
|
||||||
|
border: 1px solid var(--border-light);
|
||||||
|
transition: transform var(--transition), box-shadow var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card:hover {
|
||||||
|
transform: translateY(-4px);
|
||||||
|
box-shadow: var(--shadow-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card--dark {
|
||||||
|
background: var(--charcoal);
|
||||||
|
border-color: var(--border-dark);
|
||||||
|
color: var(--text-on-dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Scroll Animations ----------------------------------- */
|
||||||
|
[data-animate] {
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.7s ease, transform 0.7s ease;
|
||||||
|
}
|
||||||
|
[data-animate="up"] { transform: translateY(40px); }
|
||||||
|
[data-animate="left"] { transform: translateX(-40px); }
|
||||||
|
[data-animate="right"] { transform: translateX(40px); }
|
||||||
|
[data-animate="scale"] { transform: scale(0.92); }
|
||||||
|
[data-animate="fade"] { transform: none; }
|
||||||
|
|
||||||
|
[data-animate].in-view {
|
||||||
|
opacity: 1;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-delay="1"] { transition-delay: 0.1s; }
|
||||||
|
[data-delay="2"] { transition-delay: 0.2s; }
|
||||||
|
[data-delay="3"] { transition-delay: 0.3s; }
|
||||||
|
[data-delay="4"] { transition-delay: 0.4s; }
|
||||||
|
[data-delay="5"] { transition-delay: 0.5s; }
|
||||||
|
[data-delay="6"] { transition-delay: 0.6s; }
|
||||||
|
|
||||||
|
/* --- Utility Classes ------------------------------------- */
|
||||||
|
.text-center { text-align: center; }
|
||||||
|
.text-amber { color: var(--amber); }
|
||||||
|
.text-muted { color: var(--smoke); }
|
||||||
|
.text-sm { font-size: var(--text-sm); }
|
||||||
|
.text-lg { font-size: var(--text-lg); }
|
||||||
|
|
||||||
|
.mt-4 { margin-top: var(--space-4); }
|
||||||
|
.mt-6 { margin-top: var(--space-6); }
|
||||||
|
.mt-8 { margin-top: var(--space-8); }
|
||||||
|
.mt-12 { margin-top: var(--space-12); }
|
||||||
|
.mt-16 { margin-top: var(--space-16); }
|
||||||
|
|
||||||
|
.mb-4 { margin-bottom: var(--space-4); }
|
||||||
|
.mb-6 { margin-bottom: var(--space-6); }
|
||||||
|
.mb-8 { margin-bottom: var(--space-8); }
|
||||||
|
|
||||||
|
.w-full { width: 100%; }
|
||||||
|
.block { display: block; }
|
||||||
|
|
||||||
|
.sr-only {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0,0,0,0);
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Dividers -------------------------------------------- */
|
||||||
|
.divider {
|
||||||
|
width: 60px;
|
||||||
|
height: 3px;
|
||||||
|
background: var(--amber);
|
||||||
|
border-radius: var(--radius-full);
|
||||||
|
margin-bottom: var(--space-6);
|
||||||
|
}
|
||||||
|
.section--dark .divider,
|
||||||
|
.section--mid .divider,
|
||||||
|
.section--bark .divider { background: var(--amber); }
|
||||||
|
|
||||||
|
/* --- Responsive ------------------------------------------ */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
.grid--4 { grid-template-columns: repeat(2, 1fr); }
|
||||||
|
.grid--3 { grid-template-columns: repeat(2, 1fr); }
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.grid--2,
|
||||||
|
.grid--3,
|
||||||
|
.grid--4 { grid-template-columns: 1fr; }
|
||||||
|
|
||||||
|
.cta-group { justify-content: center; }
|
||||||
|
.cta-group .btn { min-width: 220px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
:root { --section-py: clamp(3rem, 8vw, 4rem); }
|
||||||
|
p { max-width: 100%; }
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 24 KiB |
@@ -0,0 +1,84 @@
|
|||||||
|
/* ============================================================
|
||||||
|
components.js — Component loader + header/footer init
|
||||||
|
Loads shared HTML components, initializes sticky header,
|
||||||
|
mobile nav, and active link state.
|
||||||
|
============================================================ */
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/* --- Component Loader ----------------------------------- */
|
||||||
|
async function loadComponent(targetId, url) {
|
||||||
|
const el = document.getElementById(targetId);
|
||||||
|
if (!el) return;
|
||||||
|
try {
|
||||||
|
const res = await fetch(url);
|
||||||
|
if (!res.ok) throw new Error(res.status);
|
||||||
|
const html = await res.text();
|
||||||
|
el.innerHTML = html;
|
||||||
|
} catch (err) {
|
||||||
|
console.warn('[components.js] Could not load', url, err.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Active nav link ------------------------------------ */
|
||||||
|
function markActiveNav() {
|
||||||
|
const path = window.location.pathname.replace(/\/$/, '') || '/';
|
||||||
|
document.querySelectorAll('.header-nav a, .mobile-nav-links a').forEach(a => {
|
||||||
|
const href = a.getAttribute('href').replace(/\/$/, '') || '/';
|
||||||
|
if (path === href || (href !== '/' && path.startsWith(href))) {
|
||||||
|
a.classList.add('active');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Sticky header -------------------------------------- */
|
||||||
|
function initStickyHeader() {
|
||||||
|
const header = document.querySelector('.site-header');
|
||||||
|
if (!header) return;
|
||||||
|
|
||||||
|
const toggle = () => {
|
||||||
|
header.classList.toggle('scrolled', window.scrollY > 60);
|
||||||
|
};
|
||||||
|
toggle();
|
||||||
|
window.addEventListener('scroll', toggle, { passive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Mobile nav ---------------------------------------- */
|
||||||
|
function initMobileNav() {
|
||||||
|
const btn = document.querySelector('.header-menu-btn');
|
||||||
|
const nav = document.querySelector('.mobile-nav');
|
||||||
|
const overlay = document.querySelector('.mobile-nav-overlay');
|
||||||
|
const close = document.querySelector('.mobile-nav-close');
|
||||||
|
if (!btn || !nav) return;
|
||||||
|
|
||||||
|
const open = () => { nav.classList.add('open'); btn.classList.add('open'); document.body.style.overflow = 'hidden'; };
|
||||||
|
const shut = () => { nav.classList.remove('open'); btn.classList.remove('open'); document.body.style.overflow = ''; };
|
||||||
|
|
||||||
|
btn.addEventListener('click', open);
|
||||||
|
if (overlay) overlay.addEventListener('click', shut);
|
||||||
|
if (close) close.addEventListener('click', shut);
|
||||||
|
|
||||||
|
document.addEventListener('keydown', e => { if (e.key === 'Escape') shut(); });
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Init on DOM ready ---------------------------------- */
|
||||||
|
async function init() {
|
||||||
|
const base = document.querySelector('meta[name="site-root"]')?.content || '/';
|
||||||
|
|
||||||
|
await Promise.all([
|
||||||
|
loadComponent('site-header', base + 'components/header.html'),
|
||||||
|
loadComponent('site-footer', base + 'components/footer.html'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
initStickyHeader();
|
||||||
|
initMobileNav();
|
||||||
|
markActiveNav();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('DOMContentLoaded', init);
|
||||||
|
} else {
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
})();
|
||||||
@@ -0,0 +1,207 @@
|
|||||||
|
/* ============================================================
|
||||||
|
form.js — Estimate form validation + submission
|
||||||
|
Real-time validation, phone formatting, reCAPTCHA v3 hook
|
||||||
|
============================================================ */
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const PHONE = /^\(?\d{3}\)?[\s.\-]?\d{3}[\s.\-]?\d{4}$/;
|
||||||
|
const EMAIL = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||||
|
const RECAPTCHA_SITE_KEY = '6LdqrB8rAAAAAOrBCYmtk43IzemkiK_Fb2EYU5q2';
|
||||||
|
|
||||||
|
/* --- Helpers -------------------------------------------- */
|
||||||
|
function field(el) {
|
||||||
|
return el.closest('.form-field');
|
||||||
|
}
|
||||||
|
|
||||||
|
function setValid(el) {
|
||||||
|
const f = field(el);
|
||||||
|
if (!f) return;
|
||||||
|
f.classList.remove('has-error');
|
||||||
|
el.classList.add('valid');
|
||||||
|
el.classList.remove('invalid');
|
||||||
|
}
|
||||||
|
|
||||||
|
function setInvalid(el, msg) {
|
||||||
|
const f = field(el);
|
||||||
|
if (!f) return;
|
||||||
|
f.classList.add('has-error');
|
||||||
|
el.classList.add('invalid');
|
||||||
|
el.classList.remove('valid');
|
||||||
|
const errEl = f.querySelector('.err-msg');
|
||||||
|
if (errEl && msg) errEl.textContent = msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearState(el) {
|
||||||
|
const f = field(el);
|
||||||
|
if (!f) return;
|
||||||
|
f.classList.remove('has-error');
|
||||||
|
el.classList.remove('valid', 'invalid');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Phone formatter ------------------------------------ */
|
||||||
|
function formatPhone(raw) {
|
||||||
|
const digits = raw.replace(/\D/g, '').slice(0, 10);
|
||||||
|
if (digits.length < 4) return digits;
|
||||||
|
if (digits.length < 7) return '(' + digits.slice(0,3) + ') ' + digits.slice(3);
|
||||||
|
return '(' + digits.slice(0,3) + ') ' + digits.slice(3,6) + '-' + digits.slice(6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Validators ----------------------------------------- */
|
||||||
|
function validateRequired(el) {
|
||||||
|
if (!el.value.trim()) {
|
||||||
|
setInvalid(el, 'This field is required.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
setValid(el);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateEmail(el) {
|
||||||
|
if (!el.value.trim()) {
|
||||||
|
setInvalid(el, 'Email address is required.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!EMAIL.test(el.value.trim())) {
|
||||||
|
setInvalid(el, 'Please enter a valid email address.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
setValid(el);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function validatePhone(el) {
|
||||||
|
const val = el.value.replace(/\D/g, '');
|
||||||
|
if (!val) {
|
||||||
|
setInvalid(el, 'Phone number is required.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (val.length !== 10) {
|
||||||
|
setInvalid(el, 'Please enter a 10-digit phone number.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
setValid(el);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- reCAPTCHA v3 token --------------------------------- */
|
||||||
|
function getRecaptchaToken(action) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
if (typeof grecaptcha === 'undefined') {
|
||||||
|
resolve('');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
grecaptcha.ready(() => {
|
||||||
|
grecaptcha.execute(RECAPTCHA_SITE_KEY, { action }).then(resolve);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Form handler --------------------------------------- */
|
||||||
|
function initForm(form) {
|
||||||
|
const nameEl = form.querySelector('#name');
|
||||||
|
const emailEl = form.querySelector('#email');
|
||||||
|
const phoneEl = form.querySelector('#phone');
|
||||||
|
const addrEl = form.querySelector('#address');
|
||||||
|
const serviceEl = form.querySelector('#service');
|
||||||
|
const msgEl = form.querySelector('#message');
|
||||||
|
const submit = form.querySelector('[type="submit"]');
|
||||||
|
const status = form.querySelector('.form-status');
|
||||||
|
|
||||||
|
if (!submit) return;
|
||||||
|
|
||||||
|
/* Phone real-time format */
|
||||||
|
if (phoneEl) {
|
||||||
|
phoneEl.addEventListener('input', () => {
|
||||||
|
const pos = phoneEl.selectionStart;
|
||||||
|
const prev = phoneEl.value;
|
||||||
|
phoneEl.value = formatPhone(prev);
|
||||||
|
/* restore cursor roughly */
|
||||||
|
const diff = phoneEl.value.length - prev.length;
|
||||||
|
try { phoneEl.setSelectionRange(pos + diff, pos + diff); } catch (_) {}
|
||||||
|
});
|
||||||
|
|
||||||
|
phoneEl.addEventListener('blur', () => validatePhone(phoneEl));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Blur-time validation for other fields */
|
||||||
|
if (nameEl) nameEl.addEventListener('blur', () => validateRequired(nameEl));
|
||||||
|
if (emailEl) emailEl.addEventListener('blur', () => validateEmail(emailEl));
|
||||||
|
if (addrEl) addrEl.addEventListener('blur', () => validateRequired(addrEl));
|
||||||
|
if (serviceEl) serviceEl.addEventListener('change', () => validateRequired(serviceEl));
|
||||||
|
|
||||||
|
/* Submit */
|
||||||
|
form.addEventListener('submit', async (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
const checks = [
|
||||||
|
nameEl ? validateRequired(nameEl) : true,
|
||||||
|
emailEl ? validateEmail(emailEl) : true,
|
||||||
|
phoneEl ? validatePhone(phoneEl) : true,
|
||||||
|
addrEl ? validateRequired(addrEl) : true,
|
||||||
|
serviceEl ? validateRequired(serviceEl) : true,
|
||||||
|
];
|
||||||
|
|
||||||
|
if (checks.includes(false)) {
|
||||||
|
const firstErr = form.querySelector('.invalid');
|
||||||
|
if (firstErr) firstErr.focus();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const origText = submit.textContent;
|
||||||
|
submit.disabled = true;
|
||||||
|
submit.textContent = 'Sending...';
|
||||||
|
if (status) { status.className = 'form-status'; status.textContent = ''; }
|
||||||
|
|
||||||
|
const token = await getRecaptchaToken('estimate_form');
|
||||||
|
|
||||||
|
const payload = {
|
||||||
|
name: nameEl ? nameEl.value.trim() : '',
|
||||||
|
email: emailEl ? emailEl.value.trim() : '',
|
||||||
|
phone: phoneEl ? phoneEl.value.trim() : '',
|
||||||
|
address: addrEl ? addrEl.value.trim() : '',
|
||||||
|
service: serviceEl ? serviceEl.value : '',
|
||||||
|
message: msgEl ? msgEl.value.trim() : '',
|
||||||
|
token,
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const res = await fetch('/api/estimate', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify(payload),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!status) { submit.disabled = false; submit.textContent = origText; return; }
|
||||||
|
|
||||||
|
if (res.ok) {
|
||||||
|
status.className = 'form-status form-status--success';
|
||||||
|
status.textContent = 'Thank you! We will get back to you within 1 business hour.';
|
||||||
|
form.reset();
|
||||||
|
form.querySelectorAll('input, textarea, select').forEach(clearState);
|
||||||
|
} else {
|
||||||
|
throw new Error(res.status);
|
||||||
|
}
|
||||||
|
} catch (_) {
|
||||||
|
if (status) {
|
||||||
|
status.className = 'form-status form-status--error';
|
||||||
|
status.textContent = 'Something went wrong. Please call us directly at (716) 602-1429.';
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
submit.disabled = false;
|
||||||
|
submit.textContent = origText;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function boot() {
|
||||||
|
document.querySelectorAll('.estimate-form').forEach(initForm);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('DOMContentLoaded', boot);
|
||||||
|
} else {
|
||||||
|
boot();
|
||||||
|
}
|
||||||
|
})();
|
||||||
@@ -0,0 +1,164 @@
|
|||||||
|
/* ============================================================
|
||||||
|
main.js — Scroll animations, counters, FAQ, BA slider
|
||||||
|
============================================================ */
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/* --- Scroll animation (IntersectionObserver) ------------ */
|
||||||
|
function initScrollAnimations() {
|
||||||
|
const els = document.querySelectorAll('[data-animate]');
|
||||||
|
if (!els.length) return;
|
||||||
|
|
||||||
|
const obs = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach(entry => {
|
||||||
|
if (entry.isIntersecting) {
|
||||||
|
entry.target.classList.add('in-view');
|
||||||
|
obs.unobserve(entry.target);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' });
|
||||||
|
|
||||||
|
els.forEach(el => obs.observe(el));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Animated counters ---------------------------------- */
|
||||||
|
function animateCounter(el) {
|
||||||
|
const target = parseFloat(el.dataset.count);
|
||||||
|
const suffix = el.dataset.suffix || '';
|
||||||
|
const prefix = el.dataset.prefix || '';
|
||||||
|
const decimals = (target % 1 !== 0) ? 1 : 0;
|
||||||
|
const duration = 1600;
|
||||||
|
const start = performance.now();
|
||||||
|
|
||||||
|
function tick(now) {
|
||||||
|
const elapsed = now - start;
|
||||||
|
const progress = Math.min(elapsed / duration, 1);
|
||||||
|
const ease = 1 - Math.pow(1 - progress, 3);
|
||||||
|
const value = target * ease;
|
||||||
|
el.textContent = prefix + value.toFixed(decimals) + suffix;
|
||||||
|
if (progress < 1) requestAnimationFrame(tick);
|
||||||
|
}
|
||||||
|
|
||||||
|
requestAnimationFrame(tick);
|
||||||
|
}
|
||||||
|
|
||||||
|
function initCounters() {
|
||||||
|
const counters = document.querySelectorAll('[data-count]');
|
||||||
|
if (!counters.length) return;
|
||||||
|
|
||||||
|
const obs = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach(entry => {
|
||||||
|
if (entry.isIntersecting) {
|
||||||
|
animateCounter(entry.target);
|
||||||
|
obs.unobserve(entry.target);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, { threshold: 0.3 });
|
||||||
|
|
||||||
|
counters.forEach(el => obs.observe(el));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- FAQ accordion -------------------------------------- */
|
||||||
|
function initFAQ() {
|
||||||
|
document.querySelectorAll('.faq-item').forEach(item => {
|
||||||
|
const q = item.querySelector('.faq-question');
|
||||||
|
if (!q) return;
|
||||||
|
|
||||||
|
q.addEventListener('click', () => {
|
||||||
|
const isOpen = item.classList.contains('open');
|
||||||
|
// close all
|
||||||
|
document.querySelectorAll('.faq-item.open').forEach(i => {
|
||||||
|
i.classList.remove('open');
|
||||||
|
});
|
||||||
|
if (!isOpen) item.classList.add('open');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Before / After slider ------------------------------ */
|
||||||
|
function initBASlider(slider) {
|
||||||
|
const handle = slider.querySelector('.ba-handle');
|
||||||
|
const beforeWrap = slider.querySelector('.ba-before-wrap');
|
||||||
|
if (!handle || !beforeWrap) return;
|
||||||
|
|
||||||
|
let dragging = false;
|
||||||
|
|
||||||
|
function setPosition(clientX) {
|
||||||
|
const rect = slider.getBoundingClientRect();
|
||||||
|
const rawPct = (clientX - rect.left) / rect.width;
|
||||||
|
const pct = Math.min(Math.max(rawPct, 0.02), 0.98);
|
||||||
|
beforeWrap.style.width = (pct * 100) + '%';
|
||||||
|
handle.style.left = (pct * 100) + '%';
|
||||||
|
}
|
||||||
|
|
||||||
|
handle.addEventListener('mousedown', () => { dragging = true; });
|
||||||
|
handle.addEventListener('touchstart', () => { dragging = true; }, { passive: true });
|
||||||
|
|
||||||
|
window.addEventListener('mousemove', e => { if (dragging) setPosition(e.clientX); });
|
||||||
|
window.addEventListener('touchmove', e => { if (dragging) setPosition(e.touches[0].clientX); }, { passive: true });
|
||||||
|
|
||||||
|
window.addEventListener('mouseup', () => { dragging = false; });
|
||||||
|
window.addEventListener('touchend', () => { dragging = false; });
|
||||||
|
|
||||||
|
slider.addEventListener('click', e => setPosition(e.clientX));
|
||||||
|
}
|
||||||
|
|
||||||
|
function initBASliders() {
|
||||||
|
document.querySelectorAll('.ba-slider').forEach(initBASlider);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Smooth scroll for anchor links --------------------- */
|
||||||
|
function initSmoothScroll() {
|
||||||
|
document.querySelectorAll('a[href^="#"]').forEach(a => {
|
||||||
|
a.addEventListener('click', e => {
|
||||||
|
const id = a.getAttribute('href').slice(1);
|
||||||
|
const target = document.getElementById(id);
|
||||||
|
if (!target) return;
|
||||||
|
e.preventDefault();
|
||||||
|
const headerH = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-h')) || 72;
|
||||||
|
const top = target.getBoundingClientRect().top + window.scrollY - headerH - 16;
|
||||||
|
window.scrollTo({ top, behavior: 'smooth' });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Video hero fallback -------------------------------- */
|
||||||
|
function initHeroVideo() {
|
||||||
|
const video = document.querySelector('.hero-video-wrap video');
|
||||||
|
if (!video) return;
|
||||||
|
video.play().catch(() => {
|
||||||
|
// autoplay blocked — poster image is visible; nothing to do
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Testimonial auto-scroll (on mobile) ---------------- */
|
||||||
|
function initTestimonialScroll() {
|
||||||
|
const track = document.querySelector('.testimonial-track');
|
||||||
|
if (!track) return;
|
||||||
|
|
||||||
|
let isPaused = false;
|
||||||
|
track.addEventListener('mouseenter', () => { isPaused = true; });
|
||||||
|
track.addEventListener('mouseleave', () => { isPaused = false; });
|
||||||
|
|
||||||
|
// keyboard scroll within track
|
||||||
|
track.setAttribute('tabindex', '0');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Boot ---------------------------------------------- */
|
||||||
|
function boot() {
|
||||||
|
initScrollAnimations();
|
||||||
|
initCounters();
|
||||||
|
initFAQ();
|
||||||
|
initBASliders();
|
||||||
|
initSmoothScroll();
|
||||||
|
initHeroVideo();
|
||||||
|
initTestimonialScroll();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('DOMContentLoaded', boot);
|
||||||
|
} else {
|
||||||
|
boot();
|
||||||
|
}
|
||||||
|
})();
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
build_locations.py — Location page generator for floorithardwoodfloors.com
|
||||||
|
Reads data/locations.json + locations/_template.html
|
||||||
|
Outputs flat .html files: locations/{slug}.html
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
python3 build_locations.py
|
||||||
|
python3 build_locations.py --slug buffalo # rebuild one city only
|
||||||
|
python3 build_locations.py --list # list all cities in database
|
||||||
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
from pathlib import Path
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
SITE_ROOT = Path(__file__).parent
|
||||||
|
DATA_FILE = SITE_ROOT / "data" / "locations.json"
|
||||||
|
TEMPLATE_FILE = SITE_ROOT / "locations" / "_template.html"
|
||||||
|
OUTPUT_DIR = SITE_ROOT / "locations"
|
||||||
|
|
||||||
|
|
||||||
|
def build_faq_html(faqs: list) -> str:
|
||||||
|
"""Render FAQ list to HTML accordion items."""
|
||||||
|
items = []
|
||||||
|
for faq in faqs:
|
||||||
|
items.append(f""" <div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>{faq['q']}</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">{faq['a']}</div>
|
||||||
|
</div>
|
||||||
|
</div>""")
|
||||||
|
return "\n".join(items)
|
||||||
|
|
||||||
|
|
||||||
|
def render_page(location: dict, template: str) -> str:
|
||||||
|
"""Stamp all {{variable}} placeholders in template with location data."""
|
||||||
|
html = template
|
||||||
|
|
||||||
|
# Render complex fields first
|
||||||
|
html = html.replace("{{faq_items}}", build_faq_html(location.get("faqs", [])))
|
||||||
|
|
||||||
|
# Stamp all scalar fields
|
||||||
|
for key, value in location.items():
|
||||||
|
if isinstance(value, str):
|
||||||
|
html = html.replace(f"{{{{{key}}}}}", value)
|
||||||
|
|
||||||
|
return html
|
||||||
|
|
||||||
|
|
||||||
|
def build_one(location: dict, template: str, verbose: bool = True) -> Path:
|
||||||
|
"""Generate one location page. Returns output path."""
|
||||||
|
slug = location["slug"]
|
||||||
|
city = location.get("city", slug)
|
||||||
|
output_path = OUTPUT_DIR / f"{slug}.html"
|
||||||
|
|
||||||
|
html = render_page(location, template)
|
||||||
|
output_path.write_text(html, encoding="utf-8")
|
||||||
|
|
||||||
|
if verbose:
|
||||||
|
print(f" Built: locations/{slug}.html ({city}, {location.get('state','NY')})")
|
||||||
|
|
||||||
|
return output_path
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description="Build flat location HTML pages from JSON database.")
|
||||||
|
parser.add_argument("--slug", help="Build a single city by slug (e.g. buffalo)")
|
||||||
|
parser.add_argument("--list", action="store_true", help="List all cities in database")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# Validate paths
|
||||||
|
if not DATA_FILE.exists():
|
||||||
|
print(f"ERROR: data file not found: {DATA_FILE}")
|
||||||
|
sys.exit(1)
|
||||||
|
if not TEMPLATE_FILE.exists():
|
||||||
|
print(f"ERROR: template not found: {TEMPLATE_FILE}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
locations = json.loads(DATA_FILE.read_text(encoding="utf-8"))
|
||||||
|
template = TEMPLATE_FILE.read_text(encoding="utf-8")
|
||||||
|
|
||||||
|
if args.list:
|
||||||
|
print(f"\nLocations in database ({len(locations)} total):")
|
||||||
|
for loc in locations:
|
||||||
|
print(f" {loc['slug']:20s} {loc.get('city','')}, {loc.get('state','NY')}")
|
||||||
|
return
|
||||||
|
|
||||||
|
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
if args.slug:
|
||||||
|
matches = [l for l in locations if l["slug"] == args.slug]
|
||||||
|
if not matches:
|
||||||
|
print(f"ERROR: slug '{args.slug}' not found in database.")
|
||||||
|
sys.exit(1)
|
||||||
|
print(f"\nBuilding single location: {args.slug}")
|
||||||
|
build_one(matches[0], template)
|
||||||
|
else:
|
||||||
|
print(f"\nBuilding {len(locations)} location pages...")
|
||||||
|
built = []
|
||||||
|
for loc in locations:
|
||||||
|
path = build_one(loc, template)
|
||||||
|
built.append(path)
|
||||||
|
print(f"\nDone. {len(built)} pages written to locations/")
|
||||||
|
|
||||||
|
print(f"Completed at {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
build_services.py — Service page generator for floorithardwoodfloors.com
|
||||||
|
Reads data/services.json + services/_template.html
|
||||||
|
Outputs flat .html files: services/{slug}.html
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
python3 build_services.py
|
||||||
|
python3 build_services.py --slug floor-refinishing
|
||||||
|
python3 build_services.py --list
|
||||||
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
from pathlib import Path
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
SITE_ROOT = Path(__file__).parent
|
||||||
|
DATA_FILE = SITE_ROOT / "data" / "services.json"
|
||||||
|
TEMPLATE_FILE = SITE_ROOT / "services" / "_template.html"
|
||||||
|
OUTPUT_DIR = SITE_ROOT / "services"
|
||||||
|
|
||||||
|
|
||||||
|
def render_page(service: dict, template: str) -> str:
|
||||||
|
html = template
|
||||||
|
for key, value in service.items():
|
||||||
|
if isinstance(value, str):
|
||||||
|
html = html.replace(f"{{{{{key}}}}}", value)
|
||||||
|
return html
|
||||||
|
|
||||||
|
|
||||||
|
def build_one(service: dict, template: str, verbose: bool = True) -> Path:
|
||||||
|
slug = service["slug"]
|
||||||
|
output_path = OUTPUT_DIR / f"{slug}.html"
|
||||||
|
html = render_page(service, template)
|
||||||
|
output_path.write_text(html, encoding="utf-8")
|
||||||
|
if verbose:
|
||||||
|
print(f" Built: services/{slug}.html ({service.get('service_name', slug)})")
|
||||||
|
return output_path
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description="Build flat service HTML pages from JSON database.")
|
||||||
|
parser.add_argument("--slug", help="Build a single service by slug (e.g. floor-refinishing)")
|
||||||
|
parser.add_argument("--list", action="store_true", help="List all services in database")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if not DATA_FILE.exists():
|
||||||
|
print(f"ERROR: data file not found: {DATA_FILE}")
|
||||||
|
sys.exit(1)
|
||||||
|
if not TEMPLATE_FILE.exists():
|
||||||
|
print(f"ERROR: template not found: {TEMPLATE_FILE}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
services = json.loads(DATA_FILE.read_text(encoding="utf-8"))
|
||||||
|
template = TEMPLATE_FILE.read_text(encoding="utf-8")
|
||||||
|
|
||||||
|
if args.list:
|
||||||
|
print(f"\nServices in database ({len(services)} total):")
|
||||||
|
for svc in services:
|
||||||
|
print(f" {svc['slug']:30s} {svc.get('service_name','')}")
|
||||||
|
return
|
||||||
|
|
||||||
|
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
if args.slug:
|
||||||
|
matches = [s for s in services if s["slug"] == args.slug]
|
||||||
|
if not matches:
|
||||||
|
print(f"ERROR: slug '{args.slug}' not found in database.")
|
||||||
|
sys.exit(1)
|
||||||
|
print(f"\nBuilding single service: {args.slug}")
|
||||||
|
build_one(matches[0], template)
|
||||||
|
else:
|
||||||
|
print(f"\nBuilding {len(services)} service pages...")
|
||||||
|
built = []
|
||||||
|
for svc in services:
|
||||||
|
path = build_one(svc, template)
|
||||||
|
built.append(path)
|
||||||
|
print(f"\nDone. {len(built)} pages written to services/")
|
||||||
|
|
||||||
|
print(f"Completed at {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
<footer class="site-footer" role="contentinfo">
|
||||||
|
<div class="footer-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="footer-grid">
|
||||||
|
|
||||||
|
<div class="footer-brand">
|
||||||
|
<img src="/assets/images/logo-footer.png" alt="Floor It Hardwood Floors" style="height:52px;width:auto;object-fit:contain;margin-bottom:0.75rem;" onerror="this.style.display='none';this.nextElementSibling.style.display='block'">
|
||||||
|
<div class="footer-logo-text" style="display:none;">Floor <span>It</span></div>
|
||||||
|
<p>Western New York's trusted hardwood floor refinishing, restoration, and installation specialists. Serving Buffalo and Erie County with 75 years of combined experience.</p>
|
||||||
|
<div style="margin-top:1.5rem;display:flex;gap:0.75rem;flex-wrap:wrap;">
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Get an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--sm">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-col">
|
||||||
|
<h5>Services</h5>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/services/floor-refinishing.html">Floor Refinishing</a></li>
|
||||||
|
<li><a href="/services/floor-restoration.html">Floor Restoration</a></li>
|
||||||
|
<li><a href="/services/floor-sanding.html">Floor Sanding</a></li>
|
||||||
|
<li><a href="/services/floor-installation.html">Floor Installation</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-col">
|
||||||
|
<h5>Locations</h5>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/locations/buffalo.html">Buffalo, NY</a></li>
|
||||||
|
<li><a href="/locations/amherst.html">Amherst, NY</a></li>
|
||||||
|
<li><a href="/locations/williamsville.html">Williamsville, NY</a></li>
|
||||||
|
<li><a href="/locations/east-amherst.html">East Amherst, NY</a></li>
|
||||||
|
<li><a href="/locations/clarence.html">Clarence, NY</a></li>
|
||||||
|
<li><a href="/locations/lancaster.html">Lancaster, NY</a></li>
|
||||||
|
<li><a href="/locations/">All Service Areas</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-col">
|
||||||
|
<h5>Contact</h5>
|
||||||
|
<div class="footer-contact-list">
|
||||||
|
<div class="footer-contact-item">
|
||||||
|
<div class="footer-contact-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 0 1 1-1h2.153a1 1 0 0 1 .986.836l.74 4.435a1 1 0 0 1-.54 1.06l-1.548.773a11.037 11.037 0 0 0 6.105 6.105l.774-1.548a1 1 0 0 1 1.059-.54l4.435.74a1 1 0 0 1 .836.986V17a1 1 0 0 1-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>Phone</span>
|
||||||
|
<a href="tel:+17166021429">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer-contact-item">
|
||||||
|
<div class="footer-contact-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0 0 16 4H4a2 2 0 0 0-1.997 1.884z"/><path d="M18 8.118l-8 4-8-4V14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8.118z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>Email</span>
|
||||||
|
<a href="mailto:floorithardwoods@gmail.com">floorithardwoods@gmail.com</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer-contact-item">
|
||||||
|
<div class="footer-contact-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 1 1 9.9 9.9L10 18.9l-4.95-4.95a7 7 0 0 1 0-9.9zM10 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>Service Area</span>
|
||||||
|
<a href="https://maps.app.goo.gl/6HLbMaQuXVBy6rWB9" target="_blank" rel="noopener">Western NY & Erie County</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer-contact-item">
|
||||||
|
<div class="footer-contact-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16zm1-12a1 1 0 1 0-2 0v4a1 1 0 0 0 .293.707l2.828 2.829a1 1 0 1 0 1.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>Hours</span>
|
||||||
|
<p style="font-size:0.875rem;font-weight:600;color:#f0e8da;max-width:none;">Monday to Saturday: 8 AM to 5 PM</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="footer-bottom">
|
||||||
|
<p>© 2026 Floor It Hardwood Floors. All rights reserved.</p>
|
||||||
|
<nav class="footer-legal" aria-label="Legal">
|
||||||
|
<a href="/privacy/">Privacy Policy</a>
|
||||||
|
<a href="/terms/">Terms of Service</a>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
<header class="site-header" role="banner">
|
||||||
|
<div class="container">
|
||||||
|
<div class="header-inner">
|
||||||
|
|
||||||
|
<a href="/" class="header-logo" aria-label="Floor It Hardwood Floors">
|
||||||
|
<img src="/assets/images/logo-header.png" alt="Floor It Hardwood Floors" style="height:42px;width:auto;object-fit:contain;" onerror="this.style.display='none';this.nextElementSibling.style.display='block'">
|
||||||
|
<div style="display:none;">
|
||||||
|
<div class="header-logo-wordmark">Floor <span>It</span></div>
|
||||||
|
<div class="header-logo-sub">Hardwood Floors</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<nav class="header-nav" aria-label="Main navigation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<a href="/services/">Services</a>
|
||||||
|
<a href="/locations/">Locations</a>
|
||||||
|
<a href="/about/">About</a>
|
||||||
|
<a href="/reviews/">Reviews</a>
|
||||||
|
<a href="/blog/">Blog</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="header-cta">
|
||||||
|
<a href="tel:+17166021429" class="header-phone" aria-label="Call us at (716) 602-1429">(716) 602-1429</a>
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--sm">Get Estimate</a>
|
||||||
|
<button class="header-menu-btn" aria-label="Open menu" aria-expanded="false">
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="mobile-nav" aria-hidden="true">
|
||||||
|
<div class="mobile-nav-overlay"></div>
|
||||||
|
<div class="mobile-nav-panel" role="dialog" aria-label="Mobile navigation">
|
||||||
|
<button class="mobile-nav-close" aria-label="Close menu">×</button>
|
||||||
|
|
||||||
|
<nav class="mobile-nav-links" aria-label="Mobile navigation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<a href="/services/">Services</a>
|
||||||
|
<a href="/services/floor-refinishing/">Floor Refinishing</a>
|
||||||
|
<a href="/services/floor-restoration/">Floor Restoration</a>
|
||||||
|
<a href="/services/floor-sanding/">Floor Sanding</a>
|
||||||
|
<a href="/services/floor-installation/">Floor Installation</a>
|
||||||
|
<a href="/locations/">Locations</a>
|
||||||
|
<a href="/about/">About Us</a>
|
||||||
|
<a href="/reviews/">Reviews</a>
|
||||||
|
<a href="/blog/">Blog</a>
|
||||||
|
<a href="/contact/">Contact</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="mobile-nav-cta">
|
||||||
|
<a href="tel:+17166021429" class="mobile-nav-phone">(716) 602-1429</a>
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--full">Request Free Estimate</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,200 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Contact Floor It Hardwood Floors | Buffalo, NY (716) 602-1429</title>
|
||||||
|
<meta name="description" content="Request a free estimate or call (716) 602-1429. Floor It Hardwood Floors serves Buffalo and Erie County, NY. Mon-Sat 8AM-5PM.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/contact/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Contact</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Get in Touch</span>
|
||||||
|
<h1>Request Your Estimate</h1>
|
||||||
|
<p class="lead">Fill out the form below or call us directly. We respond within 1 business hour, Monday through Saturday.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Contact Information</span>
|
||||||
|
<h2>Reach Our Team</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
|
||||||
|
<div class="contact-info-list">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h5>Phone</h5>
|
||||||
|
<a href="tel:+17166021429">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z"/><path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h5>Email</h5>
|
||||||
|
<a href="mailto:floorithardwoods@gmail.com">floorithardwoods@gmail.com</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h5>Service Area</h5>
|
||||||
|
<a href="https://maps.app.goo.gl/6HLbMaQuXVBy6rWB9" target="_blank" rel="noopener">Western NY & Erie County</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h5>Business Hours</h5>
|
||||||
|
<p>Monday to Saturday: 8:00 AM to 5:00 PM<br>Sunday: Closed</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="margin-top:2.5rem;padding:1.5rem;background:var(--charcoal);border-radius:var(--radius-lg);color:var(--text-on-dark);">
|
||||||
|
<p style="font-size:var(--text-sm);font-weight:600;color:var(--amber);letter-spacing:0.08em;text-transform:uppercase;margin-bottom:0.75rem;">What Happens Next</p>
|
||||||
|
<ol style="display:flex;flex-direction:column;gap:0.75rem;max-width:none;">
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--ash);"><span style="color:var(--amber);font-weight:800;flex-shrink:0;min-width:1.25rem;">1.</span> We call or email you within 1 business hour</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--ash);"><span style="color:var(--amber);font-weight:800;flex-shrink:0;min-width:1.25rem;">2.</span> We schedule a free onsite visit at your convenience</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--ash);"><span style="color:var(--amber);font-weight:800;flex-shrink:0;min-width:1.25rem;">3.</span> You receive a detailed, multi-option quote within 2 business days</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Send Us a Message</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Property Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="city">City <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="city" name="city" autocomplete="address-level2" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="zip">Zip Code</label>
|
||||||
|
<input type="text" id="zip" name="zip" autocomplete="postal-code" inputmode="numeric" maxlength="5">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-grid form-grid--2" style="margin-top:1.25rem;">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="service">Service Needed <span aria-hidden="true">*</span></label>
|
||||||
|
<select id="service" name="service" required>
|
||||||
|
<option value="">Select a service</option>
|
||||||
|
<option value="refinishing">Floor Refinishing</option>
|
||||||
|
<option value="restoration">Floor Restoration</option>
|
||||||
|
<option value="sanding">Floor Sanding</option>
|
||||||
|
<option value="installation">Floor Installation</option>
|
||||||
|
<option value="unsure">Not Sure</option>
|
||||||
|
</select>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="condition">Floor Condition</label>
|
||||||
|
<select id="condition" name="condition">
|
||||||
|
<option value="">Select condition</option>
|
||||||
|
<option value="good">Good: Minor scratches</option>
|
||||||
|
<option value="fair">Fair: Visible wear</option>
|
||||||
|
<option value="poor">Poor: Major damage</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Describe the Issue</label>
|
||||||
|
<textarea id="message" name="message" placeholder="In a few sentences, describe the issue your floors are experiencing or what service you are looking for."></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Send My Request</button>
|
||||||
|
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
|
||||||
|
<p style="text-align:center;margin-top:1rem;font-size:var(--text-sm);color:var(--smoke);">Or call us directly: <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a></p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- MAP -->
|
||||||
|
<section class="section section--dark" style="padding-block:0;">
|
||||||
|
<iframe
|
||||||
|
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d185000!2d-78.85!3d42.89!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89d312819d5e0e05%3A0xe0f822ff0f825c28!2sErie%20County%2C%20NY!5e0!3m2!1sen!2sus!4v1"
|
||||||
|
width="100%"
|
||||||
|
height="400"
|
||||||
|
style="display:block;border:none;filter:grayscale(0.5) contrast(1.1);"
|
||||||
|
loading="lazy"
|
||||||
|
title="Floor It Hardwood Floors service area in Buffalo, NY"
|
||||||
|
referrerpolicy="no-referrer-when-downgrade"
|
||||||
|
aria-label="Map showing Floor It service area in Buffalo, NY">
|
||||||
|
</iframe>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,306 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"slug": "buffalo",
|
||||||
|
"city": "Buffalo",
|
||||||
|
"state": "NY",
|
||||||
|
"county": "Erie County",
|
||||||
|
"title": "Hardwood Floor Refinishing in Buffalo, NY | Floor It",
|
||||||
|
"meta_description": "Professional hardwood floor refinishing, restoration, and sanding in Buffalo, NY. 30+ years serving Erie County. 75 years combined experience. Call (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/locations/buffalo.html",
|
||||||
|
"schema_area": "Buffalo, NY",
|
||||||
|
"hero_eyebrow": "Buffalo, New York",
|
||||||
|
"hero_h1": "Hardwood Floor Refinishing in Buffalo, NY",
|
||||||
|
"hero_lead": "Western New York's most experienced hardwood floor specialists. 30+ years serving Buffalo homeowners, from historic Elmwood Village homes to modern neighborhoods throughout Erie County.",
|
||||||
|
"overview_eyebrow": "Serving Buffalo Since 1994",
|
||||||
|
"overview_h2": "Buffalo's Trusted Floor Refinishing Specialists",
|
||||||
|
"overview_body_1": "Buffalo's climate presents unique challenges for hardwood floors. High humidity in summer, dry winters, and the dramatic temperature swings that come with Western New York weather require expertise that only comes from decades of local experience.",
|
||||||
|
"overview_body_2": "Our team has worked on hundreds of Buffalo homes, from the historic older homes of the West Side and Elmwood Village to newer construction throughout the suburbs. We understand the wood species common to this region and how to bring out the best in each floor.",
|
||||||
|
"stat_1_num": "30+",
|
||||||
|
"stat_1_label": "Years Serving Buffalo",
|
||||||
|
"stat_1_sub": "Our primary market since we launched",
|
||||||
|
"stat_2_num": "500+",
|
||||||
|
"stat_2_label": "Buffalo Projects Completed",
|
||||||
|
"stat_2_sub": "Homes across every Buffalo neighborhood",
|
||||||
|
"stat_3_num": "24hr",
|
||||||
|
"stat_3_label": "Response Time",
|
||||||
|
"stat_3_sub": "We get back to every Buffalo inquiry",
|
||||||
|
"services_intro": "We provide all three core hardwood floor services throughout Buffalo and Erie County, with the same commercial-grade equipment and professional team on every project.",
|
||||||
|
"service_1_title": "Floor Refinishing Buffalo",
|
||||||
|
"service_1_body": "Multi-stage sanding, multiple stain options, and professional-grade sealing for Buffalo homes. Restore beauty and durability.",
|
||||||
|
"service_2_title": "Floor Restoration Buffalo",
|
||||||
|
"service_2_body": "Water damage, warping, and deep scratch repair common in Buffalo's older homes. Full restoration with insurance documentation support.",
|
||||||
|
"service_3_title": "Floor Sanding Buffalo",
|
||||||
|
"service_3_body": "Commercial dustless sanding throughout Buffalo. Multi-grit process for perfect surface preparation before staining and sealing.",
|
||||||
|
"form_h2": "Request a Buffalo Floor Estimate",
|
||||||
|
"form_address_label": "Buffalo Address",
|
||||||
|
"form_submit": "Send Buffalo Estimate Request",
|
||||||
|
"faqs": [
|
||||||
|
{
|
||||||
|
"q": "How does Buffalo's humidity affect hardwood floors?",
|
||||||
|
"a": "Buffalo's climate swings create real challenges. High summer humidity causes floors to expand and absorb moisture, while dry winters cause contraction. Our team accounts for seasonal conditions when scheduling refinishing projects and advises homeowners on maintaining proper humidity levels (35 to 55 percent) year-round to protect their investment."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "Can you restore old hardwood floors in historic Buffalo homes?",
|
||||||
|
"a": "Yes. Many Buffalo homes have original hardwood floors that are 80 to 100 years old or more. These floors are often superior to modern wood in terms of density and character. We have extensive experience restoring original oak, maple, and other species common in Buffalo's historic housing stock, bringing them back to their original beauty."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "How long does floor refinishing take in my Buffalo home?",
|
||||||
|
"a": "Standard refinishing takes 7 to 10 business days from project start to final coat cure. Restoration projects involving water damage or structural repair take 10 to 14 business days. We provide a detailed timeline during the onsite estimate and keep you informed throughout the project."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "Do you serve all Buffalo neighborhoods?",
|
||||||
|
"a": "Yes. We serve all Buffalo neighborhoods including Elmwood Village, Allentown, North Buffalo, South Buffalo, West Side, the East Side, and all surrounding suburbs throughout Erie County. Response time is the same 24 hours across all areas."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "amherst",
|
||||||
|
"city": "Amherst",
|
||||||
|
"state": "NY",
|
||||||
|
"county": "Erie County",
|
||||||
|
"title": "Hardwood Floor Refinishing in Amherst, NY | Floor It",
|
||||||
|
"meta_description": "Professional hardwood floor refinishing and restoration in Amherst, NY. Floor It serves Erie County homeowners with 75 years combined experience. Call (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/locations/amherst.html",
|
||||||
|
"schema_area": "Amherst, NY",
|
||||||
|
"hero_eyebrow": "Amherst, New York",
|
||||||
|
"hero_h1": "Hardwood Floor Refinishing in Amherst, NY",
|
||||||
|
"hero_lead": "Trusted hardwood floor refinishing, restoration, and installation for Amherst homeowners. Professional results, 24-hour response time, serving the entire Amherst community.",
|
||||||
|
"overview_eyebrow": "Amherst Specialists",
|
||||||
|
"overview_h2": "Floor Refinishing Services in Amherst, NY",
|
||||||
|
"overview_body_1": "Amherst homeowners deserve hardwood floor specialists who understand the local community and the homes in it. Floor It brings 75 years of combined experience and commercial-grade equipment to every Amherst project.",
|
||||||
|
"overview_body_2": "From residential refinishing to water damage restoration, we handle every aspect of hardwood floor care. Amherst is part of our core Erie County service area, and we respond to all inquiries within 24 hours and schedule onsite visits at your convenience.",
|
||||||
|
"stat_1_num": "75+",
|
||||||
|
"stat_1_label": "Years Combined Experience",
|
||||||
|
"stat_1_sub": "Across our full team",
|
||||||
|
"stat_2_num": "24hr",
|
||||||
|
"stat_2_label": "Response Time",
|
||||||
|
"stat_2_sub": "For all Amherst inquiries",
|
||||||
|
"stat_3_num": "4.9",
|
||||||
|
"stat_3_label": "Google Rating",
|
||||||
|
"stat_3_sub": "Verified customer reviews",
|
||||||
|
"services_intro": "All three of our core hardwood floor services are available throughout Amherst, delivered with the same professional equipment and standards we bring to every Erie County project.",
|
||||||
|
"service_1_title": "Floor Refinishing Amherst",
|
||||||
|
"service_1_body": "Multi-stage sanding, multiple stain options, and professional-grade sealing for Amherst homes. Restore beauty and durability.",
|
||||||
|
"service_2_title": "Floor Restoration Amherst",
|
||||||
|
"service_2_body": "Water damage, warping, and deep scratch repair for Amherst homes. Full restoration with insurance documentation support where needed.",
|
||||||
|
"service_3_title": "Floor Sanding Amherst",
|
||||||
|
"service_3_body": "Commercial dustless sanding for Amherst residents. Clean, safe, and effective. Multi-grit process for a perfect surface.",
|
||||||
|
"form_h2": "Request an Amherst Floor Estimate",
|
||||||
|
"form_address_label": "Amherst Address",
|
||||||
|
"form_submit": "Send Amherst Estimate Request",
|
||||||
|
"faqs": [
|
||||||
|
{
|
||||||
|
"q": "How quickly can you respond to Amherst inquiries?",
|
||||||
|
"a": "We respond to all Amherst estimate requests within 24 hours. Amherst is within our core Erie County service area, so scheduling is fast. We can typically arrange an onsite visit within a few days of initial contact."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "What types of floors do you refinish in Amherst?",
|
||||||
|
"a": "We refinish all types of hardwood in Amherst homes including solid oak, maple, cherry, walnut, engineered hardwood, and parquet. We assess each floor individually and recommend the appropriate approach based on wood species, thickness, and current condition."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "Are you licensed and insured to work in Amherst?",
|
||||||
|
"a": "Yes. Floor It is fully licensed and insured to work throughout Erie County including Amherst. We carry all required insurance and adhere to all New York State regulations for contractor work in residential homes."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "williamsville",
|
||||||
|
"city": "Williamsville",
|
||||||
|
"state": "NY",
|
||||||
|
"county": "Erie County",
|
||||||
|
"title": "Hardwood Floor Refinishing in Williamsville, NY | Floor It",
|
||||||
|
"meta_description": "Expert hardwood floor refinishing and restoration in Williamsville, NY. Serving Erie County with 75 years combined experience. Licensed and insured. Call (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/locations/williamsville.html",
|
||||||
|
"schema_area": "Williamsville, NY",
|
||||||
|
"hero_eyebrow": "Williamsville, New York",
|
||||||
|
"hero_h1": "Hardwood Floor Refinishing in Williamsville, NY",
|
||||||
|
"hero_lead": "Premium hardwood floor refinishing and restoration for Williamsville homes. Upscale residential expertise with the highest finish standards in Erie County.",
|
||||||
|
"overview_eyebrow": "Williamsville Specialists",
|
||||||
|
"overview_h2": "Expert Floor Refinishing in Williamsville, NY",
|
||||||
|
"overview_body_1": "Williamsville homes deserve a level of craftsmanship that matches their quality. Floor It brings 75 years of combined experience to every Williamsville project, applying the same professional-grade equipment and attention to detail that has made us Western New York's most trusted floor refinishing team.",
|
||||||
|
"overview_body_2": "Whether you have original hardwood floors in a classic Williamsville home or newer engineered wood in a modern build, our team assesses each floor individually and recommends the right approach for lasting, beautiful results.",
|
||||||
|
"stat_1_num": "75+",
|
||||||
|
"stat_1_label": "Years Combined Experience",
|
||||||
|
"stat_1_sub": "Serving Western New York",
|
||||||
|
"stat_2_num": "24hr",
|
||||||
|
"stat_2_label": "Response Time",
|
||||||
|
"stat_2_sub": "For Williamsville inquiries",
|
||||||
|
"stat_3_num": "4.9",
|
||||||
|
"stat_3_label": "Google Rating",
|
||||||
|
"stat_3_sub": "Verified customer reviews",
|
||||||
|
"services_intro": "Complete hardwood floor services available throughout Williamsville: refinishing, restoration, and sanding with commercial-grade equipment.",
|
||||||
|
"service_1_title": "Floor Refinishing Williamsville",
|
||||||
|
"service_1_body": "Premium multi-stage sanding, staining, and sealing for Williamsville homes. Stain sample approval before full project begins.",
|
||||||
|
"service_2_title": "Floor Restoration Williamsville",
|
||||||
|
"service_2_body": "Water damage, deep scratch, and structural floor repair. We restore Williamsville floors to like-new condition with insurance documentation available.",
|
||||||
|
"service_3_title": "Floor Sanding Williamsville",
|
||||||
|
"service_3_body": "Dustless sanding for Williamsville homes. Clean, safe process that prepares your floor perfectly for staining and sealing.",
|
||||||
|
"form_h2": "Request a Williamsville Floor Estimate",
|
||||||
|
"form_address_label": "Williamsville Address",
|
||||||
|
"form_submit": "Send Williamsville Estimate Request",
|
||||||
|
"faqs": [
|
||||||
|
{
|
||||||
|
"q": "Do you work on upscale homes in Williamsville?",
|
||||||
|
"a": "Yes. We regularly work on premium homes throughout Williamsville and have extensive experience with high-end wood species, custom stain colors, and finish options that match the quality of the home. We treat every project with the same professional care regardless of home value."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "Can you match the stain on my existing Williamsville floors?",
|
||||||
|
"a": "In most cases, yes. We apply a test sample directly on your floor before proceeding so you can verify the color match. For custom blends, our team mixes stains on-site to get the closest possible match to your existing floors."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "How much disruption should I expect during the project?",
|
||||||
|
"a": "We use dustless sanding equipment that dramatically reduces airborne particles. You will need to vacate the rooms being worked on during sanding and for 24 to 48 hours after final coat application. We work efficiently to minimize disruption to your daily routine."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "east-amherst",
|
||||||
|
"city": "East Amherst",
|
||||||
|
"state": "NY",
|
||||||
|
"county": "Erie County",
|
||||||
|
"title": "Hardwood Floor Refinishing in East Amherst, NY | Floor It",
|
||||||
|
"meta_description": "Professional hardwood floor refinishing and restoration in East Amherst, NY. Erie County specialists with 75 years combined experience. Call (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/locations/east-amherst.html",
|
||||||
|
"schema_area": "East Amherst, NY",
|
||||||
|
"hero_eyebrow": "East Amherst, New York",
|
||||||
|
"hero_h1": "Hardwood Floor Refinishing in East Amherst, NY",
|
||||||
|
"hero_lead": "Professional hardwood floor services for East Amherst homeowners. The same expert team, commercial equipment, and quality results we bring to every Erie County home.",
|
||||||
|
"overview_eyebrow": "East Amherst Service Area",
|
||||||
|
"overview_h2": "Floor Refinishing Services in East Amherst, NY",
|
||||||
|
"overview_body_1": "East Amherst homeowners trust Floor It for hardwood floor refinishing, restoration, and sanding. We bring 75 years of combined experience and commercial-grade equipment to every project, applying the same professional standards throughout Erie County.",
|
||||||
|
"overview_body_2": "We respond to all East Amherst inquiries within 24 hours and schedule onsite visits at your convenience. Our team is familiar with the home styles, wood species, and floor conditions common throughout the East Amherst area.",
|
||||||
|
"stat_1_num": "75+",
|
||||||
|
"stat_1_label": "Years Combined Experience",
|
||||||
|
"stat_1_sub": "Serving Western New York",
|
||||||
|
"stat_2_num": "24hr",
|
||||||
|
"stat_2_label": "Response Time",
|
||||||
|
"stat_2_sub": "For East Amherst inquiries",
|
||||||
|
"stat_3_num": "4.9",
|
||||||
|
"stat_3_label": "Google Rating",
|
||||||
|
"stat_3_sub": "Verified customer reviews",
|
||||||
|
"services_intro": "All core hardwood floor services available throughout East Amherst, delivered with the same professional equipment and team on every project.",
|
||||||
|
"service_1_title": "Floor Refinishing East Amherst",
|
||||||
|
"service_1_body": "Multi-stage sanding, multiple stain options, and professional sealing for East Amherst homes. Restore beauty and durability.",
|
||||||
|
"service_2_title": "Floor Restoration East Amherst",
|
||||||
|
"service_2_body": "Water damage, deep scratch, and structural floor repair for East Amherst homeowners. Full restoration with insurance documentation available.",
|
||||||
|
"service_3_title": "Floor Sanding East Amherst",
|
||||||
|
"service_3_body": "Commercial dustless sanding for East Amherst homes. Safe, clean, effective surface preparation.",
|
||||||
|
"form_h2": "Request an East Amherst Floor Estimate",
|
||||||
|
"form_address_label": "East Amherst Address",
|
||||||
|
"form_submit": "Send East Amherst Estimate Request",
|
||||||
|
"faqs": [
|
||||||
|
{
|
||||||
|
"q": "Do you serve East Amherst as part of your regular route?",
|
||||||
|
"a": "Yes. East Amherst is within our core Erie County service area. We schedule visits to East Amherst regularly and can typically arrange an onsite estimate within a few days of initial contact."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "What hardwood floor services do you offer in East Amherst?",
|
||||||
|
"a": "We offer full hardwood floor refinishing, restoration, and sanding throughout East Amherst. This covers everything from surface re-coating to complete restoration of water-damaged or structurally compromised floors."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "Is your dustless sanding safe for families with children and pets?",
|
||||||
|
"a": "Yes. Our dustless sanding system captures fine particles at the source, dramatically reducing airborne dust. We also use low-VOC finishes when possible. We recommend vacating the work area during sanding and for 24 to 48 hours after final coat application."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "clarence",
|
||||||
|
"city": "Clarence",
|
||||||
|
"state": "NY",
|
||||||
|
"county": "Erie County",
|
||||||
|
"title": "Hardwood Floor Refinishing in Clarence, NY | Floor It",
|
||||||
|
"meta_description": "Trusted hardwood floor refinishing and restoration in Clarence, NY. Floor It serves Erie County with 75 years combined experience. Licensed and insured. (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/locations/clarence.html",
|
||||||
|
"schema_area": "Clarence, NY",
|
||||||
|
"hero_eyebrow": "Clarence, New York",
|
||||||
|
"hero_h1": "Hardwood Floor Refinishing in Clarence, NY",
|
||||||
|
"hero_lead": "Hardwood floor refinishing, restoration, and installation for Clarence homeowners. Reliable scheduling, professional results, and a team that Erie County has trusted for over 30 years.",
|
||||||
|
"overview_eyebrow": "Clarence Service Area",
|
||||||
|
"overview_h2": "Floor Refinishing Services in Clarence, NY",
|
||||||
|
"overview_body_1": "Clarence homeowners trust Floor It for professional hardwood floor care. Our team brings 75 years of combined experience to every project in Clarence, delivering the same quality results we provide throughout Erie County.",
|
||||||
|
"overview_body_2": "We respond to all Clarence inquiries within 24 hours. From initial estimate to completed project, our process is straightforward and transparent: detailed quotes, clear timelines, and professional workmanship every step of the way.",
|
||||||
|
"stat_1_num": "75+",
|
||||||
|
"stat_1_label": "Years Combined Experience",
|
||||||
|
"stat_1_sub": "Serving Western New York",
|
||||||
|
"stat_2_num": "24hr",
|
||||||
|
"stat_2_label": "Response Time",
|
||||||
|
"stat_2_sub": "For Clarence inquiries",
|
||||||
|
"stat_3_num": "4.9",
|
||||||
|
"stat_3_label": "Google Rating",
|
||||||
|
"stat_3_sub": "Verified customer reviews",
|
||||||
|
"services_intro": "Complete hardwood floor services throughout Clarence, with the same professional team and equipment on every project.",
|
||||||
|
"service_1_title": "Floor Refinishing Clarence",
|
||||||
|
"service_1_body": "Multi-stage sanding, multiple stain options, and durable professional sealing for Clarence homes.",
|
||||||
|
"service_2_title": "Floor Restoration Clarence",
|
||||||
|
"service_2_body": "Water damage, scratch, and structural floor repair for Clarence homeowners. Insurance documentation available.",
|
||||||
|
"service_3_title": "Floor Sanding Clarence",
|
||||||
|
"service_3_body": "Commercial dustless sanding for Clarence homes. Safe, clean, thorough preparation for refinishing.",
|
||||||
|
"form_h2": "Request a Clarence Floor Estimate",
|
||||||
|
"form_address_label": "Clarence Address",
|
||||||
|
"form_submit": "Send Clarence Estimate Request",
|
||||||
|
"faqs": [
|
||||||
|
{
|
||||||
|
"q": "How long has Floor It been serving the Clarence area?",
|
||||||
|
"a": "Floor It has been serving Erie County, including Clarence, for over 30 years. Clarence is within our core service area and we have completed projects throughout the community."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "What is the timeline for a refinishing project in Clarence?",
|
||||||
|
"a": "Standard refinishing typically takes 7 to 10 business days. Restoration projects can take 10 to 14 business days depending on the extent of damage. We provide a full timeline during the onsite estimate visit before any work begins."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "Do you provide written quotes for Clarence projects?",
|
||||||
|
"a": "Yes. Every project receives a detailed written quote within 2 business days of the onsite estimate visit. The quote includes multiple options, clear pricing, and a project timeline, so you can make an informed decision with no pressure."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "lancaster",
|
||||||
|
"city": "Lancaster",
|
||||||
|
"state": "NY",
|
||||||
|
"county": "Erie County",
|
||||||
|
"title": "Hardwood Floor Refinishing in Lancaster, NY | Floor It",
|
||||||
|
"meta_description": "Professional hardwood floor refinishing and restoration in Lancaster, NY. Serving Erie County with 75 years combined experience. Licensed and insured. Call (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/locations/lancaster.html",
|
||||||
|
"schema_area": "Lancaster, NY",
|
||||||
|
"hero_eyebrow": "Lancaster, New York",
|
||||||
|
"hero_h1": "Hardwood Floor Refinishing in Lancaster, NY",
|
||||||
|
"hero_lead": "Professional hardwood floor refinishing and restoration for Lancaster homeowners. The same expert team and commercial equipment that Buffalo homeowners have trusted for over 30 years.",
|
||||||
|
"overview_eyebrow": "Lancaster Service Area",
|
||||||
|
"overview_h2": "Floor Refinishing Services in Lancaster, NY",
|
||||||
|
"overview_body_1": "Lancaster homeowners trust Floor It for professional hardwood floor care. We bring 75 years of combined experience and commercial-grade equipment to every Lancaster project, maintaining the same standards throughout Erie County.",
|
||||||
|
"overview_body_2": "Our team responds to all Lancaster inquiries within 24 hours. We schedule onsite visits at your convenience and provide detailed written quotes within 2 business days of the visit. No obligation, no pressure.",
|
||||||
|
"stat_1_num": "75+",
|
||||||
|
"stat_1_label": "Years Combined Experience",
|
||||||
|
"stat_1_sub": "Serving Western New York",
|
||||||
|
"stat_2_num": "24hr",
|
||||||
|
"stat_2_label": "Response Time",
|
||||||
|
"stat_2_sub": "For Lancaster inquiries",
|
||||||
|
"stat_3_num": "4.9",
|
||||||
|
"stat_3_label": "Google Rating",
|
||||||
|
"stat_3_sub": "Verified customer reviews",
|
||||||
|
"services_intro": "Full hardwood floor services available throughout Lancaster: refinishing, restoration, and sanding with professional-grade equipment.",
|
||||||
|
"service_1_title": "Floor Refinishing Lancaster",
|
||||||
|
"service_1_body": "Multi-stage sanding, multiple stain options, and durable professional sealing for Lancaster homes.",
|
||||||
|
"service_2_title": "Floor Restoration Lancaster",
|
||||||
|
"service_2_body": "Water damage, scratch, and structural floor repair for Lancaster homeowners. Insurance documentation support available.",
|
||||||
|
"service_3_title": "Floor Sanding Lancaster",
|
||||||
|
"service_3_body": "Commercial dustless sanding for Lancaster homes. Safe for families and pets, thorough preparation.",
|
||||||
|
"form_h2": "Request a Lancaster Floor Estimate",
|
||||||
|
"form_address_label": "Lancaster Address",
|
||||||
|
"form_submit": "Send Lancaster Estimate Request",
|
||||||
|
"faqs": [
|
||||||
|
{
|
||||||
|
"q": "Do you serve Lancaster as part of your regular route?",
|
||||||
|
"a": "Yes. Lancaster is within our Erie County service area and we schedule visits there regularly. We can typically arrange an onsite estimate within a few days of your initial inquiry."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "What hardwood species do you work with in Lancaster homes?",
|
||||||
|
"a": "We work with all common hardwood species found in Lancaster homes: oak, maple, cherry, walnut, ash, and engineered hardwood. We also work with less common domestic and exotic species. Each floor is assessed individually before we recommend an approach."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"q": "How do I prepare my Lancaster home before your team arrives?",
|
||||||
|
"a": "Remove furniture and area rugs from the rooms being worked on. Secure or cover any valuables in adjacent areas. We handle all floor preparation, sanding, and finishing. We advise keeping pets and children out of the work area and for 24 to 48 hours after final coat application."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"slug": "floor-refinishing",
|
||||||
|
"title": "Hardwood Floor Refinishing in Buffalo, NY | Floor It Hardwood Floors",
|
||||||
|
"meta_description": "Professional hardwood floor refinishing in Buffalo and Erie County, NY. Multi-stage sanding, custom stain colors, dustless process. Free estimate. Call (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/services/floor-refinishing.html",
|
||||||
|
"service_name": "Floor Refinishing",
|
||||||
|
"hero_eyebrow": "Buffalo and Erie County",
|
||||||
|
"hero_h1": "Hardwood Floor Refinishing",
|
||||||
|
"hero_lead": "Restore worn, dull, or damaged hardwood floors to their original beauty with our multi-stage refinishing process. Custom stain colors available.",
|
||||||
|
"hero_image": "/assets/images/project-1-after.webp",
|
||||||
|
"intro_h2": "Expert Floor Refinishing in Western New York",
|
||||||
|
"intro_body_1": "Floor refinishing is the most effective way to transform tired, worn hardwood without the cost of full replacement. Our process begins with a thorough assessment of your floors, including wood species, existing finish condition, and depth of scratches, to determine the exact approach your floors need.",
|
||||||
|
"intro_body_2": "We use dustless sanding equipment that minimizes dust throughout the project, protecting your home and family. After sanding, we apply your chosen stain and seal with a professional-grade topcoat built for long-lasting durability.",
|
||||||
|
"process_intro": "Our refinishing process follows a proven multi-stage system that delivers consistent, beautiful results on every project.",
|
||||||
|
"step_1_title": "Floor Assessment",
|
||||||
|
"step_1_body": "We inspect wood species, thickness, existing finish, and damage level to determine the right sanding grit sequence and stain approach.",
|
||||||
|
"step_2_title": "Dustless Sanding",
|
||||||
|
"step_2_body": "Our sanding equipment removes the existing finish and opens the wood grain. Multiple grit passes deliver a perfectly smooth, even surface.",
|
||||||
|
"step_3_title": "Stain and Seal",
|
||||||
|
"step_3_body": "We apply a test patch for your approval before proceeding with the full stain. Finish with your selected topcoat: oil-based, water-based, or wax.",
|
||||||
|
"benefit_1_title": "Custom Stain Colors",
|
||||||
|
"benefit_1_body": "From natural clear finishes to deep espresso tones. We apply samples directly to your floor during the estimate visit so you can approve before we begin.",
|
||||||
|
"benefit_2_title": "Dustless Sanding",
|
||||||
|
"benefit_2_body": "Our sanding equipment captures dust at the source, keeping your home clean and your family comfortable throughout the project.",
|
||||||
|
"benefit_3_title": "Long-Lasting Finish",
|
||||||
|
"benefit_3_body": "Professional-grade polyurethane, oil-modified, and water-based topcoats that stand up to daily wear, pets, and Buffalo winters.",
|
||||||
|
"benefit_4_title": "Free On-Site Estimate",
|
||||||
|
"benefit_4_body": "We visit your home, assess the floors, and provide a detailed written estimate before any work begins. No guessing, no surprises.",
|
||||||
|
"faq_1_q": "How long does floor refinishing take?",
|
||||||
|
"faq_1_a": "Most rooms take two to three days: one day for sanding, one for stain and first coat, one for final coats. We provide a precise timeline during the estimate.",
|
||||||
|
"faq_2_q": "How many times can a hardwood floor be refinished?",
|
||||||
|
"faq_2_a": "Solid hardwood can typically be refinished multiple times over its lifetime depending on the wood thickness. Engineered hardwood depends on the wear layer. We measure your floor during the assessment.",
|
||||||
|
"faq_3_q": "Do I need to leave my home during refinishing?",
|
||||||
|
"faq_3_a": "With our dustless sanding system you can usually remain in your home. During staining and sealing we recommend staying out for several hours per coat for ventilation. We advise based on your specific layout.",
|
||||||
|
"form_h2": "Get Your Free Refinishing Estimate",
|
||||||
|
"form_submit": "Request Refinishing Estimate"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "floor-restoration",
|
||||||
|
"title": "Hardwood Floor Restoration in Buffalo, NY | Floor It Hardwood Floors",
|
||||||
|
"meta_description": "Hardwood floor restoration for water damage, deep scratches, warping, and structural damage in Buffalo, NY. Insurance documentation provided. Call (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/services/floor-restoration.html",
|
||||||
|
"service_name": "Floor Restoration",
|
||||||
|
"hero_eyebrow": "Buffalo and Erie County",
|
||||||
|
"hero_h1": "Hardwood Floor Restoration",
|
||||||
|
"hero_lead": "Water damage, deep scratches, warping, cupping, and structural damage. We diagnose, repair, and restore your hardwood floors completely.",
|
||||||
|
"hero_image": "/assets/images/project-2-before.webp",
|
||||||
|
"intro_h2": "Full-Service Floor Restoration in Western New York",
|
||||||
|
"intro_body_1": "Restoration goes beyond refinishing. When floors have suffered water damage, deep gouging, board warping, nail pops, or subfloor issues, a simple sand and seal is not enough. Our restoration process starts with a structural diagnosis to identify every issue before any work begins.",
|
||||||
|
"intro_body_2": "We repair or replace damaged boards, address subfloor problems, re-nail loose planks, and eliminate gaps, then complete the process with our full refinishing system. We also provide written documentation for insurance claims with before-and-after photography and a detailed scope-of-work report.",
|
||||||
|
"process_intro": "Restoration requires a thorough assessment and multi-phase repair process before refinishing can begin.",
|
||||||
|
"step_1_title": "Damage Assessment",
|
||||||
|
"step_1_body": "We inspect for water damage, structural movement, subfloor issues, and board condition. All findings are documented with photography for insurance purposes.",
|
||||||
|
"step_2_title": "Structural Repair",
|
||||||
|
"step_2_body": "Replace damaged boards, re-nail loose planks, fill gaps, address subfloor problems, and eliminate squeaks before any finishing work begins.",
|
||||||
|
"step_3_title": "Refinish and Seal",
|
||||||
|
"step_3_body": "Once the floor is structurally sound, we complete the full refinishing process including sanding, stain, and topcoat for a seamless final result.",
|
||||||
|
"benefit_1_title": "Insurance Documentation",
|
||||||
|
"benefit_1_body": "Written scope-of-work reports and before and after photography for your insurance adjuster. We work with your timeline to support the claims process.",
|
||||||
|
"benefit_2_title": "Board Replacement",
|
||||||
|
"benefit_2_body": "We source matching replacement boards for damaged sections by species, grain, and width so repairs are invisible after finishing.",
|
||||||
|
"benefit_3_title": "Subfloor Repair",
|
||||||
|
"benefit_3_body": "Water damage often affects the subfloor. We assess and repair subfloor issues to ensure your finished floor is structurally sound.",
|
||||||
|
"benefit_4_title": "Cupping and Warping",
|
||||||
|
"benefit_4_body": "Cupped or warped boards from humidity changes can often be corrected without replacement. We assess each board individually to minimize material cost.",
|
||||||
|
"faq_1_q": "Can water-damaged floors be saved?",
|
||||||
|
"faq_1_a": "In most cases, yes, if the damage is addressed promptly. Floors that have dried out and cupped can often be sanded flat. Severely swollen or buckled boards may need replacement, but we always maximize what can be saved.",
|
||||||
|
"faq_2_q": "Do you provide insurance estimates?",
|
||||||
|
"faq_2_a": "Yes. We provide written damage assessments, scope-of-work documentation, and before-and-after photography suitable for insurance claims. We have experience working alongside adjusters.",
|
||||||
|
"faq_3_q": "How long does restoration take?",
|
||||||
|
"faq_3_a": "Restoration timelines vary by damage extent. Minor repairs and refinishing can be completed in three to four days. Extensive structural work with board replacement may take longer. We provide a detailed timeline during the assessment.",
|
||||||
|
"form_h2": "Get Your Free Restoration Assessment",
|
||||||
|
"form_submit": "Request Restoration Estimate"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "floor-sanding",
|
||||||
|
"title": "Hardwood Floor Sanding in Buffalo, NY | Floor It Hardwood Floors",
|
||||||
|
"meta_description": "Professional hardwood floor sanding in Buffalo and Erie County, NY. Dustless equipment, multi-grit process for a perfect surface. Free estimate. Call (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/services/floor-sanding.html",
|
||||||
|
"service_name": "Floor Sanding",
|
||||||
|
"hero_eyebrow": "Buffalo and Erie County",
|
||||||
|
"hero_h1": "Professional Hardwood Floor Sanding",
|
||||||
|
"hero_lead": "Commercial-grade dustless sanding equipment and a precise multi-grit process deliver the perfect surface every time.",
|
||||||
|
"hero_image": "/assets/images/refinishing-machine.webp",
|
||||||
|
"intro_h2": "Professional Floor Sanding in Western New York",
|
||||||
|
"intro_body_1": "Sanding is the foundation of any successful floor refinishing project. Our sanding technicians use professional belt sanders paired with dust containment systems for clean, precise results across every project.",
|
||||||
|
"intro_body_2": "Our multi-grit process starts aggressive to remove the existing finish and flatten the surface, then moves through progressively finer grits to deliver a surface that is perfectly smooth and ready for stain. We edge-sand and handle corners with care so there are no swirl marks or chatter marks.",
|
||||||
|
"process_intro": "Proper sanding requires the right sequence of grits and careful technique for each section of your floor.",
|
||||||
|
"step_1_title": "Initial Assessment",
|
||||||
|
"step_1_body": "We check moisture content, identify problem areas like cupping or high-grain boards, and select the correct starting grit for your specific floor condition.",
|
||||||
|
"step_2_title": "Multi-Grit Sanding",
|
||||||
|
"step_2_body": "We progress through multiple grit sequences for a consistently smooth surface across the entire floor, from the field to the edges.",
|
||||||
|
"step_3_title": "Edge and Detail Work",
|
||||||
|
"step_3_body": "Edges are sanded with an edger, corners done by hand. Every square inch is sanded to the same standard as the center of the room.",
|
||||||
|
"benefit_1_title": "Dustless Equipment",
|
||||||
|
"benefit_1_body": "Our sanding equipment captures dust at the source, keeping your home cleaner and your family more comfortable throughout the process.",
|
||||||
|
"benefit_2_title": "No Swirl Marks",
|
||||||
|
"benefit_2_body": "We use the correct grit sequence and orbital finishing to eliminate chatter and swirl marks that are common with inexperienced operators.",
|
||||||
|
"benefit_3_title": "Moisture Control",
|
||||||
|
"benefit_3_body": "We check wood moisture content before sanding and monitor throughout. Sanding wood at the wrong moisture level causes problems that show up months later.",
|
||||||
|
"benefit_4_title": "Clean Results",
|
||||||
|
"benefit_4_body": "Our process and equipment leave your floor ready for stain the same day, keeping your project on schedule with minimal disruption.",
|
||||||
|
"faq_1_q": "How many times can a floor be sanded?",
|
||||||
|
"faq_1_a": "Solid hardwood can typically be sanded multiple times over its lifetime. Engineered hardwood depends on the wear layer thickness. We measure your floor before committing to sanding.",
|
||||||
|
"faq_2_q": "Will sanding remove deep scratches?",
|
||||||
|
"faq_2_a": "Yes. Sanding removes the surface layer of wood, taking most scratches with it. Very deep gouges may require wood filler before sanding. We assess each area during the estimate.",
|
||||||
|
"faq_3_q": "How dusty is the sanding process?",
|
||||||
|
"faq_3_a": "With our dust containment system, very little dust escapes into your home. We seal off doorways and use containment equipment so the rest of your home stays clean.",
|
||||||
|
"form_h2": "Get Your Free Sanding Estimate",
|
||||||
|
"form_submit": "Request Sanding Estimate"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "floor-installation",
|
||||||
|
"title": "Hardwood Floor Installation in Buffalo, NY | Floor It Hardwood Floors",
|
||||||
|
"meta_description": "New hardwood floor installation in Buffalo and Erie County, NY. Solid and engineered hardwood, proper subfloor prep, professional installation. Free estimate. Call (716) 602-1429.",
|
||||||
|
"canonical": "https://floorithardwoodfloors.com/services/floor-installation.html",
|
||||||
|
"service_name": "Floor Installation",
|
||||||
|
"hero_eyebrow": "Buffalo and Erie County",
|
||||||
|
"hero_h1": "Hardwood Floor Installation",
|
||||||
|
"hero_lead": "New hardwood floors installed with precision. Quality materials, proper subfloor preparation, and expert craftsmanship built to last.",
|
||||||
|
"hero_image": "/assets/images/project-1-after.webp",
|
||||||
|
"intro_h2": "Expert Hardwood Floor Installation in Western New York",
|
||||||
|
"intro_body_1": "Installing new hardwood floors is an investment that lasts decades, but only if installed correctly. Improper subfloor preparation, inadequate acclimation, or poor fastening technique shows up years later as squeaks, gaps, and movement. We do it right the first time.",
|
||||||
|
"intro_body_2": "We work with solid hardwood, engineered hardwood, and parquet in a wide range of species and widths. Our installation process begins with a subfloor assessment and moisture testing, followed by a proper acclimation period for your new material.",
|
||||||
|
"process_intro": "Proper hardwood installation requires careful preparation before a single board goes down.",
|
||||||
|
"step_1_title": "Material Selection",
|
||||||
|
"step_1_body": "We help you select the right species, width, and grade for your space based on your subfloor type, lifestyle, and existing flooring if matching is needed.",
|
||||||
|
"step_2_title": "Subfloor Preparation",
|
||||||
|
"step_2_body": "We assess subfloor flatness, moisture content, and structural integrity. Any issues are addressed before installation begins. This is where most problems start.",
|
||||||
|
"step_3_title": "Installation and Finish",
|
||||||
|
"step_3_body": "Boards are installed with proper fastening pattern and spacing. We complete with the full sand, stain, and seal process for a finished result.",
|
||||||
|
"benefit_1_title": "All Wood Species",
|
||||||
|
"benefit_1_body": "Oak, maple, hickory, cherry, walnut, and more. We source quality material from trusted suppliers and can match existing floors in your home.",
|
||||||
|
"benefit_2_title": "Subfloor Expertise",
|
||||||
|
"benefit_2_body": "The subfloor makes or breaks an installation. We assess, level, and prepare every subfloor to manufacturer specifications before any boards go down.",
|
||||||
|
"benefit_3_title": "Moisture Testing",
|
||||||
|
"benefit_3_body": "Wood and subfloor moisture content must be within range of each other before installation. We test and acclimate all material on-site.",
|
||||||
|
"benefit_4_title": "Built to Last",
|
||||||
|
"benefit_4_body": "Properly installed hardwood floors last for decades. We stand behind our installation workmanship and ensure every board is set correctly.",
|
||||||
|
"faq_1_q": "How long does hardwood floor installation take?",
|
||||||
|
"faq_1_a": "Most rooms take two to three days including subfloor prep, installation, then sand and finish. Larger projects or those requiring extensive subfloor work take longer. We provide a detailed schedule during the estimate.",
|
||||||
|
"faq_2_q": "Solid versus engineered hardwood, which is right for me?",
|
||||||
|
"faq_2_a": "Solid hardwood is ideal for above-grade installations on wood subfloors. Engineered hardwood is better for concrete subfloors, basements, or high-humidity areas. We help you make the right choice for your situation.",
|
||||||
|
"faq_3_q": "Can you match my existing hardwood floors?",
|
||||||
|
"faq_3_a": "In most cases, yes. We sample your existing floor and source matching material by species, width, and grade. After installation and finishing, new and existing sections blend well.",
|
||||||
|
"form_h2": "Get Your Free Installation Estimate",
|
||||||
|
"form_submit": "Request Installation Estimate"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,633 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Buffalo, NY Hardwood Floor Refinishing & Restoration | Floor It</title>
|
||||||
|
<meta name="description" content="Western New York's trusted hardwood floor refinishing, restoration, and installation specialists. 75 years combined experience. Serving Buffalo and Erie County. Request an estimate today.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"url": "https://floorithardwoodfloors.com",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"address": { "@type": "PostalAddress", "addressLocality": "Buffalo", "addressRegion": "NY", "addressCountry": "US" },
|
||||||
|
"areaServed": ["Buffalo", "Amherst", "Williamsville", "East Amherst", "Clarence", "Lancaster"],
|
||||||
|
"openingHours": "Mo-Sa 08:00-17:00",
|
||||||
|
"aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": "50" }
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="hero" aria-label="Hero">
|
||||||
|
<div class="hero-video-wrap">
|
||||||
|
<video autoplay muted loop playsinline poster="/assets/images/hero-poster.jpg" aria-hidden="true">
|
||||||
|
<source src="/assets/videos/hero-video-background.webm" type="video/webm">
|
||||||
|
<source src="/assets/videos/hero-video-background.mp4" type="video/mp4">
|
||||||
|
</video>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="hero-content">
|
||||||
|
<div class="hero-eyebrow">
|
||||||
|
<div class="hero-eyebrow-line"></div>
|
||||||
|
<span>Serving Western New York Since 1994</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1>Floor Refinishing & Restoration in Buffalo, NY</h1>
|
||||||
|
|
||||||
|
<p class="hero-sub">Whether you need refinishing, restoration, or new installation, our team brings 75 years of combined expertise to every project in Erie County.</p>
|
||||||
|
|
||||||
|
<div class="hero-actions">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="hero-trust">
|
||||||
|
<div class="hero-trust-stat">
|
||||||
|
<strong><span data-count="75" data-suffix="+">75+</span></strong>
|
||||||
|
<span>Years Combined Experience</span>
|
||||||
|
</div>
|
||||||
|
<div class="hero-trust-stat">
|
||||||
|
<strong><span data-count="500" data-suffix="+">500+</span></strong>
|
||||||
|
<span>Projects Completed</span>
|
||||||
|
</div>
|
||||||
|
<div class="hero-trust-stat">
|
||||||
|
<strong><span data-count="4.9" data-suffix="/5">4.9/5</span></strong>
|
||||||
|
<span>Customer Rating</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- TRUST BAR -->
|
||||||
|
<div class="trust-bar">
|
||||||
|
<div class="container">
|
||||||
|
<div class="trust-bar-inner">
|
||||||
|
<div class="trust-stat" data-animate="up">
|
||||||
|
<span class="trust-stat-number" data-count="75" data-suffix="+">75+</span>
|
||||||
|
<span class="trust-stat-label">Years Combined Experience</span>
|
||||||
|
</div>
|
||||||
|
<div class="trust-stat" data-animate="up" data-delay="2">
|
||||||
|
<span class="trust-stat-number" data-count="500" data-suffix="+">500+</span>
|
||||||
|
<span class="trust-stat-label">Local Projects</span>
|
||||||
|
</div>
|
||||||
|
<div class="trust-stat" data-animate="up" data-delay="3">
|
||||||
|
<span class="trust-stat-number" data-count="4.9" data-suffix=" Stars">4.9</span>
|
||||||
|
<span class="trust-stat-label">Google Rating</span>
|
||||||
|
</div>
|
||||||
|
<div class="trust-stat" data-animate="up" data-delay="4">
|
||||||
|
<span class="trust-stat-number">24hr</span>
|
||||||
|
<span class="trust-stat-label">Response Time</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- SERVICES -->
|
||||||
|
<section class="section section--light" id="services">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header">
|
||||||
|
<span class="eyebrow">What We Do</span>
|
||||||
|
<h2>Flooring Services We Offer</h2>
|
||||||
|
<p class="lead">Complete hardwood floor solutions for Buffalo-area homes, delivered with professional-grade equipment and care.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="services-grid-2x2">
|
||||||
|
<div class="service-card" data-animate="up">
|
||||||
|
<div class="service-card-img">
|
||||||
|
<img src="/assets/images/project-1-after.webp" alt="Beautifully refinished hardwood floor restored to original beauty" loading="lazy">
|
||||||
|
</div>
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Refinishing</h3>
|
||||||
|
<p>Multi-stage sanding, custom staining, and professional sealing that restores your floors to their original beauty. Over 100 stain color options.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-refinishing.html" class="service-card-link">Learn More →</a>
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--sm">Get Estimate</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="service-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="service-card-img">
|
||||||
|
<img src="/assets/images/project-2-before.webp" alt="Water damaged hardwood floor awaiting professional restoration" loading="lazy">
|
||||||
|
</div>
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Restoration</h3>
|
||||||
|
<p>Water damage, deep scratches, warping, and structural damage repaired with precision. We also provide documentation for insurance claims.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-restoration.html" class="service-card-link">Learn More →</a>
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--sm">Get Estimate</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="service-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="service-card-img">
|
||||||
|
<img src="/assets/images/refinishing-machine.webp" alt="Professional floor sanding equipment used by Floor It Hardwood Floors" loading="lazy">
|
||||||
|
</div>
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Sanding</h3>
|
||||||
|
<p>Commercial-grade HEPA dust containment equipment. Multi-grit sanding process delivers a perfectly prepared surface every time.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-sanding.html" class="service-card-link">Learn More →</a>
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--sm">Get Estimate</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="service-card" data-animate="up" data-delay="4">
|
||||||
|
<div class="service-card-img">
|
||||||
|
<img src="/assets/images/project-3-before.webp" alt="Hardwood floor in Buffalo area home ready for professional installation and transformation" loading="lazy">
|
||||||
|
</div>
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Installation</h3>
|
||||||
|
<p>Beautiful new hardwood floors installed professionally. Quality materials, precise installation, built to last generations in your home.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-installation.html" class="service-card-link">Learn More →</a>
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--sm">Get Estimate</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- 3-STEP PROCESS -->
|
||||||
|
<section class="section section--dark" id="process">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">How It Works</span>
|
||||||
|
<h2>Get Started in 3 Easy Steps</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="process-steps">
|
||||||
|
<div class="process-step" data-animate="up">
|
||||||
|
<div class="process-step-num">1</div>
|
||||||
|
<h3>Schedule Your Estimate</h3>
|
||||||
|
<p>Call (716) 602-1429 or fill out our form. We respond within 24 hours to arrange your free onsite visit.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="process-step" data-animate="up" data-delay="2">
|
||||||
|
<div class="process-step-num">2</div>
|
||||||
|
<h3>Onsite Consultation</h3>
|
||||||
|
<p>We measure your floor, discuss all options, and answer every question so you know exactly what to expect.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="process-step" data-animate="up" data-delay="3">
|
||||||
|
<div class="process-step-num">3</div>
|
||||||
|
<h3>Receive Your Quote</h3>
|
||||||
|
<p>Within 2 business days you receive a detailed, multi-option quote with clear pricing and timeline.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center mt-12" data-animate="up" data-delay="4">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Schedule Your Estimate</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ABOUT / CRAFTSMANSHIP -->
|
||||||
|
<section class="section section--alt" id="about-preview">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Breathe with Assurance</span>
|
||||||
|
<h2>Professional Floor Refinishing in Western NY</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Craftsmanship is the heart of our operation. We believe true craftsmanship combines skill, passion, and attention to detail.</p>
|
||||||
|
<p style="margin-top:1.25rem;color:var(--smoke);">Our team brings 75 years of combined experience to every job. We work not only in Buffalo but also in East Amherst, Amherst, Clarence, Williamsville, and Lancaster, serving homeowners with dedication across Western New York.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">At Floor It Hardwood Floors, we understand that every scratch has its story. After three decades in this business, we are experts at breathing new life into your Buffalo home's flooring.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/about/" class="btn btn--primary">Our Story</a>
|
||||||
|
<a href="/contact/" class="btn btn--outline-dark">Get Started</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-xl);overflow:hidden;aspect-ratio:4/5;display:flex;align-items:center;justify-content:center;">
|
||||||
|
<img src="/assets/images/refinishing-machine.webp" alt="Floor It professional refinishing equipment" style="width:100%;height:100%;object-fit:cover;" loading="lazy">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- GALLERY -->
|
||||||
|
<section class="section section--bark" id="gallery">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Our Work</span>
|
||||||
|
<h2>Recent Restorations</h2>
|
||||||
|
<p class="lead">Before and after results from projects completed throughout Buffalo and Erie County.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="gallery-grid" data-animate="up">
|
||||||
|
<div class="gallery-item">
|
||||||
|
<img src="/assets/images/project-1-before.webp" alt="Hardwood floor before refinishing, worn surface" loading="lazy">
|
||||||
|
<div class="gallery-item-label">Before</div>
|
||||||
|
</div>
|
||||||
|
<div class="gallery-item">
|
||||||
|
<img src="/assets/images/project-1-after.webp" alt="Hardwood floor after professional refinishing, restored" loading="lazy">
|
||||||
|
<div class="gallery-item-label gallery-item-label--after">After</div>
|
||||||
|
</div>
|
||||||
|
<div class="gallery-item">
|
||||||
|
<img src="/assets/images/project-2-before.webp" alt="Water damaged hardwood floor before restoration" loading="lazy">
|
||||||
|
<div class="gallery-item-label">Before</div>
|
||||||
|
</div>
|
||||||
|
<div class="gallery-item">
|
||||||
|
<img src="/assets/images/project-3-before.webp" alt="Dull worn hardwood floor before sanding" loading="lazy">
|
||||||
|
<div class="gallery-item-label">Before</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center mt-12">
|
||||||
|
<a href="tel:+17166021429" class="btn btn--primary">Call to Discuss Your Project</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- WHY CHOOSE US -->
|
||||||
|
<section class="section section--mid" id="why">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Our Difference</span>
|
||||||
|
<h2>Why Floor It Hardwood Floors</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="display:grid;grid-template-columns:repeat(2,1fr);gap:2.5rem;">
|
||||||
|
<div class="benefit-card" data-animate="left">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Revitalize Your Space</h4>
|
||||||
|
<p>Our refinishing process begins with a detailed assessment of your floors to determine the best course of action. Nothing is assumed.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="benefit-card" data-animate="right">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 0 0 .95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 0 0-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 0 0-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 0 0-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 0 0 .951-.69l1.519-4.674z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Customized Solutions</h4>
|
||||||
|
<p>Every floor is unique. We provide tailored solutions with over 100 stain color options, matching your specific vision for your home.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="benefit-card" data-animate="left" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>HEPA Dustless Sanding</h4>
|
||||||
|
<p>We utilize the latest dustless sanding technology to minimize mess, protect your family's air quality, and ensure a clean, safe environment.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="benefit-card" data-animate="right" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Lasting Durable Finishes</h4>
|
||||||
|
<p>We apply durable topcoats that protect your floors from scratches, moisture, and UV damage. Built for long-lasting results.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- TESTIMONIALS -->
|
||||||
|
<section class="section section--light" id="reviews">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Customer Reviews</span>
|
||||||
|
<h2>What Our Customers Say</h2>
|
||||||
|
<p>Rated 4.9 out of 5 across Google Reviews. Buffalo and Erie County homeowners trust Floor It.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
<div class="testimonial-card" data-animate="up">
|
||||||
|
<div class="testimonial-stars">
|
||||||
|
<span>★</span><span>★</span><span>★</span><span>★</span><span>★</span>
|
||||||
|
</div>
|
||||||
|
<p class="testimonial-text">"Excellent work! They transformed our tired, worn floors into something beautiful. Professional, efficient, and honest with their pricing. Will absolutely use them again."</p>
|
||||||
|
<div class="testimonial-author">
|
||||||
|
<div class="testimonial-avatar" aria-hidden="true">J</div>
|
||||||
|
<div class="testimonial-info">
|
||||||
|
<strong>Jennifer M.</strong>
|
||||||
|
<span>Buffalo, NY</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="testimonial-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="testimonial-stars">
|
||||||
|
<span>★</span><span>★</span><span>★</span><span>★</span><span>★</span>
|
||||||
|
</div>
|
||||||
|
<p class="testimonial-text">"Highly recommend! The team was professional, clean, and completed everything on schedule. Our floors look incredible, like they are brand new."</p>
|
||||||
|
<div class="testimonial-author">
|
||||||
|
<div class="testimonial-avatar" aria-hidden="true">S</div>
|
||||||
|
<div class="testimonial-info">
|
||||||
|
<strong>Sarah K.</strong>
|
||||||
|
<span>Amherst, NY</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="testimonial-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="testimonial-stars">
|
||||||
|
<span>★</span><span>★</span><span>★</span><span>★</span><span>★</span>
|
||||||
|
</div>
|
||||||
|
<p class="testimonial-text">"Professional service from start to finish. They genuinely cared about the quality of the work and it shows. Absolutely worth the investment for any homeowner."</p>
|
||||||
|
<div class="testimonial-author">
|
||||||
|
<div class="testimonial-avatar" aria-hidden="true">M</div>
|
||||||
|
<div class="testimonial-info">
|
||||||
|
<strong>Michael D.</strong>
|
||||||
|
<span>Hamburg, NY</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center mt-10">
|
||||||
|
<a href="/reviews/" class="btn btn--outline-dark">Read All Reviews</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--alt" id="faq">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Common Questions</span>
|
||||||
|
<h2>Floor Refinishing FAQs</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);line-height:1.75;">Still have questions? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a> and we will walk you through everything.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How does humidity affect the floor refinishing process?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Humidity plays a significant role in refinishing. High humidity prolongs drying time and can cause cloudy or uneven finishes. Low humidity causes finishes to dry too quickly, leading to brush marks. Floor It monitors humidity levels throughout the process and advises clients on maintaining optimal conditions after completion.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How do I know if my floors need refinishing or just re-coating?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">If your floors have minor surface scratches and the finish is dull but intact, a re-coat may suffice. If you see deep scratches, wear through to the wood, discoloration, or significant damage, full refinishing is necessary. We can assess your floors during the free onsite visit and recommend the right approach.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>What safety measures does Floor It take during refinishing?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">We use proper PPE including masks, gloves, and eye protection. Our equipment is regularly maintained. We use HEPA dust containment systems to reduce airborne particles and use low-VOC products when possible. We follow all local regulations and ensure proper ventilation throughout every project.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>What types of wood floors can Floor It refinish?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">We refinish solid hardwood, engineered hardwood, and parquet floors. We work with a wide range of species including oak, maple, and other hardwoods. Our team is skilled in handling the unique characteristics of each wood type.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Can you provide custom stain colors?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. We offer over 100 stain colors and can mix custom colors to match your vision. During the consultation we will apply a sample directly to your floor for approval before proceeding with the full project. Your satisfaction with the color is confirmed before we begin.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- LOCATIONS -->
|
||||||
|
<section class="section section--dark" id="locations">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Service Area</span>
|
||||||
|
<h2>Areas We Serve</h2>
|
||||||
|
<p>Proudly serving homeowners throughout Buffalo and Erie County, Western New York.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="location-grid" data-animate="up">
|
||||||
|
<a href="/locations/buffalo.html" class="location-card">
|
||||||
|
<div class="location-card-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="location-card-text">
|
||||||
|
<strong>Buffalo, NY</strong>
|
||||||
|
<span>Primary Service Hub</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/amherst.html" class="location-card">
|
||||||
|
<div class="location-card-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="location-card-text">
|
||||||
|
<strong>Amherst, NY</strong>
|
||||||
|
<span>Erie County</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/williamsville.html" class="location-card">
|
||||||
|
<div class="location-card-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="location-card-text">
|
||||||
|
<strong>Williamsville, NY</strong>
|
||||||
|
<span>Erie County</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/east-amherst.html" class="location-card">
|
||||||
|
<div class="location-card-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="location-card-text">
|
||||||
|
<strong>East Amherst, NY</strong>
|
||||||
|
<span>Erie County</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/clarence.html" class="location-card">
|
||||||
|
<div class="location-card-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="location-card-text">
|
||||||
|
<strong>Clarence, NY</strong>
|
||||||
|
<span>Erie County</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="/locations/lancaster.html" class="location-card">
|
||||||
|
<div class="location-card-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="location-card-text">
|
||||||
|
<strong>Lancaster, NY</strong>
|
||||||
|
<span>Erie County</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center mt-10">
|
||||||
|
<a href="/locations/" class="btn btn--outline-light">View All Service Areas</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section" id="estimate">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Free Estimate</span>
|
||||||
|
<h2>Request a Free Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Fill out the form and we will respond within 1 business hour. No obligation.</p>
|
||||||
|
|
||||||
|
<div class="contact-info-list" style="margin-top:2.5rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h5>Call Us Directly</h5>
|
||||||
|
<a href="tel:+17166021429">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z"/><path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h5>Email</h5>
|
||||||
|
<a href="mailto:floorithardwoods@gmail.com">floorithardwoods@gmail.com</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h5>Hours</h5>
|
||||||
|
<p>Monday to Saturday: 8 AM to 5 PM</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-grid form-grid--2" style="margin-top:1.25rem;">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="service">Service Needed <span aria-hidden="true">*</span></label>
|
||||||
|
<select id="service" name="service" required>
|
||||||
|
<option value="">Select a service</option>
|
||||||
|
<option value="refinishing">Floor Refinishing</option>
|
||||||
|
<option value="restoration">Floor Restoration</option>
|
||||||
|
<option value="sanding">Floor Sanding</option>
|
||||||
|
<option value="installation">Floor Installation</option>
|
||||||
|
<option value="unsure">Not Sure</option>
|
||||||
|
</select>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="condition">Floor Condition</label>
|
||||||
|
<select id="condition" name="condition">
|
||||||
|
<option value="">Select condition</option>
|
||||||
|
<option value="good">Good: Minor scratches</option>
|
||||||
|
<option value="fair">Fair: Visible wear</option>
|
||||||
|
<option value="poor">Poor: Major damage</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe the floor issue, room size, or anything else that helps us prepare for the visit."></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Schedule My Estimate</button>
|
||||||
|
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,258 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>{{title}}</title>
|
||||||
|
<meta name="description" content="{{meta_description}}">
|
||||||
|
<link rel="canonical" href="{{canonical}}">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"url": "{{canonical}}",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"address": {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
"addressLocality": "{{city}}",
|
||||||
|
"addressRegion": "{{state}}",
|
||||||
|
"addressCountry": "US"
|
||||||
|
},
|
||||||
|
"areaServed": "{{schema_area}}",
|
||||||
|
"openingHours": "Mo-Sa 08:00-17:00",
|
||||||
|
"aggregateRating": {
|
||||||
|
"@type": "AggregateRating",
|
||||||
|
"ratingValue": "4.9",
|
||||||
|
"reviewCount": "50"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/locations/">Locations</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>{{city}}, {{state}}</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">{{hero_eyebrow}}</span>
|
||||||
|
<h1>{{hero_h1}}</h1>
|
||||||
|
<p class="lead">{{hero_lead}}</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- OVERVIEW -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">{{overview_eyebrow}}</span>
|
||||||
|
<h2>{{overview_h2}}</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">{{overview_body_1}}</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">{{overview_body_2}}</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="display:flex;flex-direction:column;gap:1rem;">
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">{{stat_1_num}}</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">{{stat_1_label}}</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">{{stat_1_sub}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">{{stat_2_num}}</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">{{stat_2_label}}</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">{{stat_2_sub}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">{{stat_3_num}}</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">{{stat_3_label}}</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">{{stat_3_sub}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SERVICES -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">{{city}} Services</span>
|
||||||
|
<h2>Hardwood Floor Services in {{city}}, {{state}}</h2>
|
||||||
|
<p>{{services_intro}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
<div class="service-card" data-animate="up">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>{{service_1_title}}</h3>
|
||||||
|
<p>{{service_1_body}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-refinishing/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>{{service_2_title}}</h3>
|
||||||
|
<p>{{service_2_body}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-restoration/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>{{service_3_title}}</h3>
|
||||||
|
<p>{{service_3_body}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-sanding/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">{{city}} FAQ</span>
|
||||||
|
<h2>Common Questions from {{city}} Homeowners</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question specific to your {{city}} home? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
{{faq_items}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">{{city}} Estimate</span>
|
||||||
|
<h2>{{form_h2}}</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">{{form_h2}}</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="location" value="{{city}}, {{state}}">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">{{form_address_label}} <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="service">Service Needed <span aria-hidden="true">*</span></label>
|
||||||
|
<select id="service" name="service" required>
|
||||||
|
<option value="">Select a service</option>
|
||||||
|
<option value="refinishing">Floor Refinishing</option>
|
||||||
|
<option value="restoration">Floor Restoration</option>
|
||||||
|
<option value="sanding">Floor Sanding</option>
|
||||||
|
<option value="installation">Floor Installation</option>
|
||||||
|
<option value="unsure">Not Sure</option>
|
||||||
|
</select>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">{{form_submit}}</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,284 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Refinishing in Amherst, NY | Floor It</title>
|
||||||
|
<meta name="description" content="Professional hardwood floor refinishing and restoration in Amherst, NY. Floor It serves Erie County homeowners with 75 years combined experience. Call (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/locations/amherst.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"url": "https://floorithardwoodfloors.com/locations/amherst.html",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"address": {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
"addressLocality": "Amherst",
|
||||||
|
"addressRegion": "NY",
|
||||||
|
"addressCountry": "US"
|
||||||
|
},
|
||||||
|
"areaServed": "Amherst, NY",
|
||||||
|
"openingHours": "Mo-Sa 08:00-17:00",
|
||||||
|
"aggregateRating": {
|
||||||
|
"@type": "AggregateRating",
|
||||||
|
"ratingValue": "4.9",
|
||||||
|
"reviewCount": "50"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/locations/">Locations</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Amherst, NY</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Amherst, New York</span>
|
||||||
|
<h1>Hardwood Floor Refinishing in Amherst, NY</h1>
|
||||||
|
<p class="lead">Trusted hardwood floor refinishing, restoration, and installation for Amherst homeowners. Professional results, 24-hour response time, serving the entire Amherst community.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- OVERVIEW -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Amherst Specialists</span>
|
||||||
|
<h2>Floor Refinishing Services in Amherst, NY</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">Amherst homeowners deserve hardwood floor specialists who understand the local community and the homes in it. Floor It brings 75 years of combined experience and commercial-grade equipment to every Amherst project.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">From residential refinishing to water damage restoration, we handle every aspect of hardwood floor care. Amherst is part of our core Erie County service area, and we respond to all inquiries within 24 hours and schedule onsite visits at your convenience.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="display:flex;flex-direction:column;gap:1rem;">
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">75+</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Years Combined Experience</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Across our full team</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">24hr</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Response Time</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">For all Amherst inquiries</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">4.9</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Google Rating</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Verified customer reviews</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SERVICES -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Amherst Services</span>
|
||||||
|
<h2>Hardwood Floor Services in Amherst, NY</h2>
|
||||||
|
<p>All three of our core hardwood floor services are available throughout Amherst, delivered with the same professional equipment and standards we bring to every Erie County project.</p>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
<div class="service-card" data-animate="up">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Refinishing Amherst</h3>
|
||||||
|
<p>Multi-stage sanding, multiple stain options, and professional-grade sealing for Amherst homes. Restore beauty and durability.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-refinishing/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Restoration Amherst</h3>
|
||||||
|
<p>Water damage, warping, and deep scratch repair for Amherst homes. Full restoration with insurance documentation support where needed.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-restoration/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Sanding Amherst</h3>
|
||||||
|
<p>Commercial dustless sanding for Amherst residents. Clean, safe, and effective. Multi-grit process for a perfect surface.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-sanding/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Amherst FAQ</span>
|
||||||
|
<h2>Common Questions from Amherst Homeowners</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question specific to your Amherst home? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How quickly can you respond to Amherst inquiries?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">We respond to all Amherst estimate requests within 24 hours. Amherst is within our core Erie County service area, so scheduling is fast. We can typically arrange an onsite visit within a few days of initial contact.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>What types of floors do you refinish in Amherst?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">We refinish all types of hardwood in Amherst homes including solid oak, maple, cherry, walnut, engineered hardwood, and parquet. We assess each floor individually and recommend the appropriate approach based on wood species, thickness, and current condition.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Are you licensed and insured to work in Amherst?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. Floor It is fully licensed and insured to work throughout Erie County including Amherst. We carry all required insurance and adhere to all New York State regulations for contractor work in residential homes.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Amherst Estimate</span>
|
||||||
|
<h2>Request an Amherst Floor Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Request an Amherst Floor Estimate</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="location" value="Amherst, NY">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Amherst Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="service">Service Needed <span aria-hidden="true">*</span></label>
|
||||||
|
<select id="service" name="service" required>
|
||||||
|
<option value="">Select a service</option>
|
||||||
|
<option value="refinishing">Floor Refinishing</option>
|
||||||
|
<option value="restoration">Floor Restoration</option>
|
||||||
|
<option value="sanding">Floor Sanding</option>
|
||||||
|
<option value="installation">Floor Installation</option>
|
||||||
|
<option value="unsure">Not Sure</option>
|
||||||
|
</select>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Send Amherst Estimate Request</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,293 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Refinishing in Buffalo, NY | Floor It</title>
|
||||||
|
<meta name="description" content="Professional hardwood floor refinishing, restoration, and sanding in Buffalo, NY. 30+ years serving Erie County. 75 years combined experience. Call (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/locations/buffalo.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"url": "https://floorithardwoodfloors.com/locations/buffalo.html",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"address": {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
"addressLocality": "Buffalo",
|
||||||
|
"addressRegion": "NY",
|
||||||
|
"addressCountry": "US"
|
||||||
|
},
|
||||||
|
"areaServed": "Buffalo, NY",
|
||||||
|
"openingHours": "Mo-Sa 08:00-17:00",
|
||||||
|
"aggregateRating": {
|
||||||
|
"@type": "AggregateRating",
|
||||||
|
"ratingValue": "4.9",
|
||||||
|
"reviewCount": "50"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/locations/">Locations</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Buffalo, NY</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Buffalo, New York</span>
|
||||||
|
<h1>Hardwood Floor Refinishing in Buffalo, NY</h1>
|
||||||
|
<p class="lead">Western New York's most experienced hardwood floor specialists. 30+ years serving Buffalo homeowners, from historic Elmwood Village homes to modern neighborhoods throughout Erie County.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- OVERVIEW -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Serving Buffalo Since 1994</span>
|
||||||
|
<h2>Buffalo's Trusted Floor Refinishing Specialists</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">Buffalo's climate presents unique challenges for hardwood floors. High humidity in summer, dry winters, and the dramatic temperature swings that come with Western New York weather require expertise that only comes from decades of local experience.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">Our team has worked on hundreds of Buffalo homes, from the historic older homes of the West Side and Elmwood Village to newer construction throughout the suburbs. We understand the wood species common to this region and how to bring out the best in each floor.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="display:flex;flex-direction:column;gap:1rem;">
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">30+</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Years Serving Buffalo</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Our primary market since we launched</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">500+</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Buffalo Projects Completed</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Homes across every Buffalo neighborhood</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">24hr</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Response Time</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">We get back to every Buffalo inquiry</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SERVICES -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Buffalo Services</span>
|
||||||
|
<h2>Hardwood Floor Services in Buffalo, NY</h2>
|
||||||
|
<p>We provide all three core hardwood floor services throughout Buffalo and Erie County, with the same commercial-grade equipment and professional team on every project.</p>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
<div class="service-card" data-animate="up">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Refinishing Buffalo</h3>
|
||||||
|
<p>Multi-stage sanding, multiple stain options, and professional-grade sealing for Buffalo homes. Restore beauty and durability.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-refinishing/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Restoration Buffalo</h3>
|
||||||
|
<p>Water damage, warping, and deep scratch repair common in Buffalo's older homes. Full restoration with insurance documentation support.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-restoration/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Sanding Buffalo</h3>
|
||||||
|
<p>Commercial dustless sanding throughout Buffalo. Multi-grit process for perfect surface preparation before staining and sealing.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-sanding/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Buffalo FAQ</span>
|
||||||
|
<h2>Common Questions from Buffalo Homeowners</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question specific to your Buffalo home? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How does Buffalo's humidity affect hardwood floors?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Buffalo's climate swings create real challenges. High summer humidity causes floors to expand and absorb moisture, while dry winters cause contraction. Our team accounts for seasonal conditions when scheduling refinishing projects and advises homeowners on maintaining proper humidity levels (35 to 55 percent) year-round to protect their investment.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Can you restore old hardwood floors in historic Buffalo homes?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. Many Buffalo homes have original hardwood floors that are 80 to 100 years old or more. These floors are often superior to modern wood in terms of density and character. We have extensive experience restoring original oak, maple, and other species common in Buffalo's historic housing stock, bringing them back to their original beauty.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How long does floor refinishing take in my Buffalo home?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Standard refinishing takes 7 to 10 business days from project start to final coat cure. Restoration projects involving water damage or structural repair take 10 to 14 business days. We provide a detailed timeline during the onsite estimate and keep you informed throughout the project.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Do you serve all Buffalo neighborhoods?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. We serve all Buffalo neighborhoods including Elmwood Village, Allentown, North Buffalo, South Buffalo, West Side, the East Side, and all surrounding suburbs throughout Erie County. Response time is the same 24 hours across all areas.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Buffalo Estimate</span>
|
||||||
|
<h2>Request a Buffalo Floor Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Request a Buffalo Floor Estimate</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="location" value="Buffalo, NY">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Buffalo Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="service">Service Needed <span aria-hidden="true">*</span></label>
|
||||||
|
<select id="service" name="service" required>
|
||||||
|
<option value="">Select a service</option>
|
||||||
|
<option value="refinishing">Floor Refinishing</option>
|
||||||
|
<option value="restoration">Floor Restoration</option>
|
||||||
|
<option value="sanding">Floor Sanding</option>
|
||||||
|
<option value="installation">Floor Installation</option>
|
||||||
|
<option value="unsure">Not Sure</option>
|
||||||
|
</select>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Send Buffalo Estimate Request</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,284 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Refinishing in Clarence, NY | Floor It</title>
|
||||||
|
<meta name="description" content="Trusted hardwood floor refinishing and restoration in Clarence, NY. Floor It serves Erie County with 75 years combined experience. Licensed and insured. (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/locations/clarence.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"url": "https://floorithardwoodfloors.com/locations/clarence.html",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"address": {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
"addressLocality": "Clarence",
|
||||||
|
"addressRegion": "NY",
|
||||||
|
"addressCountry": "US"
|
||||||
|
},
|
||||||
|
"areaServed": "Clarence, NY",
|
||||||
|
"openingHours": "Mo-Sa 08:00-17:00",
|
||||||
|
"aggregateRating": {
|
||||||
|
"@type": "AggregateRating",
|
||||||
|
"ratingValue": "4.9",
|
||||||
|
"reviewCount": "50"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/locations/">Locations</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Clarence, NY</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Clarence, New York</span>
|
||||||
|
<h1>Hardwood Floor Refinishing in Clarence, NY</h1>
|
||||||
|
<p class="lead">Hardwood floor refinishing, restoration, and installation for Clarence homeowners. Reliable scheduling, professional results, and a team that Erie County has trusted for over 30 years.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- OVERVIEW -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Clarence Service Area</span>
|
||||||
|
<h2>Floor Refinishing Services in Clarence, NY</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">Clarence homeowners trust Floor It for professional hardwood floor care. Our team brings 75 years of combined experience to every project in Clarence, delivering the same quality results we provide throughout Erie County.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">We respond to all Clarence inquiries within 24 hours. From initial estimate to completed project, our process is straightforward and transparent: detailed quotes, clear timelines, and professional workmanship every step of the way.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="display:flex;flex-direction:column;gap:1rem;">
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">75+</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Years Combined Experience</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Serving Western New York</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">24hr</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Response Time</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">For Clarence inquiries</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">4.9</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Google Rating</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Verified customer reviews</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SERVICES -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Clarence Services</span>
|
||||||
|
<h2>Hardwood Floor Services in Clarence, NY</h2>
|
||||||
|
<p>Complete hardwood floor services throughout Clarence, with the same professional team and equipment on every project.</p>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
<div class="service-card" data-animate="up">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Refinishing Clarence</h3>
|
||||||
|
<p>Multi-stage sanding, multiple stain options, and durable professional sealing for Clarence homes.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-refinishing/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Restoration Clarence</h3>
|
||||||
|
<p>Water damage, scratch, and structural floor repair for Clarence homeowners. Insurance documentation available.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-restoration/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Sanding Clarence</h3>
|
||||||
|
<p>Commercial dustless sanding for Clarence homes. Safe, clean, thorough preparation for refinishing.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-sanding/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Clarence FAQ</span>
|
||||||
|
<h2>Common Questions from Clarence Homeowners</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question specific to your Clarence home? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How long has Floor It been serving the Clarence area?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Floor It has been serving Erie County, including Clarence, for over 30 years. Clarence is within our core service area and we have completed projects throughout the community.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>What is the timeline for a refinishing project in Clarence?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Standard refinishing typically takes 7 to 10 business days. Restoration projects can take 10 to 14 business days depending on the extent of damage. We provide a full timeline during the onsite estimate visit before any work begins.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Do you provide written quotes for Clarence projects?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. Every project receives a detailed written quote within 2 business days of the onsite estimate visit. The quote includes multiple options, clear pricing, and a project timeline, so you can make an informed decision with no pressure.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Clarence Estimate</span>
|
||||||
|
<h2>Request a Clarence Floor Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Request a Clarence Floor Estimate</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="location" value="Clarence, NY">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Clarence Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="service">Service Needed <span aria-hidden="true">*</span></label>
|
||||||
|
<select id="service" name="service" required>
|
||||||
|
<option value="">Select a service</option>
|
||||||
|
<option value="refinishing">Floor Refinishing</option>
|
||||||
|
<option value="restoration">Floor Restoration</option>
|
||||||
|
<option value="sanding">Floor Sanding</option>
|
||||||
|
<option value="installation">Floor Installation</option>
|
||||||
|
<option value="unsure">Not Sure</option>
|
||||||
|
</select>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Send Clarence Estimate Request</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,284 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Refinishing in East Amherst, NY | Floor It</title>
|
||||||
|
<meta name="description" content="Professional hardwood floor refinishing and restoration in East Amherst, NY. Erie County specialists with 75 years combined experience. Call (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/locations/east-amherst.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"url": "https://floorithardwoodfloors.com/locations/east-amherst.html",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"address": {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
"addressLocality": "East Amherst",
|
||||||
|
"addressRegion": "NY",
|
||||||
|
"addressCountry": "US"
|
||||||
|
},
|
||||||
|
"areaServed": "East Amherst, NY",
|
||||||
|
"openingHours": "Mo-Sa 08:00-17:00",
|
||||||
|
"aggregateRating": {
|
||||||
|
"@type": "AggregateRating",
|
||||||
|
"ratingValue": "4.9",
|
||||||
|
"reviewCount": "50"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/locations/">Locations</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>East Amherst, NY</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">East Amherst, New York</span>
|
||||||
|
<h1>Hardwood Floor Refinishing in East Amherst, NY</h1>
|
||||||
|
<p class="lead">Professional hardwood floor services for East Amherst homeowners. The same expert team, commercial equipment, and quality results we bring to every Erie County home.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- OVERVIEW -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">East Amherst Service Area</span>
|
||||||
|
<h2>Floor Refinishing Services in East Amherst, NY</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">East Amherst homeowners trust Floor It for hardwood floor refinishing, restoration, and sanding. We bring 75 years of combined experience and commercial-grade equipment to every project, applying the same professional standards throughout Erie County.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">We respond to all East Amherst inquiries within 24 hours and schedule onsite visits at your convenience. Our team is familiar with the home styles, wood species, and floor conditions common throughout the East Amherst area.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="display:flex;flex-direction:column;gap:1rem;">
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">75+</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Years Combined Experience</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Serving Western New York</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">24hr</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Response Time</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">For East Amherst inquiries</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">4.9</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Google Rating</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Verified customer reviews</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SERVICES -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">East Amherst Services</span>
|
||||||
|
<h2>Hardwood Floor Services in East Amherst, NY</h2>
|
||||||
|
<p>All core hardwood floor services available throughout East Amherst, delivered with the same professional equipment and team on every project.</p>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
<div class="service-card" data-animate="up">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Refinishing East Amherst</h3>
|
||||||
|
<p>Multi-stage sanding, multiple stain options, and professional sealing for East Amherst homes. Restore beauty and durability.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-refinishing/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Restoration East Amherst</h3>
|
||||||
|
<p>Water damage, deep scratch, and structural floor repair for East Amherst homeowners. Full restoration with insurance documentation available.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-restoration/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Sanding East Amherst</h3>
|
||||||
|
<p>Commercial dustless sanding for East Amherst homes. Safe, clean, effective surface preparation.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-sanding/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">East Amherst FAQ</span>
|
||||||
|
<h2>Common Questions from East Amherst Homeowners</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question specific to your East Amherst home? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Do you serve East Amherst as part of your regular route?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. East Amherst is within our core Erie County service area. We schedule visits to East Amherst regularly and can typically arrange an onsite estimate within a few days of initial contact.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>What hardwood floor services do you offer in East Amherst?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">We offer full hardwood floor refinishing, restoration, and sanding throughout East Amherst. This covers everything from surface re-coating to complete restoration of water-damaged or structurally compromised floors.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Is your dustless sanding safe for families with children and pets?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. Our dustless sanding system captures fine particles at the source, dramatically reducing airborne dust. We also use low-VOC finishes when possible. We recommend vacating the work area during sanding and for 24 to 48 hours after final coat application.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">East Amherst Estimate</span>
|
||||||
|
<h2>Request an East Amherst Floor Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Request an East Amherst Floor Estimate</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="location" value="East Amherst, NY">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">East Amherst Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="service">Service Needed <span aria-hidden="true">*</span></label>
|
||||||
|
<select id="service" name="service" required>
|
||||||
|
<option value="">Select a service</option>
|
||||||
|
<option value="refinishing">Floor Refinishing</option>
|
||||||
|
<option value="restoration">Floor Restoration</option>
|
||||||
|
<option value="sanding">Floor Sanding</option>
|
||||||
|
<option value="installation">Floor Installation</option>
|
||||||
|
<option value="unsure">Not Sure</option>
|
||||||
|
</select>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Send East Amherst Estimate Request</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,181 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Refinishing Service Areas | Western NY | Floor It</title>
|
||||||
|
<meta name="description" content="Floor It Hardwood Floors serves Buffalo, Amherst, Williamsville, East Amherst, Clarence, Lancaster, and surrounding Erie County communities. Professional hardwood floor services throughout Western New York.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/locations/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Locations</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Where We Work</span>
|
||||||
|
<h1>Hardwood Floor Services Across Western New York</h1>
|
||||||
|
<p class="lead">Floor It serves homeowners throughout Buffalo and Erie County with the same professional standards, equipment, and care at every location.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- LOCATION CARDS DETAIL -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Our Service Areas</span>
|
||||||
|
<h2>Cities We Serve</h2>
|
||||||
|
<p>Select a city to learn more about our hardwood floor services in your area.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
|
||||||
|
<div class="card" data-animate="up">
|
||||||
|
<div style="height:160px;background:var(--bark-mid);border-radius:var(--radius-lg) var(--radius-lg) 0 0;overflow:hidden;">
|
||||||
|
<img src="/assets/images/location-buffalo.jpg" alt="Buffalo, NY skyline" style="width:100%;height:100%;object-fit:cover;" loading="lazy" onerror="this.parentElement.style.background='var(--bark-mid)'">
|
||||||
|
</div>
|
||||||
|
<div style="padding:1.75rem;">
|
||||||
|
<span class="eyebrow" style="margin-bottom:0.5rem;">Primary Hub</span>
|
||||||
|
<h3 style="font-size:var(--text-xl);margin-bottom:0.75rem;">Buffalo, NY</h3>
|
||||||
|
<p style="font-size:var(--text-sm);color:var(--smoke);max-width:none;">Our primary service area. Expert hardwood floor refinishing, restoration, and installation throughout Buffalo, including older homes with historic hardwood floors.</p>
|
||||||
|
<div style="margin-top:1.25rem;display:flex;gap:0.75rem;flex-wrap:wrap;">
|
||||||
|
<a href="/locations/buffalo.html" class="btn btn--primary btn--sm">View Buffalo Services</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card" data-animate="up" data-delay="2">
|
||||||
|
<div style="height:160px;background:var(--bark-mid);border-radius:var(--radius-lg) var(--radius-lg) 0 0;overflow:hidden;">
|
||||||
|
<img src="/assets/images/location-amherst.jpg" alt="Amherst, NY neighborhood" style="width:100%;height:100%;object-fit:cover;" loading="lazy" onerror="this.parentElement.style.background='var(--bark-mid)'">
|
||||||
|
</div>
|
||||||
|
<div style="padding:1.75rem;">
|
||||||
|
<span class="eyebrow" style="margin-bottom:0.5rem;">Erie County</span>
|
||||||
|
<h3 style="font-size:var(--text-xl);margin-bottom:0.75rem;">Amherst, NY</h3>
|
||||||
|
<p style="font-size:var(--text-sm);color:var(--smoke);max-width:none;">Residential hardwood floor refinishing and restoration for Amherst homeowners. Community-focused service with fast scheduling and 24-hour response times.</p>
|
||||||
|
<div style="margin-top:1.25rem;display:flex;gap:0.75rem;flex-wrap:wrap;">
|
||||||
|
<a href="/locations/amherst.html" class="btn btn--primary btn--sm">View Amherst Services</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card" data-animate="up" data-delay="3">
|
||||||
|
<div style="height:160px;background:var(--bark-mid);border-radius:var(--radius-lg) var(--radius-lg) 0 0;overflow:hidden;">
|
||||||
|
<img src="/assets/images/location-williamsville.jpg" alt="Williamsville, NY homes" style="width:100%;height:100%;object-fit:cover;" loading="lazy" onerror="this.parentElement.style.background='var(--bark-mid)'">
|
||||||
|
</div>
|
||||||
|
<div style="padding:1.75rem;">
|
||||||
|
<span class="eyebrow" style="margin-bottom:0.5rem;">Erie County</span>
|
||||||
|
<h3 style="font-size:var(--text-xl);margin-bottom:0.75rem;">Williamsville, NY</h3>
|
||||||
|
<p style="font-size:var(--text-sm);color:var(--smoke);max-width:none;">Premium hardwood floor refinishing for Williamsville homes. Upscale residential expertise with attention to the highest finish standards.</p>
|
||||||
|
<div style="margin-top:1.25rem;display:flex;gap:0.75rem;flex-wrap:wrap;">
|
||||||
|
<a href="/locations/williamsville.html" class="btn btn--primary btn--sm">View Williamsville Services</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card" data-animate="up">
|
||||||
|
<div style="height:160px;background:var(--bark-mid);border-radius:var(--radius-lg) var(--radius-lg) 0 0;"></div>
|
||||||
|
<div style="padding:1.75rem;">
|
||||||
|
<span class="eyebrow" style="margin-bottom:0.5rem;">Erie County</span>
|
||||||
|
<h3 style="font-size:var(--text-xl);margin-bottom:0.75rem;">East Amherst, NY</h3>
|
||||||
|
<p style="font-size:var(--text-sm);color:var(--smoke);max-width:none;">Professional hardwood floor services for East Amherst homeowners. Comprehensive service coverage with the same expert team and professional equipment.</p>
|
||||||
|
<div style="margin-top:1.25rem;display:flex;gap:0.75rem;flex-wrap:wrap;">
|
||||||
|
<a href="/locations/east-amherst.html" class="btn btn--primary btn--sm">View East Amherst Services</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card" data-animate="up" data-delay="2">
|
||||||
|
<div style="height:160px;background:var(--bark-mid);border-radius:var(--radius-lg) var(--radius-lg) 0 0;"></div>
|
||||||
|
<div style="padding:1.75rem;">
|
||||||
|
<span class="eyebrow" style="margin-bottom:0.5rem;">Erie County</span>
|
||||||
|
<h3 style="font-size:var(--text-xl);margin-bottom:0.75rem;">Clarence, NY</h3>
|
||||||
|
<p style="font-size:var(--text-sm);color:var(--smoke);max-width:none;">Hardwood floor refinishing and restoration for Clarence residents. Trusted by the local community with reliable scheduling and professional results.</p>
|
||||||
|
<div style="margin-top:1.25rem;display:flex;gap:0.75rem;flex-wrap:wrap;">
|
||||||
|
<a href="/locations/clarence.html" class="btn btn--primary btn--sm">View Clarence Services</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card" data-animate="up" data-delay="3">
|
||||||
|
<div style="height:160px;background:var(--bark-mid);border-radius:var(--radius-lg) var(--radius-lg) 0 0;"></div>
|
||||||
|
<div style="padding:1.75rem;">
|
||||||
|
<span class="eyebrow" style="margin-bottom:0.5rem;">Erie County</span>
|
||||||
|
<h3 style="font-size:var(--text-xl);margin-bottom:0.75rem;">Lancaster, NY</h3>
|
||||||
|
<p style="font-size:var(--text-sm);color:var(--smoke);max-width:none;">Professional hardwood floor services for Lancaster homeowners. The same expert standards and care that Buffalo homeowners have trusted for over 30 years.</p>
|
||||||
|
<div style="margin-top:1.25rem;display:flex;gap:0.75rem;flex-wrap:wrap;">
|
||||||
|
<a href="/locations/lancaster.html" class="btn btn--primary btn--sm">View Lancaster Services</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SERVICES AT ALL LOCATIONS -->
|
||||||
|
<section class="section section--mid">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Universal Service Standards</span>
|
||||||
|
<h2>The Same Quality at Every Location</h2>
|
||||||
|
<p>No matter where you are in Erie County, you receive the same professional service, equipment, and results.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
<div class="benefit-card" data-animate="up">
|
||||||
|
<div class="benefit-icon"><svg viewBox="0 0 24 24"><path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg></div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Floor Refinishing</h4>
|
||||||
|
<p>Multi-stage sanding, multiple stain options, and durable sealing. 7 to 10 business day timeline.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="benefit-icon"><svg viewBox="0 0 24 24"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Floor Restoration</h4>
|
||||||
|
<p>Water damage, deep scratches, and structural repairs. Insurance documentation available. 10 to 14 days.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="benefit-icon"><svg viewBox="0 0 24 24"><path d="M4 6h16M4 12h16M4 18h7"/></svg></div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Floor Sanding</h4>
|
||||||
|
<p>Commercial-grade HEPA dustless equipment. Multi-grit process for a perfectly prepared surface.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="cta-strip">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Serving Your Community in Western New York</h2>
|
||||||
|
<p>Not sure if we cover your area? Call us. We serve all of Erie County and surrounding communities.</p>
|
||||||
|
<div class="cta-group" style="justify-content:center;">
|
||||||
|
<a href="/contact/" class="btn btn--outline-dark btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,284 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Refinishing in Lancaster, NY | Floor It</title>
|
||||||
|
<meta name="description" content="Professional hardwood floor refinishing and restoration in Lancaster, NY. Serving Erie County with 75 years combined experience. Licensed and insured. Call (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/locations/lancaster.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"url": "https://floorithardwoodfloors.com/locations/lancaster.html",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"address": {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
"addressLocality": "Lancaster",
|
||||||
|
"addressRegion": "NY",
|
||||||
|
"addressCountry": "US"
|
||||||
|
},
|
||||||
|
"areaServed": "Lancaster, NY",
|
||||||
|
"openingHours": "Mo-Sa 08:00-17:00",
|
||||||
|
"aggregateRating": {
|
||||||
|
"@type": "AggregateRating",
|
||||||
|
"ratingValue": "4.9",
|
||||||
|
"reviewCount": "50"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/locations/">Locations</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Lancaster, NY</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Lancaster, New York</span>
|
||||||
|
<h1>Hardwood Floor Refinishing in Lancaster, NY</h1>
|
||||||
|
<p class="lead">Professional hardwood floor refinishing and restoration for Lancaster homeowners. The same expert team and commercial equipment that Buffalo homeowners have trusted for over 30 years.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- OVERVIEW -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Lancaster Service Area</span>
|
||||||
|
<h2>Floor Refinishing Services in Lancaster, NY</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">Lancaster homeowners trust Floor It for professional hardwood floor care. We bring 75 years of combined experience and commercial-grade equipment to every Lancaster project, maintaining the same standards throughout Erie County.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">Our team responds to all Lancaster inquiries within 24 hours. We schedule onsite visits at your convenience and provide detailed written quotes within 2 business days of the visit. No obligation, no pressure.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="display:flex;flex-direction:column;gap:1rem;">
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">75+</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Years Combined Experience</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Serving Western New York</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">24hr</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Response Time</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">For Lancaster inquiries</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">4.9</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Google Rating</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Verified customer reviews</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SERVICES -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Lancaster Services</span>
|
||||||
|
<h2>Hardwood Floor Services in Lancaster, NY</h2>
|
||||||
|
<p>Full hardwood floor services available throughout Lancaster: refinishing, restoration, and sanding with professional-grade equipment.</p>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
<div class="service-card" data-animate="up">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Refinishing Lancaster</h3>
|
||||||
|
<p>Multi-stage sanding, multiple stain options, and durable professional sealing for Lancaster homes.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-refinishing/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Restoration Lancaster</h3>
|
||||||
|
<p>Water damage, scratch, and structural floor repair for Lancaster homeowners. Insurance documentation support available.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-restoration/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Sanding Lancaster</h3>
|
||||||
|
<p>Commercial dustless sanding for Lancaster homes. Safe for families and pets, thorough preparation.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-sanding/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Lancaster FAQ</span>
|
||||||
|
<h2>Common Questions from Lancaster Homeowners</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question specific to your Lancaster home? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Do you serve Lancaster as part of your regular route?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. Lancaster is within our Erie County service area and we schedule visits there regularly. We can typically arrange an onsite estimate within a few days of your initial inquiry.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>What hardwood species do you work with in Lancaster homes?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">We work with all common hardwood species found in Lancaster homes: oak, maple, cherry, walnut, ash, and engineered hardwood. We also work with less common domestic and exotic species. Each floor is assessed individually before we recommend an approach.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How do I prepare my Lancaster home before your team arrives?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Remove furniture and area rugs from the rooms being worked on. Secure or cover any valuables in adjacent areas. We handle all floor preparation, sanding, and finishing. We advise keeping pets and children out of the work area and for 24 to 48 hours after final coat application.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Lancaster Estimate</span>
|
||||||
|
<h2>Request a Lancaster Floor Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Request a Lancaster Floor Estimate</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="location" value="Lancaster, NY">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Lancaster Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="service">Service Needed <span aria-hidden="true">*</span></label>
|
||||||
|
<select id="service" name="service" required>
|
||||||
|
<option value="">Select a service</option>
|
||||||
|
<option value="refinishing">Floor Refinishing</option>
|
||||||
|
<option value="restoration">Floor Restoration</option>
|
||||||
|
<option value="sanding">Floor Sanding</option>
|
||||||
|
<option value="installation">Floor Installation</option>
|
||||||
|
<option value="unsure">Not Sure</option>
|
||||||
|
</select>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Send Lancaster Estimate Request</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,284 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Refinishing in Williamsville, NY | Floor It</title>
|
||||||
|
<meta name="description" content="Expert hardwood floor refinishing and restoration in Williamsville, NY. Serving Erie County with 75 years combined experience. Licensed and insured. Call (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/locations/williamsville.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"url": "https://floorithardwoodfloors.com/locations/williamsville.html",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"address": {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
"addressLocality": "Williamsville",
|
||||||
|
"addressRegion": "NY",
|
||||||
|
"addressCountry": "US"
|
||||||
|
},
|
||||||
|
"areaServed": "Williamsville, NY",
|
||||||
|
"openingHours": "Mo-Sa 08:00-17:00",
|
||||||
|
"aggregateRating": {
|
||||||
|
"@type": "AggregateRating",
|
||||||
|
"ratingValue": "4.9",
|
||||||
|
"reviewCount": "50"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/locations/">Locations</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Williamsville, NY</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Williamsville, New York</span>
|
||||||
|
<h1>Hardwood Floor Refinishing in Williamsville, NY</h1>
|
||||||
|
<p class="lead">Premium hardwood floor refinishing and restoration for Williamsville homes. Upscale residential expertise with the highest finish standards in Erie County.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- OVERVIEW -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Williamsville Specialists</span>
|
||||||
|
<h2>Expert Floor Refinishing in Williamsville, NY</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">Williamsville homes deserve a level of craftsmanship that matches their quality. Floor It brings 75 years of combined experience to every Williamsville project, applying the same professional-grade equipment and attention to detail that has made us Western New York's most trusted floor refinishing team.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">Whether you have original hardwood floors in a classic Williamsville home or newer engineered wood in a modern build, our team assesses each floor individually and recommends the right approach for lasting, beautiful results.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="display:flex;flex-direction:column;gap:1rem;">
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">75+</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Years Combined Experience</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Serving Western New York</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">24hr</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Response Time</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">For Williamsville inquiries</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="background:var(--grain);border-radius:var(--radius-lg);padding:1.5rem;display:flex;gap:1rem;align-items:center;">
|
||||||
|
<div style="font-size:2rem;font-weight:800;color:var(--amber);flex-shrink:0;line-height:1;">4.9</div>
|
||||||
|
<div>
|
||||||
|
<strong style="display:block;font-size:var(--text-sm);">Google Rating</strong>
|
||||||
|
<span style="font-size:var(--text-xs);color:var(--smoke);">Verified customer reviews</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SERVICES -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Williamsville Services</span>
|
||||||
|
<h2>Hardwood Floor Services in Williamsville, NY</h2>
|
||||||
|
<p>Complete hardwood floor services available throughout Williamsville: refinishing, restoration, and sanding with commercial-grade equipment.</p>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
<div class="service-card" data-animate="up">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Refinishing Williamsville</h3>
|
||||||
|
<p>Premium multi-stage sanding, staining, and sealing for Williamsville homes. Stain sample approval before full project begins.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-refinishing/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Restoration Williamsville</h3>
|
||||||
|
<p>Water damage, deep scratch, and structural floor repair. We restore Williamsville floors to like-new condition with insurance documentation available.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-restoration/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="service-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="service-card-body">
|
||||||
|
<h3>Floor Sanding Williamsville</h3>
|
||||||
|
<p>Dustless sanding for Williamsville homes. Clean, safe process that prepares your floor perfectly for staining and sealing.</p>
|
||||||
|
</div>
|
||||||
|
<div class="service-card-footer">
|
||||||
|
<a href="/services/floor-sanding/" class="service-card-link">Learn More</a>
|
||||||
|
<a href="/contact/" class="btn btn--ghost btn--sm">Book Now</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Williamsville FAQ</span>
|
||||||
|
<h2>Common Questions from Williamsville Homeowners</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question specific to your Williamsville home? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Do you work on upscale homes in Williamsville?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. We regularly work on premium homes throughout Williamsville and have extensive experience with high-end wood species, custom stain colors, and finish options that match the quality of the home. We treat every project with the same professional care regardless of home value.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Can you match the stain on my existing Williamsville floors?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">In most cases, yes. We apply a test sample directly on your floor before proceeding so you can verify the color match. For custom blends, our team mixes stains on-site to get the closest possible match to your existing floors.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How much disruption should I expect during the project?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">We use dustless sanding equipment that dramatically reduces airborne particles. You will need to vacate the rooms being worked on during sanding and for 24 to 48 hours after final coat application. We work efficiently to minimize disruption to your daily routine.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Williamsville Estimate</span>
|
||||||
|
<h2>Request a Williamsville Floor Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Request a Williamsville Floor Estimate</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="location" value="Williamsville, NY">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Williamsville Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="service">Service Needed <span aria-hidden="true">*</span></label>
|
||||||
|
<select id="service" name="service" required>
|
||||||
|
<option value="">Select a service</option>
|
||||||
|
<option value="refinishing">Floor Refinishing</option>
|
||||||
|
<option value="restoration">Floor Restoration</option>
|
||||||
|
<option value="sanding">Floor Sanding</option>
|
||||||
|
<option value="installation">Floor Installation</option>
|
||||||
|
<option value="unsure">Not Sure</option>
|
||||||
|
</select>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Send Williamsville Estimate Request</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name _;
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
# Flat HTML — serve /locations/buffalo as /locations/buffalo.html
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ $uri.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cache static assets
|
||||||
|
location ~* \.(jpg|jpeg|png|webp|svg|ico|css|js|woff2?|mp4|webm)$ {
|
||||||
|
expires 30d;
|
||||||
|
add_header Cache-Control "public, immutable";
|
||||||
|
access_log off;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Security headers
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN";
|
||||||
|
add_header X-Content-Type-Options "nosniff";
|
||||||
|
add_header Referrer-Policy "strict-origin-when-cross-origin";
|
||||||
|
|
||||||
|
# Gzip
|
||||||
|
gzip on;
|
||||||
|
gzip_types text/html text/css application/javascript image/svg+xml;
|
||||||
|
gzip_min_length 1024;
|
||||||
|
|
||||||
|
error_page 404 /index.html;
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 663 KiB |
|
After Width: | Height: | Size: 140 KiB |
@@ -0,0 +1,145 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Customer Reviews | Floor It Hardwood Floors | Buffalo, NY</title>
|
||||||
|
<meta name="description" content="Read what Buffalo and Erie County homeowners say about Floor It Hardwood Floors. Rated 4.9/5 stars on Google Reviews. Trusted hardwood floor refinishing in Western NY.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/reviews/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Reviews</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Customer Testimonials</span>
|
||||||
|
<h1>What Our Customers Say</h1>
|
||||||
|
<p class="lead">Rated 4.9 out of 5 stars across Google Reviews. Buffalo and Erie County homeowners trust Floor It for professional hardwood floor refinishing.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- RATING SUMMARY -->
|
||||||
|
<div class="trust-bar">
|
||||||
|
<div class="container">
|
||||||
|
<div class="trust-bar-inner">
|
||||||
|
<div class="trust-stat">
|
||||||
|
<span class="trust-stat-number"><span data-count="4.9" data-suffix="">4.9</span></span>
|
||||||
|
<span class="trust-stat-label">Out of 5 Stars</span>
|
||||||
|
</div>
|
||||||
|
<div class="trust-stat">
|
||||||
|
<span class="trust-stat-number" style="font-size:var(--text-xl);letter-spacing:0.05em;">★★★★★</span>
|
||||||
|
<span class="trust-stat-label">Google Reviews</span>
|
||||||
|
</div>
|
||||||
|
<div class="trust-stat">
|
||||||
|
<span class="trust-stat-number"><span data-count="500" data-suffix="+">500+</span></span>
|
||||||
|
<span class="trust-stat-label">Projects Completed</span>
|
||||||
|
</div>
|
||||||
|
<div class="trust-stat">
|
||||||
|
<span class="trust-stat-number">100%</span>
|
||||||
|
<span class="trust-stat-label">Satisfaction Goal</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- REVIEWS GRID -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Verified Reviews</span>
|
||||||
|
<h2>Buffalo Homeowners Trust Floor It</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid--auto-3">
|
||||||
|
|
||||||
|
<div class="testimonial-card" data-animate="up">
|
||||||
|
<div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div>
|
||||||
|
<p class="testimonial-text">"Excellent work. They transformed our tired, worn floors into something beautiful. Professional, efficient, and honest with their pricing. Will absolutely use them again for future projects."</p>
|
||||||
|
<div class="testimonial-author">
|
||||||
|
<div class="testimonial-avatar">J</div>
|
||||||
|
<div class="testimonial-info"><strong>Jennifer M.</strong><span>Buffalo, NY</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="testimonial-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div>
|
||||||
|
<p class="testimonial-text">"Highly recommend. The team was professional, clean, and completed everything on schedule. Our floors look incredible, like brand new. The dustless sanding was a huge plus."</p>
|
||||||
|
<div class="testimonial-author">
|
||||||
|
<div class="testimonial-avatar">S</div>
|
||||||
|
<div class="testimonial-info"><strong>Sarah K.</strong><span>Amherst, NY</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="testimonial-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div>
|
||||||
|
<p class="testimonial-text">"Professional service from start to finish. They genuinely cared about the quality of the work and it shows. Absolutely worth the investment for any homeowner with hardwood floors."</p>
|
||||||
|
<div class="testimonial-author">
|
||||||
|
<div class="testimonial-avatar">M</div>
|
||||||
|
<div class="testimonial-info"><strong>Michael D.</strong><span>Hamburg, NY</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="testimonial-card" data-animate="up">
|
||||||
|
<div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div>
|
||||||
|
<p class="testimonial-text">"I had significant water damage on my oak floors and was worried they would need full replacement. Floor It assessed the situation and restored them completely. I could not believe how good they look now."</p>
|
||||||
|
<div class="testimonial-author">
|
||||||
|
<div class="testimonial-avatar">R</div>
|
||||||
|
<div class="testimonial-info"><strong>Robert T.</strong><span>Williamsville, NY</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="testimonial-card" data-animate="up" data-delay="2">
|
||||||
|
<div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div>
|
||||||
|
<p class="testimonial-text">"The custom stain color matching was exactly what I wanted. They did a sample on my floor before committing to the full project. That extra step really set them apart from other companies I contacted."</p>
|
||||||
|
<div class="testimonial-author">
|
||||||
|
<div class="testimonial-avatar">L</div>
|
||||||
|
<div class="testimonial-info"><strong>Linda C.</strong><span>Clarence, NY</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="testimonial-card" data-animate="up" data-delay="3">
|
||||||
|
<div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div>
|
||||||
|
<p class="testimonial-text">"Called on a Monday, had a free estimate visit by Wednesday, and floors were done by the following Friday. Fast, clean, and the results are stunning. Our 100-year-old oak floors look better than they ever have."</p>
|
||||||
|
<div class="testimonial-author">
|
||||||
|
<div class="testimonial-avatar">D</div>
|
||||||
|
<div class="testimonial-info"><strong>David P.</strong><span>Lancaster, NY</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="cta-strip">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Ready to Join Our Satisfied Customers?</h2>
|
||||||
|
<p>Request an estimate today and experience the Floor It difference in your own home.</p>
|
||||||
|
<div class="cta-group" style="justify-content:center;">
|
||||||
|
<a href="/contact/" class="btn btn--outline-dark btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,276 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>{{title}}</title>
|
||||||
|
<meta name="description" content="{{meta_description}}">
|
||||||
|
<link rel="canonical" href="{{canonical}}">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Service",
|
||||||
|
"name": "{{service_name}}",
|
||||||
|
"provider": {
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"url": "https://floorithardwoodfloors.com",
|
||||||
|
"areaServed": "Erie County, NY"
|
||||||
|
},
|
||||||
|
"url": "{{canonical}}"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/services/">Services</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>{{service_name}}</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">{{hero_eyebrow}}</span>
|
||||||
|
<h1>{{hero_h1}}</h1>
|
||||||
|
<p class="lead">{{hero_lead}}</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Get a Free Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- INTRO -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">What We Do</span>
|
||||||
|
<h2>{{intro_h2}}</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">{{intro_body_1}}</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">{{intro_body_2}}</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="border-radius:var(--radius-xl);overflow:hidden;aspect-ratio:4/5;background:var(--grain);">
|
||||||
|
<img src="{{hero_image}}" alt="{{service_name}} | Floor It Hardwood Floors" style="width:100%;height:100%;object-fit:cover;" loading="lazy">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- PROCESS -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">How It Works</span>
|
||||||
|
<h2>Our {{service_name}} Process</h2>
|
||||||
|
<p>{{process_intro}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-steps">
|
||||||
|
<div class="process-step" data-animate="up">
|
||||||
|
<div class="process-step-num">1</div>
|
||||||
|
<h3>{{step_1_title}}</h3>
|
||||||
|
<p>{{step_1_body}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="2">
|
||||||
|
<div class="process-step-num">2</div>
|
||||||
|
<h3>{{step_2_title}}</h3>
|
||||||
|
<p>{{step_2_body}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="3">
|
||||||
|
<div class="process-step-num">3</div>
|
||||||
|
<h3>{{step_3_title}}</h3>
|
||||||
|
<p>{{step_3_body}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- BENEFITS -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Why Choose Us</span>
|
||||||
|
<h2>What Sets Our {{service_name}} Apart</h2>
|
||||||
|
</div>
|
||||||
|
<div style="display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;">
|
||||||
|
<div class="benefit-card" data-animate="left">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>{{benefit_1_title}}</h4>
|
||||||
|
<p>{{benefit_1_body}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 0 0 .95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 0 0-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 0 0-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 0 0-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 0 0 .951-.69l1.519-4.674z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>{{benefit_2_title}}</h4>
|
||||||
|
<p>{{benefit_2_body}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="left" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>{{benefit_3_title}}</h4>
|
||||||
|
<p>{{benefit_3_body}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>{{benefit_4_title}}</h4>
|
||||||
|
<p>{{benefit_4_body}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">{{service_name}} FAQ</span>
|
||||||
|
<h2>Common Questions</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a> and we will answer it directly.</p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>{{faq_1_q}}</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">{{faq_1_a}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>{{faq_2_q}}</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">{{faq_2_a}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>{{faq_3_q}}</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">{{faq_3_a}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Free Estimate</span>
|
||||||
|
<h2>{{form_h2}}</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">{{form_h2}}</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="service_page" value="{{service_name}}">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Property Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">{{form_submit}}</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,276 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Installation in Buffalo, NY | Floor It Hardwood Floors</title>
|
||||||
|
<meta name="description" content="New hardwood floor installation in Buffalo and Erie County, NY. Solid and engineered hardwood, proper subfloor prep, professional installation. Free estimate. Call (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/services/floor-installation.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Service",
|
||||||
|
"name": "Floor Installation",
|
||||||
|
"provider": {
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"url": "https://floorithardwoodfloors.com",
|
||||||
|
"areaServed": "Erie County, NY"
|
||||||
|
},
|
||||||
|
"url": "https://floorithardwoodfloors.com/services/floor-installation.html"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/services/">Services</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Floor Installation</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Buffalo and Erie County</span>
|
||||||
|
<h1>Hardwood Floor Installation</h1>
|
||||||
|
<p class="lead">New hardwood floors installed with precision. Quality materials, proper subfloor preparation, and expert craftsmanship built to last.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Get a Free Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- INTRO -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">What We Do</span>
|
||||||
|
<h2>Expert Hardwood Floor Installation in Western New York</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">Installing new hardwood floors is an investment that lasts decades, but only if installed correctly. Improper subfloor preparation, inadequate acclimation, or poor fastening technique shows up years later as squeaks, gaps, and movement. We do it right the first time.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">We work with solid hardwood, engineered hardwood, and parquet in a wide range of species and widths. Our installation process begins with a subfloor assessment and moisture testing, followed by a proper acclimation period for your new material.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="border-radius:var(--radius-xl);overflow:hidden;aspect-ratio:4/5;background:var(--grain);">
|
||||||
|
<img src="/assets/images/project-1-after.webp" alt="Floor Installation | Floor It Hardwood Floors" style="width:100%;height:100%;object-fit:cover;" loading="lazy">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- PROCESS -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">How It Works</span>
|
||||||
|
<h2>Our Floor Installation Process</h2>
|
||||||
|
<p>Proper hardwood installation requires careful preparation before a single board goes down.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-steps">
|
||||||
|
<div class="process-step" data-animate="up">
|
||||||
|
<div class="process-step-num">1</div>
|
||||||
|
<h3>Material Selection</h3>
|
||||||
|
<p>We help you select the right species, width, and grade for your space based on your subfloor type, lifestyle, and existing flooring if matching is needed.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="2">
|
||||||
|
<div class="process-step-num">2</div>
|
||||||
|
<h3>Subfloor Preparation</h3>
|
||||||
|
<p>We assess subfloor flatness, moisture content, and structural integrity. Any issues are addressed before installation begins. This is where most problems start.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="3">
|
||||||
|
<div class="process-step-num">3</div>
|
||||||
|
<h3>Installation and Finish</h3>
|
||||||
|
<p>Boards are installed with proper fastening pattern and spacing. We complete with the full sand, stain, and seal process for a finished result.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- BENEFITS -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Why Choose Us</span>
|
||||||
|
<h2>What Sets Our Floor Installation Apart</h2>
|
||||||
|
</div>
|
||||||
|
<div style="display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;">
|
||||||
|
<div class="benefit-card" data-animate="left">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>All Wood Species</h4>
|
||||||
|
<p>Oak, maple, hickory, cherry, walnut, and more. We source quality material from trusted suppliers and can match existing floors in your home.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 0 0 .95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 0 0-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 0 0-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 0 0-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 0 0 .951-.69l1.519-4.674z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Subfloor Expertise</h4>
|
||||||
|
<p>The subfloor makes or breaks an installation. We assess, level, and prepare every subfloor to manufacturer specifications before any boards go down.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="left" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Moisture Testing</h4>
|
||||||
|
<p>Wood and subfloor moisture content must be within range of each other before installation. We test and acclimate all material on-site.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Built to Last</h4>
|
||||||
|
<p>Properly installed hardwood floors last for decades. We stand behind our installation workmanship and ensure every board is set correctly.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Floor Installation FAQ</span>
|
||||||
|
<h2>Common Questions</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a> and we will answer it directly.</p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How long does hardwood floor installation take?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Most rooms take two to three days including subfloor prep, installation, then sand and finish. Larger projects or those requiring extensive subfloor work take longer. We provide a detailed schedule during the estimate.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Solid versus engineered hardwood, which is right for me?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Solid hardwood is ideal for above-grade installations on wood subfloors. Engineered hardwood is better for concrete subfloors, basements, or high-humidity areas. We help you make the right choice for your situation.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Can you match my existing hardwood floors?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">In most cases, yes. We sample your existing floor and source matching material by species, width, and grade. After installation and finishing, new and existing sections blend well.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Free Estimate</span>
|
||||||
|
<h2>Get Your Free Installation Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Get Your Free Installation Estimate</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="service_page" value="Floor Installation">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Property Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Request Installation Estimate</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,276 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Refinishing in Buffalo, NY | Floor It Hardwood Floors</title>
|
||||||
|
<meta name="description" content="Professional hardwood floor refinishing in Buffalo and Erie County, NY. Multi-stage sanding, custom stain colors, dustless process. Free estimate. Call (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/services/floor-refinishing.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Service",
|
||||||
|
"name": "Floor Refinishing",
|
||||||
|
"provider": {
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"url": "https://floorithardwoodfloors.com",
|
||||||
|
"areaServed": "Erie County, NY"
|
||||||
|
},
|
||||||
|
"url": "https://floorithardwoodfloors.com/services/floor-refinishing.html"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/services/">Services</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Floor Refinishing</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Buffalo and Erie County</span>
|
||||||
|
<h1>Hardwood Floor Refinishing</h1>
|
||||||
|
<p class="lead">Restore worn, dull, or damaged hardwood floors to their original beauty with our multi-stage refinishing process. Custom stain colors available.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Get a Free Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- INTRO -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">What We Do</span>
|
||||||
|
<h2>Expert Floor Refinishing in Western New York</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">Floor refinishing is the most effective way to transform tired, worn hardwood without the cost of full replacement. Our process begins with a thorough assessment of your floors, including wood species, existing finish condition, and depth of scratches, to determine the exact approach your floors need.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">We use dustless sanding equipment that minimizes dust throughout the project, protecting your home and family. After sanding, we apply your chosen stain and seal with a professional-grade topcoat built for long-lasting durability.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="border-radius:var(--radius-xl);overflow:hidden;aspect-ratio:4/5;background:var(--grain);">
|
||||||
|
<img src="/assets/images/project-1-after.webp" alt="Floor Refinishing | Floor It Hardwood Floors" style="width:100%;height:100%;object-fit:cover;" loading="lazy">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- PROCESS -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">How It Works</span>
|
||||||
|
<h2>Our Floor Refinishing Process</h2>
|
||||||
|
<p>Our refinishing process follows a proven multi-stage system that delivers consistent, beautiful results on every project.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-steps">
|
||||||
|
<div class="process-step" data-animate="up">
|
||||||
|
<div class="process-step-num">1</div>
|
||||||
|
<h3>Floor Assessment</h3>
|
||||||
|
<p>We inspect wood species, thickness, existing finish, and damage level to determine the right sanding grit sequence and stain approach.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="2">
|
||||||
|
<div class="process-step-num">2</div>
|
||||||
|
<h3>Dustless Sanding</h3>
|
||||||
|
<p>Our sanding equipment removes the existing finish and opens the wood grain. Multiple grit passes deliver a perfectly smooth, even surface.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="3">
|
||||||
|
<div class="process-step-num">3</div>
|
||||||
|
<h3>Stain and Seal</h3>
|
||||||
|
<p>We apply a test patch for your approval before proceeding with the full stain. Finish with your selected topcoat: oil-based, water-based, or wax.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- BENEFITS -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Why Choose Us</span>
|
||||||
|
<h2>What Sets Our Floor Refinishing Apart</h2>
|
||||||
|
</div>
|
||||||
|
<div style="display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;">
|
||||||
|
<div class="benefit-card" data-animate="left">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Custom Stain Colors</h4>
|
||||||
|
<p>From natural clear finishes to deep espresso tones. We apply samples directly to your floor during the estimate visit so you can approve before we begin.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 0 0 .95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 0 0-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 0 0-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 0 0-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 0 0 .951-.69l1.519-4.674z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Dustless Sanding</h4>
|
||||||
|
<p>Our sanding equipment captures dust at the source, keeping your home clean and your family comfortable throughout the project.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="left" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Long-Lasting Finish</h4>
|
||||||
|
<p>Professional-grade polyurethane, oil-modified, and water-based topcoats that stand up to daily wear, pets, and Buffalo winters.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Free On-Site Estimate</h4>
|
||||||
|
<p>We visit your home, assess the floors, and provide a detailed written estimate before any work begins. No guessing, no surprises.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Floor Refinishing FAQ</span>
|
||||||
|
<h2>Common Questions</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a> and we will answer it directly.</p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How long does floor refinishing take?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Most rooms take two to three days: one day for sanding, one for stain and first coat, one for final coats. We provide a precise timeline during the estimate.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How many times can a hardwood floor be refinished?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Solid hardwood can typically be refinished multiple times over its lifetime depending on the wood thickness. Engineered hardwood depends on the wear layer. We measure your floor during the assessment.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Do I need to leave my home during refinishing?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">With our dustless sanding system you can usually remain in your home. During staining and sealing we recommend staying out for several hours per coat for ventilation. We advise based on your specific layout.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Free Estimate</span>
|
||||||
|
<h2>Get Your Free Refinishing Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Get Your Free Refinishing Estimate</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="service_page" value="Floor Refinishing">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Property Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Request Refinishing Estimate</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,276 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Restoration in Buffalo, NY | Floor It Hardwood Floors</title>
|
||||||
|
<meta name="description" content="Hardwood floor restoration for water damage, deep scratches, warping, and structural damage in Buffalo, NY. Insurance documentation provided. Call (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/services/floor-restoration.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Service",
|
||||||
|
"name": "Floor Restoration",
|
||||||
|
"provider": {
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"url": "https://floorithardwoodfloors.com",
|
||||||
|
"areaServed": "Erie County, NY"
|
||||||
|
},
|
||||||
|
"url": "https://floorithardwoodfloors.com/services/floor-restoration.html"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/services/">Services</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Floor Restoration</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Buffalo and Erie County</span>
|
||||||
|
<h1>Hardwood Floor Restoration</h1>
|
||||||
|
<p class="lead">Water damage, deep scratches, warping, cupping, and structural damage. We diagnose, repair, and restore your hardwood floors completely.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Get a Free Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- INTRO -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">What We Do</span>
|
||||||
|
<h2>Full-Service Floor Restoration in Western New York</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">Restoration goes beyond refinishing. When floors have suffered water damage, deep gouging, board warping, nail pops, or subfloor issues, a simple sand and seal is not enough. Our restoration process starts with a structural diagnosis to identify every issue before any work begins.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">We repair or replace damaged boards, address subfloor problems, re-nail loose planks, and eliminate gaps, then complete the process with our full refinishing system. We also provide written documentation for insurance claims with before-and-after photography and a detailed scope-of-work report.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="border-radius:var(--radius-xl);overflow:hidden;aspect-ratio:4/5;background:var(--grain);">
|
||||||
|
<img src="/assets/images/project-2-before.webp" alt="Floor Restoration | Floor It Hardwood Floors" style="width:100%;height:100%;object-fit:cover;" loading="lazy">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- PROCESS -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">How It Works</span>
|
||||||
|
<h2>Our Floor Restoration Process</h2>
|
||||||
|
<p>Restoration requires a thorough assessment and multi-phase repair process before refinishing can begin.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-steps">
|
||||||
|
<div class="process-step" data-animate="up">
|
||||||
|
<div class="process-step-num">1</div>
|
||||||
|
<h3>Damage Assessment</h3>
|
||||||
|
<p>We inspect for water damage, structural movement, subfloor issues, and board condition. All findings are documented with photography for insurance purposes.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="2">
|
||||||
|
<div class="process-step-num">2</div>
|
||||||
|
<h3>Structural Repair</h3>
|
||||||
|
<p>Replace damaged boards, re-nail loose planks, fill gaps, address subfloor problems, and eliminate squeaks before any finishing work begins.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="3">
|
||||||
|
<div class="process-step-num">3</div>
|
||||||
|
<h3>Refinish and Seal</h3>
|
||||||
|
<p>Once the floor is structurally sound, we complete the full refinishing process including sanding, stain, and topcoat for a seamless final result.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- BENEFITS -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Why Choose Us</span>
|
||||||
|
<h2>What Sets Our Floor Restoration Apart</h2>
|
||||||
|
</div>
|
||||||
|
<div style="display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;">
|
||||||
|
<div class="benefit-card" data-animate="left">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Insurance Documentation</h4>
|
||||||
|
<p>Written scope-of-work reports and before and after photography for your insurance adjuster. We work with your timeline to support the claims process.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 0 0 .95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 0 0-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 0 0-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 0 0-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 0 0 .951-.69l1.519-4.674z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Board Replacement</h4>
|
||||||
|
<p>We source matching replacement boards for damaged sections by species, grain, and width so repairs are invisible after finishing.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="left" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Subfloor Repair</h4>
|
||||||
|
<p>Water damage often affects the subfloor. We assess and repair subfloor issues to ensure your finished floor is structurally sound.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Cupping and Warping</h4>
|
||||||
|
<p>Cupped or warped boards from humidity changes can often be corrected without replacement. We assess each board individually to minimize material cost.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Floor Restoration FAQ</span>
|
||||||
|
<h2>Common Questions</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a> and we will answer it directly.</p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Can water-damaged floors be saved?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">In most cases, yes, if the damage is addressed promptly. Floors that have dried out and cupped can often be sanded flat. Severely swollen or buckled boards may need replacement, but we always maximize what can be saved.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Do you provide insurance estimates?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. We provide written damage assessments, scope-of-work documentation, and before-and-after photography suitable for insurance claims. We have experience working alongside adjusters.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How long does restoration take?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Restoration timelines vary by damage extent. Minor repairs and refinishing can be completed in three to four days. Extensive structural work with board replacement may take longer. We provide a detailed timeline during the assessment.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Free Estimate</span>
|
||||||
|
<h2>Get Your Free Restoration Assessment</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Get Your Free Restoration Assessment</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="service_page" value="Floor Restoration">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Property Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Request Restoration Estimate</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,276 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Sanding in Buffalo, NY | Floor It Hardwood Floors</title>
|
||||||
|
<meta name="description" content="Professional hardwood floor sanding in Buffalo and Erie County, NY. Dustless equipment, multi-grit process for a perfect surface. Free estimate. Call (716) 602-1429.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/services/floor-sanding.html">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Service",
|
||||||
|
"name": "Floor Sanding",
|
||||||
|
"provider": {
|
||||||
|
"@type": "LocalBusiness",
|
||||||
|
"name": "Floor It Hardwood Floors",
|
||||||
|
"telephone": "+17166021429",
|
||||||
|
"email": "floorithardwoods@gmail.com",
|
||||||
|
"url": "https://floorithardwoodfloors.com",
|
||||||
|
"areaServed": "Erie County, NY"
|
||||||
|
},
|
||||||
|
"url": "https://floorithardwoodfloors.com/services/floor-sanding.html"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<a href="/services/">Services</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Floor Sanding</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">Buffalo and Erie County</span>
|
||||||
|
<h1>Professional Hardwood Floor Sanding</h1>
|
||||||
|
<p class="lead">Commercial-grade dustless sanding equipment and a precise multi-grit process deliver the perfect surface every time.</p>
|
||||||
|
<div class="cta-group" style="margin-top:2rem;">
|
||||||
|
<a href="/contact/" class="btn btn--primary btn--lg">Get a Free Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-light btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- INTRO -->
|
||||||
|
<section class="section section--light">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">What We Do</span>
|
||||||
|
<h2>Professional Floor Sanding in Western New York</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--smoke);">Sanding is the foundation of any successful floor refinishing project. Our sanding technicians use professional belt sanders paired with dust containment systems for clean, precise results across every project.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">Our multi-grit process starts aggressive to remove the existing finish and flatten the surface, then moves through progressively finer grits to deliver a surface that is perfectly smooth and ready for stain. We edge-sand and handle corners with care so there are no swirl marks or chatter marks.</p>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Request Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark">(716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-animate="right">
|
||||||
|
<div style="border-radius:var(--radius-xl);overflow:hidden;aspect-ratio:4/5;background:var(--grain);">
|
||||||
|
<img src="/assets/images/refinishing-machine.webp" alt="Floor Sanding | Floor It Hardwood Floors" style="width:100%;height:100%;object-fit:cover;" loading="lazy">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- PROCESS -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">How It Works</span>
|
||||||
|
<h2>Our Floor Sanding Process</h2>
|
||||||
|
<p>Proper sanding requires the right sequence of grits and careful technique for each section of your floor.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-steps">
|
||||||
|
<div class="process-step" data-animate="up">
|
||||||
|
<div class="process-step-num">1</div>
|
||||||
|
<h3>Initial Assessment</h3>
|
||||||
|
<p>We check moisture content, identify problem areas like cupping or high-grain boards, and select the correct starting grit for your specific floor condition.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="2">
|
||||||
|
<div class="process-step-num">2</div>
|
||||||
|
<h3>Multi-Grit Sanding</h3>
|
||||||
|
<p>We progress through multiple grit sequences for a consistently smooth surface across the entire floor, from the field to the edges.</p>
|
||||||
|
</div>
|
||||||
|
<div class="process-step" data-animate="up" data-delay="3">
|
||||||
|
<div class="process-step-num">3</div>
|
||||||
|
<h3>Edge and Detail Work</h3>
|
||||||
|
<p>Edges are sanded with an edger, corners done by hand. Every square inch is sanded to the same standard as the center of the room.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- BENEFITS -->
|
||||||
|
<section class="section section--alt">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header section-header--center">
|
||||||
|
<span class="eyebrow">Why Choose Us</span>
|
||||||
|
<h2>What Sets Our Floor Sanding Apart</h2>
|
||||||
|
</div>
|
||||||
|
<div style="display:grid;grid-template-columns:repeat(2,1fr);gap:2rem;">
|
||||||
|
<div class="benefit-card" data-animate="left">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Dustless Equipment</h4>
|
||||||
|
<p>Our sanding equipment captures dust at the source, keeping your home cleaner and your family more comfortable throughout the process.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 0 0 .95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 0 0-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 0 0-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 0 0-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 0 0 .951-.69l1.519-4.674z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>No Swirl Marks</h4>
|
||||||
|
<p>We use the correct grit sequence and orbital finishing to eliminate chatter and swirl marks that are common with inexperienced operators.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="left" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Moisture Control</h4>
|
||||||
|
<p>We check wood moisture content before sanding and monitor throughout. Sanding wood at the wrong moisture level causes problems that show up months later.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-card" data-animate="right" data-delay="2">
|
||||||
|
<div class="benefit-icon">
|
||||||
|
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div class="benefit-body">
|
||||||
|
<h4>Clean Results</h4>
|
||||||
|
<p>Our process and equipment leave your floor ready for stain the same day, keeping your project on schedule with minimal disruption.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section class="section section--dark">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,5vw,5rem);align-items:start;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Floor Sanding FAQ</span>
|
||||||
|
<h2>Common Questions</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p style="color:var(--ash);">Have a question? Call us at <a href="tel:+17166021429" style="color:var(--amber);font-weight:700;">(716) 602-1429</a> and we will answer it directly.</p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-list" data-animate="up">
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How many times can a floor be sanded?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Solid hardwood can typically be sanded multiple times over its lifetime. Engineered hardwood depends on the wear layer thickness. We measure your floor before committing to sanding.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>Will sanding remove deep scratches?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">Yes. Sanding removes the surface layer of wood, taking most scratches with it. Very deep gouges may require wood filler before sanding. We assess each area during the estimate.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-item">
|
||||||
|
<div class="faq-question">
|
||||||
|
<h4>How dusty is the sanding process?</h4>
|
||||||
|
<div class="faq-icon" aria-hidden="true"></div>
|
||||||
|
</div>
|
||||||
|
<div class="faq-answer">
|
||||||
|
<div class="faq-answer-inner">With our dust containment system, very little dust escapes into your home. We seal off doorways and use containment equipment so the rest of your home stays clean.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ESTIMATE FORM -->
|
||||||
|
<section class="section contact-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="contact-layout">
|
||||||
|
<div>
|
||||||
|
<span class="eyebrow">Free Estimate</span>
|
||||||
|
<h2>Get Your Free Sanding Estimate</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Tell us about your floors and we will respond within 1 business hour.</p>
|
||||||
|
<div class="contact-info-list" style="margin-top:2rem;">
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Phone</h5><a href="tel:+17166021429">(716) 602-1429</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-info-item">
|
||||||
|
<div class="contact-info-icon">
|
||||||
|
<svg viewBox="0 0 20 20" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/></svg>
|
||||||
|
</div>
|
||||||
|
<div><h5>Hours</h5><p>Monday to Saturday: 8:00 AM to 5:00 PM</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="contact-form-wrap" data-animate="right">
|
||||||
|
<h3 style="margin-bottom:1.5rem;font-size:var(--text-xl);">Get Your Free Sanding Estimate</h3>
|
||||||
|
<form class="estimate-form" novalidate>
|
||||||
|
<input type="hidden" name="service_page" value="Floor Sanding">
|
||||||
|
<div class="form-grid form-grid--2">
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="name">Full Name <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="name" name="name" autocomplete="name" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="phone">Phone Number <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="tel" id="phone" name="phone" placeholder="(716) 000-0000" autocomplete="tel" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="email">Email Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="email" id="email" name="email" autocomplete="email" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-field">
|
||||||
|
<label for="address">Property Address <span aria-hidden="true">*</span></label>
|
||||||
|
<input type="text" id="address" name="address" autocomplete="street-address" required>
|
||||||
|
<span class="err-msg" role="alert"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-field" style="margin-top:1.25rem;">
|
||||||
|
<label for="message">Additional Details</label>
|
||||||
|
<textarea id="message" name="message" placeholder="Describe your floors or the issue you are experiencing."></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-trust">
|
||||||
|
<div class="form-trust-item">1 business hour response</div>
|
||||||
|
<div class="form-trust-item">No obligation</div>
|
||||||
|
<div class="form-trust-item">Licensed & insured</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn--primary btn--full btn--lg" style="margin-top:1.25rem;">Request Sanding Estimate</button>
|
||||||
|
<div class="form-status" role="status" aria-live="polite"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
<script src="/assets/js/form.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,167 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="site-root" content="/">
|
||||||
|
<title>Hardwood Floor Services | Refinishing, Restoration, Sanding | Floor It</title>
|
||||||
|
<meta name="description" content="Professional hardwood floor refinishing, restoration, sanding, and installation in Buffalo, NY and Erie County. Over 75 years of combined experience.">
|
||||||
|
<link rel="canonical" href="https://floorithardwoodfloors.com/services/">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/assets/css/components.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="site-header"></div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<section class="page-hero">
|
||||||
|
<div class="container page-hero-inner">
|
||||||
|
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<span class="breadcrumb-sep">/</span>
|
||||||
|
<span>Services</span>
|
||||||
|
</nav>
|
||||||
|
<span class="eyebrow">What We Do</span>
|
||||||
|
<h1>Hardwood Floor Services in Buffalo, NY</h1>
|
||||||
|
<p class="lead">Complete hardwood floor solutions: refinishing, restoration, sanding, and installation, delivered by Western New York's most experienced team.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FLOOR REFINISHING -->
|
||||||
|
<section class="section section--light" id="floor-refinishing">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Service 01</span>
|
||||||
|
<h2>Floor Refinishing</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Restore your floors to their original beauty with professional sanding, staining, and sealing.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">Our multi-stage refinishing process sands away years of wear and damage, then applies your choice of stain from over 100 color options, and seals with a durable topcoat that lasts 10 or more years.</p>
|
||||||
|
<ul style="margin-top:1.25rem;display:flex;flex-direction:column;gap:0.5rem;">
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Multiple stain color options</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Dustless sanding system</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Long-lasting professional finish</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Sample approval before full project</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Timeline: 7 to 10 business days</li>
|
||||||
|
</ul>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Get an Estimate</a>
|
||||||
|
<a href="/services/floor-refinishing/" class="btn btn--outline-dark">Learn More</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-animate="right" style="background:var(--grain);border-radius:var(--radius-xl);aspect-ratio:4/3;overflow:hidden;display:flex;align-items:center;justify-content:center;">
|
||||||
|
<img src="/assets/images/service-refinishing.webp" alt="Hardwood floor refinishing service" style="width:100%;height:100%;object-fit:cover;" loading="lazy" onerror="this.style.display='none'">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FLOOR RESTORATION -->
|
||||||
|
<section class="section section--alt" id="floor-restoration">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left" style="background:var(--grain);border-radius:var(--radius-xl);aspect-ratio:4/3;overflow:hidden;display:flex;align-items:center;justify-content:center;order:1;">
|
||||||
|
<img src="/assets/images/service-restoration.webp" alt="Hardwood floor restoration service" style="width:100%;height:100%;object-fit:cover;" loading="lazy" onerror="this.style.display='none'">
|
||||||
|
</div>
|
||||||
|
<div data-animate="right" style="order:2;">
|
||||||
|
<span class="eyebrow">Service 02</span>
|
||||||
|
<h2>Floor Restoration</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Water damage, deep scratches, warping, and buckling repaired with expert precision.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">When damage goes beyond surface wear, restoration is the answer. We repair structural damage, replace boards when needed, and restore your floor to like-new condition. We also provide documentation to support insurance claims.</p>
|
||||||
|
<ul style="margin-top:1.25rem;display:flex;flex-direction:column;gap:0.5rem;">
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Water and moisture damage repair</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Warping and buckling correction</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Deep scratch and gouge restoration</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Insurance documentation support</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Timeline: 10 to 14 business days</li>
|
||||||
|
</ul>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Get an Estimate</a>
|
||||||
|
<a href="/services/floor-restoration/" class="btn btn--outline-dark">Learn More</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FLOOR SANDING -->
|
||||||
|
<section class="section section--light" id="floor-sanding">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left">
|
||||||
|
<span class="eyebrow">Service 03</span>
|
||||||
|
<h2>Floor Sanding</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">Commercial-grade equipment and dust containment for a perfectly prepared surface.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">Professional sanding is the foundation of any successful refinishing project. Our multi-grit sanding process removes old finishes, levels imperfections, and creates the ideal surface for staining and sealing, while containing dust throughout the process.</p>
|
||||||
|
<ul style="margin-top:1.25rem;display:flex;flex-direction:column;gap:0.5rem;">
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Commercial-grade equipment (not rentals)</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Dustless sanding system</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Multi-grit sanding process</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Safe for family and pets</li>
|
||||||
|
</ul>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Get an Estimate</a>
|
||||||
|
<a href="/services/floor-sanding/" class="btn btn--outline-dark">Learn More</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-animate="right" style="background:var(--grain);border-radius:var(--radius-xl);aspect-ratio:4/3;overflow:hidden;display:flex;align-items:center;justify-content:center;">
|
||||||
|
<img src="/assets/images/service-sanding.webp" alt="Hardwood floor sanding service" style="width:100%;height:100%;object-fit:cover;" loading="lazy" onerror="this.style.display='none'">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FLOOR INSTALLATION -->
|
||||||
|
<section class="section section--alt" id="floor-installation">
|
||||||
|
<div class="container">
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center;">
|
||||||
|
<div data-animate="left" style="background:var(--grain);border-radius:var(--radius-xl);aspect-ratio:4/3;overflow:hidden;display:flex;align-items:center;justify-content:center;order:1;">
|
||||||
|
<img src="/assets/images/service-installation.webp" alt="New hardwood floor installation" style="width:100%;height:100%;object-fit:cover;" loading="lazy" onerror="this.style.display='none'">
|
||||||
|
</div>
|
||||||
|
<div data-animate="right" style="order:2;">
|
||||||
|
<span class="eyebrow">Service 04</span>
|
||||||
|
<h2>Floor Installation</h2>
|
||||||
|
<div class="divider"></div>
|
||||||
|
<p class="lead">New hardwood floors installed with precision. Quality materials, expert finish, built to last generations.</p>
|
||||||
|
<p style="margin-top:1rem;color:var(--smoke);">Whether you are renovating a room or building new, our installation team brings the same care and attention to new floors as we do to restoration. We source quality materials and ensure a flawless finished result.</p>
|
||||||
|
<ul style="margin-top:1.25rem;display:flex;flex-direction:column;gap:0.5rem;">
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Solid and engineered hardwood</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Wide range of wood species</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Residential and commercial</li>
|
||||||
|
<li style="display:flex;gap:0.75rem;align-items:flex-start;font-size:var(--text-sm);color:var(--smoke);"><span style="color:var(--amber);font-weight:700;flex-shrink:0;">✓</span> Professional site preparation</li>
|
||||||
|
</ul>
|
||||||
|
<div class="cta-group mt-8">
|
||||||
|
<a href="/contact/" class="btn btn--primary">Get an Estimate</a>
|
||||||
|
<a href="/services/floor-installation/" class="btn btn--outline-dark">Learn More</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="cta-strip">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Not Sure Which Service You Need?</h2>
|
||||||
|
<p>Call us and we will help you determine the right approach for your floors at no obligation.</p>
|
||||||
|
<div class="cta-group" style="justify-content:center;">
|
||||||
|
<a href="/contact/" class="btn btn--outline-dark btn--lg">Request an Estimate</a>
|
||||||
|
<a href="tel:+17166021429" class="btn btn--outline-dark btn--lg">Call (716) 602-1429</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<div id="site-footer"></div>
|
||||||
|
|
||||||
|
<script src="/assets/js/components.js"></script>
|
||||||
|
<script src="/assets/js/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||