astro-component-kit 0.2.2 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +141 -177
- package/package.json +11 -9
- package/src/components/index.ts +12 -9
- package/src/components/lib/AnimatedGalaxy.astro +4 -2
- package/src/components/lib/Galaxy3D.astro +237 -185
- package/src/components/lib/LogoWithGalaxy.astro +2 -2
- package/src/components/lib/buttons/index.ts +4 -1
- package/src/components/lib/cards/index.ts +3 -0
- package/src/components/lib/charts/DonutChart.astro +1 -1
- package/src/components/lib/charts/index.ts +3 -0
- package/src/components/lib/data/index.ts +3 -0
- package/src/components/lib/feedback/index.ts +3 -0
- package/src/components/lib/forms/index.ts +3 -0
- package/src/components/lib/index.ts +17 -6
- package/src/components/lib/layout/BentoGrid3.astro +79 -9
- package/src/components/lib/layout/CenterFixedBox.astro +52 -2
- package/src/components/lib/layout/CenteredContainer.astro +44 -5
- package/src/components/lib/layout/ClusterHorizontal.astro +36 -2
- package/src/components/lib/layout/FeatureHero.astro +119 -50
- package/src/components/lib/layout/FooterCenteredMinimal.astro +57 -9
- package/src/components/lib/layout/FullBleedSection.astro +44 -2
- package/src/components/lib/layout/GalleryGrid4.astro +35 -3
- package/src/components/lib/layout/GlassCardGrid.astro +24 -2
- package/src/components/lib/layout/GlassSectionHeader.astro +72 -11
- package/src/components/lib/layout/LandingSectionSplit.astro +83 -8
- package/src/components/lib/layout/MasonryGrid.astro +42 -3
- package/src/components/lib/layout/MinimalFooterGrid.astro +83 -11
- package/src/components/lib/layout/ScrollSnapSection.astro +37 -3
- package/src/components/lib/layout/SectionDividerText.astro +44 -4
- package/src/components/lib/layout/SidebarLayoutWrapper.astro +62 -7
- package/src/components/lib/layout/SplitScreenLayout.astro +62 -6
- package/src/components/lib/layout/StepLayoutVertical.astro +83 -10
- package/src/components/lib/layout/StickySidebarWrapper.astro +69 -6
- package/src/components/lib/layout/VerticalStack.astro +35 -5
- package/src/components/lib/layout/index.ts +17 -14
- package/src/components/lib/navigation/index.ts +3 -0
- package/src/components/lib/overlays/index.ts +3 -0
- package/src/components/lib/sections/ContactGlassForm.astro +361 -0
- package/src/components/lib/sections/CtaAppDownload.astro +258 -0
- package/src/components/lib/sections/CtaGlowBanner.astro +267 -0
- package/src/components/lib/sections/FaqAccordionSection.astro +349 -0
- package/src/components/lib/sections/FeatureBentoGrid.astro +449 -0
- package/src/components/lib/sections/FeatureTimelineFlow.astro +254 -0
- package/src/components/lib/sections/PricingComparisonMatrix.astro +468 -0
- package/src/components/lib/sections/PricingTierCards.astro +256 -0
- package/src/components/lib/sections/StatsMetricShowcase.astro +332 -0
- package/src/components/lib/sections/TeamGridSection.astro +333 -0
- package/src/components/lib/sections/TestimonialWallGlass.astro +406 -0
- package/src/components/lib/sections/index.ts +22 -0
- package/src/components/lib/typography/index.ts +3 -0
- package/src/components/lib/AnimatedInput.astro +0 -82
- package/src/components/lib/Badge.astro +0 -52
- package/src/components/lib/GlassButton.astro +0 -87
- package/src/components/lib/GlassCard.astro +0 -72
- package/src/components/lib/GlassNavbar.astro +0 -67
- package/src/components/lib/GlowButton.astro +0 -60
- /package/src/components/lib/buttons/{3dPushButton.astro → ThreeDPushButton.astro} +0 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
---
|
|
2
|
+
/**
|
|
3
|
+
* CtaAppDownload — Full-page mobile app showcase and download CTA section with device mockup and store buttons.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} badge - Eyebrow badge text.
|
|
6
|
+
* @param {string} title - Main headline.
|
|
7
|
+
* @param {string} subtitle - Description text.
|
|
8
|
+
*/
|
|
9
|
+
interface Props {
|
|
10
|
+
badge?: string;
|
|
11
|
+
title?: string;
|
|
12
|
+
subtitle?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const {
|
|
17
|
+
badge = "Mobile Experience",
|
|
18
|
+
title = "Manage Your Astro Deployments On the Go",
|
|
19
|
+
subtitle = "Download our native companion mobile application. Monitor real-time builds, latency metrics, and team notifications directly from your pocket.",
|
|
20
|
+
className = ""
|
|
21
|
+
} = Astro.props;
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
<section class={`app-download-section ${className}`} aria-labelledby="app-title">
|
|
25
|
+
<div class="container">
|
|
26
|
+
<div class="app-card">
|
|
27
|
+
<div class="app-info">
|
|
28
|
+
{badge && <span class="app-badge">{badge}</span>}
|
|
29
|
+
<h2 id="app-title" class="app-title">{title}</h2>
|
|
30
|
+
<p class="app-subtitle">{subtitle}</p>
|
|
31
|
+
|
|
32
|
+
<div class="app-features-mini">
|
|
33
|
+
<div class="feat-pill">⚡ Instant Push Alerts</div>
|
|
34
|
+
<div class="feat-pill">📊 Real-Time Analytics</div>
|
|
35
|
+
<div class="feat-pill">🔒 Biometric Security</div>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<div class="store-buttons">
|
|
39
|
+
<a href="#app-store" class="store-btn">
|
|
40
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M15.97 6.85c.66-.8 1.11-1.92.99-3.04-.96.04-2.13.64-2.82 1.44-.6.7-.99 1.83-1.02 2.98.08.01.16.02.24.02.88 0 1.95-.58 2.61-1.4z"/></svg>
|
|
41
|
+
<div class="store-btn__text">
|
|
42
|
+
<span class="store-btn__sub">Download on the</span>
|
|
43
|
+
<span class="store-btn__name">App Store</span>
|
|
44
|
+
</div>
|
|
45
|
+
</a>
|
|
46
|
+
|
|
47
|
+
<a href="#google-play" class="store-btn">
|
|
48
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M3.609 1.814L13.792 12 3.61 22.186a2.227 2.227 0 0 1-.22-.968V2.782c0-.361.08-.696.22-.968zm11.24 11.24l2.128 2.129-12.03 6.946 9.902-9.075zm2.933-2.05l2.673 1.543c.876.505.876 1.332 0 1.837l-2.673 1.544-2.338-2.338 2.338-2.586zM4.947 1.87l12.031 6.947-2.128 2.128-9.903-9.075z"/></svg>
|
|
49
|
+
<div class="store-btn__text">
|
|
50
|
+
<span class="store-btn__sub">GET IT ON</span>
|
|
51
|
+
<span class="store-btn__name">Google Play</span>
|
|
52
|
+
</div>
|
|
53
|
+
</a>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<div class="app-visual">
|
|
58
|
+
<div class="phone-frame">
|
|
59
|
+
<div class="phone-notch"></div>
|
|
60
|
+
<div class="phone-screen">
|
|
61
|
+
<div class="phone-header">
|
|
62
|
+
<div class="phone-avatar"></div>
|
|
63
|
+
<span>Production Edge</span>
|
|
64
|
+
<span class="phone-live">100% UP</span>
|
|
65
|
+
</div>
|
|
66
|
+
<div class="phone-chart"></div>
|
|
67
|
+
<div class="phone-card-mini">✓ Build #402 deployed in 12s</div>
|
|
68
|
+
<div class="phone-card-mini">⚡ TTFB latency: 14ms</div>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
</section>
|
|
75
|
+
|
|
76
|
+
<style>
|
|
77
|
+
.app-download-section {
|
|
78
|
+
padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
|
|
79
|
+
background: var(--c-bg-primary, #030712);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.container {
|
|
83
|
+
max-width: 1200px;
|
|
84
|
+
margin: 0 auto;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.app-card {
|
|
88
|
+
background: linear-gradient(135deg, rgba(15, 23, 42, 0.8) 0%, rgba(10, 15, 30, 0.9) 100%);
|
|
89
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
90
|
+
border-radius: var(--r-2xl, 24px);
|
|
91
|
+
padding: clamp(2rem, 5vw, 4rem);
|
|
92
|
+
display: grid;
|
|
93
|
+
grid-template-columns: 1.2fr 0.8fr;
|
|
94
|
+
gap: 3rem;
|
|
95
|
+
align-items: center;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.app-badge {
|
|
99
|
+
display: inline-flex;
|
|
100
|
+
padding: 0.35rem 0.9rem;
|
|
101
|
+
border-radius: 9999px;
|
|
102
|
+
font-size: 0.78rem;
|
|
103
|
+
font-weight: 700;
|
|
104
|
+
letter-spacing: 0.06em;
|
|
105
|
+
text-transform: uppercase;
|
|
106
|
+
background: rgba(184, 134, 11, 0.12);
|
|
107
|
+
color: #eab308;
|
|
108
|
+
border: 1px solid rgba(234, 179, 8, 0.25);
|
|
109
|
+
margin-bottom: var(--sp-4, 1rem);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.app-title {
|
|
113
|
+
font-size: clamp(2rem, 4vw, 2.8rem);
|
|
114
|
+
font-weight: 900;
|
|
115
|
+
color: #fff;
|
|
116
|
+
line-height: 1.2;
|
|
117
|
+
letter-spacing: -0.02em;
|
|
118
|
+
margin: 0 0 1rem;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.app-subtitle {
|
|
122
|
+
font-size: 1.05rem;
|
|
123
|
+
color: #94a3b8;
|
|
124
|
+
line-height: 1.6;
|
|
125
|
+
margin: 0 0 1.75rem;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.app-features-mini {
|
|
129
|
+
display: flex;
|
|
130
|
+
flex-wrap: wrap;
|
|
131
|
+
gap: 0.6rem;
|
|
132
|
+
margin-bottom: 2rem;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.feat-pill {
|
|
136
|
+
padding: 0.4rem 0.85rem;
|
|
137
|
+
background: rgba(255, 255, 255, 0.05);
|
|
138
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
139
|
+
border-radius: 9999px;
|
|
140
|
+
font-size: 0.82rem;
|
|
141
|
+
color: #cbd5e1;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.store-buttons {
|
|
145
|
+
display: flex;
|
|
146
|
+
flex-wrap: wrap;
|
|
147
|
+
gap: 1rem;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.store-btn {
|
|
151
|
+
display: inline-flex;
|
|
152
|
+
align-items: center;
|
|
153
|
+
gap: 0.75rem;
|
|
154
|
+
padding: 0.65rem 1.25rem;
|
|
155
|
+
background: rgba(0, 0, 0, 0.6);
|
|
156
|
+
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
157
|
+
border-radius: 12px;
|
|
158
|
+
color: #fff;
|
|
159
|
+
text-decoration: none;
|
|
160
|
+
transition: all 0.2s ease;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.store-btn:hover {
|
|
164
|
+
background: rgba(255, 255, 255, 0.1);
|
|
165
|
+
border-color: rgba(255, 255, 255, 0.3);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.store-btn__text {
|
|
169
|
+
display: flex;
|
|
170
|
+
flex-direction: column;
|
|
171
|
+
text-align: left;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.store-btn__sub {
|
|
175
|
+
font-size: 0.65rem;
|
|
176
|
+
color: #94a3b8;
|
|
177
|
+
text-transform: uppercase;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.store-btn__name {
|
|
181
|
+
font-size: 1rem;
|
|
182
|
+
font-weight: 700;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* Phone visual mockup */
|
|
186
|
+
.app-visual {
|
|
187
|
+
display: flex;
|
|
188
|
+
justify-content: center;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.phone-frame {
|
|
192
|
+
width: 250px;
|
|
193
|
+
height: 400px;
|
|
194
|
+
background: #020617;
|
|
195
|
+
border: 3px solid rgba(255, 255, 255, 0.2);
|
|
196
|
+
border-radius: 36px;
|
|
197
|
+
padding: 12px;
|
|
198
|
+
box-shadow: 0 20px 50px -10px rgba(0, 0, 0, 0.8);
|
|
199
|
+
display: flex;
|
|
200
|
+
flex-direction: column;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.phone-notch {
|
|
204
|
+
width: 70px;
|
|
205
|
+
height: 12px;
|
|
206
|
+
background: #0f172a;
|
|
207
|
+
border-radius: 999px;
|
|
208
|
+
margin: 0 auto 12px;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.phone-screen {
|
|
212
|
+
flex: 1;
|
|
213
|
+
background: rgba(15, 23, 42, 0.8);
|
|
214
|
+
border-radius: 24px;
|
|
215
|
+
padding: 1rem;
|
|
216
|
+
display: flex;
|
|
217
|
+
flex-direction: column;
|
|
218
|
+
gap: 0.75rem;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.phone-header {
|
|
222
|
+
display: flex;
|
|
223
|
+
align-items: center;
|
|
224
|
+
justify-content: space-between;
|
|
225
|
+
font-size: 0.75rem;
|
|
226
|
+
color: #fff;
|
|
227
|
+
font-weight: 700;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.phone-live {
|
|
231
|
+
font-size: 0.65rem;
|
|
232
|
+
color: #10b981;
|
|
233
|
+
background: rgba(16, 185, 129, 0.15);
|
|
234
|
+
padding: 0.15rem 0.4rem;
|
|
235
|
+
border-radius: 999px;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.phone-chart {
|
|
239
|
+
height: 80px;
|
|
240
|
+
background: linear-gradient(180deg, rgba(99, 102, 241, 0.3) 0%, transparent 100%);
|
|
241
|
+
border-bottom: 2px solid #6366f1;
|
|
242
|
+
border-radius: 8px;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.phone-card-mini {
|
|
246
|
+
padding: 0.5rem;
|
|
247
|
+
background: rgba(255, 255, 255, 0.05);
|
|
248
|
+
border-radius: 8px;
|
|
249
|
+
font-size: 0.72rem;
|
|
250
|
+
color: #cbd5e1;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
@media (max-width: 960px) {
|
|
254
|
+
.app-card {
|
|
255
|
+
grid-template-columns: 1fr;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
</style>
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
---
|
|
2
|
+
/**
|
|
3
|
+
* CtaGlowBanner — Full-width high-converting CTA section with radial cyber mesh and interactive action group.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} badge - Eyebrow badge.
|
|
6
|
+
* @param {string} title - Main headline.
|
|
7
|
+
* @param {string} subtitle - Description text.
|
|
8
|
+
* @param {string} primaryCtaText - Primary button text.
|
|
9
|
+
* @param {string} secondaryCtaText - Secondary button text.
|
|
10
|
+
*/
|
|
11
|
+
interface Props {
|
|
12
|
+
badge?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
subtitle?: string;
|
|
15
|
+
primaryCtaText?: string;
|
|
16
|
+
secondaryCtaText?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const {
|
|
21
|
+
badge = "Get Started Today",
|
|
22
|
+
title = "Ready to Build Something Extraordinary?",
|
|
23
|
+
subtitle = "Join over 10,000 developers building modern, accessible, and blindingly fast Astro web applications.",
|
|
24
|
+
primaryCtaText = "Start Building Free",
|
|
25
|
+
secondaryCtaText = "View Components",
|
|
26
|
+
className = ""
|
|
27
|
+
} = Astro.props;
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
<section class={`cta-banner-section ${className}`} aria-labelledby="cta-title">
|
|
31
|
+
<div class="container">
|
|
32
|
+
<div class="cta-banner-card">
|
|
33
|
+
<div class="cta-mesh-bg" aria-hidden="true"></div>
|
|
34
|
+
|
|
35
|
+
<div class="cta-content">
|
|
36
|
+
{badge && <span class="cta-badge">{badge}</span>}
|
|
37
|
+
<h2 id="cta-title" class="cta-title">{title}</h2>
|
|
38
|
+
<p class="cta-subtitle">{subtitle}</p>
|
|
39
|
+
|
|
40
|
+
<!-- CTA Action Buttons & Email Input -->
|
|
41
|
+
<div class="cta-actions">
|
|
42
|
+
<form class="cta-form" onsubmit="event.preventDefault(); alert('Thank you for subscribing!');">
|
|
43
|
+
<input
|
|
44
|
+
type="email"
|
|
45
|
+
placeholder="Enter your work email..."
|
|
46
|
+
required
|
|
47
|
+
class="cta-input"
|
|
48
|
+
aria-label="Email address"
|
|
49
|
+
/>
|
|
50
|
+
<button type="submit" class="cta-btn cta-btn--primary">
|
|
51
|
+
{primaryCtaText}
|
|
52
|
+
</button>
|
|
53
|
+
</form>
|
|
54
|
+
<a href="/docs/glass-button" class="cta-btn cta-btn--ghost">
|
|
55
|
+
{secondaryCtaText}
|
|
56
|
+
</a>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<!-- Trust Badges Row -->
|
|
60
|
+
<div class="cta-trust-row">
|
|
61
|
+
<div class="trust-item">
|
|
62
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"/></svg>
|
|
63
|
+
<span>SOC2 Type II Certified</span>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="trust-item">
|
|
66
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>
|
|
67
|
+
<span>WCAG 2.1 AA Compliant</span>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="trust-item">
|
|
70
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2 3 14h9l-1 8 10-12h-9l1-8z"/></svg>
|
|
71
|
+
<span>100/100 Lighthouse Performance</span>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</section>
|
|
78
|
+
|
|
79
|
+
<style>
|
|
80
|
+
.cta-banner-section {
|
|
81
|
+
padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
|
|
82
|
+
background: var(--c-bg-primary, #030712);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.container {
|
|
86
|
+
max-width: 1100px;
|
|
87
|
+
margin: 0 auto;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.cta-banner-card {
|
|
91
|
+
position: relative;
|
|
92
|
+
background: linear-gradient(135deg, rgba(20, 25, 55, 0.9) 0%, rgba(10, 15, 30, 0.95) 100%);
|
|
93
|
+
border: 1px solid rgba(234, 179, 8, 0.25);
|
|
94
|
+
border-radius: var(--r-2xl, 24px);
|
|
95
|
+
padding: clamp(2.5rem, 6vw, 4.5rem) clamp(1.5rem, 4vw, 3rem);
|
|
96
|
+
text-align: center;
|
|
97
|
+
overflow: hidden;
|
|
98
|
+
box-shadow: 0 25px 60px -20px rgba(0, 0, 0, 0.8), 0 0 40px -15px rgba(234, 179, 8, 0.15);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.cta-mesh-bg {
|
|
102
|
+
position: absolute;
|
|
103
|
+
inset: -50%;
|
|
104
|
+
background: radial-gradient(circle at 50% 50%, rgba(234, 179, 8, 0.12) 0%, rgba(99, 102, 241, 0.1) 40%, transparent 70%);
|
|
105
|
+
filter: blur(80px);
|
|
106
|
+
pointer-events: none;
|
|
107
|
+
animation: rotateMesh 20s linear infinite;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@keyframes rotateMesh {
|
|
111
|
+
0% { transform: rotate(0deg); }
|
|
112
|
+
100% { transform: rotate(360deg); }
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.cta-content {
|
|
116
|
+
position: relative;
|
|
117
|
+
z-index: 1;
|
|
118
|
+
max-width: 750px;
|
|
119
|
+
margin: 0 auto;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.cta-badge {
|
|
123
|
+
display: inline-flex;
|
|
124
|
+
padding: 0.35rem 0.9rem;
|
|
125
|
+
border-radius: 9999px;
|
|
126
|
+
font-size: 0.78rem;
|
|
127
|
+
font-weight: 700;
|
|
128
|
+
letter-spacing: 0.06em;
|
|
129
|
+
text-transform: uppercase;
|
|
130
|
+
background: rgba(184, 134, 11, 0.15);
|
|
131
|
+
color: #facc15;
|
|
132
|
+
border: 1px solid rgba(234, 179, 8, 0.3);
|
|
133
|
+
margin-bottom: var(--sp-4, 1.25rem);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.cta-title {
|
|
137
|
+
font-size: clamp(2.2rem, 5vw, 3.4rem);
|
|
138
|
+
font-weight: 900;
|
|
139
|
+
color: #fff;
|
|
140
|
+
line-height: 1.15;
|
|
141
|
+
letter-spacing: -0.03em;
|
|
142
|
+
margin: 0 0 var(--sp-4, 1.25rem);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.cta-subtitle {
|
|
146
|
+
font-size: clamp(1rem, 2vw, 1.2rem);
|
|
147
|
+
color: #94a3b8;
|
|
148
|
+
line-height: 1.6;
|
|
149
|
+
margin: 0 0 2.5rem;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.cta-actions {
|
|
153
|
+
display: flex;
|
|
154
|
+
flex-wrap: wrap;
|
|
155
|
+
align-items: center;
|
|
156
|
+
justify-content: center;
|
|
157
|
+
gap: 1rem;
|
|
158
|
+
margin-bottom: 2.5rem;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.cta-form {
|
|
162
|
+
display: flex;
|
|
163
|
+
align-items: center;
|
|
164
|
+
gap: 0.5rem;
|
|
165
|
+
background: rgba(0, 0, 0, 0.4);
|
|
166
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
167
|
+
border-radius: 12px;
|
|
168
|
+
padding: 0.35rem;
|
|
169
|
+
max-width: 460px;
|
|
170
|
+
width: 100%;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.cta-input {
|
|
174
|
+
flex: 1;
|
|
175
|
+
background: transparent;
|
|
176
|
+
border: none;
|
|
177
|
+
padding: 0.75rem 1rem;
|
|
178
|
+
font-size: 0.95rem;
|
|
179
|
+
color: #fff;
|
|
180
|
+
outline: none;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.cta-input::placeholder {
|
|
184
|
+
color: #64748b;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.cta-btn {
|
|
188
|
+
display: inline-flex;
|
|
189
|
+
align-items: center;
|
|
190
|
+
justify-content: center;
|
|
191
|
+
padding: 0.8rem 1.4rem;
|
|
192
|
+
border-radius: 8px;
|
|
193
|
+
font-size: 0.95rem;
|
|
194
|
+
font-weight: 700;
|
|
195
|
+
text-decoration: none;
|
|
196
|
+
cursor: pointer;
|
|
197
|
+
transition: all 0.25s ease;
|
|
198
|
+
white-space: nowrap;
|
|
199
|
+
border: none;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.cta-btn--primary {
|
|
203
|
+
background: linear-gradient(135deg, #eab308, #d97706);
|
|
204
|
+
color: #000;
|
|
205
|
+
box-shadow: 0 4px 15px rgba(234, 179, 8, 0.35);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.cta-btn--primary:hover {
|
|
209
|
+
filter: brightness(1.1);
|
|
210
|
+
box-shadow: 0 6px 20px rgba(234, 179, 8, 0.5);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.cta-btn--ghost {
|
|
214
|
+
background: rgba(255, 255, 255, 0.05);
|
|
215
|
+
color: #fff;
|
|
216
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
217
|
+
height: 48px;
|
|
218
|
+
box-sizing: border-box;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.cta-btn--ghost:hover {
|
|
222
|
+
background: rgba(255, 255, 255, 0.12);
|
|
223
|
+
border-color: rgba(255, 255, 255, 0.25);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.cta-trust-row {
|
|
227
|
+
display: flex;
|
|
228
|
+
flex-wrap: wrap;
|
|
229
|
+
align-items: center;
|
|
230
|
+
justify-content: center;
|
|
231
|
+
gap: 1.5rem;
|
|
232
|
+
padding-top: 1.5rem;
|
|
233
|
+
border-top: 1px solid rgba(255, 255, 255, 0.08);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.trust-item {
|
|
237
|
+
display: flex;
|
|
238
|
+
align-items: center;
|
|
239
|
+
gap: 0.5rem;
|
|
240
|
+
font-size: 0.82rem;
|
|
241
|
+
color: #94a3b8;
|
|
242
|
+
font-weight: 500;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.trust-item svg {
|
|
246
|
+
color: #eab308;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
@media (max-width: 640px) {
|
|
250
|
+
.cta-form {
|
|
251
|
+
flex-direction: column;
|
|
252
|
+
background: transparent;
|
|
253
|
+
border: none;
|
|
254
|
+
padding: 0;
|
|
255
|
+
}
|
|
256
|
+
.cta-input {
|
|
257
|
+
width: 100%;
|
|
258
|
+
background: rgba(0, 0, 0, 0.4);
|
|
259
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
260
|
+
border-radius: 8px;
|
|
261
|
+
box-sizing: border-box;
|
|
262
|
+
}
|
|
263
|
+
.cta-btn {
|
|
264
|
+
width: 100%;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
</style>
|