Spaces:
Running
Running
Update playground.html
Browse files- playground.html +10 -767
playground.html
CHANGED
@@ -22,7 +22,7 @@
|
|
22 |
<meta name="twitter:description" content="Ultra-fast responses, zero cost, and total dominance. Test Loki AI's models like GPT-4o and more!">
|
23 |
<meta name="twitter:image" content="https://parthsadaria-lokiai.hf.space/banner.jpg">
|
24 |
|
25 |
-
|
26 |
<link rel="preconnect" href="https://fonts.googleapis.com">
|
27 |
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
28 |
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap" rel="stylesheet">
|
@@ -35,732 +35,6 @@
|
|
35 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
36 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
|
37 |
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@700&display=swap" rel="stylesheet">
|
38 |
-
<style>
|
39 |
-
:root {
|
40 |
-
/* True Black Theme */
|
41 |
-
--bg-color: #000000; /* Pure Black */
|
42 |
-
--container-bg: #0a0a0a; /* Extremely dark grey */
|
43 |
-
--input-bg: #000000; /* Pure Black */
|
44 |
-
--user-msg-bg: #1a1a1a; /* Very dark grey for user */
|
45 |
-
--assistant-msg-bg: #101010; /* Even darker grey for AI */
|
46 |
-
--text-color: #ffffff; /* Slightly lighter grey/off-white text */
|
47 |
-
--text-color-darker: #ffffff; /* For less important text */
|
48 |
-
--placeholder-color: #404040; /* Darker placeholder text */
|
49 |
-
--border-color: #202020; /* Even darker grey border */
|
50 |
-
--accent-color-hover: #282828; /* Darker hover for buttons */
|
51 |
-
--focus-ring-color: rgba(150, 150, 150, 0.2); /* Even more subtle white focus */
|
52 |
-
--error-bg: #1a1a1a; /* Darker grey error background */
|
53 |
-
--success-feedback-color: #ffffff; /* White feedback for copy */
|
54 |
-
--code-bg: #050505; /* Near black background for code blocks */
|
55 |
-
--code-text-color: #c0c0c0; /* Lighter text for code */
|
56 |
-
|
57 |
-
--border-radius-smooth: 8px; /* Slightly reduced radius */
|
58 |
-
--border-radius-slight: 4px;
|
59 |
-
--font-family: 'DM Sans', sans-serif;
|
60 |
-
--transition-speed: 0.15s; /* Slightly faster transitions */
|
61 |
-
}
|
62 |
-
|
63 |
-
|
64 |
-
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap');
|
65 |
-
|
66 |
-
* { box-sizing: border-box; margin: 0; padding: 0; font-family: 'DM Sans', sans-serif; }
|
67 |
-
html, body { height: 100%; overflow: hidden; background-color: var(--bg-color); }
|
68 |
-
|
69 |
-
/* Blob styling */
|
70 |
-
.blob {
|
71 |
-
position: absolute;
|
72 |
-
width: 40vw;
|
73 |
-
height: 40vw;
|
74 |
-
z-index: 0;
|
75 |
-
pointer-events: none;
|
76 |
-
}
|
77 |
-
|
78 |
-
/* Main Container */
|
79 |
-
body {
|
80 |
-
display: flex;
|
81 |
-
justify-content: center;
|
82 |
-
align-items: center;
|
83 |
-
color: var(--text-color);
|
84 |
-
position: relative;
|
85 |
-
}
|
86 |
-
|
87 |
-
/* Intro Screen Animation */#intro-screen {
|
88 |
-
position: fixed;
|
89 |
-
top: 0;
|
90 |
-
left: 0;
|
91 |
-
width: 100%;
|
92 |
-
height: 100vh;
|
93 |
-
background: radial-gradient(ellipse at center, #1a1a1a 0%, #080808 100%); /* Subtler gradient */
|
94 |
-
color: #e0e0e0; /* Softer white */
|
95 |
-
display: flex;
|
96 |
-
justify-content: center;
|
97 |
-
align-items: center;
|
98 |
-
font-size: 3.2rem; /* Tiny bit bigger */
|
99 |
-
z-index: 9999;
|
100 |
-
text-shadow: 0 0 10px rgba(255, 255, 255, 0.8), 0 0 25px rgba(255, 255, 255, 0.4); /* Refined glow */
|
101 |
-
letter-spacing: 3px; /* More dramatic */
|
102 |
-
transition: opacity 0.6s ease-out, filter 1.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), transform 1.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); /* Smoother, snappier */
|
103 |
-
overflow: hidden; /* To contain the pseudo-element animation */
|
104 |
-
}
|
105 |
-
|
106 |
-
#intro-screen h1 {
|
107 |
-
position: relative;
|
108 |
-
margin: 0;
|
109 |
-
padding-bottom: 15px; /* Space for the fancy underline */
|
110 |
-
}
|
111 |
-
|
112 |
-
#intro-screen h1::after {
|
113 |
-
content: "";
|
114 |
-
position: absolute;
|
115 |
-
bottom: 0; /* Moved down */
|
116 |
-
left: 15%; /* Starts a bit in */
|
117 |
-
width: 70%; /* Wider, more prominent */
|
118 |
-
height: 2px; /* Thicker line */
|
119 |
-
background: linear-gradient(90deg, rgba(255, 255, 255, 0.1), #ffffff 30%, rgba(255, 255, 255, 0.1)); /* More defined gradient */
|
120 |
-
opacity: 0; /* Initially hidden */
|
121 |
-
transform: scaleX(0); /* Starts scaled down */
|
122 |
-
transition: opacity 0.4s ease-in-out 0.4s, transform 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55) 0.4s; /* Fancy reveal */
|
123 |
-
}
|
124 |
-
|
125 |
-
/* Chat Container */
|
126 |
-
.chat-container {
|
127 |
-
background-color: var(--container-bg);
|
128 |
-
width: 90%;
|
129 |
-
height: 90%;
|
130 |
-
display: flex;
|
131 |
-
flex-direction: column;
|
132 |
-
overflow: hidden;
|
133 |
-
border-radius: 16px;
|
134 |
-
transition: all var(--transition-speed) ease;
|
135 |
-
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
|
136 |
-
box-shadow: 0px 0px 100px rgba(255, 255, 255,0.1);
|
137 |
-
position: relative;
|
138 |
-
z-index: 10;
|
139 |
-
border: 1px solid var(--border-color);
|
140 |
-
}
|
141 |
-
|
142 |
-
/* Header Styling */
|
143 |
-
.chat-header {
|
144 |
-
background-color: var(--input-bg);
|
145 |
-
padding: 10px 25px;
|
146 |
-
border-bottom: 1px solid var(--border-color);
|
147 |
-
flex-shrink: 0;
|
148 |
-
transition: background-color var(--transition-speed) ease, border-color var(--transition-speed) ease;
|
149 |
-
z-index: 10;
|
150 |
-
}
|
151 |
-
|
152 |
-
.header-top-row {
|
153 |
-
display: flex;
|
154 |
-
justify-content: space-between;
|
155 |
-
align-items: center;
|
156 |
-
margin-bottom: 8px;
|
157 |
-
}
|
158 |
-
|
159 |
-
.chat-header h1 {
|
160 |
-
font-size: 1.1em;
|
161 |
-
font-weight: 500;
|
162 |
-
margin: 0;
|
163 |
-
}
|
164 |
-
|
165 |
-
.header-button {
|
166 |
-
background: none;
|
167 |
-
border: none;
|
168 |
-
color: var(--text-color-darker);
|
169 |
-
cursor: pointer;
|
170 |
-
padding: 5px;
|
171 |
-
border-radius: var(--border-radius-slight);
|
172 |
-
transition: color var(--transition-speed) ease, background-color var(--transition-speed) ease;
|
173 |
-
}
|
174 |
-
|
175 |
-
.header-button:hover {
|
176 |
-
color: var(--text-color);
|
177 |
-
background-color: var(--accent-color-hover);
|
178 |
-
}
|
179 |
-
|
180 |
-
.header-bottom-row {
|
181 |
-
display: flex;
|
182 |
-
align-items: center;
|
183 |
-
gap: 8px;
|
184 |
-
}
|
185 |
-
|
186 |
-
.header-bottom-row label {
|
187 |
-
font-size: 0.85em;
|
188 |
-
color: var(--text-color-darker);
|
189 |
-
}
|
190 |
-
|
191 |
-
.model-select {
|
192 |
-
flex-grow: 1;
|
193 |
-
background-color: var(--container-bg);
|
194 |
-
color: var(--text-color);
|
195 |
-
border: 1px solid var(--border-color);
|
196 |
-
border-radius: var(--border-radius-slight);
|
197 |
-
padding: 5px 8px;
|
198 |
-
font-size: 0.85em;
|
199 |
-
cursor: pointer;
|
200 |
-
transition: border-color var(--transition-speed) ease, background-color var(--transition-speed) ease;
|
201 |
-
}
|
202 |
-
|
203 |
-
.model-select:focus {
|
204 |
-
outline: none;
|
205 |
-
border-color: var(--text-color-darker);
|
206 |
-
background-color: var(--bg-color);
|
207 |
-
}
|
208 |
-
|
209 |
-
/* Chat Box */
|
210 |
-
.chat-box {
|
211 |
-
flex-grow: 1;
|
212 |
-
overflow-y: auto;
|
213 |
-
padding: 25px;
|
214 |
-
display: flex;
|
215 |
-
flex-direction: column;
|
216 |
-
gap: 20px;
|
217 |
-
}
|
218 |
-
|
219 |
-
/* Custom Scrollbar */
|
220 |
-
.chat-box::-webkit-scrollbar { width: 8px; }
|
221 |
-
.chat-box::-webkit-scrollbar-track { background: var(--container-bg); }
|
222 |
-
.chat-box::-webkit-scrollbar-thumb {
|
223 |
-
background-color: var(--input-bg);
|
224 |
-
border-radius: 4px;
|
225 |
-
border: 2px solid var(--container-bg);
|
226 |
-
}
|
227 |
-
.chat-box::-webkit-scrollbar-thumb:hover {
|
228 |
-
background-color: var(--accent-color-hover);
|
229 |
-
}
|
230 |
-
|
231 |
-
/* Message Styling */
|
232 |
-
.message {
|
233 |
-
padding: 14px 20px;
|
234 |
-
border-radius: var(--border-radius-smooth);
|
235 |
-
max-width: 85%;
|
236 |
-
word-wrap: break-word;
|
237 |
-
line-height: 1.6;
|
238 |
-
position: relative;
|
239 |
-
transition: background-color var(--transition-speed) ease;
|
240 |
-
}
|
241 |
-
|
242 |
-
.message-content { padding-right: 30px; }
|
243 |
-
|
244 |
-
.user-message {
|
245 |
-
background-color: var(--user-msg-bg);
|
246 |
-
color: var(--text-color);
|
247 |
-
align-self: flex-end;
|
248 |
-
border-bottom-right-radius: var(--border-radius-slight);
|
249 |
-
}
|
250 |
-
|
251 |
-
.assistant-message {
|
252 |
-
background-color: var(--assistant-msg-bg);
|
253 |
-
color: var(--text-color);
|
254 |
-
align-self: flex-start;
|
255 |
-
border-bottom-left-radius: var(--border-radius-slight);
|
256 |
-
}
|
257 |
-
|
258 |
-
/* Copy Button */
|
259 |
-
.copy-button {
|
260 |
-
position: absolute;
|
261 |
-
top: 8px;
|
262 |
-
right: 8px;
|
263 |
-
background-color: rgba(255, 255, 255, 0.05);
|
264 |
-
color: var(--text-color-darker);
|
265 |
-
border: none;
|
266 |
-
border-radius: 4px;
|
267 |
-
padding: 3px 5px;
|
268 |
-
cursor: pointer;
|
269 |
-
opacity: 0;
|
270 |
-
transition: opacity var(--transition-speed) ease, background-color var(--transition-speed) ease, color var(--transition-speed) ease;
|
271 |
-
display: flex;
|
272 |
-
align-items: center;
|
273 |
-
justify-content: center;
|
274 |
-
z-index: 2;
|
275 |
-
}
|
276 |
-
|
277 |
-
.message:hover .copy-button { opacity: 1; }
|
278 |
-
.copy-button:hover {
|
279 |
-
background-color: rgba(255, 255, 255, 0.1);
|
280 |
-
color: var(--text-color);
|
281 |
-
}
|
282 |
-
.copy-button.copied svg path { fill: var(--success-feedback-color); }
|
283 |
-
.copy-button.copied { background-color: rgba(255, 255, 255, 0.08); }
|
284 |
-
|
285 |
-
/* Animation for text appearing */
|
286 |
-
.unblur-token {
|
287 |
-
display: inline;
|
288 |
-
opacity: 0;
|
289 |
-
filter: blur(5px);
|
290 |
-
transform: translateY(5px);
|
291 |
-
animation: unblurFadeSlide 0.3s ease forwards;
|
292 |
-
}
|
293 |
-
|
294 |
-
/* Keep block elements as block */
|
295 |
-
p.unblur-token, h1.unblur-token, h2.unblur-token, h3.unblur-token,
|
296 |
-
div.unblur-token, pre.unblur-token, blockquote.unblur-token,
|
297 |
-
ul.unblur-token, ol.unblur-token, li.unblur-token {
|
298 |
-
display: block;
|
299 |
-
}
|
300 |
-
|
301 |
-
/* Ensure code elements don't break the flow */
|
302 |
-
code.unblur-token:not(pre code) {
|
303 |
-
display: inline;
|
304 |
-
}
|
305 |
-
|
306 |
-
@keyframes unblurFadeSlide {
|
307 |
-
0% {
|
308 |
-
opacity: 0;
|
309 |
-
filter: blur(5px);
|
310 |
-
transform: translateY(5px);
|
311 |
-
}
|
312 |
-
100% {
|
313 |
-
opacity: 1;
|
314 |
-
filter: blur(0);
|
315 |
-
transform: translateY(0);
|
316 |
-
}
|
317 |
-
}
|
318 |
-
|
319 |
-
/* Markdown Content Styling */
|
320 |
-
.message p { margin-bottom: 0.8em; }
|
321 |
-
.message p:last-child { margin-bottom: 0; }
|
322 |
-
.message a { color: var(--text-color); text-decoration: underline; }
|
323 |
-
.message a:hover { color: var(--text-color-darker); }
|
324 |
-
.message ul, .message ol { margin-left: 1.5em; margin-bottom: 0.8em; }
|
325 |
-
.message li { margin-bottom: 0.3em; }
|
326 |
-
.message h1, .message h2, .message h3, .message h4, .message h5, .message h6 {
|
327 |
-
margin-top: 1em;
|
328 |
-
margin-bottom: 0.5em;
|
329 |
-
font-weight: 600;
|
330 |
-
line-height: 1.3;
|
331 |
-
border-bottom: 1px solid var(--border-color);
|
332 |
-
padding-bottom: 0.2em;
|
333 |
-
}
|
334 |
-
.message h1 { font-size: 1.4em; }
|
335 |
-
.message h2 { font-size: 1.3em; }
|
336 |
-
.message h3 { font-size: 1.2em; }
|
337 |
-
.message strong { font-weight: 600; }
|
338 |
-
.message blockquote {
|
339 |
-
border-left: 3px solid var(--border-color);
|
340 |
-
margin-left: 0;
|
341 |
-
padding-left: 1em;
|
342 |
-
color: var(--text-color-darker);
|
343 |
-
font-style: italic;
|
344 |
-
margin-bottom: 0.8em;
|
345 |
-
}
|
346 |
-
.message hr {
|
347 |
-
border: none;
|
348 |
-
border-top: 1px solid var(--border-color);
|
349 |
-
margin: 1.5em 0;
|
350 |
-
}
|
351 |
-
|
352 |
-
/* Code Styling */
|
353 |
-
.message code:not(pre code) {
|
354 |
-
background-color: var(--input-bg);
|
355 |
-
color: var(--code-text-color);
|
356 |
-
padding: 0.2em 0.4em;
|
357 |
-
border-radius: var(--border-radius-slight);
|
358 |
-
font-size: 0.9em;
|
359 |
-
font-family: monospace;
|
360 |
-
}
|
361 |
-
|
362 |
-
.message pre {
|
363 |
-
background-color: var(--code-bg);
|
364 |
-
padding: 1em;
|
365 |
-
border-radius: var(--border-radius-slight);
|
366 |
-
overflow-x: auto;
|
367 |
-
margin: 0.5em 0 1em 0;
|
368 |
-
font-family: monospace;
|
369 |
-
font-size: 0.9em;
|
370 |
-
line-height: 1.5;
|
371 |
-
position: relative;
|
372 |
-
border: 1px solid var(--border-color);
|
373 |
-
}
|
374 |
-
|
375 |
-
.message pre code.hljs {
|
376 |
-
display: block;
|
377 |
-
overflow-x: auto;
|
378 |
-
padding: 0;
|
379 |
-
background: transparent;
|
380 |
-
color: inherit;
|
381 |
-
font-size: inherit;
|
382 |
-
}
|
383 |
-
|
384 |
-
/* Copy Code Button */
|
385 |
-
.copy-code-button {
|
386 |
-
position: absolute;
|
387 |
-
top: 8px;
|
388 |
-
right: 8px;
|
389 |
-
background-color: var(--input-bg);
|
390 |
-
color: var(--text-color-darker);
|
391 |
-
border: 1px solid var(--border-color);
|
392 |
-
border-radius: var(--border-radius-slight);
|
393 |
-
padding: 4px 8px;
|
394 |
-
cursor: pointer;
|
395 |
-
font-size: 0.8em;
|
396 |
-
opacity: 0.3;
|
397 |
-
transition: opacity var(--transition-speed) ease, background-color var(--transition-speed) ease, color var(--transition-speed) ease;
|
398 |
-
display: flex;
|
399 |
-
align-items: center;
|
400 |
-
gap: 4px;
|
401 |
-
z-index: 5;
|
402 |
-
}
|
403 |
-
|
404 |
-
.message pre:hover .copy-code-button { opacity: 1; }
|
405 |
-
.copy-code-button:hover {
|
406 |
-
background-color: var(--accent-color-hover);
|
407 |
-
color: var(--text-color);
|
408 |
-
}
|
409 |
-
.copy-code-button svg { width: 12px; height: 12px; }
|
410 |
-
.copy-code-button.copied span { display: none; }
|
411 |
-
.copy-code-button.copied::after { content: 'Copied!'; font-weight: 500; }
|
412 |
-
.copy-code-button.copied {
|
413 |
-
color: var(--success-feedback-color);
|
414 |
-
background-color: var(--accent-color-hover);
|
415 |
-
}
|
416 |
-
|
417 |
-
/* Input Area */
|
418 |
-
.input-area {
|
419 |
-
display: flex;
|
420 |
-
padding: 15px 25px;
|
421 |
-
border-top: 1px solid var(--border-color);
|
422 |
-
background-color: var(--input-bg);
|
423 |
-
flex-shrink: 0;
|
424 |
-
gap: 10px;
|
425 |
-
align-items: flex-end;
|
426 |
-
transition: background-color var(--transition-speed) ease, border-color var(--transition-speed) ease;
|
427 |
-
}
|
428 |
-
|
429 |
-
#user-input {
|
430 |
-
flex-grow: 1;
|
431 |
-
background-color: var(--container-bg);
|
432 |
-
color: var(--text-color);
|
433 |
-
border: 1px solid var(--border-color);
|
434 |
-
border-radius: var(--border-radius-slight);
|
435 |
-
padding: 12px 15px;
|
436 |
-
font-family: var(--font-family);
|
437 |
-
font-size: 1em;
|
438 |
-
resize: none;
|
439 |
-
overflow-y: auto;
|
440 |
-
max-height: 120px;
|
441 |
-
line-height: 1.4;
|
442 |
-
transition: border-color var(--transition-speed) ease, box-shadow var(--transition-speed) ease, background-color var(--transition-speed) ease;
|
443 |
-
}
|
444 |
-
|
445 |
-
#user-input:focus {
|
446 |
-
outline: none;
|
447 |
-
border-color: var(--text-color-darker);
|
448 |
-
box-shadow: 0 0 0 2px var(--focus-ring-color);
|
449 |
-
}
|
450 |
-
|
451 |
-
#user-input::placeholder { color: var(--placeholder-color); }
|
452 |
-
|
453 |
-
/* Control Buttons */
|
454 |
-
.control-button {
|
455 |
-
background-color: var(--input-bg);
|
456 |
-
color: var(--text-color-darker);
|
457 |
-
border: 1px solid var(--border-color);
|
458 |
-
border-radius: var(--border-radius-slight);
|
459 |
-
padding: 10px;
|
460 |
-
cursor: pointer;
|
461 |
-
display: flex;
|
462 |
-
justify-content: center;
|
463 |
-
align-items: center;
|
464 |
-
transition: background-color var(--transition-speed) ease, transform 0.1s ease, border-color var(--transition-speed) ease, color var(--transition-speed) ease;
|
465 |
-
height: 46px;
|
466 |
-
width: 46px;
|
467 |
-
flex-shrink: 0;
|
468 |
-
position: relative;
|
469 |
-
overflow: hidden;
|
470 |
-
}
|
471 |
-
|
472 |
-
.control-button:hover:not(:disabled) {
|
473 |
-
background-color: var(--accent-color-hover);
|
474 |
-
border-color: var(--accent-color-hover);
|
475 |
-
color: var(--text-color);
|
476 |
-
}
|
477 |
-
|
478 |
-
.control-button:active:not(:disabled) { transform: scale(0.95); }
|
479 |
-
.control-button:disabled {
|
480 |
-
background-color: var(--container-bg);
|
481 |
-
color: #555;
|
482 |
-
border-color: var(--border-color);
|
483 |
-
cursor: not-allowed;
|
484 |
-
}
|
485 |
-
|
486 |
-
.send-button .send-icon { transition: opacity var(--transition-speed) ease; }
|
487 |
-
.send-button .button-spinner {
|
488 |
-
position: absolute;
|
489 |
-
top: 50%;
|
490 |
-
left: 50%;
|
491 |
-
transform: translate(-50%, -50%);
|
492 |
-
width: 20px;
|
493 |
-
height: 20px;
|
494 |
-
}
|
495 |
-
|
496 |
-
.stop-button { color: var(--error-bg); }
|
497 |
-
.stop-button:hover:not(:disabled) {
|
498 |
-
background-color: #dc3545;
|
499 |
-
color: white;
|
500 |
-
border-color: #dc3545;
|
501 |
-
}
|
502 |
-
|
503 |
-
/* Spinner */
|
504 |
-
.spinner {
|
505 |
-
display: inline-block;
|
506 |
-
width: 1em;
|
507 |
-
height: 1em;
|
508 |
-
border: 2px solid currentColor;
|
509 |
-
border-right-color: transparent;
|
510 |
-
border-radius: 50%;
|
511 |
-
animation: spinner-border .75s linear infinite;
|
512 |
-
vertical-align: middle;
|
513 |
-
}
|
514 |
-
|
515 |
-
.button-spinner {
|
516 |
-
width: 20px;
|
517 |
-
height: 20px;
|
518 |
-
border-width: 3px;
|
519 |
-
color: var(--text-color);
|
520 |
-
}
|
521 |
-
|
522 |
-
@keyframes spinner-border { to { transform: rotate(360deg); } }
|
523 |
-
|
524 |
-
/* Error Message */
|
525 |
-
.error-message {
|
526 |
-
background-color: var(--error-bg);
|
527 |
-
color: #ffcccc;
|
528 |
-
border: 1px solid #600;
|
529 |
-
}
|
530 |
-
|
531 |
-
.error-message .copy-button {
|
532 |
-
background-color: rgba(255, 100, 100, 0.1);
|
533 |
-
color: #ffcccc;
|
534 |
-
}
|
535 |
-
|
536 |
-
.error-message .copy-button:hover {
|
537 |
-
background-color: rgba(255, 100, 100, 0.2);
|
538 |
-
color: #ffe0e0;
|
539 |
-
}
|
540 |
-
|
541 |
-
/* Modal Styling */
|
542 |
-
.modal-overlay {
|
543 |
-
position: fixed;
|
544 |
-
inset: 0;
|
545 |
-
background-color: rgba(0, 0, 0, 0.8);
|
546 |
-
display: flex;
|
547 |
-
justify-content: center;
|
548 |
-
align-items: center;
|
549 |
-
z-index: 1000;
|
550 |
-
opacity: 0;
|
551 |
-
transition: opacity var(--transition-speed) ease;
|
552 |
-
}
|
553 |
-
|
554 |
-
.modal-overlay.visible { opacity: 1; }
|
555 |
-
|
556 |
-
.modal-content {
|
557 |
-
background-color: var(--input-bg);
|
558 |
-
padding: 25px 30px;
|
559 |
-
border-radius: var(--border-radius-smooth);
|
560 |
-
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
|
561 |
-
width: 90%;
|
562 |
-
max-width: 400px;
|
563 |
-
text-align: center;
|
564 |
-
transform: scale(0.95);
|
565 |
-
transition: transform var(--transition-speed) ease;
|
566 |
-
border: 1px solid var(--border-color);
|
567 |
-
}
|
568 |
-
|
569 |
-
.modal-overlay.visible .modal-content { transform: scale(1); }
|
570 |
-
|
571 |
-
.modal-content h4 {
|
572 |
-
margin-bottom: 10px;
|
573 |
-
font-size: 1.2em;
|
574 |
-
font-weight: 500;
|
575 |
-
}
|
576 |
-
|
577 |
-
.modal-content p {
|
578 |
-
margin-bottom: 20px;
|
579 |
-
color: var(--text-color-darker);
|
580 |
-
font-size: 0.95em;
|
581 |
-
line-height: 1.5;
|
582 |
-
}
|
583 |
-
|
584 |
-
.modal-buttons {
|
585 |
-
display: flex;
|
586 |
-
justify-content: center;
|
587 |
-
gap: 15px;
|
588 |
-
}
|
589 |
-
|
590 |
-
.modal-button {
|
591 |
-
padding: 10px 20px;
|
592 |
-
border-radius: var(--border-radius-slight);
|
593 |
-
border: 1px solid var(--border-color);
|
594 |
-
cursor: pointer;
|
595 |
-
font-weight: 500;
|
596 |
-
transition: background-color var(--transition-speed) ease, transform 0.1s ease;
|
597 |
-
}
|
598 |
-
|
599 |
-
.modal-button.confirm {
|
600 |
-
background-color: #b00;
|
601 |
-
color: white;
|
602 |
-
border-color: #800;
|
603 |
-
}
|
604 |
-
|
605 |
-
.modal-button.confirm:hover { background-color: #d00; }
|
606 |
-
|
607 |
-
.modal-button.cancel {
|
608 |
-
background-color: var(--assistant-msg-bg);
|
609 |
-
color: var(--text-color);
|
610 |
-
}
|
611 |
-
|
612 |
-
.modal-button.cancel:hover { background-color: var(--accent-color-hover); }
|
613 |
-
.modal-button:active { transform: scale(0.97); }
|
614 |
-
|
615 |
-
/* Glow Effects */
|
616 |
-
.text-gradient {
|
617 |
-
background: linear-gradient(90deg, #fff, #aaa);
|
618 |
-
-webkit-background-clip: text;
|
619 |
-
background-clip: text;
|
620 |
-
-webkit-text-fill-color: transparent;
|
621 |
-
}
|
622 |
-
|
623 |
-
.hero-title-glow {
|
624 |
-
text-shadow: 0 0 10px rgba(255, 255, 255, 0.3);
|
625 |
-
}
|
626 |
-
|
627 |
-
.hero-subtitle-glow {
|
628 |
-
text-shadow: 0 0 5px rgba(255, 255, 255, 0.2);
|
629 |
-
}
|
630 |
-
|
631 |
-
.button-glow {
|
632 |
-
box-shadow: 0 0 15px rgba(255, 255, 255, 0.1);
|
633 |
-
}
|
634 |
-
|
635 |
-
.hero-card-glow {
|
636 |
-
box-shadow: 0 5px 20px rgba(255, 255, 255, 0.05);
|
637 |
-
}
|
638 |
-
|
639 |
-
.card-item-glow {
|
640 |
-
box-shadow: 0 2px 8px rgba(255, 255, 255, 0.03);
|
641 |
-
}
|
642 |
-
|
643 |
-
/* Animations */
|
644 |
-
@keyframes float {
|
645 |
-
0% { transform: translateY(0); }
|
646 |
-
50% { transform: translateY(-10px); }
|
647 |
-
100% { transform: translateY(0); }
|
648 |
-
}
|
649 |
-
|
650 |
-
.animate-float {
|
651 |
-
animation: float 6s ease-in-out infinite;
|
652 |
-
}
|
653 |
-
|
654 |
-
@keyframes scale-in {
|
655 |
-
from { transform: scale(0.9); opacity: 0; }
|
656 |
-
to { transform: scale(1); opacity: 1; }
|
657 |
-
}
|
658 |
-
|
659 |
-
.animate-scale-in {
|
660 |
-
animation: scale-in 0.5s ease-out forwards;
|
661 |
-
}
|
662 |
-
|
663 |
-
@keyframes fade-in-up {
|
664 |
-
from { transform: translateY(20px); opacity: 0; }
|
665 |
-
to { transform: translateY(0); opacity: 1; }
|
666 |
-
}
|
667 |
-
|
668 |
-
.animate-fade-in-up {
|
669 |
-
animation: fade-in-up 0.5s ease-out forwards;
|
670 |
-
}
|
671 |
-
|
672 |
-
/* Responsive adjustments */
|
673 |
-
@media (max-width: 768px) {
|
674 |
-
.chat-container {
|
675 |
-
width: 100%;
|
676 |
-
height: 100%;
|
677 |
-
border-radius: 0;
|
678 |
-
}
|
679 |
-
|
680 |
-
.message {
|
681 |
-
max-width: 90%;
|
682 |
-
}
|
683 |
-
|
684 |
-
.chat-header, .input-area {
|
685 |
-
padding: 10px 15px;
|
686 |
-
}
|
687 |
-
|
688 |
-
.chat-box {
|
689 |
-
padding: 15px;
|
690 |
-
}
|
691 |
-
}
|
692 |
-
.inverted {
|
693 |
-
filter: invert(1);
|
694 |
-
}
|
695 |
-
|
696 |
-
#invert-btn {
|
697 |
-
position: fixed;
|
698 |
-
bottom: 20px;
|
699 |
-
right: 20px;
|
700 |
-
padding: 10px; /* Removed text, increased padding */
|
701 |
-
background: transparent; /* Make background transparent */
|
702 |
-
border: none; /* Remove border */
|
703 |
-
cursor: pointer;
|
704 |
-
z-index: 9999;
|
705 |
-
width: 40px; /* Increased size for icons */
|
706 |
-
height: 40px;
|
707 |
-
display: flex; /* Use flexbox for centering */
|
708 |
-
align-items: center;
|
709 |
-
justify-content: center;
|
710 |
-
}
|
711 |
-
|
712 |
-
#invert-btn svg {
|
713 |
-
width: 80%; /* Increased size of SVG inside the button */
|
714 |
-
height: 80%;
|
715 |
-
}
|
716 |
-
|
717 |
-
.sun {
|
718 |
-
color: #FFD700; /* Gold for sun */
|
719 |
-
}
|
720 |
-
|
721 |
-
.moon {
|
722 |
-
color: #C0C0C0; /* Silver for moon */
|
723 |
-
}
|
724 |
-
|
725 |
-
/* User information styles */
|
726 |
-
.user-info {
|
727 |
-
position: absolute;
|
728 |
-
top: 10px;
|
729 |
-
right: 20px;
|
730 |
-
display: flex;
|
731 |
-
align-items: center;
|
732 |
-
gap: 10px;
|
733 |
-
color: #fff;
|
734 |
-
font-size: 14px;
|
735 |
-
}
|
736 |
-
|
737 |
-
.user-avatar {
|
738 |
-
width: 30px;
|
739 |
-
height: 30px;
|
740 |
-
border-radius: 50%;
|
741 |
-
background: #333;
|
742 |
-
display: flex;
|
743 |
-
align-items: center;
|
744 |
-
justify-content: center;
|
745 |
-
border: 1px solid #fff;
|
746 |
-
}
|
747 |
-
|
748 |
-
.logout-btn {
|
749 |
-
background: transparent;
|
750 |
-
color: #fff;
|
751 |
-
border: 1px solid #fff;
|
752 |
-
border-radius: 4px;
|
753 |
-
padding: 2px 8px;
|
754 |
-
font-size: 12px;
|
755 |
-
cursor: pointer;
|
756 |
-
transition: all 0.3s ease;
|
757 |
-
}
|
758 |
-
|
759 |
-
.logout-btn:hover {
|
760 |
-
background: rgba(255, 255, 255, 0.1);
|
761 |
-
box-shadow: 0 0 8px rgba(255, 255, 255, 0.5);
|
762 |
-
}
|
763 |
-
</style>
|
764 |
</head>
|
765 |
<script>
|
766 |
document.addEventListener('DOMContentLoaded', async () => {
|
@@ -833,54 +107,23 @@ code.unblur-token:not(pre code) {
|
|
833 |
<div class="header-bottom-row">
|
834 |
<label for="model-select">Model:</label>
|
835 |
<select id="model-select" class="model-select">
|
836 |
-
|
837 |
-
<option value="mistral-large-latest">Mistral Large (Latest)</option>
|
838 |
-
<option value="mistral-small-latest">Mistral Small (Latest)</option>
|
839 |
-
<option value="codestral-latest">Codestral (Latest)</option>
|
840 |
-
<option value="open-mistral-nemo">Mistral Nemo</option>
|
841 |
-
<option value="pixtral-large-latest">Pixtral</option>
|
842 |
-
</optgroup>
|
843 |
-
<optgroup label="Image Generation">
|
844 |
-
<option value="flux">Flux - Image Gen</option>
|
845 |
-
</optgroup>
|
846 |
-
<optgroup label="Anthropic">
|
847 |
-
<option value="claude-3-5-sonnet">Claude Sonnet 3.5</option>
|
848 |
-
<option value="claude-3.5-haiku">Claude Haiku 3.5</option>
|
849 |
-
<option value="claude">Claude</option>
|
850 |
-
</optgroup>
|
851 |
-
<optgroup label="Google">
|
852 |
-
<option value="gemini-flash-2.0">Gemini 2 Flash (Latest)</option>
|
853 |
-
<option value="gemini-1.5-pro">Gemini 1.5 Pro</option>
|
854 |
-
<option value="gemini-1.5-flash">Gemini 1.5 Flash</option>
|
855 |
-
<option value="gemini-pro">Gemini Pro</option>
|
856 |
-
</optgroup>
|
857 |
-
<optgroup label="Meta">
|
858 |
-
<option value="@cf/meta/llama-3-8b-instruct">Llama 3 8B Instruct</option>
|
859 |
-
<option value="meta-llama/Meta-Llama-3-8B-Instruct">Llama 3 8B Instruct (Full Name)</option>
|
860 |
-
<option value="@cf/meta/llama-3.3-70b-instruct-fp8-fast">Llama 3 70B Instruct</option>
|
861 |
-
<option value="meta-llama/Meta-Llama-3-70B-Instruct">Llama 3 70B Instruct (Full Name)</option>
|
862 |
-
<option value="cognitivecomputations/dolphin-2.9.1-llama-3-70b">Dolphin 2.9.1 Llama 3 70B</option>
|
863 |
-
</optgroup>
|
864 |
-
<optgroup label="OpenAI">
|
865 |
<option value="openai-xlarge">GPT-4.1</option>
|
866 |
<option value="openai-large">GPT-4.1 mini</option>
|
867 |
<option value="openai">GPT-4.1 nano</option>
|
868 |
<option value="chatgpt-4o-latest">GPT-4o (Latest)</option>
|
869 |
<option value="gpt-4o">GPT-4o</option>
|
870 |
<option value="gpt-3.5-turbo">GPT-3.5 Turbo</option>
|
|
|
|
|
|
|
|
|
|
|
|
|
871 |
</optgroup>
|
872 |
-
|
873 |
-
<option value="phi">Phi-4</option>
|
874 |
-
</optgroup>
|
875 |
-
<optgroup label="Image Generation">
|
876 |
-
<option value="Image-Generator">Image Generator</option>
|
877 |
-
</optgroup>
|
878 |
-
<optgroup label="Reasoning Models">
|
879 |
-
<option value="o1">o1</option>
|
880 |
-
<option value="o3-mini">o3-mini</option>
|
881 |
-
</optgroup>
|
882 |
-
<optgroup label="Other Models">
|
883 |
<option value="evil">Evil</option>
|
|
|
884 |
</select>
|
885 |
</div>
|
886 |
</header>
|
|
|
22 |
<meta name="twitter:description" content="Ultra-fast responses, zero cost, and total dominance. Test Loki AI's models like GPT-4o and more!">
|
23 |
<meta name="twitter:image" content="https://parthsadaria-lokiai.hf.space/banner.jpg">
|
24 |
|
25 |
+
<link rel="stylesheet" href="style.css">
|
26 |
<link rel="preconnect" href="https://fonts.googleapis.com">
|
27 |
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
28 |
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap" rel="stylesheet">
|
|
|
35 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
36 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
|
37 |
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@700&display=swap" rel="stylesheet">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
</head>
|
39 |
<script>
|
40 |
document.addEventListener('DOMContentLoaded', async () => {
|
|
|
107 |
<div class="header-bottom-row">
|
108 |
<label for="model-select">Model:</label>
|
109 |
<select id="model-select" class="model-select">
|
110 |
+
<optgroup label="OpenAI">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
<option value="openai-xlarge">GPT-4.1</option>
|
112 |
<option value="openai-large">GPT-4.1 mini</option>
|
113 |
<option value="openai">GPT-4.1 nano</option>
|
114 |
<option value="chatgpt-4o-latest">GPT-4o (Latest)</option>
|
115 |
<option value="gpt-4o">GPT-4o</option>
|
116 |
<option value="gpt-3.5-turbo">GPT-3.5 Turbo</option>
|
117 |
+
<optgroup label="Mistral">
|
118 |
+
<option value="mistral-large-latest">Mistral Large (Latest)</option>
|
119 |
+
<option value="mistral-small-latest">Mistral Small (Latest)</option>
|
120 |
+
<option value="codestral-latest">Codestral (Latest)</option>
|
121 |
+
<option value="open-mistral-nemo">Mistral Nemo</option>
|
122 |
+
<option value="pixtral-large-latest">Pixtral</option>
|
123 |
</optgroup>
|
124 |
+
<optgroup label="Other Models">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
<option value="evil">Evil</option>
|
126 |
+
</optgroup>
|
127 |
</select>
|
128 |
</div>
|
129 |
</header>
|