arshia-a1 commited on
Commit
a8624fc
·
verified ·
1 Parent(s): 7d9bbb0

Build a highly advanced, modern, and content-rich multilingual website for a programming and AI innovation group called “SuperNova”.

Browse files

🧠 Core Requirements:

Framework: React (Next.js preferred)

Languages: English, German, Persian with a language switcher (flag icons + dropdown).

Design: Futuristic, dark theme, neon gradients, glassmorphism, and smooth motion animations (Framer Motion / GSAP).

Fully responsive (desktop, tablet, mobile).

SEO optimized, fast, and accessible.

Include light/dark mode toggle.

📄 Pages to Include:

Home Page

Futuristic hero section with animated background (e.g., particles, glowing nebula).

Tagline: “Expanding the Boundaries of Code.”

Call-to-action buttons: “Explore Services” / “Join Us”.

3D scroll animations and parallax layers.

About Us

Interactive timeline describing SuperNova’s evolution.

Animated cards for team members (photo, name, skills, social links).

Mission and vision presented in a futuristic style.

Services

Full-stack development, AI/ML solutions, cloud infrastructure, UI/UX design.

Each service as an interactive glowing card with hover animations.

Include category filter and icons for technologies (Python, React, TensorFlow, etc.).

Courses

Online/offline tech courses: Python, JavaScript, AI, Web Dev.

Include filter/search system, multi-language descriptions, and animated enroll buttons.

Projects / Portfolio

Showcase featured projects with animated previews, tags, and 3D tilt hover.

Optional video previews of apps and dashboards.

Blog

Tech tutorials, AI insights, and programming tips.

SEO metadata and structured article layout.

Contact / Join Us

Futuristic glowing contact form with smooth input animations.

Include social media links and map section (optional).

🎨 Design & Visual Style:

Color Palette: Dark background with purple-blue-pink neon glow accents.

Effects: Glassmorphism, 3D parallax, soft glowing edges, and animated logo.

Typography: Futuristic sans-serif fonts (e.g., Orbitron, Exo 2, or Inter).

Motion: Subtle hover transitions and scroll-based animations.

💡 Advanced Features:

Animated SuperNova logo that pulses with light.

AI-powered chatbot assistant on the bottom right corner.

Testimonials carousel with auto-play and smooth fade transitions.

Dynamic content loading and CMS support (Sanity, Strapi, or MDX).

Performance optimization (image lazy-loading, prefetch, code splitting).

🚀 Overall Tone:

The site should feel visionary, futuristic, and professional — a digital experience that represents SuperNova as a next-generation coding and AI powerhouse.
Every element must express precision, innovation, and mastery in technology.

Output: Fully structured React or Next.js codebase with clean folder structure, Tailwind CSS styling, and English default content (ready for translation).

README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Quantumneon Devhub
3
- emoji: 🏢
4
- colorFrom: blue
5
- colorTo: red
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: QuantumNeon DevHub ⚡🚀
3
+ colorFrom: red
4
+ colorTo: green
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/course-filter.js ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CourseFilter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .filter-controls {
7
+ display: flex;
8
+ flex-wrap: wrap;
9
+ gap: 0.75rem;
10
+ margin-bottom: 2rem;
11
+ justify-content: center;
12
+ }
13
+
14
+ .filter-btn {
15
+ padding: 0.5rem 1.25rem;
16
+ border-radius: 9999px;
17
+ border: 1px solid rgba(255, 255, 255, 0.2);
18
+ background: transparent;
19
+ color: rgba(255, 255, 255, 0.8);
20
+ cursor: pointer;
21
+ transition: all 0.3s ease;
22
+ }
23
+
24
+ .filter-btn:hover, .filter-btn.active {
25
+ background: linear-gradient(90deg, #4f46e5, #ec4899);
26
+ color: white;
27
+ border-color: transparent;
28
+ }
29
+
30
+ .courses-grid {
31
+ display: grid;
32
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
33
+ gap: 1.5rem;
34
+ }
35
+
36
+ .course-card {
37
+ background: rgba(30, 41, 59, 0.7);
38
+ border-radius: 16px;
39
+ overflow: hidden;
40
+ border: 1px solid rgba(255, 255, 255, 0.1);
41
+ transition: all 0.3s ease;
42
+ }
43
+
44
+ .course-card:hover {
45
+ transform: translateY(-5px);
46
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
47
+ }
48
+
49
+ .course-image {
50
+ width: 100%;
51
+ height: 160px;
52
+ object-fit: cover;
53
+ }
54
+
55
+ .course-content {
56
+ padding: 1.5rem;
57
+ }
58
+
59
+ .course-category {
60
+ display: inline-block;
61
+ padding: 0.25rem 0.75rem;
62
+ border-radius: 9999px;
63
+ font-size: 0.75rem;
64
+ font-weight: 600;
65
+ margin-bottom: 0.75rem;
66
+ }
67
+
68
+ .web-dev {
69
+ background: rgba(79, 70, 229, 0.2);
70
+ color: #4f46e5;
71
+ }
72
+
73
+ .ai {
74
+ background: rgba(236, 72, 153, 0.2);
75
+ color: #ec4899;
76
+ }
77
+
78
+ .python {
79
+ background: rgba(16, 185, 129, 0.2);
80
+ color: #10b981;
81
+ }
82
+
83
+ .mobile {
84
+ background: rgba(245, 158, 11, 0.2);
85
+ color: #f59e0b;
86
+ }
87
+
88
+ .course-title {
89
+ font-size: 1.125rem;
90
+ font-weight: 600;
91
+ margin-bottom: 0.5rem;
92
+ color: white;
93
+ }
94
+
95
+ .course-desc {
96
+ color: rgba(255, 255, 255, 0.7);
97
+ font-size: 0.875rem;
98
+ margin-bottom: 1rem;
99
+ line-height: 1.5;
100
+ }
101
+
102
+ .course-footer {
103
+ display: flex;
104
+ justify-content: space-between;
105
+ align-items: center;
106
+ }
107
+
108
+ .course-price {
109
+ font-weight: 700;
110
+ color: white;
111
+ }
112
+
113
+ .course-duration {
114
+ display: flex;
115
+ align-items: center;
116
+ gap: 0.25rem;
117
+ font-size: 0.875rem;
118
+ color: rgba(255, 255, 255, 0.7);
119
+ }
120
+
121
+ .course-duration i {
122
+ width: 14px;
123
+ height: 14px;
124
+ }
125
+
126
+ .no-courses {
127
+ grid-column: 1 / -1;
128
+ text-align: center;
129
+ padding: 2rem;
130
+ color: rgba(255, 255, 255, 0.7);
131
+ }
132
+ </style>
133
+
134
+ <div class="filter-controls">
135
+ <button class="filter-btn active" data-filter="all">All Courses</button>
136
+ <button class="filter-btn" data-filter="web">Web Development</button>
137
+ <button class="filter-btn" data-filter="ai">AI & Machine Learning</button>
138
+ <button class="filter-btn" data-filter="python">Python</button>
139
+ <button class="filter-btn" data-filter="mobile">Mobile Development</button>
140
+ </
components/glowing-button.js ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class GlowingButton extends HTMLElement {
2
+ connectedCallback() {
3
+ const text = this.getAttribute('text') || 'Button';
4
+ const href = this.getAttribute('href') || '#';
5
+ const size = this.getAttribute('size') || 'md';
6
+
7
+ const sizes = {
8
+ sm: 'px-4 py-2 text-sm',
9
+ md: 'px-6 py-3 text-base',
10
+ lg: 'px-8 py-4 text-lg'
11
+ };
12
+
13
+ this.attachShadow({ mode: 'open' });
14
+ this.shadowRoot.innerHTML = `
15
+ <style>
16
+ .glow-btn {
17
+ position: relative;
18
+ display: inline-flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ font-weight: 600;
22
+ border-radius: 9999px;
23
+ overflow: hidden;
24
+ transition: all 0.3s ease;
25
+ z-index: 1;
26
+ }
27
+
28
+ .glow-btn::before {
29
+ content: '';
30
+ position: absolute;
31
+ top: 0;
32
+ left: 0;
33
+ right: 0;
34
+ bottom: 0;
35
+ background: linear-gradient(135deg, #4f46e5, #ec4899);
36
+ z-index: -1;
37
+ opacity: 1;
38
+ transition: opacity 0.3s ease;
39
+ }
40
+
41
+ .glow-btn::after {
42
+ content: '';
43
+ position: absolute;
44
+ top: -2px;
45
+ left: -2px;
46
+ right: -2px;
47
+ bottom: -2px;
48
+ background: linear-gradient(135deg, #4f46e5, #ec4899);
49
+ z-index: -2;
50
+ filter: blur(10px);
51
+ opacity: 0;
52
+ transition: opacity 0.3s ease;
53
+ }
54
+
55
+ .glow-btn:hover::after {
56
+ opacity: 0.8;
57
+ }
58
+
59
+ .glow-btn:hover {
60
+ transform: translateY(-2px);
61
+ box-shadow: 0 10px 20px -5px rgba(79, 70, 229, 0.4);
62
+ }
63
+
64
+ .glow-btn:active {
65
+ transform: translateY(0);
66
+ }
67
+ </style>
68
+
69
+ <a href="${href}" class="glow-btn ${sizes[size]} text-white">
70
+ ${text}
71
+ </a>
72
+ `;
73
+ }
74
+ }
75
+
76
+ customElements.define('glowing-button', GlowingButton);
components/language-switcher.js ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class LanguageSwitcher extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: inline-block;
8
+ position: relative;
9
+ }
10
+
11
+ .language-btn {
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 0.5rem;
15
+ background: rgba(255, 255, 255, 0.1);
16
+ border: 1px solid rgba(255, 255, 255, 0.2);
17
+ border-radius: 9999px;
18
+ padding: 0.5rem 1rem;
19
+ color: white;
20
+ cursor: pointer;
21
+ transition: all 0.3s ease;
22
+ }
23
+
24
+ .language-btn:hover {
25
+ background: rgba(255, 255, 255, 0.2);
26
+ }
27
+
28
+ .dropdown {
29
+ position: absolute;
30
+ right: 0;
31
+ top: calc(100% + 0.5rem);
32
+ background: rgba(30, 41, 59, 0.95);
33
+ border-radius: 0.75rem;
34
+ padding: 0.5rem 0;
35
+ min-width: 160px;
36
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
37
+ backdrop-filter: blur(16px);
38
+ -webkit-backdrop-filter: blur(16px);
39
+ opacity: 0;
40
+ visibility: hidden;
41
+ transform: translateY(10px);
42
+ transition: all 0.3s ease;
43
+ z-index: 100;
44
+ }
45
+
46
+ :host([open]) .dropdown {
47
+ opacity: 1;
48
+ visibility: visible;
49
+ transform: translateY(0);
50
+ }
51
+
52
+ .language-option {
53
+ display: flex;
54
+ align-items: center;
55
+ gap: 0.75rem;
56
+ padding: 0.75rem 1.5rem;
57
+ color: rgba(255, 255, 255, 0.8);
58
+ cursor: pointer;
59
+ transition: all 0.2s ease;
60
+ }
61
+
62
+ .language-option:hover {
63
+ background: rgba(79, 70, 229, 0.2);
64
+ color: white;
65
+ }
66
+
67
+ .language-flag {
68
+ width: 20px;
69
+ height: 20px;
70
+ border-radius: 50%;
71
+ object-fit: cover;
72
+ }
73
+ </style>
74
+
75
+ <div class="language-btn" id="toggleBtn">
76
+ <img src="/flags/${this.getAttribute('current')}.svg" class="language-flag" alt="Current language">
77
+ <span>${this.getAttribute('current').toUpperCase()}</span>
78
+ <i data-feather="chevron-down" width="16" height="16"></i>
79
+ </div>
80
+
81
+ <div class="dropdown">
82
+ <div class="language-option" data-lang="en">
83
+ <img src="/flags/en.svg" class="language-flag" alt="English">
84
+ <span>English</span>
85
+ </div>
86
+ <div class="language-option" data-lang="de">
87
+ <img src="/flags/de.svg" class="language-flag" alt="Deutsch">
88
+ <span>Deutsch</span>
89
+ </div>
90
+ <div class="language-option" data-lang="fa">
91
+ <img src="/flags/fa.svg" class="language-flag" alt="فارسی">
92
+ <span>فارسی</span>
93
+ </div>
94
+ </div>
95
+ `;
96
+
97
+ const toggleBtn = this.shadowRoot.getElementById('toggleBtn');
98
+ toggleBtn.addEventListener('click', () => {
99
+ this.toggleAttribute('open');
100
+ });
101
+
102
+ const options = this.shadowRoot.querySelectorAll('.language-option');
103
+ options.forEach(option => {
104
+ option.addEventListener('click', () => {
105
+ const lang = option.getAttribute('data-lang');
106
+ this.setAttribute('current', lang);
107
+ this.removeAttribute('open');
108
+ this.dispatchEvent(new CustomEvent('language-change', {
109
+ detail: { language: lang },
110
+ bubbles: true,
111
+ composed: true
112
+ }));
113
+ });
114
+ });
115
+ }
116
+ }
117
+
118
+ customElements.define('language-switcher', LanguageSwitcher);
components/navbar.js ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: fixed;
9
+ width: 100%;
10
+ top: 0;
11
+ left: 0;
12
+ z-index: 1000;
13
+ backdrop-filter: blur(16px) saturate(180%);
14
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
15
+ background-color: rgba(15, 23, 42, 0.75);
16
+ border-bottom: 1px solid rgba(255, 255, 255, 0.125);
17
+ }
18
+
19
+ nav {
20
+ max-width: 1200px;
21
+ margin: 0 auto;
22
+ padding: 1rem 2rem;
23
+ display: flex;
24
+ justify-content: space-between;
25
+ align-items: center;
26
+ }
27
+
28
+ .logo {
29
+ display: flex;
30
+ align-items: center;
31
+ gap: 0.5rem;
32
+ font-weight: 700;
33
+ font-size: 1.25rem;
34
+ color: white;
35
+ text-decoration: none;
36
+ }
37
+
38
+ .logo-icon {
39
+ color: #4f46e5;
40
+ }
41
+
42
+ .nav-links {
43
+ display: flex;
44
+ gap: 2rem;
45
+ }
46
+
47
+ .nav-links a {
48
+ color: rgba(255, 255, 255, 0.8);
49
+ text-decoration: none;
50
+ font-weight: 500;
51
+ transition: all 0.3s ease;
52
+ position: relative;
53
+ }
54
+
55
+ .nav-links a:hover {
56
+ color: white;
57
+ }
58
+
59
+ .nav-links a::after {
60
+ content: '';
61
+ position: absolute;
62
+ bottom: -2px;
63
+ left: 0;
64
+ width: 0;
65
+ height: 2px;
66
+ background: linear-gradient(90deg, #4f46e5, #ec4899);
67
+ transition: width 0.3s ease;
68
+ }
69
+
70
+ .nav-links a:hover::after {
71
+ width: 100%;
72
+ }
73
+
74
+ .nav-actions {
75
+ display: flex;
76
+ align-items: center;
77
+ gap: 1rem;
78
+ }
79
+
80
+ .language-selector {
81
+ background: transparent;
82
+ color: white;
83
+ border: 1px solid rgba(255, 255, 255, 0.2);
84
+ padding: 0.25rem 0.5rem;
85
+ border-radius: 4px;
86
+ cursor: pointer;
87
+ }
88
+
89
+ .theme-toggle {
90
+ background: transparent;
91
+ color: white;
92
+ border: none;
93
+ cursor: pointer;
94
+ padding: 0.25rem;
95
+ border-radius: 50%;
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ }
100
+
101
+ .mobile-menu-btn {
102
+ display: none;
103
+ background: transparent;
104
+ color: white;
105
+ border: none;
106
+ cursor: pointer;
107
+ }
108
+
109
+ @media (max-width: 768px) {
110
+ .nav-links, .nav-actions {
111
+ display: none;
112
+ }
113
+
114
+ .mobile-menu-btn {
115
+ display: block;
116
+ }
117
+ }
118
+ </style>
119
+
120
+ <nav>
121
+ <a href="/" class="logo">
122
+ <i data-feather="codesandbox" class="logo-icon"></i>
123
+ SuperNova
124
+ </a>
125
+
126
+ <div class="nav-links">
127
+ <a href="#about">About</a>
128
+ <a href="#services">Services</a>
129
+ <a href="#courses">Courses</a>
130
+ <a href="#contact">Contact</a>
131
+ </div>
132
+
133
+ <div class="nav-actions">
134
+ <language-switcher current="en"></language-switcher>
135
+ <script src="components/language-switcher.js"></script>
136
+ <button id="darkModeToggle" class="theme-toggle">
137
+ <i data-feather="moon"></i>
138
+ </button>
139
+ </div>
140
+
141
+ <button class="mobile-menu-btn">
142
+ <i data-feather="menu"></i>
143
+ </button>
144
+ </nav>
145
+ `;
146
+ }
147
+ }
148
+
149
+ customElements.define('custom-navbar', CustomNavbar);
components/particles-bg.js ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class ParticlesBackground extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: absolute;
9
+ top: 0;
10
+ left: 0;
11
+ width: 100%;
12
+ height: 100%;
13
+ z-index: 0;
14
+ }
15
+
16
+ #particles-js {
17
+ width: 100%;
18
+ height: 100%;
19
+ background-color: #0f172a;
20
+ background-image: url("");
21
+ background-repeat: no-repeat;
22
+ background-size: cover;
23
+ background-position: 50% 50%;
24
+ }
25
+ </style>
26
+
27
+ <div id="particles-js"></div>
28
+ `;
29
+
30
+ // Load particles.js dynamically
31
+ const script = document.createElement('script');
32
+ script.src = 'https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js';
33
+ script.onload = () => this.initParticles();
34
+ document.head.appendChild(script);
35
+ }
36
+
37
+ initParticles() {
38
+ if (typeof particlesJS !== 'undefined') {
39
+ particlesJS(this.shadowRoot.getElementById('particles-js'), {
40
+ "particles": {
41
+ "number": {
42
+ "value": 80,
43
+ "density": { "enable": true, "value_area": 800 }
44
+ },
45
+ "color": { "value": "#4f46e5" },
46
+ "shape": {
47
+ "type": "circle",
48
+ "stroke": { "width": 0, "color": "#000000" },
49
+ "polygon": { "nb_sides": 5 }
50
+ },
51
+ "opacity": {
52
+ "value": 0.5,
53
+ "random": false,
54
+ "anim": { "enable": false, "speed": 1, "opacity_min": 0.1, "sync": false }
55
+ },
56
+ "size": {
57
+ "value": 3,
58
+ "random": true,
59
+ "anim": { "enable": false, "speed": 40, "size_min": 0.1, "sync": false }
60
+ },
61
+ "line_linked": {
62
+ "enable": true,
63
+ "distance": 150,
64
+ "color": "#4f46e5",
65
+ "opacity": 0.4,
66
+ "width": 1
67
+ },
68
+ "move": {
69
+ "enable": true,
70
+ "speed": 2,
71
+ "direction": "none",
72
+ "random": false,
73
+ "straight": false,
74
+ "out_mode": "out",
75
+ "bounce": false,
76
+ "attract": { "enable": false, "rotateX": 600, "rotateY": 1200 }
77
+ }
78
+ },
79
+ "interactivity": {
80
+ "detect_on": "canvas",
81
+ "events": {
82
+ "onhover": { "enable": true, "mode": "grab" },
83
+ "onclick": { "enable": true, "mode": "push" },
84
+ "resize": true
85
+ },
86
+ "modes": {
87
+ "grab": { "distance": 140, "line_linked": { "opacity": 1 } },
88
+ "bubble": { "distance": 400, "size": 40, "duration": 2, "opacity": 8, "speed": 3 },
89
+ "repulse": { "distance": 200, "duration": 0.4 },
90
+ "push": { "particles_nb": 4 },
91
+ "remove": { "particles_nb": 2 }
92
+ }
93
+ },
94
+ "retina_detect": true
95
+ });
96
+ }
97
+ }
98
+ }
99
+
100
+ customElements.define('particles-bg', ParticlesBackground);
components/services.js ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomServices extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .services-grid {
7
+ display: grid;
8
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
9
+ gap: 2rem;
10
+ margin-top: 3rem;
11
+ }
12
+
13
+ .service-card {
14
+ background: rgba(30, 41, 59, 0.7);
15
+ border-radius: 16px;
16
+ padding: 2rem;
17
+ border: 1px solid rgba(255, 255, 255, 0.1);
18
+ transition: all 0.3s ease;
19
+ position: relative;
20
+ overflow: hidden;
21
+ backdrop-filter: blur(10px);
22
+ -webkit-backdrop-filter: blur(10px);
23
+ }
24
+
25
+ .service-card::before {
26
+ content: '';
27
+ position: absolute;
28
+ top: -2px;
29
+ left: -2px;
30
+ right: -2px;
31
+ bottom: -2px;
32
+ background: linear-gradient(45deg, #4f46e5, #ec4899);
33
+ z-index: -1;
34
+ border-radius: 18px;
35
+ opacity: 0;
36
+ transition: opacity 0.3s ease;
37
+ }
38
+
39
+ .service-card:hover {
40
+ transform: translateY(-10px);
41
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
42
+ }
43
+
44
+ .service-card:hover::before {
45
+ opacity: 1;
46
+ }
47
+
48
+ .service-icon {
49
+ width: 60px;
50
+ height: 60px;
51
+ display: flex;
52
+ align-items: center;
53
+ justify-content: center;
54
+ margin-bottom: 1.5rem;
55
+ border-radius: 12px;
56
+ background: linear-gradient(135deg, rgba(79, 70, 229, 0.2), rgba(236, 72, 153, 0.2));
57
+ }
58
+
59
+ .service-icon i {
60
+ color: #ec4899;
61
+ width: 28px;
62
+ height: 28px;
63
+ }
64
+
65
+ .service-title {
66
+ font-size: 1.25rem;
67
+ font-weight: 600;
68
+ margin-bottom: 1rem;
69
+ color: white;
70
+ }
71
+
72
+ .service-desc {
73
+ color: rgba(255, 255, 255, 0.8);
74
+ margin-bottom: 1.5rem;
75
+ line-height: 1.6;
76
+ }
77
+
78
+ .service-link {
79
+ display: flex;
80
+ align-items: center;
81
+ color: #4f46e5;
82
+ font-weight: 500;
83
+ text-decoration: none;
84
+ transition: color 0.3s ease;
85
+ }
86
+
87
+ .service-link:hover {
88
+ color: #ec4899;
89
+ }
90
+
91
+ .service-link i {
92
+ margin-left: 0.5rem;
93
+ width: 16px;
94
+ height: 16px;
95
+ }
96
+ </style>
97
+
98
+ <div class="services-grid">
99
+ <div class="service-card animate-on-scroll">
100
+ <div class="service-icon">
101
+ <i data-feather="globe"></i>
102
+ </div>
103
+ <h3 class="service-title">Web Development</h3>
104
+ <p class="service-desc">Building high-performance, scalable web applications with modern technologies like React, Next.js, and Node.js.</p>
105
+ <a href="#" class="service-link">
106
+ Learn more
107
+ <i data-feather="arrow-right"></i>
108
+ </a>
109
+ </div>
110
+
111
+ <div class="service-card animate-on-scroll">
112
+ <div class="service-icon">
113
+ <i data-feather="smartphone"></i>
114
+ </div>
115
+ <h3 class="service-title">Mobile Development</h3>
116
+ <p class="service-desc">Creating beautiful, native-feeling mobile apps for iOS and Android using React Native and Flutter.</p>
117
+ <a href="#" class="service-link">
118
+ Learn more
119
+ <i data-feather="arrow-right"></i>
120
+ </a>
121
+ </div>
122
+
123
+ <div class="service-card animate-on-scroll">
124
+ <div class="service-icon">
125
+ <i data-feather="cpu"></i>
126
+ </div>
127
+ <h3 class="service-title">AI Solutions</h3>
128
+ <p class="service-desc">Leveraging machine learning and artificial intelligence to solve complex business problems and automate processes.</p>
129
+ <a href="#" class="service-link">
130
+ Learn more
131
+ <i data-feather="arrow-right"></i>
132
+ </a>
133
+ </div>
134
+
135
+ <div class="service-card animate-on-scroll">
136
+ <div class="service-icon">
137
+ <i data-feather="cloud"></i>
138
+ </div>
139
+ <h3 class="service-title">Cloud Architecture</h3>
140
+ <p class="service-desc">Designing and implementing scalable cloud infrastructure on AWS, Google Cloud, and Azure platforms.</p>
141
+ <a href="#" class="service-link">
142
+ Learn more
143
+ <i data-feather="arrow-right"></i>
144
+ </a>
145
+ </div>
146
+
147
+ <div class="service-card animate-on-scroll">
148
+ <div class="service-icon">
149
+ <i data-feather="lock"></i>
150
+ </div>
151
+ <h3 class="service-title">Cybersecurity</h3>
152
+ <p class="service-desc">Protecting your digital assets with comprehensive security assessments, penetration testing, and robust security solutions.</p>
153
+ <a href="#" class="service-link">
154
+ Learn more
155
+ <i data-feather="arrow-right"></i>
156
+ </a>
157
+ </div>
158
+
159
+ <div class="service-card animate-on-scroll">
160
+ <div class="service-icon">
161
+ <i data-feather="bar-chart-2"></i>
162
+ </div>
163
+ <h3 class="service-title">Data Analytics</h3>
164
+ <p class="service-desc">Transforming raw data into actionable insights with powerful analytics tools and custom dashboard solutions.</p>
165
+ <a href="#" class="service-link">
166
+ Learn more
167
+ <i data-feather="arrow-right"></i>
168
+ </a>
169
+ </div>
170
+ </div>
171
+ `;
172
+ }
173
+ }
174
+
175
+ customElements.define('custom-services', CustomServices);
components/timeline.js ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomTimeline extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .timeline {
7
+ position: relative;
8
+ max-width: 1200px;
9
+ margin: 0 auto;
10
+ }
11
+
12
+ .timeline::after {
13
+ content: '';
14
+ position: absolute;
15
+ width: 4px;
16
+ background: linear-gradient(to bottom, #4f46e5, #ec4899);
17
+ top: 0;
18
+ bottom: 0;
19
+ left: 50%;
20
+ margin-left: -2px;
21
+ border-radius: 4px;
22
+ }
23
+
24
+ .timeline-item {
25
+ padding: 10px 40px;
26
+ position: relative;
27
+ width: 50%;
28
+ box-sizing: border-box;
29
+ }
30
+
31
+ .timeline-item::after {
32
+ content: '';
33
+ position: absolute;
34
+ width: 24px;
35
+ height: 24px;
36
+ right: -12px;
37
+ background: linear-gradient(135deg, #4f46e5, #ec4899);
38
+ border: 3px solid #0f172a;
39
+ top: 15px;
40
+ border-radius: 50%;
41
+ z-index: 1;
42
+ }
43
+
44
+ .left {
45
+ left: 0;
46
+ }
47
+
48
+ .right {
49
+ left: 50%;
50
+ }
51
+
52
+ .left::before {
53
+ content: " ";
54
+ height: 0;
55
+ position: absolute;
56
+ top: 22px;
57
+ width: 0;
58
+ z-index: 1;
59
+ right: 30px;
60
+ border: medium solid rgba(255, 255, 255, 0.1);
61
+ border-width: 10px 0 10px 10px;
62
+ border-color: transparent transparent transparent rgba(255, 255, 255, 0.1);
63
+ }
64
+
65
+ .right::before {
66
+ content: " ";
67
+ height: 0;
68
+ position: absolute;
69
+ top: 22px;
70
+ width: 0;
71
+ z-index: 1;
72
+ left: 30px;
73
+ border: medium solid rgba(255, 255, 255, 0.1);
74
+ border-width: 10px 10px 10px 0;
75
+ border-color: transparent rgba(255, 255, 255, 0.1) transparent transparent;
76
+ }
77
+
78
+ .right::after {
79
+ left: -12px;
80
+ }
81
+
82
+ .timeline-content {
83
+ padding: 20px 30px;
84
+ background: rgba(30, 41, 59, 0.7);
85
+ border-radius: 12px;
86
+ border: 1px solid rgba(255, 255, 255, 0.1);
87
+ backdrop-filter: blur(10px);
88
+ -webkit-backdrop-filter: blur(10px);
89
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
90
+ }
91
+
92
+ .timeline-content:hover {
93
+ transform: translateY(-5px);
94
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
95
+ }
96
+
97
+ .timeline-date {
98
+ color: #ec4899;
99
+ font-weight: 600;
100
+ margin-bottom: 8px;
101
+ }
102
+
103
+ .timeline-title {
104
+ font-size: 1.25rem;
105
+ font-weight: 600;
106
+ margin-bottom: 8px;
107
+ color: white;
108
+ }
109
+
110
+ .timeline-desc {
111
+ color: rgba(255, 255, 255, 0.8);
112
+ line-height: 1.6;
113
+ }
114
+
115
+ @media screen and (max-width: 768px) {
116
+ .timeline::after {
117
+ left: 31px;
118
+ }
119
+
120
+ .timeline-item {
121
+ width: 100%;
122
+ padding-left: 70px;
123
+ padding-right: 25px;
124
+ }
125
+
126
+ .timeline-item::before {
127
+ left: 60px;
128
+ border: medium solid rgba(255, 255, 255, 0.1);
129
+ border-width: 10px 10px 10px 0;
130
+ border-color: transparent rgba(255, 255, 255, 0.1) transparent transparent;
131
+ }
132
+
133
+ .left::after, .right::after {
134
+ left: 19px;
135
+ }
136
+
137
+ .right {
138
+ left: 0%;
139
+ }
140
+ }
141
+ </style>
142
+
143
+ <div class="timeline">
144
+ <div class="timeline-item left animate-on-scroll">
145
+ <div class="timeline-content">
146
+ <div class="timeline-date">2015</div>
147
+ <h3 class="timeline-title">Foundation</h3>
148
+ <p class="timeline-desc">SuperNova was founded by a group of passionate developers with a vision to push the boundaries of technology and create innovative solutions.</p>
149
+ </div>
150
+ </div>
151
+
152
+ <div class="timeline-item right animate-on-scroll">
153
+ <div class="timeline-content">
154
+ <div class="timeline-date">2017</div>
155
+ <h3 class="timeline-title">First Major Project</h3>
156
+ <p class="timeline-desc">Developed a groundbreaking AI solution for a Fortune 500 company, establishing our reputation in the industry.</p>
157
+ </div>
158
+ </div>
159
+
160
+ <div class="timeline-item left animate-on-scroll">
161
+ <div class="timeline-content">
162
+ <div class="timeline-date">2019</div>
163
+ <h3 class="timeline-title">Global Expansion</h3>
164
+ <p class="timeline-desc">Opened offices in three new countries and grew our team to over 50 world-class developers and engineers.</p>
165
+ </div>
166
+ </div>
167
+
168
+ <div class="timeline-item right animate-on-scroll">
169
+ <div class="timeline-content">
170
+ <div class="timeline-date">2021</div>
171
+ <h3 class="timeline-title">Education Initiative</h3>
172
+ <p class="timeline-desc">Launched our coding education platform to train the next generation of developers with cutting-edge courses.</p>
173
+ </div>
174
+ </div>
175
+
176
+ <div class="timeline-item left animate-on-scroll">
177
+ <div class="timeline-content">
178
+ <div class="timeline-date">2023</div>
179
+ <h3 class="timeline-title">Quantum Computing Division</h3>
180
+ <p class="timeline-desc">Established a new research division focused on quantum computing and its applications in software development.</p>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ `;
185
+ }
186
+ }
187
+
188
+ customElements.define('custom-timeline', CustomTimeline);
index.html CHANGED
@@ -1,19 +1,146 @@
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" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>SuperNova | Expanding the boundaries of code</title>
7
+ <meta name="description" content="SuperNova - A professional programming and software development group building the future of technology">
8
+ <link rel="icon" type="image/x-icon" href="/favicon.ico">
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
12
+ <link rel="stylesheet" href="style.css">
13
+ <script>
14
+ tailwind.config = {
15
+ darkMode: 'class',
16
+ theme: {
17
+ extend: {
18
+ colors: {
19
+ primary: {
20
+ 500: '#4f46e5',
21
+ 600: '#4338ca',
22
+ },
23
+ secondary: {
24
+ 500: '#ec4899',
25
+ 600: '#db2777',
26
+ },
27
+ dark: {
28
+ 900: '#0f172a',
29
+ 800: '#1e293b',
30
+ 700: '#334155',
31
+ }
32
+ },
33
+ animation: {
34
+ 'pulse-slow': 'pulse 6s infinite cubic-bezier(0.4, 0, 0.6, 1)',
35
+ 'float': 'float 6s ease-in-out infinite',
36
+ },
37
+ keyframes: {
38
+ float: {
39
+ '0%, 100%': { transform: 'translateY(0)' },
40
+ '50%': { transform: 'translateY(-20px)' },
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ </script>
47
+ </head>
48
+ <body class="bg-dark-900 text-gray-200 min-h-screen overflow-x-hidden">
49
+ <!-- Navbar Component -->
50
+ <script src="components/navbar.js"></script>
51
+ <custom-navbar></custom-navbar>
52
+
53
+ <!-- Hero Section -->
54
+ <section class="relative h-screen flex items-center justify-center overflow-hidden">
55
+ <particles-bg></particles-bg>
56
+ <script src="components/particles-bg.js"></script>
57
+ <div class="relative z-10 text-center px-4">
58
+ <h1 class="text-5xl md:text-7xl font-bold mb-6 bg-clip-text text-transparent bg-gradient-to-r from-primary-500 to-secondary-500">
59
+ SuperNova
60
+ </h1>
61
+ <p class="text-xl md:text-2xl mb-8 max-w-2xl mx-auto">Expanding the boundaries of code</p>
62
+ <div class="flex gap-4 justify-center">
63
+ <glowing-button href="#services" text="Explore Services" size="lg"></glowing-button>
64
+ <glowing-button href="#contact" text="Contact Us" size="lg" class="ml-4"></glowing-button>
65
+ <script src="components/glowing-button.js"></script>
66
+ </div>
67
+ </div>
68
+ <div class="absolute bottom-10 left-0 right-0 flex justify-center">
69
+ <a href="#about" class="animate-bounce">
70
+ <i data-feather="chevron-down" class="w-8 h-8"></i>
71
+ </a>
72
+ </div>
73
+ </section>
74
+
75
+ <!-- About Section -->
76
+ <section id="about" class="py-20 px-4">
77
+ <div class="max-w-6xl mx-auto">
78
+ <h2 class="text-3xl md:text-4xl font-bold mb-12 text-center">Our Story</h2>
79
+ <div class="relative">
80
+ <!-- Timeline component -->
81
+ <script src="components/timeline.js"></script>
82
+ <custom-timeline></custom-timeline>
83
+ </div>
84
+ </div>
85
+ </section>
86
+
87
+ <!-- Services Section -->
88
+ <section id="services" class="py-20 bg-dark-800 px-4">
89
+ <div class="max-w-6xl mx-auto">
90
+ <h2 class="text-3xl md:text-4xl font-bold mb-4 text-center">What We Offer</h2>
91
+ <p class="text-xl text-center mb-12 max-w-3xl mx-auto">Cutting-edge solutions to propel your business into the future</p>
92
+
93
+ <!-- Services Grid -->
94
+ <script src="components/services.js"></script>
95
+ <custom-services></custom-services>
96
+ </div>
97
+ </section>
98
+
99
+ <!-- Courses Section -->
100
+ <section id="courses" class="py-20 px-4">
101
+ <div class="max-w-6xl mx-auto">
102
+ <h2 class="text-3xl md:text-4xl font-bold mb-4 text-center">Our Courses</h2>
103
+ <p class="text-xl text-center mb-12 max-w-3xl mx-auto">Master the technologies shaping tomorrow</p>
104
+
105
+ <!-- Courses Filter -->
106
+ <script src="components/course-filter.js"></script>
107
+ <course-filter></course-filter>
108
+ </div>
109
+ </section>
110
+
111
+ <!-- Testimonials -->
112
+ <section class="py-20 bg-dark-800 px-4">
113
+ <div class="max-w-6xl mx-auto">
114
+ <h2 class="text-3xl md:text-4xl font-bold mb-12 text-center">What Our Clients Say</h2>
115
+
116
+ <!-- Testimonial Carousel -->
117
+ <script src="components/testimonials.js"></script>
118
+ <testimonial-carousel></testimonial-carousel>
119
+ </div>
120
+ </section>
121
+
122
+ <!-- Contact Section -->
123
+ <section id="contact" class="py-20 px-4">
124
+ <div class="max-w-6xl mx-auto">
125
+ <h2 class="text-3xl md:text-4xl font-bold mb-4 text-center">Join Us</h2>
126
+ <p class="text-xl text-center mb-12 max-w-3xl mx-auto">Ready to start your next project? Get in touch today</p>
127
+
128
+ <!-- Contact Form -->
129
+ <script src="components/contact-form.js"></script>
130
+ <contact-form></contact-form>
131
+ </div>
132
+ </section>
133
+
134
+ <!-- Footer -->
135
+ <script src="components/footer.js"></script>
136
+ <custom-footer></custom-footer>
137
+
138
+ <!-- Scripts -->
139
+ <script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script>
140
+ <script src="script.js"></script>
141
+ <script>
142
+ feather.replace();
143
+ </script>
144
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
145
+ </body>
146
+ </html>
script.js ADDED
@@ -0,0 +1,206 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ // Language change event handler
3
+ document.addEventListener('language-change', (e) => {
4
+ console.log(`Language changed to: ${e.detail.language}`);
5
+ // In a real app, you would handle translations here
6
+ });
7
+
8
+ // Dark/Light mode toggle
9
+ const darkModeToggle = document.getElementById('darkModeToggle');
10
+ if (darkModeToggle) {
11
+ darkModeToggle.addEventListener('click', () => {
12
+ document.documentElement.classList.toggle('dark');
13
+ localStorage.setItem('darkMode', document.documentElement.classList.contains('dark'));
14
+ });
15
+ }
16
+
17
+ // Check for saved dark mode preference
18
+ if (localStorage.getItem('darkMode') === 'false') {
19
+ document.documentElement.classList.remove('dark');
20
+ }
21
+
22
+ // Animate elements when they come into view
23
+ const animateOnScroll = () => {
24
+ const elements = document.querySelectorAll('.animate-on-scroll');
25
+ elements.forEach(element => {
26
+ const elementPosition = element.getBoundingClientRect().top;
27
+ const screenPosition = window.innerHeight / 1.3;
28
+
29
+ if (elementPosition < screenPosition) {
30
+ element.classList.add('animated');
31
+ }
32
+ });
33
+ };
34
+
35
+ window.addEventListener('scroll', animateOnScroll);
36
+ animateOnScroll(); // Run once on page load
37
+
38
+ // Smooth scrolling for anchor links
39
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
40
+ anchor.addEventListener('click', function(e) {
41
+ e.preventDefault();
42
+ document.querySelector(this.getAttribute('href')).scrollIntoView({
43
+ behavior: 'smooth'
44
+ });
45
+ });
46
+ });
47
+
48
+ // Initialize components
49
+ document.addEventListener('DOMContentLoaded', function() {
50
+ "particles": {
51
+ "number": {
52
+ "value": 80,
53
+ "density": {
54
+ "enable": true,
55
+ "value_area": 800
56
+ }
57
+ },
58
+ "color": {
59
+ "value": "#4f46e5"
60
+ },
61
+ "shape": {
62
+ "type": "circle",
63
+ "stroke": {
64
+ "width": 0,
65
+ "color": "#000000"
66
+ },
67
+ "polygon": {
68
+ "nb_sides": 5
69
+ }
70
+ },
71
+ "opacity": {
72
+ "value": 0.5,
73
+ "random": false,
74
+ "anim": {
75
+ "enable": false,
76
+ "speed": 1,
77
+ "opacity_min": 0.1,
78
+ "sync": false
79
+ }
80
+ },
81
+ "size": {
82
+ "value": 3,
83
+ "random": true,
84
+ "anim": {
85
+ "enable": false,
86
+ "speed": 40,
87
+ "size_min": 0.1,
88
+ "sync": false
89
+ }
90
+ },
91
+ "line_linked": {
92
+ "enable": true,
93
+ "distance": 150,
94
+ "color": "#4f46e5",
95
+ "opacity": 0.4,
96
+ "width": 1
97
+ },
98
+ "move": {
99
+ "enable": true,
100
+ "speed": 2,
101
+ "direction": "none",
102
+ "random": false,
103
+ "straight": false,
104
+ "out_mode": "out",
105
+ "bounce": false,
106
+ "attract": {
107
+ "enable": false,
108
+ "rotateX": 600,
109
+ "rotateY": 1200
110
+ }
111
+ }
112
+ },
113
+ "interactivity": {
114
+ "detect_on": "canvas",
115
+ "events": {
116
+ "onhover": {
117
+ "enable": true,
118
+ "mode": "grab"
119
+ },
120
+ "onclick": {
121
+ "enable": true,
122
+ "mode": "push"
123
+ },
124
+ "resize": true
125
+ },
126
+ "modes": {
127
+ "grab": {
128
+ "distance": 140,
129
+ "line_linked": {
130
+ "opacity": 1
131
+ }
132
+ },
133
+ "bubble": {
134
+ "distance": 400,
135
+ "size": 40,
136
+ "duration": 2,
137
+ "opacity": 8,
138
+ "speed": 3
139
+ },
140
+ "repulse": {
141
+ "distance": 200,
142
+ "duration": 0.4
143
+ },
144
+ "push": {
145
+ "particles_nb": 4
146
+ },
147
+ "remove": {
148
+ "particles_nb": 2
149
+ }
150
+ }
151
+ },
152
+ "retina_detect": true
153
+ });
154
+ }
155
+
156
+ // Dark/Light mode toggle
157
+ const darkModeToggle = document.getElementById('darkModeToggle');
158
+ if (darkModeToggle) {
159
+ darkModeToggle.addEventListener('click', () => {
160
+ document.documentElement.classList.toggle('dark');
161
+ localStorage.setItem('darkMode', document.documentElement.classList.contains('dark'));
162
+ });
163
+ }
164
+
165
+ // Check for saved dark mode preference
166
+ if (localStorage.getItem('darkMode') === 'false') {
167
+ document.documentElement.classList.remove('dark');
168
+ }
169
+
170
+ // Language switcher functionality
171
+ const languageSwitcher = document.getElementById('languageSwitcher');
172
+ if (languageSwitcher) {
173
+ languageSwitcher.addEventListener('change', (e) => {
174
+ const lang = e.target.value;
175
+ // Here you would typically reload the page with the new language
176
+ console.log(`Language changed to: ${lang}`);
177
+ // In a real app, you would handle translations here
178
+ });
179
+ }
180
+
181
+ // Animate elements when they come into view
182
+ const animateOnScroll = () => {
183
+ const elements = document.querySelectorAll('.animate-on-scroll');
184
+ elements.forEach(element => {
185
+ const elementPosition = element.getBoundingClientRect().top;
186
+ const screenPosition = window.innerHeight / 1.3;
187
+
188
+ if (elementPosition < screenPosition) {
189
+ element.classList.add('animated');
190
+ }
191
+ });
192
+ };
193
+
194
+ window.addEventListener('scroll', animateOnScroll);
195
+ animateOnScroll(); // Run once on page load
196
+ });
197
+
198
+ // Smooth scrolling for anchor links
199
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
200
+ anchor.addEventListener('click', function(e) {
201
+ e.preventDefault();
202
+ document.querySelector(this.getAttribute('href')).scrollIntoView({
203
+ behavior: 'smooth'
204
+ });
205
+ });
206
+ });
style.css CHANGED
@@ -1,28 +1,96 @@
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=Space+Grotesk:wght@300;400;500;600;700&display=swap');
2
+
3
+ * {
4
+ font-family: 'Space Grotesk', sans-serif;
5
+ scroll-behavior: smooth;
6
+ }
7
+
8
+ ::selection {
9
+ background: rgba(79, 70, 229, 0.3);
10
+ }
11
+
12
+ /* Custom Scrollbar */
13
+ ::-webkit-scrollbar {
14
+ width: 8px;
15
+ }
16
+
17
+ ::-webkit-scrollbar-track {
18
+ background: #0f172a;
19
+ }
20
+
21
+ ::-webkit-scrollbar-thumb {
22
+ background: #4f46e5;
23
+ border-radius: 4px;
24
  }
25
 
26
+ ::-webkit-scrollbar-thumb:hover {
27
+ background: #4338ca;
 
28
  }
29
 
30
+ /* Particle.js container */
31
+ #particles-js {
32
+ position: absolute;
33
+ width: 100%;
34
+ height: 100%;
35
+ background-color: #0f172a;
36
+ background-image: url("");
37
+ background-repeat: no-repeat;
38
+ background-size: cover;
39
+ background-position: 50% 50%;
40
+ z-index: 0;
41
  }
42
 
43
+ /* Glassmorphism effect */
44
+ .glass {
45
+ backdrop-filter: blur(16px) saturate(180%);
46
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
47
+ background-color: rgba(15, 23, 42, 0.75);
48
+ border: 1px solid rgba(255, 255, 255, 0.125);
49
  }
50
 
51
+ /* Neon glow effect */
52
+ .neon {
53
+ box-shadow: 0 0 10px rgba(79, 70, 229, 0.5),
54
+ 0 0 20px rgba(79, 70, 229, 0.3),
55
+ 0 0 30px rgba(79, 70, 229, 0.1);
56
  }
57
+
58
+ .neon-hover:hover {
59
+ box-shadow: 0 0 15px rgba(79, 70, 229, 0.7),
60
+ 0 0 25px rgba(79, 70, 229, 0.5),
61
+ 0 0 35px rgba(79, 70, 229, 0.3);
62
+ }
63
+
64
+ /* Input glow effect */
65
+ .input-glow:focus {
66
+ box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.3);
67
+ border-color: rgba(79, 70, 229, 0.5);
68
+ }
69
+
70
+ /* Pulse animation for important elements */
71
+ .pulse-element {
72
+ animation: pulse 2s infinite;
73
+ }
74
+
75
+ @keyframes pulse {
76
+ 0% {
77
+ opacity: 0.7;
78
+ }
79
+ 50% {
80
+ opacity: 1;
81
+ }
82
+ 100% {
83
+ opacity: 0.7;
84
+ }
85
+ }
86
+
87
+ /* Responsive adjustments */
88
+ @media (max-width: 768px) {
89
+ #hero h1 {
90
+ font-size: 3rem;
91
+ }
92
+
93
+ #hero p {
94
+ font-size: 1.25rem;
95
+ }
96
+ }