Spaces:
Running
Create a modern, high-end UX/UI designer portfolio website with the following features and requirements:
Browse filesDesign & 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
- README.md +8 -5
- components/chat-widget.js +402 -0
- components/footer.js +323 -0
- components/navbar.js +210 -0
- index.html +497 -19
- script.js +345 -0
- style.css +236 -19
|
@@ -1,10 +1,13 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
| 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).
|
|
@@ -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);
|
|
@@ -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>© 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);
|
|
@@ -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);
|
|
@@ -1,19 +1,497 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
</
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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>
|
|
@@ -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 |
+
});
|
|
@@ -1,28 +1,245 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
|
|
|
| 4 |
}
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
}
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
font-size: 15px;
|
| 14 |
-
margin-bottom: 10px;
|
| 15 |
-
margin-top: 5px;
|
| 16 |
}
|
| 17 |
|
| 18 |
-
.
|
| 19 |
-
|
| 20 |
-
margin: 0 auto;
|
| 21 |
-
padding: 16px;
|
| 22 |
-
border: 1px solid lightgray;
|
| 23 |
-
border-radius: 16px;
|
| 24 |
}
|
| 25 |
|
| 26 |
-
|
| 27 |
-
|
|
|
|
| 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 |
+
}
|