Ashraf Al-Kassem commited on
Commit
d2c669e
Β·
1 Parent(s): 0869d3f

feat: futuristic UI redesign of LeadPilot homepage

Browse files
Website/next-env.d.ts ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ /// <reference types="next" />
2
+ /// <reference types="next/image-types/global" />
3
+ import "./.next/dev/types/routes.d.ts";
4
+
5
+ // NOTE: This file should not be edited
6
+ // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
Website/src/app/globals.css CHANGED
@@ -10,13 +10,15 @@
10
  --card: #FFFFFF;
11
 
12
  /* Marketing-site extended tokens β€” derived from above */
13
- --primary-dark: #0a5c55;
14
- --primary-glow: rgba(15, 118, 110, 0.35);
15
- --secondary-glow: rgba(20, 184, 166, 0.25);
16
- --dark-bg: #0B1320;
17
- --dark-surface: #111927;
18
- --dark-card: rgba(255,255,255,0.04);
19
- --dark-border: rgba(255,255,255,0.08);
 
 
20
  }
21
 
22
  @theme inline {
@@ -57,29 +59,64 @@ body {
57
  }
58
 
59
  @keyframes pulse-glow {
60
- 0%, 100% { opacity: 0.6; }
61
- 50% { opacity: 1; }
62
  }
63
 
64
  @keyframes float {
65
  0%, 100% { transform: translateY(0px); }
66
- 50% { transform: translateY(-8px); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  }
68
 
69
  .animate-fade-up {
70
- animation: fadeUp 0.7s ease forwards;
71
  }
72
 
73
  .animate-fade-in {
74
- animation: fadeIn 0.6s ease forwards;
75
  }
76
 
77
  .animate-float {
78
- animation: float 4s ease-in-out infinite;
 
 
 
 
79
  }
80
 
81
  .animate-pulse-glow {
82
- animation: pulse-glow 3s ease-in-out infinite;
 
 
 
 
 
 
 
 
 
 
 
 
83
  }
84
 
85
  /* ─── Server-component hover patterns (CSS-only) ─────────────── */
@@ -236,29 +273,55 @@ body {
236
 
237
  /* Gradient text */
238
  .gradient-text {
239
- background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
240
  -webkit-background-clip: text;
241
  -webkit-text-fill-color: transparent;
242
  background-clip: text;
243
  }
244
 
245
- /* Gradient border card */
 
 
 
 
 
246
  .gradient-border {
247
  position: relative;
248
  background: var(--dark-card);
249
  border-radius: 1rem;
 
 
250
  }
251
- .gradient-border::before {
 
252
  content: "";
253
  position: absolute;
254
- inset: 0;
255
- border-radius: 1rem;
256
- padding: 1px;
257
- background: linear-gradient(135deg, var(--primary), var(--secondary), transparent 60%);
258
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
259
- -webkit-mask-composite: xor;
260
- mask-composite: exclude;
261
- pointer-events: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
  }
263
 
264
  /* Glow effect */
@@ -278,18 +341,25 @@ body {
278
 
279
  /* Glass panel */
280
  .glass-panel {
281
- background: rgba(255, 255, 255, 0.04);
282
- backdrop-filter: blur(16px);
283
- -webkit-backdrop-filter: blur(16px);
284
- border: 1px solid rgba(255, 255, 255, 0.08);
 
285
  }
286
 
287
  /* Cockpit grid lines */
288
  .cockpit-grid {
289
  background-image:
290
- linear-gradient(rgba(15, 118, 110, 0.08) 1px, transparent 1px),
291
- linear-gradient(90deg, rgba(15, 118, 110, 0.08) 1px, transparent 1px);
292
- background-size: 40px 40px;
 
 
 
 
 
 
293
  }
294
 
295
  /* ─── Mission 33: Scroll-reveal + Catalog cards ──────────────────── */
 
10
  --card: #FFFFFF;
11
 
12
  /* Marketing-site extended tokens β€” derived from above */
13
+ --primary-dark: #074742;
14
+ --primary-glow: rgba(20, 184, 166, 0.45);
15
+ --secondary-glow: rgba(45, 212, 191, 0.35);
16
+ --dark-bg: #040914; /* Deeper space black */
17
+ --dark-surface: #0a1324;
18
+ --dark-card: rgba(255,255,255,0.02);
19
+ --dark-border: rgba(45, 212, 191, 0.15); /* Tech teal borders */
20
+ --neon-cyan: #22d3ee;
21
+ --neon-purple: #c084fc;
22
  }
23
 
24
  @theme inline {
 
59
  }
60
 
61
  @keyframes pulse-glow {
62
+ 0%, 100% { opacity: 0.4; filter: blur(4px); }
63
+ 50% { opacity: 1; filter: blur(8px); }
64
  }
65
 
66
  @keyframes float {
67
  0%, 100% { transform: translateY(0px); }
68
+ 50% { transform: translateY(-12px); }
69
+ }
70
+
71
+ @keyframes scanline {
72
+ 0% { transform: translateY(-100%); }
73
+ 100% { transform: translateY(100vh); }
74
+ }
75
+
76
+ @keyframes drawLine {
77
+ 0% { stroke-dashoffset: 1000; }
78
+ 100% { stroke-dashoffset: 0; }
79
+ }
80
+
81
+ @keyframes border-spin {
82
+ 100% { transform: rotate(-360deg); }
83
+ }
84
+
85
+ @keyframes marquee {
86
+ 0% { transform: translateX(0); }
87
+ 100% { transform: translateX(-50%); }
88
  }
89
 
90
  .animate-fade-up {
91
+ animation: fadeUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
92
  }
93
 
94
  .animate-fade-in {
95
+ animation: fadeIn 0.8s ease forwards;
96
  }
97
 
98
  .animate-float {
99
+ animation: float 5s ease-in-out infinite;
100
+ }
101
+
102
+ .animate-float-delayed {
103
+ animation: float 5s ease-in-out 2.5s infinite;
104
  }
105
 
106
  .animate-pulse-glow {
107
+ animation: pulse-glow 4s ease-in-out infinite;
108
+ }
109
+
110
+ .animate-scanline {
111
+ animation: scanline 8s linear infinite;
112
+ }
113
+
114
+ .animate-border-spin {
115
+ animation: border-spin 5s linear infinite;
116
+ }
117
+
118
+ .animate-draw-line {
119
+ animation: drawLine 3s ease-in-out forwards;
120
  }
121
 
122
  /* ─── Server-component hover patterns (CSS-only) ─────────────── */
 
273
 
274
  /* Gradient text */
275
  .gradient-text {
276
+ background: linear-gradient(135deg, var(--neon-cyan) 0%, var(--primary) 50%, var(--secondary) 100%);
277
  -webkit-background-clip: text;
278
  -webkit-text-fill-color: transparent;
279
  background-clip: text;
280
  }
281
 
282
+ .neon-text {
283
+ color: #fff;
284
+ text-shadow: 0 0 10px rgba(34, 211, 238, 0.5), 0 0 20px rgba(34, 211, 238, 0.3);
285
+ }
286
+
287
+ /* Gradient border card with spinning effect */
288
  .gradient-border {
289
  position: relative;
290
  background: var(--dark-card);
291
  border-radius: 1rem;
292
+ overflow: hidden;
293
+ z-index: 1;
294
  }
295
+
296
+ .gradient-border-spin::before {
297
  content: "";
298
  position: absolute;
299
+ top: -50%;
300
+ left: -50%;
301
+ width: 200%;
302
+ height: 200%;
303
+ background: conic-gradient(
304
+ transparent,
305
+ rgba(20, 184, 166, 0.1),
306
+ transparent 30%
307
+ );
308
+ animation: border-spin 4s linear infinite;
309
+ z-index: -2;
310
+ opacity: 0;
311
+ transition: opacity 0.5s;
312
+ }
313
+
314
+ .gradient-border-spin:hover::before {
315
+ opacity: 1;
316
+ }
317
+
318
+ .gradient-border::after {
319
+ content: "";
320
+ position: absolute;
321
+ inset: 1px;
322
+ background: var(--dark-bg);
323
+ border-radius: calc(1rem - 1px);
324
+ z-index: -1;
325
  }
326
 
327
  /* Glow effect */
 
341
 
342
  /* Glass panel */
343
  .glass-panel {
344
+ background: rgba(10, 19, 36, 0.4);
345
+ backdrop-filter: blur(24px);
346
+ -webkit-backdrop-filter: blur(24px);
347
+ border: 1px solid rgba(45, 212, 191, 0.15);
348
+ box-shadow: inset 0 0 20px rgba(45, 212, 191, 0.05);
349
  }
350
 
351
  /* Cockpit grid lines */
352
  .cockpit-grid {
353
  background-image:
354
+ linear-gradient(rgba(45, 212, 191, 0.1) 1px, transparent 1px),
355
+ linear-gradient(90deg, rgba(45, 212, 191, 0.1) 1px, transparent 1px);
356
+ background-size: 50px 50px;
357
+ perspective: 1000px;
358
+ }
359
+
360
+ .cockpit-grid-3d {
361
+ transform: rotateX(60deg) scale(2);
362
+ transform-origin: top;
363
  }
364
 
365
  /* ─── Mission 33: Scroll-reveal + Catalog cards ──────────────────── */
Website/src/app/page.tsx CHANGED
@@ -82,43 +82,46 @@ export default async function HomePage() {
82
  <>
83
  {/* ─── HERO ─────────────────────────────────────────────────── */}
84
  <section
85
- className="relative min-h-screen flex items-center overflow-hidden"
86
- style={{ background: "#0B1320" }}
87
  aria-labelledby="hero-heading"
88
  >
89
- <div className="absolute inset-0 cockpit-grid opacity-60" aria-hidden="true" />
 
 
 
90
  <div
91
  className="absolute inset-0 pointer-events-none"
92
  aria-hidden="true"
93
  style={{
94
- background: "radial-gradient(ellipse 70% 60% at 50% 0%, rgba(15,118,110,0.3) 0%, transparent 65%)",
95
  }}
96
  />
97
  <div
98
- className="absolute top-1/3 left-0 w-64 h-64 rounded-full pointer-events-none"
99
  aria-hidden="true"
100
- style={{ background: "rgba(15,118,110,0.12)", filter: "blur(80px)" }}
101
  />
102
  <div
103
- className="absolute top-1/3 right-0 w-64 h-64 rounded-full pointer-events-none"
104
  aria-hidden="true"
105
- style={{ background: "rgba(20,184,166,0.1)", filter: "blur(80px)" }}
106
  />
107
 
108
  <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-32 text-center">
109
  <div
110
- className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full mb-8"
111
- style={{ background: "rgba(15,118,110,0.15)", border: "1px solid rgba(20,184,166,0.3)" }}
112
  >
113
- <span className="w-2 h-2 rounded-full animate-pulse-glow" style={{ background: "#14B8A6" }} aria-hidden="true" />
114
- <span className="text-xs font-semibold tracking-wider" style={{ color: "#14B8A6" }}>
115
- AI-NATIVE LEAD PLATFORM
116
  </span>
117
  </div>
118
 
119
  <h1
120
  id="hero-heading"
121
- className="text-5xl sm:text-6xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-none"
 
122
  >
123
  Close More Leads.
124
  <br />
@@ -126,44 +129,57 @@ export default async function HomePage() {
126
  </h1>
127
 
128
  <p
129
- className="text-lg sm:text-xl max-w-2xl mx-auto mb-10 leading-relaxed"
130
- style={{ color: "rgba(148,163,184,0.9)" }}
131
  >
132
  LeadPilot captures, qualifies, and routes every inbound lead to the right rep β€”
133
  automatically. Turn raw traffic into closed revenue without adding headcount.
134
  </p>
135
 
136
- <div className="flex flex-col sm:flex-row items-center justify-center gap-4">
137
- <Link href="/contact" className="px-8 py-4 rounded-xl font-semibold text-base btn-primary">
138
- Book a Demo
139
  </Link>
140
  <Link
141
  href="/product"
142
- className="inline-flex items-center gap-2 px-8 py-4 rounded-xl font-semibold text-sm btn-ghost-dark"
143
  >
144
  See Product
145
  <ArrowRight className="w-4 h-4" aria-hidden="true" />
146
  </Link>
147
  </div>
148
 
149
- <div className="mt-20 grid grid-cols-3 gap-4 max-w-lg mx-auto">
150
  {[
151
- { icon: TrendingUp, label: "More pipeline", sub: "per rep" },
152
- { icon: Clock, label: "Faster response", sub: "on average" },
153
- { icon: Users, label: "Less headcount", sub: "needed to scale" },
154
- ].map(({ icon: Icon, label, sub }) => (
155
- <div key={label} className="text-center">
156
- <Icon className="w-5 h-5 mx-auto mb-2" style={{ color: "#14B8A6" }} aria-hidden="true" />
157
- <p className="text-xs font-semibold text-white">{label}</p>
158
- <p className="text-xs" style={{ color: "#475569" }}>{sub}</p>
 
159
  </div>
160
  ))}
161
  </div>
162
  </div>
163
 
164
- <div className="absolute bottom-8 left-1/2 -translate-x-1/2 flex flex-col items-center gap-1" aria-hidden="true">
165
- <span className="text-xs" style={{ color: "#475569" }}>scroll</span>
166
- <div className="w-px h-8 animate-pulse" style={{ background: "linear-gradient(to bottom, #0F766E, transparent)" }} />
 
 
 
 
 
 
 
 
 
 
 
 
167
  </div>
168
  </section>
169
 
@@ -189,52 +205,58 @@ export default async function HomePage() {
189
 
190
  {/* ─── PROBLEM β†’ SOLUTION ───────────────────────────────────── */}
191
  <section
192
- className="py-24"
193
- style={{ background: "#F8FAFC" }}
194
  aria-labelledby="problem-heading"
195
  >
196
- <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
 
197
  <div className="grid grid-cols-1 lg:grid-cols-2 gap-16 items-center">
198
- <div>
 
 
199
  <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "#EF4444" }}>The Problem</p>
200
- <h2 id="problem-heading" className="text-3xl sm:text-4xl font-bold mb-6 tracking-tight" style={{ color: "#0F172A" }}>
201
  Leads slip through the cracks every day.
202
  </h2>
203
- <ul className="space-y-4">
204
  {[
205
- "Your sales team spends hours qualifying leads that never convert.",
206
  "Hot prospects wait hours (or days) for a reply β€” then go cold.",
207
  "No clear routing means the wrong rep picks up the wrong lead.",
208
  "You can't see where the pipeline breaks without real-time data.",
209
  ].map((point) => (
210
  <li key={point} className="flex items-start gap-3">
211
- <div className="mt-1.5 w-1.5 h-1.5 rounded-full shrink-0" style={{ background: "#EF4444" }} aria-hidden="true" />
212
- <p className="text-sm leading-relaxed" style={{ color: "#64748B" }}>{point}</p>
213
  </li>
214
  ))}
215
  </ul>
216
  </div>
217
- <div>
218
- <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "#0F766E" }}>The Solution</p>
219
- <h2 className="text-3xl sm:text-4xl font-bold mb-6 tracking-tight" style={{ color: "#0F172A" }}>
220
- LeadPilot handles the pipeline. You handle the close.
 
 
 
221
  </h2>
222
- <ul className="space-y-4">
223
  {[
224
- "AI qualifies every lead the moment it arrives β€” 24/7, no lag.",
225
- "Smart routing delivers leads to the right rep in seconds, not hours.",
226
- "Automated follow-ups keep prospects engaged between touchpoints.",
227
- "Real-time analytics show you exactly where revenue is being left behind.",
228
  ].map((point) => (
229
  <li key={point} className="flex items-start gap-3">
230
- <CheckCircle className="w-4 h-4 mt-0.5 shrink-0" style={{ color: "#0F766E" }} aria-hidden="true" />
231
- <p className="text-sm leading-relaxed" style={{ color: "#64748B" }}>{point}</p>
232
  </li>
233
  ))}
234
  </ul>
235
- <Link href="/product" className="inline-flex items-center gap-2 mt-8 text-sm font-semibold text-link-primary">
236
- See how it works
237
- <ArrowRight className="w-4 h-4" aria-hidden="true" />
238
  </Link>
239
  </div>
240
  </div>
@@ -243,40 +265,42 @@ export default async function HomePage() {
243
 
244
  {/* ─── HOW IT WORKS ─────────────────────────────────────────── */}
245
  <section
246
- className="py-24 relative overflow-hidden"
247
- style={{ background: "#0B1320" }}
248
  aria-labelledby="how-it-works-heading"
249
  >
250
  <div
251
  className="absolute inset-0 pointer-events-none"
252
  aria-hidden="true"
253
- style={{ background: "radial-gradient(ellipse 50% 60% at 50% 100%, rgba(15,118,110,0.2) 0%, transparent 70%)" }}
254
  />
255
  <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
256
- <div className="text-center mb-16">
257
- <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "#14B8A6" }}>How It Works</p>
258
- <h2 id="how-it-works-heading" className="text-3xl sm:text-4xl font-bold text-white tracking-tight">
259
- Five steps from lead to revenue
260
  </h2>
261
  </div>
262
- <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-6">
 
 
 
 
 
 
 
 
263
  {steps.map((step, i) => (
264
  <div
265
  key={step.number}
266
- className="relative rounded-xl p-6"
267
- style={{ background: "rgba(255,255,255,0.03)", border: "1px solid rgba(255,255,255,0.07)" }}
268
  >
269
- {i < steps.length - 1 && (
270
- <div className="hidden lg:block absolute top-10 -right-3 w-6 h-px" aria-hidden="true" style={{ background: "rgba(15,118,110,0.4)" }} />
271
- )}
272
- <span
273
- className="text-3xl font-bold block mb-4"
274
- style={{ background: "linear-gradient(135deg, #0F766E, #14B8A6)", WebkitBackgroundClip: "text", WebkitTextFillColor: "transparent", backgroundClip: "text" }}
275
- >
276
- {step.number}
277
- </span>
278
- <h3 className="text-white font-semibold mb-2">{step.title}</h3>
279
- <p className="text-xs leading-relaxed" style={{ color: "#64748B" }}>{step.description}</p>
280
  </div>
281
  ))}
282
  </div>
@@ -285,33 +309,36 @@ export default async function HomePage() {
285
 
286
  {/* ─── FEATURE HIGHLIGHTS (DB-driven) ───────────────────────── */}
287
  <section
288
- className="py-24"
289
- style={{ background: "#F8FAFC" }}
290
  aria-labelledby="features-heading"
291
  >
292
- <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
293
- <div className="text-center mb-16">
294
- <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "#0F766E" }}>Platform Features</p>
295
- <h2 id="features-heading" className="text-3xl sm:text-4xl font-bold tracking-tight" style={{ color: "#0F172A" }}>
 
296
  Everything your revenue team needs
297
  </h2>
298
- <p className="mt-4 text-base max-w-xl mx-auto" style={{ color: "#64748B" }}>
299
  One platform for the entire lead lifecycle β€” from first touch to closed deal.
300
  </p>
301
  </div>
302
  <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5">
303
- {featureHighlights.map((feat) => (
304
- <FeatureCard
305
- key={feat.moduleKey}
306
- iconName={feat.iconName}
307
- benefit={feat.benefit}
308
- title={feat.marketingTitle}
309
- description={feat.description}
310
- />
 
 
311
  ))}
312
  </div>
313
  <div className="text-center mt-10">
314
- <Link href="/features" className="inline-flex items-center gap-2 text-sm font-semibold text-link-primary">
315
  View all features
316
  <ArrowRight className="w-4 h-4" aria-hidden="true" />
317
  </Link>
@@ -323,25 +350,25 @@ export default async function HomePage() {
323
  {featuredTemplates.length > 0 && (
324
  <section
325
  className="py-24 relative overflow-hidden"
326
- style={{ background: "#0B1320" }}
327
  aria-labelledby="templates-teaser-heading"
328
  >
329
- <div className="absolute inset-0 cockpit-grid opacity-30" aria-hidden="true" />
330
  <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
331
- <div className="text-center mb-16">
332
- <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "#14B8A6" }}>
333
- Templates
334
  </p>
335
  <h2 id="templates-teaser-heading" className="text-3xl sm:text-4xl font-bold text-white tracking-tight">
336
  Ready-made automation flows
337
  </h2>
338
- <p className="mt-4 text-base max-w-xl mx-auto" style={{ color: "#64748B" }}>
339
  Clone a template, customise it for your business, and go live in minutes.
340
  </p>
341
  </div>
342
  <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 gap-4">
343
- {featuredTemplates.map((t) => (
344
- <div key={t.id} className="catalog-card p-5">
345
  <span className="badge-category" data-category={t.category}>
346
  {t.category.replace(/_/g, " ")}
347
  </span>
@@ -355,15 +382,15 @@ export default async function HomePage() {
355
  ))}
356
  </div>
357
  {t.clone_count > 0 && (
358
- <p className="text-[10px] mt-2" style={{ color: "#475569" }}>
359
- {t.clone_count.toLocaleString()} clones
360
  </p>
361
  )}
362
  </div>
363
  ))}
364
  </div>
365
  <div className="text-center mt-10">
366
- <Link href="/templates" className="inline-flex items-center gap-2 text-sm font-semibold text-link-teal">
367
  Browse all templates
368
  <ArrowRight className="w-4 h-4" aria-hidden="true" />
369
  </Link>
@@ -375,50 +402,51 @@ export default async function HomePage() {
375
  {/* ─── INTEGRATIONS TEASER (DB-driven) ──────────────────────── */}
376
  {providers.length > 0 && (
377
  <section
378
- className="py-24"
379
- style={{ background: "#F8FAFC" }}
380
  aria-labelledby="integrations-teaser-heading"
381
  >
382
- <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
383
- <div className="text-center mb-16">
384
- <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "#0F766E" }}>
385
  Integrations
386
  </p>
387
- <h2 id="integrations-teaser-heading" className="text-3xl sm:text-4xl font-bold tracking-tight" style={{ color: "#0F172A" }}>
388
  Connect your entire stack
389
  </h2>
390
- <p className="mt-4 text-base max-w-xl mx-auto" style={{ color: "#64748B" }}>
391
  Native integrations with the platforms your revenue team already uses.
392
  </p>
393
  </div>
394
  <div className="grid grid-cols-1 sm:grid-cols-3 gap-6 max-w-3xl mx-auto">
395
- {providers.map((p) => (
396
  <div
397
  key={p.key}
398
- className="rounded-xl p-6 text-center feature-card-light"
 
399
  >
400
  <div
401
  className="w-12 h-12 rounded-xl flex items-center justify-center mx-auto mb-4"
402
  style={{
403
- background: `${PROVIDER_COLORS[p.key] ?? "#0F766E"}15`,
404
- border: `1px solid ${PROVIDER_COLORS[p.key] ?? "#0F766E"}30`,
405
  }}
406
  >
407
  <span className="text-lg font-bold" style={{ color: PROVIDER_COLORS[p.key] ?? "#0F766E" }}>
408
  {p.label.charAt(0)}
409
  </span>
410
  </div>
411
- <h3 className="font-semibold text-base mb-1" style={{ color: "#1E293B" }}>
412
  {p.label}
413
  </h3>
414
- <p className="text-xs leading-relaxed" style={{ color: "#64748B" }}>
415
  {p.description}
416
  </p>
417
  </div>
418
  ))}
419
  </div>
420
  <div className="text-center mt-10">
421
- <Link href="/integrations" className="inline-flex items-center gap-2 text-sm font-semibold text-link-primary">
422
  View all integrations
423
  <ArrowRight className="w-4 h-4" aria-hidden="true" />
424
  </Link>
@@ -430,24 +458,25 @@ export default async function HomePage() {
430
  {/* ─── MINI PLANS PREVIEW (DB-driven) ───────────────────────── */}
431
  <section
432
  className="py-24 relative overflow-hidden"
433
- style={{ background: "#0B1320" }}
434
  aria-labelledby="plans-preview-heading"
435
  >
 
436
  <div
437
  className="absolute inset-0 pointer-events-none"
438
  aria-hidden="true"
439
- style={{ background: "radial-gradient(ellipse 60% 50% at 50% 50%, rgba(15,118,110,0.15) 0%, transparent 70%)" }}
440
  />
441
  <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
442
- <div className="text-center mb-16">
443
- <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "#14B8A6" }}>Plans</p>
444
  <h2 id="plans-preview-heading" className="text-3xl sm:text-4xl font-bold text-white tracking-tight">
445
  Start free. Scale when ready.
446
  </h2>
447
  </div>
448
 
449
  <div className={`grid grid-cols-1 ${plans.length === 3 ? "md:grid-cols-3" : "md:grid-cols-2"} gap-6 max-w-4xl mx-auto`}>
450
- {plans.map((plan) => {
451
  const pricing = PLAN_PRICING[plan.name] ?? { price: "Contact Us", priceNote: "", tagline: "", available: false };
452
  const featureLines = plan.entitlements
453
  .map((e) => entitlementToString(e.module_key, e.hard_limit))
@@ -455,27 +484,28 @@ export default async function HomePage() {
455
  .slice(0, 6);
456
 
457
  return (
458
- <PlanCard
459
- key={plan.id}
460
- name={plan.display_name}
461
- tagline={pricing.tagline || plan.description || ""}
462
- price={pricing.price}
463
- priceNote={pricing.priceNote}
464
- features={featureLines}
465
- ctaLabel={pricing.available ? "Get Started Free" : "Coming Soon"}
466
- ctaHref={`${APP_URL}/signup`}
467
- available={pricing.available}
468
- highlighted={plan.name === "free"}
469
- />
 
470
  );
471
  })}
472
  </div>
473
 
474
  {waitlistNames.length > 0 && (
475
- <p className="text-center mt-8 text-sm" style={{ color: "#475569" }}>
476
- Join the waitlist for {waitlistNames.join(" and ")} β€”{" "}
477
- <Link href="/plans" className="underline underline-offset-2 transition-colors duration-200" style={{ color: "#14B8A6" }}>
478
- see Plans page
479
  </Link>
480
  </p>
481
  )}
@@ -484,11 +514,11 @@ export default async function HomePage() {
484
 
485
  {/* ─── FINAL CTA ────────────────────────────────────────────── */}
486
  <CTASection
487
- headline="Your pipeline shouldn't depend on manual work."
488
  subheadline="LeadPilot automates lead capture, qualification, and routing so your team can focus on closing."
489
- primaryLabel="Book a Demo"
490
  primaryHref="/contact"
491
- secondaryLabel="Sign Up Free"
492
  secondaryHref={`${APP_URL}/signup`}
493
  />
494
  </>
 
82
  <>
83
  {/* ─── HERO ─────────────────────────────────────────────────── */}
84
  <section
85
+ className="relative min-h-screen flex items-center overflow-hidden bg-[var(--dark-bg)]"
 
86
  aria-labelledby="hero-heading"
87
  >
88
+ <div className="absolute inset-0 cockpit-grid cockpit-grid-3d opacity-60" aria-hidden="true" />
89
+ {/* Animated scanline */}
90
+ <div className="absolute inset-x-0 h-[2px] bg-gradient-to-r from-transparent via-cyan-400 to-transparent animate-scanline opacity-50 z-0 shadow-[0_0_15px_rgba(34,211,238,0.8)]" />
91
+
92
  <div
93
  className="absolute inset-0 pointer-events-none"
94
  aria-hidden="true"
95
  style={{
96
+ background: "radial-gradient(ellipse 70% 60% at 50% 10%, rgba(15,118,110,0.3) 0%, var(--dark-bg) 75%)",
97
  }}
98
  />
99
  <div
100
+ className="absolute top-1/4 left-1/4 w-96 h-96 rounded-full pointer-events-none"
101
  aria-hidden="true"
102
+ style={{ background: "rgba(34, 211, 238, 0.15)", filter: "blur(100px)", mixBlendMode: "screen" }}
103
  />
104
  <div
105
+ className="absolute top-1/3 right-1/4 w-96 h-96 rounded-full pointer-events-none"
106
  aria-hidden="true"
107
+ style={{ background: "rgba(192, 132, 252, 0.15)", filter: "blur(100px)", mixBlendMode: "screen" }}
108
  />
109
 
110
  <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-32 text-center">
111
  <div
112
+ className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full mb-8 animate-fade-up"
113
+ style={{ background: "rgba(34, 211, 238, 0.15)", border: "1px solid rgba(34, 211, 238, 0.3)" }}
114
  >
115
+ <span className="w-2 h-2 rounded-full animate-pulse-glow" style={{ background: "var(--neon-cyan)" }} aria-hidden="true" />
116
+ <span className="text-xs font-bold tracking-wider" style={{ color: "var(--neon-cyan)" }}>
117
+ AI-NATIVE PIPELINE
118
  </span>
119
  </div>
120
 
121
  <h1
122
  id="hero-heading"
123
+ className="text-5xl sm:text-6xl md:text-7xl font-extrabold text-white mb-6 tracking-tight leading-none animate-fade-up"
124
+ style={{ animationDelay: "0.1s" }}
125
  >
126
  Close More Leads.
127
  <br />
 
129
  </h1>
130
 
131
  <p
132
+ className="text-lg sm:text-xl max-w-2xl mx-auto mb-10 leading-relaxed animate-fade-up"
133
+ style={{ color: "rgba(148,163,184,0.9)", animationDelay: "0.2s" }}
134
  >
135
  LeadPilot captures, qualifies, and routes every inbound lead to the right rep β€”
136
  automatically. Turn raw traffic into closed revenue without adding headcount.
137
  </p>
138
 
139
+ <div className="flex flex-col sm:flex-row items-center justify-center gap-4 animate-fade-up" style={{ animationDelay: "0.3s" }}>
140
+ <Link href="/contact" className="px-8 py-4 rounded-xl font-semibold text-base btn-primary glow-primary">
141
+ Deploy AI Agent
142
  </Link>
143
  <Link
144
  href="/product"
145
+ className="inline-flex items-center gap-2 px-8 py-4 rounded-xl font-semibold text-sm glass-panel hover:border-teal-400 transition-colors text-white"
146
  >
147
  See Product
148
  <ArrowRight className="w-4 h-4" aria-hidden="true" />
149
  </Link>
150
  </div>
151
 
152
+ <div className="mt-20 grid grid-cols-3 gap-4 max-w-2xl mx-auto animate-fade-up" style={{ animationDelay: "0.4s" }}>
153
  {[
154
+ { icon: TrendingUp, label: "More pipeline", sub: "per rep", color: "var(--neon-cyan)" },
155
+ { icon: Clock, label: "Instant response", sub: "always online", color: "var(--secondary)" },
156
+ { icon: Users, label: "Less headcount", sub: "needed to scale", color: "var(--neon-purple)" },
157
+ ].map(({ icon: Icon, label, sub, color }) => (
158
+ <div key={label} className="text-center glass-panel p-4 rounded-2xl relative overflow-hidden group">
159
+ <div className="absolute inset-0 bg-gradient-to-t from-transparent to-white/5 opacity-0 group-hover:opacity-100 transition-opacity" />
160
+ <Icon className="w-6 h-6 mx-auto mb-3" style={{ color }} aria-hidden="true" />
161
+ <p className="text-sm font-bold text-white">{label}</p>
162
+ <p className="text-xs mt-1" style={{ color: "#94A3B8" }}>{sub}</p>
163
  </div>
164
  ))}
165
  </div>
166
  </div>
167
 
168
+ {/* Decorative Floating Elements */}
169
+ <div className="absolute top-1/4 left-1/4 w-32 h-32 border border-teal-500/20 rounded-full animate-float-delayed flex items-center justify-center -z-10 hidden md:flex">
170
+ <div className="w-16 h-16 border border-teal-400/30 rounded-full flex items-center justify-center">
171
+ <div className="w-2 h-2 bg-teal-400 rounded-full animate-pulse-glow" />
172
+ </div>
173
+ </div>
174
+ <div className="absolute top-1/3 right-1/4 w-40 h-40 border border-cyan-500/20 rounded-full animate-float flex items-center justify-center -z-10 hidden md:flex">
175
+ <div className="w-20 h-20 border border-cyan-400/30 rounded-full flex items-center justify-center">
176
+ <div className="w-3 h-3 bg-cyan-400 rounded-full animate-pulse-glow" />
177
+ </div>
178
+ </div>
179
+
180
+ <div className="absolute bottom-12 left-1/2 -translate-x-1/2 flex flex-col items-center gap-2" aria-hidden="true">
181
+ <span className="text-[10px] uppercase font-bold tracking-widest" style={{ color: "var(--neon-cyan)" }}>Initiate</span>
182
+ <div className="w-[2px] h-12 bg-gradient-to-b from-cyan-400 to-transparent animate-pulse" />
183
  </div>
184
  </section>
185
 
 
205
 
206
  {/* ─── PROBLEM β†’ SOLUTION ───────────────────────────────────── */}
207
  <section
208
+ className="py-24 relative overflow-hidden"
209
+ style={{ background: "var(--dark-bg)" }}
210
  aria-labelledby="problem-heading"
211
  >
212
+ <div className="absolute inset-0 cockpit-grid opacity-20" aria-hidden="true" />
213
+ <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
214
  <div className="grid grid-cols-1 lg:grid-cols-2 gap-16 items-center">
215
+ {/* The Problem */}
216
+ <div className="glass-panel p-10 rounded-3xl relative overflow-hidden group">
217
+ <div className="absolute top-0 left-0 w-full h-1 bg-gradient-to-r from-red-500/0 via-red-500/50 to-red-500/0 opacity-50" />
218
  <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "#EF4444" }}>The Problem</p>
219
+ <h2 id="problem-heading" className="text-3xl sm:text-4xl font-bold mb-6 tracking-tight text-white">
220
  Leads slip through the cracks every day.
221
  </h2>
222
+ <ul className="space-y-5">
223
  {[
224
+ "Sales teams spend hours qualifying leads that never convert.",
225
  "Hot prospects wait hours (or days) for a reply β€” then go cold.",
226
  "No clear routing means the wrong rep picks up the wrong lead.",
227
  "You can't see where the pipeline breaks without real-time data.",
228
  ].map((point) => (
229
  <li key={point} className="flex items-start gap-3">
230
+ <div className="mt-2 w-1.5 h-1.5 rounded-full shrink-0 shadow-[0_0_8px_#EF4444]" style={{ background: "#EF4444" }} aria-hidden="true" />
231
+ <p className="text-sm leading-relaxed" style={{ color: "rgba(148,163,184,0.9)" }}>{point}</p>
232
  </li>
233
  ))}
234
  </ul>
235
  </div>
236
+
237
+ {/* The Solution */}
238
+ <div className="glass-panel p-10 rounded-3xl relative overflow-hidden gradient-border-spin group">
239
+ <div className="absolute top-0 left-0 w-full h-1 bg-gradient-to-r from-cyan-400/0 via-cyan-400/50 to-cyan-400/0 opacity-50" />
240
+ <p className="text-xs font-bold uppercase tracking-widest mb-3 text-cyan-400 hover:animate-pulse">The Solution</p>
241
+ <h2 className="text-3xl sm:text-4xl font-bold mb-6 tracking-tight text-white">
242
+ AI handles the pipeline. You handle the close.
243
  </h2>
244
+ <ul className="space-y-5">
245
  {[
246
+ "AI agents qualify every lead the moment it arrives β€” 24/7, zero lag.",
247
+ "Smart routing rules deliver leads to the right rep in milliseconds.",
248
+ "Automated, multi-channel follow-ups keep prospects engaged.",
249
+ "Live analytics show you exactly where revenue is left behind.",
250
  ].map((point) => (
251
  <li key={point} className="flex items-start gap-3">
252
+ <CheckCircle className="w-5 h-5 mt-0.5 shrink-0 text-cyan-400 drop-shadow-[0_0_8px_rgba(34,211,238,0.5)]" aria-hidden="true" />
253
+ <p className="text-sm leading-relaxed" style={{ color: "rgba(148,163,184,0.9)" }}>{point}</p>
254
  </li>
255
  ))}
256
  </ul>
257
+ <Link href="/product" className="inline-flex items-center gap-2 mt-8 text-sm font-semibold text-cyan-400 hover:text-cyan-300 transition-colors group/link">
258
+ Initiate Sequence
259
+ <ArrowRight className="w-4 h-4 group-hover/link:translate-x-1 transition-transform" aria-hidden="true" />
260
  </Link>
261
  </div>
262
  </div>
 
265
 
266
  {/* ─── HOW IT WORKS ─────────────────────────────────────────── */}
267
  <section
268
+ className="py-32 relative overflow-hidden"
269
+ style={{ background: "#060B14" }}
270
  aria-labelledby="how-it-works-heading"
271
  >
272
  <div
273
  className="absolute inset-0 pointer-events-none"
274
  aria-hidden="true"
275
+ style={{ background: "radial-gradient(ellipse 80% 50% at 50% 100%, rgba(34, 211, 238, 0.1) 0%, transparent 60%)" }}
276
  />
277
  <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
278
+ <div className="text-center mb-20 animate-fade-up">
279
+ <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "var(--neon-cyan)" }}>Data Pipeline</p>
280
+ <h2 id="how-it-works-heading" className="text-3xl sm:text-4xl md:text-5xl font-bold text-white tracking-tight">
281
+ Five automated jumps to revenue
282
  </h2>
283
  </div>
284
+ <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-8 lg:gap-4 relative">
285
+ {/* The animated connecting wire (desktop) */}
286
+ <div className="hidden lg:block absolute top-[44px] left-10 right-10 h-0.5 bg-slate-800 -z-10">
287
+ <div
288
+ className="h-full bg-gradient-to-r from-cyan-500/0 via-cyan-400 to-cyan-500/0 animate-scanline"
289
+ style={{ animationDirection: "normal", transformOrigin: "left" }}
290
+ />
291
+ </div>
292
+
293
  {steps.map((step, i) => (
294
  <div
295
  key={step.number}
296
+ className="relative rounded-2xl p-6 glass-panel hover:border-cyan-500/50 transition-colors animate-fade-up group"
297
+ style={{ animationDelay: `${i * 0.15 + 0.2}s` }}
298
  >
299
+ <div className="w-10 h-10 rounded-full flex items-center justify-center bg-cyan-950/50 border border-cyan-500/30 mb-6 group-hover:shadow-[0_0_15px_rgba(34,211,238,0.4)] transition-shadow">
300
+ <span className="text-sm font-bold text-cyan-400">{step.number}</span>
301
+ </div>
302
+ <h3 className="text-white font-semibold mb-3">{step.title}</h3>
303
+ <p className="text-xs leading-relaxed" style={{ color: "#94A3B8" }}>{step.description}</p>
 
 
 
 
 
 
304
  </div>
305
  ))}
306
  </div>
 
309
 
310
  {/* ─── FEATURE HIGHLIGHTS (DB-driven) ───────────────────────── */}
311
  <section
312
+ className="py-24 relative"
313
+ style={{ background: "#0B1320" }}
314
  aria-labelledby="features-heading"
315
  >
316
+ <div className="absolute inset-0 cockpit-grid opacity-30" aria-hidden="true" />
317
+ <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
318
+ <div className="text-center mb-16 animate-fade-up">
319
+ <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "var(--neon-cyan)" }}>Platform Features</p>
320
+ <h2 id="features-heading" className="text-3xl sm:text-4xl font-bold tracking-tight text-white">
321
  Everything your revenue team needs
322
  </h2>
323
+ <p className="mt-4 text-base max-w-xl mx-auto" style={{ color: "rgba(148,163,184,0.9)" }}>
324
  One platform for the entire lead lifecycle β€” from first touch to closed deal.
325
  </p>
326
  </div>
327
  <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5">
328
+ {featureHighlights.map((feat, i) => (
329
+ <div key={feat.moduleKey} className="animate-fade-up" style={{ animationDelay: `${i * 0.1}s` }}>
330
+ <FeatureCard
331
+ iconName={feat.iconName}
332
+ benefit={feat.benefit}
333
+ title={feat.marketingTitle}
334
+ description={feat.description}
335
+ dark={true}
336
+ />
337
+ </div>
338
  ))}
339
  </div>
340
  <div className="text-center mt-10">
341
+ <Link href="/features" className="inline-flex items-center gap-2 text-sm font-semibold text-cyan-400 hover:text-cyan-300 transition-colors">
342
  View all features
343
  <ArrowRight className="w-4 h-4" aria-hidden="true" />
344
  </Link>
 
350
  {featuredTemplates.length > 0 && (
351
  <section
352
  className="py-24 relative overflow-hidden"
353
+ style={{ background: "var(--dark-bg)" }}
354
  aria-labelledby="templates-teaser-heading"
355
  >
356
+ <div className="absolute inset-0 cockpit-grid opacity-20" aria-hidden="true" />
357
  <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
358
+ <div className="text-center mb-16 animate-fade-up">
359
+ <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "var(--neon-purple)" }}>
360
+ Execution Patterns
361
  </p>
362
  <h2 id="templates-teaser-heading" className="text-3xl sm:text-4xl font-bold text-white tracking-tight">
363
  Ready-made automation flows
364
  </h2>
365
+ <p className="mt-4 text-base max-w-xl mx-auto" style={{ color: "rgba(148,163,184,0.9)" }}>
366
  Clone a template, customise it for your business, and go live in minutes.
367
  </p>
368
  </div>
369
  <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 gap-4">
370
+ {featuredTemplates.map((t, i) => (
371
+ <div key={t.id} className="catalog-card p-5 animate-fade-up" style={{ animationDelay: `${i * 0.1}s` }}>
372
  <span className="badge-category" data-category={t.category}>
373
  {t.category.replace(/_/g, " ")}
374
  </span>
 
382
  ))}
383
  </div>
384
  {t.clone_count > 0 && (
385
+ <p className="text-[10px] mt-2 font-mono" style={{ color: "#475569" }}>
386
+ [{t.clone_count.toLocaleString()} CLONES]
387
  </p>
388
  )}
389
  </div>
390
  ))}
391
  </div>
392
  <div className="text-center mt-10">
393
+ <Link href="/templates" className="inline-flex items-center gap-2 text-sm font-semibold text-purple-400 hover:text-purple-300 transition-colors">
394
  Browse all templates
395
  <ArrowRight className="w-4 h-4" aria-hidden="true" />
396
  </Link>
 
402
  {/* ─── INTEGRATIONS TEASER (DB-driven) ──────────────────────── */}
403
  {providers.length > 0 && (
404
  <section
405
+ className="py-24 relative overflow-hidden"
406
+ style={{ background: "#0B1320" }}
407
  aria-labelledby="integrations-teaser-heading"
408
  >
409
+ <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
410
+ <div className="text-center mb-16 animate-fade-up">
411
+ <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "var(--neon-cyan)" }}>
412
  Integrations
413
  </p>
414
+ <h2 id="integrations-teaser-heading" className="text-3xl sm:text-4xl font-bold tracking-tight text-white">
415
  Connect your entire stack
416
  </h2>
417
+ <p className="mt-4 text-base max-w-xl mx-auto" style={{ color: "rgba(148,163,184,0.9)" }}>
418
  Native integrations with the platforms your revenue team already uses.
419
  </p>
420
  </div>
421
  <div className="grid grid-cols-1 sm:grid-cols-3 gap-6 max-w-3xl mx-auto">
422
+ {providers.map((p, i) => (
423
  <div
424
  key={p.key}
425
+ className="rounded-xl p-6 text-center glass-panel hover:border-cyan-500/30 transition-colors animate-fade-up"
426
+ style={{ animationDelay: `${i * 0.15}s` }}
427
  >
428
  <div
429
  className="w-12 h-12 rounded-xl flex items-center justify-center mx-auto mb-4"
430
  style={{
431
+ background: `${PROVIDER_COLORS[p.key] ?? "#0F766E"}20`,
432
+ border: `1px solid ${PROVIDER_COLORS[p.key] ?? "#0F766E"}40`,
433
  }}
434
  >
435
  <span className="text-lg font-bold" style={{ color: PROVIDER_COLORS[p.key] ?? "#0F766E" }}>
436
  {p.label.charAt(0)}
437
  </span>
438
  </div>
439
+ <h3 className="font-semibold text-base mb-1 text-white">
440
  {p.label}
441
  </h3>
442
+ <p className="text-xs leading-relaxed" style={{ color: "rgba(148,163,184,0.8)" }}>
443
  {p.description}
444
  </p>
445
  </div>
446
  ))}
447
  </div>
448
  <div className="text-center mt-10">
449
+ <Link href="/integrations" className="inline-flex items-center gap-2 text-sm font-semibold text-cyan-400 hover:text-cyan-300 transition-colors">
450
  View all integrations
451
  <ArrowRight className="w-4 h-4" aria-hidden="true" />
452
  </Link>
 
458
  {/* ─── MINI PLANS PREVIEW (DB-driven) ───────────────────────── */}
459
  <section
460
  className="py-24 relative overflow-hidden"
461
+ style={{ background: "var(--dark-bg)" }}
462
  aria-labelledby="plans-preview-heading"
463
  >
464
+ <div className="absolute inset-0 cockpit-grid opacity-20" aria-hidden="true" />
465
  <div
466
  className="absolute inset-0 pointer-events-none"
467
  aria-hidden="true"
468
+ style={{ background: "radial-gradient(ellipse 60% 50% at 50% 50%, rgba(34, 211, 238, 0.1) 0%, transparent 70%)" }}
469
  />
470
  <div className="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
471
+ <div className="text-center mb-16 animate-fade-up">
472
+ <p className="text-xs font-bold uppercase tracking-widest mb-3" style={{ color: "var(--neon-cyan)" }}>Deployment Options</p>
473
  <h2 id="plans-preview-heading" className="text-3xl sm:text-4xl font-bold text-white tracking-tight">
474
  Start free. Scale when ready.
475
  </h2>
476
  </div>
477
 
478
  <div className={`grid grid-cols-1 ${plans.length === 3 ? "md:grid-cols-3" : "md:grid-cols-2"} gap-6 max-w-4xl mx-auto`}>
479
+ {plans.map((plan, i) => {
480
  const pricing = PLAN_PRICING[plan.name] ?? { price: "Contact Us", priceNote: "", tagline: "", available: false };
481
  const featureLines = plan.entitlements
482
  .map((e) => entitlementToString(e.module_key, e.hard_limit))
 
484
  .slice(0, 6);
485
 
486
  return (
487
+ <div key={plan.id} className="animate-fade-up" style={{ animationDelay: `${i * 0.15}s` }}>
488
+ <PlanCard
489
+ name={plan.display_name}
490
+ tagline={pricing.tagline || plan.description || ""}
491
+ price={pricing.price}
492
+ priceNote={pricing.priceNote}
493
+ features={featureLines}
494
+ ctaLabel={pricing.available ? "Get Started Free" : "Coming Soon"}
495
+ ctaHref={`${APP_URL}/signup`}
496
+ available={pricing.available}
497
+ highlighted={plan.name === "free"}
498
+ />
499
+ </div>
500
  );
501
  })}
502
  </div>
503
 
504
  {waitlistNames.length > 0 && (
505
+ <p className="text-center mt-8 text-xs font-mono" style={{ color: "rgba(148,163,184,0.6)" }}>
506
+ // AWAITING DEPLOYMENT FOR {waitlistNames.join(" AND ").toUpperCase()} β€”{" "}
507
+ <Link href="/plans" className="hover:text-cyan-400 transition-colors" style={{ color: "var(--neon-cyan)" }}>
508
+ INITIALIZE
509
  </Link>
510
  </p>
511
  )}
 
514
 
515
  {/* ─── FINAL CTA ────────────────────────────────────────────── */}
516
  <CTASection
517
+ headline="Deploy your AI pipeline today."
518
  subheadline="LeadPilot automates lead capture, qualification, and routing so your team can focus on closing."
519
+ primaryLabel="Deploy AI Agent"
520
  primaryHref="/contact"
521
+ secondaryLabel="Start Free Tier"
522
  secondaryHref={`${APP_URL}/signup`}
523
  />
524
  </>
Website/src/components/CTASection.tsx CHANGED
@@ -43,21 +43,22 @@ export default function CTASection({
43
  }: CTASectionProps) {
44
  return (
45
  <section
46
- className="relative overflow-hidden py-24"
47
- style={{ background: "#0B1320" }}
48
  aria-labelledby="cta-heading"
49
  >
50
- {/* Background glow */}
 
51
  <div
52
  aria-hidden="true"
53
  className="absolute inset-0 pointer-events-none"
54
  style={{
55
  background:
56
- "radial-gradient(ellipse 60% 50% at 50% 100%, rgba(15,118,110,0.25) 0%, transparent 70%)",
57
  }}
58
  />
59
 
60
- <div className="relative max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
61
  <h2
62
  id="cta-heading"
63
  className="text-3xl sm:text-4xl font-bold text-white mb-4 tracking-tight"
@@ -74,13 +75,13 @@ export default function CTASection({
74
  <div className="flex flex-col sm:flex-row items-center justify-center gap-4">
75
  <SmartLink
76
  href={primaryHref}
77
- className="px-8 py-3.5 rounded-xl font-semibold text-sm btn-primary"
78
  >
79
  {primaryLabel}
80
  </SmartLink>
81
  <SmartLink
82
  href={secondaryHref}
83
- className="px-8 py-3.5 rounded-xl font-semibold text-sm btn-ghost-dark"
84
  >
85
  {secondaryLabel}
86
  </SmartLink>
 
43
  }: CTASectionProps) {
44
  return (
45
  <section
46
+ className="relative overflow-hidden py-32"
47
+ style={{ background: "var(--dark-bg)" }}
48
  aria-labelledby="cta-heading"
49
  >
50
+ {/* Background glow and grids */}
51
+ <div className="absolute inset-0 cockpit-grid opacity-20" aria-hidden="true" />
52
  <div
53
  aria-hidden="true"
54
  className="absolute inset-0 pointer-events-none"
55
  style={{
56
  background:
57
+ "radial-gradient(ellipse 60% 50% at 50% 100%, rgba(34, 211, 238, 0.15) 0%, transparent 70%)",
58
  }}
59
  />
60
 
61
+ <div className="relative max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 text-center animate-fade-up">
62
  <h2
63
  id="cta-heading"
64
  className="text-3xl sm:text-4xl font-bold text-white mb-4 tracking-tight"
 
75
  <div className="flex flex-col sm:flex-row items-center justify-center gap-4">
76
  <SmartLink
77
  href={primaryHref}
78
+ className="px-8 py-4 rounded-xl font-semibold text-base btn-primary glow-primary"
79
  >
80
  {primaryLabel}
81
  </SmartLink>
82
  <SmartLink
83
  href={secondaryHref}
84
+ className="px-8 py-4 rounded-xl font-semibold text-sm glass-panel hover:border-cyan-400 transition-colors text-white"
85
  >
86
  {secondaryLabel}
87
  </SmartLink>