Aminrez commited on
Commit
3f3a9a6
·
verified ·
1 Parent(s): a9a7762

Upload folder using huggingface_hub

Browse files
Files changed (3) hide show
  1. assets/css/styles.css +103 -371
  2. assets/js/script.js +7 -130
  3. index.html +44 -118
assets/css/styles.css CHANGED
@@ -5,17 +5,15 @@
5
  }
6
 
7
  :root {
8
- --bg-primary: #0a0a0a;
9
- --bg-secondary: #111111;
10
- --text-primary: #ffffff;
11
- --text-secondary: #a1a1aa;
12
- --text-tertiary: #71717a;
13
- --border-color: #27272a;
14
- --accent-gradient: linear-gradient(90deg, #10a37f, #29d488);
15
- --card-bg: #1a1a1a;
16
- --card-hover: #262626;
17
- --input-bg: #1a1a1a;
18
- --input-border: #3f3f46;
19
  }
20
 
21
  body {
@@ -28,9 +26,9 @@ body {
28
  flex-direction: column;
29
  }
30
 
31
- /* Header Styles */
32
  .header {
33
- background: rgba(10, 10, 10, 0.8);
34
  backdrop-filter: blur(10px);
35
  border-bottom: 1px solid var(--border-color);
36
  position: fixed;
@@ -41,9 +39,9 @@ body {
41
  }
42
 
43
  .nav-container {
44
- max-width: 1200px;
45
  margin: 0 auto;
46
- padding: 0.75rem 1.5rem;
47
  display: flex;
48
  justify-content: space-between;
49
  align-items: center;
@@ -56,53 +54,29 @@ body {
56
  }
57
 
58
  .logo {
59
- width: 32px;
60
- height: 32px;
61
  color: var(--text-primary);
62
  }
63
 
64
  .brand-name {
65
- font-size: 1.125rem;
66
  font-weight: 600;
67
  }
68
 
69
- .nav-menu {
70
- display: flex;
71
- align-items: center;
72
- gap: 1.5rem;
73
- }
74
-
75
- .nav-link {
76
- color: var(--text-secondary);
77
- text-decoration: none;
78
- font-size: 0.875rem;
79
- transition: color 0.2s;
80
- padding: 0.5rem 0.75rem;
81
- border-radius: 0.375rem;
82
- }
83
-
84
- .nav-link:hover {
85
- color: var(--text-primary);
86
- background: rgba(255, 255, 255, 0.05);
87
- }
88
-
89
  .mobile-menu-btn {
90
- display: none;
91
  background: none;
92
- border: none;
93
  color: var(--text-primary);
94
  cursor: pointer;
95
  padding: 0.5rem;
96
  border-radius: 0.375rem;
97
- transition: background 0.2s;
 
98
  }
99
 
100
  .mobile-menu-btn:hover {
101
- background: rgba(255, 255, 255, 0.05);
102
- }
103
-
104
- .desktop-only {
105
- display: block;
106
  }
107
 
108
  /* Main Content */
@@ -113,175 +87,78 @@ body {
113
  flex-direction: column;
114
  align-items: center;
115
  min-height: 100vh;
 
116
  }
117
 
118
  .hero-section {
119
  text-align: center;
120
- padding: 4rem 1.5rem 3rem;
121
- max-width: 768px;
122
- margin: 0 auto;
123
  }
124
 
125
  .hero-title {
126
- font-size: 4rem;
127
- font-weight: 700;
128
- margin-bottom: 1.5rem;
129
- background: linear-gradient(135deg, #ffffff 0%, #a1a1aa 100%);
130
- -webkit-background-clip: text;
131
- -webkit-text-fill-color: transparent;
132
- background-clip: text;
133
- }
134
-
135
- .hero-subtitle {
136
- font-size: 1.5rem;
137
- color: var(--text-primary);
138
- margin-bottom: 0.75rem;
139
  font-weight: 600;
140
- }
141
-
142
- .hero-description {
143
- font-size: 1rem;
144
- color: var(--text-secondary);
145
- max-width: 600px;
146
- margin: 0 auto;
147
  }
148
 
149
  /* Examples Section */
150
  .examples-section {
151
  width: 100%;
152
- max-width: 960px;
153
- padding: 0 1.5rem 2rem;
154
  }
155
 
156
  .examples-grid {
157
  display: grid;
158
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
159
  gap: 0.75rem;
 
160
  }
161
 
162
  .example-card {
163
- background: var(--card-bg);
164
  border: 1px solid var(--border-color);
165
  border-radius: 0.75rem;
166
- padding: 1rem;
167
  display: flex;
168
  align-items: center;
169
- gap: 0.75rem;
170
  cursor: pointer;
171
- transition: all 0.2s;
172
- position: relative;
173
- overflow: hidden;
174
  }
175
 
176
  .example-card:hover {
177
- background: var(--card-hover);
178
- border-color: #3f3f46;
179
- transform: translateY(-2px);
180
- }
181
-
182
- .example-card::before {
183
- content: '';
184
- position: absolute;
185
- top: 0;
186
- left: 0;
187
- right: 0;
188
- height: 1px;
189
- background: var(--accent-gradient);
190
- transform: translateY(-100%);
191
- transition: transform 0.3s;
192
- }
193
-
194
- .example-card:hover::before {
195
- transform: translateY(0);
196
  }
197
 
198
- .example-icon {
199
- width: 32px;
200
- height: 32px;
201
- display: flex;
202
- align-items: center;
203
- justify-content: center;
204
- background: rgba(16, 163, 127, 0.1);
205
- border-radius: 0.375rem;
206
- color: #10a37f;
207
  flex-shrink: 0;
208
  }
209
 
210
- .example-text {
211
  flex: 1;
212
  font-size: 0.875rem;
213
  color: var(--text-primary);
214
  }
215
 
216
- .example-arrow {
217
- background: none;
218
- border: none;
219
- color: var(--text-tertiary);
220
- cursor: pointer;
221
- padding: 0.25rem;
222
- border-radius: 0.25rem;
223
- transition: all 0.2s;
224
  opacity: 0;
225
- transform: scale(0.8);
226
  }
227
 
228
- .example-card:hover .example-arrow {
229
  opacity: 1;
230
- transform: scale(1);
231
- }
232
-
233
- .example-arrow:hover {
234
- color: var(--text-primary);
235
- background: rgba(255, 255, 255, 0.1);
236
- }
237
-
238
- /* Capabilities Section */
239
- .capabilities-section {
240
- width: 100%;
241
- max-width: 960px;
242
- padding: 0 1.5rem 3rem;
243
- }
244
-
245
- .capabilities-grid {
246
- display: grid;
247
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
248
- gap: 1.5rem;
249
- }
250
-
251
- .capability-card {
252
- text-align: center;
253
- padding: 1.5rem;
254
- background: var(--card-bg);
255
- border: 1px solid var(--border-color);
256
- border-radius: 0.75rem;
257
- transition: all 0.2s;
258
- }
259
-
260
- .capability-card:hover {
261
- background: var(--card-hover);
262
- border-color: #3f3f46;
263
- transform: translateY(-2px);
264
- }
265
-
266
- .capability-icon {
267
- width: 48px;
268
- height: 48px;
269
- margin: 0 auto 1rem;
270
- color: var(--text-secondary);
271
- }
272
-
273
- .capability-title {
274
- font-size: 1rem;
275
- font-weight: 500;
276
- color: var(--text-secondary);
277
- line-height: 1.5;
278
  }
279
 
280
  /* Input Section */
281
  .input-section {
282
  width: 100%;
283
  max-width: 768px;
284
- padding: 0 1.5rem 3rem;
285
  margin-top: auto;
286
  }
287
 
@@ -292,17 +169,17 @@ body {
292
  .input-wrapper {
293
  position: relative;
294
  background: var(--input-bg);
295
- border: 1px solid var(--input-border);
296
  border-radius: 0.75rem;
297
  display: flex;
298
  align-items: flex-end;
299
  transition: all 0.2s;
300
- overflow: hidden;
301
  }
302
 
303
  .input-wrapper:focus-within {
304
- border-color: #10a37f;
305
- box-shadow: 0 0 0 2px rgba(16, 163, 127, 0.1);
306
  }
307
 
308
  .message-input {
@@ -310,278 +187,133 @@ body {
310
  background: transparent;
311
  border: none;
312
  outline: none;
313
- padding: 0.875rem 3.5rem 0.875rem 1rem;
314
  color: var(--text-primary);
315
- font-size: 0.875rem;
316
  resize: none;
317
- min-height: 52px;
318
  max-height: 200px;
319
  line-height: 1.5;
320
  font-family: inherit;
321
  }
322
 
323
  .message-input::placeholder {
324
- color: var(--text-tertiary);
325
  }
326
 
327
- .send-button {
328
- position: absolute;
329
- right: 0.5rem;
330
- bottom: 0.5rem;
331
- width: 32px;
332
- height: 32px;
333
- background: var(--accent-gradient);
334
  border: none;
335
- border-radius: 0.375rem;
336
- color: white;
337
  cursor: pointer;
 
 
 
338
  display: flex;
339
  align-items: center;
340
  justify-content: center;
341
- transition: all 0.2s;
342
- opacity: 0.5;
343
  }
344
 
345
- .send-button:hover {
346
- opacity: 1;
347
- transform: scale(1.05);
348
- }
349
-
350
- .send-button:active {
351
- transform: scale(0.95);
352
- }
353
-
354
- .input-footer {
355
- font-size: 0.75rem;
356
- color: var(--text-tertiary);
357
- text-align: center;
358
- margin-top: 0.75rem;
359
- }
360
-
361
- /* Mobile Menu */
362
- .mobile-menu-overlay {
363
- position: fixed;
364
- top: 0;
365
- left: 0;
366
- right: 0;
367
- bottom: 0;
368
- background: rgba(0, 0, 0, 0.8);
369
- backdrop-filter: blur(10px);
370
- z-index: 200;
371
- opacity: 0;
372
- visibility: hidden;
373
- transition: all 0.3s;
374
- }
375
-
376
- .mobile-menu-overlay.active {
377
- opacity: 1;
378
- visibility: visible;
379
- }
380
-
381
- .mobile-menu-content {
382
  position: absolute;
383
- top: 0;
384
- right: 0;
385
- height: 100vh;
386
- width: 280px;
387
- background: var(--bg-secondary);
388
- padding: 1.5rem;
389
- transform: translateX(100%);
390
- transition: transform 0.3s;
391
- border-left: 1px solid var(--border-color);
392
- }
393
-
394
- .mobile-menu-overlay.active .mobile-menu-content {
395
- transform: translateX(0);
396
  }
397
 
398
- .mobile-menu-close {
399
  position: absolute;
400
- top: 1.5rem;
401
- right: 1.5rem;
402
- background: none;
403
- border: none;
404
  color: var(--text-primary);
405
- cursor: pointer;
406
- padding: 0.5rem;
407
- border-radius: 0.375rem;
408
- transition: background 0.2s;
409
  }
410
 
411
- .mobile-menu-close:hover {
412
- background: rgba(255, 255, 255, 0.05);
413
  }
414
 
415
- .mobile-nav {
416
- margin-top: 4rem;
417
- display: flex;
418
- flex-direction: column;
419
- gap: 0.5rem;
420
  }
421
 
422
- .mobile-nav-link {
423
- display: block;
424
- padding: 0.875rem 1rem;
425
  color: var(--text-secondary);
426
- text-decoration: none;
427
- border-radius: 0.5rem;
428
- transition: all 0.2s;
429
- font-size: 0.9375rem;
430
- }
431
-
432
- .mobile-nav-link:hover {
433
- color: var(--text-primary);
434
- background: rgba(255, 255, 255, 0.05);
435
  }
436
 
437
  /* Footer */
438
  .footer {
439
- padding: 1.5rem;
440
  text-align: center;
441
  border-top: 1px solid var(--border-color);
442
  background: var(--bg-secondary);
443
  }
444
 
445
- .footer-content p {
446
- color: var(--text-tertiary);
447
- font-size: 0.875rem;
448
- }
449
-
450
- .footer-content a {
451
  color: var(--text-secondary);
452
  text-decoration: none;
453
  transition: color 0.2s;
454
  }
455
 
456
- .footer-content a:hover {
457
- color: #10a37f;
458
  }
459
 
460
  /* Responsive Design */
461
  @media (max-width: 768px) {
462
- .nav-menu {
463
- display: none;
464
- }
465
-
466
- .mobile-menu-btn {
467
- display: block;
468
- }
469
-
470
- .desktop-only {
471
- display: none;
472
- }
473
-
474
  .hero-title {
475
- font-size: 3rem;
476
- }
477
-
478
- .hero-subtitle {
479
- font-size: 1.25rem;
480
  }
481
 
482
  .examples-grid {
483
  grid-template-columns: 1fr;
 
484
  }
485
 
486
- .capabilities-grid {
487
- grid-template-columns: 1fr;
488
- gap: 1rem;
489
- }
490
-
491
- .capability-card {
492
- padding: 1rem;
493
- }
494
-
495
- .capability-icon {
496
- width: 40px;
497
- height: 40px;
498
- }
499
-
500
- .capability-title {
501
- font-size: 0.875rem;
502
  }
503
  }
504
 
505
  @media (max-width: 480px) {
506
  .nav-container {
507
- padding: 0.75rem 1rem;
508
- }
509
-
510
- .hero-section {
511
- padding: 3rem 1rem 2rem;
512
  }
513
 
514
  .hero-title {
515
- font-size: 2.5rem;
516
  }
517
 
518
- .hero-subtitle {
519
- font-size: 1.125rem;
520
  }
521
 
522
- .example-card {
523
- padding: 0.875rem;
524
  }
525
 
526
- .message-input {
527
- padding: 0.75rem 3rem 0.75rem 0.875rem;
528
  }
529
  }
530
 
531
- /* Animations */
532
- @keyframes fadeIn {
533
- from {
534
- opacity: 0;
535
- transform: translateY(10px);
536
- }
537
- to {
538
- opacity: 1;
539
- transform: translateY(0);
 
 
 
 
 
540
  }
541
- }
542
-
543
- .example-card {
544
- animation: fadeIn 0.5s ease-out forwards;
545
- }
546
-
547
- .example-card:nth-child(1) { animation-delay: 0.1s; opacity: 0; }
548
- .example-card:nth-child(2) { animation-delay: 0.2s; opacity: 0; }
549
- .example-card:nth-child(3) { animation-delay: 0.3s; opacity: 0; }
550
- .example-card:nth-child(4) { animation-delay: 0.4s; opacity: 0; }
551
-
552
- .capability-card {
553
- animation: fadeIn 0.6s ease-out forwards;
554
- }
555
-
556
- .capability-card:nth-child(1) { animation-delay: 0.5s; opacity: 0; }
557
- .capability-card:nth-child(2) { animation-delay: 0.6s; opacity: 0; }
558
- .capability-card:nth-child(3) { animation-delay: 0.7s; opacity: 0; }
559
-
560
- /* Smooth scrolling */
561
- html {
562
- scroll-behavior: smooth;
563
- }
564
-
565
- /* Selection styles */
566
- ::selection {
567
- background: rgba(16, 163, 127, 0.2);
568
- color: var(--text-primary);
569
- }
570
-
571
- /* Scrollbar styles */
572
- ::-webkit-scrollbar {
573
- width: 8px;
574
- }
575
-
576
- ::-webkit-scrollbar-track {
577
- background: var(--bg-secondary);
578
- }
579
-
580
- ::-webkit-scrollbar-thumb {
581
- background: var(--border-color);
582
- border-radius: 4px;
583
- }
584
-
585
- ::-webkit-scrollbar-thumb:hover {
586
- background: #3f3f46;
587
  }
 
5
  }
6
 
7
  :root {
8
+ --bg-primary: #ffffff;
9
+ --bg-secondary: #f7f7f8;
10
+ --text-primary: #2d2d2d;
11
+ --text-secondary: #6e6e80;
12
+ --border-color: #d9d9e3;
13
+ --hover-bg: #f0f0f0;
14
+ --input-bg: #ffffff;
15
+ --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04);
16
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
 
 
17
  }
18
 
19
  body {
 
26
  flex-direction: column;
27
  }
28
 
29
+ /* Header */
30
  .header {
31
+ background: rgba(255, 255, 255, 0.9);
32
  backdrop-filter: blur(10px);
33
  border-bottom: 1px solid var(--border-color);
34
  position: fixed;
 
39
  }
40
 
41
  .nav-container {
42
+ max-width: 48rem;
43
  margin: 0 auto;
44
+ padding: 1rem 1rem;
45
  display: flex;
46
  justify-content: space-between;
47
  align-items: center;
 
54
  }
55
 
56
  .logo {
57
+ width: 20px;
58
+ height: 20px;
59
  color: var(--text-primary);
60
  }
61
 
62
  .brand-name {
63
+ font-size: 1rem;
64
  font-weight: 600;
65
  }
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  .mobile-menu-btn {
 
68
  background: none;
69
+ border: 1px solid var(--border-color);
70
  color: var(--text-primary);
71
  cursor: pointer;
72
  padding: 0.5rem;
73
  border-radius: 0.375rem;
74
+ transition: all 0.2s;
75
+ background: var(--bg-primary);
76
  }
77
 
78
  .mobile-menu-btn:hover {
79
+ background: var(--hover-bg);
 
 
 
 
80
  }
81
 
82
  /* Main Content */
 
87
  flex-direction: column;
88
  align-items: center;
89
  min-height: 100vh;
90
+ padding-bottom: 4rem;
91
  }
92
 
93
  .hero-section {
94
  text-align: center;
95
+ padding: 3rem 1rem 2rem;
96
+ width: 100%;
 
97
  }
98
 
99
  .hero-title {
100
+ font-size: 3rem;
 
 
 
 
 
 
 
 
 
 
 
 
101
  font-weight: 600;
102
+ color: var(--text-primary);
103
+ letter-spacing: -0.01em;
 
 
 
 
 
104
  }
105
 
106
  /* Examples Section */
107
  .examples-section {
108
  width: 100%;
109
+ max-width: 768px;
110
+ padding: 0 1rem 2rem;
111
  }
112
 
113
  .examples-grid {
114
  display: grid;
115
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
116
  gap: 0.75rem;
117
+ margin-bottom: 2rem;
118
  }
119
 
120
  .example-card {
121
+ background: var(--bg-primary);
122
  border: 1px solid var(--border-color);
123
  border-radius: 0.75rem;
124
+ padding: 1rem 1rem 1rem 1.25rem;
125
  display: flex;
126
  align-items: center;
127
+ gap: 0.875rem;
128
  cursor: pointer;
129
+ transition: all 0.15s ease;
 
 
130
  }
131
 
132
  .example-card:hover {
133
+ background: var(--bg-secondary);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  }
135
 
136
+ .example-card svg:first-child {
137
+ color: var(--text-secondary);
 
 
 
 
 
 
 
138
  flex-shrink: 0;
139
  }
140
 
141
+ .example-card span {
142
  flex: 1;
143
  font-size: 0.875rem;
144
  color: var(--text-primary);
145
  }
146
 
147
+ .arrow-icon {
148
+ color: var(--text-secondary);
 
 
 
 
 
 
149
  opacity: 0;
150
+ transition: opacity 0.15s ease;
151
  }
152
 
153
+ .example-card:hover .arrow-icon {
154
  opacity: 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  }
156
 
157
  /* Input Section */
158
  .input-section {
159
  width: 100%;
160
  max-width: 768px;
161
+ padding: 2rem 1rem 0;
162
  margin-top: auto;
163
  }
164
 
 
169
  .input-wrapper {
170
  position: relative;
171
  background: var(--input-bg);
172
+ border: 1px solid var(--border-color);
173
  border-radius: 0.75rem;
174
  display: flex;
175
  align-items: flex-end;
176
  transition: all 0.2s;
177
+ box-shadow: var(--shadow-sm);
178
  }
179
 
180
  .input-wrapper:focus-within {
181
+ border-color: var(--text-secondary);
182
+ box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.05);
183
  }
184
 
185
  .message-input {
 
187
  background: transparent;
188
  border: none;
189
  outline: none;
190
+ padding: 0.75rem 3rem 0.75rem 1rem;
191
  color: var(--text-primary);
192
+ font-size: 1rem;
193
  resize: none;
194
+ min-height: 44px;
195
  max-height: 200px;
196
  line-height: 1.5;
197
  font-family: inherit;
198
  }
199
 
200
  .message-input::placeholder {
201
+ color: var(--text-secondary);
202
  }
203
 
204
+ .attach-button, .send-button {
205
+ background: none;
 
 
 
 
 
206
  border: none;
207
+ color: var(--text-secondary);
 
208
  cursor: pointer;
209
+ padding: 0.5rem;
210
+ border-radius: 0.375rem;
211
+ transition: all 0.2s;
212
  display: flex;
213
  align-items: center;
214
  justify-content: center;
 
 
215
  }
216
 
217
+ .attach-button {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
  position: absolute;
219
+ left: 0.5rem;
220
+ bottom: 0.5rem;
 
 
 
 
 
 
 
 
 
 
 
221
  }
222
 
223
+ .send-button {
224
  position: absolute;
225
+ right: 0.5rem;
226
+ bottom: 0.5rem;
 
 
227
  color: var(--text-primary);
228
+ opacity: 0.3;
229
+ transition: all 0.2s;
 
 
230
  }
231
 
232
+ .send-button:active {
233
+ transform: scale(0.95);
234
  }
235
 
236
+ .message-input:focus ~ .send-button,
237
+ .message-input:not(:placeholder-shown) ~ .send-button {
238
+ opacity: 1;
 
 
239
  }
240
 
241
+ .disclaimer {
242
+ text-align: center;
243
+ font-size: 0.75rem;
244
  color: var(--text-secondary);
245
+ margin-top: 1rem;
 
 
 
 
 
 
 
 
246
  }
247
 
248
  /* Footer */
249
  .footer {
250
+ padding: 1rem;
251
  text-align: center;
252
  border-top: 1px solid var(--border-color);
253
  background: var(--bg-secondary);
254
  }
255
 
256
+ .footer a {
 
 
 
 
 
257
  color: var(--text-secondary);
258
  text-decoration: none;
259
  transition: color 0.2s;
260
  }
261
 
262
+ .footer a:hover {
263
+ text-decoration: underline;
264
  }
265
 
266
  /* Responsive Design */
267
  @media (max-width: 768px) {
 
 
 
 
 
 
 
 
 
 
 
 
268
  .hero-title {
269
+ font-size: 2.5rem;
 
 
 
 
270
  }
271
 
272
  .examples-grid {
273
  grid-template-columns: 1fr;
274
+ gap: 0.5rem;
275
  }
276
 
277
+ .input-wrapper {
278
+ box-shadow: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  }
280
  }
281
 
282
  @media (max-width: 480px) {
283
  .nav-container {
284
+ padding: 1rem 0.75rem;
 
 
 
 
285
  }
286
 
287
  .hero-title {
288
+ font-size: 2rem;
289
  }
290
 
291
+ .message-input {
292
+ padding: 0.75rem 2.5rem 0.75rem 0.75rem;
293
  }
294
 
295
+ .attach-button {
296
+ left: 0.25rem;
297
  }
298
 
299
+ .send-button {
300
+ right: 0.25rem;
301
  }
302
  }
303
 
304
+ /* Transitions */
305
+ * {
306
+ transition: border-color 0.2s, background-color 0.2s;
307
+ }
308
+
309
+ /* Dark mode support */
310
+ @media (prefers-color-scheme: dark) {
311
+ :root {
312
+ --bg-primary: #0a0a0a;
313
+ --bg-secondary: #111111;
314
+ --text-primary: #ffffff;
315
+ --text-secondary: #a1a1aa;
316
+ --border-color: #27272a;
317
+ --hover-bg: #1a1a1a;
318
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
319
  }
assets/js/script.js CHANGED
@@ -1,36 +1,7 @@
1
- // Mobile menu functionality
2
- const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
3
- const mobileMenu = document.getElementById('mobileMenu');
4
- const mobileMenuClose = document.getElementById('mobileMenuClose');
5
-
6
- mobileMenuBtn.addEventListener('click', () => {
7
- mobileMenu.classList.add('active');
8
- document.body.style.overflow = 'hidden';
9
- });
10
-
11
- mobileMenuClose.addEventListener('click', () => {
12
- mobileMenu.classList.remove('active');
13
- document.body.style.overflow = '';
14
- });
15
-
16
- mobileMenu.addEventListener('click', (e) => {
17
- if (e.target === mobileMenu) {
18
- mobileMenu.classList.remove('active');
19
- document.body.style.overflow = '';
20
- }
21
- });
22
-
23
- // Close mobile menu when clicking on a link
24
- document.querySelectorAll('.mobile-nav-link').forEach(link => {
25
- link.addEventListener('click', () => {
26
- mobileMenu.classList.remove('active');
27
- document.body.style.overflow = '';
28
- });
29
- });
30
-
31
  // Message input functionality
32
  const messageInput = document.querySelector('.message-input');
33
  const sendButton = document.querySelector('.send-button');
 
34
 
35
  // Auto-resize textarea
36
  function resizeTextarea() {
@@ -40,12 +11,6 @@ function resizeTextarea() {
40
 
41
  messageInput.addEventListener('input', () => {
42
  resizeTextarea();
43
- // Toggle send button opacity based on input
44
- if (messageInput.value.trim()) {
45
- sendButton.style.opacity = '1';
46
- } else {
47
- sendButton.style.opacity = '0.5';
48
- }
49
  });
50
 
51
  // Handle Enter key (Shift+Enter for new line)
@@ -61,111 +26,23 @@ function sendMessage() {
61
  const message = messageInput.value.trim();
62
  if (message) {
63
  console.log('Sending message:', message);
64
- // Clear input
65
  messageInput.value = '';
66
  resizeTextarea();
67
- sendButton.style.opacity = '0.5';
68
-
69
- // Here you would typically send the message to your backend
70
- // For demo purposes, we'll just log it
71
  }
72
  }
73
 
74
  sendButton.addEventListener('click', sendMessage);
75
 
76
  // Example card interactions
77
- document.querySelectorAll('.example-card').forEach(card => {
78
  card.addEventListener('click', () => {
79
- const text = card.querySelector('.example-text p').textContent;
80
- messageInput.value = text;
81
  messageInput.focus();
82
  resizeTextarea();
83
- sendButton.style.opacity = '1';
84
- });
85
- });
86
-
87
- // Smooth scroll for anchor links
88
- document.querySelectorAll('a[href^="#"]').forEach(anchor => {
89
- anchor.addEventListener('click', function (e) {
90
- e.preventDefault();
91
- const target = document.querySelector(this.getAttribute('href'));
92
- if (target) {
93
- target.scrollIntoView({
94
- behavior: 'smooth',
95
- block: 'start'
96
- });
97
- }
98
- });
99
- });
100
-
101
- // Add parallax effect to hero section on scroll
102
- window.addEventListener('scroll', () => {
103
- const scrolled = window.pageYOffset;
104
- const heroTitle = document.querySelector('.hero-title');
105
- const heroSubtitle = document.querySelector('.hero-subtitle');
106
-
107
- if (heroTitle && heroSubtitle) {
108
- heroTitle.style.transform = `translateY(${scrolled * 0.3}px)`;
109
- heroTitle.style.opacity = 1 - scrolled * 0.001;
110
- heroSubtitle.style.transform = `translateY(${scrolled * 0.2}px)`;
111
- heroSubtitle.style.opacity = 1 - scrolled * 0.001;
112
- }
113
- });
114
-
115
- // Intersection Observer for fade-in animations
116
- const observerOptions = {
117
- threshold: 0.1,
118
- rootMargin: '0px 0px -50px 0px'
119
- };
120
-
121
- const observer = new IntersectionObserver((entries) => {
122
- entries.forEach(entry => {
123
- if (entry.isIntersecting) {
124
- entry.target.style.opacity = '1';
125
- entry.target.style.transform = 'translateY(0)';
126
- }
127
- });
128
- }, observerOptions);
129
-
130
- // Observe capability cards
131
- document.querySelectorAll('.capability-card').forEach(card => {
132
- card.style.opacity = '0';
133
- card.style.transform = 'translateY(20px)';
134
- card.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
135
- observer.observe(card);
136
- });
137
-
138
- // Add hover effect to nav links
139
- document.querySelectorAll('.nav-link, .mobile-nav-link').forEach(link => {
140
- link.addEventListener('mouseenter', (e) => {
141
- e.target.style.transform = 'translateX(2px)';
142
- });
143
-
144
- link.addEventListener('mouseleave', (e) => {
145
- e.target.style.transform = 'translateX(0)';
146
  });
147
  });
148
 
149
- // Typing animation for hero title (optional enhancement)
150
- function typeWriter(element, text, speed = 50) {
151
- let i = 0;
152
- element.textContent = '';
153
-
154
- function type() {
155
- if (i < text.length) {
156
- element.textContent += text.charAt(i);
157
- i++;
158
- setTimeout(type, speed);
159
- }
160
- }
161
-
162
- type();
163
- }
164
-
165
- // Uncomment to enable typing animation on page load
166
- // window.addEventListener('load', () => {
167
- // const heroTitle = document.querySelector('.hero-title');
168
- // if (heroTitle) {
169
- // typeWriter(heroTitle, 'ChatGPT', 100);
170
- // }
171
- // });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  // Message input functionality
2
  const messageInput = document.querySelector('.message-input');
3
  const sendButton = document.querySelector('.send-button');
4
+ const exampleCards = document.querySelectorAll('.example-card');
5
 
6
  // Auto-resize textarea
7
  function resizeTextarea() {
 
11
 
12
  messageInput.addEventListener('input', () => {
13
  resizeTextarea();
 
 
 
 
 
 
14
  });
15
 
16
  // Handle Enter key (Shift+Enter for new line)
 
26
  const message = messageInput.value.trim();
27
  if (message) {
28
  console.log('Sending message:', message);
 
29
  messageInput.value = '';
30
  resizeTextarea();
31
+ messageInput.focus();
 
 
 
32
  }
33
  }
34
 
35
  sendButton.addEventListener('click', sendMessage);
36
 
37
  // Example card interactions
38
+ exampleCards.forEach(card => {
39
  card.addEventListener('click', () => {
40
+ const prompt = card.dataset.prompt;
41
+ messageInput.value = prompt;
42
  messageInput.focus();
43
  resizeTextarea();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  });
45
  });
46
 
47
+ // Smooth scroll behavior
48
+ document.documentElement.style.scrollBehavior = 'smooth';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
index.html CHANGED
@@ -20,121 +20,60 @@
20
  <span class="brand-name">ChatGPT</span>
21
  </div>
22
  <nav class="nav-menu">
23
- <a href="#" class="nav-link desktop-only">Research</a>
24
- <a href="#" class="nav-link desktop-only">About</a>
25
- <a href="#" class="nav-link desktop-only">Log in</a>
26
- <a href="#" class="nav-link">Sign up</a>
 
27
  </nav>
28
- <button class="mobile-menu-btn" aria-label="Menu">
29
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
30
- <path d="M3 12H21M3 6H21M3 18H21" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
31
- </svg>
32
- </button>
33
  </div>
34
  </header>
35
 
36
  <main class="main">
37
  <div class="hero-section">
38
- <div class="hero-content">
39
- <h1 class="hero-title">ChatGPT</h1>
40
- <p class="hero-subtitle">Get answers. Find inspiration. Be more productive.</p>
41
- <p class="hero-description">Free to use. Easy to try. Just ask and ChatGPT can help with writing, learning, brainstorming, and more.</p>
42
- </div>
43
  </div>
44
 
45
  <div class="examples-section">
46
  <div class="examples-grid">
47
- <div class="example-card">
48
- <div class="example-icon">
49
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
50
- <path d="M9 12L11 14L15 10M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
51
- </svg>
52
- </div>
53
- <div class="example-text">
54
- <p>Write a thank-you note to my interviewer</p>
55
- </div>
56
- <button class="example-arrow">
57
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
58
- <path d="M7 17L17 7M17 7H7M17 7V17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
59
- </svg>
60
- </button>
61
- </div>
62
-
63
- <div class="example-card">
64
- <div class="example-icon">
65
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
66
- <path d="M13 2L3 14H12L11 22L21 10H12L13 2Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
67
- </svg>
68
- </div>
69
- <div class="example-text">
70
- <p>Code a snake game in Python</p>
71
- </div>
72
- <button class="example-arrow">
73
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
74
- <path d="M7 17L17 7M17 7H7M17 7V17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
75
- </svg>
76
- </button>
77
- </div>
78
-
79
- <div class="example-card">
80
- <div class="example-icon">
81
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
82
- <path d="M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
83
- </svg>
84
- </div>
85
- <div class="example-text">
86
- <p>Create a 3-day travel itinerary for Paris</p>
87
- </div>
88
- <button class="example-arrow">
89
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
90
- <path d="M7 17L17 7M17 7H7M17 7V17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
91
- </svg>
92
- </button>
93
- </div>
94
-
95
- <div class="example-card">
96
- <div class="example-icon">
97
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
98
- <path d="M8.5 12H8.51M12 12H12.01M15.5 12H15.51M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
99
- </svg>
100
- </div>
101
- <div class="example-text">
102
- <p>Explain black holes simply</p>
103
- </div>
104
- <button class="example-arrow">
105
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
106
- <path d="M7 17L17 7M17 7H7M17 7V17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
107
- </svg>
108
- </button>
109
  </div>
110
- </div>
111
- </div>
112
 
113
- <div class="capabilities-section">
114
- <div class="capabilities-grid">
115
- <div class="capability-card">
116
- <svg class="capability-icon" width="28" height="28" viewBox="0 0 24 24" fill="none">
117
- <path d="M12 2L2 7L12 12L22 7L12 2Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
118
- <path d="M2 17L12 22L22 17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
119
- <path d="M2 12L12 17L22 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
120
  </svg>
121
- <h3 class="capability-title">Remember what user said earlier in the conversation</h3>
122
  </div>
123
 
124
- <div class="capability-card">
125
- <svg class="capability-icon" width="28" height="28" viewBox="0 0 24 24" fill="none">
126
- <path d="M15 3H6.2C5.0799 3 4.51984 3 4.09202 3.21799C3.71569 3.40973 3.40973 3.71569 3.21799 4.09202C3 4.51984 3 5.0799 3 6.2V17.8C3 18.9201 3 19.4802 3.21799 19.908C3.40973 20.2843 3.71569 20.5903 4.09202 20.782C4.51984 21 5.0799 21 6.2 21H17.8C18.9201 21 19.4802 21 19.908 20.782C20.2843 20.5903 20.5903 20.2843 20.782 19.908C21 19.4802 21 18.9201 21 17.8V9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
127
- <path d="M16 3.5V9.5H21.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
 
 
 
128
  </svg>
129
- <h3 class="capability-title">Allow user to provide follow-up corrections</h3>
130
  </div>
131
 
132
- <div class="capability-card">
133
- <svg class="capability-icon" width="28" height="28" viewBox="0 0 24 24" fill="none">
134
- <path d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
135
- <path d="M12 8V12L15 15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
 
 
 
136
  </svg>
137
- <h3 class="capability-title">Trained to decline inappropriate requests</h3>
138
  </div>
139
  </div>
140
  </div>
@@ -147,37 +86,24 @@
147
  placeholder="Message ChatGPT..."
148
  rows="1"
149
  ></textarea>
150
- <button class="send-button" aria-label="Send message">
151
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none">
152
- <path d="M7 11L12 6L17 11M12 18V7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
 
 
 
 
 
153
  </svg>
154
  </button>
155
  </div>
156
- <p class="input-footer">ChatGPT can make mistakes. Consider checking important information.</p>
157
  </div>
 
158
  </div>
159
  </main>
160
 
161
- <div class="mobile-menu-overlay" id="mobileMenu">
162
- <div class="mobile-menu-content">
163
- <button class="mobile-menu-close" id="mobileMenuClose">
164
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
165
- <path d="M18 6L6 18M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
166
- </svg>
167
- </button>
168
- <nav class="mobile-nav">
169
- <a href="#" class="mobile-nav-link">Research</a>
170
- <a href="#" class="mobile-nav-link">About</a>
171
- <a href="#" class="mobile-nav-link">Log in</a>
172
- <a href="#" class="mobile-nav-link">Sign up</a>
173
- </nav>
174
- </div>
175
- </div>
176
-
177
  <footer class="footer">
178
- <div class="footer-content">
179
- <p>Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" rel="noopener">anycoder</a></p>
180
- </div>
181
  </footer>
182
 
183
  <script src="assets/js/script.js"></script>
 
20
  <span class="brand-name">ChatGPT</span>
21
  </div>
22
  <nav class="nav-menu">
23
+ <button class="mobile-menu-btn" aria-label="Menu">
24
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
25
+ <path d="M3 12H21M3 6H21M3 18H21" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
26
+ </svg>
27
+ </button>
28
  </nav>
 
 
 
 
 
29
  </div>
30
  </header>
31
 
32
  <main class="main">
33
  <div class="hero-section">
34
+ <h1 class="hero-title">ChatGPT</h1>
 
 
 
 
35
  </div>
36
 
37
  <div class="examples-section">
38
  <div class="examples-grid">
39
+ <div class="example-card" data-prompt="Explain parallel computing in simple terms">
40
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
41
+ <path d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
42
+ </svg>
43
+ <span>Explain parallel computing in simple terms</span>
44
+ <svg class="arrow-icon" width="16" height="16" viewBox="0 0 24 24" fill="none">
45
+ <path d="M7 17L17 7M17 7H7M17 7V17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
46
+ </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  </div>
 
 
48
 
49
+ <div class="example-card" data-prompt="Got any creative ideas for a 10 year old's birthday?">
50
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
51
+ <path d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
52
+ </svg>
53
+ <span>Got any creative ideas for a 10 year old's birthday?</span>
54
+ <svg class="arrow-icon" width="16" height="16" viewBox="0 0 24 24" fill="none">
55
+ <path d="M7 17L17 7M17 7H7M17 7V17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
56
  </svg>
 
57
  </div>
58
 
59
+ <div class="example-card" data-prompt="How do I make an HTTP request in JavaScript?">
60
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
61
+ <path d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
62
+ </svg>
63
+ <span>How do I make an HTTP request in JavaScript?</span>
64
+ <svg class="arrow-icon" width="16" height="16" viewBox="0 0 24 24" fill="none">
65
+ <path d="M7 17L17 7M17 7H7M17 7V17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
66
  </svg>
 
67
  </div>
68
 
69
+ <div class="example-card" data-prompt="What are the key differences between Python lists and tuples?">
70
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
71
+ <path d="M4 6h16M4 12h16M4 18h7" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
72
+ </svg>
73
+ <span>What are the key differences between Python lists and tuples?</span>
74
+ <svg class="arrow-icon" width="16" height="16" viewBox="0 0 24 24" fill="none">
75
+ <path d="M7 17L17 7M17 7H7M17 7V17" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
76
  </svg>
 
77
  </div>
78
  </div>
79
  </div>
 
86
  placeholder="Message ChatGPT..."
87
  rows="1"
88
  ></textarea>
89
+ <button class="attach-button" aria-label="Attach file">
90
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none">
91
+ <path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
92
+ </svg>
93
+ </button>
94
+ <button class="send-button" aria-label="Send message">
95
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none">
96
+ <path d="M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
97
  </svg>
98
  </button>
99
  </div>
 
100
  </div>
101
+ <p class="disclaimer">ChatGPT can make mistakes. Consider checking important information.</p>
102
  </div>
103
  </main>
104
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  <footer class="footer">
106
+ <p>Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" rel="noopener">anycoder</a></p>
 
 
107
  </footer>
108
 
109
  <script src="assets/js/script.js"></script>