snikhilesh commited on
Commit
6943658
Β·
verified Β·
1 Parent(s): 53d5e2b

need more latest graphics and animations, I want this to be rich and professional

Browse files
Files changed (7) hide show
  1. README.md +8 -4
  2. components/footer.js +51 -0
  3. components/navbar.js +87 -0
  4. components/particles.js +99 -0
  5. index.html +206 -19
  6. script.js +72 -0
  7. style.css +99 -18
README.md CHANGED
@@ -1,10 +1,14 @@
1
  ---
2
- title: Analytics Visionary The Data Dynamo
3
- emoji: πŸš€
4
  colorFrom: red
5
- colorTo: blue
 
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
1
  ---
2
+ title: Analytics Visionary - The Data Dynamo πŸš€
 
3
  colorFrom: red
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).
14
+
components/footer.js ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ footer {
7
+ background: #1a202c;
8
+ color: white;
9
+ padding: 3rem 2rem;
10
+ text-align: center;
11
+ }
12
+ .footer-content {
13
+ max-width: 1200px;
14
+ margin: 0 auto;
15
+ display: flex;
16
+ flex-direction: column;
17
+ align-items: center;
18
+ }
19
+ .social-links {
20
+ display: flex;
21
+ gap: 1.5rem;
22
+ margin-bottom: 1.5rem;
23
+ }
24
+ .social-links a {
25
+ color: white;
26
+ transition: color 0.2s;
27
+ }
28
+ .social-links a:hover {
29
+ color: #818cf8;
30
+ }
31
+ .copyright {
32
+ margin-top: 1.5rem;
33
+ color: #a0aec0;
34
+ font-size: 0.875rem;
35
+ }
36
+ </style>
37
+ <footer>
38
+ <div class="footer-content">
39
+ <div class="social-links">
40
+ <a href="#" aria-label="LinkedIn"><i data-feather="linkedin"></i></a>
41
+ <a href="#" aria-label="GitHub"><i data-feather="github"></i></a>
42
+ <a href="#" aria-label="Twitter"><i data-feather="twitter"></i></a>
43
+ <a href="mailto:[email protected]" aria-label="Email"><i data-feather="mail"></i></a>
44
+ </div>
45
+ <p class="copyright">&copy; ${new Date().getFullYear()} Nikhilesh Siddanthi. All rights reserved.</p>
46
+ </div>
47
+ </footer>
48
+ `;
49
+ }
50
+ }
51
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ nav {
7
+ background: white;
8
+ padding: 1.5rem;
9
+ display: flex;
10
+ justify-content: space-between;
11
+ align-items: center;
12
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
13
+ position: sticky;
14
+ top: 0;
15
+ z-index: 100;
16
+ }
17
+ .logo {
18
+ font-weight: bold;
19
+ font-size: 1.25rem;
20
+ color: #4f46e5;
21
+ display: flex;
22
+ align-items: center;
23
+ }
24
+ .logo i {
25
+ margin-right: 0.5rem;
26
+ }
27
+ ul {
28
+ display: flex;
29
+ gap: 1.5rem;
30
+ list-style: none;
31
+ margin: 0;
32
+ padding: 0;
33
+ }
34
+ a {
35
+ color: #4b5563;
36
+ text-decoration: none;
37
+ font-weight: 500;
38
+ padding: 0.5rem 0;
39
+ position: relative;
40
+ transition: color 0.2s;
41
+ }
42
+ a:hover {
43
+ color: #4f46e5;
44
+ }
45
+ a::after {
46
+ content: '';
47
+ position: absolute;
48
+ bottom: 0;
49
+ left: 0;
50
+ width: 0;
51
+ height: 2px;
52
+ background-color: #4f46e5;
53
+ transition: width 0.3s;
54
+ }
55
+ a:hover::after {
56
+ width: 100%;
57
+ }
58
+ .mobile-menu {
59
+ display: none;
60
+ }
61
+ @media (max-width: 768px) {
62
+ ul {
63
+ display: none;
64
+ }
65
+ .mobile-menu {
66
+ display: block;
67
+ }
68
+ }
69
+ </style>
70
+ <nav>
71
+ <a href="#" class="logo">
72
+ <i data-feather="user"></i>
73
+ <span>Nikhilesh</span>
74
+ </a>
75
+ <ul>
76
+ <li><a href="#about">About</a></li>
77
+ <li><a href="#experience">Experience</a></li>
78
+ <li><a href="#contact">Contact</a></li>
79
+ </ul>
80
+ <button class="mobile-menu" aria-label="Menu">
81
+ <i data-feather="menu"></i>
82
+ </button>
83
+ </nav>
84
+ `;
85
+ }
86
+ }
87
+ customElements.define('custom-navbar', CustomNavbar);
components/particles.js ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class ParticleBackground extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: absolute;
9
+ width: 100%;
10
+ height: 100%;
11
+ top: 0;
12
+ left: 0;
13
+ z-index: 0;
14
+ overflow: hidden;
15
+ }
16
+ canvas {
17
+ display: block;
18
+ vertical-align: bottom;
19
+ }
20
+ </style>
21
+ <canvas id="particles-canvas"></canvas>
22
+ `;
23
+
24
+ const canvas = this.shadowRoot.getElementById('particles-canvas');
25
+ const ctx = canvas.getContext('2d');
26
+ canvas.width = this.clientWidth;
27
+ canvas.height = this.clientHeight;
28
+
29
+ // Particle system
30
+ const particles = [];
31
+ const particleCount = Math.floor(canvas.width * canvas.height / 10000);
32
+
33
+ // Particle constructor
34
+ function Particle() {
35
+ this.x = Math.random() * canvas.width;
36
+ this.y = Math.random() * canvas.height;
37
+ this.vx = -0.5 + Math.random();
38
+ this.vy = -0.5 + Math.random();
39
+ this.radius = 1 + Math.random() * 2;
40
+ this.color = `rgba(103, 78, 234, ${Math.random() * 0.6})`;
41
+ }
42
+
43
+ // Initialize particles
44
+ for (let i = 0; i < particleCount; i++) {
45
+ particles.push(new Particle());
46
+ }
47
+
48
+ function animate() {
49
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
50
+
51
+ for (let i = 0; i < particles.length; i++) {
52
+ const p = particles[i];
53
+
54
+ // Update position
55
+ p.x += p.vx;
56
+ p.y += p.vy;
57
+
58
+ // Wrap around screen
59
+ if (p.x < 0) p.x = canvas.width;
60
+ if (p.x > canvas.width) p.x = 0;
61
+ if (p.y < 0) p.y = canvas.height;
62
+ if (p.y > canvas.height) p.y = 0;
63
+
64
+ // Draw particle
65
+ ctx.beginPath();
66
+ ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);
67
+ ctx.fillStyle = p.color;
68
+ ctx.fill();
69
+
70
+ // Draw connections
71
+ for (let j = i + 1; j < particles.length; j++) {
72
+ const p2 = particles[j];
73
+ const distance = Math.sqrt(Math.pow(p.x - p2.x, 2) + Math.pow(p.y - p2.y, 2));
74
+
75
+ if (distance < 100) {
76
+ ctx.beginPath();
77
+ ctx.strokeStyle = `rgba(103, 78, 234, ${1 - distance / 100})`;
78
+ ctx.lineWidth = 0.5;
79
+ ctx.moveTo(p.x, p.y);
80
+ ctx.lineTo(p2.x, p2.y);
81
+ ctx.stroke();
82
+ }
83
+ }
84
+ }
85
+
86
+ requestAnimationFrame(animate);
87
+ }
88
+
89
+ // Handle resize
90
+ window.addEventListener('resize', () => {
91
+ canvas.width = this.clientWidth;
92
+ canvas.height = this.clientHeight;
93
+ });
94
+
95
+ animate();
96
+ }
97
+ }
98
+
99
+ customElements.define('particle-background', ParticleBackground);
index.html CHANGED
@@ -1,19 +1,206 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Nikhilesh Siddanthi | Senior Business Analyst</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.net.min.js"></script>
12
+ </head>
13
+ <body class="bg-gray-50 text-gray-800 relative overflow-x-hidden">
14
+ <particle-background></particle-background>
15
+ <custom-navbar></custom-navbar>
16
+ <main class="container mx-auto px-4 py-8">
17
+ <!-- Hero Section -->
18
+ <section id="hero" class="relative overflow-hidden rounded-2xl shadow-2xl mb-16 gradient-bg">
19
+ <div class="absolute inset-0 bg-black opacity-30"></div>
20
+ <div class="relative z-10 px-8 py-20 md:py-32 text-white">
21
+ <div class="max-w-4xl mx-auto text-center">
22
+ <div class="floating inline-block mb-8">
23
+ <div class="w-32 h-32 md:w-40 md:h-40 mx-auto rounded-full overflow-hidden border-4 border-white/30 glow">
24
+ <img src="http://static.photos/technology/200x200/42" alt="Profile" class="w-full h-full object-cover">
25
+ </div>
26
+ </div>
27
+ <h1 class="text-5xl md:text-7xl font-bold mb-4 bg-clip-text text-transparent bg-gradient-to-r from-white to-indigo-200">Nikhilesh Siddanthi</h1>
28
+ <h2 class="text-2xl md:text-3xl font-semibold mb-6">Senior Business Analyst</h2>
29
+ <p class="text-xl mb-8">Product Owner with 10+ years experience in agile methodologies, product development, and strategy.</p>
30
+ <div class="flex flex-wrap gap-4">
31
+ <a href="#contact" class="bg-white text-indigo-600 px-6 py-3 rounded-lg font-medium hover:bg-gray-100 transition">Contact Me</a>
32
+ <a href="#experience" class="border-2 border-white text-white px-6 py-3 rounded-lg font-medium hover:bg-white hover:text-indigo-600 transition">View Experience</a>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </section>
37
+ <!-- About Section -->
38
+ <section id="about" class="mb-20">
39
+ <div class="grid md:grid-cols-3 gap-8">
40
+ <div class="md:col-span-2">
41
+ <h2 class="text-4xl font-bold mb-8 pb-2 animated-underline inline-block">About Me</h2>
42
+ <p class="text-lg mb-4">Senior Business Analyst with extensive experience in healthcare operations, product management, and agile methodologies. Proven track record of delivering complex software solutions while ensuring regulatory compliance.</p>
43
+ <p class="text-lg mb-4">Skilled in leading cross-functional teams, conducting market research, and managing stakeholder relationships to achieve objectives and key results (OKRs).</p>
44
+ <p class="text-lg">Proficient in modern product management tools and technologies including JIRA, Azure DevOps, Dynamics 365, and various analytics platforms.</p>
45
+ </div>
46
+ <div class="bg-white p-8 rounded-2xl shadow-xl card-3d glow">
47
+ <div class="mb-6">
48
+ <h3 class="text-xl font-semibold mb-3">Contact</h3>
49
+ <div class="space-y-2">
50
+ <p class="flex items-center"><i data-feather="mail" class="mr-2"></i> [email protected]</p>
51
+ <p class="flex items-center"><i data-feather="phone" class="mr-2"></i> +91 9866172756</p>
52
+ <p class="flex items-center"><i data-feather="map-pin" class="mr-2"></i> Hyderabad, TS</p>
53
+ </div>
54
+ </div>
55
+ <div>
56
+ <h3 class="text-xl font-semibold mb-3">Skills</h3>
57
+ <div class="flex flex-wrap gap-2">
58
+ <span class="bg-gray-100 px-3 py-1 rounded-full text-sm">Agile Methodologies</span>
59
+ <span class="bg-gray-100 px-3 py-1 rounded-full text-sm">Scrum</span>
60
+ <span class="bg-gray-100 px-3 py-1 rounded-full text-sm">Kanban</span>
61
+ <span class="bg-gray-100 px-3 py-1 rounded-full text-sm">Dynamics 365</span>
62
+ <span class="bg-gray-100 px-3 py-1 rounded-full text-sm">Product Strategy</span>
63
+ <span class="bg-gray-100 px-3 py-1 rounded-full text-sm">Roadmapping</span>
64
+ <span class="bg-gray-100 px-3 py-1 rounded-full text-sm">User Testing</span>
65
+ <span class="bg-gray-100 px-3 py-1 rounded-full text-sm">Market Research</span>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </section>
71
+ <!-- Experience Section -->
72
+ <section id="experience" class="mb-20">
73
+ <h2 class="text-4xl font-bold mb-8 pb-2 animated-underline inline-block">Professional Experience</h2>
74
+ <div class="space-y-8">
75
+ <!-- Current Role -->
76
+ <div class="bg-white p-8 rounded-2xl shadow-xl card-3d glow">
77
+ <div class="flex justify-between items-start">
78
+ <div>
79
+ <h3 class="text-xl font-bold">Senior Business Analyst</h3>
80
+ <p class="text-indigo-600 font-medium">Space Inventive | June 2024 - Present</p>
81
+ </div>
82
+ <span class="bg-green-100 text-green-800 px-3 py-1 rounded-full text-sm">Current</span>
83
+ </div>
84
+ <div class="mt-4">
85
+ <h4 class="font-semibold mb-2">Novartis - China CDE Submission Software (Jul 2024 – Nov 2024)</h4>
86
+ <ul class="list-disc pl-5 space-y-2">
87
+ <li>Regulatory submission platform designed to streamline and automate CDE (China Center for Drug Evaluation) dossier preparation</li>
88
+ <li>Gathered and translated regulatory and business requirements into functional specifications using JIRA and Confluence</li>
89
+ <li>Prepared FRA, IQ, OQ, PQ documents and supported validation activities ensuring compliance with GxP and 21 CFR Part 11</li>
90
+ </ul>
91
+ </div>
92
+ </div>
93
+
94
+ <!-- Previous Roles -->
95
+ <div class="bg-white p-6 rounded-xl shadow-md">
96
+ <div class="flex justify-between">
97
+ <div>
98
+ <h3 class="text-xl font-bold">Senior Business Analyst</h3>
99
+ <p class="text-indigo-600 font-medium">Realpage | April 2023 - December 2023</p>
100
+ </div>
101
+ </div>
102
+ <div class="mt-4">
103
+ <ul class="list-disc pl-5 space-y-2">
104
+ <li>Supported health insurance operations with in-depth knowledge of plans, benefits, and administration</li>
105
+ <li>Utilized Azure DevOps to manage project lifecycles and maintain repository hygiene</li>
106
+ <li>Implemented a DMS to streamline document filing, retrieval, and collaboration</li>
107
+ </ul>
108
+ </div>
109
+ </div>
110
+
111
+ <!-- More roles would go here -->
112
+ </div>
113
+ </section>
114
+ <!-- Tools & Education -->
115
+ <section class="grid md:grid-cols-2 gap-8 mb-20">
116
+ <div class="bg-white p-8 rounded-2xl shadow-xl card-3d glow">
117
+ <h2 class="text-2xl font-bold mb-4">Tools & Technologies</h2>
118
+ <div class="grid grid-cols-2 gap-4">
119
+ <div>
120
+ <h3 class="font-semibold mb-2">Product Management</h3>
121
+ <ul class="space-y-1">
122
+ <li class="flex items-center"><i data-feather="check" class="mr-2 h-4"></i> JIRA</li>
123
+ <li class="flex items-center"><i data-feather="check" class="mr-2 h-4"></i> Azure DevOps</li>
124
+ <li class="flex items-center"><i data-feather="check" class="mr-2 h-4"></i> Roadmunk</li>
125
+ <li class="flex items-center"><i data-feather="check" class="mr-2 h-4"></i> Aha!</li>
126
+ </ul>
127
+ </div>
128
+ <div>
129
+ <h3 class="font-semibold mb-2">Analytics</h3>
130
+ <ul class="space-y-1">
131
+ <li class="flex items-center"><i data-feather="check" class="mr-2 h-4"></i> Mixpanel</li>
132
+ <li class="flex items-center"><i data-feather="check" class="mr-2 h-4"></i> Google Analytics</li>
133
+ <li class="flex items-center"><i data-feather="check" class="mr-2 h-4"></i> Power BI</li>
134
+ </ul>
135
+ </div>
136
+ </div>
137
+ </div>
138
+
139
+ <div class="bg-white p-6 rounded-xl shadow-md">
140
+ <h2 class="text-2xl font-bold mb-4">Education & Certifications</h2>
141
+ <div class="space-y-4">
142
+ <div>
143
+ <h3 class="font-semibold">BTECH</h3>
144
+ <p>Amity University | 2012</p>
145
+ </div>
146
+ <div>
147
+ <h3 class="font-semibold">Certified Scrum Master (CSM)</h3>
148
+ <p>Scrum Alliance</p>
149
+ </div>
150
+ <div>
151
+ <h3 class="font-semibold">Diploma in Product Management</h3>
152
+ </div>
153
+ </div>
154
+ </div>
155
+ </section>
156
+
157
+ <!-- Contact Section -->
158
+ <section id="contact" class="mb-16">
159
+ <h2 class="text-3xl font-bold mb-6">Get In Touch</h2>
160
+ <div class="bg-white p-8 rounded-xl shadow-md">
161
+ <form class="space-y-6">
162
+ <div class="grid md:grid-cols-2 gap-6">
163
+ <div>
164
+ <label for="name" class="block mb-2 font-medium">Name</label>
165
+ <input type="text" id="name" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-500 focus:border-transparent">
166
+ </div>
167
+ <div>
168
+ <label for="email" class="block mb-2 font-medium">Email</label>
169
+ <input type="email" id="email" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-500 focus:border-transparent">
170
+ </div>
171
+ </div>
172
+ <div>
173
+ <label for="subject" class="block mb-2 font-medium">Subject</label>
174
+ <input type="text" id="subject" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-500 focus:border-transparent">
175
+ </div>
176
+ <div>
177
+ <label for="message" class="block mb-2 font-medium">Message</label>
178
+ <textarea id="message" rows="5" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-500 focus:border-transparent"></textarea>
179
+ </div>
180
+ <button type="submit" class="bg-indigo-600 text-white px-6 py-3 rounded-lg font-medium hover:bg-indigo-700 transition">Send Message</button>
181
+ </form>
182
+ </div>
183
+ </section>
184
+ </main>
185
+
186
+ <custom-footer></custom-footer>
187
+ <script src="components/navbar.js"></script>
188
+ <script src="components/footer.js"></script>
189
+ <script src="components/particles.js"></script>
190
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.4/gsap.min.js"></script>
191
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.4/ScrollTrigger.min.js"></script>
192
+ <script src="script.js"></script>
193
+ <script>
194
+ feather.replace();
195
+ VANTA.NET({
196
+ el: "#hero",
197
+ color: 0x7e5bef,
198
+ backgroundColor: 0xffffff,
199
+ points: 12,
200
+ maxDistance: 20,
201
+ spacing: 15
202
+ });
203
+ </script>
204
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
205
+ </body>
206
+ </html>
script.js ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ // Initialize animations
3
+ document.addEventListener('DOMContentLoaded', function() {
4
+ // GSAP animations
5
+ gsap.registerPlugin(ScrollTrigger);
6
+
7
+ // Animate sections on scroll
8
+ gsap.utils.toArray('section').forEach(section => {
9
+ gsap.from(section, {
10
+ scrollTrigger: {
11
+ trigger: section,
12
+ start: "top 80%",
13
+ toggleActions: "play none none none"
14
+ },
15
+ y: 50,
16
+ opacity: 0,
17
+ duration: 1,
18
+ ease: "power3.out"
19
+ });
20
+ });
21
+
22
+ // Animate skill tags
23
+ gsap.utils.toArray('.bg-gray-100').forEach((tag, i) => {
24
+ gsap.from(tag, {
25
+ scrollTrigger: {
26
+ trigger: tag,
27
+ start: "top 90%",
28
+ toggleActions: "play none none none"
29
+ },
30
+ scale: 0,
31
+ opacity: 0,
32
+ duration: 0.5,
33
+ delay: i * 0.05,
34
+ ease: "back.out"
35
+ });
36
+ });
37
+
38
+ // Form submission handler
39
+ const contactForm = document.querySelector('form');
40
+ if (contactForm) {
41
+ contactForm.addEventListener('submit', function(e) {
42
+ e.preventDefault();
43
+
44
+ // Get form values
45
+ const name = document.getElementById('name').value;
46
+ const email = document.getElementById('email').value;
47
+ const subject = document.getElementById('subject').value;
48
+ const message = document.getElementById('message').value;
49
+
50
+ // Simple validation
51
+ if (!name || !email || !message) {
52
+ alert('Please fill in all required fields');
53
+ return;
54
+ }
55
+
56
+ // In a real application, you would send this data to a server
57
+ console.log('Form submitted:', { name, email, subject, message });
58
+ alert('Thank you for your message! I will get back to you soon.');
59
+ contactForm.reset();
60
+ });
61
+ }
62
+
63
+ // Smooth scroll for anchor links
64
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
65
+ anchor.addEventListener('click', function (e) {
66
+ e.preventDefault();
67
+ document.querySelector(this.getAttribute('href')).scrollIntoView({
68
+ behavior: 'smooth'
69
+ });
70
+ });
71
+ });
72
+ });
style.css CHANGED
@@ -1,28 +1,109 @@
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
 
 
 
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
28
  }
 
1
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
2
+
3
  body {
4
+ font-family: 'Inter', sans-serif;
5
+ line-height: 1.6;
6
+ }
7
+
8
+ section {
9
+ scroll-margin-top: 2rem;
10
+ }
11
+
12
+ /* Smooth scrolling for anchor links */
13
+ html {
14
+ scroll-behavior: smooth;
15
+ }
16
+
17
+ /* Custom shadow for cards */
18
+ .shadow-md {
19
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
20
+ }
21
+ /* Modern animations */
22
+ @keyframes float {
23
+ 0%, 100% { transform: translateY(0); }
24
+ 50% { transform: translateY(-10px); }
25
+ }
26
+
27
+ @keyframes gradientBG {
28
+ 0% { background-position: 0% 50%; }
29
+ 50% { background-position: 100% 50%; }
30
+ 100% { background-position: 0% 50%; }
31
+ }
32
+
33
+ @keyframes fadeInSlide {
34
+ from { opacity: 0; transform: translateY(40px); }
35
+ to { opacity: 1; transform: translateY(0); }
36
+ }
37
+
38
+ @keyframes pulse {
39
+ 0%, 100% { transform: scale(1); }
40
+ 50% { transform: scale(1.05); }
41
+ }
42
+
43
+ /* Section animations */
44
+ section {
45
+ animation: fadeInSlide 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
46
+ }
47
+
48
+ section:nth-child(2) { animation-delay: 0.1s; }
49
+ section:nth-child(3) { animation-delay: 0.2s; }
50
+ section:nth-child(4) { animation-delay: 0.3s; }
51
+ section:nth-child(5) { animation-delay: 0.4s; }
52
+
53
+ /* Floating elements */
54
+ .floating {
55
+ animation: float 3s ease-in-out infinite;
56
+ }
57
+
58
+ /* Gradient background */
59
+ .gradient-bg {
60
+ background: linear-gradient(135deg, #667eea, #764ba2, #6B46C1);
61
+ background-size: 200% 200%;
62
+ animation: gradientBG 8s ease infinite;
63
+ }
64
+
65
+ /* Pulse animation */
66
+ .pulse:hover {
67
+ animation: pulse 1s ease;
68
+ }
69
+
70
+ /* 3D card effect */
71
+ .card-3d {
72
+ transition: transform 0.5s ease, box-shadow 0.5s ease;
73
+ transform-style: preserve-3d;
74
+ }
75
+
76
+ .card-3d:hover {
77
+ transform: perspective(1000px) rotateY(10deg) translateY(-5px);
78
+ box-shadow: 0 20px 40px rgba(0,0,0,0.15);
79
+ }
80
+
81
+ /* Glow effect */
82
+ .glow {
83
+ box-shadow: 0 0 10px rgba(103, 78, 234, 0.5);
84
+ transition: box-shadow 0.3s ease;
85
  }
86
 
87
+ .glow:hover {
88
+ box-shadow: 0 0 20px rgba(103, 78, 234, 0.8);
 
89
  }
90
 
91
+ /* Animated underline */
92
+ .animated-underline {
93
+ position: relative;
 
 
94
  }
95
 
96
+ .animated-underline::after {
97
+ content: '';
98
+ position: absolute;
99
+ bottom: -4px;
100
+ left: 0;
101
+ width: 0;
102
+ height: 3px;
103
+ background: linear-gradient(90deg, #667eea, #764ba2);
104
+ transition: width 0.5s ease;
105
  }
106
 
107
+ .animated-underline:hover::after {
108
+ width: 100%;
109
  }