edwarddddr commited on
Commit
9b5ddb3
verified
1 Parent(s): c93f27f

Add 2 files

Browse files
Files changed (2) hide show
  1. README.md +6 -4
  2. index.html +467 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Nova
3
- emoji: 馃實
4
  colorFrom: red
5
- colorTo: red
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: nova
3
+ emoji: 馃惓
4
  colorFrom: red
5
+ colorTo: green
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,467 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>NOVA | AI Companion</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
9
+ <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
10
+ <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
11
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
12
+ <style>
13
+ :root {
14
+ --primary: #6366f1;
15
+ --secondary: #8b5cf6;
16
+ }
17
+
18
+ @keyframes float {
19
+ 0% { transform: translateY(0px); }
20
+ 50% { transform: translateY(-10px); }
21
+ 100% { transform: translateY(0px); }
22
+ }
23
+
24
+ .animate-float {
25
+ animation: float 3s ease-in-out infinite;
26
+ }
27
+
28
+ .gradient-text {
29
+ background: linear-gradient(90deg, var(--primary), var(--secondary));
30
+ -webkit-background-clip: text;
31
+ background-clip: text;
32
+ color: transparent;
33
+ }
34
+
35
+ .message-enter {
36
+ opacity: 0;
37
+ transform: translateY(10px);
38
+ }
39
+
40
+ .message-enter-active {
41
+ opacity: 1;
42
+ transform: translateY(0);
43
+ transition: all 300ms ease-out;
44
+ }
45
+
46
+ .sidebar-transition {
47
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
48
+ }
49
+
50
+ .custom-scrollbar::-webkit-scrollbar {
51
+ width: 6px;
52
+ }
53
+
54
+ .custom-scrollbar::-webkit-scrollbar-track {
55
+ background: rgba(0, 0, 0, 0.05);
56
+ }
57
+
58
+ .custom-scrollbar::-webkit-scrollbar-thumb {
59
+ background: rgba(0, 0, 0, 0.2);
60
+ border-radius: 3px;
61
+ }
62
+ </style>
63
+ </head>
64
+ <body class="bg-gray-50 text-gray-800 font-sans">
65
+ <div id="root"></div>
66
+
67
+ <script type="text/babel">
68
+ const { useState, useEffect, useRef } = React;
69
+
70
+ const Navbar = ({ toggleSidebar }) => {
71
+ return (
72
+ <header className="bg-white border-b border-gray-200 px-6 py-4 flex items-center justify-between sticky top-0 z-10">
73
+ <div className="flex items-center space-x-4">
74
+ <button
75
+ onClick={toggleSidebar}
76
+ className="md:hidden text-gray-500 hover:text-gray-700 focus:outline-none"
77
+ >
78
+ <i className="fas fa-bars text-xl"></i>
79
+ </button>
80
+ <div className="flex items-center">
81
+ <div className="w-8 h-8 rounded-full bg-gradient-to-r from-indigo-500 to-purple-500 flex items-center justify-center text-white">
82
+ <i className="fas fa-robot"></i>
83
+ </div>
84
+ <h1 className="ml-3 text-xl font-bold gradient-text">NOVA</h1>
85
+ </div>
86
+ </div>
87
+ <div className="flex items-center space-x-4">
88
+ <button className="text-gray-500 hover:text-gray-700 focus:outline-none">
89
+ <i className="fas fa-search"></i>
90
+ </button>
91
+ <button className="text-gray-500 hover:text-gray-700 focus:outline-none">
92
+ <i className="fas fa-cog"></i>
93
+ </button>
94
+ </div>
95
+ </header>
96
+ );
97
+ };
98
+
99
+ const Sidebar = ({ isOpen, closeSidebar }) => {
100
+ const [activeTab, setActiveTab] = useState('chat');
101
+
102
+ const tabs = [
103
+ { id: 'chat', icon: 'fa-comment-dots', label: 'Chat' },
104
+ { id: 'journal', icon: 'fa-book', label: 'Journal' },
105
+ { id: 'resources', icon: 'fa-box-open', label: 'Resources' },
106
+ { id: 'automation', icon: 'fa-magic', label: 'Automation' },
107
+ { id: 'insights', icon: 'fa-chart-line', label: 'Insights' }
108
+ ];
109
+
110
+ return (
111
+ <aside className={`fixed md:relative inset-y-0 left-0 w-64 bg-white border-r border-gray-200 flex flex-col z-20 sidebar-transition ${isOpen ? 'translate-x-0' : '-translate-x-full'} md:translate-x-0`}>
112
+ <div className="p-4 border-b border-gray-200 flex items-center justify-between">
113
+ <h2 className="text-lg font-semibold text-gray-800">Navigation</h2>
114
+ <button
115
+ onClick={closeSidebar}
116
+ className="md:hidden text-gray-500 hover:text-gray-700 focus:outline-none"
117
+ >
118
+ <i className="fas fa-times"></i>
119
+ </button>
120
+ </div>
121
+
122
+ <div className="flex-1 overflow-y-auto custom-scrollbar">
123
+ <nav className="p-4">
124
+ <ul className="space-y-1">
125
+ {tabs.map(tab => (
126
+ <li key={tab.id}>
127
+ <button
128
+ onClick={() => setActiveTab(tab.id)}
129
+ className={`w-full text-left px-4 py-3 rounded-lg flex items-center transition-colors ${activeTab === tab.id ? 'bg-indigo-50 text-indigo-600' : 'hover:bg-gray-50 text-gray-700'}`}
130
+ >
131
+ <i className={`fas ${tab.icon} mr-3 ${activeTab === tab.id ? 'text-indigo-500' : 'text-gray-500'}`}></i>
132
+ <span className="font-medium">{tab.label}</span>
133
+ </button>
134
+ </li>
135
+ ))}
136
+ </ul>
137
+ </nav>
138
+
139
+ <div className="px-4 pb-4">
140
+ <div className="bg-indigo-50 rounded-xl p-4">
141
+ <h3 className="text-sm font-medium text-indigo-800 mb-2">Daily Challenge</h3>
142
+ <p className="text-xs text-indigo-600 mb-3">Complete 3 journal entries to unlock premium features</p>
143
+ <div className="w-full bg-indigo-100 rounded-full h-2">
144
+ <div className="bg-indigo-500 h-2 rounded-full" style={{ width: '33%' }}></div>
145
+ </div>
146
+ </div>
147
+ </div>
148
+ </div>
149
+
150
+ <div className="p-4 border-t border-gray-200">
151
+ <div className="flex items-center">
152
+ <div className="w-10 h-10 rounded-full bg-gradient-to-r from-indigo-400 to-purple-400 flex items-center justify-center text-white">
153
+ <i className="fas fa-user"></i>
154
+ </div>
155
+ <div className="ml-3">
156
+ <p className="text-sm font-medium text-gray-800">Alex Johnson</p>
157
+ <p className="text-xs text-gray-500">Premium Member</p>
158
+ </div>
159
+ </div>
160
+ </div>
161
+ </aside>
162
+ );
163
+ };
164
+
165
+ const ActionPanel = ({ isOpen, closePanel }) => {
166
+ const quickActions = [
167
+ { icon: 'fa-plus', label: 'New Task', color: 'text-purple-500' },
168
+ { icon: 'fa-calendar', label: 'Schedule', color: 'text-blue-500' },
169
+ { icon: 'fa-lightbulb', label: 'Ideas', color: 'text-yellow-500' },
170
+ { icon: 'fa-chart-pie', label: 'Analyze', color: 'text-green-500' }
171
+ ];
172
+
173
+ const recentActivities = [
174
+ { icon: 'fa-book', label: 'Journal entry completed', time: '2h ago' },
175
+ { icon: 'fa-tasks', label: '3 tasks automated', time: 'Yesterday' },
176
+ { icon: 'fa-bolt', label: 'Energy optimized', time: '2 days ago' }
177
+ ];
178
+
179
+ return (
180
+ <aside className={`fixed md:relative inset-y-0 right-0 w-72 bg-white border-l border-gray-200 flex flex-col z-20 sidebar-transition ${isOpen ? 'translate-x-0' : 'translate-x-full'} md:translate-x-0`}>
181
+ <div className="p-4 border-b border-gray-200 flex items-center justify-between">
182
+ <h2 className="text-lg font-semibold text-gray-800">Action Panel</h2>
183
+ <button
184
+ onClick={closePanel}
185
+ className="md:hidden text-gray-500 hover:text-gray-700 focus:outline-none"
186
+ >
187
+ <i className="fas fa-times"></i>
188
+ </button>
189
+ </div>
190
+
191
+ <div className="flex-1 overflow-y-auto custom-scrollbar p-4">
192
+ <div className="mb-8">
193
+ <h3 className="text-xs font-semibold text-gray-500 uppercase tracking-wider mb-3">Quick Actions</h3>
194
+ <div className="grid grid-cols-2 gap-3">
195
+ {quickActions.map((action, index) => (
196
+ <button
197
+ key={index}
198
+ className="bg-gray-50 hover:bg-gray-100 rounded-xl p-3 flex flex-col items-center transition-colors"
199
+ >
200
+ <div className={`w-10 h-10 rounded-full ${action.color.replace('text', 'bg')} bg-opacity-10 flex items-center justify-center mb-2`}>
201
+ <i className={`fas ${action.icon} ${action.color}`}></i>
202
+ </div>
203
+ <span className="text-xs font-medium text-gray-700">{action.label}</span>
204
+ </button>
205
+ ))}
206
+ </div>
207
+ </div>
208
+
209
+ <div className="mb-8">
210
+ <h3 className="text-xs font-semibold text-gray-500 uppercase tracking-wider mb-3">Recent Activities</h3>
211
+ <div className="space-y-3">
212
+ {recentActivities.map((activity, index) => (
213
+ <div key={index} className="flex items-start">
214
+ <div className="mt-1 mr-3">
215
+ <div className="w-8 h-8 rounded-full bg-gray-100 flex items-center justify-center text-gray-500">
216
+ <i className={`fas ${activity.icon} text-xs`}></i>
217
+ </div>
218
+ </div>
219
+ <div className="flex-1">
220
+ <p className="text-sm font-medium text-gray-800">{activity.label}</p>
221
+ <p className="text-xs text-gray-500">{activity.time}</p>
222
+ </div>
223
+ </div>
224
+ ))}
225
+ </div>
226
+ </div>
227
+
228
+ <div>
229
+ <h3 className="text-xs font-semibold text-gray-500 uppercase tracking-wider mb-3">Personalized Suggestions</h3>
230
+ <div className="bg-gradient-to-r from-indigo-50 to-purple-50 rounded-xl p-4">
231
+ <p className="text-sm font-medium text-gray-800 mb-2">Based on your patterns:</p>
232
+ <ul className="text-xs text-gray-600 space-y-2">
233
+ <li className="flex items-start">
234
+ <i className="fas fa-check-circle text-indigo-400 mr-2 mt-0.5"></i>
235
+ <span>Schedule a weekly review at 4pm Fridays</span>
236
+ </li>
237
+ <li className="flex items-start">
238
+ <i className="fas fa-check-circle text-indigo-400 mr-2 mt-0.5"></i>
239
+ <span>Automate your morning routine</span>
240
+ </li>
241
+ <li className="flex items-start">
242
+ <i className="fas fa-check-circle text-indigo-400 mr-2 mt-0.5"></i>
243
+ <span>Try the 5-minute journal prompt</span>
244
+ </li>
245
+ </ul>
246
+ </div>
247
+ </div>
248
+ </div>
249
+ </aside>
250
+ );
251
+ };
252
+
253
+ const Message = ({ message, isUser }) => {
254
+ return (
255
+ <div className={`flex ${isUser ? 'justify-end' : 'justify-start'} mb-4`}>
256
+ <div className={`max-w-xs md:max-w-md lg:max-w-lg rounded-2xl p-4 ${isUser ? 'bg-indigo-500 text-white rounded-br-none' : 'bg-white border border-gray-200 rounded-bl-none'}`}>
257
+ <div className="flex items-start">
258
+ {!isUser && (
259
+ <div className="mr-3">
260
+ <div className="w-8 h-8 rounded-full bg-gradient-to-r from-indigo-400 to-purple-400 flex items-center justify-center text-white">
261
+ <i className="fas fa-robot text-sm"></i>
262
+ </div>
263
+ </div>
264
+ )}
265
+ <div className="flex-1">
266
+ <p className={isUser ? 'text-white' : 'text-gray-800'}>{message.text}</p>
267
+ {message.actions && (
268
+ <div className="mt-3 flex flex-wrap gap-2">
269
+ {message.actions.map((action, index) => (
270
+ <button
271
+ key={index}
272
+ className={`text-xs px-3 py-1 rounded-full ${isUser ? 'bg-indigo-600 text-white' : 'bg-gray-100 text-gray-700'} hover:opacity-90 transition-opacity`}
273
+ >
274
+ {action}
275
+ </button>
276
+ ))}
277
+ </div>
278
+ )}
279
+ </div>
280
+ </div>
281
+ <p className={`text-xs mt-2 ${isUser ? 'text-indigo-200' : 'text-gray-500'}`}>
282
+ {new Date(message.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}
283
+ </p>
284
+ </div>
285
+ </div>
286
+ );
287
+ };
288
+
289
+ const ChatInput = ({ onSendMessage }) => {
290
+ const [input, setInput] = useState('');
291
+ const inputRef = useRef(null);
292
+
293
+ const handleSubmit = (e) => {
294
+ e.preventDefault();
295
+ if (input.trim()) {
296
+ onSendMessage(input);
297
+ setInput('');
298
+ }
299
+ };
300
+
301
+ const handleKeyDown = (e) => {
302
+ if (e.key === 'Enter' && !e.shiftKey) {
303
+ handleSubmit(e);
304
+ }
305
+ };
306
+
307
+ useEffect(() => {
308
+ inputRef.current.focus();
309
+ }, []);
310
+
311
+ return (
312
+ <form onSubmit={handleSubmit} className="bg-white border-t border-gray-200 p-4">
313
+ <div className="max-w-3xl mx-auto">
314
+ <div className="relative">
315
+ <textarea
316
+ ref={inputRef}
317
+ value={input}
318
+ onChange={(e) => setInput(e.target.value)}
319
+ onKeyDown={handleKeyDown}
320
+ placeholder="Message NOVA..."
321
+ className="w-full border border-gray-300 rounded-xl py-3 px-4 pr-12 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-transparent resize-none"
322
+ rows="1"
323
+ />
324
+ <button
325
+ type="submit"
326
+ disabled={!input.trim()}
327
+ className={`absolute right-3 bottom-3 w-8 h-8 rounded-full flex items-center justify-center ${input.trim() ? 'bg-indigo-500 text-white' : 'bg-gray-200 text-gray-400'}`}
328
+ >
329
+ <i className="fas fa-paper-plane"></i>
330
+ </button>
331
+ </div>
332
+ <div className="flex items-center justify-between mt-2 px-1">
333
+ <div className="flex space-x-2">
334
+ <button type="button" className="text-gray-500 hover:text-gray-700">
335
+ <i className="fas fa-microphone"></i>
336
+ </button>
337
+ <button type="button" className="text-gray-500 hover:text-gray-700">
338
+ <i className="fas fa-image"></i>
339
+ </button>
340
+ <button type="button" className="text-gray-500 hover:text-gray-700">
341
+ <i className="fas fa-paperclip"></i>
342
+ </button>
343
+ </div>
344
+ <p className="text-xs text-gray-500">
345
+ NOVA v2.1 路 <span className="text-indigo-500">Learning active</span>
346
+ </p>
347
+ </div>
348
+ </div>
349
+ </form>
350
+ );
351
+ };
352
+
353
+ const ChatWindow = ({ messages, onSendMessage }) => {
354
+ const messagesEndRef = useRef(null);
355
+
356
+ useEffect(() => {
357
+ messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
358
+ }, [messages]);
359
+
360
+ return (
361
+ <div className="flex-1 overflow-y-auto custom-scrollbar p-4 bg-gray-50">
362
+ <div className="max-w-3xl mx-auto">
363
+ {/* Welcome message */}
364
+ <div className="flex justify-center mb-8">
365
+ <div className="bg-white border border-gray-200 rounded-2xl p-6 text-center max-w-md">
366
+ <div className="w-16 h-16 rounded-full bg-gradient-to-r from-indigo-400 to-purple-400 flex items-center justify-center text-white mx-auto mb-4 animate-float">
367
+ <i className="fas fa-robot text-2xl"></i>
368
+ </div>
369
+ <h3 className="text-xl font-bold text-gray-800 mb-2">Hello, I'm NOVA</h3>
370
+ <p className="text-gray-600 mb-4">Your AI companion for productivity, wellness, and growth. How can I assist you today?</p>
371
+ <div className="grid grid-cols-2 gap-2">
372
+ <button className="bg-indigo-50 hover:bg-indigo-100 text-indigo-600 text-xs px-3 py-2 rounded-lg">
373
+ Journal prompt
374
+ </button>
375
+ <button className="bg-indigo-50 hover:bg-indigo-100 text-indigo-600 text-xs px-3 py-2 rounded-lg">
376
+ Task automation
377
+ </button>
378
+ <button className="bg-indigo-50 hover:bg-indigo-100 text-indigo-600 text-xs px-3 py-2 rounded-lg">
379
+ Resource tips
380
+ </button>
381
+ <button className="bg-indigo-50 hover:bg-indigo-100 text-indigo-600 text-xs px-3 py-2 rounded-lg">
382
+ Energy check
383
+ </button>
384
+ </div>
385
+ </div>
386
+ </div>
387
+
388
+ {/* Chat messages */}
389
+ {messages.map((message, index) => (
390
+ <Message key={index} message={message} isUser={message.isUser} />
391
+ ))}
392
+
393
+ <div ref={messagesEndRef} />
394
+ </div>
395
+ </div>
396
+ );
397
+ };
398
+
399
+ const App = () => {
400
+ const [sidebarOpen, setSidebarOpen] = useState(false);
401
+ const [panelOpen, setPanelOpen] = useState(false);
402
+ const [messages, setMessages] = useState([
403
+ {
404
+ text: "Welcome back! I've analyzed your patterns and have some personalized suggestions for you today.",
405
+ timestamp: new Date(),
406
+ isUser: false,
407
+ actions: ["View suggestions", "Dismiss"]
408
+ }
409
+ ]);
410
+
411
+ const toggleSidebar = () => setSidebarOpen(!sidebarOpen);
412
+ const togglePanel = () => setPanelOpen(!panelOpen);
413
+
414
+ const handleSendMessage = (text) => {
415
+ const userMessage = {
416
+ text,
417
+ timestamp: new Date(),
418
+ isUser: true
419
+ };
420
+
421
+ setMessages(prev => [...prev, userMessage]);
422
+
423
+ // Simulate bot response
424
+ setTimeout(() => {
425
+ const responses = [
426
+ "I understand. Would you like me to help break this down into actionable steps?",
427
+ "That's an interesting point. Based on your previous activities, I can suggest some resources.",
428
+ "I've logged this in your journal. Would you like to reflect on similar past experiences?",
429
+ "I can automate parts of this process for you. Shall I prepare some options?"
430
+ ];
431
+
432
+ const botMessage = {
433
+ text: responses[Math.floor(Math.random() * responses.length)],
434
+ timestamp: new Date(),
435
+ isUser: false,
436
+ actions: ["Yes please", "Not now", "More options"]
437
+ };
438
+
439
+ setMessages(prev => [...prev, botMessage]);
440
+ }, 1000 + Math.random() * 2000);
441
+ };
442
+
443
+ return (
444
+ <div className="flex h-screen overflow-hidden bg-gray-50">
445
+ <Sidebar isOpen={sidebarOpen} closeSidebar={() => setSidebarOpen(false)} />
446
+
447
+ <div className="flex-1 flex flex-col overflow-hidden">
448
+ <Navbar toggleSidebar={toggleSidebar} />
449
+
450
+ <div className="flex flex-1 overflow-hidden">
451
+ <main className="flex-1 flex flex-col overflow-hidden">
452
+ <ChatWindow messages={messages} onSendMessage={handleSendMessage} />
453
+ <ChatInput onSendMessage={handleSendMessage} />
454
+ </main>
455
+
456
+ <ActionPanel isOpen={panelOpen} closePanel={() => setPanelOpen(false)} />
457
+ </div>
458
+ </div>
459
+ </div>
460
+ );
461
+ };
462
+
463
+ const root = ReactDOM.createRoot(document.getElementById('root'));
464
+ root.render(<App />);
465
+ </script>
466
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 馃К <a href="https://enzostvs-deepsite.hf.space?remix=edwarddddr/nova" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
467
+ </html>