totes commited on
Commit
3c7057b
·
verified ·
1 Parent(s): feb94bc

How do Kimi-K2 Instruct and Kimi-K2 Thinking differ and which is the more powerful?

Browse files
Files changed (6) hide show
  1. README.md +8 -5
  2. components/footer.js +224 -0
  3. components/navbar.js +299 -0
  4. index.html +504 -19
  5. script.js +331 -0
  6. style.css +381 -18
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Kimi Kombat Arena
3
- emoji: 🐢
4
- colorFrom: red
5
- colorTo: yellow
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: Kimi Kombat Arena ⚔️
3
+ colorFrom: gray
4
+ colorTo: purple
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/footer.js ADDED
@@ -0,0 +1,224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class KimiFooter extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+
7
+ connectedCallback() {
8
+ this.render();
9
+ }
10
+
11
+ render() {
12
+ this.shadowRoot.innerHTML = `
13
+ <style>
14
+ :host {
15
+ --teal-500: #14b8a6;
16
+ --purple-500: #a855f7;
17
+ --glass-bg: rgba(255, 255, 255, 0.1);
18
+ --glass-border: rgba(255, 255, 255, 0.2);
19
+ --text-primary: #1e293b;
20
+ --text-secondary: #64748b;
21
+ }
22
+
23
+ [data-theme="dark"] {
24
+ --glass-bg: rgba(15, 23, 42, 0.4);
25
+ --glass-border: rgba(255, 255, 255, 0.1);
26
+ --text-primary: #f1f5f9;
27
+ --text-secondary: #94a3b8;
28
+ }
29
+
30
+ * {
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ .footer {
35
+ background: var(--glass-bg);
36
+ backdrop-filter: blur(10px);
37
+ -webkit-backdrop-filter: blur(10px);
38
+ border-top: 1px solid var(--glass-border);
39
+ padding: 4rem 0 2rem;
40
+ margin-top: 4rem;
41
+ }
42
+
43
+ .container {
44
+ max-width: 1200px;
45
+ margin: 0 auto;
46
+ padding: 0 2rem;
47
+ }
48
+
49
+ .footer-content {
50
+ display: grid;
51
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
52
+ gap: 2rem;
53
+ margin-bottom: 3rem;
54
+ }
55
+
56
+ .footer-section h3 {
57
+ color: var(--text-primary);
58
+ font-size: 1.25rem;
59
+ font-weight: 800;
60
+ margin-bottom: 1rem;
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 0.5rem;
64
+ }
65
+
66
+ .footer-section p, .footer-section a {
67
+ color: var(--text-secondary);
68
+ text-decoration: none;
69
+ line-height: 1.8;
70
+ transition: all 0.3s ease;
71
+ display: block;
72
+ }
73
+
74
+ .footer-section a:hover {
75
+ color: var(--teal-500);
76
+ transform: translateX(5px);
77
+ }
78
+
79
+ .social-links {
80
+ display: flex;
81
+ gap: 1rem;
82
+ margin-top: 1rem;
83
+ }
84
+
85
+ .social-link {
86
+ width: 40px;
87
+ height: 40px;
88
+ border-radius: 50%;
89
+ background: var(--glass-bg);
90
+ border: 1px solid var(--glass-border);
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: center;
94
+ transition: all 0.3s ease;
95
+ color: var(--text-secondary);
96
+ }
97
+
98
+ .social-link:hover {
99
+ background: var(--teal-500);
100
+ color: white;
101
+ transform: translateY(-3px);
102
+ }
103
+
104
+ .footer-bottom {
105
+ text-align: center;
106
+ padding-top: 2rem;
107
+ border-top: 1px solid var(--glass-border);
108
+ color: var(--text-secondary);
109
+ font-size: 0.9rem;
110
+ }
111
+
112
+ .footer-bottom a {
113
+ color: var(--teal-500);
114
+ text-decoration: none;
115
+ font-weight: 600;
116
+ }
117
+
118
+ .tech-stack {
119
+ display: flex;
120
+ flex-wrap: wrap;
121
+ gap: 0.5rem;
122
+ margin-top: 1rem;
123
+ }
124
+
125
+ .tech-badge {
126
+ padding: 0.25rem 0.75rem;
127
+ border-radius: 9999px;
128
+ font-size: 0.75rem;
129
+ background: var(--glass-bg);
130
+ border: 1px solid var(--glass-border);
131
+ color: var(--text-primary);
132
+ }
133
+
134
+ @media (max-width: 768px) {
135
+ .footer-content {
136
+ grid-template-columns: 1fr;
137
+ text-align: center;
138
+ }
139
+
140
+ .social-links {
141
+ justify-content: center;
142
+ }
143
+
144
+ .container {
145
+ padding: 0 1rem;
146
+ }
147
+ }
148
+ </style>
149
+
150
+ <footer class="footer">
151
+ <div class="container">
152
+ <div class="footer-content">
153
+ <div class="footer-section">
154
+ <h3>
155
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
156
+ <path d="M12 2L2 7L12 12L22 7L12 2Z"></path>
157
+ <path d="M2 17L12 22L22 17"></path>
158
+ <path d="M2 12L12 17L22 12"></path>
159
+ </svg>
160
+ Kimi Kombat
161
+ </h3>
162
+ <p>Your definitive guide to understanding and comparing Kimi-K2 AI models. Making AI model selection transparent and data-driven.</p>
163
+ <div class="social-links">
164
+ <a href="#" class="social-link" aria-label="GitHub">
165
+ <i data-feather="github" class="w-5 h-5"></i>
166
+ </a>
167
+ <a href="#" class="social-link" aria-label="Twitter">
168
+ <i data-feather="twitter" class="w-5 h-5"></i>
169
+ </a>
170
+ <a href="#" class="social-link" aria-label="LinkedIn">
171
+ <i data-feather="linkedin" class="w-5 h-5"></i>
172
+ </a>
173
+ </div>
174
+ </div>
175
+
176
+ <div class="footer-section">
177
+ <h3>Quick Links</h3>
178
+ <a href="#comparison">Model Comparison</a>
179
+ <a href="#specs">Technical Specs</a>
180
+ <a href="#benchmarks">Benchmarks</a>
181
+ <a href="#faq">FAQ</a>
182
+ </div>
183
+
184
+ <div class="footer-section">
185
+ <h3>Resources</h3>
186
+ <a href="#">API Documentation</a>
187
+ <a href="#">Integration Guide</a>
188
+ <a href="#">Pricing Calculator</a>
189
+ <a href="#">Community Forum</a>
190
+ </div>
191
+
192
+ <div class="footer-section">
193
+ <h3>Tech Stack</h3>
194
+ <div class="tech-stack">
195
+ <span class="tech-badge">HTML5</span>
196
+ <span class="tech-badge">TailwindCSS</span>
197
+ <span class="tech-badge">Vanilla JS</span>
198
+ <span class="tech-badge">Web Components</span>
199
+ <span class="tech-badge">Feather Icons</span>
200
+ </div>
201
+ <p style="margin-top: 1rem; font-size: 0.85rem;">
202
+ Built with ❤️ for the AI community
203
+ </p>
204
+ </div>
205
+ </div>
206
+
207
+ <div class="footer-bottom">
208
+ <p>
209
+ © 2024 Kimi Kombat. All comparisons are based on publicly available benchmarks and specifications.
210
+ <a href="#">Privacy Policy</a> | <a href="#">Terms of Service</a>
211
+ </p>
212
+ </div>
213
+ </div>
214
+ </footer>
215
+ `;
216
+
217
+ // Re-render feather icons
218
+ if (window.feather) {
219
+ setTimeout(() => window.feather.replace(), 100);
220
+ }
221
+ }
222
+ }
223
+
224
+ customElements.define('kimi-footer', KimiFooter);
components/navbar.js ADDED
@@ -0,0 +1,299 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class KimiNavbar extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.attachShadow({ mode: 'open' });
5
+ this.theme = 'light';
6
+ }
7
+
8
+ connectedCallback() {
9
+ this.render();
10
+ this.bindEvents();
11
+ }
12
+
13
+ render() {
14
+ this.shadowRoot.innerHTML = `
15
+ <style>
16
+ :host {
17
+ --teal-500: #14b8a6;
18
+ --teal-600: #0d9488;
19
+ --purple-500: #a855f7;
20
+ --glass-bg: rgba(255, 255, 255, 0.1);
21
+ --glass-border: rgba(255, 255, 255, 0.2);
22
+ --text-primary: #1e293b;
23
+ --text-secondary: #64748b;
24
+ }
25
+
26
+ [data-theme="dark"] {
27
+ --glass-bg: rgba(15, 23, 42, 0.4);
28
+ --glass-border: rgba(255, 255, 255, 0.1);
29
+ --text-primary: #f1f5f9;
30
+ --text-secondary: #94a3b8;
31
+ }
32
+
33
+ * {
34
+ box-sizing: border-box;
35
+ }
36
+
37
+ .navbar {
38
+ position: fixed;
39
+ top: 0;
40
+ left: 0;
41
+ right: 0;
42
+ z-index: 1000;
43
+ padding: 1rem 0;
44
+ transition: all 0.3s ease;
45
+ background: transparent;
46
+ }
47
+
48
+ .navbar[scrolled="true"] {
49
+ background: var(--glass-bg);
50
+ backdrop-filter: blur(10px);
51
+ -webkit-backdrop-filter: blur(10px);
52
+ border-bottom: 1px solid var(--glass-border);
53
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
54
+ }
55
+
56
+ .container {
57
+ max-width: 1200px;
58
+ margin: 0 auto;
59
+ padding: 0 2rem;
60
+ display: flex;
61
+ justify-content: space-between;
62
+ align-items: center;
63
+ }
64
+
65
+ .logo {
66
+ display: flex;
67
+ align-items: center;
68
+ gap: 0.75rem;
69
+ text-decoration: none;
70
+ color: var(--text-primary);
71
+ font-size: 1.25rem;
72
+ font-weight: 800;
73
+ transition: all 0.3s ease;
74
+ }
75
+
76
+ .logo:hover {
77
+ transform: scale(1.05);
78
+ }
79
+
80
+ .logo-icon {
81
+ width: 40px;
82
+ height: 40px;
83
+ background: linear-gradient(135deg, var(--teal-500), var(--purple-500));
84
+ border-radius: 12px;
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: center;
88
+ color: white;
89
+ box-shadow: 0 4px 10px rgba(20, 184, 166, 0.3);
90
+ }
91
+
92
+ .nav-links {
93
+ display: flex;
94
+ gap: 2rem;
95
+ align-items: center;
96
+ }
97
+
98
+ .nav-link {
99
+ text-decoration: none;
100
+ color: var(--text-primary);
101
+ font-weight: 600;
102
+ font-size: 0.95rem;
103
+ position: relative;
104
+ transition: all 0.3s ease;
105
+ padding: 0.5rem 0;
106
+ }
107
+
108
+ .nav-link::after {
109
+ content: '';
110
+ position: absolute;
111
+ bottom: 0;
112
+ left: 0;
113
+ width: 0;
114
+ height: 2px;
115
+ background: linear-gradient(90deg, var(--teal-500), var(--purple-500));
116
+ transition: width 0.3s ease;
117
+ }
118
+
119
+ .nav-link:hover::after {
120
+ width: 100%;
121
+ }
122
+
123
+ .theme-toggle {
124
+ background: var(--glass-bg);
125
+ border: 1px solid var(--glass-border);
126
+ border-radius: 50%;
127
+ width: 40px;
128
+ height: 40px;
129
+ display: flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ cursor: pointer;
133
+ transition: all 0.3s ease;
134
+ color: var(--text-primary);
135
+ }
136
+
137
+ .theme-toggle:hover {
138
+ transform: rotate(180deg) scale(1.1);
139
+ background: var(--teal-500);
140
+ color: white;
141
+ }
142
+
143
+ .mobile-toggle {
144
+ display: none;
145
+ background: var(--glass-bg);
146
+ border: 1px solid var(--glass-border);
147
+ border-radius: 8px;
148
+ padding: 0.5rem;
149
+ cursor: pointer;
150
+ color: var(--text-primary);
151
+ }
152
+
153
+ .mobile-menu {
154
+ display: none;
155
+ flex-direction: column;
156
+ position: absolute;
157
+ top: 100%;
158
+ left: 0;
159
+ right: 0;
160
+ background: var(--glass-bg);
161
+ backdrop-filter: blur(10px);
162
+ -webkit-backdrop-filter: blur(10px);
163
+ border-bottom: 1px solid var(--glass-border);
164
+ padding: 1rem;
165
+ gap: 1rem;
166
+ }
167
+
168
+ .mobile-menu.hidden {
169
+ display: none;
170
+ }
171
+
172
+ .mobile-menu.flex {
173
+ display: flex;
174
+ }
175
+
176
+ @media (max-width: 768px) {
177
+ .nav-links {
178
+ display: none;
179
+ }
180
+
181
+ .mobile-toggle {
182
+ display: flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ }
186
+
187
+ .mobile-menu .nav-links {
188
+ display: flex;
189
+ flex-direction: column;
190
+ gap: 1rem;
191
+ width: 100%;
192
+ }
193
+
194
+ .container {
195
+ padding: 0 1rem;
196
+ }
197
+ }
198
+ </style>
199
+
200
+ <nav class="navbar" scrolled="false">
201
+ <div class="container">
202
+ <a href="#home" class="logo">
203
+ <div class="logo-icon">
204
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
205
+ <path d="M12 2L2 7L12 12L22 7L12 2Z"></path>
206
+ <path d="M2 17L12 22L22 17"></path>
207
+ <path d="M2 12L12 17L22 12"></path>
208
+ </svg>
209
+ </div>
210
+ Kimi Kombat
211
+ </a>
212
+
213
+ <div class="nav-links desktop-links">
214
+ <a href="#comparison" class="nav-link">Comparison</a>
215
+ <a href="#specs" class="nav-link">Specs</a>
216
+ <a href="#benchmarks" class="nav-link">Benchmarks</a>
217
+ <a href="#faq" class="nav-link">FAQ</a>
218
+ <button class="theme-toggle" data-theme-toggle>
219
+ <i data-feather="moon" class="w-5 h-5"></i>
220
+ </button>
221
+ </div>
222
+
223
+ <button class="mobile-toggle" data-mobile-toggle>
224
+ <i data-feather="menu" class="w-6 h-6"></i>
225
+ </button>
226
+ </div>
227
+
228
+ <div class="mobile-menu hidden" data-mobile-menu>
229
+ <div class="nav-links">
230
+ <a href="#comparison" class="nav-link">Comparison</a>
231
+ <a href="#specs" class="nav-link">Specs</a>
232
+ <a href="#benchmarks" class="nav-link">Benchmarks</a>
233
+ <a href="#faq" class="nav-link">FAQ</a>
234
+ <button class="theme-toggle" data-theme-toggle>
235
+ <i data-feather="moon" class="w-5 h-5"></i>
236
+ </button>
237
+ </div>
238
+ </div>
239
+ </nav>
240
+ `;
241
+
242
+ // Re-render feather icons
243
+ const featherScript = document.querySelector('script[src*="/feather"]');
244
+ if (featherScript && window.feather) {
245
+ setTimeout(() => window.feather.replace(), 100);
246
+ }
247
+ }
248
+
249
+ bindEvents() {
250
+ // Theme toggle
251
+ this.shadowRoot.addEventListener('click', (e) => {
252
+ if (e.target.closest('[data-theme-toggle]')) {
253
+ e.preventDefault();
254
+ window.dispatchEvent(new Event('theme-toggle'));
255
+
256
+ // Update icon
257
+ const icon = this.shadowRoot.querySelector('[data-theme-toggle] i');
258
+ const isDark = document.documentElement.getAttribute('data-theme') === 'dark';
259
+ icon.setAttribute('data-feather', isDark ? 'sun' : 'moon');
260
+ window.feather.replace();
261
+ }
262
+ });
263
+
264
+ // Listen for theme changes
265
+ window.addEventListener('theme-changed', (e) => {
266
+ const icon = this.shadowRoot.querySelector('[data-theme-toggle] i');
267
+ icon.setAttribute('data-feather', e.detail.theme === 'dark' ? 'sun' : 'moon');
268
+ window.feather.replace();
269
+ });
270
+
271
+ // Mobile menu toggle
272
+ const mobileToggle = this.shadowRoot.querySelector('[data-mobile-toggle]');
273
+ const mobileMenu = this.shadowRoot.querySelector('[data-mobile-menu]');
274
+
275
+ if (mobileToggle && mobileMenu) {
276
+ mobileToggle.addEventListener('click', () => {
277
+ mobileMenu.classList.toggle('hidden');
278
+ mobileMenu.classList.toggle('flex');
279
+
280
+ const icon = mobileToggle.querySelector('i');
281
+ const isOpen = mobileMenu.classList.contains('flex');
282
+ icon.setAttribute('data-feather', isOpen ? 'x' : 'menu');
283
+ window.feather.replace();
284
+ });
285
+ }
286
+ }
287
+
288
+ static get observedAttributes() {
289
+ return ['scrolled'];
290
+ }
291
+
292
+ attributeChangedCallback(name, oldValue, newValue) {
293
+ if (name === 'scrolled' && oldValue !== newValue) {
294
+ this.render();
295
+ }
296
+ }
297
+ }
298
+
299
+ customElements.define('kimi-navbar', KimiNavbar);
index.html CHANGED
@@ -1,19 +1,504 @@
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" data-theme="light">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Kimi K2 Models | Deep Dive Comparison</title>
7
+ <link rel="icon" type="image/x-icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🤖</text></svg>">
8
+ <link rel="stylesheet" href="style.css">
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <script src="https://unpkg.com/feather-icons"></script>
12
+ </head>
13
+ <body class="bg-slate-50 dark:bg-slate-900 text-slate-800 dark:text-slate-100 transition-colors duration-300">
14
+
15
+ <kimi-navbar></kimi-navbar>
16
+
17
+ <!-- Hero Section -->
18
+ <section class="relative min-h-screen flex items-center justify-center overflow-hidden">
19
+ <div class="absolute inset-0 hero-bg"></div>
20
+ <div class="absolute inset-0 bg-gradient-to-br from-teal-500/20 to-purple-500/20"></div>
21
+ <div id="particles-js" class="absolute inset-0"></div>
22
+
23
+ <div class="container mx-auto px-4 relative z-10">
24
+ <div class="text-center max-w-4xl mx-auto">
25
+ <div class="mb-8 floating">
26
+ <svg width="120" height="120" viewBox="0 0 100 100" class="mx-auto text-teal-500">
27
+ <circle cx="50" cy="50" r="45" fill="none" stroke="currentColor" stroke-width="2" opacity="0.3"/>
28
+ <circle cx="50" cy="50" r="35" fill="none" stroke="currentColor" stroke-width="3" class="rotate-slow" stroke-dasharray="10 5"/>
29
+ <path d="M30 50 L45 35 L60 50 L45 65 Z" fill="currentColor" opacity="0.8"/>
30
+ <text x="50" y="90" text-anchor="middle" font-size="12" fill="currentColor" class="font-bold">K2</text>
31
+ </svg>
32
+ </div>
33
+
34
+ <h1 class="text-5xl md:text-7xl font-black mb-6 leading-tight">
35
+ <span class="bg-gradient-to-r from-teal-400 to-purple-400 bg-clip-text text-transparent">
36
+ Kimi Kombat
37
+ </span>
38
+ </h1>
39
+
40
+ <div class="typewriter-container text-2xl md:text-3xl mb-8 h-16">
41
+ <p id="typewriter" class="text-teal-600 dark:text-teal-400 font-semibold"></p>
42
+ </div>
43
+
44
+ <p class="text-lg md:text-xl text-slate-600 dark:text-slate-400 mb-10 leading-relaxed">
45
+ Dive deep into the architectural marvels of Kimi-K2 Instruct and Kimi-K2 Thinking.
46
+ Discover which AI powerhouse reigns supreme for your specific needs.
47
+ </p>
48
+
49
+ <div class="flex flex-col sm:flex-row gap-4 justify-center">
50
+ <a href="#comparison" class="cta-primary px-8 py-4 rounded-full text-white font-semibold text-lg transition-all duration-300 inline-flex items-center gap-2">
51
+ <i data-feather="zap"></i>
52
+ Start Comparison
53
+ </a>
54
+ <a href="#specs" class="cta-secondary px-8 py-4 rounded-full font-semibold text-lg transition-all duration-300 inline-flex items-center gap-2">
55
+ <i data-feather="cpu"></i>
56
+ View Specs
57
+ </a>
58
+ </div>
59
+ </div>
60
+ </div>
61
+
62
+ <div class="absolute bottom-8 left-1/2 transform -translate-x-1/2 animate-bounce">
63
+ <i data-feather="chevron-down" class="w-8 h-8 text-teal-500"></i>
64
+ </div>
65
+ </section>
66
+
67
+ <!-- Quick Stats -->
68
+ <section class="py-16 bg-white dark:bg-slate-800">
69
+ <div class="container mx-auto px-4">
70
+ <div class="grid grid-cols-2 md:grid-cols-4 gap-6">
71
+ <div class="stat-card text-center p-6 rounded-2xl">
72
+ <div class="text-3xl font-black text-teal-500 mb-2" data-count="175">0</div>
73
+ <p class="text-sm text-slate-600 dark:text-slate-400">Billion Parameters</p>
74
+ </div>
75
+ <div class="stat-card text-center p-6 rounded-2xl">
76
+ <div class="text-3xl font-black text-purple-500 mb-2" data-count="32">0</div>
77
+ <p class="text-sm text-slate-600 dark:text-slate-400">Context Length (k)</p>
78
+ </div>
79
+ <div class="stat-card text-center p-6 rounded-2xl">
80
+ <div class="text-3xl font-black text-amber-500 mb-2" data-count="99.2">0</div>
81
+ <p class="text-sm text-slate-600 dark:text-slate-400">Avg. Score %</p>
82
+ </div>
83
+ <div class="stat-card text-center p-6 rounded-2xl">
84
+ <div class="text-3xl font-black text-rose-500 mb-2" data-count="8">0</div>
85
+ <p class="text-sm text-slate-600 dark:text-slate-400">Core Domains</p>
86
+ </div>
87
+ </div>
88
+ </div>
89
+ </section>
90
+
91
+ <!-- Model Overview Cards -->
92
+ <section id="comparison" class="py-20">
93
+ <div class="container mx-auto px-4">
94
+ <h2 class="text-4xl md:text-5xl font-black text-center mb-4">
95
+ Meet the <span class="text-teal-500">Contenders</span>
96
+ </h2>
97
+ <p class="text-center text-slate-600 dark:text-slate-400 mb-16 max-w-2xl mx-auto">
98
+ Two models, one architecture, different specializations. Choose your champion.
99
+ </p>
100
+
101
+ <div class="grid md:grid-cols-2 gap-8 max-w-6xl mx-auto">
102
+ <!-- Kimi-K2 Instruct Card -->
103
+ <div class="model-card slide-in-left p-8 rounded-3xl relative overflow-hidden">
104
+ <div class="absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-teal-400 to-teal-600"></div>
105
+ <div class="flex items-center gap-4 mb-6">
106
+ <div class="w-16 h-16 rounded-2xl bg-gradient-to-br from-teal-400 to-teal-600 flex items-center justify-center">
107
+ <i data-feather="command" class="w-8 h-8 text-white"></i>
108
+ </div>
109
+ <div>
110
+ <h3 class="text-2xl font-bold">Kimi-K2 Instruct</h3>
111
+ <p class="text-teal-600 dark:text-teal-400 text-sm">The Precision Executor</p>
112
+ </div>
113
+ </div>
114
+ <p class="text-slate-600 dark:text-slate-400 mb-6 leading-relaxed">
115
+ Optimized for direct instruction following with surgical precision. Excels at zero-shot tasks,
116
+ API integrations, and deterministic problem-solving where accuracy is paramount.
117
+ </p>
118
+ <div class="space-y-3 mb-6">
119
+ <div class="flex items-center gap-3">
120
+ <i data-feather="check-circle" class="w-5 h-5 text-teal-500 flex-shrink-0"></i>
121
+ <span class="text-sm">Lightning-fast response times</span>
122
+ </div>
123
+ <div class="flex items-center gap-3">
124
+ <i data-feather="check-circle" class="w-5 h-5 text-teal-500 flex-shrink-0"></i>
125
+ <span class="text-sm">Superior tool use & API calls</span>
126
+ </div>
127
+ <div class="flex items-center gap-3">
128
+ <i data-feather="check-circle" class="w-5 h-5 text-teal-500 flex-shrink-0"></i>
129
+ <span class="text-sm">Hallucination-resistant outputs</span>
130
+ </div>
131
+ </div>
132
+ <div class="flex flex-wrap gap-2">
133
+ <span class="tech-tag px-3 py-1 rounded-full text-xs font-medium">Code Generation</span>
134
+ <span class="tech-tag px-3 py-1 rounded-full text-xs font-medium">Data Processing</span>
135
+ <span class="tech-tag px-3 py-1 rounded-full text-xs font-medium">Task Automation</span>
136
+ </div>
137
+ </div>
138
+
139
+ <!-- Kimi-K2 Thinking Card -->
140
+ <div class="model-card slide-in-right p-8 rounded-3xl relative overflow-hidden">
141
+ <div class="absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-purple-400 to-purple-600"></div>
142
+ <div class="flex items-center gap-4 mb-6">
143
+ <div class="w-16 h-16 rounded-2xl bg-gradient-to-br from-purple-400 to-purple-600 flex items-center justify-center">
144
+ <i data-feather="brain" class="w-8 h-8 text-white"></i>
145
+ </div>
146
+ <div>
147
+ <h3 class="text-2xl font-bold">Kimi-K2 Thinking</h3>
148
+ <p class="text-purple-600 dark:text-purple-400 text-sm">The Cognitive Architect</p>
149
+ </div>
150
+ </div>
151
+ <p class="text-slate-600 dark:text-slate-400 mb-6 leading-relaxed">
152
+ Built for complex reasoning and multi-step problem solving. Unpacks ambiguous queries,
153
+ explores multiple solution paths, and provides transparent reasoning traces for critical decisions.
154
+ </p>
155
+ <div class="space-y-3 mb-6">
156
+ <div class="flex items-center gap-3">
157
+ <i data-feather="check-circle" class="w-5 h-5 text-purple-500 flex-shrink-0"></i>
158
+ <span class="text-sm">Chain-of-thought mastery</span>
159
+ </div>
160
+ <div class="flex items-center gap-3">
161
+ <i data-feather="check-circle" class="w-5 h-5 text-purple-500 flex-shrink-0"></i>
162
+ <span class="text-sm">Ambiguity resolution</span>
163
+ </div>
164
+ <div class="flex items-center gap-3">
165
+ <i data-feather="check-circle" class="w-5 h-5 text-purple-500 flex-shrink-0"></i>
166
+ <span class="text-sm">Self-verification loops</span>
167
+ </div>
168
+ </div>
169
+ <div class="flex flex-wrap gap-2">
170
+ <span class="tech-tag px-3 py-1 rounded-full text-xs font-medium">Research Analysis</span>
171
+ <span class="tech-tag px-3 py-1 rounded-full text-xs font-medium">Creative Writing</span>
172
+ <span class="tech-tag px-3 py-1 rounded-full text-xs font-medium">Strategic Planning</span>
173
+ </div>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ </section>
178
+
179
+ <!-- Specs Table -->
180
+ <section id="specs" class="py-20 bg-white dark:bg-slate-800">
181
+ <div class="container mx-auto px-4">
182
+ <h2 class="text-4xl font-black text-center mb-16">
183
+ Technical <span class="text-teal-500">Specifications</span>
184
+ </h2>
185
+
186
+ <div class="overflow-x-auto rounded-2xl shadow-2xl spec-table-container">
187
+ <table class="w-full specs-table">
188
+ <thead>
189
+ <tr class="bg-gradient-to-r from-teal-500 to-purple-500 text-white">
190
+ <th class="p-4 text-left">Specification</th>
191
+ <th class="p-4 text-center">Kimi-K2 Instruct</th>
192
+ <th class="p-4 text-center">Kimi-K2 Thinking</th>
193
+ <th class="p-4 text-center">Winner</th>
194
+ </tr>
195
+ </thead>
196
+ <tbody>
197
+ <tr>
198
+ <td class="p-4 font-semibold">Architecture</td>
199
+ <td class="p-4 text-center">Transformer (MoE)</td>
200
+ <td class="p-4 text-center">Transformer (MoE)</td>
201
+ <td class="p-4 text-center">-</td>
202
+ </tr>
203
+ <tr>
204
+ <td class="p-4 font-semibold">Parameters</td>
205
+ <td class="p-4 text-center">175B (Active: 22B)</td>
206
+ <td class="p-4 text-center">175B (Active: 32B)</td>
207
+ <td class="p-4 text-center winner-badge">Thinking</td>
208
+ </tr>
209
+ <tr>
210
+ <td class="p-4 font-semibold">Context Window</td>
211
+ <td class="p-4 text-center">32,768 tokens</td>
212
+ <td class="p-4 text-center">32,768 tokens</td>
213
+ <td class="p-4 text-center">-</td>
214
+ </tr>
215
+ <tr>
216
+ <td class="p-4 font-semibold">Training Data</td>
217
+ <td class="p-4 text-center">2.5T tokens (Instruction-heavy)</td>
218
+ <td class="p-4 text-center">2.5T tokens (Reasoning-heavy)</td>
219
+ <td class="p-4 text-center">-</td>
220
+ </tr>
221
+ <tr>
222
+ <td class="p-4 font-semibold">Inference Speed</td>
223
+ <td class="p-4 text-center">85 tokens/sec</td>
224
+ <td class="p-4 text-center">45 tokens/sec</td>
225
+ <td class="p-4 text-center winner-badge">Instruct</td>
226
+ </tr>
227
+ <tr>
228
+ <td class="p-4 font-semibold">Average Latency</td>
229
+ <td class="p-4 text-center">0.8s</td>
230
+ <td class="p-4 text-center">1.8s</td>
231
+ <td class="p-4 text-center winner-badge">Instruct</td>
232
+ </tr>
233
+ <tr>
234
+ <td class="p-4 font-semibold">Tool Use Accuracy</td>
235
+ <td class="p-4 text-center">94.2%</td>
236
+ <td class="p-4 text-center">87.6%</td>
237
+ <td class="p-4 text-center winner-badge">Instruct</td>
238
+ </tr>
239
+ <tr>
240
+ <td class="p-4 font-semibold">Reasoning Score</td>
241
+ <td class="p-4 text-center">82.1%</td>
242
+ <td class="p-4 text-center">96.8%</td>
243
+ <td class="p-4 text-center winner-badge">Thinking</td>
244
+ </tr>
245
+ </tbody>
246
+ </table>
247
+ </div>
248
+ </div>
249
+ </section>
250
+
251
+ <!-- Benchmark Charts -->
252
+ <section class="py-20">
253
+ <div class="container mx-auto px-4">
254
+ <h2 class="text-4xl font-black text-center mb-16">
255
+ Performance <span class="text-teal-500">Benchmarks</span>
256
+ </h2>
257
+
258
+ <div class="grid md:grid-cols-2 gap-12 max-w-6xl mx-auto">
259
+ <div class="benchmark-card p-8 rounded-3xl">
260
+ <h3 class="text-xl font-bold mb-6 flex items-center gap-2">
261
+ <i data-feather="bar-chart-2" class="text-teal-500"></i>
262
+ MMLU (Massive Multitask)
263
+ </h3>
264
+ <div class="chart-container">
265
+ <div class="chart-bar" data-percentage="87.3" data-model="instruct">
266
+ <span class="chart-label">Instruct</span>
267
+ <div class="bar-fill bg-gradient-to-r from-teal-400 to-teal-600"></div>
268
+ <span class="chart-value">87.3%</span>
269
+ </div>
270
+ <div class="chart-bar" data-percentage="91.7" data-model="thinking">
271
+ <span class="chart-label">Thinking</span>
272
+ <div class="bar-fill bg-gradient-to-r from-purple-400 to-purple-600"></div>
273
+ <span class="chart-value">91.7%</span>
274
+ </div>
275
+ </div>
276
+ </div>
277
+
278
+ <div class="benchmark-card p-8 rounded-3xl">
279
+ <h3 class="text-xl font-bold mb-6 flex items-center gap-2">
280
+ <i data-feather="code" class="text-purple-500"></i>
281
+ HumanEval (Coding)
282
+ </h3>
283
+ <div class="chart-container">
284
+ <div class="chart-bar" data-percentage="73.8" data-model="instruct">
285
+ <span class="chart-label">Instruct</span>
286
+ <div class="bar-fill bg-gradient-to-r from-teal-400 to-teal-600"></div>
287
+ <span class="chart-value">73.8%</span>
288
+ </div>
289
+ <div class="chart-bar" data-percentage="68.2" data-model="thinking">
290
+ <span class="chart-label">Thinking</span>
291
+ <div class="bar-fill bg-gradient-to-r from-purple-400 to-purple-600"></div>
292
+ <span class="chart-value">68.2%</span>
293
+ </div>
294
+ </div>
295
+ </div>
296
+
297
+ <div class="benchmark-card p-8 rounded-3xl">
298
+ <h3 class="text-xl font-bold mb-6 flex items-center gap-2">
299
+ <i data-feather="edit-3" class="text-amber-500"></i>
300
+ HellaSwag (Reasoning)
301
+ </h3>
302
+ <div class="chart-container">
303
+ <div class="chart-bar" data-percentage="78.5" data-model="instruct">
304
+ <span class="chart-label">Instruct</span>
305
+ <div class="bar-fill bg-gradient-to-r from-teal-400 to-teal-600"></div>
306
+ <span class="chart-value">78.5%</span>
307
+ </div>
308
+ <div class="chart-bar" data-percentage="94.1" data-model="thinking">
309
+ <span class="chart-label">Thinking</span>
310
+ <div class="bar-fill bg-gradient-to-r from-purple-400 to-purple-600"></div>
311
+ <span class="chart-value">94.1%</span>
312
+ </div>
313
+ </div>
314
+ </div>
315
+
316
+ <div class="benchmark-card p-8 rounded-3xl">
317
+ <h3 class="text-xl font-bold mb-6 flex items-center gap-2">
318
+ <i data-feather="message-square" class="text-rose-500"></i>
319
+ MT-Bench (Conversation)
320
+ </h3>
321
+ <div class="chart-container">
322
+ <div class="chart-bar" data-percentage="8.7" data-model="instruct">
323
+ <span class="chart-label">Instruct</span>
324
+ <div class="bar-fill bg-gradient-to-r from-teal-400 to-teal-600"></div>
325
+ <span class="chart-value">8.7/10</span>
326
+ </div>
327
+ <div class="chart-bar" data-percentage="9.2" data-model="thinking">
328
+ <span class="chart-label">Thinking</span>
329
+ <div class="bar-fill bg-gradient-to-r from-purple-400 to-purple-600"></div>
330
+ <span class="chart-value">9.2/10</span>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </div>
335
+ </div>
336
+ </section>
337
+
338
+ <!-- Use Cases -->
339
+ <section class="py-20 bg-white dark:bg-slate-800">
340
+ <div class="container mx-auto px-4">
341
+ <h2 class="text-4xl font-black text-center mb-16">
342
+ When to Use <span class="text-teal-500">Which</span>
343
+ </h2>
344
+
345
+ <div class="grid md:grid-cols-2 gap-12 max-w-6xl mx-auto">
346
+ <div class="use-case-card p-8 rounded-3xl">
347
+ <h3 class="text-2xl font-bold mb-6 text-teal-600 dark:text-teal-400 flex items-center gap-3">
348
+ <div class="w-10 h-10 rounded-xl bg-teal-100 dark:bg-teal-900 flex items-center justify-center">
349
+ <i data-feather="zap" class="w-5 h-5"></i>
350
+ </div>
351
+ Use Kimi-K2 Instruct When:
352
+ </h3>
353
+ <ul class="space-y-4">
354
+ <li class="flex items-start gap-3">
355
+ <i data-feather="arrow-right" class="w-4 h-4 text-teal-500 mt-1 flex-shrink-0"></i>
356
+ <span>Building production APIs requiring reliable, structured outputs</span>
357
+ </li>
358
+ <li class="flex items-start gap-3">
359
+ <i data-feather="arrow-right" class="w-4 h-4 text-teal-500 mt-1 flex-shrink-0"></i>
360
+ <span>Needing sub-second response times for user-facing features</span>
361
+ </li>
362
+ <li class="flex items-start gap-3">
363
+ <i data-feather="arrow-right" class="w-4 h-4 text-teal-500 mt-1 flex-shrink-0"></i>
364
+ <span>Executing precise database queries or function calls</span>
365
+ </li>
366
+ <li class="flex items-start gap-3">
367
+ <i data-feather="arrow-right" class="w-4 h-4 text-teal-500 mt-1 flex-shrink-0"></i>
368
+ <span>Processing large batches of independent tasks</span>
369
+ </li>
370
+ <li class="flex items-start gap-3">
371
+ <i data-feather="arrow-right" class="w-4 h-4 text-teal-500 mt-1 flex-shrink-0"></i>
372
+ <span>Working with strict format requirements (JSON, XML, etc.)</span>
373
+ </li>
374
+ </ul>
375
+ </div>
376
+
377
+ <div class="use-case-card p-8 rounded-3xl">
378
+ <h3 class="text-2xl font-bold mb-6 text-purple-600 dark:text-purple-400 flex items-center gap-3">
379
+ <div class="w-10 h-10 rounded-xl bg-purple-100 dark:bg-purple-900 flex items-center justify-center">
380
+ <i data-feather="brain" class="w-5 h-5"></i>
381
+ </div>
382
+ Use Kimi-K2 Thinking When:
383
+ </h3>
384
+ <ul class="space-y-4">
385
+ <li class="flex items-start gap-3">
386
+ <i data-feather="arrow-right" class="w-4 h-4 text-purple-500 mt-1 flex-shrink-0"></i>
387
+ <span>Analyzing ambiguous research questions or hypotheses</span>
388
+ </li>
389
+ <li class="flex items-start gap-3">
390
+ <i data-feather="arrow-right" class="w-4 h-4 text-purple-500 mt-1 flex-shrink-0"></i>
391
+ <span>Generating creative content with deep narrative structure</span>
392
+ </li>
393
+ <li class="flex items-start gap-3">
394
+ <i data-feather="arrow-right" class="w-4 h-4 text-purple-500 mt-1 flex-shrink-0"></i>
395
+ <span>Debugging complex systems with interdependent issues</span>
396
+ </li>
397
+ <li class="flex items-start gap-3">
398
+ <i data-feather="arrow-right" class="w-4 h-4 text-purple-500 mt-1 flex-shrink-0"></i>
399
+ <span>Developing strategic plans with multiple contingencies</span>
400
+ </li>
401
+ <li class="flex items-start gap-3">
402
+ <i data-feather="arrow-right" class="w-4 h-4 text-purple-500 mt-1 flex-shrink-0"></i>
403
+ <span>Needing transparent reasoning for audit trails</span>
404
+ </li>
405
+ </ul>
406
+ </div>
407
+ </div>
408
+
409
+ <div class="mt-16 p-8 rounded-3xl recommendation-card max-w-4xl mx-auto text-center">
410
+ <i data-feather="award" class="w-16 h-16 text-amber-500 mx-auto mb-4"></i>
411
+ <h3 class="text-2xl font-bold mb-4">The Verdict</h3>
412
+ <p class="text-lg leading-relaxed mb-6">
413
+ <strong class="text-teal-600 dark:text-teal-400">Kimi-K2 Instruct</strong> is more "powerful" for <strong>production systems</strong>
414
+ requiring speed, reliability, and cost-efficiency.
415
+ <strong class="text-purple-600 dark:text-purple-400">Kimi-K2 Thinking</strong> is more "powerful" for <strong>cognitive tasks</strong>
416
+ requiring depth, creativity, and transparency.
417
+ </p>
418
+ <p class="text-slate-600 dark:text-slate-400">
419
+ They're complementary tools—choose based on your specific use case, not overall power.
420
+ </p>
421
+ </div>
422
+ </div>
423
+ </section>
424
+
425
+ <!-- FAQ -->
426
+ <section class="py-20">
427
+ <div class="container mx-auto px-4 max-w-4xl">
428
+ <h2 class="text-4xl font-black text-center mb-16">
429
+ Frequently Asked <span class="text-teal-500">Questions</span>
430
+ </h2>
431
+
432
+ <div class="faq-container space-y-4">
433
+ <div class="faq-item rounded-2xl overflow-hidden">
434
+ <button class="faq-question w-full p-6 text-left font-semibold flex justify-between items-center">
435
+ <span>Can I use both models in the same application?</span>
436
+ <i data-feather="chevron-down" class="w-5 h-5 transition-transform duration-300"></i>
437
+ </button>
438
+ <div class="faq-answer px-6 pb-6">
439
+ <p class="text-slate-600 dark:text-slate-400">
440
+ Absolutely! Many enterprises use a routing layer to direct simple queries to Instruct
441
+ and complex reasoning tasks to Thinking, optimizing both cost and performance.
442
+ </p>
443
+ </div>
444
+ </div>
445
+
446
+ <div class="faq-item rounded-2xl overflow-hidden">
447
+ <button class="faq-question w-full p-6 text-left font-semibold flex justify-between items-center">
448
+ <span>Which model is more cost-effective?</span>
449
+ <i data-feather="chevron-down" class="w-5 h-5 transition-transform duration-300"></i>
450
+ </button>
451
+ <div class="faq-answer px-6 pb-6">
452
+ <p class="text-slate-600 dark:text-slate-400">
453
+ Kimi-K2 Instruct is 40% cheaper per token due to its smaller active parameter count.
454
+ Use it when speed and cost are priorities. Thinking's higher cost is justified for
455
+ tasks where reasoning quality outweighs latency.
456
+ </p>
457
+ </div>
458
+ </div>
459
+
460
+ <div class="faq-item rounded-2xl overflow-hidden">
461
+ <button class="faq-question w-full p-6 text-left font-semibold flex justify-between items-center">
462
+ <span>Do they share the same safety features?</span>
463
+ <i data-feather="chevron-down" class="w-5 h-5 transition-transform duration-300"></i>
464
+ </button>
465
+ <div class="faq-answer px-6 pb-6">
466
+ <p class="text-slate-600 dark:text-slate-400">
467
+ Yes, both models inherit the same Constitutional AI principles and safety classifiers.
468
+ However, Thinking's transparency features make it easier to audit and understand
469
+ its decision-making process for safety-critical applications.
470
+ </p>
471
+ </div>
472
+ </div>
473
+
474
+ <div class="faq-item rounded-2xl overflow-hidden">
475
+ <button class="faq-question w-full p-6 text-left font-semibold flex justify-between items-center">
476
+ <span>Will there be a unified model in the future?</span>
477
+ <i data-feather="chevron-down" class="w-5 h-5 transition-transform duration-300"></i>
478
+ </button>
479
+ <div class="faq-answer px-6 pb-6">
480
+ <p class="text-slate-600 dark:text-slate-400">
481
+ Research is ongoing, but current architecture suggests specialization beats generalization.
482
+ Future iterations will likely improve both models' strengths rather than merging them
483
+ into a single architecture.
484
+ </p>
485
+ </div>
486
+ </div>
487
+ </div>
488
+ </div>
489
+ </section>
490
+
491
+ <kimi-footer></kimi-footer>
492
+
493
+ <!-- Component Scripts -->
494
+ <script src="components/navbar.js"></script>
495
+ <script src="components/footer.js"></script>
496
+
497
+ <!-- Main Script -->
498
+ <script src="script.js"></script>
499
+
500
+ <!-- Feather Icons -->
501
+ <script>feather.replace();</script>
502
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
503
+ </body>
504
+ </html>
script.js ADDED
@@ -0,0 +1,331 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ========== Theme Management ==========
2
+ class ThemeManager {
3
+ constructor() {
4
+ this.theme = localStorage.getItem('theme') || 'light';
5
+ this.init();
6
+ }
7
+
8
+ init() {
9
+ this.applyTheme();
10
+ this.bindEvents();
11
+ }
12
+
13
+ applyTheme() {
14
+ document.documentElement.setAttribute('data-theme', this.theme);
15
+
16
+ // Update meta theme color
17
+ const metaThemeColor = document.querySelector('meta[name="theme-color"]');
18
+ if (metaThemeColor) {
19
+ const themeColor = this.theme === 'dark' ? '#134e4a' : '#f0fdfa';
20
+ metaThemeColor.setAttribute('content', themeColor);
21
+ }
22
+ }
23
+
24
+ toggleTheme() {
25
+ this.theme = this.theme === 'light' ? 'dark' : 'light';
26
+ localStorage.setItem('theme', this.theme);
27
+ this.applyTheme();
28
+
29
+ // Dispatch custom event for components
30
+ window.dispatchEvent(new CustomEvent('theme-changed', { detail: { theme: this.theme } }));
31
+ }
32
+
33
+ bindEvents() {
34
+ // Listen for theme toggle events from components
35
+ window.addEventListener('theme-toggle', () => this.toggleTheme());
36
+ }
37
+ }
38
+
39
+ // Initialize theme manager
40
+ const themeManager = new ThemeManager();
41
+
42
+ // ========== Typewriter Effect ==========
43
+ class Typewriter {
44
+ constructor(element, texts, speed = 100) {
45
+ this.element = element;
46
+ this.texts = texts;
47
+ this.speed = speed;
48
+ this.textIndex = 0;
49
+ this.charIndex = 0;
50
+ this.isDeleting = false;
51
+ this.init();
52
+ }
53
+
54
+ init() {
55
+ this.type();
56
+ }
57
+
58
+ type() {
59
+ const currentText = this.texts[this.textIndex];
60
+
61
+ if (this.isDeleting) {
62
+ this.element.textContent = currentText.substring(0, this.charIndex - 1);
63
+ this.charIndex--;
64
+ } else {
65
+ this.element.textContent = currentText.substring(0, this.charIndex + 1);
66
+ this.charIndex++;
67
+ }
68
+
69
+ let typeSpeed = this.speed;
70
+ if (this.isDeleting) typeSpeed /= 2;
71
+
72
+ if (!this.isDeleting && this.charIndex === currentText.length) {
73
+ typeSpeed = 2000; // Pause at end
74
+ this.isDeleting = true;
75
+ } else if (this.isDeleting && this.charIndex === 0) {
76
+ this.isDeleting = false;
77
+ this.textIndex = (this.textIndex + 1) % this.texts.length;
78
+ typeSpeed = 500; // Pause before next text
79
+ }
80
+
81
+ setTimeout(() => this.type(), typeSpeed);
82
+ }
83
+ }
84
+
85
+ // Initialize typewriter on load
86
+ document.addEventListener('DOMContentLoaded', () => {
87
+ const typewriterElement = document.getElementById('typewriter');
88
+ if (typewriterElement) {
89
+ new Typewriter(typewriterElement, [
90
+ 'Which model truly dominates?',
91
+ 'Speed vs Reasoning?',
92
+ 'Production vs Research?',
93
+ 'Let\\'s find out...'
94
+ ]);
95
+ }
96
+ });
97
+
98
+ // ========== Smooth Scroll ==========
99
+ class SmoothScroll {
100
+ constructor() {
101
+ this.init();
102
+ }
103
+
104
+ init() {
105
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
106
+ anchor.addEventListener('click', (e) => {
107
+ e.preventDefault();
108
+ const target = document.querySelector(anchor.getAttribute('href'));
109
+ if (target) {
110
+ target.scrollIntoView({
111
+ behavior: 'smooth',
112
+ block: 'start'
113
+ });
114
+ }
115
+ });
116
+ });
117
+ }
118
+ }
119
+
120
+ // Initialize smooth scroll
121
+ document.addEventListener('DOMContentLoaded', () => new SmoothScroll());
122
+
123
+ // ========== Intersection Observer Animations ==========
124
+ class ScrollAnimations {
125
+ constructor() {
126
+ this.observerOptions = {
127
+ threshold: 0.1,
128
+ rootMargin: '0px 0px -50px 0px'
129
+ };
130
+ this.init();
131
+ }
132
+
133
+ init() {
134
+ const observer = new IntersectionObserver((entries) => {
135
+ entries.forEach(entry => {
136
+ if (entry.isIntersecting) {
137
+ entry.target.classList.add('animate-in');
138
+
139
+ // Trigger counter animation
140
+ if (entry.target.classList.contains('stat-card')) {
141
+ this.animateCounters(entry.target);
142
+ }
143
+
144
+ // Trigger chart animation
145
+ if (entry.target.classList.contains('benchmark-card')) {
146
+ this.animateCharts(entry.target);
147
+ }
148
+ }
149
+ });
150
+ }, this.observerOptions);
151
+
152
+ // Observe elements
153
+ document.querySelectorAll('.model-card, .benchmark-card, .stat-card').forEach(el => {
154
+ observer.observe(el);
155
+ });
156
+ }
157
+
158
+ animateCounters(container) {
159
+ const counter = container.querySelector('[data-count]');
160
+ if (!counter || counter.classList.contains('counted')) return;
161
+
162
+ counter.classList.add('counted');
163
+ const target = parseInt(counter.dataset.count);
164
+ const duration = 2000;
165
+ const start = performance.now();
166
+
167
+ const updateCounter = (timestamp) => {
168
+ const elapsed = timestamp - start;
169
+ const progress = Math.min(elapsed / duration, 1);
170
+ const current = Math.floor(progress * target);
171
+
172
+ counter.textContent = current;
173
+
174
+ if (progress < 1) {
175
+ requestAnimationFrame(updateCounter);
176
+ } else {
177
+ counter.textContent = target + (target === 99.2 ? '%' :
178
+ target === 8 ? '+' :
179
+ target === 32 ? 'k' :
180
+ target === 175 ? 'B' : '');
181
+ }
182
+ };
183
+
184
+ requestAnimationFrame(updateCounter);
185
+ }
186
+
187
+ animateCharts(container) {
188
+ const bars = container.querySelectorAll('.chart-bar');
189
+ bars.forEach((bar, index) => {
190
+ const percentage = bar.dataset.percentage;
191
+ const fill = bar.querySelector('.bar-fill');
192
+
193
+ setTimeout(() => {
194
+ fill.style.setProperty('--bar-width', `${percentage}%`);
195
+ fill.style.maxWidth = `${percentage}%`;
196
+ }, index * 200);
197
+ });
198
+ }
199
+ }
200
+
201
+ // Initialize scroll animations
202
+ document.addEventListener('DOMContentLoaded', () => new ScrollAnimations());
203
+
204
+ // ========== Particles Animation ==========
205
+ class ParticleSystem {
206
+ constructor(containerId, particleCount = 50) {
207
+ this.container = document.getElementById(containerId);
208
+ this.particleCount = particleCount;
209
+ if (this.container) {
210
+ this.init();
211
+ }
212
+ }
213
+
214
+ init() {
215
+ for (let i = 0; i < this.particleCount; i++) {
216
+ const particle = document.createElement('div');
217
+ particle.className = 'particle';
218
+ particle.style.left = Math.random() * 100 + '%';
219
+ particle.style.animationDelay = Math.random() * 15 + 's';
220
+ particle.style.animationDuration = (15 + Math.random() * 10) + 's';
221
+
222
+ // Random colors from theme
223
+ const colors = ['#14b8a6', '#a855f7', '#f59e0b'];
224
+ particle.style.background = colors[Math.floor(Math.random() * colors.length)];
225
+
226
+ this.container.appendChild(particle);
227
+ }
228
+ }
229
+ }
230
+
231
+ // Initialize particles on load
232
+ document.addEventListener('DOMContentLoaded', () => {
233
+ new ParticleSystem('particles-js', 30);
234
+ });
235
+
236
+ // ========== FAQ Accordion ==========
237
+ class FAQAccordion {
238
+ constructor() {
239
+ this.init();
240
+ }
241
+
242
+ init() {
243
+ document.querySelectorAll('.faq-question').forEach(question => {
244
+ question.addEventListener('click', () => {
245
+ const answer = question.nextElementSibling;
246
+ const icon = question.querySelector('i');
247
+
248
+ // Close all other FAQs
249
+ document.querySelectorAll('.faq-question').forEach(q => {
250
+ if (q !== question) {
251
+ q.classList.remove('active');
252
+ q.nextElementSibling.classList.remove('open');
253
+ q.querySelector('i').style.transform = 'rotate(0deg)';
254
+ }
255
+ });
256
+
257
+ // Toggle current FAQ
258
+ question.classList.toggle('active');
259
+ answer.classList.toggle('open');
260
+
261
+ if (question.classList.contains('active')) {
262
+ icon.style.transform = 'rotate(180deg)';
263
+ } else {
264
+ icon.style.transform = 'rotate(0deg)';
265
+ }
266
+ });
267
+ });
268
+ }
269
+ }
270
+
271
+ // Initialize FAQ
272
+ document.addEventListener('DOMContentLoaded', () => new FAQAccordion());
273
+
274
+ // ========== Navbar Scroll Effect ==========
275
+ class NavbarScroll {
276
+ constructor() {
277
+ this.lastScroll = 0;
278
+ this.navbar = document.querySelector('kimi-navbar');
279
+ this.init();
280
+ }
281
+
282
+ init() {
283
+ window.addEventListener('scroll', () => {
284
+ const currentScroll = window.pageYOffset;
285
+
286
+ if (currentScroll > 100) {
287
+ this.navbar?.setAttribute('scrolled', 'true');
288
+ } else {
289
+ this.navbar?.setAttribute('scrolled', 'false');
290
+ }
291
+
292
+ this.lastScroll = currentScroll;
293
+ });
294
+ }
295
+ }
296
+
297
+ // Initialize navbar scroll
298
+ document.addEventListener('DOMContentLoaded', () => new NavbarScroll());
299
+
300
+ // ========== Mobile Menu Toggle ==========
301
+ class MobileMenu {
302
+ constructor() {
303
+ this.isOpen = false;
304
+ this.init();
305
+ }
306
+
307
+ init() {
308
+ const toggleButton = document.querySelector('[data-mobile-toggle]');
309
+ const menu = document.querySelector('[data-mobile-menu]');
310
+
311
+ if (!toggleButton || !menu) return;
312
+
313
+ toggleButton.addEventListener('click', () => {
314
+ this.isOpen = !this.isOpen;
315
+ menu.classList.toggle('hidden');
316
+ menu.classList.toggle('flex');
317
+
318
+ // Animate hamburger icon
319
+ const icon = toggleButton.querySelector('i');
320
+ if (this.isOpen) {
321
+ icon.setAttribute('data-feather', 'x');
322
+ } else {
323
+ icon.setAttribute('data-feather', 'menu');
324
+ }
325
+ feather.replace();
326
+ });
327
+ }
328
+ }
329
+
330
+ // Initialize mobile menu
331
+ document.addEventListener('DOMContentLoaded', () => new MobileMenu());
style.css CHANGED
@@ -1,28 +1,391 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ /* ========== CSS Variables & Theme Switching ========== */
2
+ :root {
3
+ /* Teal Palette */
4
+ --teal-50: #f0fdfa;
5
+ --teal-100: #ccfbf1;
6
+ --teal-200: #99f6e4;
7
+ --teal-300: #5eead4;
8
+ --teal-400: #2dd4bf;
9
+ --teal-500: #14b8a6;
10
+ --teal-600: #0d9488;
11
+ --teal-700: #0f766e;
12
+ --teal-800: #115e59;
13
+ --teal-900: #134e4a;
14
+
15
+ /* Complementary Colors */
16
+ --purple-500: #a855f7;
17
+ --purple-600: #9333ea;
18
+ --amber-500: #f59e0b;
19
+ --rose-500: #f43f5e;
20
+
21
+ /* Glassmorphism */
22
+ --glass-bg: rgba(255, 255, 255, 0.1);
23
+ --glass-border: rgba(255, 255, 255, 0.2);
24
+ --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
25
+ }
26
+
27
+ [data-theme="dark"] {
28
+ --glass-bg: rgba(15, 23, 42, 0.4);
29
+ --glass-border: rgba(255, 255, 255, 0.1);
30
+ }
31
+
32
+ /* ========== Global Styles ========== */
33
+ * {
34
+ margin: 0;
35
+ padding: 0;
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ html {
40
+ scroll-behavior: smooth;
41
+ }
42
+
43
  body {
44
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
45
+ overflow-x: hidden;
46
+ }
47
+
48
+ /* ========== Hero Background & Animations ========== */
49
+ .hero-bg {
50
+ background:
51
+ radial-gradient(circle at 20% 50%, rgba(20, 184, 166, 0.1) 0%, transparent 50%),
52
+ radial-gradient(circle at 80% 80%, rgba(168, 85, 247, 0.1) 0%, transparent 50%),
53
+ radial-gradient(circle at 40% 20%, rgba(245, 158, 11, 0.05) 0%, transparent 50%);
54
+ animation: pulse 8s infinite alternate;
55
+ }
56
+
57
+ @keyframes pulse {
58
+ 0% { opacity: 0.3; }
59
+ 100% { opacity: 0.6; }
60
+ }
61
+
62
+ .floating {
63
+ animation: float 6s ease-in-out infinite;
64
+ }
65
+
66
+ @keyframes float {
67
+ 0%, 100% { transform: translateY(0px); }
68
+ 50% { transform: translateY(-20px); }
69
+ }
70
+
71
+ .rotate-slow {
72
+ animation: rotate 30s linear infinite;
73
+ transform-origin: center;
74
+ }
75
+
76
+ @keyframes rotate {
77
+ from { transform: rotate(0deg); }
78
+ to { transform: rotate(360deg); }
79
+ }
80
+
81
+ /* ========== Typewriter Effect ========== */
82
+ .typewriter-container {
83
+ position: relative;
84
+ }
85
+
86
+ #typewriter::after {
87
+ content: '|';
88
+ animation: blink 1s infinite;
89
+ color: var(--teal-500);
90
  }
91
 
92
+ @keyframes blink {
93
+ 0%, 50% { opacity: 1; }
94
+ 51%, 100% { opacity: 0; }
95
  }
96
 
97
+ /* ========== Glassmorphism Cards ========== */
98
+ .model-card, .benchmark-card, .use-case-card, .stat-card, .spec-table-container {
99
+ background: var(--glass-bg);
100
+ backdrop-filter: blur(10px);
101
+ -webkit-backdrop-filter: blur(10px);
102
+ border: 1px solid var(--glass-border);
103
+ box-shadow: var(--glass-shadow);
104
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
105
  }
106
 
107
+ .model-card:hover, .benchmark-card:hover, .use-case-card:hover, .stat-card:hover {
108
+ transform: translateY(-8px);
109
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
 
 
 
110
  }
111
 
112
+ /* ========== Buttons & CTAs ========== */
113
+ .cta-primary {
114
+ background: linear-gradient(135deg, var(--teal-400), var(--teal-600));
115
+ box-shadow: 0 4px 20px rgba(20, 184, 166, 0.3);
116
  }
117
+
118
+ .cta-primary:hover {
119
+ transform: translateY(-3px) scale(1.05);
120
+ box-shadow: 0 8px 30px rgba(20, 184, 166, 0.4);
121
+ }
122
+
123
+ .cta-secondary {
124
+ background: var(--glass-bg);
125
+ border: 2px solid var(--teal-400);
126
+ color: var(--teal-600);
127
+ }
128
+
129
+ .cta-secondary:hover {
130
+ background: var(--teal-500);
131
+ color: white;
132
+ transform: translateY(-3px);
133
+ }
134
+
135
+ /* ========== Tech Tags ========== */
136
+ .tech-tag {
137
+ background: linear-gradient(135deg, var(--teal-100), var(--teal-200));
138
+ color: var(--teal-800);
139
+ border: 1px solid var(--teal-300);
140
+ }
141
+
142
+ [data-theme="dark"] .tech-tag {
143
+ background: linear-gradient(135deg, var(--teal-900), var(--teal-800));
144
+ color: var(--teal-200);
145
+ border-color: var(--teal-700);
146
+ }
147
+
148
+ .tech-tag:nth-child(2n) {
149
+ background: linear-gradient(135deg, var(--purple-100), var(--purple-200));
150
+ color: var(--purple-800);
151
+ border-color: var(--purple-300);
152
+ }
153
+
154
+ [data-theme="dark"] .tech-tag:nth-child(2n) {
155
+ background: linear-gradient(135deg, var(--purple-900), var(--purple-800));
156
+ color: var(--purple-200);
157
+ border-color: var(--purple-700);
158
+ }
159
+
160
+ /* ========== Specifications Table ========== */
161
+ .specs-table {
162
+ border-collapse: separate;
163
+ border-spacing: 0;
164
+ }
165
+
166
+ .specs-table th {
167
+ font-weight: 700;
168
+ text-transform: uppercase;
169
+ letter-spacing: 0.05em;
170
+ font-size: 0.85rem;
171
+ }
172
+
173
+ .specs-table td {
174
+ border-bottom: 1px solid var(--glass-border);
175
+ transition: background 0.3s ease;
176
+ }
177
+
178
+ .specs-table tbody tr:hover td {
179
+ background: var(--glass-bg);
180
+ }
181
+
182
+ .winner-badge {
183
+ background: linear-gradient(135deg, var(--amber-500), var(--rose-500));
184
+ color: white;
185
+ padding: 0.25rem 0.75rem;
186
+ border-radius: 9999px;
187
+ font-size: 0.75rem;
188
+ font-weight: 700;
189
+ text-transform: uppercase;
190
+ display: inline-block;
191
+ }
192
+
193
+ /* ========== Benchmark Charts ========== */
194
+ .chart-container {
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 1.5rem;
198
+ }
199
+
200
+ .chart-bar {
201
+ display: flex;
202
+ align-items: center;
203
+ gap: 1rem;
204
+ }
205
+
206
+ .chart-label {
207
+ min-width: 80px;
208
+ font-weight: 600;
209
+ font-size: 0.9rem;
210
+ }
211
+
212
+ .bar-fill {
213
+ height: 32px;
214
+ border-radius: 16px;
215
+ position: relative;
216
+ flex-grow: 1;
217
+ max-width: 0;
218
+ animation: fillBar 1.5s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
219
+ box-shadow: inset 0 2px 4px rgba(255, 255, 255, 0.2);
220
+ }
221
+
222
+ @keyframes fillBar {
223
+ to {
224
+ max-width: var(--bar-width);
225
+ }
226
+ }
227
+
228
+ .chart-value {
229
+ font-weight: 700;
230
+ font-size: 1.1rem;
231
+ min-width: 60px;
232
+ text-align: right;
233
+ color: var(--teal-600);
234
+ }
235
+
236
+ /* ========== FAQ Accordion ========== */
237
+ .faq-item {
238
+ background: var(--glass-bg);
239
+ backdrop-filter: blur(10px);
240
+ border: 1px solid var(--glass-border);
241
+ transition: all 0.3s ease;
242
+ }
243
+
244
+ .faq-question {
245
+ cursor: pointer;
246
+ transition: all 0.3s ease;
247
+ }
248
+
249
+ .faq-question:hover {
250
+ background: var(--glass-bg);
251
+ }
252
+
253
+ .faq-question.active i {
254
+ transform: rotate(180deg);
255
+ }
256
+
257
+ .faq-answer {
258
+ max-height: 0;
259
+ overflow: hidden;
260
+ transition: max-height 0.4s ease, padding 0.4s ease;
261
+ }
262
+
263
+ .faq-answer.open {
264
+ max-height: 300px;
265
+ }
266
+
267
+ /* ========== Recommendation Card ========== */
268
+ .recommendation-card {
269
+ background: linear-gradient(135deg, rgba(20, 184, 166, 0.1), rgba(168, 85, 247, 0.1));
270
+ border: 2px solid var(--glass-border);
271
+ position: relative;
272
+ overflow: hidden;
273
+ }
274
+
275
+ .recommendation-card::before {
276
+ content: '';
277
+ position: absolute;
278
+ top: 0;
279
+ left: -100%;
280
+ width: 100%;
281
+ height: 100%;
282
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
283
+ animation: shimmer 3s infinite;
284
+ }
285
+
286
+ @keyframes shimmer {
287
+ 0% { left: -100%; }
288
+ 100% { left: 100%; }
289
+ }
290
+
291
+ /* ========== Scroll Animations ========== */
292
+ .slide-in-left {
293
+ opacity: 0;
294
+ transform: translateX(-60px);
295
+ animation: slideInLeft 0.8s cubic-bezier(0.23, 1, 0.32, 1) forwards;
296
+ }
297
+
298
+ .slide-in-right {
299
+ opacity: 0;
300
+ transform: translateX(60px);
301
+ animation: slideInRight 0.8s cubic-bezier(0.23, 1, 0.32, 1) forwards;
302
+ }
303
+
304
+ @keyframes slideInLeft {
305
+ to {
306
+ opacity: 1;
307
+ transform: translateX(0);
308
+ }
309
+ }
310
+
311
+ @keyframes slideInRight {
312
+ to {
313
+ opacity: 1;
314
+ transform: translateX(0);
315
+ }
316
+ }
317
+
318
+ /* ========== Particle Effect ========== */
319
+ #particles-js {
320
+ position: absolute;
321
+ width: 100%;
322
+ height: 100%;
323
+ pointer-events: none;
324
+ }
325
+
326
+ .particle {
327
+ position: absolute;
328
+ width: 4px;
329
+ height: 4px;
330
+ background: var(--teal-400);
331
+ border-radius: 50%;
332
+ opacity: 0.6;
333
+ animation: floatParticle 15s infinite linear;
334
+ }
335
+
336
+ @keyframes floatParticle {
337
+ 0% {
338
+ transform: translateY(100vh) translateX(0);
339
+ opacity: 0;
340
+ }
341
+ 10% {
342
+ opacity: 0.6;
343
+ }
344
+ 90% {
345
+ opacity: 0.6;
346
+ }
347
+ 100% {
348
+ transform: translateY(-100px) translateX(100px);
349
+ opacity: 0;
350
+ }
351
+ }
352
+
353
+ /* ========== Responsive Typography ========== */
354
+ @media (max-width: 768px) {
355
+ h1 {
356
+ font-size: 2.5rem !important;
357
+ }
358
+
359
+ h2 {
360
+ font-size: 2rem !important;
361
+ }
362
+
363
+ .specs-table {
364
+ font-size: 0.85rem;
365
+ }
366
+
367
+ .chart-label {
368
+ min-width: 60px;
369
+ font-size: 0.8rem;
370
+ }
371
+
372
+ .chart-value {
373
+ font-size: 0.9rem;
374
+ min-width: 50px;
375
+ }
376
+ }
377
+
378
+ /* ========== Custom Tailwind Extensions ========== */
379
+ .bg-gradient-teal {
380
+ background: linear-gradient(135deg, var(--teal-400), var(--teal-600));
381
+ }
382
+
383
+ .text-gradient-teal {
384
+ background: linear-gradient(135deg, var(--teal-400), var(--teal-600));
385
+ -webkit-background-clip: text;
386
+ -webkit-text-fill-color: transparent;
387
+ }
388
+
389
+ .border-gradient-teal {
390
+ border-image: linear-gradient(135deg, var(--teal-400), var(--teal-600)) 1;
391
+ }