69 Commits

Author SHA1 Message Date
70c507e8c0 Update src/app/styles/base.css 2026-03-06 00:33:27 +00:00
744004a7e3 Update src/app/page.tsx 2026-03-06 00:33:26 +00:00
f89cd8da30 Update src/app/layout.tsx 2026-03-06 00:33:26 +00:00
49b3451e73 Update src/app/globals.css 2026-03-06 00:33:25 +00:00
cec6f8051c Switch to version 6: modified src/app/page.tsx 2026-03-06 00:28:51 +00:00
bd32213e53 Switch to version 6: modified src/app/layout.tsx 2026-03-06 00:28:50 +00:00
48e9703c20 Switch to version 7: modified src/app/page.tsx 2026-03-06 00:28:46 +00:00
cca44b1778 Switch to version 7: modified src/app/layout.tsx 2026-03-06 00:28:45 +00:00
b8485489ba Switch to version 8: modified src/app/page.tsx 2026-03-06 00:28:12 +00:00
e0ccb103af Switch to version 8: modified src/app/layout.tsx 2026-03-06 00:28:12 +00:00
59784c678f Switch to version 7: modified src/app/page.tsx 2026-03-06 00:28:06 +00:00
b55e5e7c70 Switch to version 7: modified src/app/layout.tsx 2026-03-06 00:28:06 +00:00
0600cb2a81 Merge version_8 into main
Merge version_8 into main
2026-03-06 00:25:24 +00:00
e0076c6b13 Update src/app/page.tsx 2026-03-06 00:25:20 +00:00
3eed2431ef Update src/app/layout.tsx 2026-03-06 00:25:19 +00:00
3fe25ae0df Merge version_7 into main
Merge version_7 into main
2026-03-06 00:18:04 +00:00
1d9349c15d Update src/app/page.tsx 2026-03-06 00:18:00 +00:00
e92f8bfe99 Update src/app/layout.tsx 2026-03-06 00:18:00 +00:00
51e34f4b29 Merge version_6 into main
Merge version_6 into main
2026-03-06 00:15:00 +00:00
812ca9ef84 Update src/app/page.tsx 2026-03-06 00:14:56 +00:00
55ed7a7d9f Merge version_6 into main
Merge version_6 into main
2026-03-06 00:13:13 +00:00
605f8bdf62 Update src/app/page.tsx 2026-03-06 00:13:09 +00:00
87bec05b7e Merge version_6 into main
Merge version_6 into main
2026-03-06 00:11:32 +00:00
43c9bc334a Update src/app/page.tsx 2026-03-06 00:11:28 +00:00
13e2614fdb Update src/app/layout.tsx 2026-03-06 00:11:27 +00:00
4a6a6f1a7f Merge version_6 into main
Merge version_6 into main
2026-03-06 00:09:40 +00:00
fbe218e325 Update src/app/page.tsx 2026-03-06 00:09:36 +00:00
52b726e20a Merge version_6 into main
Merge version_6 into main
2026-03-06 00:07:54 +00:00
3124ddf4bf Update src/app/page.tsx 2026-03-06 00:07:50 +00:00
a3a623d06a Merge version_6 into main
Merge version_6 into main
2026-03-06 00:06:07 +00:00
21bec54d83 Update src/app/page.tsx 2026-03-06 00:06:03 +00:00
9dbcf34068 Merge version_6 into main
Merge version_6 into main
2026-03-06 00:04:21 +00:00
d43a1af899 Update src/app/page.tsx 2026-03-06 00:04:11 +00:00
203283c134 Merge version_6 into main
Merge version_6 into main
2026-03-06 00:02:25 +00:00
fa437999a3 Update src/app/page.tsx 2026-03-06 00:02:21 +00:00
18959feb6a Merge version_6 into main
Merge version_6 into main
2026-03-06 00:00:38 +00:00
4a97a8eaf9 Update src/app/page.tsx 2026-03-06 00:00:34 +00:00
43bee4235f Update src/app/layout.tsx 2026-03-06 00:00:34 +00:00
e14e26ec5b Merge version_3 into main
Merge version_3 into main
2026-03-05 23:57:45 +00:00
abc34c7bb7 Update theme fonts 2026-03-05 23:57:41 +00:00
67adf66cd9 Update theme fonts 2026-03-05 23:57:41 +00:00
70055d040a Switch to version 3: modified src/app/page.tsx 2026-03-05 23:56:07 +00:00
53692691ca Switch to version 4: modified src/app/page.tsx 2026-03-05 23:56:00 +00:00
4c56d54f72 Switch to version 4: modified src/app/layout.tsx 2026-03-05 23:56:00 +00:00
3ed757eeb7 Merge version_5 into main
Merge version_5 into main
2026-03-05 23:06:34 +00:00
6ecb80f5f1 Update src/app/page.tsx 2026-03-05 23:06:29 +00:00
a91830f1d8 Merge version_5 into main
Merge version_5 into main
2026-03-05 23:04:50 +00:00
86f3a04a34 Update src/app/page.tsx 2026-03-05 23:04:46 +00:00
4493b29637 Update src/app/layout.tsx 2026-03-05 23:04:45 +00:00
7b760bc1de Merge version_4 into main
Merge version_4 into main
2026-03-05 22:56:24 +00:00
dc074890c8 Update src/app/page.tsx 2026-03-05 22:56:20 +00:00
84791df8f1 Merge version_4 into main
Merge version_4 into main
2026-03-05 22:54:36 +00:00
e08c865688 Update src/app/page.tsx 2026-03-05 22:54:32 +00:00
6ddaa22e34 Merge version_3 into main
Merge version_3 into main
2026-03-05 22:39:44 +00:00
f2bbaedad3 Update src/app/page.tsx 2026-03-05 22:39:40 +00:00
c1e013573a Update src/app/layout.tsx 2026-03-05 22:39:39 +00:00
4283aceccf Merge version_2 into main
Merge version_2 into main
2026-03-05 22:34:03 +00:00
5e97e55bfa Update src/app/page.tsx 2026-03-05 22:33:59 +00:00
2e59ee87a7 Merge version_2 into main
Merge version_2 into main
2026-03-05 22:33:13 +00:00
35f24887fd Update src/app/page.tsx 2026-03-05 22:33:09 +00:00
1fd290b237 Update src/app/layout.tsx 2026-03-05 22:33:08 +00:00
647c03d36d Merge version_1 into main
Merge version_1 into main
2026-03-05 21:14:11 +00:00
cd0cf8d9bf Merge version_1 into main
Merge version_1 into main
2026-03-05 21:13:56 +00:00
604d726466 Merge version_1 into main
Merge version_1 into main
2026-03-05 21:13:46 +00:00
eab6772ae9 Merge version_1 into main
Merge version_1 into main
2026-03-05 21:13:30 +00:00
1d14270cd8 Merge version_1 into main
Merge version_1 into main
2026-03-05 21:09:51 +00:00
6b9a615dfb Merge version_1 into main
Merge version_1 into main
2026-03-05 21:09:06 +00:00
d01e511de4 Merge version_1 into main
Merge version_1 into main
2026-03-05 21:07:37 +00:00
4b16c0db7a Merge version_1 into main
Merge version_1 into main
2026-03-05 21:06:09 +00:00
4 changed files with 295 additions and 218 deletions

View File

@@ -1,5 +1,3 @@
@import "tailwindcss";
@import "./styles/variables.css";
@import "./styles/theme.css";
@import "./styles/utilities.css";
@import "./styles/base.css";
@tailwind base;
@tailwind components;
@tailwind utilities;

View File

@@ -1,57 +1,22 @@
import type { Metadata } from "next";
import { Halant } from "next/font/google";
import { Inter } from "next/font/google";
import { Montserrat } from "next/font/google";
import "./globals.css";
import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag";
import "./styles/variables.css";
import "./styles/base.css";
const halant = Halant({
variable: "--font-halant", subsets: ["latin"],
weight: ["300", "400", "500", "600", "700"],
});
const inter = Inter({
variable: "--font-inter", subsets: ["latin"],
});
const montserrat = Montserrat({
variable: "--font-montserrat", subsets: ["latin"],
});
const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "Taishan Construction | Premium Interlock & Hardscape Toronto", description: "Premium interlock driveways, patios, and construction services for Toronto and the GTA. Free 3D design. Fully insured. 1000+ projects completed.", keywords: "Toronto interlock contractor, interlock driveway Toronto, luxury landscaping GTA, backyard patio Toronto, retaining wall contractor, construction company Toronto, hardscape contractor", metadataBase: new URL("https://taishanconstruction.com"),
alternates: {
canonical: "https://taishanconstruction.com"},
openGraph: {
title: "Taishan Construction | Premium Interlock & Hardscape Services", description: "Transform your Toronto property with premium interlock driveways, patios, and construction. Free 3D design consultation.", url: "https://taishanconstruction.com", siteName: "Taishan Construction", type: "website", images: [
{
url: "http://img.b2bpic.net/free-photo/natural-grass-close-up_23-2148858213.jpg", alt: "Luxury interlock driveway installation Toronto"},
],
},
twitter: {
card: "summary_large_image", title: "Taishan Construction | Premium Interlock & Hardscape", description: "Premium construction services for Toronto. Free 3D design. Fully insured. 1000+ projects.", images: ["http://img.b2bpic.net/free-photo/natural-grass-close-up_23-2148858213.jpg"],
},
robots: {
index: true,
follow: true,
},
};
title: "Taishan Construction | Premium Hardscape & Outdoor Design", description: "Toronto's trusted source for luxury outdoor spaces. Custom driveways, patios, and hardscaping designed with precision and built to last."};
export default function RootLayout({
children,
}: Readonly<{
}: {
children: React.ReactNode;
}>) {
}) {
return (
<html lang="en" suppressHydrationWarning>
<ServiceWrapper>
<body
className={`${halant.variable} ${inter.variable} ${montserrat.variable} antialiased`}
>
<Tag />
{children}
<html lang="en">
<body className={inter.className}>{children}
<script
dangerouslySetInnerHTML={{
__html: `
@@ -1419,7 +1384,6 @@ export default function RootLayout({
}}
/>
</body>
</ServiceWrapper>
</html>
);
}

View File

@@ -11,8 +11,82 @@ import TestimonialCardTen from '@/components/sections/testimonial/TestimonialCar
import ContactFaq from '@/components/sections/contact/ContactFaq';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
import { Building2, Eye, CheckCircle2, Palette, Users, MessageCircle, Sparkles, ArrowRightLeft, Cog, Footprints, Home, Zap, Shield, Hammer, Trees, Droplet, Frame, Lightbulb, Crown, Phone } from 'lucide-react';
import React, { useState } from 'react';
import Link from 'next/link';
interface BeforeAfterImagePair {
beforeSrc: string;
afterSrc: string;
title: string;
}
const BeforeAfterCard: React.FC<{
pair: BeforeAfterImagePair;
isHovered: boolean;
}> = ({ pair, isHovered }) => {
const [sliderPosition, setSliderPosition] = useState(50);
const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {
const rect = e.currentTarget.getBoundingClientRect();
const newPosition = ((e.clientX - rect.left) / rect.width) * 100;
setSliderPosition(Math.max(0, Math.min(100, newPosition)));
};
return (
<div
className="relative w-full h-64 rounded-lg overflow-hidden cursor-col-resize bg-gray-900"
onMouseMove={handleMouseMove}
onMouseLeave={() => setSliderPosition(50)}
>
<div className="absolute inset-0">
<img
src={pair.afterSrc}
alt="After"
className="w-full h-full object-cover"
/>
</div>
<div
className="absolute inset-0 overflow-hidden"
style={{ width: `${sliderPosition}%` }}
>
<img
src={pair.beforeSrc}
alt="Before"
className="w-full h-full object-cover"
style={{ width: `${(100 / sliderPosition) * 100}%` }}
/>
</div>
<div
className="absolute top-0 bottom-0 w-1 bg-white shadow-lg transition-colors"
style={{ left: `${sliderPosition}%`, transform: 'translateX(-50%)' }}
>
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-white rounded-full p-2 shadow-lg">
<ArrowRightLeft size={16} className="text-gray-900" />
</div>
</div>
<div className="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/80 to-transparent p-3">
<p className="text-white text-sm font-semibold">{pair.title}</p>
</div>
</div>
);
};
export default function LandingPage() {
const [servicesHoveredCard, setServicesHoveredCard] = useState<string | null>(null);
const [galleryHoveredCard, setGalleryHoveredCard] = useState<string | null>(null);
const beforeAfterPairs: BeforeAfterImagePair[] = [
{
beforeSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-lbulq2e9.jpg?_wi=1", afterSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-uklcyhsf.jpg?_wi=1", title: "Rendering vs. Completed Project"
},
{
beforeSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-ok3joqnq.jpg?_wi=1", afterSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=1", title: "3D Design to Reality"
},
{
beforeSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-uklcyhsf.jpg?_wi=2", afterSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-lbulq2e9.jpg?_wi=2", title: "Luxury Interlock Installation"
}
];
return (
<ThemeProvider
defaultButtonVariant="text-stagger"
@@ -28,7 +102,7 @@ export default function LandingPage() {
>
<div id="nav" data-section="nav">
<NavbarStyleApple
brandName="Taishan Construction"
brandName="Taishan"
navItems={[
{ name: "Services", id: "services" },
{ name: "Gallery", id: "gallery" },
@@ -41,24 +115,24 @@ export default function LandingPage() {
<div id="hero" data-section="hero">
<HeroSplitDualMedia
title="Toronto's Trusted Interlock & Construction Specialists"
description="Premium landscaping and construction services across the GTA. Designed with precision. Built to last."
tag="Luxury Construction"
title="Designing Outdoor Spaces Worth Coming Home To"
description="Architectural precision meets refined craftsmanship. Premium hardscaping and custom construction throughout the Greater Toronto Area, where every detail is thoughtfully designed and expertly executed."
tag="Luxury Outdoor Architecture"
tagIcon={Building2}
background={{ variant: "plain" }}
mediaItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/natural-grass-close-up_23-2148858213.jpg?_wi=1", imageAlt: "Luxury interlock driveway installation"
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-lbulq2e9.jpg?_wi=1", imageAlt: "Architectural outdoor space showcase"
},
{
imageSrc: "http://img.b2bpic.net/free-photo/old-woman-doing-fitness-exercises_23-2149565528.jpg", imageAlt: "Premium patio transformation"
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-uklcyhsf.jpg?_wi=1", imageAlt: "Premium hardscape design detail"
}
]}
rating={5}
ratingText="1000+ Projects Completed"
buttons={[
{ text: "Get Your Free 3D Design", href: "#contact" },
{ text: "Visit Our Showroom", href: "#showroom" }
{ text: "Start Your Project", href: "#contact" },
{ text: "View Portfolio", href: "#gallery" }
]}
buttonAnimation="slide-up"
mediaAnimation="slide-up"
@@ -72,9 +146,9 @@ export default function LandingPage() {
<div id="taishan-effect" data-section="taishan-effect">
<SplitAbout
title="The Taishan Effect"
description="Why homeowners choose Taishan Construction for their premium hardscape and construction projects."
tag="Why Choose Taishan"
title="The Taishan Signature Approach"
description="A refined process combining strategic planning, photorealistic 3D visualization, and curated material selection. We design with intention, visualize with precision, and build with expertise."
tag="Our Methodology"
tagAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
@@ -82,24 +156,24 @@ export default function LandingPage() {
mediaAnimation="slide-up"
bulletPoints={[
{
title: "Free 3D Project Visualization", description: "See your complete project before construction begins with our professional rendering service", icon: Eye
title: "Strategic Planning", description: "Detailed site analysis and master planning that transforms your vision into a cohesive outdoor architecture", icon: Eye
},
{
title: "Professional Project Planning", description: "Detailed timelines, material specifications, and structured installation processes", icon: CheckCircle2
title: "3D Visualization", description: "Photorealistic renderings allowing you to experience your project before construction, ensuring complete confidence in the design", icon: CheckCircle2
},
{
title: "Outdoor Material Showroom", description: "Explore real samples and design options in person to make confident material selections", icon: Palette
title: "Material Curation", description: "Carefully selected premium materials showcased in our outdoor showroom, chosen for both aesthetic excellence and lasting performance", icon: Palette
},
{
title: "Experienced Installation Teams", description: "Certified professionals with years of expertise in premium hardscape installation", icon: Users
title: "Expert Execution", description: "Certified installation teams with years of experience in luxury hardscape and construction projects", icon: Users
},
{
title: "Clear Communication & Timelines", description: "Transparent updates throughout your project with professional project management", icon: MessageCircle
title: "Refined Communication", description: "Transparent project management with detailed timelines and consistent updates throughout construction", icon: MessageCircle
}
]}
imageSrc="http://img.b2bpic.net/free-photo/high-angle-clay-pieces-arrangement_23-2149480221.jpg?_wi=1"
imageAlt="Material showroom display"
buttons={[{ text: "Start Your Project Plan", href: "#contact" }]}
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-ok3joqnq.jpg?_wi=1"
imageAlt="Premium material showcase and design consultation"
buttons={[{ text: "Explore Our Process", href: "#process" }]}
buttonAnimation="slide-up"
titleClassName="text-5xl font-bold mb-4"
descriptionClassName="text-lg leading-relaxed mb-8"
@@ -109,19 +183,19 @@ export default function LandingPage() {
<div id="3d-design" data-section="3d-design">
<FeatureHoverPattern
title="See Your Project Before We Build It"
description="Taishan Construction offers complimentary 3D project renderings so you can visualize your driveway, backyard, or porch before construction begins. This allows homeowners to make confident decisions before investing in their project."
tag="3D Design Technology"
title="Step Into Your Future Backyard"
description="Experience the emotional transformation before we build. Our complimentary 3D architectural renderings empower you to visualize every detail—from material textures to landscape integration—making confident design decisions with complete clarity."
tag="Visualization Technology"
tagIcon={Sparkles}
tagAnimation="slide-up"
features={[
{
icon: Eye,
title: "Photorealistic Renderings", description: "Crystal-clear 3D visualizations showing materials, lighting, landscaping, and final details", button: { text: "Get Free 3D Design", href: "#contact" }
title: "Photorealistic 3D Renderings", description: "Crystal-clear architectural visualizations showcasing materials, proportions, lighting, and surrounding landscape integration", button: { text: "Get Free 3D Design", href: "#contact" }
},
{
icon: ArrowRightLeft,
title: "Before & After Comparisons", description: "Side-by-side views showing current property and your completed dream project transformation"
title: "Before & After Experience", description: "Side-by-side visualizations showing your current property and the completed outdoor sanctuary of your dreams"
}
]}
animationType="slide-up"
@@ -134,101 +208,156 @@ export default function LandingPage() {
</div>
<div id="services" data-section="services">
<FeatureHoverPattern
title="Our Services"
description="Premium construction and landscaping services for Toronto and the Greater Toronto Area. Each project is crafted with precision and built to last."
tag="Complete Solutions"
features={[
{
icon: Cog,
title: "Interlock Driveways", description: "Professional interlock paving with premium materials and expert installation"
},
{
icon: Palette,
title: "Backyard Patios", description: "Custom patio designs transforming outdoor living spaces into luxury retreats"
},
{
icon: Footprints,
title: "Walkways", description: "Decorative and functional pathways connecting your property with style"
},
{
icon: Building2,
title: "Retaining Walls", description: "Structural and aesthetic walls for landscaping and property management"
},
{
icon: Home,
title: "Natural Stone Porches", description: "Premium stone entry features creating impressive curb appeal"
},
{
icon: Zap,
title: "Landscape Lighting", description: "Professional outdoor lighting systems enhancing ambiance and security"
},
{
icon: Hammer,
title: "Decks", description: "Custom wooden decks designed for durability and aesthetic appeal"
},
{
icon: Shield,
title: "Fences", description: "Privacy fences and decorative fencing solutions for residential properties"
},
{
icon: Trees,
title: "Rock Beds & Landscaping", description: "Landscape design elements that enhance property value and curb appeal"
},
{
icon: Droplet,
title: "Basement Waterproofing", description: "Professional waterproofing solutions protecting your foundation and home"
},
{
icon: Frame,
title: "Interior Renovations", description: "Premium interior construction and renovation services for Toronto homes"
}
]}
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
tagAnimation="slide-up"
cardTitleClassName="text-5xl font-bold mb-4"
/>
<div className="px-6 lg:px-12 py-16 lg:py-24">
<div className="max-w-7xl mx-auto">
<div className="mb-12">
<p className="text-sm font-semibold uppercase tracking-wider text-primary-cta mb-2">Design-Focused Solutions</p>
<h2 className="text-4xl lg:text-5xl font-bold mb-4">Architectural Services</h2>
<p className="text-lg text-foreground/80">Premium hardscape architecture and construction services throughout Toronto and the Greater Toronto Area. Each project reflects refined design principles and masterful execution.
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-12">
{[
{
id: "interlock", icon: Cog,
title: "Architectural Interlock Driveways", description: "Custom interlock design with premium materials, proportional patterns, and professional installation"
},
{
id: "patios", icon: Palette,
title: "Designer Backyard Patios", description: "Architectural patio design transforming outdoor living into refined entertaining spaces"
},
{
id: "walkways", icon: Footprints,
title: "Architectural Walkways", description: "Thoughtfully designed pathways connecting properties with sophisticated material selection"
},
{
id: "retaining", icon: Building2,
title: "Structural Retaining Walls", description: "Engineering-focused wall design combining structure and aesthetic refinement"
},
{
id: "porches", icon: Home,
title: "Natural Stone Entry Porches", description: "Premium stone architectural features creating distinguished curb appeal"
},
{
id: "lighting", icon: Zap,
title: "Architectural Landscape Lighting", description: "Professional outdoor lighting design enhancing ambiance and architectural details"
}
].map((service) => (
<div
key={service.id}
className="relative group"
onMouseEnter={() => setServicesHoveredCard(service.id)}
onMouseLeave={() => setServicesHoveredCard(null)}
>
<div className="p-6 rounded-lg border border-accent/20 bg-card hover:border-primary-cta/40 transition-all duration-300">
<service.icon className="w-8 h-8 text-primary-cta mb-4" />
<h3 className="text-xl font-semibold mb-2">{service.title}</h3>
<p className="text-foreground/70 text-sm">{service.description}</p>
</div>
{servicesHoveredCard === service.id && (
<div className="absolute inset-0 rounded-lg bg-black/50 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none">
<div className="text-center text-white p-4">
<p className="font-semibold">See examples of this service</p>
<p className="text-sm text-white/80">in our project gallery</p>
</div>
</div>
)}
</div>
))}
</div>
<div className="bg-card rounded-lg p-8 border border-accent/20">
<h3 className="text-2xl font-bold mb-6">Architectural Interlock Showcase</h3>
<p className="text-foreground/80 mb-8">Hover over the slider to compare our 3D architectural renderings with completed installations:</p>
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{beforeAfterPairs.map((pair, index) => (
<BeforeAfterCard
key={index}
pair={pair}
isHovered={galleryHoveredCard === `service-${index}`}
/>
))}
</div>
</div>
</div>
</div>
</div>
<div id="gallery" data-section="gallery">
<BlogCardThree
title="Project Gallery"
description="Explore our portfolio of premium hardscape and construction projects across the GTA."
tag="Portfolio Showcase"
tagAnimation="slide-up"
blogs={[
{
id: "driveway-1", category: "Driveways", title: "Modern Interlock Driveway Transformation", excerpt: "Premium herringbone pattern interlock installation with integrated lighting", imageSrc: "http://img.b2bpic.net/free-photo/natural-grass-close-up_23-2148858213.jpg?_wi=2", imageAlt: "Modern interlock driveway", authorName: "Taishan Team", authorAvatar: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", date: "2024"
},
{
id: "driveway-2", category: "Driveways", title: "Contemporary Driveway Design", excerpt: "Large format pavers with sophisticated layout and professional finishing", imageSrc: "http://img.b2bpic.net/free-photo/natural-grass-close-up_23-2148858213.jpg?_wi=3", imageAlt: "Contemporary driveway design", authorName: "Taishan Team", authorAvatar: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", date: "2024"
},
{
id: "backyard-1", category: "Backyards", title: "Luxury Backyard Living Space", excerpt: "Complete outdoor renovation with patio, lighting, and landscaping", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-luxury-swimming-pool-with-palm-trees-thai-style-decoration_1258-111445.jpg?_wi=1", imageAlt: "Luxury backyard patio", authorName: "Taishan Team", authorAvatar: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", date: "2024"
},
{
id: "backyard-2", category: "Backyards", title: "Premium Patio Entertainment Area", excerpt: "Multi-level patio with integrated seating and ambient lighting design", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-luxury-swimming-pool-with-palm-trees-thai-style-decoration_1258-111445.jpg?_wi=2", imageAlt: "Premium patio area", authorName: "Taishan Team", authorAvatar: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", date: "2024"
},
{
id: "porch-1", category: "Porches", title: "Natural Stone Entry Porch", excerpt: "Custom stone work creating impressive curb appeal and property value", imageSrc: "http://img.b2bpic.net/free-photo/vintage-background-steps-turquoise-doors-ancient-architecture_169016-20034.jpg", imageAlt: "Natural stone porch entry", authorName: "Taishan Team", authorAvatar: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", date: "2024"
},
{
id: "walkway-1", category: "Walkways", title: "Decorative Stone Walkway", excerpt: "Professional pathway installation enhancing property flow and design", imageSrc: "http://img.b2bpic.net/free-photo/stone-path-with-grass-growing-up_1137-86.jpg", imageAlt: "Stone walkway design", authorName: "Taishan Team", authorAvatar: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg", date: "2024"
}
]}
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={false}
cardTitleClassName="text-5xl font-bold mb-4"
/>
<div className="px-6 lg:px-12 py-16 lg:py-24">
<div className="max-w-7xl mx-auto">
<div className="mb-12">
<p className="text-sm font-semibold uppercase tracking-wider text-primary-cta mb-2">Portfolio Showcase</p>
<h2 className="text-4xl lg:text-5xl font-bold mb-4">Completed Projects</h2>
<p className="text-lg text-foreground/80">Explore our portfolio of architectural hardscape and construction projects throughout the Greater Toronto Area.
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
{[
{
id: "project-1", title: "Luxury Architectural Installation", type: "Interlock Driveway", location: "North York, ON", beforeSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-ok3joqnq.jpg?_wi=2", afterSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-lbulq2e9.jpg?_wi=2", description: "Premium hardscape installation showcasing architectural precision and craftsmanship"
},
{
id: "project-2", title: "Contemporary Hardscape Design", type: "Patio Installation", location: "Vaughan, ON", beforeSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=2", afterSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-uklcyhsf.jpg?_wi=2", description: "Large format pavers with sophisticated design and professional finishing"
},
{
id: "project-3", title: "Refined Outdoor Living Design", type: "Backyard Transformation", location: "Toronto, ON", beforeSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-lbulq2e9.jpg?_wi=3", afterSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-ok3joqnq.jpg?_wi=3", description: "Complete outdoor transformation with premium materials and expert installation"
},
{
id: "project-4", title: "Luxury Entertainment Patio", type: "Architectural Patio", location: "Markham, ON", beforeSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-uklcyhsf.jpg?_wi=3", afterSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=3", description: "Multi-level design with integrated features and ambient lighting"
},
{
id: "project-5", title: "Natural Stone Architectural Entry", type: "Stone Porch", location: "Richmond Hill, ON", beforeSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-ok3joqnq.jpg?_wi=4", afterSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-uklcyhsf.jpg?_wi=4", description: "Custom stone architectural work creating distinguished curb appeal"
},
{
id: "project-6", title: "Professional Landscape Integration", type: "Hardscape Design", location: "Scarborough, ON", beforeSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-lbulq2e9.jpg?_wi=4", afterSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-ok3joqnq.jpg?_wi=4", description: "Complete landscape architecture enhancing property flow and design"
}
].map((project) => (
<div
key={project.id}
className="group"
onMouseEnter={() => setGalleryHoveredCard(project.id)}
onMouseLeave={() => setGalleryHoveredCard(null)}
>
<div className="rounded-lg overflow-hidden border border-accent/20">
{galleryHoveredCard === project.id ? (
<BeforeAfterCard
pair={{
beforeSrc: project.beforeSrc,
afterSrc: project.afterSrc,
title: project.title
}}
isHovered={true}
/>
) : (
<div className="h-64 relative overflow-hidden">
<img
src={project.afterSrc}
alt={project.title}
className="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
/>
<div className="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent p-4 flex flex-col justify-end">
<p className="text-xs text-white/70 mb-1">{project.type}</p>
<p className="text-xs text-white/60 mb-2">{project.location}</p>
<h3 className="text-lg font-semibold text-white">{project.title}</h3>
<p className="text-sm text-white/80 mt-2">{project.description}</p>
</div>
</div>
)}
</div>
</div>
))}
</div>
</div>
</div>
</div>
<div id="showroom" data-section="showroom">
<SplitAbout
title="Visit Our Outdoor Material Showroom"
description="Explore real materials and design options before construction begins. Compare interlock styles, natural stone, lighting systems, and layout options with our expert team."
description="Experience curated materials and design inspiration in person. Compare premium interlock, natural stone, and landscape lighting solutions with our expert team before finalizing your project."
tag="Showroom Experience"
tagAnimation="slide-up"
textboxLayout="default"
@@ -237,21 +366,21 @@ export default function LandingPage() {
mediaAnimation="slide-up"
bulletPoints={[
{
title: "Compare Materials In Person", description: "Touch and see actual materials, finishes, and color options for your project", icon: Eye
title: "Material Exploration", description: "Touch and examine authentic materials, finishes, and color options for your architectural project", icon: Eye
},
{
title: "Plan With Experts", description: "Our design team helps you make confident selections based on your vision and budget", icon: Users
title: "Design Consultation", description: "Our architectural team guides you through material selection aligned with your vision and investment", icon: Users
},
{
title: "Visualize Your Project", description: "Use our showroom samples alongside 3D renderings to finalize your design", icon: Lightbulb
title: "Project Visualization", description: "Combine showroom samples with 3D renderings to finalize your complete design concept", icon: Lightbulb
},
{
title: "Premium Product Selection", description: "Access to exclusive high-end materials and professional-grade landscape lighting", icon: Crown
title: "Premium Collections", description: "Exclusive access to high-end materials and professional-grade architectural lighting systems", icon: Crown
}
]}
imageSrc="http://img.b2bpic.net/free-photo/high-angle-clay-pieces-arrangement_23-2149480221.jpg?_wi=2"
imageAlt="Material showroom samples and display"
buttons={[{ text: "Book a Showroom Visit", href: "#contact" }]}
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=1"
imageAlt="Premium material showroom and design display"
buttons={[{ text: "Schedule Showroom Consultation", href: "#contact" }]}
buttonAnimation="slide-up"
titleClassName="text-5xl font-bold mb-4"
descriptionClassName="text-lg leading-relaxed mb-8"
@@ -260,22 +389,22 @@ export default function LandingPage() {
<div id="process" data-section="process">
<MetricCardTen
title="Our Proven Process"
description="A structured approach to delivering premium hardscape projects on time and on budget."
tag="Professional Installation"
title="Our Architectural Process"
description="A refined methodology delivering premium hardscape projects with precision, transparency, and exceptional craftsmanship."
tag="Professional Execution"
tagAnimation="slide-up"
metrics={[
{
id: "1", title: "Consultation & Assessment", subtitle: "Understanding your vision, site conditions, and project requirements", category: "Step 1", value: "Free Quote"
id: "1", title: "Strategic Consultation", subtitle: "Understanding your vision, site conditions, and architectural aspirations", category: "Phase 1", value: "Complimentary"
},
{
id: "2", title: "3D Design & Planning", subtitle: "Professional renderings and detailed project specifications", category: "Step 2", value: "Included"
id: "2", title: "Architectural Design & 3D Visualization", subtitle: "Professional renderings and detailed architectural specifications", category: "Phase 2", value: "Included"
},
{
id: "3", title: "Professional Construction", subtitle: "Expert installation with certified teams and quality materials", category: "Step 3", value: "Fully Insured"
id: "3", title: "Expert Installation", subtitle: "Master craftsmen and certified teams with years of hardscape experience", category: "Phase 3", value: "Fully Insured"
},
{
id: "4", title: "Final Walkthrough & Warranty", subtitle: "Inspection, final touches, and comprehensive project warranty", category: "Step 4", value: "Guaranteed"
id: "4", title: "Final Inspection & Warranty", subtitle: "Comprehensive walkthrough, final touches, and project guarantees", category: "Phase 4", value: "Guaranteed"
}
]}
textboxLayout="default"
@@ -288,28 +417,28 @@ export default function LandingPage() {
<div id="testimonials" data-section="testimonials">
<TestimonialCardTen
title="Trusted By Homeowners Across the GTA"
description="See what our satisfied clients have to say about their Taishan Construction projects."
title="Trusted By Discerning Homeowners"
description="Hear from homeowners who invested in premium outdoor architecture and are thrilled with their Taishan experience."
tag="Client Testimonials"
tagAnimation="slide-up"
testimonials={[
{
id: "1", title: "Complete Driveway Transformation", quote: "Taishan's team transformed our driveway into something spectacular. The 3D design preview was incredibly helpful, and the installation was professional from start to finish. Highly recommended for anyone in Toronto looking for premium hardscape work.", name: "Jennifer Chen", role: "Toronto Homeowner", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=1", imageAlt: "Jennifer Chen"
id: "1", title: "Complete Driveway Transformation", quote: "Taishan's approach to our driveway was genuinely architectural. The 3D renderings were photorealistic, and the team's attention to every detail was exceptional. This isn't just construction—it's craftsmanship. Highly recommended for anyone serious about their property investment.", name: "Jennifer Chen", role: "Toronto Homeowner", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=2", imageAlt: "Jennifer Chen"
},
{
id: "2", title: "Outstanding Patio Project", quote: "We couldn't be happier with our new backyard patio. The team listened to our vision, created perfect 3D renderings, and delivered exactly what we envisioned. The attention to detail and timeline management were exceptional.", name: "Michael Rodriguez", role: "Vaughan Homeowner", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=2", imageAlt: "Michael Rodriguez"
id: "2", title: "Outstanding Patio Project", quote: "We couldn't be more pleased with our patio. The team listened intently to our vision, created stunning 3D visualizations, and delivered exactly as promised. The level of professional project management and design refinement exceeded our expectations.", name: "Michael Rodriguez", role: "Vaughan Homeowner", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=3", imageAlt: "Michael Rodriguez"
},
{
id: "3", title: "Professional & Reliable", quote: "From the initial consultation through completion, Taishan showed true professionalism. Their material showroom helped us choose the perfect stone for our porch. The finished result exceeded our expectations.", name: "Sarah Thompson", role: "North York Resident", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=3", imageAlt: "Sarah Thompson"
id: "3", title: "Professional & Refined", quote: "From initial consultation through final inspection, Taishan demonstrated genuine professionalism and expertise. Their material showroom was instrumental in our selection process, and the finished result has truly transformed our property.", name: "Sarah Thompson", role: "North York Resident", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=4", imageAlt: "Sarah Thompson"
},
{
id: "4", title: "Worth Every Investment", quote: "This is clearly a luxury construction company, not just a contractor. The entire process felt premium, from the design consultation to the final walkthrough. Our property value and curb appeal have both dramatically improved.", name: "David Park", role: "Markham Homeowner", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=4", imageAlt: "David Park"
id: "4", title: "Worth Every Investment", quote: "This is clearly a luxury architectural firm, not just a contractor. The entire experience felt premiumfrom the design consultation to project completion. Our property value and curb appeal have both dramatically improved.", name: "David Park", role: "Markham Homeowner", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=5", imageAlt: "David Park"
},
{
id: "5", title: "Exceptional Waterproofing Work", quote: "We had basement waterproofing done by Taishan and couldn't be happier. Their expertise was evident, and our foundation is now completely protected. Highly professional team.", name: "Lisa Martinez", role: "Richmond Hill Homeowner", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=5", imageAlt: "Lisa Martinez"
id: "5", title: "Exceptional Mastery", quote: "We engaged Taishan for a complex multi-phase project and they handled every phase with sophistication. Their expertise was evident in every decision, and our backyard is now a true outdoor sanctuary.", name: "Lisa Martinez", role: "Richmond Hill Homeowner", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=6", imageAlt: "Lisa Martinez"
},
{
id: "6", title: "Complete Backyard Overhaul", quote: "Taishan handled our entire backyard renovation including patio, landscape lighting, and landscaping. The coordination was seamless, and the final result is absolutely stunning. We now have the backyard of our dreams.", name: "Robert Williams", role: "Scarborough Homeowner", imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-young-handsome-successful-man_1163-5475.jpg?_wi=6", imageAlt: "Robert Williams"
id: "6", title: "Complete Outdoor Architecture", quote: "Taishan orchestrated our entire backyard redesign—patio, lighting, landscaping—with seamless coordination. The finished outdoor space is absolutely stunning and has become our favorite place to spend time.", name: "Robert Williams", role: "Scarborough Homeowner", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AXh5KliD4l7rWjrQZkOq7ZuPnH/uploaded-1772749929936-heyeujvs.jpg?_wi=7", imageAlt: "Robert Williams"
}
]}
textboxLayout="default"
@@ -321,32 +450,32 @@ export default function LandingPage() {
<div id="contact" data-section="contact">
<ContactFaq
ctaTitle="Ready to Transform Your Property?"
ctaDescription="Book a consultation and receive a free 3D preview of your project."
ctaTitle="Let's Create Something Exceptional"
ctaDescription="Begin your outdoor architectural journey with a complimentary consultation and 3D project preview."
ctaButton={{
text: "Get Free 3D Design", href: "mailto:info@taishanconstruction.com?subject=Free%203D%20Design%20Consultation"
text: "Start Your Project", href: "mailto:info@taishanconstruction.com?subject=Project%20Consultation%20Request"
}}
ctaIcon={Sparkles}
useInvertedBackground={false}
animationType="slide-up"
faqs={[
{
id: "1", title: "What areas do you service?", content: "We service the entire Greater Toronto Area (GTA), including Toronto, Scarborough, Markham, North York, Richmond Hill, Vaughan, Pickering, Ajax, and surrounding communities. Contact us for your specific location."
id: "1", title: "What areas do you service?", content: "We service the entire Greater Toronto Area (GTA), including Toronto, Scarborough, Markham, North York, Richmond Hill, Vaughan, Pickering, Ajax, and surrounding communities. Contact us to discuss your specific location."
},
{
id: "2", title: "Do you offer free consultations and quotes?", content: "Yes, we provide free on-site consultations and quotes for all projects. During your consultation, we'll assess your property, discuss your vision, and provide transparent pricing."
id: "2", title: "Do you offer complimentary consultations?", content: "Yes, we provide free on-site consultations for all projects. During your visit, we assess your property, understand your architectural vision, and provide transparent project estimates."
},
{
id: "3", title: "What is included in the 3D design service?", content: "Our free 3D design includes photorealistic renderings of your complete project, showing materials, lighting, landscaping, and final details. This allows you to visualize the finished result before construction begins."
id: "3", title: "What does the 3D design process include?", content: "Our complimentary 3D design service includes photorealistic architectural renderings showing materials, lighting, landscaping, and design details. This allows you to visualize the complete project and make confident design decisions before construction."
},
{
id: "4", title: "How long does a typical project take?", content: "Project timelines vary depending on scope and complexity. A driveway typically takes 1-2 weeks, patios 2-3 weeks, and larger projects may take 4-6 weeks. We'll provide a detailed timeline during planning."
id: "4", title: "What are typical project timelines?", content: "Project timelines vary by scope. Driveway installations typically require 1-2 weeks, patios 2-3 weeks, and larger architectural projects 4-6 weeks. We provide detailed project schedules during the planning phase."
},
{
id: "5", title: "Do you offer warranties on your work?", content: "Yes, we stand behind our work with comprehensive warranties. All installations include workmanship guarantees, and material warranties vary by product. Details are provided with your project estimate."
id: "5", title: "Do you offer project warranties?", content: "Absolutely. We stand behind our work with comprehensive warranties including workmanship guarantees and material-specific coverage. Full warranty details are provided with your project estimate."
},
{
id: "6", title: "Can I visit your material showroom?", content: "Absolutely! We encourage homeowners to visit our outdoor material showroom to explore interlock styles, natural stone options, and landscape lighting systems. Call us to schedule a convenient time."
id: "6", title: "Can we visit your material showroom?", content: "We encourage all homeowners to visit our outdoor material showroom to explore interlock collections, natural stone options, and landscape lighting systems. Please contact us to schedule a convenient time."
}
]}
/>
@@ -382,7 +511,7 @@ export default function LandingPage() {
]
}
]}
copyrightText="© 2024 Taishan Construction. All rights reserved. Premium hardscape and construction services for the GTA."
copyrightText="© 2024 Taishan Construction. All rights reserved. Premium hardscape and architectural design services for the GTA."
/>
</div>
</ThemeProvider>

View File

@@ -1,28 +1,14 @@
* {
scrollbar-width: thin;
scrollbar-color: rgba(255, 255, 255, 1) rgba(255, 255, 255, 0);
}
@layer base {
body {
font-family: var(--font-inter), sans-serif;
}
html {
overscroll-behavior: none;
overscroll-behavior-y: none;
}
body {
background-color: var(--background);
color: var(--foreground);
font-family: var(--font-montserrat), sans-serif;
position: relative;
min-height: 100vh;
overscroll-behavior: none;
overscroll-behavior-y: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--font-montserrat), sans-serif;
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--font-inter), sans-serif;
}
}