SRVCP commited on
Commit
e91c622
·
verified ·
1 Parent(s): bc4aaec

Upload 5 files

Browse files
Files changed (6) hide show
  1. .gitattributes +2 -0
  2. Photo.jpeg +3 -0
  3. Rakesh Resume.pdf +3 -0
  4. index.html +288 -19
  5. script.js +399 -0
  6. styles.css +679 -0
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ Photo.jpeg filter=lfs diff=lfs merge=lfs -text
37
+ Rakesh[[:space:]]Resume.pdf filter=lfs diff=lfs merge=lfs -text
Photo.jpeg ADDED

Git LFS Details

  • SHA256: 43632736f4237926f6cf5fea8b4b81b71e3e165c744c716a4ee762b09d0a01f0
  • Pointer size: 131 Bytes
  • Size of remote file: 120 kB
Rakesh Resume.pdf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f51f685ba29349a207425f6280447fb14f02394dee2e5c8046df6dd24149fb3b
3
+ size 186268
index.html CHANGED
@@ -1,19 +1,288 @@
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" />
6
+ <title>Rakesh Kumar — AI Product Manager Portfolio</title>
7
+ <meta name="description" content="Rakesh Kumar | AI Product Manager & AI Lead with 7+ years experience in AI, healthcare, and e-commerce. Portfolio, case studies, and achievements." />
8
+ <meta property="og:title" content="Rakesh Kumar — AI Product Manager Portfolio" />
9
+ <meta property="og:description" content="AI Product Manager & AI Lead | Building AI agents, RAG platforms, data products. Explore case studies and achievements." />
10
+ <meta name="theme-color" content="#0ea5e9" />
11
+ <link rel="preconnect" href="https://fonts.googleapis.com">
12
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
13
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
14
+ <link rel="stylesheet" href="styles.css" />
15
+ </head>
16
+ <body>
17
+ <header class="site-header">
18
+ <nav class="container nav">
19
+ <a class="brand" href="#top" aria-label="Rakesh Kumar Home">
20
+ <svg class="logo" viewBox="0 0 64 64" role="img" aria-label="RK logo" xmlns="http://www.w3.org/2000/svg">
21
+ <defs>
22
+ <linearGradient id="g" x1="0" x2="1">
23
+ <stop offset="0%" stop-color="#0ea5e9"/>
24
+ <stop offset="100%" stop-color="#22c55e"/>
25
+ </linearGradient>
26
+ </defs>
27
+ <circle cx="32" cy="32" r="30" fill="url(#g)"/>
28
+ <text x="50%" y="54%" text-anchor="middle" font-size="28" font-family="Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial" font-weight="800" fill="#ffffff">RK</text>
29
+ </svg>
30
+ <span>Rakesh Kumar</span>
31
+ </a>
32
+ <button class="nav-toggle" id="navToggle" aria-label="Toggle navigation">☰</button>
33
+ <ul class="nav-links" id="navLinks">
34
+ <li><a href="#about">About</a></li>
35
+ <li><a href="#metrics">Impact</a></li>
36
+ <li><a href="#experience">Experience</a></li>
37
+ <li><a href="#cases">Case Studies</a></li>
38
+ <li><a href="#skills">Skills</a></li>
39
+ <li><a href="#contact">Contact</a></li>
40
+ <li><button id="themeToggle" class="ghost">🌙</button></li>
41
+ </ul>
42
+ </nav>
43
+ </header>
44
+
45
+ <main id="top">
46
+ <!-- Hero -->
47
+ <section class="hero container" id="about">
48
+ <div class="hero-text">
49
+ <div class="profile-container">
50
+ <img src="Photo.jpeg" alt="Rakesh Kumar - AI Product Manager" class="profile-avatar" />
51
+ </div>
52
+ <h1>AI Product Manager & AI Lead</h1>
53
+ <p class="hero-subtitle">7+ years building agentic AI, RAG platforms, data products, and high-impact customer experiences across healthcare, e-commerce, and IT.</p>
54
+ <div class="cta">
55
+ <a class="btn primary" href="#cases">View Case Studies</a>
56
+ <a class="btn" href="Rakesh Resume.pdf" download="Rakesh_Kumar_Resume.pdf" aria-label="Download resume as PDF">Download Resume</a>
57
+ <a class="btn ghost" href="https://www.linkedin.com/in/rakesh-kumar-2a308b50" target="_blank" rel="noopener">LinkedIn</a>
58
+ </div>
59
+ <ul class="quick-facts">
60
+ <li>📍 Location: India</li>
61
+ <li>📧 Email: <a href="mailto:p18rakeshk@iima.ac.in">p18rakeshk@iima.ac.in</a></li>
62
+ <li>📱 Phone: <a href="tel:+919004260456">+91-9004260456</a> / <a href="tel:+916359017259">6359017259</a></li>
63
+ </ul>
64
+ </div>
65
+ </section>
66
+
67
+ <!-- Impact Metrics -->
68
+ <section class="section container" id="metrics">
69
+ <h2>Product Impact</h2>
70
+ <div class="cards">
71
+ <article class="card kpi"><h3>70%+</h3><p>Manual tasks reduced using agentic AI workflows</p></article>
72
+ <article class="card kpi"><h3>80%</h3><p>Faster insight generation with BI dashboards</p></article>
73
+ <article class="card kpi"><h3>10×</h3><p>Clinical research turnaround acceleration</p></article>
74
+ <article class="card kpi"><h3>85%</h3><p>ML + LLM diet engine accuracy</p></article>
75
+ <article class="card kpi"><h3>20k+</h3><p>Users onboarded in 90 days (coach-driven wellness)</p></article>
76
+ <article class="card kpi"><h3>$50k+/mo</h3><p>Incremental revenue via recommendations</p></article>
77
+ <article class="card kpi"><h3>3×</h3><p>Experimentation velocity (AI playground)</p></article>
78
+ <article class="card kpi"><h3>1M INR</h3><p>GMV leakage prevented per month</p></article>
79
+ </div>
80
+ </section>
81
+
82
+ <!-- Experience Timeline -->
83
+ <section class="section container" id="experience">
84
+ <h2>Professional Experience</h2>
85
+ <ol class="timeline">
86
+ <li>
87
+ <div class="time">Feb 2023 – Present</div>
88
+ <div class="content">
89
+ <div class="company-icon">🏥</div>
90
+ <h3>AI Product Manager & AI Lead — Dr. Reddy's (Svaas Wellness)</h3>
91
+ <ul>
92
+ <li>Built agentic AI framework to automate workflows and fine-tune LLMs; reduced manual tasks by 70%.</li>
93
+ <li>Architected RAG pipeline for clinical intelligence with customized data cleaning and ingestion; 5% better retrieval score than Azure managed services.</li>
94
+ <li>Designed Deep Research Agent for clinical studies; cut research turnaround time by 10×.</li>
95
+ <li>Architected GenAI voice agent for clinical support with <4s latency enabling real-time interactions.</li>
96
+ <li>Developed internal AI Playground for rapid product and design teams; 3× faster prototyping and AI experimentation.</li>
97
+ <li>Engineered ML + LLM-based diet engine achieving 85% accuracy.</li>
98
+ <li>Integrated RAG agent into BI dashboards; 80% faster insight generation and self-serve analytics.</li>
99
+ <li>Implemented symptom analyzer and health risk assessment tool impacting 5k+ users in 4 months.</li>
100
+ </ul>
101
+ </div>
102
+ </li>
103
+ <li>
104
+ <div class="time">Dec 2021 – Jan 2023</div>
105
+ <div class="content">
106
+ <div class="company-icon">🏥</div>
107
+ <h3>Product Manager (Customer Success, New Initiatives, Platform) — MediBuddy</h3>
108
+ <ul>
109
+ <li>Built tool generating valuable customer feedback; improved adoption and messaging.</li>
110
+ <li>Scaled B2B CS support and automated systems; raised CSAT from 2.8 to 4 and first contact resolution by 10%.</li>
111
+ <li>Launched social media automation; boosted organic reach.</li>
112
+ <li>Accelerated refunds with all payment sources; automated claims with third parties and insurers.</li>
113
+ </ul>
114
+ </div>
115
+ </li>
116
+ <li>
117
+ <div class="time">Jul 2020 – Dec 2021</div>
118
+ <div class="content">
119
+ <div class="company-icon">👗</div>
120
+ <h3>Data Product Manager — eShakti</h3>
121
+ <ul>
122
+ <li>Improved conversion by 7% for new users via enhanced product discovery funnel.</li>
123
+ <li>Increased customization usage by 9% with $30,000+ per month CLV uplift.</li>
124
+ <li>Improved onsite search and sorting; 5% overall sales increase and $15,000/month reduction in overstock.</li>
125
+ <li>Built recommendation engine yielding $50,000+/month incremental revenue and 8% retention improvement.</li>
126
+ </ul>
127
+ </div>
128
+ </li>
129
+ <li>
130
+ <div class="time">Jul 2015 – Apr 2018</div>
131
+ <div class="content">
132
+ <div class="company-icon">💻</div>
133
+ <h3>Software Engineer — Capgemini India Pvt. Ltd.</h3>
134
+ <ul>
135
+ <li>Resolved 10+ post-production issues; stabilized a web application.</li>
136
+ <li>30% reduction in waiting time with 15+ new features enhancing UX.</li>
137
+ <li>Cut lead time of an upload service by 60% and reduced report generation time by 50%.</li>
138
+ <li>Developed and trained ML models using RNN, NN, and CNN for training programs.</li>
139
+ </ul>
140
+ </div>
141
+ </li>
142
+ </ol>
143
+ </section>
144
+
145
+ <!-- Case Studies -->
146
+ <section class="section container" id="cases">
147
+ <h2>Selected Case Studies</h2>
148
+ <div class="cases">
149
+ <details class="case">
150
+ <summary>
151
+ <h3>Agentic AI Platform — Healthcare</h3>
152
+ <p class="tags"><span>AI Agents</span> <span>LLM</span> <span>Automation</span></p>
153
+ </summary>
154
+ <div class="case-details">
155
+ <h4>Problem</h4>
156
+ <p>Manual processes and slow iteration for AI features across teams.</p>
157
+ <h4>Action</h4>
158
+ <p>Built a reusable agentic AI framework, custom data pipelines, and evaluation harness; integrated into BI stack.</p>
159
+ <h4>Impact</h4>
160
+ <p>70% reduction in manual tasks; 3× faster prototyping; 80% quicker insight generation.</p>
161
+ <h4>Business Case</h4>
162
+ <p>Addressed inefficiencies in healthcare workflows by leveraging AI to automate repetitive tasks, enabling faster decision-making and resource allocation for clinical teams.</p>
163
+ <h4>PRD Highlights</h4>
164
+ <ul>
165
+ <li>Core Features: Agentic workflows, LLM fine-tuning, RAG integration for BI dashboards.</li>
166
+ <li>Success Metrics: Task reduction >70%, insight generation time <20% of original.</li>
167
+ <li>Tech Stack: Python, LangChain, custom RAG pipelines.</li>
168
+ <li>Stakeholders: Product, Design, Clinical teams.</li>
169
+ </ul>
170
+ </div>
171
+ </details>
172
+ <details class="case">
173
+ <summary>
174
+ <h3>Deep Research Agent — Clinical Studies</h3>
175
+ <p class="tags"><span>RAG</span> <span>Search</span> <span>Healthcare</span></p>
176
+ </summary>
177
+ <div class="case-details">
178
+ <h4>Problem</h4>
179
+ <p>Clinicians needed rapid, reliable summaries from large corpora.</p>
180
+ <h4>Action</h4>
181
+ <p>Architected custom retrieval with domain-specific cleaning, chunking, and evaluation.</p>
182
+ <h4>Impact</h4>
183
+ <p>10× faster research turnaround with improved retrieval scores.</p>
184
+ <h4>Business Case</h4>
185
+ <p>Accelerated clinical research processes to bring insights to market faster, reducing time-to-decision in drug development and patient care.</p>
186
+ <h4>PRD Highlights</h4>
187
+ <ul>
188
+ <li>Core Features: Advanced RAG with custom data ingestion, low-latency querying.</li>
189
+ <li>Success Metrics: Turnaround time reduction to 10%, retrieval accuracy >95%.</li>
190
+ <li>Tech Stack: Vector DB, custom embeddings, evaluation harness.</li>
191
+ <li>Stakeholders: Clinicians, Researchers.</li>
192
+ </ul>
193
+ </div>
194
+ </details>
195
+ <details class="case">
196
+ <summary>
197
+ <h3>Recommendations at Scale — eCommerce</h3>
198
+ <p class="tags"><span>Recommender Systems</span> <span>Data Platform</span> <span>Experimentation</span></p>
199
+ </summary>
200
+ <div class="case-details">
201
+ <h4>Problem</h4>
202
+ <p>Low discovery and high overstock.</p>
203
+ <h4>Action</h4>
204
+ <p>Built hybrid recommendation engine and improved onsite search & sorting.</p>
205
+ <h4>Impact</h4>
206
+ <p>+$50k/month incremental revenue, +7% new-user conversion, −$15k/month overstock.</p>
207
+ <h4>Business Case</h4>
208
+ <p>Enhanced product discovery to drive sales and reduce inventory costs in fashion e-commerce, improving customer satisfaction and retention.</p>
209
+ <h4>PRD Highlights</h4>
210
+ <ul>
211
+ <li>Core Features: Hybrid recs (content+collaborative), A/B testing framework.</li>
212
+ <li>Success Metrics: Conversion uplift >5%, revenue increment >$50k/mo.</li>
213
+ <li>Tech Stack: ML models, data pipelines, experimentation tools.</li>
214
+ <li>Stakeholders: Marketing, Sales, Data teams.</li>
215
+ </ul>
216
+ </div>
217
+ </details>
218
+ </div>
219
+ </section>
220
+
221
+ <!-- Other Projects -->
222
+ <section class="section container" id="projects">
223
+ <h2>Other Projects</h2>
224
+ <div class="cards">
225
+ <article class="card project">
226
+ <h3>GenAI Voice Agent</h3>
227
+ <p>Architected low-latency voice agent for real-time clinical support interactions.</p>
228
+ <p class="tags"><span>GenAI</span> <span>Voice</span> <span>Healthcare</span></p>
229
+ <p><strong>Impact:</strong> Enabled seamless support with <4s latency.</p>
230
+ </article>
231
+ <article class="card project">
232
+ <h3>ML + LLM Diet Engine</h3>
233
+ <p>Engineered hybrid engine for personalized diet recommendations with 85% accuracy.</p>
234
+ <p class="tags"><span>ML</span> <span>LLM</span> <span>Wellness</span></p>
235
+ <p><strong>Impact:</strong> Improved user health outcomes in wellness platform.</p>
236
+ </article>
237
+ <article class="card project">
238
+ <h3>Symptom Analyzer & Risk Assessment</h3>
239
+ <p>Implemented AI tool for health risk evaluation, reaching 5k+ users in 4 months.</p>
240
+ <p class="tags"><span>AI</span> <span>Health Tech</span></p>
241
+ <p><strong>Impact:</strong> Enhanced early detection and user engagement.</p>
242
+ </article>
243
+ <article class="card project">
244
+ <h3>Internal AI Playground</h3>
245
+ <p>Developed platform for rapid AI prototyping, accelerating experimentation by 3×.</p>
246
+ <p class="tags"><span>AI Tools</span> <span>Prototyping</span></p>
247
+ <p><strong>Impact:</strong> Faster iteration for product and design teams.</p>
248
+ </article>
249
+ </div>
250
+ </section>
251
+
252
+ <!-- Skills -->
253
+ <section class="section container" id="skills">
254
+ <h2>Skills</h2>
255
+ <ul class="chips">
256
+ <li>Product Strategy</li><li>Roadmapping</li><li>AI/ML</li><li>LLM & RAG</li><li>GenAI Voice</li><li>Experimentation</li>
257
+ <li>Metrics & Analytics</li><li>UX Research</li><li>SQL</li><li>Python</li><li>Data Platforms</li>
258
+ <li>CRM</li><li>Health Tech</li><li>E-commerce</li><li>Project Management</li>
259
+ </ul>
260
+ <h3 class="sub">Education</h3>
261
+ <ul class="edu">
262
+ <li><strong>Indian Institute of Management Ahmedabad (IIMA)</strong> — MBA (2018–2020)</li>
263
+ <li><strong>Indian Institute of Technology Ropar (IIT Ropar)</strong> — B.Tech, Mechanical Engineering (2011–2015)</li>
264
+ </ul>
265
+ <h3 class="sub">Certifications</h3>
266
+ <p>IBM AI Product Manager, IBM AI Developer, Google Digital Marketing, Six Sigma Green Belt, LLM Courses.</p>
267
+ </section>
268
+
269
+ <!-- Contact -->
270
+ <section class="section container" id="contact">
271
+ <h2>Contact</h2>
272
+ <div class="contact">
273
+ <a class="btn primary" href="mailto:p18rakeshk@iima.ac.in">Email Me</a>
274
+ <a class="btn" target="_blank" rel="noopener" href="https://www.linkedin.com/in/rakesh-kumar-2a308b50">LinkedIn</a>
275
+ <a class="btn ghost" href="#top">Back to top ↑</a>
276
+ </div>
277
+ </section>
278
+ </main>
279
+
280
+ <footer class="site-footer">
281
+ <div class="container">
282
+ <small>© <span id="year"></span> Rakesh Kumar — AI Product Manager. Hosted on Hugging Face Spaces.</small>
283
+ </div>
284
+ </footer>
285
+
286
+ <script src="script.js"></script>
287
+ </body>
288
+ </html>
script.js ADDED
@@ -0,0 +1,399 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Portfolio Website JavaScript
2
+ // Interactive functionality for navigation, theme toggle, and user experience
3
+
4
+ (function() {
5
+ 'use strict';
6
+
7
+ // DOM Elements
8
+ const themeToggle = document.getElementById('themeToggle');
9
+ const navToggle = document.querySelector('.nav-toggle');
10
+ const navLinks = document.querySelector('.nav-links');
11
+ const header = document.querySelector('.site-header');
12
+ const resumeBtn = document.getElementById('resumeBtn');
13
+
14
+ // Theme Management
15
+ class ThemeManager {
16
+ constructor() {
17
+ this.currentTheme = localStorage.getItem('theme') || 'light';
18
+ this.init();
19
+ }
20
+
21
+ init() {
22
+ this.applyTheme(this.currentTheme);
23
+ this.updateThemeIcon();
24
+ if (themeToggle) {
25
+ themeToggle.addEventListener('click', () => this.toggleTheme());
26
+ }
27
+ }
28
+
29
+ toggleTheme() {
30
+ this.currentTheme = this.currentTheme === 'light' ? 'dark' : 'light';
31
+ this.applyTheme(this.currentTheme);
32
+ this.updateThemeIcon();
33
+ localStorage.setItem('theme', this.currentTheme);
34
+ }
35
+
36
+ applyTheme(theme) {
37
+ document.documentElement.setAttribute('data-theme', theme);
38
+ }
39
+
40
+ updateThemeIcon() {
41
+ if (themeToggle) {
42
+ themeToggle.innerHTML = this.currentTheme === 'light' ? '🌙' : '☀️';
43
+ themeToggle.setAttribute('aria-label',
44
+ `Switch to ${this.currentTheme === 'light' ? 'dark' : 'light'} mode`);
45
+ }
46
+ }
47
+ }
48
+
49
+ // Navigation Management
50
+ class NavigationManager {
51
+ constructor() {
52
+ this.isMenuOpen = false;
53
+ this.init();
54
+ }
55
+
56
+ init() {
57
+ // Mobile menu toggle
58
+ if (navToggle && navLinks) {
59
+ navToggle.addEventListener('click', () => this.toggleMobileMenu());
60
+ }
61
+
62
+ // Close mobile menu when clicking on links
63
+ if (navLinks) {
64
+ navLinks.addEventListener('click', (e) => {
65
+ if (e.target.tagName === 'A') {
66
+ this.closeMobileMenu();
67
+ }
68
+ });
69
+ }
70
+
71
+ // Close mobile menu when clicking outside
72
+ document.addEventListener('click', (e) => {
73
+ if (this.isMenuOpen && !e.target.closest('.nav')) {
74
+ this.closeMobileMenu();
75
+ }
76
+ });
77
+
78
+ // Smooth scrolling for anchor links
79
+ this.initSmoothScrolling();
80
+
81
+ // Header scroll effect
82
+ this.initHeaderScrollEffect();
83
+ }
84
+
85
+ toggleMobileMenu() {
86
+ this.isMenuOpen = !this.isMenuOpen;
87
+ navLinks.classList.toggle('active', this.isMenuOpen);
88
+ navToggle.setAttribute('aria-expanded', this.isMenuOpen.toString());
89
+ navToggle.innerHTML = this.isMenuOpen ? '✕' : '☰';
90
+ }
91
+
92
+ closeMobileMenu() {
93
+ this.isMenuOpen = false;
94
+ navLinks.classList.remove('active');
95
+ navToggle.setAttribute('aria-expanded', 'false');
96
+ navToggle.innerHTML = '☰';
97
+ }
98
+
99
+ initSmoothScrolling() {
100
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
101
+ anchor.addEventListener('click', (e) => {
102
+ const href = anchor.getAttribute('href');
103
+ if (href === '#' || href === '#top') {
104
+ e.preventDefault();
105
+ window.scrollTo({ top: 0, behavior: 'smooth' });
106
+ return;
107
+ }
108
+
109
+ const target = document.querySelector(href);
110
+ if (target) {
111
+ e.preventDefault();
112
+ const headerHeight = header ? header.offsetHeight : 0;
113
+ const targetPosition = target.offsetTop - headerHeight - 20;
114
+
115
+ window.scrollTo({
116
+ top: targetPosition,
117
+ behavior: 'smooth'
118
+ });
119
+ }
120
+ });
121
+ });
122
+ }
123
+
124
+ initHeaderScrollEffect() {
125
+ if (!header) return;
126
+
127
+ let lastScrollY = window.scrollY;
128
+ let ticking = false;
129
+
130
+ const updateHeader = () => {
131
+ const scrollY = window.scrollY;
132
+
133
+ if (scrollY > 100) {
134
+ header.style.background = 'rgba(255, 255, 255, 0.95)';
135
+ header.style.backdropFilter = 'blur(10px)';
136
+ } else {
137
+ header.style.background = '';
138
+ header.style.backdropFilter = '';
139
+ }
140
+
141
+ lastScrollY = scrollY;
142
+ ticking = false;
143
+ };
144
+
145
+ const requestTick = () => {
146
+ if (!ticking) {
147
+ requestAnimationFrame(updateHeader);
148
+ ticking = true;
149
+ }
150
+ };
151
+
152
+ window.addEventListener('scroll', requestTick, { passive: true });
153
+ }
154
+ }
155
+
156
+ // Resume Download Manager
157
+ class ResumeManager {
158
+ constructor() {
159
+ this.init();
160
+ }
161
+
162
+ init() {
163
+ if (resumeBtn) {
164
+ resumeBtn.addEventListener('click', (e) => this.handleResumeDownload(e));
165
+ }
166
+ }
167
+
168
+ handleResumeDownload(e) {
169
+ e.preventDefault();
170
+
171
+ // Show loading state
172
+ const originalText = resumeBtn.innerHTML;
173
+ resumeBtn.innerHTML = '📄 Downloading...';
174
+ resumeBtn.classList.add('loading');
175
+
176
+ // Create download link
177
+ const link = document.createElement('a');
178
+ link.href = 'Rakesh Resume.pdf';
179
+ link.download = 'Rakesh_Kumar_Resume.pdf';
180
+ link.style.display = 'none';
181
+
182
+ document.body.appendChild(link);
183
+
184
+ // Trigger download
185
+ try {
186
+ link.click();
187
+
188
+ // Track download (if analytics is available)
189
+ if (typeof gtag !== 'undefined') {
190
+ gtag('event', 'download', {
191
+ 'event_category': 'Resume',
192
+ 'event_label': 'PDF Download'
193
+ });
194
+ }
195
+
196
+ // Show success message
197
+ setTimeout(() => {
198
+ resumeBtn.innerHTML = '✅ Downloaded!';
199
+ setTimeout(() => {
200
+ resumeBtn.innerHTML = originalText;
201
+ resumeBtn.classList.remove('loading');
202
+ }, 2000);
203
+ }, 500);
204
+
205
+ } catch (error) {
206
+ console.error('Download failed:', error);
207
+ resumeBtn.innerHTML = '❌ Download Failed';
208
+ setTimeout(() => {
209
+ resumeBtn.innerHTML = originalText;
210
+ resumeBtn.classList.remove('loading');
211
+ }, 2000);
212
+ } finally {
213
+ document.body.removeChild(link);
214
+ }
215
+ }
216
+ }
217
+
218
+ // Animation and Intersection Observer
219
+ class AnimationManager {
220
+ constructor() {
221
+ this.init();
222
+ }
223
+
224
+ init() {
225
+ // Intersection Observer for fade-in animations
226
+ if ('IntersectionObserver' in window) {
227
+ this.initScrollAnimations();
228
+ }
229
+
230
+ // Typing animation for hero subtitle
231
+ this.initTypingAnimation();
232
+ }
233
+
234
+ initScrollAnimations() {
235
+ const observerOptions = {
236
+ threshold: 0.1,
237
+ rootMargin: '0px 0px -50px 0px'
238
+ };
239
+
240
+ const observer = new IntersectionObserver((entries) => {
241
+ entries.forEach(entry => {
242
+ if (entry.isIntersecting) {
243
+ entry.target.style.opacity = '1';
244
+ entry.target.style.transform = 'translateY(0)';
245
+ }
246
+ });
247
+ }, observerOptions);
248
+
249
+ // Observe elements for animation
250
+ document.querySelectorAll('.card, .timeline li, .case').forEach(el => {
251
+ el.style.opacity = '0';
252
+ el.style.transform = 'translateY(30px)';
253
+ el.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
254
+ observer.observe(el);
255
+ });
256
+ }
257
+
258
+ initTypingAnimation() {
259
+ const subtitle = document.querySelector('.hero-subtitle');
260
+ if (!subtitle) return;
261
+
262
+ const text = subtitle.textContent;
263
+ subtitle.textContent = '';
264
+ subtitle.style.borderRight = '2px solid var(--accent-primary)';
265
+
266
+ let i = 0;
267
+ const typeWriter = () => {
268
+ if (i < text.length) {
269
+ subtitle.textContent += text.charAt(i);
270
+ i++;
271
+ setTimeout(typeWriter, 50);
272
+ } else {
273
+ // Remove cursor after typing is complete
274
+ setTimeout(() => {
275
+ subtitle.style.borderRight = 'none';
276
+ }, 1000);
277
+ }
278
+ };
279
+
280
+ // Start typing animation after a short delay
281
+ setTimeout(typeWriter, 1000);
282
+ }
283
+ }
284
+
285
+ // Utility Functions
286
+ class Utils {
287
+ static debounce(func, wait) {
288
+ let timeout;
289
+ return function executedFunction(...args) {
290
+ const later = () => {
291
+ clearTimeout(timeout);
292
+ func(...args);
293
+ };
294
+ clearTimeout(timeout);
295
+ timeout = setTimeout(later, wait);
296
+ };
297
+ }
298
+
299
+ static throttle(func, limit) {
300
+ let inThrottle;
301
+ return function() {
302
+ const args = arguments;
303
+ const context = this;
304
+ if (!inThrottle) {
305
+ func.apply(context, args);
306
+ inThrottle = true;
307
+ setTimeout(() => inThrottle = false, limit);
308
+ }
309
+ };
310
+ }
311
+
312
+ static isElementInViewport(el) {
313
+ const rect = el.getBoundingClientRect();
314
+ return (
315
+ rect.top >= 0 &&
316
+ rect.left >= 0 &&
317
+ rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
318
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth)
319
+ );
320
+ }
321
+ }
322
+
323
+ // Performance Monitoring
324
+ class PerformanceMonitor {
325
+ constructor() {
326
+ this.init();
327
+ }
328
+
329
+ init() {
330
+ // Log page load performance
331
+ window.addEventListener('load', () => {
332
+ if ('performance' in window) {
333
+ const perfData = performance.getEntriesByType('navigation')[0];
334
+ console.log('Page Load Time:', perfData.loadEventEnd - perfData.fetchStart, 'ms');
335
+ }
336
+ });
337
+ }
338
+ }
339
+
340
+ // Error Handling
341
+ class ErrorHandler {
342
+ constructor() {
343
+ this.init();
344
+ }
345
+
346
+ init() {
347
+ window.addEventListener('error', (e) => {
348
+ console.error('JavaScript Error:', e.error);
349
+ // Could send to analytics or error reporting service
350
+ });
351
+
352
+ window.addEventListener('unhandledrejection', (e) => {
353
+ console.error('Unhandled Promise Rejection:', e.reason);
354
+ // Could send to analytics or error reporting service
355
+ });
356
+ }
357
+ }
358
+
359
+ // Initialize Application
360
+ class App {
361
+ constructor() {
362
+ this.init();
363
+ }
364
+
365
+ init() {
366
+ // Wait for DOM to be ready
367
+ if (document.readyState === 'loading') {
368
+ document.addEventListener('DOMContentLoaded', () => this.start());
369
+ } else {
370
+ this.start();
371
+ }
372
+ }
373
+
374
+ start() {
375
+ try {
376
+ // Initialize all managers
377
+ new ThemeManager();
378
+ new NavigationManager();
379
+ new ResumeManager();
380
+ new AnimationManager();
381
+ new PerformanceMonitor();
382
+ new ErrorHandler();
383
+
384
+ console.log('Portfolio website initialized successfully!');
385
+ } catch (error) {
386
+ console.error('Failed to initialize portfolio:', error);
387
+ }
388
+ }
389
+ }
390
+
391
+ // Start the application
392
+ new App();
393
+
394
+ })();
395
+
396
+ // Export for potential module use
397
+ if (typeof module !== 'undefined' && module.exports) {
398
+ module.exports = { App };
399
+ }
styles.css ADDED
@@ -0,0 +1,679 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* CSS Reset and Base Styles */
2
+ * {
3
+ margin: 0;
4
+ padding: 0;
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ :root {
9
+ /* Light theme colors */
10
+ --bg-primary: #ffffff;
11
+ --bg-secondary: #f8fafc;
12
+ --bg-tertiary: #f1f5f9;
13
+ --text-primary: #1e293b;
14
+ --text-secondary: #64748b;
15
+ --text-muted: #94a3b8;
16
+ --accent-primary: #0ea5e9;
17
+ --accent-secondary: #22c55e;
18
+ --border-color: #e2e8f0;
19
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
20
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
21
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
22
+ --gradient: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
23
+ }
24
+
25
+ [data-theme="dark"] {
26
+ /* Dark theme colors */
27
+ --bg-primary: #0f172a;
28
+ --bg-secondary: #1e293b;
29
+ --bg-tertiary: #334155;
30
+ --text-primary: #f1f5f9;
31
+ --text-secondary: #cbd5e1;
32
+ --text-muted: #94a3b8;
33
+ --border-color: #334155;
34
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3);
35
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.3), 0 2px 4px -2px rgb(0 0 0 / 0.3);
36
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.3);
37
+ }
38
+
39
+ body {
40
+ font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
41
+ line-height: 1.6;
42
+ color: var(--text-primary);
43
+ background-color: var(--bg-primary);
44
+ transition: background-color 0.3s ease, color 0.3s ease;
45
+ }
46
+
47
+ /* Typography */
48
+ h1, h2, h3, h4, h5, h6 {
49
+ font-weight: 700;
50
+ line-height: 1.2;
51
+ margin-bottom: 0.5rem;
52
+ }
53
+
54
+ h1 {
55
+ font-size: 3rem;
56
+ font-weight: 800;
57
+ background: var(--gradient);
58
+ -webkit-background-clip: text;
59
+ -webkit-text-fill-color: transparent;
60
+ background-clip: text;
61
+ text-align: center;
62
+ margin-bottom: 1rem;
63
+ }
64
+
65
+ h2 {
66
+ font-size: 2.5rem;
67
+ margin-bottom: 2rem;
68
+ text-align: center;
69
+ }
70
+
71
+ h3 {
72
+ font-size: 1.5rem;
73
+ color: var(--text-primary);
74
+ }
75
+
76
+ p {
77
+ margin-bottom: 1rem;
78
+ color: var(--text-secondary);
79
+ }
80
+
81
+ a {
82
+ color: var(--accent-primary);
83
+ text-decoration: none;
84
+ transition: color 0.2s ease;
85
+ }
86
+
87
+ a:hover {
88
+ color: var(--accent-secondary);
89
+ }
90
+
91
+ /* Layout */
92
+ .container {
93
+ max-width: 1200px;
94
+ margin: 0 auto;
95
+ padding: 0 1.5rem;
96
+ }
97
+
98
+ .section {
99
+ padding: 4rem 0;
100
+ }
101
+
102
+ /* Header */
103
+ .site-header {
104
+ position: fixed;
105
+ top: 0;
106
+ left: 0;
107
+ right: 0;
108
+ background: var(--bg-primary);
109
+ backdrop-filter: blur(10px);
110
+ border-bottom: 1px solid var(--border-color);
111
+ z-index: 1000;
112
+ transition: all 0.3s ease;
113
+ }
114
+
115
+ .nav {
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: space-between;
119
+ padding: 1rem 1.5rem;
120
+ }
121
+
122
+ .brand {
123
+ display: flex;
124
+ align-items: center;
125
+ gap: 0.75rem;
126
+ font-weight: 700;
127
+ font-size: 1.25rem;
128
+ color: var(--text-primary);
129
+ }
130
+
131
+ .logo {
132
+ width: 40px;
133
+ height: 40px;
134
+ }
135
+
136
+ .nav-links {
137
+ display: flex;
138
+ align-items: center;
139
+ gap: 2rem;
140
+ list-style: none;
141
+ }
142
+
143
+ .nav-links a {
144
+ font-weight: 500;
145
+ color: var(--text-secondary);
146
+ transition: color 0.2s ease;
147
+ }
148
+
149
+ .nav-links a:hover {
150
+ color: var(--accent-primary);
151
+ }
152
+
153
+ .nav-toggle {
154
+ display: none;
155
+ background: none;
156
+ border: none;
157
+ font-size: 1.5rem;
158
+ color: var(--text-primary);
159
+ cursor: pointer;
160
+ }
161
+
162
+ /* Hero Section */
163
+ .hero {
164
+ padding: 8rem 0 4rem;
165
+ text-align: center;
166
+ }
167
+
168
+ .profile-container {
169
+ margin-bottom: 2rem;
170
+ }
171
+
172
+ .profile-avatar {
173
+ width: 120px;
174
+ height: 120px;
175
+ margin: 0 auto;
176
+ display: block;
177
+ border-radius: 50%;
178
+ object-fit: cover;
179
+ border: 4px solid var(--accent-primary);
180
+ box-shadow: var(--shadow-lg);
181
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
182
+ }
183
+
184
+ .profile-avatar:hover {
185
+ transform: scale(1.05);
186
+ box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 10px 10px -5px rgb(0 0 0 / 0.04);
187
+ }
188
+
189
+ .hero-subtitle {
190
+ font-size: 1.25rem;
191
+ max-width: 800px;
192
+ margin: 0 auto 2rem;
193
+ color: var(--text-secondary);
194
+ }
195
+
196
+ .cta {
197
+ display: flex;
198
+ gap: 1rem;
199
+ justify-content: center;
200
+ flex-wrap: wrap;
201
+ margin-bottom: 2rem;
202
+ }
203
+
204
+ .quick-facts {
205
+ display: flex;
206
+ gap: 2rem;
207
+ justify-content: center;
208
+ flex-wrap: wrap;
209
+ list-style: none;
210
+ font-size: 0.9rem;
211
+ color: var(--text-muted);
212
+ }
213
+
214
+ /* Buttons */
215
+ .btn {
216
+ display: inline-flex;
217
+ align-items: center;
218
+ gap: 0.5rem;
219
+ padding: 0.75rem 1.5rem;
220
+ border-radius: 0.5rem;
221
+ font-weight: 600;
222
+ text-decoration: none;
223
+ border: none;
224
+ cursor: pointer;
225
+ transition: all 0.2s ease;
226
+ font-size: 0.9rem;
227
+ }
228
+
229
+ .btn.primary {
230
+ background: var(--gradient);
231
+ color: white;
232
+ box-shadow: var(--shadow-md);
233
+ }
234
+
235
+ .btn.primary:hover {
236
+ transform: translateY(-2px);
237
+ box-shadow: var(--shadow-lg);
238
+ }
239
+
240
+ .btn:not(.primary):not(.ghost) {
241
+ background: var(--bg-secondary);
242
+ color: var(--text-primary);
243
+ border: 1px solid var(--border-color);
244
+ }
245
+
246
+ .btn:not(.primary):not(.ghost):hover {
247
+ background: var(--bg-tertiary);
248
+ }
249
+
250
+ .btn.ghost {
251
+ background: transparent;
252
+ color: var(--text-secondary);
253
+ border: 1px solid var(--border-color);
254
+ }
255
+
256
+ .btn.ghost:hover {
257
+ background: var(--bg-secondary);
258
+ color: var(--text-primary);
259
+ }
260
+
261
+ /* Cards */
262
+ .cards {
263
+ display: grid;
264
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
265
+ gap: 1.5rem;
266
+ }
267
+
268
+ .card {
269
+ background: var(--bg-secondary);
270
+ border: 1px solid var(--border-color);
271
+ border-radius: 1rem;
272
+ padding: 1.5rem;
273
+ transition: all 0.3s ease;
274
+ }
275
+
276
+ .card:hover {
277
+ transform: translateY(-4px);
278
+ box-shadow: var(--shadow-lg);
279
+ }
280
+
281
+ .card.kpi {
282
+ text-align: center;
283
+ }
284
+
285
+ .card.kpi h3 {
286
+ font-size: 2.5rem;
287
+ font-weight: 800;
288
+ background: var(--gradient);
289
+ -webkit-background-clip: text;
290
+ -webkit-text-fill-color: transparent;
291
+ background-clip: text;
292
+ margin-bottom: 0.5rem;
293
+ }
294
+
295
+ .card.project h3 {
296
+ color: var(--accent-primary);
297
+ margin-bottom: 1rem;
298
+ }
299
+
300
+ /* Timeline */
301
+ .timeline {
302
+ list-style: none;
303
+ position: relative;
304
+ padding-left: 2rem;
305
+ }
306
+
307
+ .timeline::before {
308
+ content: '';
309
+ position: absolute;
310
+ left: 0;
311
+ top: 0;
312
+ bottom: 0;
313
+ width: 2px;
314
+ background: var(--gradient);
315
+ }
316
+
317
+ .timeline li {
318
+ position: relative;
319
+ margin-bottom: 3rem;
320
+ padding-left: 2rem;
321
+ }
322
+
323
+ .timeline li::before {
324
+ content: '';
325
+ position: absolute;
326
+ left: -1.5rem;
327
+ top: 0.5rem;
328
+ width: 12px;
329
+ height: 12px;
330
+ border-radius: 50%;
331
+ background: var(--accent-primary);
332
+ border: 3px solid var(--bg-primary);
333
+ }
334
+
335
+ .time {
336
+ font-size: 0.9rem;
337
+ font-weight: 600;
338
+ color: var(--accent-primary);
339
+ margin-bottom: 0.5rem;
340
+ }
341
+
342
+ .content {
343
+ background: var(--bg-secondary);
344
+ border: 1px solid var(--border-color);
345
+ border-radius: 1rem;
346
+ padding: 1.5rem;
347
+ position: relative;
348
+ }
349
+
350
+ .company-icon {
351
+ font-size: 1.5rem;
352
+ margin-bottom: 0.5rem;
353
+ }
354
+
355
+ .content ul {
356
+ margin-top: 1rem;
357
+ padding-left: 1.5rem;
358
+ }
359
+
360
+ .content li {
361
+ margin-bottom: 0.5rem;
362
+ color: var(--text-secondary);
363
+ }
364
+
365
+ /* Case Studies */
366
+ .cases {
367
+ display: grid;
368
+ gap: 1.5rem;
369
+ }
370
+
371
+ .case {
372
+ background: var(--bg-secondary);
373
+ border: 1px solid var(--border-color);
374
+ border-radius: 1rem;
375
+ overflow: hidden;
376
+ }
377
+
378
+ .case summary {
379
+ padding: 1.5rem;
380
+ cursor: pointer;
381
+ list-style: none;
382
+ transition: background-color 0.2s ease;
383
+ }
384
+
385
+ .case summary:hover {
386
+ background: var(--bg-tertiary);
387
+ }
388
+
389
+ .case summary h3 {
390
+ margin-bottom: 0.5rem;
391
+ }
392
+
393
+ .case-details {
394
+ padding: 0 1.5rem 1.5rem;
395
+ border-top: 1px solid var(--border-color);
396
+ }
397
+
398
+ .case-details h4 {
399
+ color: var(--accent-primary);
400
+ margin: 1.5rem 0 0.5rem;
401
+ }
402
+
403
+ .case-details h4:first-child {
404
+ margin-top: 1rem;
405
+ }
406
+
407
+ /* Tags */
408
+ .tags {
409
+ display: flex;
410
+ gap: 0.5rem;
411
+ flex-wrap: wrap;
412
+ }
413
+
414
+ .tags span {
415
+ background: var(--accent-primary);
416
+ color: white;
417
+ padding: 0.25rem 0.75rem;
418
+ border-radius: 1rem;
419
+ font-size: 0.8rem;
420
+ font-weight: 500;
421
+ }
422
+
423
+ /* Skills */
424
+ .chips {
425
+ display: flex;
426
+ flex-wrap: wrap;
427
+ gap: 0.75rem;
428
+ list-style: none;
429
+ margin-bottom: 2rem;
430
+ }
431
+
432
+ .chips li {
433
+ background: var(--bg-secondary);
434
+ border: 1px solid var(--border-color);
435
+ padding: 0.5rem 1rem;
436
+ border-radius: 2rem;
437
+ font-size: 0.9rem;
438
+ font-weight: 500;
439
+ transition: all 0.2s ease;
440
+ }
441
+
442
+ .chips li:hover {
443
+ background: var(--accent-primary);
444
+ color: white;
445
+ transform: translateY(-2px);
446
+ }
447
+
448
+ .sub {
449
+ font-size: 1.25rem;
450
+ margin: 2rem 0 1rem;
451
+ color: var(--text-primary);
452
+ }
453
+
454
+ .edu {
455
+ list-style: none;
456
+ margin-bottom: 2rem;
457
+ }
458
+
459
+ .edu li {
460
+ margin-bottom: 0.5rem;
461
+ color: var(--text-secondary);
462
+ }
463
+
464
+ /* Contact */
465
+ .contact {
466
+ display: flex;
467
+ gap: 1rem;
468
+ justify-content: center;
469
+ flex-wrap: wrap;
470
+ }
471
+
472
+ /* Footer */
473
+ .site-footer {
474
+ background: var(--bg-secondary);
475
+ border-top: 1px solid var(--border-color);
476
+ padding: 2rem 0;
477
+ text-align: center;
478
+ }
479
+
480
+ .site-footer small {
481
+ color: var(--text-muted);
482
+ }
483
+
484
+ /* Theme Toggle */
485
+ #themeToggle {
486
+ background: none;
487
+ border: none;
488
+ font-size: 1.2rem;
489
+ cursor: pointer;
490
+ padding: 0.5rem;
491
+ border-radius: 0.5rem;
492
+ transition: background-color 0.2s ease;
493
+ }
494
+
495
+ #themeToggle:hover {
496
+ background: var(--bg-secondary);
497
+ }
498
+
499
+ /* Responsive Design */
500
+ @media (max-width: 768px) {
501
+ .nav-toggle {
502
+ display: block;
503
+ }
504
+
505
+ .nav-links {
506
+ position: absolute;
507
+ top: 100%;
508
+ left: 0;
509
+ right: 0;
510
+ background: var(--bg-primary);
511
+ border-top: 1px solid var(--border-color);
512
+ flex-direction: column;
513
+ padding: 1rem;
514
+ gap: 1rem;
515
+ transform: translateY(-100%);
516
+ opacity: 0;
517
+ visibility: hidden;
518
+ transition: all 0.3s ease;
519
+ }
520
+
521
+ .nav-links.active {
522
+ transform: translateY(0);
523
+ opacity: 1;
524
+ visibility: visible;
525
+ }
526
+
527
+ h1 {
528
+ font-size: 2.5rem;
529
+ }
530
+
531
+ h2 {
532
+ font-size: 2rem;
533
+ }
534
+
535
+ .hero {
536
+ padding: 6rem 0 3rem;
537
+ }
538
+
539
+ .cta {
540
+ flex-direction: column;
541
+ align-items: center;
542
+ }
543
+
544
+ .quick-facts {
545
+ flex-direction: column;
546
+ gap: 0.5rem;
547
+ }
548
+
549
+ .cards {
550
+ grid-template-columns: 1fr;
551
+ }
552
+
553
+ .timeline {
554
+ padding-left: 1rem;
555
+ }
556
+
557
+ .timeline li {
558
+ padding-left: 1.5rem;
559
+ }
560
+
561
+ .contact {
562
+ flex-direction: column;
563
+ align-items: center;
564
+ }
565
+ }
566
+
567
+ @media (max-width: 480px) {
568
+ .container {
569
+ padding: 0 1rem;
570
+ }
571
+
572
+ h1 {
573
+ font-size: 2rem;
574
+ }
575
+
576
+ .hero-subtitle {
577
+ font-size: 1.1rem;
578
+ }
579
+
580
+ .card {
581
+ padding: 1rem;
582
+ }
583
+
584
+ .content {
585
+ padding: 1rem;
586
+ }
587
+
588
+ .case summary {
589
+ padding: 1rem;
590
+ }
591
+
592
+ .case-details {
593
+ padding: 0 1rem 1rem;
594
+ }
595
+ }
596
+
597
+ /* Print Styles */
598
+ @media print {
599
+ .site-header,
600
+ .nav-toggle,
601
+ #themeToggle,
602
+ .cta {
603
+ display: none;
604
+ }
605
+
606
+ body {
607
+ background: white;
608
+ color: black;
609
+ }
610
+
611
+ .section {
612
+ padding: 2rem 0;
613
+ }
614
+
615
+ .hero {
616
+ padding: 2rem 0;
617
+ }
618
+ }
619
+
620
+ /* Smooth Scrolling */
621
+ html {
622
+ scroll-behavior: smooth;
623
+ }
624
+
625
+ /* Focus Styles */
626
+ :focus-visible {
627
+ outline: 2px solid var(--accent-primary);
628
+ outline-offset: 2px;
629
+ }
630
+
631
+ /* Animation */
632
+ @keyframes fadeInUp {
633
+ from {
634
+ opacity: 0;
635
+ transform: translateY(30px);
636
+ }
637
+ to {
638
+ opacity: 1;
639
+ transform: translateY(0);
640
+ }
641
+ }
642
+
643
+ .card,
644
+ .timeline li,
645
+ .case {
646
+ animation: fadeInUp 0.6s ease-out;
647
+ }
648
+
649
+ /* Loading State */
650
+ .loading {
651
+ opacity: 0.7;
652
+ pointer-events: none;
653
+ }
654
+
655
+ /* Accessibility */
656
+ @media (prefers-reduced-motion: reduce) {
657
+ * {
658
+ animation-duration: 0.01ms !important;
659
+ animation-iteration-count: 1 !important;
660
+ transition-duration: 0.01ms !important;
661
+ }
662
+
663
+ html {
664
+ scroll-behavior: auto;
665
+ }
666
+ }
667
+
668
+ /* High Contrast Mode */
669
+ @media (prefers-contrast: high) {
670
+ :root {
671
+ --border-color: #000000;
672
+ --text-secondary: #000000;
673
+ }
674
+
675
+ [data-theme="dark"] {
676
+ --border-color: #ffffff;
677
+ --text-secondary: #ffffff;
678
+ }
679
+ }