ParthSadaria commited on
Commit
7cc5089
·
verified ·
1 Parent(s): 58ebc79

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +346 -78
index.html CHANGED
@@ -3,165 +3,433 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Loki.AI - By Parth Sadaria</title>
 
 
 
 
 
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
- <link href="https://fonts.googleapis.com/css2?family=Encode+Sans:[email protected]&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Playfair+Display:ital,wght@0,400..900;1,400..900&family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&family=Protest+Revolution&display=swap" rel="stylesheet">
 
10
  <style>
11
- @font-face {
12
- font-family: "Playfair Display";
13
- font-weight: normal;
14
- font-style: normal;
 
 
 
 
 
 
15
  }
16
 
17
  * {
18
- font-family: "Playfair Display";
19
  margin: 0;
20
  padding: 0;
21
  box-sizing: border-box;
22
  }
23
 
 
 
 
 
24
  body {
25
- background-color: black;
26
- color: white;
 
27
  display: flex;
28
  flex-direction: column;
29
  justify-content: center;
30
  align-items: center;
31
  min-height: 100vh;
32
  text-align: center;
33
- font-family: 'Instrument Serif', serif;
34
  position: relative;
35
- overflow: hidden;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  }
37
 
 
 
 
 
 
 
38
  .container {
39
  position: relative;
40
- z-index: 1;
41
- transition: all 0.3s ease;
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
43
 
44
  h1 {
45
- font-size: clamp(4rem, 15vw, 9rem);
46
- font-weight: bold;
47
- letter-spacing: -3px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  text-transform: uppercase;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  position: relative;
50
- transition: all 0.5s ease;
51
- color: rgba(255, 255, 255, 0.1);
 
52
  }
53
 
54
- p {
55
- font-size: clamp(1rem, 3vw, 2rem);
56
- color: rgba(255, 255, 255, 0.1);
57
- margin-top: -10px;
58
- letter-spacing: 1px;
59
- transition: all 0.5s ease;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  }
61
 
 
 
 
62
  .glow {
63
  position: fixed;
64
- width: 600px;
65
- height: 600px;
66
- background: radial-gradient(circle at center, rgba(255, 255, 255, 0.1) 0%, rgba(0, 0, 0, 0) 70%);
67
  pointer-events: none;
68
  opacity: 0;
69
- transition: opacity 0.3s ease;
70
- transform: translate(-50%, -50%);
71
- z-index: 0;
 
72
  }
73
 
74
- /* Hover effects */
75
  body:hover .glow {
76
  opacity: 1;
77
- }
78
-
79
- body:hover h1,
80
- body:hover p,
81
- body:hover a {
82
- color: rgba(255, 255, 255, 1);
83
- text-shadow: 0 0 20px rgba(255, 255, 255, 0.5);
84
- }
85
-
86
- body:hover .playground-text {
87
- color: rgba(255, 255, 255, 0.7);
88
  }
89
 
90
  .cursor {
91
- width: 20px;
92
- height: 20px;
93
- border: 2px solid rgba(255, 255, 255, 0.3);
94
  border-radius: 50%;
95
  position: fixed;
96
  pointer-events: none;
97
- transition: all 0.1s ease;
98
- z-index: 9999;
 
 
 
 
99
  transform: translate(-50%, -50%);
 
 
100
  }
101
 
102
  body:hover .cursor {
103
- border-color: white;
104
- box-shadow: 0 0 20px rgba(255, 255, 255, 0.3);
105
  }
106
 
107
- .playground-text {
108
- font-size: 14px;
109
- font-weight: bold;
110
- display: inline-block;
111
- margin-right: 5px;
112
- transition: all 0.5s ease;
 
 
 
 
 
113
  }
114
 
115
- a {
116
- color: white;
117
- text-decoration: underline;
118
- transition: all 0.5s ease;
119
  }
120
 
 
 
 
 
 
121
  @media (max-width: 768px) {
122
  h1 {
123
- letter-spacing: -1px;
 
 
 
124
  }
125
- p {
126
- letter-spacing: 1px;
127
  }
 
 
 
 
 
 
128
  }
 
129
  </style>
130
  </head>
131
  <body>
 
132
  <div class="cursor"></div>
133
  <div class="glow"></div>
 
 
134
  <div class="container">
135
  <h1>Loki.AI</h1>
136
- <p>By Parth Sadaria</p>
137
- <br>
138
- <p class="playground-text">Playground:</p>
139
- <a href="https://parthsadaria-lokiai.hf.space/playground" rel="noopener noreferrer">https://parthsadaria-lokiai.hf.space/playground</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  </div>
141
 
142
  <script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  document.addEventListener('mousemove', (e) => {
144
- const cursor = document.querySelector('.cursor');
145
- const glow = document.querySelector('.glow');
 
 
 
 
 
 
 
146
 
147
- // Move cursor
148
- cursor.style.left = e.clientX + 'px';
149
- cursor.style.top = e.clientY + 'px';
150
 
151
- // Move glow effect
152
- glow.style.left = e.clientX + 'px';
153
- glow.style.top = e.clientY + 'px';
 
 
 
 
 
 
 
154
  });
155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  document.addEventListener('mousedown', () => {
157
- const cursor = document.querySelector('.cursor');
158
- cursor.style.transform = 'translate(-50%, -50%) scale(0.8)';
159
  });
160
 
161
  document.addEventListener('mouseup', () => {
162
- const cursor = document.querySelector('.cursor');
163
- cursor.style.transform = 'translate(-50%, -50%) scale(1)';
 
 
 
 
 
 
 
164
  });
 
165
  </script>
166
  </body>
167
  </html>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Loki.AI - Access Premium AI Models Free</title>
7
+
8
+ <!-- Favicon (Optional but recommended) -->
9
+ <link rel="icon" href="favicon.ico" type="image/x-icon">
10
+
11
+ <!-- Google Fonts: DM Sans (Bold 700, Regular 400) -->
12
  <link rel="preconnect" href="https://fonts.googleapis.com">
13
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
14
+ <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap" rel="stylesheet">
15
+
16
  <style>
17
+ :root {
18
+ --bg-color: #050505; /* Slightly off-black for depth */
19
+ --text-color: #e0e0e0;
20
+ --text-color-muted: #777;
21
+ --accent-color: #00ffff; /* Cyan - adjust if needed */
22
+ --glow-color: rgba(0, 255, 255, 0.15); /* Glow color matching accent */
23
+ --hover-bg: rgba(0, 255, 255, 0.1);
24
+ --border-color: rgba(255, 255, 255, 0.1);
25
+ --font-main: 'DM Sans', sans-serif;
26
+ --transition-speed: 0.3s;
27
  }
28
 
29
  * {
 
30
  margin: 0;
31
  padding: 0;
32
  box-sizing: border-box;
33
  }
34
 
35
+ html {
36
+ font-size: 16px; /* Base font size */
37
+ }
38
+
39
  body {
40
+ background-color: var(--bg-color);
41
+ color: var(--text-color);
42
+ font-family: var(--font-main);
43
  display: flex;
44
  flex-direction: column;
45
  justify-content: center;
46
  align-items: center;
47
  min-height: 100vh;
48
  text-align: center;
 
49
  position: relative;
50
+ overflow: hidden; /* Prevent scrollbars from animations */
51
+ cursor: none; /* Hide default cursor */
52
+ perspective: 1000px; /* For 3D effects if needed later */
53
+ }
54
+
55
+ /* Subtle Animated Background Gradient */
56
+ body::before {
57
+ content: '';
58
+ position: absolute;
59
+ top: 0;
60
+ left: 0;
61
+ right: 0;
62
+ bottom: 0;
63
+ background: radial-gradient(circle at 30% 70%, rgba(0, 50, 50, 0.3), transparent 50%),
64
+ radial-gradient(circle at 70% 30%, rgba(50, 0, 50, 0.2), transparent 50%);
65
+ opacity: 0;
66
+ animation: fadeInBg 3s ease-out forwards, pulseBg 15s infinite ease-in-out alternate;
67
+ z-index: 0;
68
+ }
69
+
70
+ @keyframes fadeInBg {
71
+ to { opacity: 1; }
72
  }
73
 
74
+ @keyframes pulseBg {
75
+ 0% { transform: scale(1); opacity: 0.5; }
76
+ 100% { transform: scale(1.1); opacity: 0.8; }
77
+ }
78
+
79
+
80
  .container {
81
  position: relative;
82
+ z-index: 2; /* Above background, below cursor */
83
+ padding: 2rem;
84
+ max-width: 900px; /* Limit width */
85
+ width: 90%;
86
+ animation: slideInUp 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.5s forwards;
87
+ opacity: 0;
88
+ transform: translateY(30px);
89
+ }
90
+
91
+ @keyframes slideInUp {
92
+ to {
93
+ opacity: 1;
94
+ transform: translateY(0);
95
+ }
96
  }
97
 
98
  h1 {
99
+ font-size: clamp(3rem, 10vw, 6rem); /* Responsive font size */
100
+ font-weight: 700; /* Bold DM Sans */
101
+ letter-spacing: -0.05em; /* Tighter letter spacing */
102
+ margin-bottom: 0.2rem;
103
+ color: var(--text-color);
104
+ text-shadow: 0 0 15px rgba(255, 255, 255, 0.1);
105
+ transition: color var(--transition-speed) ease, text-shadow var(--transition-speed) ease;
106
+ position: relative; /* For potential pseudo-elements */
107
+ }
108
+
109
+ .subtitle {
110
+ font-size: clamp(0.9rem, 2.5vw, 1.2rem);
111
+ font-weight: 400; /* Regular DM Sans */
112
+ color: var(--text-color-muted);
113
+ margin-bottom: 2.5rem;
114
+ letter-spacing: 0.05em;
115
+ transition: color var(--transition-speed) ease;
116
+ }
117
+
118
+ .models-section {
119
+ margin-bottom: 3rem;
120
+ opacity: 0;
121
+ animation: fadeIn 1s ease 1s forwards;
122
+ }
123
+
124
+ .models-section h2 {
125
+ font-size: clamp(1rem, 3vw, 1.3rem);
126
+ font-weight: 700;
127
+ color: var(--accent-color);
128
+ margin-bottom: 1.5rem;
129
  text-transform: uppercase;
130
+ letter-spacing: 0.1em;
131
+ text-shadow: 0 0 10px var(--glow-color);
132
+ }
133
+
134
+ .models-grid {
135
+ display: flex;
136
+ flex-wrap: wrap;
137
+ justify-content: center;
138
+ gap: 0.8rem; /* Space between model badges */
139
+ }
140
+
141
+ .model-badge {
142
+ display: inline-block;
143
+ background-color: rgba(255, 255, 255, 0.05);
144
+ color: var(--text-color-muted);
145
+ font-size: clamp(0.75rem, 2vw, 0.9rem);
146
+ font-weight: 400;
147
+ padding: 0.5em 1em;
148
+ border-radius: 15px; /* Pill shape */
149
+ border: 1px solid var(--border-color);
150
+ transition: all var(--transition-speed) cubic-bezier(0.25, 0.46, 0.45, 0.94);
151
+ transform: scale(1); /* Base scale for transition */
152
+ }
153
+
154
+ .model-badge:hover {
155
+ background-color: var(--hover-bg);
156
+ color: var(--accent-color);
157
+ border-color: var(--accent-color);
158
+ transform: scale(1.05) translateY(-2px); /* Subtle lift */
159
+ box-shadow: 0 4px 15px rgba(0, 255, 255, 0.2);
160
+ }
161
+
162
+ .playgrounds-section {
163
+ opacity: 0;
164
+ animation: fadeIn 1s ease 1.2s forwards;
165
+ display: flex;
166
+ flex-direction: column; /* Stack links vertically on mobile */
167
+ align-items: center;
168
+ gap: 1rem;
169
+ }
170
+
171
+ @media (min-width: 600px) {
172
+ .playgrounds-section {
173
+ flex-direction: row; /* Side-by-side on larger screens */
174
+ justify-content: center;
175
+ gap: 1.5rem;
176
+ }
177
+ }
178
+
179
+ .playground-link {
180
+ display: inline-block;
181
+ color: var(--text-color);
182
+ text-decoration: none;
183
+ font-size: clamp(0.9rem, 2.5vw, 1.1rem);
184
+ font-weight: 700; /* Bold links */
185
+ padding: 0.8em 1.8em;
186
+ border: 2px solid var(--border-color);
187
+ border-radius: 5px;
188
  position: relative;
189
+ overflow: hidden; /* For hover effect */
190
+ transition: all var(--transition-speed) ease;
191
+ z-index: 1;
192
  }
193
 
194
+ .playground-link::before {
195
+ content: '';
196
+ position: absolute;
197
+ top: 0;
198
+ left: -100%;
199
+ width: 100%;
200
+ height: 100%;
201
+ background: var(--accent-color);
202
+ transition: left var(--transition-speed) ease;
203
+ z-index: -1;
204
+ }
205
+
206
+ .playground-link:hover {
207
+ color: var(--bg-color); /* Text color changes to background */
208
+ border-color: var(--accent-color);
209
+ transform: translateY(-3px); /* Slight lift */
210
+ box-shadow: 0 5px 20px rgba(0, 255, 255, 0.3);
211
+ }
212
+
213
+ .playground-link:hover::before {
214
+ left: 0; /* Slide in the background */
215
+ }
216
+
217
+ .playground-link span { /* Add inner span for potential icon */
218
+ display: inline-block;
219
+ transition: transform 0.2s ease;
220
+ }
221
+ .playground-link:hover span {
222
+ transform: translateX(3px); /* Subtle text shift */
223
  }
224
 
225
+
226
+ /* --- Mouse Effects --- */
227
+
228
  .glow {
229
  position: fixed;
230
+ width: 800px; /* Larger glow */
231
+ height: 800px;
232
+ background: radial-gradient(circle at center, var(--glow-color) 0%, rgba(0, 0, 0, 0) 60%);
233
  pointer-events: none;
234
  opacity: 0;
235
+ transition: opacity 0.4s ease, transform 0.1s ease-out; /* Smooth opacity fade */
236
+ transform: translate(-50%, -50%) scale(0.8);
237
+ z-index: 1; /* Behind content, above bg */
238
+ filter: blur(10px); /* Soften the glow edges */
239
  }
240
 
 
241
  body:hover .glow {
242
  opacity: 1;
243
+ transform: translate(-50%, -50%) scale(1);
 
 
 
 
 
 
 
 
 
 
244
  }
245
 
246
  .cursor {
247
+ width: 25px;
248
+ height: 25px;
249
+ border: 2px solid var(--accent-color); /* Use accent color */
250
  border-radius: 50%;
251
  position: fixed;
252
  pointer-events: none;
253
+ transition: transform 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94),
254
+ background-color 0.2s ease,
255
+ border-color 0.2s ease,
256
+ width 0.2s ease,
257
+ height 0.2s ease;
258
+ z-index: 9999; /* Always on top */
259
  transform: translate(-50%, -50%);
260
+ mix-blend-mode: difference; /* Cool effect over elements */
261
+ background-color: transparent;
262
  }
263
 
264
  body:hover .cursor {
265
+ /* Handled by JS interactions */
 
266
  }
267
 
268
+ /* Cursor interaction states */
269
+ .cursor.hover-link {
270
+ transform: translate(-50%, -50%) scale(1.5);
271
+ background-color: var(--accent-color);
272
+ border-color: transparent;
273
+ }
274
+
275
+ .cursor.hover-text {
276
+ transform: translate(-50%, -50%) scale(0.7);
277
+ border-width: 4px;
278
+ border-color: rgba(255,255,255, 0.5);
279
  }
280
 
281
+ .cursor.clicking {
282
+ transform: translate(-50%, -50%) scale(0.6);
283
+ background-color: rgba(255,255,255,0.3);
 
284
  }
285
 
286
+ @keyframes fadeIn {
287
+ to { opacity: 1; }
288
+ }
289
+
290
+ /* Responsive adjustments */
291
  @media (max-width: 768px) {
292
  h1 {
293
+ letter-spacing: -0.03em;
294
+ }
295
+ .container {
296
+ padding: 1.5rem;
297
  }
298
+ .models-grid {
299
+ gap: 0.6rem;
300
  }
301
+ .playgrounds-section {
302
+ gap: 0.8rem;
303
+ }
304
+ .playground-link {
305
+ padding: 0.7em 1.5em;
306
+ }
307
  }
308
+
309
  </style>
310
  </head>
311
  <body>
312
+ <!-- Mouse Effect Elements -->
313
  <div class="cursor"></div>
314
  <div class="glow"></div>
315
+
316
+ <!-- Main Content -->
317
  <div class="container">
318
  <h1>Loki.AI</h1>
319
+ <p class="subtitle">By Parth Sadaria</p>
320
+
321
+ <div class="models-section">
322
+ <h2>Free Access To Premium Models</h2>
323
+ <div class="models-grid">
324
+ <!-- List your models here -->
325
+ <span class="model-badge">GPT-4o</span>
326
+ <span class="model-badge">GPT-4o-mini</span>
327
+ <span class="model-badge">Anthropic o1</span>
328
+ <span class="model-badge">Anthropic o3-mini</span>
329
+ <span class="model-badge">GPT-4.5 (Hypothetical)</span>
330
+ <span class="model-badge">Claude 3.7 Sonnet</span>
331
+ <span class="model-badge">And More Top Models...</span>
332
+ </div>
333
+ </div>
334
+
335
+ <div class="playgrounds-section">
336
+ <a href="https://parthsadaria-lokiai.hf.space/playground" class="playground-link" target="_blank" rel="noopener noreferrer">
337
+ <span>AI Playground</span>
338
+ </a>
339
+ <a href="https://parthsadaria-lokiai.hf.space/image-playground" class="playground-link" target="_blank" rel="noopener noreferrer">
340
+ <span>Image Playground</span>
341
+ </a>
342
+ </div>
343
  </div>
344
 
345
  <script>
346
+ const cursor = document.querySelector('.cursor');
347
+ const glow = document.querySelector('.glow');
348
+ const hoverables = document.querySelectorAll('a, .model-badge');
349
+ const textElements = document.querySelectorAll('h1, p, h2'); // Add other text if needed
350
+
351
+ let mouseX = 0;
352
+ let mouseY = 0;
353
+ let cursorX = 0;
354
+ let cursorY = 0;
355
+ let glowX = 0;
356
+ let glowY = 0;
357
+ const speed = 0.1; // Adjust for smoother cursor following (lower = smoother)
358
+ const glowSpeed = 0.08; // Slightly different speed for glow
359
+
360
+ function animate() {
361
+ // Lerp (linear interpolation) for smooth following
362
+ cursorX += (mouseX - cursorX) * speed;
363
+ cursorY += (mouseY - cursorY) * speed;
364
+ glowX += (mouseX - glowX) * glowSpeed;
365
+ glowY += (mouseY - glowY) * glowSpeed;
366
+
367
+ cursor.style.transform = `translate(${cursorX - cursor.offsetWidth / 2}px, ${cursorY - cursor.offsetHeight / 2}px) ${cursor.dataset.scale || 'scale(1)'}`; // Apply stored scale
368
+ glow.style.transform = `translate(${glowX - glow.offsetWidth / 2}px, ${glowY - glow.offsetHeight / 2}px) scale(1)`; // Glow follows slightly slower
369
+
370
+ requestAnimationFrame(animate);
371
+ }
372
+
373
  document.addEventListener('mousemove', (e) => {
374
+ mouseX = e.clientX;
375
+ mouseY = e.clientY;
376
+
377
+ // Move glow immediately for responsiveness on hover-in, smooth following otherwise
378
+ if (glow.style.opacity === '0') {
379
+ glow.style.left = mouseX + 'px';
380
+ glow.style.top = mouseY + 'px';
381
+ }
382
+ });
383
 
384
+ // Start the animation loop
385
+ animate();
 
386
 
387
+ // Hover effects for cursor
388
+ hoverables.forEach(el => {
389
+ el.addEventListener('mouseenter', () => {
390
+ cursor.classList.add('hover-link');
391
+ cursor.dataset.scale = 'scale(1.5)'; // Store scale for lerp
392
+ });
393
+ el.addEventListener('mouseleave', () => {
394
+ cursor.classList.remove('hover-link');
395
+ cursor.dataset.scale = 'scale(1)'; // Reset scale
396
+ });
397
  });
398
 
399
+ textElements.forEach(el => {
400
+ el.addEventListener('mouseenter', () => {
401
+ if (!cursor.classList.contains('hover-link')) { // Don't override link hover
402
+ cursor.classList.add('hover-text');
403
+ cursor.dataset.scale = 'scale(0.7)';
404
+ }
405
+ });
406
+ el.addEventListener('mouseleave', () => {
407
+ cursor.classList.remove('hover-text');
408
+ if (!cursor.classList.contains('hover-link')) {
409
+ cursor.dataset.scale = 'scale(1)';
410
+ }
411
+ });
412
+ });
413
+
414
+
415
+ // Click effect for cursor
416
  document.addEventListener('mousedown', () => {
417
+ cursor.classList.add('clicking');
418
+ cursor.dataset.scale = `scale(0.6) ${cursor.dataset.scale?.includes('1.5') ? 'scale(1.5)' : ''}`; // Combine scales if needed
419
  });
420
 
421
  document.addEventListener('mouseup', () => {
422
+ cursor.classList.remove('clicking');
423
+ // Reset scale based on current hover state
424
+ if (cursor.classList.contains('hover-link')) {
425
+ cursor.dataset.scale = 'scale(1.5)';
426
+ } else if (cursor.classList.contains('hover-text')) {
427
+ cursor.dataset.scale = 'scale(0.7)';
428
+ } else {
429
+ cursor.dataset.scale = 'scale(1)';
430
+ }
431
  });
432
+
433
  </script>
434
  </body>
435
  </html>