Alibrown commited on
Commit
212e336
·
verified ·
1 Parent(s): 3807b88

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +517 -416
index.html CHANGED
@@ -1,428 +1,529 @@
1
  <!DOCTYPE html>
2
  <html lang="en">
3
  <head>
4
-     <meta charset="UTF-8">
5
-     <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
-     <title>Max Mustermann | Portfolio</title>
7
-     <script src="https://cdn.tailwindcss.com"></script>
8
-     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
-     <script>
10
-         tailwind.config = {
11
-             theme: {
12
-                 extend: {
13
-                     colors: {
14
-                         'hf-purple': '#FFD700',
15
-                         'hf-dark': '#0F172A',
16
-                         'hf-light': '#F8FAFC',
17
-                         'hf-accent': '#7C3AED',
18
-                     },
19
-                     fontFamily: {
20
-                         sans: ['Inter', 'sans-serif'],
21
-                     },
22
-                     animation: {
23
-                         'float': 'float 6s ease-in-out infinite',
24
-                         'gradient': 'gradient 8s ease infinite',
25
-                     },
26
-                     keyframes: {
27
-                         float: {
28
-                             '0%, 100%': { transform: 'translateY(0)' },
29
-                             '50%': { transform: 'translateY(-10px)' },
30
-                         },
31
-                         gradient: {
32
-                             '0%, 100%': { 'background-position': '0% 50%' },
33
-                             '50%': { 'background-position': '100% 50%' },
34
-                         }
35
-                     }
36
-                 }
37
-             }
38
-         }
39
-     </script>
40
-     <style>
41
-         @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
42
-        
43
-         body {
44
-             font-family: 'Inter', sans-serif;
45
-             background-color: #0F172A;
46
-             color: #F8FAFC;
47
-         }
48
-        
49
-         .gradient-bg {
50
-             background: linear-gradient(-45deg, #0F172A, #1E293B, #334155, #475569);
51
-             background-size: 400% 400%;
52
-             animation: gradient 15s ease infinite;
53
-         }
54
-        
55
-         .card-hover {
56
-             transition: all 0.3s ease;
57
-         }
58
-        
59
-         .card-hover:hover {
60
-             transform: translateY(-5px);
61
-             box-shadow: 0 10px 25px rgba(124, 58, 237, 0.3);
62
-         }
63
-        
64
-         .social-icon {
65
-             transition: all 0.3s ease;
66
-         }
67
-        
68
-         .social-icon:hover {
69
-             transform: scale(1.2);
70
-             color: #FFD700;
71
-         }
72
-        
73
-         .nav-link {
74
-             position: relative;
75
-         }
76
-        
77
-         .nav-link::after {
78
-             content: '';
79
-             position: absolute;
80
-             width: 0;
81
-             height: 2px;
82
-             bottom: -2px;
83
-             left: 0;
84
-             background-color: #FFD700;
85
-             transition: width 0.3s ease;
86
-         }
87
-        
88
-         .nav-link:hover::after {
89
-             width: 100%;
90
-         }
91
-        
92
-         .app-card {
93
-             background: rgba(30, 41, 59, 0.7);
94
-             backdrop-filter: blur(10px);
95
-             border: 1px solid rgba(255, 255, 255, 0.1);
96
-         }
97
-     </style>
98
  </head>
99
  <body class="min-h-screen gradient-bg">
100
-     <nav class="bg-hf-dark/80 backdrop-blur-md border-b border-gray-800 fixed w-full z-50">
101
-         <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
102
-             <div class="flex items-center justify-between h-16">
103
-                 <div class="flex items-center">
104
-                     <div class="flex-shrink-0">
105
-                         <span class="text-hf-purple font-bold text-xl">Max Mustermann</span>
106
-                     </div>
107
-                     <div class="hidden md:block">
108
-                         <div class="ml-10 flex items-baseline space-x-4">
109
-                             <a href="#home" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Home</a>
110
-                             <a href="#projects" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Projects</a>
111
-                             <a href="#about" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">About</a>
112
-                         </div>
113
-                     </div>
114
-                 </div>
115
-                 <div class="hidden md:block">
116
-                     <div class="ml-4 flex items-center md:ml-6">
117
-                         <a href="https://github.com/maxmustermann" target="_blank" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark px-4 py-2 rounded-md text-sm font-medium flex items-center">
118
-                             <i class="fab fa-github mr-2"></i> GitHub
119
-                         </a>
120
-                     </div>
121
-                 </div>
122
-                 <div class="-mr-2 flex md:hidden">
123
-                     <button type="button" id="mobile-menu-button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none">
124
-                         <span class="sr-only">Open main menu</span>
125
-                         <i class="fas fa-bars"></i>
126
-                     </button>
127
-                 </div>
128
-             </div>
129
-         </div>
130
-        
131
-         <div class="hidden md:hidden" id="mobile-menu">
132
-             <div class="px-2 pt-2 pb-3 space-y-1 sm:px-3">
133
-                 <a href="#home" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Home</a>
134
-                 <a href="#projects" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Projects</a>
135
-                 <a href="#about" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">About</a>
136
-                 <a href="https://github.com/maxmustermann" target="_blank" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark block px-3 py-2 rounded-md text-base font-medium flex items-center justify-center">
137
-                     <i class="fab fa-github mr-2"></i> GitHub
138
-                 </a>
139
-             </div>
140
-         </div>
141
-     </nav>
 
 
142
 
143
-     <section id="home" class="pt-32 pb-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
144
-         <div class="flex flex-col md:flex-row items-center justify-between">
145
-             <div class="md:w-1/2 mb-10 md:mb-0">
146
-                 <h1 class="text-4xl md:text-6xl font-bold mb-6">
147
-                     <span class="text-hf-purple">Hello, I'm Max Mustermann</span>
148
-                     <span class="text-white block mt-2">Full-Stack Developer & Security Nerd</span>
149
-                 </h1>
150
-                 <p class="text-lg text-gray-300 mb-8">
151
-                     I'm a developer and security enthusiast based in Berlin. I love building robust web applications, hardening servers, and bringing ideas to life with a touch of AI.
152
-                 </p>
153
-                 <div class="flex space-x-4">
154
-                     <a href="#projects" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark px-6 py-3 rounded-md font-medium">
155
-                         Explore My Projects
156
-                     </a>
157
-                     <a href="mailto:contact@maxmustermann.dev" class="border border-hf-purple text-hf-purple hover:bg-hf-purple hover:text-hf-dark px-6 py-3 rounded-md font-medium">
158
-                         Email Me
159
-                     </a>
160
-                 </div>
161
-             </div>
162
-             <div class="md:w-1/2 flex justify-center">
163
-                 <div class="relative w-64 h-64 md:w-80 md:h-80">
164
-                     <div class="absolute inset-0 bg-hf-purple/20 rounded-full blur-xl animate-pulse"></div>
165
-                     <div class="relative w-full h-full flex items-center justify-center">
166
-                         <img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" alt="Hugging Face Logo" class="w-full h-full object-contain animate-float">
167
-                     </div>
168
-                 </div>
169
-             </div>
170
-         </div>
171
-     </section>
172
 
173
-     <section id="projects" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
174
-         <div class="text-center mb-16">
175
-             <h2 class="text-3xl md:text-4xl font-bold mb-4">
176
-                 <span class="text-hf-purple">My</span>
177
-                 <span class="text-white">Projects</span>
178
-             </h2>
179
-             <p class="text-gray-400 max-w-2xl mx-auto">
180
-                 Here's a selection of my work, from AI-powered tools to secure server architectures.
181
-             </p>
182
-         </div>
183
-        
184
-         <div class="relative">
185
-             <div class="overflow-hidden">
186
-                 <div id="carousel" class="flex transition-transform duration-500 ease-in-out -ml-4">
187
-                     <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
188
-                         <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
189
-                             <div class="flex items-center mb-4">
190
-                                 <div class="bg-hf-purple/20 p-3 rounded-lg">
191
-                                     <i class="fas fa-brain text-hf-purple text-2xl"></i>
192
-                                 </div>
193
-                                 <h3 class="text-xl font-semibold ml-4">AI-Powered Portal</h3>
194
-                             </div>
195
-                             <p class="text-gray-400 mb-6 flex-grow">
196
-                                 An informational portal for Germany's youth services, enhanced with an AI component to make complex data easily accessible.
197
-                             </p>
198
-                             <div class="flex justify-between items-center mt-auto">
199
-                                 <span class="text-sm text-hf-purple">AI • Full-Stack • Data</span>
200
-                                 <a href="https://jugendamt-deutschland.de" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
201
-                                     Visit <i class="fas fa-external-link-alt ml-2"></i>
202
-                                 </a>
203
-                             </div>
204
-                         </div>
205
-                     </div>
206
-                    
207
-                     <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
208
-                         <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
209
-                             <div class="flex items-center mb-4">
210
-                                 <div class="bg-hf-purple/20 p-3 rounded-lg">
211
-                                     <i class="fas fa-shield-halved text-hf-purple text-2xl"></i>
212
-                                 </div>
213
-                                 <h3 class="text-xl font-semibold ml-4">Secure Architectures</h3>
214
-                             </div>
215
-                             <p class="text-gray-400 mb-6 flex-grow">
216
-                                 My passion project: experimenting with and hardening server configurations to build secure and resilient infrastructure from the ground up.
217
-                             </p>
218
-                             <div class="flex justify-between items-center mt-auto">
219
-                                 <span class="text-sm text-hf-purple">Security • Servers • DevOps</span>
220
-                                 <a href="https://github.com/maxmustermann" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
221
-                                     Explore <i class="fas fa-external-link-alt ml-2"></i>
222
-                                 </a>
223
-                             </div>
224
-                         </div>
225
-                     </div>
226
-                    
227
-                     <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
228
-                         <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
229
-                             <div class="flex items-center mb-4">
230
-                                 <div class="bg-hf-purple/20 p-3 rounded-lg">
231
-                                     <i class="fas fa-globe-europe text-hf-purple text-2xl"></i>
232
-                                 </div>
233
-                                 <h3 class="text-xl font-semibold ml-4">Custom Web Solutions</h3>
234
-                             </div>
235
-                             <p class="text-gray-400 mb-6 flex-grow">
236
-                                 Various websites I've built for fun and for clients, focusing on clean code, performance, and great user experience.
237
-                             </p>
238
-                             <div class="flex justify-between items-center mt-auto">
239
-                                 <span class="text-sm text-hf-purple">Web Dev • UI/UX</span>
240
-                                 <a href="https://maxmustermann.github.io/" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
241
-                                     See More <i class="fas fa-external-link-alt ml-2"></i>
242
-                                 </a>
243
-                             </div>
244
-                         </div>
245
-                     </div>
246
-                 </div>
247
-             </div>
248
 
249
-             <button id="prevBtn" class="absolute left-0 top-1/2 -translate-y-1/2 z-10 bg-hf-dark/80 hover:bg-hf-accent text-white p-3 rounded-full -ml-2 hidden sm:block">
250
-                 <i class="fas fa-chevron-left"></i>
251
-             </button>
252
-             <button id="nextBtn" class="absolute right-0 top-1/2 -translate-y-1/2 z-10 bg-hf-dark/80 hover:bg-hf-accent text-white p-3 rounded-full -mr-2 hidden sm:block">
253
-                 <i class="fas fa-chevron-right"></i>
254
-             </button>
255
-         </div>
256
-     </section>
257
 
258
-     <section id="about" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
259
-         <div class="flex flex-col lg:flex-row items-center">
260
-             <div class="lg:w-1/2 mb-10 lg:mb-0 lg:pr-10">
261
-                 <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-8">
262
-                     <h2 class="text-3xl font-bold mb-6">
263
-                         <span class="text-hf-purple">About</span>
264
-                         <span class="text-white">Me</span>
265
-                     </h2>
266
-                     <p class="text-gray-400 mb-6">
267
-                         As a developer with a deep interest in cybersecurity, I focus on building applications that are not just functional, but also secure and robust. My journey began with web development and quickly grew into a passion for securing the entire stack.
268
-                     </p>
269
-                     <p class="text-gray-400 mb-6">
270
-                         I'm driven by curiosity, whether it's exploring new ways to harden a Linux server or integrating AI models from Hugging Face into my work to solve real-world problems.
271
-                     </p>
272
-                     <div class="flex flex-wrap gap-4 mb-6">
273
-                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Full-Stack Dev</span>
274
-                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Cybersecurity</span>
275
-                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Server Hardening</span>
276
-                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">JavaScript</span>
277
-                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Linux</span>
278
-                         <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">AI Integration</span>
279
-                     </div>
280
-                     <a href="https://github.com/maxmustermann" target="_blank" rel="noopener noreferrer" class="inline-flex items-center text-hf-purple hover:text-yellow-500 font-medium">
281
-                         <i class="fab fa-github mr-2"></i> Visit my GitHub
282
-                     </a>
283
-                 </div>
284
-             </div>
285
-             <div class="lg:w-1/2 lg:pl-10">
286
-                 <div class="grid grid-cols-2 gap-4">
287
-                     <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
288
-                         <div class="text-hf-purple text-4xl mb-4">
289
-                             <i class="fas fa-code"></i>
290
-                         </div>
291
-                         <h3 class="text-xl font-semibold mb-2">Open Source</h3>
292
-                         <p class="text-gray-400">
293
-                            I actively contribute to and maintain projects on my GitHub profile.
294
-                         </p>
295
-                     </div>
296
-                     <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
297
-                         <div class="text-hf-purple text-4xl mb-4">
298
-                             <i class="fas fa-server"></i>
299
-                         </div>
300
-                         <h3 class="text-xl font-semibold mb-2">Infrastructure</h3>
301
-                         <p class="text-gray-400">
302
-                            Hands-on experience with server setup, maintenance, and security protocols.
303
-                         </p>
304
-                     </div>
305
-                     <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
306
-                         <div class="text-hf-purple text-4xl mb-4">
307
-                             <i class="fas fa-user-secret"></i>
308
-                         </div>
309
-                         <h3 class="text-xl font-semibold mb-2">Security Nerd</h3>
310
-                         <p class="text-gray-400">
311
-                            Passionate about hardening systems and building secure digital environments.
312
-                         </p>
313
-                     </div>
314
-                     <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
315
-                         <div class="text-hf-purple text-4xl mb-4">
316
-                             <i class="fas fa-rocket"></i>
317
-                         </div>
318
-                         <h3 class="text-xl font-semibold mb-2">Web Platforms</h3>
319
-                         <p class="text-gray-400">
320
-                            Built and launched several web projects, including an AI-powered portal.
321
-                         </p>
322
-                     </div>
323
-                 </div>
324
-             </div>
325
-         </div>
326
-     </section>
327
-    
328
-         <footer class="bg-hf-dark/50 border-t border-gray-800 py-10">
329
-         <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
330
-             <div class="flex flex-col md:flex-row justify-between items-center">
331
-                 <div class="mb-6 md:mb-0">
332
-                     <span class="text-hf-purple font-bold text-xl">Max Mustermann Portfolio</span>
333
-                     <p class="text-gray-400 mt-2">Building the future, securely.</p>
334
-                 </div>
335
-                 <div class="flex flex-wrap justify-center gap-6">
336
-                     <a href="#home" class="text-gray-400 hover:text-hf-purple">Home</a>
337
-                     <a href="#projects" class="text-gray-400 hover:text-hf-purple">Projects</a>
338
-                     <a href="#about" class="text-gray-400 hover:text-hf-purple">About</a>
339
-                     <a href="https://github.com/maxmustermann" class="text-gray-400 hover:text-hf-purple" target="_blank" rel="noopener noreferrer">GitHub</a>
340
-                 </div>
341
-             </div>
342
-             <div class="mt-8 pt-8 border-t border-gray-800 text-center text-gray-500 text-sm">
343
-                 <p>&copy; 2025 Max Mustermann Portfolio. All rights reserved.</p>
344
-             </div>
345
-         </div>
346
-     </footer>
347
 
348
-     <script>
349
-         document.addEventListener('DOMContentLoaded', function () {
350
-             // Mobile menu toggle
351
-             const mobileMenuButton = document.getElementById('mobile-menu-button');
352
-             const mobileMenu = document.getElementById('mobile-menu');
353
-             if (mobileMenuButton) {
354
-                 mobileMenuButton.addEventListener('click', () => {
355
-                     mobileMenu.classList.toggle('hidden');
356
-                 });
357
-             }
358
-             // Smooth scrolling for navigation links
359
-             document.querySelectorAll('a[href^="#"]').forEach(anchor => {
360
-                 anchor.addEventListener('click', function (e) {
361
-                     e.preventDefault();
362
-                     const targetId = this.getAttribute('href');
363
-                     const targetElement = document.querySelector(targetId);
364
-                    
365
-                     if (targetElement) {
366
-                         window.scrollTo({
367
-                             top: targetElement.offsetTop - 64, // Adjust for fixed nav height
368
-                             behavior: 'smooth'
369
-                         });
370
-                        
371
-                         if (!mobileMenu.classList.contains('hidden')) {
372
-                             mobileMenu.classList.add('hidden');
373
-                         }
374
-                     }
375
-                 });
376
-             });
377
-             // Carousel functionality
378
-             const carousel = document.getElementById('carousel');
379
-             const prevBtn = document.getElementById('prevBtn');
380
-             const nextBtn = document.getElementById('nextBtn');
381
-            
382
-             if (carousel) {
383
-                 const items = carousel.querySelectorAll('.carousel-item');
384
-                 const itemCount = items.length;
385
-                 let currentIndex = 0;
386
-                 function getVisibleItems() {
387
-                     if (window.innerWidth >= 1024) return 3; // lg
388
-                     if (window.innerWidth >= 768) return 2; // md
389
-                     return 1; // sm
390
-                 }
391
-                 function updateCarousel() {
392
-                     const itemWidth = items[0].getBoundingClientRect().width;
393
-                     const containerGap = parseInt(getComputedStyle(items[0]).paddingRight) * 2;
394
-                     const totalWidth = itemWidth + containerGap;
395
-                    
396
-                     carousel.style.transform = `translateX(-${currentIndex * totalWidth}px)`;
397
-                     // Button visibility
398
-                     const visibleItems = getVisibleItems();
399
-                     prevBtn.disabled = currentIndex === 0;
400
-                     nextBtn.disabled = currentIndex >= itemCount - visibleItems;
401
-                     prevBtn.style.opacity = prevBtn.disabled ? '0.4' : '1';
402
-                     nextBtn.style.opacity = nextBtn.disabled ? '0.4' : '1';
403
-                 }
404
-                 prevBtn.addEventListener('click', () => {
405
-                     if (currentIndex > 0) {
406
-                         currentIndex--;
407
-                         updateCarousel();
408
-                     }
409
-                 });
410
-                 nextBtn.addEventListener('click', () => {
411
-                     if (currentIndex < itemCount - getVisibleItems()) {
412
-                         currentIndex++;
413
-                         updateCarousel();
414
-                     }
415
-                 });
416
-                
417
-                 window.addEventListener('resize', () => {
418
-                     // Reset to avoid issues on resize
419
-                     currentIndex = 0;
420
-                     updateCarousel();
421
-                 });
422
-                
423
-                 updateCarousel(); // Initial call
424
-             }
425
-         });
426
-     </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
427
  </body>
428
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
3
  <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Ali Brown | Hugging Face Portfolio</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <script>
10
+ tailwind.config = {
11
+ theme: {
12
+ extend: {
13
+ colors: {
14
+ 'hf-purple': '#FFD700',
15
+ 'hf-dark': '#0F172A',
16
+ 'hf-light': '#F8FAFC',
17
+ 'hf-accent': '#7C3AED',
18
+ },
19
+ fontFamily: {
20
+ sans: ['Inter', 'sans-serif'],
21
+ },
22
+ animation: {
23
+ 'float': 'float 6s ease-in-out infinite',
24
+ 'gradient': 'gradient 8s ease infinite',
25
+ },
26
+ keyframes: {
27
+ float: {
28
+ '0%, 100%': { transform: 'translateY(0)' },
29
+ '50%': { transform: 'translateY(-10px)' },
30
+ },
31
+ gradient: {
32
+ '0%, 100%': { 'background-position': '0% 50%' },
33
+ '50%': { 'background-position': '100% 50%' },
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
39
+ </script>
40
+ <style>
41
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
42
+
43
+ body {
44
+ font-family: 'Inter', sans-serif;
45
+ background-color: #0F172A;
46
+ color: #F8FAFC;
47
+ }
48
+
49
+ .gradient-bg {
50
+ background: linear-gradient(-45deg, #0F172A, #1E293B, #334155, #475569);
51
+ background-size: 400% 400%;
52
+ animation: gradient 15s ease infinite;
53
+ }
54
+
55
+ .card-hover {
56
+ transition: all 0.3s ease;
57
+ }
58
+
59
+ .card-hover:hover {
60
+ transform: translateY(-5px);
61
+ box-shadow: 0 10px 25px rgba(124, 58, 237, 0.3);
62
+ }
63
+
64
+ .social-icon {
65
+ transition: all 0.3s ease;
66
+ }
67
+
68
+ .social-icon:hover {
69
+ transform: scale(1.2);
70
+ color: #FFD700;
71
+ }
72
+
73
+ .nav-link {
74
+ position: relative;
75
+ }
76
+
77
+ .nav-link::after {
78
+ content: '';
79
+ position: absolute;
80
+ width: 0;
81
+ height: 2px;
82
+ bottom: -2px;
83
+ left: 0;
84
+ background-color: #FFD700;
85
+ transition: width 0.3s ease;
86
+ }
87
+
88
+ .nav-link:hover::after {
89
+ width: 100%;
90
+ }
91
+
92
+ .app-card {
93
+ background: rgba(30, 41, 59, 0.7);
94
+ backdrop-filter: blur(10px);
95
+ border: 1px solid rgba(255, 255, 255, 0.1);
96
+ }
97
+ </style>
98
  </head>
99
  <body class="min-h-screen gradient-bg">
100
+ <nav class="bg-hf-dark/80 backdrop-blur-md border-b border-gray-800 fixed w-full z-50">
101
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
102
+ <div class="flex items-center justify-between h-16">
103
+ <div class="flex items-center">
104
+ <div class="flex-shrink-0">
105
+ <span class="text-hf-purple font-bold text-xl">Ali Brown</span>
106
+ </div>
107
+ <div class="hidden md:block">
108
+ <div class="ml-10 flex items-baseline space-x-4">
109
+ <a href="#home" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Home</a>
110
+ <a href="#projects" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Projects</a>
111
+ <a href="#about" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">About</a>
112
+ <a href="#contact" class="nav-link text-gray-300 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Contact</a>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ <div class="hidden md:block">
117
+ <div class="ml-4 flex items-center md:ml-6">
118
+ <a href="https://huggingface.co/AliBrown" target="_blank" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark px-4 py-2 rounded-md text-sm font-medium flex items-center">
119
+ <i class="fas fa-robot mr-2"></i> Visit Hugging Face
120
+ </a>
121
+ </div>
122
+ </div>
123
+ <div class="-mr-2 flex md:hidden">
124
+ <button type="button" id="mobile-menu-button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none">
125
+ <span class="sr-only">Open main menu</span>
126
+ <i class="fas fa-bars"></i>
127
+ </button>
128
+ </div>
129
+ </div>
130
+ </div>
131
+
132
+ <div class="hidden md:hidden" id="mobile-menu">
133
+ <div class="px-2 pt-2 pb-3 space-y-1 sm:px-3">
134
+ <a href="#home" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Home</a>
135
+ <a href="#projects" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Projects</a>
136
+ <a href="#about" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">About</a>
137
+ <a href="#contact" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Contact</a>
138
+ <a href="https://huggingface.co/AliBrown" target="_blank" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark block px-3 py-2 rounded-md text-base font-medium flex items-center justify-center">
139
+ <i class="fas fa-robot mr-2"></i> Visit Hugging Face
140
+ </a>
141
+ </div>
142
+ </div>
143
+ </nav>
144
 
145
+ <section id="home" class="pt-32 pb-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
146
+ <div class="flex flex-col md:flex-row items-center justify-between">
147
+ <div class="md:w-1/2 mb-10 md:mb-0">
148
+ <h1 class="text-4xl md:text-6xl font-bold mb-6">
149
+ <span class="text-hf-purple">Hello, I'm Ali Brown</span>
150
+ <span class="text-white block mt-2">Full-Stack Developer & Security Nerd</span>
151
+ </h1>
152
+ <p class="text-lg text-gray-300 mb-8">
153
+ A developer and security enthusiast based in Berlin. I love building solid web applications, hardening servers, and bringing ideas to life with a touch of AI.
154
+ </p>
155
+ <div class="flex space-x-4">
156
+ <a href="#projects" class="bg-hf-purple hover:bg-yellow-500 text-hf-dark px-6 py-3 rounded-md font-medium">
157
+ Explore My Projects
158
+ </a>
159
+ <a href="#contact" class="border border-hf-purple text-hf-purple hover:bg-hf-purple hover:text-hf-dark px-6 py-3 rounded-md font-medium">
160
+ Contact Me
161
+ </a>
162
+ </div>
163
+ </div>
164
+ <div class="md:w-1/2 flex justify-center">
165
+ <div class="relative w-64 h-64 md:w-80 md:h-80">
166
+ <div class="absolute inset-0 bg-hf-purple/20 rounded-full blur-xl animate-pulse"></div>
167
+ <div class="relative w-full h-full flex items-center justify-center">
168
+ <img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" alt="Hugging Face Logo" class="w-full h-full object-contain animate-float">
169
+ </div>
170
+ </div>
171
+ </div>
172
+ </div>
173
+ </section>
174
 
175
+ <section id="projects" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
176
+ <div class="text-center mb-16">
177
+ <h2 class="text-3xl md:text-4xl font-bold mb-4">
178
+ <span class="text-hf-purple">My</span>
179
+ <span class="text-white">Projects</span>
180
+ </h2>
181
+ <p class="text-gray-400 max-w-2xl mx-auto">
182
+ Here's a selection of my work, from AI-powered tools to secure server architectures.
183
+ </p>
184
+ </div>
185
+
186
+ <div class="relative">
187
+ <div class="overflow-hidden">
188
+ <div id="carousel" class="flex transition-transform duration-500 ease-in-out -ml-4">
189
+ <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
190
+ <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
191
+ <div class="flex items-center mb-4">
192
+ <div class="bg-hf-purple/20 p-3 rounded-lg">
193
+ <i class="fas fa-brain text-hf-purple text-2xl"></i>
194
+ </div>
195
+ <h3 class="text-xl font-semibold ml-4">AI-Powered Portal</h3>
196
+ </div>
197
+ <p class="text-gray-400 mb-6 flex-grow">
198
+ An informational portal for Germany's youth services, enhanced with an AI component to make complex data easily accessible.
199
+ </p>
200
+ <div class="flex justify-between items-center mt-auto">
201
+ <span class="text-sm text-hf-purple">AI • Full-Stack • Data</span>
202
+ <a href="https://jugendamt-deutschland.de" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
203
+ Visit <i class="fas fa-external-link-alt ml-2"></i>
204
+ </a>
205
+ </div>
206
+ </div>
207
+ </div>
208
+
209
+ <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
210
+ <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
211
+ <div class="flex items-center mb-4">
212
+ <div class="bg-hf-purple/20 p-3 rounded-lg">
213
+ <i class="fas fa-shield-halved text-hf-purple text-2xl"></i>
214
+ </div>
215
+ <h3 class="text-xl font-semibold ml-4">Secure Architectures</h3>
216
+ </div>
217
+ <p class="text-gray-400 mb-6 flex-grow">
218
+ My passion project: experimenting with and hardening server configurations to build secure and resilient infrastructure from the ground up.
219
+ </p>
220
+ <div class="flex justify-between items-center mt-auto">
221
+ <span class="text-sm text-hf-purple">Security • Servers • DevOps</span>
222
+ <a href="https://github.com/volkansah" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
223
+ Explore <i class="fas fa-external-link-alt ml-2"></i>
224
+ </a>
225
+ </div>
226
+ </div>
227
+ </div>
228
+
229
+ <div class="carousel-item w-full md:w-1/2 lg:w-1/3 p-4 flex-shrink-0">
230
+ <div class="app-card rounded-xl p-6 h-full card-hover flex flex-col">
231
+ <div class="flex items-center mb-4">
232
+ <div class="bg-hf-purple/20 p-3 rounded-lg">
233
+ <i class="fas fa-globe-europe text-hf-purple text-2xl"></i>
234
+ </div>
235
+ <h3 class="text-xl font-semibold ml-4">Custom Web Solutions</h3>
236
+ </div>
237
+ <p class="text-gray-400 mb-6 flex-grow">
238
+ Various websites I've built for fun and for clients, focusing on clean code, performance, and great user experience.
239
+ </p>
240
+ <div class="flex justify-between items-center mt-auto">
241
+ <span class="text-sm text-hf-purple">Web Dev • UI/UX</span>
242
+ <a href="https://volkansah.github.io/" target="_blank" rel="noopener noreferrer" class="text-hf-purple hover:text-yellow-500 font-medium flex items-center">
243
+ See More <i class="fas fa-external-link-alt ml-2"></i>
244
+ </a>
245
+ </div>
246
+ </div>
247
+ </div>
248
+ </div>
249
+ </div>
250
 
251
+ <button id="prevBtn" class="absolute left-0 top-1/2 -translate-y-1/2 z-10 bg-hf-dark/80 hover:bg-hf-accent text-white p-3 rounded-full -ml-2 hidden sm:block">
252
+ <i class="fas fa-chevron-left"></i>
253
+ </button>
254
+ <button id="nextBtn" class="absolute right-0 top-1/2 -translate-y-1/2 z-10 bg-hf-dark/80 hover:bg-hf-accent text-white p-3 rounded-full -mr-2 hidden sm:block">
255
+ <i class="fas fa-chevron-right"></i>
256
+ </button>
257
+ </div>
258
+ </section>
259
 
260
+ <section id="about" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
261
+ <div class="flex flex-col lg:flex-row items-center">
262
+ <div class="lg:w-1/2 mb-10 lg:mb-0 lg:pr-10">
263
+ <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-8">
264
+ <h2 class="text-3xl font-bold mb-6">
265
+ <span class="text-hf-purple">About</span>
266
+ <span class="text-white">Me</span>
267
+ </h2>
268
+ <p class="text-gray-400 mb-6">
269
+ As a developer with a deep interest in cybersecurity, I focus on building applications that are not just functional, but also secure and robust. My journey began with web development and quickly grew into a passion for securing the entire stack.
270
+ </p>
271
+ <p class="text-gray-400 mb-6">
272
+ I'm driven by curiosity, whether it's exploring new ways to harden a Linux server or integrating AI models from Hugging Face into my work to solve real-world problems.
273
+ </p>
274
+ <div class="flex flex-wrap gap-4 mb-6">
275
+ <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Full-Stack Dev</span>
276
+ <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Cybersecurity</span>
277
+ <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Server Hardening</span>
278
+ <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">JavaScript</span>
279
+ <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">Linux</span>
280
+ <span class="bg-hf-dark/80 text-hf-purple px-3 py-1 rounded-full text-sm">AI Integration</span>
281
+ </div>
282
+ <a href="https://github.com/volkansah" target="_blank" rel="noopener noreferrer" class="inline-flex items-center text-hf-purple hover:text-yellow-500 font-medium">
283
+ <i class="fab fa-github mr-2"></i> Visit my GitHub
284
+ </a>
285
+ </div>
286
+ </div>
287
+ <div class="lg:w-1/2 lg:pl-10">
288
+ <div class="grid grid-cols-2 gap-4">
289
+ <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
290
+ <div class="text-hf-purple text-4xl mb-4">
291
+ <i class="fas fa-code"></i>
292
+ </div>
293
+ <h3 class="text-xl font-semibold mb-2">Open Source</h3>
294
+ <p class="text-gray-400">
295
+ I actively contribute to and maintain projects on my GitHub profile.
296
+ </p>
297
+ </div>
298
+ <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
299
+ <div class="text-hf-purple text-4xl mb-4">
300
+ <i class="fas fa-server"></i>
301
+ </div>
302
+ <h3 class="text-xl font-semibold mb-2">Infrastructure</h3>
303
+ <p class="text-gray-400">
304
+ Hands-on experience with server setup, maintenance, and security protocols.
305
+ </p>
306
+ </div>
307
+ <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
308
+ <div class="text-hf-purple text-4xl mb-4">
309
+ <i class="fas fa-user-secret"></i>
310
+ </div>
311
+ <h3 class="text-xl font-semibold mb-2">Security Nerd</h3>
312
+ <p class="text-gray-400">
313
+ Passionate about hardening systems and building secure digital environments.
314
+ </p>
315
+ </div>
316
+ <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-6 card-hover">
317
+ <div class="text-hf-purple text-4xl mb-4">
318
+ <i class="fas fa-rocket"></i>
319
+ </div>
320
+ <h3 class="text-xl font-semibold mb-2">Web Platforms</h3>
321
+ <p class="text-gray-400">
322
+ Built and launched several web projects, including an AI-powered portal.
323
+ </p>
324
+ </div>
325
+ </div>
326
+ </div>
327
+ </div>
328
+ </section>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
 
330
+ <section id="contact" class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
331
+ <div class="text-center mb-16">
332
+ <h2 class="text-3xl md:text-4xl font-bold mb-4">
333
+ <span class="text-hf-purple">Get</span>
334
+ <span class="text-white">In Touch</span>
335
+ </h2>
336
+ <p class="text-gray-400 max-w-2xl mx-auto">
337
+ Have a project in mind or want to collaborate? Feel free to reach out!
338
+ </p>
339
+ </div>
340
+
341
+ <div class="flex flex-col lg:flex-row gap-10">
342
+ <div class="lg:w-1/2">
343
+ <form action="#" method="POST" class="bg-hf-dark/50 border border-gray-800 rounded-xl p-8">
344
+ <div class="mb-6">
345
+ <label for="name" class="block text-gray-300 mb-2">Your Name</label>
346
+ <input type="text" id="name" name="name" class="w-full bg-hf-dark border border-gray-700 rounded-lg px-4 py-3 text-white focus:outline-none focus:ring-2 focus:ring-hf-purple">
347
+ </div>
348
+ <div class="mb-6">
349
+ <label for="email" class="block text-gray-300 mb-2">Email Address</label>
350
+ <input type="email" id="email" name="email" class="w-full bg-hf-dark border border-gray-700 rounded-lg px-4 py-3 text-white focus:outline-none focus:ring-2 focus:ring-hf-purple">
351
+ </div>
352
+ <div class="mb-6">
353
+ <label for="subject" class="block text-gray-300 mb-2">Subject</label>
354
+ <input type="text" id="subject" name="subject" class="w-full bg-hf-dark border border-gray-700 rounded-lg px-4 py-3 text-white focus:outline-none focus:ring-2 focus:ring-hf-purple">
355
+ </div>
356
+ <div class="mb-6">
357
+ <label for="message" class="block text-gray-300 mb-2">Message</label>
358
+ <textarea id="message" name="message" rows="5" class="w-full bg-hf-dark border border-gray-700 rounded-lg px-4 py-3 text-white focus:outline-none focus:ring-2 focus:ring-hf-purple"></textarea>
359
+ </div>
360
+ <button type="submit" class="w-full bg-hf-purple hover:bg-yellow-500 text-hf-dark font-medium py-3 px-6 rounded-lg transition duration-300">
361
+ Send Message
362
+ </button>
363
+ </form>
364
+ </div>
365
+
366
+ <div class="lg:w-1/2">
367
+ <div class="bg-hf-dark/50 border border-gray-800 rounded-xl p-8 h-full">
368
+ <h3 class="text-2xl font-semibold mb-6">Contact Information</h3>
369
+
370
+ <div class="space-y-6">
371
+ <div class="flex items-start">
372
+ <div class="text-hf-purple text-xl mr-4 mt-1">
373
+ <i class="fas fa-envelope"></i>
374
+ </div>
375
+ <div>
376
+ <h4 class="text-gray-300 font-medium mb-1">Email</h4>
377
+ <a href="mailto:[email protected]" class="text-gray-400 hover:text-hf-purple">[email protected]</a>
378
+ </div>
379
+ </div>
380
+
381
+ <div class="flex items-start">
382
+ <div class="text-hf-purple text-xl mr-4 mt-1">
383
+ <i class="fas fa-robot"></i>
384
+ </div>
385
+ <div>
386
+ <h4 class="text-gray-300 font-medium mb-1">Hugging Face Profile</h4>
387
+ <a href="https://huggingface.co/AliBrown" target="_blank" rel="noopener noreferrer" class="text-gray-400 hover:text-hf-purple">huggingface.co/AliBrown</a>
388
+ </div>
389
+ </div>
390
+
391
+ <div class="flex items-start">
392
+ <div class="text-hf-purple text-xl mr-4 mt-1">
393
+ <i class="fas fa-map-marker-alt"></i>
394
+ </div>
395
+ <div>
396
+ <h4 class="text-gray-300 font-medium mb-1">Location</h4>
397
+ <p class="text-gray-400">Berlin, Germany</p>
398
+ </div>
399
+ </div>
400
+ </div>
401
+
402
+ <div class="mt-10">
403
+ <h4 class="text-gray-300 font-medium mb-4">Follow Me</h4>
404
+ <div class="flex space-x-6">
405
+ <a href="https://github.com/volkansah" target="_blank" rel="noopener noreferrer" class="social-icon text-gray-400 hover:text-hf-purple text-2xl">
406
+ <i class="fab fa-github"></i>
407
+ </a>
408
+ <a href="https://volkansah.github.io/" target="_blank" rel="noopener noreferrer" class="social-icon text-gray-400 hover:text-hf-purple text-2xl">
409
+ <i class="fas fa-globe"></i>
410
+ </a>
411
+ <a href="https://huggingface.co/AliBrown" target="_blank" rel="noopener noreferrer" class="social-icon text-gray-400 hover:text-hf-purple text-2xl">
412
+ <i class="fas fa-robot"></i>
413
+ </a>
414
+ </div>
415
+ </div>
416
+ </div>
417
+ </div>
418
+ </div>
419
+ </section>
420
+
421
+ <footer class="bg-hf-dark/50 border-t border-gray-800 py-10">
422
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
423
+ <div class="flex flex-col md:flex-row justify-between items-center">
424
+ <div class="mb-6 md:mb-0">
425
+ <span class="text-hf-purple font-bold text-xl">Ali Brown Portfolio</span>
426
+ <p class="text-gray-400 mt-2">Building the future, securely.</p>
427
+ </div>
428
+ <div class="flex flex-wrap justify-center gap-6">
429
+ <a href="#home" class="text-gray-400 hover:text-hf-purple">Home</a>
430
+ <a href="#projects" class="text-gray-400 hover:text-hf-purple">Projects</a>
431
+ <a href="#about" class="text-gray-400 hover:text-hf-purple">About</a>
432
+ <a href="#contact" class="text-gray-400 hover:text-hf-purple">Contact</a>
433
+ </div>
434
+ </div>
435
+ <div class="mt-8 pt-8 border-t border-gray-800 text-center text-gray-500 text-sm">
436
+ <p>&copy; 2025 Ali Brown Portfolio. All rights reserved.</p>
437
+ </div>
438
+ </div>
439
+ </footer>
440
+
441
+ <script>
442
+ document.addEventListener('DOMContentLoaded', function () {
443
+ // Mobile menu toggle
444
+ const mobileMenuButton = document.getElementById('mobile-menu-button');
445
+ const mobileMenu = document.getElementById('mobile-menu');
446
+ if (mobileMenuButton) {
447
+ mobileMenuButton.addEventListener('click', () => {
448
+ mobileMenu.classList.toggle('hidden');
449
+ });
450
+ }
451
+
452
+ // Smooth scrolling for navigation links
453
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
454
+ anchor.addEventListener('click', function (e) {
455
+ e.preventDefault();
456
+ const targetId = this.getAttribute('href');
457
+ const targetElement = document.querySelector(targetId);
458
+
459
+ if (targetElement) {
460
+ window.scrollTo({
461
+ top: targetElement.offsetTop - 64, // Adjust for fixed nav height
462
+ behavior: 'smooth'
463
+ });
464
+
465
+ if (!mobileMenu.classList.contains('hidden')) {
466
+ mobileMenu.classList.add('hidden');
467
+ }
468
+ }
469
+ });
470
+ });
471
+
472
+ // Carousel functionality
473
+ const carousel = document.getElementById('carousel');
474
+ const prevBtn = document.getElementById('prevBtn');
475
+ const nextBtn = document.getElementById('nextBtn');
476
+
477
+ if (carousel) {
478
+ const items = carousel.querySelectorAll('.carousel-item');
479
+ const itemCount = items.length;
480
+ let currentIndex = 0;
481
+
482
+ function getVisibleItems() {
483
+ if (window.innerWidth >= 1024) return 3; // lg
484
+ if (window.innerWidth >= 768) return 2; // md
485
+ return 1; // sm
486
+ }
487
+
488
+ function updateCarousel() {
489
+ const itemWidth = items[0].getBoundingClientRect().width;
490
+ const containerGap = parseInt(getComputedStyle(items[0]).paddingRight) * 2;
491
+ const totalWidth = itemWidth + containerGap;
492
+
493
+ carousel.style.transform = `translateX(-${currentIndex * totalWidth}px)`;
494
+
495
+ // Button visibility
496
+ const visibleItems = getVisibleItems();
497
+ prevBtn.disabled = currentIndex === 0;
498
+ nextBtn.disabled = currentIndex >= itemCount - visibleItems;
499
+
500
+ prevBtn.style.opacity = prevBtn.disabled ? '0.4' : '1';
501
+ nextBtn.style.opacity = nextBtn.disabled ? '0.4' : '1';
502
+ }
503
+
504
+ prevBtn.addEventListener('click', () => {
505
+ if (currentIndex > 0) {
506
+ currentIndex--;
507
+ updateCarousel();
508
+ }
509
+ });
510
+
511
+ nextBtn.addEventListener('click', () => {
512
+ if (currentIndex < itemCount - getVisibleItems()) {
513
+ currentIndex++;
514
+ updateCarousel();
515
+ }
516
+ });
517
+
518
+ window.addEventListener('resize', () => {
519
+ // Reset to avoid issues on resize
520
+ currentIndex = 0;
521
+ updateCarousel();
522
+ });
523
+
524
+ updateCarousel(); // Initial call
525
+ }
526
+ });
527
+ </script>
528
  </body>
529
  </html>