5858 background-clip : text;
5959 }
6060 .code-block {
61- background : # f8fafc ;
61+ background : linear-gradient ( 135 deg , # f8fafc 0 % , # f1f5f9 100 % ) ;
6262 border : 1px solid # e2e8f0 ;
6363 }
6464 .feature-card {
6565 background : white;
6666 box-shadow : 0 1px 3px rgba (0 , 0 , 0 , 0.08 ), 0 4px 12px rgba (0 , 0 , 0 , 0.04 );
67+ position : relative;
68+ overflow : hidden;
6769 }
70+ .feature-card ::before {
71+ content : '' ;
72+ position : absolute;
73+ top : 0 ;
74+ left : 0 ;
75+ right : 0 ;
76+ height : 3px ;
77+ background : linear-gradient (90deg , var (--card-color , # 3178C6 ), var (--card-color-end , # 4B32C3 ));
78+ opacity : 0 ;
79+ transition : opacity 0.3s ease;
80+ }
81+ .feature-card : hover ::before { opacity : 1 ; }
6882 .feature-card : hover {
6983 box-shadow : 0 4px 12px rgba (0 , 0 , 0 , 0.1 ), 0 8px 24px rgba (0 , 0 , 0 , 0.06 );
84+ transform : translateY (-2px );
7085 }
86+ .feature-card { transition : all 0.3s ease; }
7187 pre code .comment { color : # 64748b ; }
7288 pre code .keyword { color : # 7c3aed ; }
7389 pre code .string { color : # 059669 ; }
7490 pre code .function { color : # 2563eb ; }
7591 pre code .type { color : # d97706 ; }
7692 pre code .check { color : # 16a34a ; }
7793 pre code .error { color : # dc2626 ; }
78- .hero-pattern {
79- background-color : # f8fafc ;
80- background-image : url ("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%2394a3b8' fill-opacity='0.08'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E" );
94+ .hero-section {
95+ background : linear-gradient (135deg , # f0fdf4 0% , # ecfeff 25% , # f5f3ff 50% , # fef3c7 75% , # fdf2f8 100% );
96+ position : relative;
97+ overflow : hidden;
98+ }
99+ .hero-section ::before {
100+ content : '' ;
101+ position : absolute;
102+ top : -50% ;
103+ right : -20% ;
104+ width : 600px ;
105+ height : 600px ;
106+ background : radial-gradient (circle, rgba (34 , 197 , 94 , 0.15 ) 0% , transparent 70% );
107+ pointer-events : none;
108+ }
109+ .hero-section ::after {
110+ content : '' ;
111+ position : absolute;
112+ bottom : -30% ;
113+ left : -10% ;
114+ width : 500px ;
115+ height : 500px ;
116+ background : radial-gradient (circle, rgba (79 , 70 , 229 , 0.12 ) 0% , transparent 70% );
117+ pointer-events : none;
118+ }
119+ .section-gradient-1 {
120+ background : linear-gradient (180deg , # ffffff 0% , # f8fafc 50% , # f1f5f9 100% );
121+ }
122+ .section-gradient-2 {
123+ background : linear-gradient (135deg , # f0fdf4 0% , # ecfeff 50% , # f5f3ff 100% );
124+ }
125+ .section-gradient-3 {
126+ background : linear-gradient (180deg , # f8fafc 0% , # ffffff 100% );
127+ }
128+ .btn-gradient {
129+ background : linear-gradient (135deg , # 16a34a 0% , # 15803d 100% );
130+ box-shadow : 0 4px 14px rgba (22 , 163 , 74 , 0.35 );
131+ transition : all 0.3s ease;
132+ }
133+ .btn-gradient : hover {
134+ box-shadow : 0 6px 20px rgba (22 , 163 , 74 , 0.45 );
135+ transform : translateY (-1px );
81136 }
82137 .logo-strip {
83138 filter : grayscale (100% );
84139 opacity : 0.6 ;
85- transition : all 0.2 s ease;
140+ transition : all 0.3 s ease;
86141 }
87142 .logo-strip : hover {
88143 filter : grayscale (0% );
89144 opacity : 1 ;
145+ transform : scale (1.1 );
146+ }
147+ .glow-card {
148+ position : relative;
149+ }
150+ .glow-card ::after {
151+ content : '' ;
152+ position : absolute;
153+ inset : -1px ;
154+ background : linear-gradient (135deg , # 22c55e, # 3178C6, # 4B32C3 );
155+ border-radius : inherit;
156+ z-index : -1 ;
157+ opacity : 0 ;
158+ transition : opacity 0.3s ease;
159+ }
160+ .glow-card : hover ::after { opacity : 0.5 ; filter : blur (8px ); }
161+ .decorative-dots {
162+ background-image : radial-gradient (circle, # cbd5e1 1px , transparent 1px );
163+ background-size : 24px 24px ;
90164 }
91165 </ style >
92166</ head >
113187 </ nav >
114188
115189 <!-- Hero Section -->
116- < section class ="min-h-screen flex items-center pt-20 hero-pattern ">
190+ < section class ="min-h-screen flex items-center pt-20 hero-section ">
117191 < div class ="max-w-6xl mx-auto px-6 py-20 ">
118192 <!-- Logo Strip -->
119193 < div class ="flex items-center justify-center gap-8 mb-12 ">
@@ -145,7 +219,7 @@ <h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight mb-6 text-sl
145219 TypeScript's type system eliminates false positives, no endless whitelists needed.
146220 </ p >
147221 < div class ="flex flex-wrap gap-4 justify-center lg:justify-start ">
148- < a href ="#quickstart " class ="px-6 py-3 bg-slate-900 hover:bg-slate-800 text-white font-semibold rounded-lg transition-colors shadow -lg ">
222+ < a href ="#quickstart " class ="px-6 py-3 btn-gradient text-white font-semibold rounded-lg ">
149223 Get Started
150224 </ a >
151225 < a href ="https://github.com/sebastian-software/eslint-plugin-lingui-typescript " target ="_blank " class ="px-6 py-3 bg-white hover:bg-slate-50 text-slate-800 font-medium rounded-lg transition-colors border border-slate-200 shadow-sm ">
@@ -195,7 +269,7 @@ <h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight mb-6 text-sl
195269 </ section >
196270
197271 <!-- Features Section -->
198- < section id ="features " class ="py-20 bg-white ">
272+ < section id ="features " class ="py-20 section-gradient-1 ">
199273 < div class ="max-w-6xl mx-auto px-6 ">
200274 < div class ="text-center mb-16 ">
201275 < h2 class ="text-3xl sm:text-4xl font-bold mb-4 text-slate-900 "> Smart Detection, Zero Config</ h2 >
@@ -206,8 +280,8 @@ <h2 class="text-3xl sm:text-4xl font-bold mb-4 text-slate-900">Smart Detection,
206280 </ div >
207281 < div class ="grid sm:grid-cols-2 lg:grid-cols-3 gap-6 ">
208282 <!-- Feature 1 -->
209- < div class ="feature-card rounded-2xl p-6 border border-slate-100 transition-shadow ">
210- < div class ="w-12 h-12 bg-blue-100 rounded-xl flex items-center justify-center mb-4 ">
283+ < div class ="feature-card rounded-2xl p-6 border border-slate-100 " style =" --card-color: #3b82f6; --card-color-end: #6366f1; ">
284+ < div class ="w-12 h-12 bg-gradient-to-br from- blue-100 to-indigo -100 rounded-xl flex items-center justify-center mb-4 ">
211285 < svg class ="w-6 h-6 text-blue-600 " fill ="none " stroke ="currentColor " stroke-width ="2 " viewBox ="0 0 24 24 "> < circle cx ="12 " cy ="12 " r ="10 "/> < circle cx ="12 " cy ="12 " r ="6 "/> < circle cx ="12 " cy ="12 " r ="2 "/> </ svg >
212286 </ div >
213287 < h3 class ="text-lg font-semibold mb-2 text-slate-900 "> String Literal Unions</ h3 >
@@ -216,8 +290,8 @@ <h3 class="text-lg font-semibold mb-2 text-slate-900">String Literal Unions</h3>
216290 </ p >
217291 </ div >
218292 <!-- Feature 2 -->
219- < div class ="feature-card rounded-2xl p-6 border border-slate-100 transition-shadow ">
220- < div class ="w-12 h-12 bg-purple-100 rounded-xl flex items-center justify-center mb-4 ">
293+ < div class ="feature-card rounded-2xl p-6 border border-slate-100 " style =" --card-color: #8b5cf6; --card-color-end: #a855f7; ">
294+ < div class ="w-12 h-12 bg-gradient-to-br from- purple-100 to-fuchsia -100 rounded-xl flex items-center justify-center mb-4 ">
221295 < svg class ="w-6 h-6 text-purple-600 " fill ="none " stroke ="currentColor " stroke-width ="2 " viewBox ="0 0 24 24 "> < circle cx ="12 " cy ="12 " r ="10 "/> < path d ="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20M2 12h20 "/> </ svg >
222296 </ div >
223297 < h3 class ="text-lg font-semibold mb-2 text-slate-900 "> DOM & Intl APIs</ h3 >
@@ -226,8 +300,8 @@ <h3 class="text-lg font-semibold mb-2 text-slate-900">DOM & Intl APIs</h3>
226300 </ p >
227301 </ div >
228302 <!-- Feature 3 -->
229- < div class ="feature-card rounded-2xl p-6 border border-slate-100 transition-shadow ">
230- < div class ="w-12 h-12 bg-pink-100 rounded-xl flex items-center justify-center mb-4 ">
303+ < div class ="feature-card rounded-2xl p-6 border border-slate-100 " style =" --card-color: #ec4899; --card-color-end: #f43f5e; ">
304+ < div class ="w-12 h-12 bg-gradient-to-br from- pink-100 to-rose -100 rounded-xl flex items-center justify-center mb-4 ">
231305 < svg class ="w-6 h-6 text-pink-600 " fill ="none " stroke ="currentColor " stroke-width ="2 " viewBox ="0 0 24 24 "> < circle cx ="13.5 " cy ="6.5 " r ="2.5 "/> < circle cx ="19 " cy ="11.5 " r ="2.5 "/> < circle cx ="17 " cy ="18.5 " r ="2.5 "/> < circle cx ="8.5 " cy ="13.5 " r ="2.5 "/> < path d ="M21 12a9 9 0 1 1-9-9c0 4 2 6 4 8s4 5 5 5 0-4 0-4z "/> </ svg >
232306 </ div >
233307 < h3 class ="text-lg font-semibold mb-2 text-slate-900 "> Styling Props</ h3 >
@@ -236,8 +310,8 @@ <h3 class="text-lg font-semibold mb-2 text-slate-900">Styling Props</h3>
236310 </ p >
237311 </ div >
238312 <!-- Feature 4 -->
239- < div class ="feature-card rounded-2xl p-6 border border-slate-100 transition-shadow ">
240- < div class ="w-12 h-12 bg-amber-100 rounded-xl flex items-center justify-center mb-4 ">
313+ < div class ="feature-card rounded-2xl p-6 border border-slate-100 " style =" --card-color: #f59e0b; --card-color-end: #f97316; ">
314+ < div class ="w-12 h-12 bg-gradient-to-br from- amber-100 to-orange -100 rounded-xl flex items-center justify-center mb-4 ">
241315 < svg class ="w-6 h-6 text-amber-600 " fill ="none " stroke ="currentColor " stroke-width ="2 " viewBox ="0 0 24 24 "> < path d ="M4 9h16M4 15h16M10 3 8 21M16 3l-2 18 "/> </ svg >
242316 </ div >
243317 < h3 class ="text-lg font-semibold mb-2 text-slate-900 "> Numeric Strings</ h3 >
@@ -246,8 +320,8 @@ <h3 class="text-lg font-semibold mb-2 text-slate-900">Numeric Strings</h3>
246320 </ p >
247321 </ div >
248322 <!-- Feature 5 -->
249- < div class ="feature-card rounded-2xl p-6 border border-slate-100 transition-shadow ">
250- < div class ="w-12 h-12 bg-green-100 rounded-xl flex items-center justify-center mb-4 ">
323+ < div class ="feature-card rounded-2xl p-6 border border-slate-100 " style =" --card-color: #22c55e; --card-color-end: #10b981; ">
324+ < div class ="w-12 h-12 bg-gradient-to-br from- green-100 to-emerald -100 rounded-xl flex items-center justify-center mb-4 ">
251325 < svg class ="w-6 h-6 text-green-600 " fill ="none " stroke ="currentColor " stroke-width ="2 " viewBox ="0 0 24 24 "> < path d ="M12 2H2v10l9.29 9.29a1 1 0 0 0 1.42 0l8.58-8.58a1 1 0 0 0 0-1.42L12 2Z "/> < circle cx ="7.5 " cy ="7.5 " r ="1.5 " fill ="currentColor "/> </ svg >
252326 </ div >
253327 < h3 class ="text-lg font-semibold mb-2 text-slate-900 "> Branded Types</ h3 >
@@ -256,8 +330,8 @@ <h3 class="text-lg font-semibold mb-2 text-slate-900">Branded Types</h3>
256330 </ p >
257331 </ div >
258332 <!-- Feature 6 -->
259- < div class ="feature-card rounded-2xl p-6 border border-slate-100 transition-shadow ">
260- < div class ="w-12 h-12 bg-cyan-100 rounded-xl flex items-center justify-center mb-4 ">
333+ < div class ="feature-card rounded-2xl p-6 border border-slate-100 " style =" --card-color: #06b6d4; --card-color-end: #0ea5e9; ">
334+ < div class ="w-12 h-12 bg-gradient-to-br from- cyan-100 to-sky -100 rounded-xl flex items-center justify-center mb-4 ">
261335 < svg class ="w-6 h-6 text-cyan-600 " fill ="none " stroke ="currentColor " stroke-width ="2 " viewBox ="0 0 24 24 "> < path d ="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z "/> < path d ="m9 12 2 2 4-4 "/> </ svg >
262336 </ div >
263337 < h3 class ="text-lg font-semibold mb-2 text-slate-900 "> Package Verification</ h3 >
@@ -270,7 +344,7 @@ <h3 class="text-lg font-semibold mb-2 text-slate-900">Package Verification</h3>
270344 </ section >
271345
272346 <!-- Branded Types Section -->
273- < section class ="py-20 bg-slate-50 ">
347+ < section class ="py-20 section-gradient-2 ">
274348 < div class ="max-w-6xl mx-auto px-6 ">
275349 < div class ="grid lg:grid-cols-2 gap-12 items-center ">
276350 < div >
@@ -319,7 +393,7 @@ <h2 class="text-3xl sm:text-4xl font-bold mb-4 text-slate-900">Custom Ignore Pat
319393 </ section >
320394
321395 <!-- Comparison Section -->
322- < section id ="comparison " class ="py-20 bg-white ">
396+ < section id ="comparison " class ="py-20 section-gradient-3 ">
323397 < div class ="max-w-6xl mx-auto px-6 ">
324398 < div class ="text-center mb-16 ">
325399 < h2 class ="text-3xl sm:text-4xl font-bold mb-4 text-slate-900 "> Why TypeScript-Aware?</ h2 >
@@ -380,7 +454,7 @@ <h2 class="text-3xl sm:text-4xl font-bold mb-4 text-slate-900">Why TypeScript-Aw
380454 </ section >
381455
382456 <!-- Rules Section -->
383- < section class ="py-20 bg-slate-50 ">
457+ < section class ="py-20 section-gradient-2 decorative-dots ">
384458 < div class ="max-w-6xl mx-auto px-6 ">
385459 < div class ="text-center mb-16 ">
386460 < h2 class ="text-3xl sm:text-4xl font-bold mb-4 text-slate-900 "> 8 Battle-Tested Rules</ h2 >
@@ -466,7 +540,7 @@ <h3 class="font-mono text-brand-600 group-hover:text-brand-700 transition-colors
466540 </ section >
467541
468542 <!-- Quick Start Section -->
469- < section id ="quickstart " class ="py-20 bg-white ">
543+ < section id ="quickstart " class ="py-20 section-gradient-1 ">
470544 < div class ="max-w-4xl mx-auto px-6 ">
471545 < div class ="text-center mb-16 ">
472546 < h2 class ="text-3xl sm:text-4xl font-bold mb-4 text-slate-900 "> Quick Start</ h2 >
0 commit comments