dodey917 commited on
Commit
ca5829a
·
verified ·
1 Parent(s): 1b8f206

Create a modern, high-end UX/UI designer portfolio website with the following features and requirements:

Browse files

Design & Content

Hero section: fullscreen, dramatic presentation of best work (large headline, subhead, CTA "Hire me", and a looping muted video or animated 3D scene background).

Projects grid: responsive masonry/grid of projects with filter tags (e.g., Branding, Web, Mobile, UX Research). Clicking a tile opens a detailed case study modal or page.

Case studies: full pages for each project with before/after images, walkthroughs of research → ideation → prototyping → testing, annotated images, and downloadable PDFs.

Design process timeline component: animated horizontal timeline showing stages and deliverables.

Skills & tools section: skill bars or radial charts for proficiency and tool icons (Figma, Sketch, Adobe, Zeplin, Framer, etc.).

Testimonials: carousel with client logos, quotes, and star ratings.

Contact/Hire me: form + CTA button in hero and persistent footer.

Accessibility: keyboard focus states, semantic markup, ARIA where needed, colour contrast checked.

Interaction & Visuals

Full-site high-quality background animation: GPU-accelerated, subtle, high-poly 3D visuals (WebGL/three.js) combined with CSS 3D effects and particle animation for depth. Allow video fallback for low-power devices.

Let JavaScript handle animation orchestration (scroll-triggered transitions, hover micro-interactions). Let CSS handle styling, shaders-like visual polish, and 3D transforms where appropriate.

Include a background video option and ability to fade to static 3D animation for performance.

Smooth micro-interactions (hover, focus, animated filter transitions), lazy loading for images/videos.

Bot & Backend Integration

Persistent left-side chat widget visible on every page. The widget supports:

Rule-based answers and a FAQ fallback.

Live notification functionality: when a website visitor submits a “Request Service” or “Hire me” request, the backend sends an email to the portfolio owner and stores the request.

Optional: connect the chat bot to an AI service (e.g., ChatGPT) for natural replies.

Chat backend: Node.js (Express) + WebSocket (Socket.io) for real-time chat.

Email integration: use Nodemailer (SMTP) or an email provider (SendGrid / Mailgun) for reliable delivery.

Server endpoints:

POST /api/request-service — receives client request data, validates, stores (e.g., MongoDB or simple JSON store), and sends owner email.

Socket.io real-time channels for chat messages.

GET /api/projects — serves project metadata for the grid and filters.

Security: rate limiting, input validation, CORS, and server-side sanitization.

Tech stack

Backend: Node.js (LTS), Express, Socket.io, Nodemailer/SendGrid, MongoDB (or file/SQLite) for requests & messages.

Frontend: HTML5 + CSS3 (modern layout, Tailwind optional), vanilla JS or React (optional) — use Three.js for WebGL 3D background, GSAP for complex animation sequencing.

Build: Webpack/Vite, ESLint, Prettier.

Hosting: static on Netlify/Vercel for front-end, Render/Heroku/Render for Node backend (or a single VPS).

Performance & progressive enhancement

Detect low-power/low-bandwidth and serve static image/video fallback.

Use lazy loading, code-splitting, and compression.

Provide meta tags for SEO and social preview images.

Deliverables

Production-ready repo with clear README, environment variables documented, example .env.example for email creds, example project JSON.

Working demo with sample projects, functioning chat widget, and email integration (can be wired to a test SMTP).

Tests for the backend endpoints (basic).

Quick technical spec + implementation plan (concise)

Frontend pages/components:

index.html / App (Hero, Projects Grid, Timeline, Skills, Testimonials, Footer)

project.html or modal component (case study)

chat-widget (left fixed, minimized → expand)

video/3d-background container with three.js scene and video fallback

Backend endpoints (Express):

POST /api/request-service — body: {name,email,service,message,projectId} → validate, save, send email.

GET /api/projects — returns projects array with tags.

Socket.io /chat namespace — handle client messages and server/bot replies.

Email flow:

On POST /api/request-service:

Save request to DB (or JSON)

Send email to owner with request details

Optionally send confirmation email to client

Chat bot:

Frontend sends messages to Socket.io

Server replies using a rule engine or calls an AI API

When user requests "hire me" or "request service" through chat, bot triggers the same /api/request-service flow and informs the client

Tech choices: Node.js + Express, Socket.io, Nodemailer/SendGrid, three.js, GSAP, Vite (or Webpack), MongoDB (or simple file store)

Create a UX/UI designer portfolio with hero section showcasing best work, projects grid with filter tags, detailed case studies with before/after, design process timeline, skills and tools, testimonials, and hire me button.


The website name is NMDX


service are

telegram promotion
token promotion
Telegran ads
Telegram community management
App promotion
Vibe coding/ App developer
Music Promotion
Press releases
Content writeing
SEO / GEO
Youtube Promotion

Files changed (7) hide show
  1. README.md +8 -5
  2. components/chat-widget.js +402 -0
  3. components/footer.js +323 -0
  4. components/navbar.js +210 -0
  5. index.html +497 -19
  6. script.js +345 -0
  7. style.css +236 -19
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Nmdx Portfolio
3
- emoji: 🏃
4
- colorFrom: purple
5
- colorTo: yellow
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: NMDX Portfolio 🚀
3
+ colorFrom: pink
4
+ colorTo: pink
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/chat-widget.js ADDED
@@ -0,0 +1,402 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomChatWidget extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .chat-widget {
7
+ position: fixed;
8
+ bottom: 20px;
9
+ right: 20px;
10
+ z-index: 999;
11
+ }
12
+
13
+ .chat-bubble {
14
+ width: 60px;
15
+ height: 60px;
16
+ background: linear-gradient(135deg, #9333ea, #3b82f6);
17
+ border-radius: 50%;
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ cursor: pointer;
22
+ box-shadow: 0 4px 20px rgba(147, 51, 234, 0.4);
23
+ transition: all 0.3s ease;
24
+ position: relative;
25
+ }
26
+
27
+ .chat-bubble:hover {
28
+ transform: scale(1.1);
29
+ box-shadow: 0 6px 30px rgba(147, 51, 234, 0.6);
30
+ }
31
+
32
+ .chat-bubble .notification {
33
+ position: absolute;
34
+ top: -5px;
35
+ right: -5px;
36
+ background: #ef4444;
37
+ color: white;
38
+ width: 20px;
39
+ height: 20px;
40
+ border-radius: 50%;
41
+ display: flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ font-size: 12px;
45
+ font-weight: bold;
46
+ }
47
+
48
+ .chat-window {
49
+ position: absolute;
50
+ bottom: 80px;
51
+ right: 0;
52
+ width: 380px;
53
+ height: 500px;
54
+ background: #1a1a2e;
55
+ border-radius: 12px;
56
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
57
+ display: none;
58
+ flex-direction: column;
59
+ border: 1px solid rgba(147, 51, 234, 0.3);
60
+ overflow: hidden;
61
+ }
62
+
63
+ .chat-window.open {
64
+ display: flex;
65
+ animation: slideUp 0.3s ease;
66
+ }
67
+
68
+ @keyframes slideUp {
69
+ from {
70
+ opacity: 0;
71
+ transform: translateY(20px);
72
+ }
73
+ to {
74
+ opacity: 1;
75
+ transform: translateY(0);
76
+ }
77
+ }
78
+
79
+ .chat-header {
80
+ background: linear-gradient(135deg, #9333ea, #3b82f6);
81
+ padding: 1rem;
82
+ display: flex;
83
+ justify-content: space-between;
84
+ align-items: center;
85
+ }
86
+
87
+ .chat-header h3 {
88
+ color: white;
89
+ font-size: 1.1rem;
90
+ font-weight: 600;
91
+ }
92
+
93
+ .chat-header .status {
94
+ display: flex;
95
+ align-items: center;
96
+ gap: 0.5rem;
97
+ color: white;
98
+ font-size: 0.875rem;
99
+ }
100
+
101
+ .status-dot {
102
+ width: 8px;
103
+ height: 8px;
104
+ background: #10b981;
105
+ border-radius: 50%;
106
+ animation: pulse 2s infinite;
107
+ }
108
+
109
+ @keyframes pulse {
110
+ 0%, 100% { opacity: 1; }
111
+ 50% { opacity: 0.5; }
112
+ }
113
+
114
+ .chat-messages {
115
+ flex: 1;
116
+ overflow-y: auto;
117
+ padding: 1rem;
118
+ background: #111827;
119
+ }
120
+
121
+ .message {
122
+ margin-bottom: 1rem;
123
+ display: flex;
124
+ gap: 0.5rem;
125
+ }
126
+
127
+ .message.bot {
128
+ flex-direction: row;
129
+ }
130
+
131
+ .message.user {
132
+ flex-direction: row-reverse;
133
+ }
134
+
135
+ .message-avatar {
136
+ width: 32px;
137
+ height: 32px;
138
+ border-radius: 50%;
139
+ flex-shrink: 0;
140
+ display: flex;
141
+ align-items: center;
142
+ justify-content: center;
143
+ font-size: 14px;
144
+ }
145
+
146
+ .message.bot .message-avatar {
147
+ background: linear-gradient(135deg, #9333ea, #3b82f6);
148
+ }
149
+
150
+ .message.user .message-avatar {
151
+ background: #374151;
152
+ }
153
+
154
+ .message-content {
155
+ max-width: 70%;
156
+ padding: 0.75rem;
157
+ border-radius: 12px;
158
+ font-size: 0.875rem;
159
+ line-height: 1.5;
160
+ }
161
+
162
+ .message.bot .message-content {
163
+ background: #374151;
164
+ color: white;
165
+ border-bottom-left-radius: 4px;
166
+ }
167
+
168
+ .message.user .message-content {
169
+ background: #9333ea;
170
+ color: white;
171
+ border-bottom-right-radius: 4px;
172
+ }
173
+
174
+ .typing-indicator {
175
+ display: none;
176
+ align-items: center;
177
+ gap: 0.25rem;
178
+ }
179
+
180
+ .typing-indicator.active {
181
+ display: flex;
182
+ }
183
+
184
+ .typing-dot {
185
+ width: 8px;
186
+ height: 8px;
187
+ background: #6b7280;
188
+ border-radius: 50%;
189
+ animation: typing 1.4s infinite;
190
+ }
191
+
192
+ .typing-dot:nth-child(2) {
193
+ animation-delay: 0.2s;
194
+ }
195
+
196
+ .typing-dot:nth-child(3) {
197
+ animation-delay: 0.4s;
198
+ }
199
+
200
+ @keyframes typing {
201
+ 0%, 60%, 100% {
202
+ transform: translateY(0);
203
+ }
204
+ 30% {
205
+ transform: translateY(-10px);
206
+ }
207
+ }
208
+
209
+ .chat-input {
210
+ padding: 1rem;
211
+ background: #1a1a2e;
212
+ border-top: 1px solid rgba(147, 51, 234, 0.2);
213
+ }
214
+
215
+ .chat-input-container {
216
+ display: flex;
217
+ gap: 0.5rem;
218
+ }
219
+
220
+ .chat-input input {
221
+ flex: 1;
222
+ padding: 0.75rem;
223
+ background: #374151;
224
+ border: 1px solid rgba(147, 51, 234, 0.3);
225
+ border-radius: 8px;
226
+ color: white;
227
+ font-size: 0.875rem;
228
+ outline: none;
229
+ transition: all 0.3s ease;
230
+ }
231
+
232
+ .chat-input input:focus {
233
+ border-color: #9333ea;
234
+ box-shadow: 0 0 0 2px rgba(147, 51, 234, 0.1);
235
+ }
236
+
237
+ .chat-input button {
238
+ padding: 0.75rem 1rem;
239
+ background: linear-gradient(135deg, #9333ea, #3b82f6);
240
+ color: white;
241
+ border: none;
242
+ border-radius: 8px;
243
+ cursor: pointer;
244
+ transition: all 0.3s ease;
245
+ display: flex;
246
+ align-items: center;
247
+ gap: 0.5rem;
248
+ }
249
+
250
+ .chat-input button:hover {
251
+ transform: translateY(-2px);
252
+ box-shadow: 0 4px 12px rgba(147, 51, 234, 0.4);
253
+ }
254
+
255
+ .chat-input button:disabled {
256
+ opacity: 0.5;
257
+ cursor: not-allowed;
258
+ }
259
+
260
+ @media (max-width: 640px) {
261
+ .chat-window {
262
+ width: calc(100vw - 40px);
263
+ right: -10px;
264
+ left: -10px;
265
+ }
266
+ }
267
+ </style>
268
+
269
+ <div class="chat-widget">
270
+ <div class="chat-bubble" onclick="toggleChat()">
271
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
272
+ <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
273
+ </svg>
274
+ <span class="notification">1</span>
275
+ </div>
276
+
277
+ <div class="chat-window" id="chatWindow">
278
+ <div class="chat-header">
279
+ <h3>NMDX Assistant</h3>
280
+ <div class="status">
281
+ <span class="status-dot"></span>
282
+ <span>Online</span>
283
+ </div>
284
+ </div>
285
+
286
+ <div class="chat-messages" id="chatMessages">
287
+ <div class="message bot">
288
+ <div class="message-avatar">🤖</div>
289
+ <div class="message-content">
290
+ Hi! Welcome to NMDX! 👋 I'm here to help you find the perfect service for your needs. What can I assist you with today?
291
+ </div>
292
+ </div>
293
+ </div>
294
+
295
+ <div class="typing-indicator" id="typingIndicator">
296
+ <div class="typing-dot"></div>
297
+ <div class="typing-dot"></div>
298
+ <div class="typing-dot"></div>
299
+ </div>
300
+
301
+ <div class="chat-input">
302
+ <div class="chat-input-container">
303
+ <input type="text" id="chatInput" placeholder="Type your message..." onkeypress="handleChatKeyPress(event)">
304
+ <button onclick="sendMessage()" id="sendBtn">
305
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
306
+ <line x1="22" y1="2" x2="11" y2="13"></line>
307
+ <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>
308
+ </svg>
309
+ Send
310
+ </button>
311
+ </div>
312
+ </div>
313
+ </div>
314
+ </div>
315
+ `;
316
+ }
317
+ }
318
+
319
+ // Global chat functions
320
+ window.toggleChat = function() {
321
+ const chatWindow = document.querySelector('custom-chat-widget').shadowRoot.getElementById('chatWindow');
322
+ chatWindow.classList.toggle('open');
323
+
324
+ // Remove notification when opened
325
+ if (chatWindow.classList.contains('open')) {
326
+ const notification = document.querySelector('custom-chat-widget').shadowRoot.querySelector('.notification');
327
+ notification.style.display = 'none';
328
+ }
329
+ };
330
+
331
+ window.sendMessage = function() {
332
+ const chatInput = document.querySelector('custom-chat-widget').shadowRoot.getElementById('chatInput');
333
+ const message = chatInput.value.trim();
334
+
335
+ if (!message) return;
336
+
337
+ const chatMessages = document.querySelector('custom-chat-widget').shadowRoot.getElementById('chatMessages');
338
+ const typingIndicator = document.querySelector('custom-chat-widget').shadowRoot.getElementById('typingIndicator');
339
+
340
+ // Add user message
341
+ const userMessage = document.createElement('div');
342
+ userMessage.className = 'message user';
343
+ userMessage.innerHTML = `
344
+ <div class="message-avatar">👤</div>
345
+ <div class="message-content">${message}</div>
346
+ `;
347
+ chatMessages.appendChild(userMessage);
348
+
349
+ // Clear input
350
+ chatInput.value = '';
351
+
352
+ // Show typing indicator
353
+ typingIndicator.classList.add('active');
354
+
355
+ // Simulate bot response
356
+ setTimeout(() => {
357
+ typingIndicator.classList.remove('active');
358
+
359
+ const botResponse = getBotResponse(message);
360
+ const botMessage = document.createElement('div');
361
+ botMessage.className = 'message bot';
362
+ botMessage.innerHTML = `
363
+ <div class="message-avatar">🤖</div>
364
+ <div class="message-content">${botResponse}</div>
365
+ `;
366
+ chatMessages.appendChild(botMessage);
367
+
368
+ // Scroll to bottom
369
+ chatMessages.scrollTop = chatMessages.scrollHeight;
370
+ }, 1500);
371
+
372
+ // Scroll to bottom
373
+ chatMessages.scrollTop = chatMessages.scrollHeight;
374
+ };
375
+
376
+ window.handleChatKeyPress = function(event) {
377
+ if (event.key === 'Enter') {
378
+ sendMessage();
379
+ }
380
+ };
381
+
382
+ function getBotResponse(message) {
383
+ const lowerMessage = message.toLowerCase();
384
+
385
+ if (lowerMessage.includes('telegram')) {
386
+ return "Our Telegram promotion services are top-notch! We can help you grow your channel with targeted campaigns, influencer partnerships, and community engagement strategies. Would you like to know more about our Telegram Ads or Community Management services?";
387
+ } else if (lowerMessage.includes('token') || lowerMessage.includes('crypto')) {
388
+ return "Great choice for token promotion! We offer comprehensive crypto marketing solutions including token launches, community building, and strategic partnerships. Our team has helped raise millions for various projects. What type of token are you promoting?";
389
+ } else if (lowerMessage.includes('app')) {
390
+ return "For app promotion and development, we've got you covered! From ASO optimization to viral marketing campaigns, we'll help your app reach millions of users. Are you looking to promote an existing app or develop a new one?";
391
+ } else if (lowerMessage.includes('youtube') || lowerMessage.includes('video')) {
392
+ return "YouTube promotion is our specialty! We can help you grow your channel, increase views, and build a loyal subscriber base through organic and paid strategies. What type of content do you create?";
393
+ } else if (lowerMessage.includes('price') || lowerMessage.includes('cost')) {
394
+ return "Our pricing varies based on your specific needs and goals. We offer customized packages for every budget. Would you like to schedule a free consultation to discuss your requirements and get a personalized quote?";
395
+ } else if (lowerMessage.includes('contact') || lowerMessage.includes('talk')) {
396
+ return "I'd be happy to connect you with our team! You can fill out the contact form below, or I can collect some basic information here to get started. Which service interests you most?";
397
+ } else {
398
+ return "I'd be happy to help you with our digital marketing services! We specialize in Telegram promotion, token marketing, app development, and much more. What specific service are you interested in learning about?";
399
+ }
400
+ }
401
+
402
+ customElements.define('custom-chat-widget', CustomChatWidget);
components/footer.js ADDED
@@ -0,0 +1,323 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ footer {
7
+ background: linear-gradient(to top, rgba(17, 24, 39, 0.95), transparent);
8
+ backdrop-filter: blur(10px);
9
+ border-top: 1px solid rgba(147, 51, 234, 0.2);
10
+ padding: 3rem 0 2rem;
11
+ margin-top: 4rem;
12
+ }
13
+
14
+ .footer-container {
15
+ max-width: 1280px;
16
+ margin: 0 auto;
17
+ padding: 0 1.5rem;
18
+ }
19
+
20
+ .footer-content {
21
+ display: grid;
22
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
23
+ gap: 2rem;
24
+ margin-bottom: 2rem;
25
+ }
26
+
27
+ .footer-section h3 {
28
+ font-size: 1.25rem;
29
+ font-weight: 700;
30
+ margin-bottom: 1rem;
31
+ background: linear-gradient(135deg, #9333ea, #3b82f6);
32
+ -webkit-background-clip: text;
33
+ -webkit-text-fill-color: transparent;
34
+ }
35
+
36
+ .footer-section p {
37
+ color: #9ca3af;
38
+ line-height: 1.6;
39
+ margin-bottom: 1rem;
40
+ }
41
+
42
+ .footer-links {
43
+ list-style: none;
44
+ padding: 0;
45
+ }
46
+
47
+ .footer-links li {
48
+ margin-bottom: 0.5rem;
49
+ }
50
+
51
+ .footer-links a {
52
+ color: #9ca3af;
53
+ text-decoration: none;
54
+ transition: all 0.3s ease;
55
+ display: inline-flex;
56
+ align-items: center;
57
+ gap: 0.5rem;
58
+ }
59
+
60
+ .footer-links a:hover {
61
+ color: #9333ea;
62
+ transform: translateX(5px);
63
+ }
64
+
65
+ .social-links {
66
+ display: flex;
67
+ gap: 1rem;
68
+ margin-top: 1rem;
69
+ }
70
+
71
+ .social-link {
72
+ width: 40px;
73
+ height: 40px;
74
+ background: rgba(147, 51, 234, 0.1);
75
+ border: 1px solid rgba(147, 51, 234, 0.3);
76
+ border-radius: 50%;
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: center;
80
+ color: #9333ea;
81
+ text-decoration: none;
82
+ transition: all 0.3s ease;
83
+ }
84
+
85
+ .social-link:hover {
86
+ background: rgba(147, 51, 234, 0.2);
87
+ border-color: #9333ea;
88
+ transform: translateY(-3px);
89
+ box-shadow: 0 5px 15px rgba(147, 51, 234, 0.3);
90
+ }
91
+
92
+ .footer-bottom {
93
+ padding-top: 2rem;
94
+ border-top: 1px solid rgba(147, 51, 234, 0.1);
95
+ text-align: center;
96
+ color: #6b7280;
97
+ display: flex;
98
+ justify-content: space-between;
99
+ align-items: center;
100
+ flex-wrap: wrap;
101
+ gap: 1rem;
102
+ }
103
+
104
+ .footer-bottom p {
105
+ margin: 0;
106
+ }
107
+
108
+ .footer-bottom-links {
109
+ display: flex;
110
+ gap: 2rem;
111
+ flex-wrap: wrap;
112
+ }
113
+
114
+ .footer-bottom-links a {
115
+ color: #9ca3af;
116
+ text-decoration: none;
117
+ transition: color 0.3s ease;
118
+ }
119
+
120
+ .footer-bottom-links a:hover {
121
+ color: #9333ea;
122
+ }
123
+
124
+ .cta-section {
125
+ background: linear-gradient(135deg, rgba(147, 51, 234, 0.1), rgba(59, 130, 246, 0.1));
126
+ border: 1px solid rgba(147, 51, 234, 0.2);
127
+ border-radius: 12px;
128
+ padding: 2rem;
129
+ text-align: center;
130
+ margin-bottom: 2rem;
131
+ }
132
+
133
+ .cta-section h3 {
134
+ font-size: 1.5rem;
135
+ margin-bottom: 1rem;
136
+ color: white;
137
+ }
138
+
139
+ .cta-section p {
140
+ color: #9ca3af;
141
+ margin-bottom: 1.5rem;
142
+ max-width: 600px;
143
+ margin-left: auto;
144
+ margin-right: auto;
145
+ }
146
+
147
+ .cta-buttons {
148
+ display: flex;
149
+ gap: 1rem;
150
+ justify-content: center;
151
+ flex-wrap: wrap;
152
+ }
153
+
154
+ .cta-btn {
155
+ padding: 0.75rem 2rem;
156
+ border-radius: 2rem;
157
+ text-decoration: none;
158
+ font-weight: 600;
159
+ transition: all 0.3s ease;
160
+ display: inline-flex;
161
+ align-items: center;
162
+ gap: 0.5rem;
163
+ }
164
+
165
+ .cta-btn-primary {
166
+ background: linear-gradient(135deg, #9333ea, #3b82f6);
167
+ color: white;
168
+ box-shadow: 0 4px 15px rgba(147, 51, 234, 0.3);
169
+ }
170
+
171
+ .cta-btn-primary:hover {
172
+ transform: translateY(-2px);
173
+ box-shadow: 0 6px 25px rgba(147, 51, 234, 0.5);
174
+ }
175
+
176
+ .cta-btn-secondary {
177
+ background: transparent;
178
+ color: #9333ea;
179
+ border: 2px solid #9333ea;
180
+ }
181
+
182
+ .cta-btn-secondary:hover {
183
+ background: rgba(147, 51, 234, 0.1);
184
+ transform: translateY(-2px);
185
+ }
186
+
187
+ @media (max-width: 768px) {
188
+ .footer-content {
189
+ grid-template-columns: 1fr;
190
+ }
191
+
192
+ .footer-bottom {
193
+ flex-direction: column;
194
+ text-align: center;
195
+ }
196
+
197
+ .footer-bottom-links {
198
+ justify-content: center;
199
+ }
200
+
201
+ .cta-buttons {
202
+ flex-direction: column;
203
+ align-items: center;
204
+ }
205
+
206
+ .cta-btn {
207
+ width: 100%;
208
+ max-width: 300px;
209
+ justify-content: center;
210
+ }
211
+ }
212
+ </style>
213
+
214
+ <footer>
215
+ <div class="footer-container">
216
+ <div class="cta-section">
217
+ <h3>Ready to Accelerate Your Growth?</h3>
218
+ <p>Let's discuss how our expert services can help you achieve your digital marketing goals. Schedule a free consultation today!</p>
219
+ <div class="cta-buttons">
220
+ <a href="#contact" class="cta-btn cta-btn-primary">
221
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
222
+ <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
223
+ </svg>
224
+ Start Conversation
225
+ </a>
226
+ <a href="#" class="cta-btn cta-btn-secondary">
227
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
228
+ <polyline points="16 18 22 12 16 6"></polyline>
229
+ <polyline points="8 6 2 12 8 18"></polyline>
230
+ </svg>
231
+ View Case Studies
232
+ </a>
233
+ </div>
234
+ </div>
235
+
236
+ <div class="footer-content">
237
+ <div class="footer-section">
238
+ <h3>NMDX</h3>
239
+ <p>Your trusted partner for digital growth acceleration. We specialize in cutting-edge marketing strategies that deliver real results.</p>
240
+ <div class="social-links">
241
+ <a href="#" class="social-link">
242
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
243
+ <path d="M23 3a10.9 10.9 0 01-3.14 1.53 4.48 4.48 0 00-7.86 3v1A10.66 10.66 0 013 4s-4 9 5 13a11.64 11.64 0 01-7 2c9 5 20 0 20-11.5a4.5 4.5 0 00-.08-.83A7.72 7.72 0 0023 3z"></path>
244
+ </svg>
245
+ </a>
246
+ <a href="#" class="social-link">
247
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
248
+ <path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2z"></path>
249
+ <circle cx="4" cy="4" r="2"></circle>
250
+ </svg>
251
+ </a>
252
+ <a href="#" class="social-link">
253
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
254
+ <rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect>
255
+ <path d="M16 11.37A4 4 0 1112.63 8 4 4 0 0116 11.37z"></path>
256
+ <line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line>
257
+ </svg>
258
+ </a>
259
+ <a href="#" class="social-link">
260
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
261
+ <path d="M22.54 6.42a2.78 2.78 0 00-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 00-1.94 2A29 29 0 001 12a29 29 0 00.46 5.58A2.78 2.78 0 003.4 19.54C5.12 20 12 20 12 20s6.88 0 8.6-.46a2.78 2.78 0 001.94-2A29 29 0 0023 12a29 29 0 00-.46-5.58zM9.75 15.02V8.98L15.5 12l-5.75 3.02z"></path>
262
+ </svg>
263
+ </a>
264
+ </div>
265
+ </div>
266
+
267
+ <div class="footer-section">
268
+ <h3>Services</h3>
269
+ <ul class="footer-links">
270
+ <li><a href="#services"><i data-feather="chevron-right" class="w-4 h-4"></i>Telegram Promotion</a></li>
271
+ <li><a href="#services"><i data-feather="chevron-right" class="w-4 h-4"></i>Token Promotion</a></li>
272
+ <li><a href="#services"><i data-feather="chevron-right" class="w-4 h-4"></i>App Development</a></li>
273
+ <li><a href="#services"><i data-feather="chevron-right" class="w-4 h-4"></i>YouTube Promotion</a></li>
274
+ <li><a href="#services"><i data-feather="chevron-right" class="w-4 h-4"></i>Community Management</a></li>
275
+ </ul>
276
+ </div>
277
+
278
+ <div class="footer-section">
279
+ <h3>Company</h3>
280
+ <ul class="footer-links">
281
+ <li><a href="#"><i data-feather="chevron-right" class="w-4 h-4"></i>About Us</a></li>
282
+ <li><a href="#"><i data-feather="chevron-right" class="w-4 h-4"></i>Case Studies</a></li>
283
+ <li><a href="#"><i data-feather="chevron-right" class="w-4 h-4"></i>Blog</a></li>
284
+ <li><a href="#"><i data-feather="chevron-right" class="w-4 h-4"></i>Careers</a></li>
285
+ <li><a href="#"><i data-feather="chevron-right" class="w-4 h-4"></i>Contact</a></li>
286
+ </ul>
287
+ </div>
288
+
289
+ <div class="footer-section">
290
+ <h3>Support</h3>
291
+ <ul class="footer-links">
292
+ <li><a href="#"><i data-feather="chevron-right" class="w-4 h-4"></i>Help Center</a></li>
293
+ <li><a href="#"><i data-feather="chevron-right" class="w-4 h-4"></i>Privacy Policy</a></li>
294
+ <li><a href="#"><i data-feather="chevron-right" class="w-4 h-4"></i>Terms of Service</a></li>
295
+ <li><a href="#contact"><i data-feather="chevron-right" class="w-4 h-4"></i>Contact Support</a></li>
296
+ <li><a href="#"><i data-feather="chevron-right" class="w-4 h-4"></i>FAQ</a></li>
297
+ </ul>
298
+ </div>
299
+ </div>
300
+
301
+ <div class="footer-bottom">
302
+ <p>&copy; 2024 NMDX. All rights reserved.</p>
303
+ <div class="footer-bottom-links">
304
+ <a href="#">Privacy</a>
305
+ <a href="#">Terms</a>
306
+ <a href="#">Sitemap</a>
307
+ </div>
308
+ </div>
309
+ </div>
310
+ </footer>
311
+ `;
312
+
313
+ // Initialize feather icons in shadow DOM
314
+ setTimeout(() => {
315
+ const icons = this.shadowRoot.querySelectorAll('[data-feather]');
316
+ icons.forEach(icon => {
317
+ feather.replace(icon);
318
+ });
319
+ }, 100);
320
+ }
321
+ }
322
+
323
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,210 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ nav {
7
+ position: fixed;
8
+ top: 0;
9
+ left: 0;
10
+ right: 0;
11
+ z-index: 1000;
12
+ backdrop-filter: blur(10px);
13
+ background: rgba(17, 24, 39, 0.8);
14
+ border-bottom: 1px solid rgba(147, 51, 234, 0.2);
15
+ transition: all 0.3s ease;
16
+ }
17
+
18
+ nav.scrolled {
19
+ background: rgba(17, 24, 39, 0.95);
20
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
21
+ }
22
+
23
+ .nav-container {
24
+ max-width: 1280px;
25
+ margin: 0 auto;
26
+ padding: 1rem 1.5rem;
27
+ display: flex;
28
+ justify-content: space-between;
29
+ align-items: center;
30
+ }
31
+
32
+ .logo {
33
+ font-size: 1.5rem;
34
+ font-weight: bold;
35
+ background: linear-gradient(135deg, #9333ea, #3b82f6);
36
+ -webkit-background-clip: text;
37
+ -webkit-text-fill-color: transparent;
38
+ text-decoration: none;
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 0.5rem;
42
+ }
43
+
44
+ .nav-links {
45
+ display: flex;
46
+ gap: 2rem;
47
+ align-items: center;
48
+ }
49
+
50
+ .nav-link {
51
+ color: #d1d5db;
52
+ text-decoration: none;
53
+ font-weight: 500;
54
+ transition: all 0.3s ease;
55
+ position: relative;
56
+ }
57
+
58
+ .nav-link:hover {
59
+ color: #9333ea;
60
+ }
61
+
62
+ .nav-link::after {
63
+ content: '';
64
+ position: absolute;
65
+ bottom: -5px;
66
+ left: 0;
67
+ width: 0;
68
+ height: 2px;
69
+ background: linear-gradient(90deg, #9333ea, #3b82f6);
70
+ transition: width 0.3s ease;
71
+ }
72
+
73
+ .nav-link:hover::after {
74
+ width: 100%;
75
+ }
76
+
77
+ .hire-btn {
78
+ background: linear-gradient(135deg, #9333ea, #3b82f6);
79
+ color: white;
80
+ padding: 0.5rem 1.5rem;
81
+ border-radius: 2rem;
82
+ text-decoration: none;
83
+ font-weight: 600;
84
+ transition: all 0.3s ease;
85
+ box-shadow: 0 4px 15px rgba(147, 51, 234, 0.3);
86
+ }
87
+
88
+ .hire-btn:hover {
89
+ transform: translateY(-2px);
90
+ box-shadow: 0 6px 25px rgba(147, 51, 234, 0.5);
91
+ }
92
+
93
+ .mobile-menu-btn {
94
+ display: none;
95
+ background: none;
96
+ border: none;
97
+ color: white;
98
+ cursor: pointer;
99
+ }
100
+
101
+ @media (max-width: 768px) {
102
+ .nav-links {
103
+ display: none;
104
+ }
105
+
106
+ .mobile-menu-btn {
107
+ display: block;
108
+ }
109
+
110
+ .mobile-menu {
111
+ position: fixed;
112
+ top: 0;
113
+ left: 0;
114
+ width: 80%;
115
+ height: 100vh;
116
+ background: rgba(17, 24, 39, 0.98);
117
+ backdrop-filter: blur(10px);
118
+ display: flex;
119
+ flex-direction: column;
120
+ padding: 5rem 2rem;
121
+ gap: 2rem;
122
+ transform: translateX(-100%);
123
+ transition: transform 0.3s ease;
124
+ z-index: 1001;
125
+ }
126
+
127
+ .mobile-menu.open {
128
+ transform: translateX(0);
129
+ }
130
+
131
+ .mobile-menu .nav-link {
132
+ font-size: 1.25rem;
133
+ }
134
+
135
+ .mobile-menu .hire-btn {
136
+ width: 100%;
137
+ text-align: center;
138
+ }
139
+
140
+ .mobile-menu-close {
141
+ position: absolute;
142
+ top: 1.5rem;
143
+ right: 1.5rem;
144
+ background: none;
145
+ border: none;
146
+ color: white;
147
+ cursor: pointer;
148
+ }
149
+ }
150
+ </style>
151
+
152
+ <nav id="navbar">
153
+ <div class="nav-container">
154
+ <a href="#" class="logo">
155
+ <span>🚀</span>
156
+ <span>NMDX</span>
157
+ </a>
158
+
159
+ <div class="nav-links">
160
+ <a href="#services" class="nav-link">Services</a>
161
+ <a href="#process" class="nav-link">Process</a>
162
+ <a href="#testimonials" class="nav-link">Testimonials</a>
163
+ <a href="#contact" class="nav-link">Contact</a>
164
+ <a href="#contact" class="hire-btn">Hire Me</a>
165
+ </div>
166
+
167
+ <button class="mobile-menu-btn" onclick="toggleMobileMenu()">
168
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
169
+ <line x1="3" y1="12" x2="21" y2="12"></line>
170
+ <line x1="3" y1="6" x2="21" y2="6"></line>
171
+ <line x1="3" y1="18" x2="21" y2="18"></line>
172
+ </svg>
173
+ </button>
174
+ </div>
175
+ </nav>
176
+
177
+ <div class="mobile-menu" id="mobileMenu">
178
+ <button class="mobile-menu-close" onclick="toggleMobileMenu()">
179
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
180
+ <line x1="18" y1="6" x2="6" y2="18"></line>
181
+ <line x1="6" y1="6" x2="18" y2="18"></line>
182
+ </svg>
183
+ </button>
184
+ <a href="#services" class="nav-link" onclick="toggleMobileMenu()">Services</a>
185
+ <a href="#process" class="nav-link" onclick="toggleMobileMenu()">Process</a>
186
+ <a href="#testimonials" class="nav-link" onclick="toggleMobileMenu()">Testimonials</a>
187
+ <a href="#contact" class="nav-link" onclick="toggleMobileMenu()">Contact</a>
188
+ <a href="#contact" class="hire-btn" onclick="toggleMobileMenu()">Hire Me</a>
189
+ </div>
190
+ `;
191
+
192
+ // Add scroll effect
193
+ const navbar = this.shadowRoot.getElementById('navbar');
194
+ window.addEventListener('scroll', () => {
195
+ if (window.scrollY > 50) {
196
+ navbar.classList.add('scrolled');
197
+ } else {
198
+ navbar.classList.remove('scrolled');
199
+ }
200
+ });
201
+ }
202
+ }
203
+
204
+ // Global function for mobile menu toggle
205
+ window.toggleMobileMenu = function() {
206
+ const mobileMenu = document.querySelector('custom-navbar').shadowRoot.getElementById('mobileMenu');
207
+ mobileMenu.classList.toggle('open');
208
+ };
209
+
210
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,497 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </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>NMDX - Digital Growth Accelerator</title>
7
+ <meta name="description" content="Expert digital marketing and crypto promotion services. Telegram promotion, token marketing, app growth, and more.">
8
+ <meta property="og:title" content="NMDX - Digital Growth Accelerator">
9
+ <meta property="og:description" content="Expert digital marketing and crypto promotion services">
10
+ <meta property="og:image" content="http://static.photos/technology/1200x630/1">
11
+ <link rel="icon" type="image/x-icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🚀</text></svg>">
12
+
13
+ <script src="https://cdn.tailwindcss.com"></script>
14
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
15
+ <script src="https://unpkg.com/feather-icons"></script>
16
+ <script src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js" defer></script>
17
+
18
+ <link rel="stylesheet" href="style.css">
19
+ <script src="components/navbar.js"></script>
20
+ <script src="components/chat-widget.js"></script>
21
+ <script src="components/footer.js"></script>
22
+ </head>
23
+ <body class="bg-gray-950 text-white overflow-x-hidden">
24
+ <!-- Animated Background -->
25
+ <div class="fixed inset-0 z-0">
26
+ <div class="absolute inset-0 bg-gradient-to-br from-purple-900/20 via-gray-900 to-blue-900/20"></div>
27
+ <canvas id="particleCanvas" class="absolute inset-0"></canvas>
28
+ <div class="absolute inset-0 bg-black/50"></div>
29
+ </div>
30
+
31
+ <!-- Navigation -->
32
+ <custom-navbar></custom-navbar>
33
+
34
+ <!-- Main Content -->
35
+ <main class="relative z-10">
36
+ <!-- Hero Section -->
37
+ <section class="min-h-screen flex items-center justify-center relative">
38
+ <div class="container mx-auto px-6 text-center">
39
+ <h1 class="text-6xl md:text-8xl font-bold mb-6 bg-gradient-to-r from-purple-400 via-pink-500 to-blue-500 bg-clip-text text-transparent animate-pulse">
40
+ NMDX
41
+ </h1>
42
+ <p class="text-2xl md:text-4xl mb-4 text-gray-300">Digital Growth Accelerator</p>
43
+ <p class="text-lg md:text-xl mb-8 text-gray-400 max-w-3xl mx-auto">
44
+ Transform your digital presence with cutting-edge promotion strategies. From crypto tokens to apps, we amplify your reach and drive explosive growth.
45
+ </p>
46
+ <div class="flex flex-col sm:flex-row gap-4 justify-center">
47
+ <a href="#services" class="px-8 py-4 bg-gradient-to-r from-purple-600 to-blue-600 rounded-full font-semibold text-lg hover:scale-105 transition-transform">
48
+ Explore Services
49
+ </a>
50
+ <a href="#contact" class="px-8 py-4 border-2 border-purple-500 rounded-full font-semibold text-lg hover:bg-purple-500/20 transition-all">
51
+ Hire Me Now
52
+ </a>
53
+ </div>
54
+ </div>
55
+ <div class="absolute bottom-10 left-1/2 transform -translate-x-1/2 animate-bounce">
56
+ <i data-feather="chevron-down" class="w-8 h-8"></i>
57
+ </div>
58
+ </section>
59
+
60
+ <!-- Services Grid Section -->
61
+ <section id="services" class="py-20">
62
+ <div class="container mx-auto px-6">
63
+ <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 bg-gradient-to-r from-purple-400 to-blue-400 bg-clip-text text-transparent">
64
+ Our Services
65
+ </h2>
66
+
67
+ <!-- Filter Tags -->
68
+ <div class="flex flex-wrap justify-center gap-3 mb-12">
69
+ <button class="filter-tag px-6 py-2 rounded-full bg-purple-600/20 border border-purple-500 hover:bg-purple-600/40 transition-all" data-filter="all">All</button>
70
+ <button class="filter-tag px-6 py-2 rounded-full bg-purple-600/20 border border-purple-500 hover:bg-purple-600/40 transition-all" data-filter="crypto">Crypto</button>
71
+ <button class="filter-tag px-6 py-2 rounded-full bg-purple-600/20 border border-purple-500 hover:bg-purple-600/40 transition-all" data-filter="marketing">Marketing</button>
72
+ <button class="filter-tag px-6 py-2 rounded-full bg-purple-600/20 border border-purple-500 hover:bg-purple-600/40 transition-all" data-filter="development">Development</button>
73
+ </div>
74
+
75
+ <!-- Services Grid -->
76
+ <div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
77
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="crypto">
78
+ <div class="text-purple-400 mb-4">
79
+ <i data-feather="trending-up" class="w-12 h-12"></i>
80
+ </div>
81
+ <h3 class="text-2xl font-bold mb-3">Telegram Promotion</h3>
82
+ <p class="text-gray-400 mb-4">Boost your Telegram channel with targeted promotion strategies and organic growth tactics.</p>
83
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('telegram')">View Case Study →</button>
84
+ </div>
85
+
86
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="crypto">
87
+ <div class="text-purple-400 mb-4">
88
+ <i data-feather="coin" class="w-12 h-12"></i>
89
+ </div>
90
+ <h3 class="text-2xl font-bold mb-3">Token Promotion</h3>
91
+ <p class="text-gray-400 mb-4">Strategic token promotion campaigns to increase visibility and investor engagement.</p>
92
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('token')">View Case Study →</button>
93
+ </div>
94
+
95
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="marketing">
96
+ <div class="text-purple-400 mb-4">
97
+ <i data-feather="message-circle" class="w-12 h-12"></i>
98
+ </div>
99
+ <h3 class="text-2xl font-bold mb-3">Telegram Ads</h3>
100
+ <p class="text-gray-400 mb-4">Professional Telegram advertising campaigns with precise targeting and high ROI.</p>
101
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('ads')">View Case Study →</button>
102
+ </div>
103
+
104
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="marketing">
105
+ <div class="text-purple-400 mb-4">
106
+ <i data-feather="users" class="w-12 h-12"></i>
107
+ </div>
108
+ <h3 class="text-2xl font-bold mb-3">Community Management</h3>
109
+ <p class="text-gray-400 mb-4">Build and manage thriving online communities around your brand or project.</p>
110
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('community')">View Case Study →</button>
111
+ </div>
112
+
113
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="development">
114
+ <div class="text-purple-400 mb-4">
115
+ <i data-feather="smartphone" class="w-12 h-12"></i>
116
+ </div>
117
+ <h3 class="text-2xl font-bold mb-3">App Promotion</h3>
118
+ <p class="text-gray-400 mb-4">Comprehensive app marketing strategies to boost downloads and user engagement.</p>
119
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('app')">View Case Study →</button>
120
+ </div>
121
+
122
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="development">
123
+ <div class="text-purple-400 mb-4">
124
+ <i data-feather="code" class="w-12 h-12"></i>
125
+ </div>
126
+ <h3 class="text-2xl font-bold mb-3">App Development</h3>
127
+ <p class="text-gray-400 mb-4">Custom app development with cutting-edge technologies and innovative features.</p>
128
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('development')">View Case Study →</button>
129
+ </div>
130
+
131
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="marketing">
132
+ <div class="text-purple-400 mb-4">
133
+ <i data-feather="music" class="w-12 h-12"></i>
134
+ </div>
135
+ <h3 class="text-2xl font-bold mb-3">Music Promotion</h3>
136
+ <p class="text-gray-400 mb-4">Amplify your music reach across platforms and grow your fan base organically.</p>
137
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('music')">View Case Study →</button>
138
+ </div>
139
+
140
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="marketing">
141
+ <div class="text-purple-400 mb-4">
142
+ <i data-feather="file-text" class="w-12 h-12"></i>
143
+ </div>
144
+ <h3 class="text-2xl font-bold mb-3">Press Releases</h3>
145
+ <p class="text-gray-400 mb-4">Professional press release creation and distribution to maximize media coverage.</p>
146
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('press')">View Case Study →</button>
147
+ </div>
148
+
149
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="marketing">
150
+ <div class="text-purple-400 mb-4">
151
+ <i data-feather="edit-3" class="w-12 h-12"></i>
152
+ </div>
153
+ <h3 class="text-2xl font-bold mb-3">Content Writing</h3>
154
+ <p class="text-gray-400 mb-4">Engaging content creation that resonates with your audience and drives conversions.</p>
155
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('content')">View Case Study →</button>
156
+ </div>
157
+
158
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="marketing">
159
+ <div class="text-purple-400 mb-4">
160
+ <i data-feather="search" class="w-12 h-12"></i>
161
+ </div>
162
+ <h3 class="text-2xl font-bold mb-3">SEO / GEO</h3>
163
+ <p class="text-gray-400 mb-4">Advanced SEO and GEO strategies to dominate search rankings and local markets.</p>
164
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('seo')">View Case Study →</button>
165
+ </div>
166
+
167
+ <div class="service-card bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30 hover:border-purple-500/60 transition-all hover:scale-105" data-category="marketing">
168
+ <div class="text-purple-400 mb-4">
169
+ <i data-feather="youtube" class="w-12 h-12"></i>
170
+ </div>
171
+ <h3 class="text-2xl font-bold mb-3">YouTube Promotion</h3>
172
+ <p class="text-gray-400 mb-4">Grow your YouTube channel with targeted promotion and content optimization.</p>
173
+ <button class="text-purple-400 hover:text-purple-300 font-semibold" onclick="openCaseStudy('youtube')">View Case Study →</button>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ </section>
178
+
179
+ <!-- Process Timeline -->
180
+ <section class="py-20 bg-black/30">
181
+ <div class="container mx-auto px-6">
182
+ <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 bg-gradient-to-r from-purple-400 to-blue-400 bg-clip-text text-transparent">
183
+ Our Process
184
+ </h2>
185
+ <div class="relative">
186
+ <div class="absolute left-1/2 transform -translate-x-1/2 h-full w-1 bg-gradient-to-b from-purple-500 to-blue-500"></div>
187
+
188
+ <div class="space-y-12">
189
+ <div class="flex items-center justify-end md:justify-center">
190
+ <div class="timeline-item bg-gradient-to-r from-purple-900/50 to-transparent p-8 rounded-lg max-w-md ml-auto md:ml-0 md:text-right">
191
+ <div class="absolute left-1/2 transform -translate-x-1/2 w-8 h-8 bg-purple-500 rounded-full border-4 border-gray-950"></div>
192
+ <h3 class="text-2xl font-bold mb-2">Discovery & Strategy</h3>
193
+ <p class="text-gray-400">We analyze your goals, target audience, and competitive landscape to create a customized growth strategy.</p>
194
+ </div>
195
+ </div>
196
+
197
+ <div class="flex items-center justify-start md:justify-center">
198
+ <div class="timeline-item bg-gradient-to-l from-blue-900/50 to-transparent p-8 rounded-lg max-w-md mr-auto md:mr-0 md:text-left">
199
+ <div class="absolute left-1/2 transform -translate-x-1/2 w-8 h-8 bg-blue-500 rounded-full border-4 border-gray-950"></div>
200
+ <h3 class="text-2xl font-bold mb-2">Campaign Development</h3>
201
+ <p class="text-gray-400">Our team crafts compelling campaigns tailored to your brand voice and objectives.</p>
202
+ </div>
203
+ </div>
204
+
205
+ <div class="flex items-center justify-end md:justify-center">
206
+ <div class="timeline-item bg-gradient-to-r from-purple-900/50 to-transparent p-8 rounded-lg max-w-md ml-auto md:ml-0 md:text-right">
207
+ <div class="absolute left-1/2 transform -translate-x-1/2 w-8 h-8 bg-purple-500 rounded-full border-4 border-gray-950"></div>
208
+ <h3 class="text-2xl font-bold mb-2">Execution & Launch</h3>
209
+ <p class="text-gray-400">We implement and launch your campaigns across multiple channels with precision timing.</p>
210
+ </div>
211
+ </div>
212
+
213
+ <div class="flex items-center justify-start md:justify-center">
214
+ <div class="timeline-item bg-gradient-to-l from-blue-900/50 to-transparent p-8 rounded-lg max-w-md mr-auto md:mr-0 md:text-left">
215
+ <div class="absolute left-1/2 transform -translate-x-1/2 w-8 h-8 bg-blue-500 rounded-full border-4 border-gray-950"></div>
216
+ <h3 class="text-2xl font-bold mb-2">Optimization & Growth</h3>
217
+ <p class="text-gray-400">Continuous monitoring and optimization to ensure maximum ROI and sustainable growth.</p>
218
+ </div>
219
+ </div>
220
+ </div>
221
+ </div>
222
+ </div>
223
+ </section>
224
+
225
+ <!-- Skills & Tools -->
226
+ <section class="py-20">
227
+ <div class="container mx-auto px-6">
228
+ <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 bg-gradient-to-r from-purple-400 to-blue-400 bg-clip-text text-transparent">
229
+ Expertise & Tools
230
+ </h2>
231
+
232
+ <div class="grid md:grid-cols-2 gap-12">
233
+ <div>
234
+ <h3 class="text-2xl font-bold mb-6 text-purple-400">Core Skills</h3>
235
+ <div class="space-y-4">
236
+ <div class="skill-bar">
237
+ <div class="flex justify-between mb-2">
238
+ <span>Digital Marketing</span>
239
+ <span>95%</span>
240
+ </div>
241
+ <div class="w-full bg-gray-700 rounded-full h-3">
242
+ <div class="bg-gradient-to-r from-purple-500 to-blue-500 h-3 rounded-full" style="width: 95%"></div>
243
+ </div>
244
+ </div>
245
+ <div class="skill-bar">
246
+ <div class="flex justify-between mb-2">
247
+ <span>Crypto Promotion</span>
248
+ <span>90%</span>
249
+ </div>
250
+ <div class="w-full bg-gray-700 rounded-full h-3">
251
+ <div class="bg-gradient-to-r from-purple-500 to-blue-500 h-3 rounded-full" style="width: 90%"></div>
252
+ </div>
253
+ </div>
254
+ <div class="skill-bar">
255
+ <div class="flex justify-between mb-2">
256
+ <span>App Development</span>
257
+ <span>85%</span>
258
+ </div>
259
+ <div class="w-full bg-gray-700 rounded-full h-3">
260
+ <div class="bg-gradient-to-r from-purple-500 to-blue-500 h-3 rounded-full" style="width: 85%"></div>
261
+ </div>
262
+ </div>
263
+ <div class="skill-bar">
264
+ <div class="flex justify-between mb-2">
265
+ <span>Community Building</span>
266
+ <span>92%</span>
267
+ </div>
268
+ <div class="w-full bg-gray-700 rounded-full h-3">
269
+ <div class="bg-gradient-to-r from-purple-500 to-blue-500 h-3 rounded-full" style="width: 92%"></div>
270
+ </div>
271
+ </div>
272
+ </div>
273
+ </div>
274
+
275
+ <div>
276
+ <h3 class="text-2xl font-bold mb-6 text-blue-400">Tools & Platforms</h3>
277
+ <div class="grid grid-cols-4 gap-6">
278
+ <div class="text-center">
279
+ <div class="bg-gray-800 p-4 rounded-lg hover:bg-purple-900/30 transition-all">
280
+ <i data-feather="trending-up" class="w-8 h-8 mx-auto mb-2 text-purple-400"></i>
281
+ <p class="text-sm">Analytics</p>
282
+ </div>
283
+ </div>
284
+ <div class="text-center">
285
+ <div class="bg-gray-800 p-4 rounded-lg hover:bg-purple-900/30 transition-all">
286
+ <i data-feather="message-circle" class="w-8 h-8 mx-auto mb-2 text-blue-400"></i>
287
+ <p class="text-sm">Social Media</p>
288
+ </div>
289
+ </div>
290
+ <div class="text-center">
291
+ <div class="bg-gray-800 p-4 rounded-lg hover:bg-purple-900/30 transition-all">
292
+ <i data-feather="code" class="w-8 h-8 mx-auto mb-2 text-green-400"></i>
293
+ <p class="text-sm">Development</p>
294
+ </div>
295
+ </div>
296
+ <div class="text-center">
297
+ <div class="bg-gray-800 p-4 rounded-lg hover:bg-purple-900/30 transition-all">
298
+ <i data-feather="bar-chart-2" class="w-8 h-8 mx-auto mb-2 text-yellow-400"></i>
299
+ <p class="text-sm">SEO Tools</p>
300
+ </div>
301
+ </div>
302
+ <div class="text-center">
303
+ <div class="bg-gray-800 p-4 rounded-lg hover:bg-purple-900/30 transition-all">
304
+ <i data-feather="mail" class="w-8 h-8 mx-auto mb-2 text-red-400"></i>
305
+ <p class="text-sm">Email Marketing</p>
306
+ </div>
307
+ </div>
308
+ <div class="text-center">
309
+ <div class="bg-gray-800 p-4 rounded-lg hover:bg-purple-900/30 transition-all">
310
+ <i data-feather="video" class="w-8 h-8 mx-auto mb-2 text-pink-400"></i>
311
+ <p class="text-sm">Video Tools</p>
312
+ </div>
313
+ </div>
314
+ <div class="text-center">
315
+ <div class="bg-gray-800 p-4 rounded-lg hover:bg-purple-900/30 transition-all">
316
+ <i data-feather="pen-tool" class="w-8 h-8 mx-auto mb-2 text-indigo-400"></i>
317
+ <p class="text-sm">Design</p>
318
+ </div>
319
+ </div>
320
+ <div class="text-center">
321
+ <div class="bg-gray-800 p-4 rounded-lg hover:bg-purple-900/30 transition-all">
322
+ <i data-feather="database" class="w-8 h-8 mx-auto mb-2 text-cyan-400"></i>
323
+ <p class="text-sm">Data Analysis</p>
324
+ </div>
325
+ </div>
326
+ </div>
327
+ </div>
328
+ </div>
329
+ </div>
330
+ </section>
331
+
332
+ <!-- Testimonials -->
333
+ <section class="py-20 bg-black/30">
334
+ <div class="container mx-auto px-6">
335
+ <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 bg-gradient-to-r from-purple-400 to-blue-400 bg-clip-text text-transparent">
336
+ Client Success Stories
337
+ </h2>
338
+
339
+ <div class="testimonials-slider relative overflow-hidden">
340
+ <div class="flex transition-transform duration-500" id="testimonialsContainer">
341
+ <div class="testimonial-item min-w-full px-4">
342
+ <div class="max-w-3xl mx-auto bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30">
343
+ <div class="flex items-center mb-4">
344
+ <img src="http://static.photos/people/100x100/1" alt="Client" class="w-16 h-16 rounded-full mr-4">
345
+ <div>
346
+ <h4 class="font-bold text-lg">Sarah Chen</h4>
347
+ <p class="text-gray-400">CEO, CryptoStart</p>
348
+ </div>
349
+ </div>
350
+ <div class="flex mb-4">
351
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
352
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
353
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
354
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
355
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
356
+ </div>
357
+ <p class="text-gray-300 text-lg italic">"NMDX transformed our token launch. We achieved 500% growth in community engagement and successfully raised $2M in funding."</p>
358
+ </div>
359
+ </div>
360
+
361
+ <div class="testimonial-item min-w-full px-4">
362
+ <div class="max-w-3xl mx-auto bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30">
363
+ <div class="flex items-center mb-4">
364
+ <img src="http://static.photos/people/100x100/2" alt="Client" class="w-16 h-16 rounded-full mr-4">
365
+ <div>
366
+ <h4 class="font-bold text-lg">Mike Rodriguez</h4>
367
+ <p class="text-gray-400">Founder, AppFlow</p>
368
+ </div>
369
+ </div>
370
+ <div class="flex mb-4">
371
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
372
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
373
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
374
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
375
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
376
+ </div>
377
+ <p class="text-gray-300 text-lg italic">"Our app downloads increased by 300% in just 3 months. Their Telegram promotion strategy was game-changing for our growth."</p>
378
+ </div>
379
+ </div>
380
+
381
+ <div class="testimonial-item min-w-full px-4">
382
+ <div class="max-w-3xl mx-auto bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30">
383
+ <div class="flex items-center mb-4">
384
+ <img src="http://static.photos/people/100x100/3" alt="Client" class="w-16 h-16 rounded-full mr-4">
385
+ <div>
386
+ <h4 class="font-bold text-lg">Emily Zhang</h4>
387
+ <p class="text-gray-400">Marketing Director, MusicHub</p>
388
+ </div>
389
+ </div>
390
+ <div class="flex mb-4">
391
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
392
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
393
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
394
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
395
+ <i data-feather="star" class="w-5 h-5 text-yellow-400 fill-current"></i>
396
+ </div>
397
+ <p class="text-gray-300 text-lg italic">"The YouTube promotion campaign exceeded our expectations. 1M+ views and our subscriber count grew 10x. Absolutely incredible service!"</p>
398
+ </div>
399
+ </div>
400
+ </div>
401
+
402
+ <div class="flex justify-center mt-6 gap-2">
403
+ <button class="w-3 h-3 rounded-full bg-purple-500" onclick="goToSlide(0)"></button>
404
+ <button class="w-3 h-3 rounded-full bg-gray-600" onclick="goToSlide(1)"></button>
405
+ <button class="w-3 h-3 rounded-full bg-gray-600" onclick="goToSlide(2)"></button>
406
+ </div>
407
+ </div>
408
+ </div>
409
+ </section>
410
+
411
+ <!-- Contact Section -->
412
+ <section id="contact" class="py-20">
413
+ <div class="container mx-auto px-6">
414
+ <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 bg-gradient-to-r from-purple-400 to-blue-400 bg-clip-text text-transparent">
415
+ Let's Work Together
416
+ </h2>
417
+
418
+ <div class="max-w-4xl mx-auto">
419
+ <div class="bg-gradient-to-br from-purple-900/30 to-blue-900/30 rounded-2xl p-8 border border-purple-500/30">
420
+ <form id="contactForm" class="space-y-6">
421
+ <div class="grid md:grid-cols-2 gap-6">
422
+ <div>
423
+ <label class="block text-sm font-medium mb-2">Name</label>
424
+ <input type="text" required class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg focus:border-purple-500 focus:outline-none transition-colors" placeholder="Your Name">
425
+ </div>
426
+ <div>
427
+ <label class="block text-sm font-medium mb-2">Email</label>
428
+ <input type="email" required class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg focus:border-purple-500 focus:outline-none transition-colors" placeholder="your@email.com">
429
+ </div>
430
+ </div>
431
+
432
+ <div>
433
+ <label class="block text-sm font-medium mb-2">Service Interest</label>
434
+ <select class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg focus:border-purple-500 focus:outline-none transition-colors">
435
+ <option>Select a Service</option>
436
+ <option>Telegram Promotion</option>
437
+ <option>Token Promotion</option>
438
+ <option>Telegram Ads</option>
439
+ <option>Community Management</option>
440
+ <option>App Promotion</option>
441
+ <option>App Development</option>
442
+ <option>Music Promotion</option>
443
+ <option>Press Releases</option>
444
+ <option>Content Writing</option>
445
+ <option>SEO / GEO</option>
446
+ <option>YouTube Promotion</option>
447
+ </select>
448
+ </div>
449
+
450
+ <div>
451
+ <label class="block text-sm font-medium mb-2">Message</label>
452
+ <textarea rows="5" required class="w-full px-4 py-3 bg-gray-800/50 border border-gray-700 rounded-lg focus:border-purple-500 focus:outline-none transition-colors" placeholder="Tell us about your project..."></textarea>
453
+ </div>
454
+
455
+ <button type="submit" class="w-full py-4 bg-gradient-to-r from-purple-600 to-blue-600 rounded-lg font-semibold text-lg hover:from-purple-700 hover:to-blue-700 transition-all">
456
+ Send Message
457
+ </button>
458
+ </form>
459
+ </div>
460
+ </div>
461
+ </div>
462
+ </section>
463
+ </main>
464
+
465
+ <!-- Footer -->
466
+ <custom-footer></custom-footer>
467
+
468
+ <!-- Case Study Modal -->
469
+ <div id="caseStudyModal" class="fixed inset-0 z-50 hidden bg-black/80 flex items-center justify-center p-6">
470
+ <div class="bg-gradient-to-br from-gray-900 to-gray-950 rounded-2xl max-w-4xl w-full max-h-[90vh] overflow-y-auto border border-purple-500/30">
471
+ <div class="p-8">
472
+ <div class="flex justify-between items-center mb-6">
473
+ <h3 class="text-3xl font-bold" id="modalTitle">Case Study</h3>
474
+ <button onclick="closeCaseStudy()" class="text-gray-400 hover:text-white">
475
+ <i data-feather="x" class="w-6 h-6"></i>
476
+ </button>
477
+ </div>
478
+ <div id="modalContent" class="space-y-6">
479
+ <!-- Content will be dynamically inserted -->
480
+ </div>
481
+ </div>
482
+ </div>
483
+ </div>
484
+
485
+ <!-- Success Message -->
486
+ <div id="successMessage" class="fixed top-20 right-6 z-50 bg-green-600 text-white px-6 py-4 rounded-lg shadow-lg transform translate-x-full transition-transform">
487
+ <div class="flex items-center">
488
+ <i data-feather="check-circle" class="w-5 h-5 mr-2"></i>
489
+ <span>Message sent successfully!</span>
490
+ </div>
491
+ </div>
492
+
493
+ <script src="script.js"></script>
494
+ <script>feather.replace();</script>
495
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
496
+ </body>
497
+ </html>
script.js ADDED
@@ -0,0 +1,345 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Particle animation
2
+ const canvas = document.getElementById('particleCanvas');
3
+ const ctx = canvas.getContext('2d');
4
+
5
+ canvas.width = window.innerWidth;
6
+ canvas.height = window.innerHeight;
7
+
8
+ const particles = [];
9
+ const particleCount = 100;
10
+
11
+ class Particle {
12
+ constructor() {
13
+ this.x = Math.random() * canvas.width;
14
+ this.y = Math.random() * canvas.height;
15
+ this.size = Math.random() * 3 + 1;
16
+ this.speedX = Math.random() * 2 - 1;
17
+ this.speedY = Math.random() * 2 - 1;
18
+ this.opacity = Math.random() * 0.5 + 0.2;
19
+ }
20
+
21
+ update() {
22
+ this.x += this.speedX;
23
+ this.y += this.speedY;
24
+
25
+ if (this.x > canvas.width) this.x = 0;
26
+ if (this.x < 0) this.x = canvas.width;
27
+ if (this.y > canvas.height) this.y = 0;
28
+ if (this.y < 0) this.y = canvas.height;
29
+ }
30
+
31
+ draw() {
32
+ ctx.fillStyle = `rgba(147, 51, 234, ${this.opacity})`;
33
+ ctx.beginPath();
34
+ ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
35
+ ctx.fill();
36
+ }
37
+ }
38
+
39
+ function initParticles() {
40
+ for (let i = 0; i < particleCount; i++) {
41
+ particles.push(new Particle());
42
+ }
43
+ }
44
+
45
+ function animateParticles() {
46
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
47
+
48
+ particles.forEach(particle => {
49
+ particle.update();
50
+ particle.draw();
51
+ });
52
+
53
+ // Draw connections
54
+ particles.forEach((a, index) => {
55
+ particles.slice(index + 1).forEach(b => {
56
+ const distance = Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
57
+ if (distance < 100) {
58
+ ctx.strokeStyle = `rgba(147, 51, 234, ${0.1 * (1 - distance / 100)})`;
59
+ ctx.lineWidth = 1;
60
+ ctx.beginPath();
61
+ ctx.moveTo(a.x, a.y);
62
+ ctx.lineTo(b.x, b.y);
63
+ ctx.stroke();
64
+ }
65
+ });
66
+ });
67
+
68
+ requestAnimationFrame(animateParticles);
69
+ }
70
+
71
+ initParticles();
72
+ animateParticles();
73
+
74
+ // Resize canvas on window resize
75
+ window.addEventListener('resize', () => {
76
+ canvas.width = window.innerWidth;
77
+ canvas.height = window.innerHeight;
78
+ });
79
+
80
+ // Service filtering
81
+ const filterTags = document.querySelectorAll('.filter-tag');
82
+ const serviceCards = document.querySelectorAll('.service-card');
83
+
84
+ filterTags.forEach(tag => {
85
+ tag.addEventListener('click', () => {
86
+ const filter = tag.dataset.filter;
87
+
88
+ // Update active state
89
+ filterTags.forEach(t => t.classList.remove('bg-purple-600', 'text-white'));
90
+ tag.classList.add('bg-purple-600', 'text-white');
91
+
92
+ // Filter cards
93
+ serviceCards.forEach(card => {
94
+ if (filter === 'all' || card.dataset.category === filter) {
95
+ card.style.display = 'block';
96
+ setTimeout(() => card.classList.add('visible'), 100);
97
+ } else {
98
+ card.style.display = 'none';
99
+ card.classList.remove('visible');
100
+ }
101
+ });
102
+ });
103
+ });
104
+
105
+ // Timeline animation on scroll
106
+ const observerOptions = {
107
+ threshold: 0.1,
108
+ rootMargin: '0px 0px -100px 0px'
109
+ };
110
+
111
+ const observer = new IntersectionObserver((entries) => {
112
+ entries.forEach(entry => {
113
+ if (entry.isIntersecting) {
114
+ entry.target.classList.add('visible');
115
+ }
116
+ });
117
+ }, observerOptions);
118
+
119
+ // Observe elements for animation
120
+ document.querySelectorAll('.timeline-item, .service-card, .skill-bar').forEach(el => {
121
+ observer.observe(el);
122
+ });
123
+
124
+ // Testimonial slider
125
+ let currentSlide = 0;
126
+ const testimonialsContainer = document.getElementById('testimonialsContainer');
127
+ const totalSlides = 3;
128
+
129
+ function goToSlide(slideIndex) {
130
+ currentSlide = slideIndex;
131
+ testimonialsContainer.style.transform = `translateX(-${slideIndex * 100}%)`;
132
+
133
+ // Update dots
134
+ document.querySelectorAll('.testimonials-slider button').forEach((dot, index) => {
135
+ if (index === slideIndex) {
136
+ dot.classList.remove('bg-gray-600');
137
+ dot.classList.add('bg-purple-500');
138
+ } else {
139
+ dot.classList.remove('bg-purple-500');
140
+ dot.classList.add('bg-gray-600');
141
+ }
142
+ });
143
+ }
144
+
145
+ // Auto-advance testimonials
146
+ setInterval(() => {
147
+ currentSlide = (currentSlide + 1) % totalSlides;
148
+ goToSlide(currentSlide);
149
+ }, 5000);
150
+
151
+ // Case study modal
152
+ function openCaseStudy(type) {
153
+ const modal = document.getElementById('caseStudyModal');
154
+ const modalTitle = document.getElementById('modalTitle');
155
+ const modalContent = document.getElementById('modalContent');
156
+
157
+ const caseStudies = {
158
+ telegram: {
159
+ title: 'Telegram Promotion Success',
160
+ content: `
161
+ <div class="space-y-6">
162
+ <img src="http://static.photos/technology/800x400/1" alt="Telegram Promotion" class="w-full rounded-lg">
163
+ <div>
164
+ <h4 class="text-xl font-bold mb-2">Challenge</h4>
165
+ <p class="text-gray-300">A crypto startup needed to rapidly grow their Telegram community for their upcoming token launch.</p>
166
+ </div>
167
+ <div>
168
+ <h4 class="text-xl font-bold mb-2">Solution</h4>
169
+ <p class="text-gray-300">We implemented a multi-channel promotion strategy combining targeted ads, influencer partnerships, and community engagement campaigns.</p>
170
+ </div>
171
+ <div>
172
+ <h4 class="text-xl font-bold mb-2">Results</h4>
173
+ <ul class="text-gray-300 space-y-2">
174
+ <li>• 50,000+ new members in 30 days</li>
175
+ <li>• 300% increase in engagement rate</li>
176
+ <li>• Successful $2M token raise</li>
177
+ </ul>
178
+ </div>
179
+ <a href="#" class="inline-flex items-center px-6 py-3 bg-purple-600 rounded-lg hover:bg-purple-700 transition-colors">
180
+ <i data-feather="download" class="w-5 h-5 mr-2"></i>
181
+ Download Full Case Study (PDF)
182
+ </a>
183
+ </div>
184
+ `
185
+ },
186
+ token: {
187
+ title: 'Token Promotion Campaign',
188
+ content: `
189
+ <div class="space-y-6">
190
+ <img src="http://static.photos/technology/800x400/2" alt="Token Promotion" class="w-full rounded-lg">
191
+ <div>
192
+ <h4 class="text-xl font-bold mb-2">Challenge</h4>
193
+ <p class="text-gray-300">DeFi project needed to increase token visibility and attract investors during bear market conditions.</p>
194
+ </div>
195
+ <div>
196
+ <h4 class="text-xl font-bold mb-2">Solution</h4>
197
+ <p class="text-gray-300">Comprehensive promotion strategy including AMAs, strategic partnerships, and targeted social media campaigns.</p>
198
+ </div>
199
+ <div>
200
+ <h4 class="text-xl font-bold mb-2">Results</h4>
201
+ <ul class="text-gray-300 space-y-2">
202
+ <li>• 200% increase in trading volume</li>
203
+ <li>• Featured on major crypto news sites</li>
204
+ <li>• 1500% ROI on promotion spend</li>
205
+ </ul>
206
+ </div>
207
+ <a href="#" class="inline-flex items-center px-6 py-3 bg-purple-600 rounded-lg hover:bg-purple-700 transition-colors">
208
+ <i data-feather="download" class="w-5 h-5 mr-2"></i>
209
+ Download Full Case Study (PDF)
210
+ </a>
211
+ </div>
212
+ `
213
+ }
214
+ };
215
+
216
+ const caseStudy = caseStudies[type] || caseStudies.telegram;
217
+ modalTitle.textContent = caseStudy.title;
218
+ modalContent.innerHTML = caseStudy.content;
219
+ modal.classList.remove('hidden');
220
+
221
+ // Reinitialize feather icons in modal
222
+ feather.replace();
223
+ }
224
+
225
+ function closeCaseStudy() {
226
+ document.getElementById('caseStudyModal').classList.add('hidden');
227
+ }
228
+
229
+ // Contact form submission
230
+ document.getElementById('contactForm').addEventListener('submit', async (e) => {
231
+ e.preventDefault();
232
+
233
+ const formData = new FormData(e.target);
234
+ const data = Object.fromEntries(formData);
235
+
236
+ // Show loading state
237
+ const submitBtn = e.target.querySelector('button[type="submit"]');
238
+ const originalText = submitBtn.textContent;
239
+ submitBtn.innerHTML = '<span class="loading"></span> Sending...';
240
+ submitBtn.disabled = true;
241
+
242
+ try {
243
+ // Simulate API call
244
+ await new Promise(resolve => setTimeout(resolve, 2000));
245
+
246
+ // Show success message
247
+ const successMsg = document.getElementById('successMessage');
248
+ successMsg.style.transform = 'translateX(0)';
249
+
250
+ // Reset form
251
+ e.target.reset();
252
+
253
+ // Hide success message after 3 seconds
254
+ setTimeout(() => {
255
+ successMsg.style.transform = 'translateX(100%)';
256
+ }, 3000);
257
+
258
+ } catch (error) {
259
+ console.error('Error:', error);
260
+ alert('Error sending message. Please try again.');
261
+ } finally {
262
+ // Reset button
263
+ submitBtn.textContent = originalText;
264
+ submitBtn.disabled = false;
265
+ }
266
+ });
267
+
268
+ // Smooth scroll for navigation links
269
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
270
+ anchor.addEventListener('click', function (e) {
271
+ e.preventDefault();
272
+ const target = document.querySelector(this.getAttribute('href'));
273
+ if (target) {
274
+ target.scrollIntoView({
275
+ behavior: 'smooth',
276
+ block: 'start'
277
+ });
278
+ }
279
+ });
280
+ });
281
+
282
+ // Parallax scrolling effect
283
+ window.addEventListener('scroll', () => {
284
+ const scrolled = window.pageYOffset;
285
+ const parallaxElements = document.querySelectorAll('.parallax');
286
+
287
+ parallaxElements.forEach(el => {
288
+ const speed = el.dataset.speed || 0.5;
289
+ el.style.transform = `translateY(${scrolled * speed}px)`;
290
+ });
291
+ });
292
+
293
+ // Add reveal animation to elements on scroll
294
+ const revealElements = document.querySelectorAll('.service-card, .timeline-item');
295
+ const revealOnScroll = () => {
296
+ revealElements.forEach(element => {
297
+ const elementTop = element.getBoundingClientRect().top;
298
+ const elementBottom = element.getBoundingClientRect().bottom;
299
+
300
+ if (elementTop < window.innerHeight && elementBottom > 0) {
301
+ element.classList.add('visible');
302
+ }
303
+ });
304
+ };
305
+
306
+ window.addEventListener('scroll', revealOnScroll);
307
+ revealOnScroll(); // Initial check
308
+
309
+ // Dynamic skill bar animation
310
+ const skillBars = document.querySelectorAll('.skill-bar');
311
+ const animateSkillBars = () => {
312
+ skillBars.forEach(bar => {
313
+ const rect = bar.getBoundingClientRect();
314
+ if (rect.top < window.innerHeight && rect.bottom > 0) {
315
+ const progressBar = bar.querySelector('.bg-gradient-to-r');
316
+ const width = progressBar.style.width || '0%';
317
+ if (width === '0%') {
318
+ progressBar.style.width = progressBar.parentElement.previousElementSibling.querySelector('span:last-child').textContent;
319
+ }
320
+ }
321
+ });
322
+ };
323
+
324
+ window.addEventListener('scroll', animateSkillBars);
325
+ animateSkillBars();
326
+
327
+ // Keyboard navigation support
328
+ document.addEventListener('keydown', (e) => {
329
+ if (e.key === 'Escape') {
330
+ closeCaseStudy();
331
+ }
332
+ });
333
+
334
+ // Performance optimization - Debounce scroll events
335
+ let scrollTimeout;
336
+ window.addEventListener('scroll', () => {
337
+ if (scrollTimeout) {
338
+ window.cancelAnimationFrame(scrollTimeout);
339
+ }
340
+ scrollTimeout = window.requestAnimationFrame(() => {
341
+ // Scroll-based animations here
342
+ revealOnScroll();
343
+ animateSkillBars();
344
+ });
345
+ });
style.css CHANGED
@@ -1,28 +1,245 @@
1
- body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Custom animations and styles */
2
+ @keyframes float {
3
+ 0%, 100% { transform: translateY(0px); }
4
+ 50% { transform: translateY(-20px); }
5
  }
6
 
7
+ @keyframes pulse-glow {
8
+ 0%, 100% { box-shadow: 0 0 20px rgba(147, 51, 234, 0.5); }
9
+ 50% { box-shadow: 0 0 40px rgba(147, 51, 234, 0.8); }
10
  }
11
 
12
+ .animate-float {
13
+ animation: float 6s ease-in-out infinite;
 
 
 
14
  }
15
 
16
+ .animate-pulse-glow {
17
+ animation: pulse-glow 2s ease-in-out infinite;
 
 
 
 
18
  }
19
 
20
+ /* Smooth scrolling */
21
+ html {
22
+ scroll-behavior: smooth;
23
  }
24
+
25
+ /* Custom scrollbar */
26
+ ::-webkit-scrollbar {
27
+ width: 10px;
28
+ }
29
+
30
+ ::-webkit-scrollbar-track {
31
+ background: #1a1a2e;
32
+ }
33
+
34
+ ::-webkit-scrollbar-thumb {
35
+ background: linear-gradient(to bottom, #9333ea, #3b82f6);
36
+ border-radius: 5px;
37
+ }
38
+
39
+ ::-webkit-scrollbar-thumb:hover {
40
+ background: linear-gradient(to bottom, #a855f7, #60a5fa);
41
+ }
42
+
43
+ /* Timeline animations */
44
+ .timeline-item {
45
+ position: relative;
46
+ opacity: 0;
47
+ transform: translateY(50px);
48
+ transition: all 0.6s ease;
49
+ }
50
+
51
+ .timeline-item.visible {
52
+ opacity: 1;
53
+ transform: translateY(0);
54
+ }
55
+
56
+ /* Service card hover effects */
57
+ .service-card {
58
+ opacity: 0;
59
+ transform: translateY(30px);
60
+ transition: all 0.6s ease;
61
+ }
62
+
63
+ .service-card.visible {
64
+ opacity: 1;
65
+ transform: translateY(0);
66
+ }
67
+
68
+ .service-card:hover {
69
+ box-shadow: 0 20px 40px rgba(147, 51, 234, 0.3);
70
+ }
71
+
72
+ /* Skill bar animation */
73
+ .skill-bar .bg-gradient-to-r {
74
+ width: 0;
75
+ transition: width 2s ease;
76
+ }
77
+
78
+ .skill-bar.visible .bg-gradient-to-r {
79
+ width: var(--skill-width);
80
+ }
81
+
82
+ /* Particle canvas */
83
+ #particleCanvas {
84
+ position: absolute;
85
+ top: 0;
86
+ left: 0;
87
+ width: 100%;
88
+ height: 100%;
89
+ z-index: 1;
90
+ }
91
+
92
+ /* Glass morphism effect */
93
+ .glass {
94
+ background: rgba(255, 255, 255, 0.05);
95
+ backdrop-filter: blur(10px);
96
+ border: 1px solid rgba(255, 255, 255, 0.1);
97
+ }
98
+
99
+ /* Text gradient animation */
100
+ @keyframes gradient-shift {
101
+ 0% { background-position: 0% 50%; }
102
+ 50% { background-position: 100% 50%; }
103
+ 100% { background-position: 0% 50%; }
104
+ }
105
+
106
+ .animate-gradient {
107
+ background-size: 200% 200%;
108
+ animation: gradient-shift 3s ease infinite;
109
+ }
110
+
111
+ /* Loading animation */
112
+ .loading {
113
+ display: inline-block;
114
+ width: 20px;
115
+ height: 20px;
116
+ border: 3px solid rgba(255, 255, 255, 0.3);
117
+ border-radius: 50%;
118
+ border-top-color: #9333ea;
119
+ animation: spin 1s ease-in-out infinite;
120
+ }
121
+
122
+ @keyframes spin {
123
+ to { transform: rotate(360deg); }
124
+ }
125
+
126
+ /* Focus states for accessibility */
127
+ button:focus-visible,
128
+ input:focus-visible,
129
+ textarea:focus-visible,
130
+ select:focus-visible {
131
+ outline: 2px solid #9333ea;
132
+ outline-offset: 2px;
133
+ }
134
+
135
+ /* Mobile menu animation */
136
+ .mobile-menu {
137
+ transform: translateX(-100%);
138
+ transition: transform 0.3s ease;
139
+ }
140
+
141
+ .mobile-menu.open {
142
+ transform: translateX(0);
143
+ }
144
+
145
+ /* Chat widget styles */
146
+ .chat-widget {
147
+ position: fixed;
148
+ bottom: 20px;
149
+ right: 20px;
150
+ z-index: 1000;
151
+ }
152
+
153
+ .chat-bubble {
154
+ width: 60px;
155
+ height: 60px;
156
+ background: linear-gradient(135deg, #9333ea, #3b82f6);
157
+ border-radius: 50%;
158
+ display: flex;
159
+ align-items: center;
160
+ justify-content: center;
161
+ cursor: pointer;
162
+ box-shadow: 0 4px 20px rgba(147, 51, 234, 0.4);
163
+ transition: all 0.3s ease;
164
+ }
165
+
166
+ .chat-bubble:hover {
167
+ transform: scale(1.1);
168
+ box-shadow: 0 6px 30px rgba(147, 51, 234, 0.6);
169
+ }
170
+
171
+ .chat-window {
172
+ position: absolute;
173
+ bottom: 80px;
174
+ right: 0;
175
+ width: 380px;
176
+ height: 500px;
177
+ background: #1a1a2e;
178
+ border-radius: 12px;
179
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
180
+ display: none;
181
+ flex-direction: column;
182
+ border: 1px solid rgba(147, 51, 234, 0.3);
183
+ }
184
+
185
+ .chat-window.open {
186
+ display: flex;
187
+ }
188
+
189
+ /* Custom checkbox and radio buttons */
190
+ input[type="checkbox"],
191
+ input[type="radio"] {
192
+ appearance: none;
193
+ width: 20px;
194
+ height: 20px;
195
+ border: 2px solid #9333ea;
196
+ border-radius: 4px;
197
+ cursor: pointer;
198
+ position: relative;
199
+ transition: all 0.3s ease;
200
+ }
201
+
202
+ input[type="checkbox"]:checked,
203
+ input[type="radio"]:checked {
204
+ background: #9333ea;
205
+ }
206
+
207
+ input[type="checkbox"]:checked::after,
208
+ input[type="radio"]:checked::after {
209
+ content: '✓';
210
+ position: absolute;
211
+ color: white;
212
+ font-size: 14px;
213
+ top: 50%;
214
+ left: 50%;
215
+ transform: translate(-50%, -50%);
216
+ }
217
+
218
+ /* Responsive adjustments */
219
+ @media (max-width: 768px) {
220
+ .chat-window {
221
+ width: 100%;
222
+ right: -10px;
223
+ left: -10px;
224
+ }
225
+
226
+ .timeline-item {
227
+ margin-left: 20px;
228
+ }
229
+
230
+ .service-card {
231
+ margin-bottom: 20px;
232
+ }
233
+ }
234
+
235
+ /* Parallax effect */
236
+ .parallax {
237
+ will-change: transform;
238
+ }
239
+
240
+ /* Neon glow effect */
241
+ .neon-glow {
242
+ text-shadow: 0 0 10px rgba(147, 51, 234, 0.8),
243
+ 0 0 20px rgba(147, 51, 234, 0.6),
244
+ 0 0 30px rgba(147, 51, 234, 0.4);
245
+ }