AverageAiLiker commited on
Commit
cb8aa6e
Β·
verified Β·
1 Parent(s): 6eeb491

Upload folder using huggingface_hub

Browse files
Files changed (3) hide show
  1. assets/css/styles.css +593 -0
  2. assets/js/script.js +1 -0
  3. index.html +204 -19
assets/css/styles.css ADDED
@@ -0,0 +1,593 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ :root {
8
+ --primary-color: #6366f1;
9
+ --primary-hover: #4f46e5;
10
+ --secondary-color: #8b5cf6;
11
+ --background: #0f0f0f;
12
+ --surface: #1a1a1a;
13
+ --surface-light: #262626;
14
+ --text-primary: #ffffff;
15
+ --text-secondary: #a1a1aa;
16
+ --border-color: #2a2a2a;
17
+ --error-color: #ef4444;
18
+ --success-color: #10b981;
19
+ --gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
20
+ }
21
+
22
+ body {
23
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
24
+ background: var(--background);
25
+ color: var(--text-primary);
26
+ line-height: 1.6;
27
+ overflow-x: hidden;
28
+ }
29
+
30
+ .container {
31
+ max-width: 1200px;
32
+ margin: 0 auto;
33
+ padding: 0 20px;
34
+ }
35
+
36
+ /* Header */
37
+ .header {
38
+ position: fixed;
39
+ top: 0;
40
+ left: 0;
41
+ right: 0;
42
+ background: rgba(15, 15, 15, 0.8);
43
+ backdrop-filter: blur(10px);
44
+ border-bottom: 1px solid var(--border-color);
45
+ z-index: 1000;
46
+ }
47
+
48
+ .header-content {
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: space-between;
52
+ padding: 1rem 0;
53
+ }
54
+
55
+ .logo {
56
+ display: flex;
57
+ align-items: center;
58
+ gap: 0.5rem;
59
+ font-size: 1.5rem;
60
+ font-weight: 700;
61
+ background: var(--gradient);
62
+ -webkit-background-clip: text;
63
+ -webkit-text-fill-color: transparent;
64
+ }
65
+
66
+ .logo-icon {
67
+ font-size: 1.8rem;
68
+ }
69
+
70
+ .nav {
71
+ display: flex;
72
+ gap: 2rem;
73
+ }
74
+
75
+ .nav-link {
76
+ color: var(--text-secondary);
77
+ text-decoration: none;
78
+ transition: color 0.3s ease;
79
+ font-weight: 500;
80
+ }
81
+
82
+ .nav-link:hover {
83
+ color: var(--text-primary);
84
+ }
85
+
86
+ .credit-link {
87
+ background: var(--gradient);
88
+ -webkit-background-clip: text;
89
+ -webkit-text-fill-color: transparent;
90
+ font-weight: 600;
91
+ }
92
+
93
+ /* Main Content */
94
+ .main {
95
+ padding-top: 80px;
96
+ }
97
+
98
+ /* Hero Section */
99
+ .hero {
100
+ padding: 4rem 0;
101
+ text-align: center;
102
+ background: radial-gradient(ellipse at center, rgba(99, 102, 241, 0.1) 0%, transparent 70%);
103
+ }
104
+
105
+ .hero-title {
106
+ font-size: 3.5rem;
107
+ font-weight: 700;
108
+ margin-bottom: 1rem;
109
+ background: var(--gradient);
110
+ -webkit-background-clip: text;
111
+ -webkit-text-fill-color: transparent;
112
+ animation: fadeInUp 0.8s ease;
113
+ }
114
+
115
+ .hero-subtitle {
116
+ font-size: 1.25rem;
117
+ color: var(--text-secondary);
118
+ max-width: 600px;
119
+ margin: 0 auto;
120
+ animation: fadeInUp 0.8s ease 0.2s both;
121
+ }
122
+
123
+ /* Generator Section */
124
+ .generator {
125
+ padding: 2rem 0 4rem;
126
+ }
127
+
128
+ .generator-card {
129
+ background: var(--surface);
130
+ border-radius: 16px;
131
+ padding: 2rem;
132
+ border: 1px solid var(--border-color);
133
+ max-width: 800px;
134
+ margin: 0 auto;
135
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
136
+ }
137
+
138
+ .video-form {
139
+ margin-bottom: 2rem;
140
+ }
141
+
142
+ .form-group {
143
+ margin-bottom: 1.5rem;
144
+ }
145
+
146
+ .form-label {
147
+ display: block;
148
+ margin-bottom: 0.5rem;
149
+ font-weight: 500;
150
+ color: var(--text-primary);
151
+ }
152
+
153
+ .form-textarea {
154
+ width: 100%;
155
+ padding: 1rem;
156
+ background: var(--surface-light);
157
+ border: 1px solid var(--border-color);
158
+ border-radius: 8px;
159
+ color: var(--text-primary);
160
+ font-size: 1rem;
161
+ resize: vertical;
162
+ transition: border-color 0.3s ease, box-shadow 0.3s ease;
163
+ }
164
+
165
+ .form-textarea:focus {
166
+ outline: none;
167
+ border-color: var(--primary-color);
168
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
169
+ }
170
+
171
+ .form-row {
172
+ display: grid;
173
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
174
+ gap: 1rem;
175
+ }
176
+
177
+ .form-select {
178
+ width: 100%;
179
+ padding: 0.75rem;
180
+ background: var(--surface-light);
181
+ border: 1px solid var(--border-color);
182
+ border-radius: 8px;
183
+ color: var(--text-primary);
184
+ font-size: 1rem;
185
+ cursor: pointer;
186
+ transition: border-color 0.3s ease;
187
+ }
188
+
189
+ .form-select:focus {
190
+ outline: none;
191
+ border-color: var(--primary-color);
192
+ }
193
+
194
+ .generate-btn {
195
+ width: 100%;
196
+ padding: 1rem 2rem;
197
+ background: var(--gradient);
198
+ border: none;
199
+ border-radius: 8px;
200
+ color: white;
201
+ font-size: 1.1rem;
202
+ font-weight: 600;
203
+ cursor: pointer;
204
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
205
+ position: relative;
206
+ overflow: hidden;
207
+ }
208
+
209
+ .generate-btn:hover:not(:disabled) {
210
+ transform: translateY(-2px);
211
+ box-shadow: 0 10px 20px rgba(99, 102, 241, 0.3);
212
+ }
213
+
214
+ .generate-btn:disabled {
215
+ opacity: 0.7;
216
+ cursor: not-allowed;
217
+ }
218
+
219
+ .btn-loader {
220
+ display: flex;
221
+ align-items: center;
222
+ gap: 0.5rem;
223
+ }
224
+
225
+ .spinner {
226
+ width: 20px;
227
+ height: 20px;
228
+ border: 2px solid transparent;
229
+ border-top-color: white;
230
+ border-radius: 50%;
231
+ animation: spin 0.8s linear infinite;
232
+ }
233
+
234
+ /* Progress */
235
+ .progress-container {
236
+ margin: 2rem 0;
237
+ }
238
+
239
+ .progress-bar {
240
+ height: 4px;
241
+ background: var(--surface-light);
242
+ border-radius: 2px;
243
+ overflow: hidden;
244
+ margin-bottom: 1rem;
245
+ }
246
+
247
+ .progress-fill {
248
+ height: 100%;
249
+ background: var(--gradient);
250
+ border-radius: 2px;
251
+ width: 0%;
252
+ transition: width 0.3s ease;
253
+ }
254
+
255
+ .progress-text {
256
+ text-align: center;
257
+ color: var(--text-secondary);
258
+ font-size: 0.9rem;
259
+ }
260
+
261
+ /* Result */
262
+ .result-container {
263
+ margin-top: 2rem;
264
+ padding-top: 2rem;
265
+ border-top: 1px solid var(--border-color);
266
+ }
267
+
268
+ .result-title {
269
+ font-size: 1.5rem;
270
+ margin-bottom: 1rem;
271
+ text-align: center;
272
+ }
273
+
274
+ .video-wrapper {
275
+ position: relative;
276
+ border-radius: 12px;
277
+ overflow: hidden;
278
+ background: var(--surface-light);
279
+ margin-bottom: 1.5rem;
280
+ }
281
+
282
+ .generated-video {
283
+ width: 100%;
284
+ height: auto;
285
+ display: block;
286
+ }
287
+
288
+ .result-actions {
289
+ display: flex;
290
+ gap: 1rem;
291
+ justify-content: center;
292
+ flex-wrap: wrap;
293
+ }
294
+
295
+ .action-btn {
296
+ padding: 0.75rem 1.5rem;
297
+ background: var(--surface-light);
298
+ border: 1px solid var(--border-color);
299
+ border-radius: 8px;
300
+ color: var(--text-primary);
301
+ font-size: 0.95rem;
302
+ font-weight: 500;
303
+ cursor: pointer;
304
+ transition: all 0.3s ease;
305
+ display: flex;
306
+ align-items: center;
307
+ gap: 0.5rem;
308
+ }
309
+
310
+ .action-btn:hover {
311
+ background: var(--primary-color);
312
+ border-color: var(--primary-color);
313
+ transform: translateY(-2px);
314
+ }
315
+
316
+ /* Error */
317
+ .error-container {
318
+ text-align: center;
319
+ padding: 2rem;
320
+ margin-top: 2rem;
321
+ background: rgba(239, 68, 68, 0.1);
322
+ border: 1px solid rgba(239, 68, 68, 0.2);
323
+ border-radius: 12px;
324
+ }
325
+
326
+ .error-icon {
327
+ font-size: 3rem;
328
+ margin-bottom: 1rem;
329
+ }
330
+
331
+ .error-title {
332
+ font-size: 1.5rem;
333
+ margin-bottom: 0.5rem;
334
+ color: var(--error-color);
335
+ }
336
+
337
+ .error-message {
338
+ color: var(--text-secondary);
339
+ margin-bottom: 1.5rem;
340
+ }
341
+
342
+ .retry-btn {
343
+ padding: 0.75rem 2rem;
344
+ background: var(--error-color);
345
+ border: none;
346
+ border-radius: 8px;
347
+ color: white;
348
+ font-weight: 600;
349
+ cursor: pointer;
350
+ transition: background 0.3s ease;
351
+ }
352
+
353
+ .retry-btn:hover {
354
+ background: #dc2626;
355
+ }
356
+
357
+ /* Features */
358
+ .features {
359
+ padding: 4rem 0;
360
+ background: var(--surface);
361
+ }
362
+
363
+ .section-title {
364
+ font-size: 2.5rem;
365
+ text-align: center;
366
+ margin-bottom: 3rem;
367
+ background: var(--gradient);
368
+ -webkit-background-clip: text;
369
+ -webkit-text-fill-color: transparent;
370
+ }
371
+
372
+ .features-grid {
373
+ display: grid;
374
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
375
+ gap: 2rem;
376
+ }
377
+
378
+ .feature-card {
379
+ background: var(--background);
380
+ padding: 2rem;
381
+ border-radius: 12px;
382
+ border: 1px solid var(--border-color);
383
+ text-align: center;
384
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
385
+ }
386
+
387
+ .feature-card:hover {
388
+ transform: translateY(-5px);
389
+ box-shadow: 0 10px 30px rgba(99, 102, 241, 0.2);
390
+ }
391
+
392
+ .feature-icon {
393
+ font-size: 3rem;
394
+ margin-bottom: 1rem;
395
+ }
396
+
397
+ .feature-title {
398
+ font-size: 1.25rem;
399
+ margin-bottom: 0.75rem;
400
+ color: var(--text-primary);
401
+ }
402
+
403
+ .feature-description {
404
+ color: var(--text-secondary);
405
+ line-height: 1.6;
406
+ }
407
+
408
+ /* Examples */
409
+ .examples {
410
+ padding: 4rem 0;
411
+ }
412
+
413
+ .examples-grid {
414
+ display: grid;
415
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
416
+ gap: 1.5rem;
417
+ }
418
+
419
+ .example-card {
420
+ background: var(--surface);
421
+ border: 1px solid var(--border-color);
422
+ border-radius: 12px;
423
+ padding: 1.5rem;
424
+ text-align: center;
425
+ cursor: pointer;
426
+ transition: all 0.3s ease;
427
+ }
428
+
429
+ .example-card:hover {
430
+ border-color: var(--primary-color);
431
+ transform: translateY(-3px);
432
+ box-shadow: 0 10px 20px rgba(99, 102, 241, 0.2);
433
+ }
434
+
435
+ .example-image {
436
+ font-size: 3rem;
437
+ margin-bottom: 0.75rem;
438
+ }
439
+
440
+ .example-text {
441
+ color: var(--text-secondary);
442
+ font-size: 0.9rem;
443
+ }
444
+
445
+ /* Footer */
446
+ .footer {
447
+ padding: 2rem 0;
448
+ border-top: 1px solid var(--border-color);
449
+ }
450
+
451
+ .footer-content {
452
+ display: flex;
453
+ justify-content: space-between;
454
+ align-items: center;
455
+ flex-wrap: wrap;
456
+ gap: 1rem;
457
+ }
458
+
459
+ .footer-text {
460
+ color: var(--text-secondary);
461
+ }
462
+
463
+ .footer-links {
464
+ display: flex;
465
+ gap: 2rem;
466
+ }
467
+
468
+ .footer-link {
469
+ color: var(--text-secondary);
470
+ text-decoration: none;
471
+ transition: color 0.3s ease;
472
+ }
473
+
474
+ .footer-link:hover {
475
+ color: var(--primary-color);
476
+ }
477
+
478
+ /* Animations */
479
+ @keyframes fadeInUp {
480
+ from {
481
+ opacity: 0;
482
+ transform: translateY(30px);
483
+ }
484
+ to {
485
+ opacity: 1;
486
+ transform: translateY(0);
487
+ }
488
+ }
489
+
490
+ @keyframes spin {
491
+ to {
492
+ transform: rotate(360deg);
493
+ }
494
+ }
495
+
496
+ /* Responsive */
497
+ @media (max-width: 768px) {
498
+ .hero-title {
499
+ font-size: 2.5rem;
500
+ }
501
+
502
+ .hero-subtitle {
503
+ font-size: 1.1rem;
504
+ }
505
+
506
+ .nav {
507
+ display: none;
508
+ }
509
+
510
+ .form-row {
511
+ grid-template-columns: 1fr;
512
+ }
513
+
514
+ .result-actions {
515
+ flex-direction: column;
516
+ }
517
+
518
+ .action-btn {
519
+ width: 100%;
520
+ justify-content: center;
521
+ }
522
+
523
+ .footer-content {
524
+ flex-direction: column;
525
+ text-align: center;
526
+ }
527
+ }
528
+
529
+ @media (max-width: 480px) {
530
+ .container {
531
+ padding: 0 15px;
532
+ }
533
+
534
+ .generator-card {
535
+ padding: 1.5rem;
536
+ }
537
+
538
+ .hero {
539
+ padding: 2rem 0;
540
+ }
541
+
542
+ .hero-title {
543
+ font-size: 2rem;
544
+ }
545
+
546
+ .features-grid,
547
+ .examples-grid {
548
+ grid-template-columns: 1fr;
549
+ }
550
+ }
551
+
552
+ /* Toast Notification */
553
+ .toast {
554
+ position: fixed;
555
+ bottom: 20px;
556
+ right: 20px;
557
+ background: var(--surface);
558
+ border: 1px solid var(--border-color);
559
+ border-radius: 8px;
560
+ padding: 1rem 1.5rem;
561
+ display: flex;
562
+ align-items: center;
563
+ gap: 0.75rem;
564
+ transform: translateX(400px);
565
+ transition: transform 0.3s ease;
566
+ z-index: 2000;
567
+ max-width: 350px;
568
+ }
569
+
570
+ .toast.show {
571
+ transform: translateX(0);
572
+ }
573
+
574
+ .toast-icon {
575
+ font-size: 1.25rem;
576
+ }
577
+
578
+ .toast-message {
579
+ flex: 1;
580
+ color: var(--text-primary);
581
+ }
582
+
583
+ .toast.success {
584
+ border-color: var(--success-color);
585
+ }
586
+
587
+ .toast.error {
588
+ border-color: var(--error-color);
589
+ }
590
+
591
+ .toast.info {
592
+ border-color: var(--primary-color);
593
+ }
assets/js/script.js ADDED
@@ -0,0 +1 @@
 
 
1
+ // generated stub
index.html CHANGED
@@ -1,19 +1,204 @@
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
+ <meta name="description" content="Generate stunning videos from text using Open-Sora-v2 AI model">
7
+ <meta name="keywords" content="text to video, AI video generation, Open-Sora, video creation">
8
+ <title>Text to Video - Open-Sora-v2</title>
9
+ <link rel="stylesheet" href="assets/css/styles.css">
10
+ <link rel="preconnect" href="https://fonts.googleapis.com">
11
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
13
+ </head>
14
+ <body>
15
+ <header class="header">
16
+ <div class="container">
17
+ <div class="header-content">
18
+ <div class="logo">
19
+ <span class="logo-icon">🎬</span>
20
+ <span class="logo-text">Text2Video</span>
21
+ </div>
22
+ <nav class="nav">
23
+ <a href="#" class="nav-link">Generate</a>
24
+ <a href="#" class="nav-link">Gallery</a>
25
+ <a href="#" class="nav-link">About</a>
26
+ </nav>
27
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="nav-link credit-link">Built with anycoder</a>
28
+ </div>
29
+ </div>
30
+ </header>
31
+
32
+ <main class="main">
33
+ <section class="hero">
34
+ <div class="container">
35
+ <h1 class="hero-title">Transform Your Ideas into Videos</h1>
36
+ <p class="hero-subtitle">Powered by Open-Sora-v2 - Create stunning videos from simple text descriptions</p>
37
+ </div>
38
+ </section>
39
+
40
+ <section class="generator">
41
+ <div class="container">
42
+ <div class="generator-card">
43
+ <form id="videoForm" class="video-form">
44
+ <div class="form-group">
45
+ <label for="prompt" class="form-label">Describe your video</label>
46
+ <textarea
47
+ id="prompt"
48
+ name="prompt"
49
+ class="form-textarea"
50
+ placeholder="A beautiful sunset over the ocean with waves gently crashing on the shore, cinematic quality, 4K resolution"
51
+ rows="4"
52
+ required
53
+ ></textarea>
54
+ </div>
55
+
56
+ <div class="form-row">
57
+ <div class="form-group">
58
+ <label for="duration" class="form-label">Duration (seconds)</label>
59
+ <select id="duration" name="duration" class="form-select">
60
+ <option value="2">2 seconds</option>
61
+ <option value="4" selected>4 seconds</option>
62
+ <option value="8">8 seconds</option>
63
+ <option value="16">16 seconds</option>
64
+ </select>
65
+ </div>
66
+
67
+ <div class="form-group">
68
+ <label for="quality" class="form-label">Quality</label>
69
+ <select id="quality" name="quality" class="form-select">
70
+ <option value="720p">720p</option>
71
+ <option value="1080p" selected>1080p</option>
72
+ <option value="4k">4K</option>
73
+ </select>
74
+ </div>
75
+
76
+ <div class="form-group">
77
+ <label for="style" class="form-label">Style</label>
78
+ <select id="style" name="style" class="form-select">
79
+ <option value="realistic">Realistic</option>
80
+ <option value="cinematic">Cinematic</option>
81
+ <option value="anime">Anime</option>
82
+ <option value="artistic">Artistic</option>
83
+ </select>
84
+ </div>
85
+ </div>
86
+
87
+ <button type="submit" class="generate-btn" id="generateBtn">
88
+ <span class="btn-text">Generate Video</span>
89
+ <span class="btn-loader" style="display: none;">
90
+ <span class="spinner"></span>
91
+ Generating...
92
+ </span>
93
+ </button>
94
+ </form>
95
+
96
+ <div id="progressContainer" class="progress-container" style="display: none;">
97
+ <div class="progress-bar">
98
+ <div class="progress-fill" id="progressFill"></div>
99
+ </div>
100
+ <p class="progress-text" id="progressText">Initializing...</p>
101
+ </div>
102
+
103
+ <div id="resultContainer" class="result-container" style="display: none;">
104
+ <h3 class="result-title">Your Generated Video</h3>
105
+ <div class="video-wrapper">
106
+ <video id="generatedVideo" controls autoplay muted class="generated-video">
107
+ Your browser does not support the video tag.
108
+ </video>
109
+ </div>
110
+ <div class="result-actions">
111
+ <button class="action-btn download-btn" id="downloadBtn">
112
+ <span class="btn-icon">⬇</span>
113
+ Download
114
+ </button>
115
+ <button class="action-btn share-btn" id="shareBtn">
116
+ <span class="btn-icon">πŸ”—</span>
117
+ Share
118
+ </button>
119
+ <button class="action-btn regenerate-btn" id="regenerateBtn">
120
+ <span class="btn-icon">πŸ”„</span>
121
+ Regenerate
122
+ </button>
123
+ </div>
124
+ </div>
125
+
126
+ <div id="errorContainer" class="error-container" style="display: none;">
127
+ <div class="error-icon">⚠️</div>
128
+ <h3 class="error-title">Generation Failed</h3>
129
+ <p class="error-message" id="errorMessage">Something went wrong. Please try again.</p>
130
+ <button class="retry-btn" id="retryBtn">Try Again</button>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </section>
135
+
136
+ <section class="features">
137
+ <div class="container">
138
+ <h2 class="section-title">Why Choose Open-Sora-v2?</h2>
139
+ <div class="features-grid">
140
+ <div class="feature-card">
141
+ <div class="feature-icon">⚑</div>
142
+ <h3 class="feature-title">Fast Generation</h3>
143
+ <p class="feature-description">Create videos in seconds with our optimized AI pipeline</p>
144
+ </div>
145
+ <div class="feature-card">
146
+ <div class="feature-icon">🎨</div>
147
+ <h3 class="feature-title">High Quality</h3>
148
+ <p class="feature-description">Crystal clear 4K resolution with cinematic quality output</p>
149
+ </div>
150
+ <div class="feature-card">
151
+ <div class="feature-icon">πŸš€</div>
152
+ <h3 class="feature-title">Easy to Use</h3>
153
+ <p class="feature-description">Simple text input - no technical skills required</p>
154
+ </div>
155
+ <div class="feature-card">
156
+ <div class="feature-icon">πŸ”§</div>
157
+ <h3 class="feature-title">Customizable</h3>
158
+ <p class="feature-description">Adjust duration, quality, and style to match your needs</p>
159
+ </div>
160
+ </div>
161
+ </div>
162
+ </section>
163
+
164
+ <section class="examples">
165
+ <div class="container">
166
+ <h2 class="section-title">Example Prompts</h2>
167
+ <div class="examples-grid">
168
+ <div class="example-card" data-prompt="A serene mountain landscape at sunrise with mist rolling over the valleys, golden light filtering through the clouds">
169
+ <div class="example-image">πŸ”οΈ</div>
170
+ <p class="example-text">Mountain sunrise with mist</p>
171
+ </div>
172
+ <div class="example-card" data-prompt="A bustling city street at night with neon signs reflecting on wet pavement, cyberpunk aesthetic">
173
+ <div class="example-image">πŸŒƒ</div>
174
+ <p class="example-text">Cyberpunk city night</p>
175
+ </div>
176
+ <div class="example-card" data-prompt="Underwater coral reef with colorful fish swimming, sun rays penetrating through the water">
177
+ <div class="example-image">🐠</div>
178
+ <p class="example-text">Underwater coral reef</p>
179
+ </div>
180
+ <div class="example-card" data-prompt="A magical forest with glowing mushrooms and fireflies, fantasy atmosphere">
181
+ <div class="example-image">🌲</div>
182
+ <p class="example-text">Magical fantasy forest</p>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ </section>
187
+ </main>
188
+
189
+ <footer class="footer">
190
+ <div class="container">
191
+ <div class="footer-content">
192
+ <p class="footer-text">Β© 2024 Text2Video. Powered by Open-Sora-v2</p>
193
+ <div class="footer-links">
194
+ <a href="#" class="footer-link">Privacy</a>
195
+ <a href="#" class="footer-link">Terms</a>
196
+ <a href="#" class="footer-link">API</a>
197
+ </div>
198
+ </div>
199
+ </div>
200
+ </footer>
201
+
202
+ <script src="assets/js/script.js"></script>
203
+ </body>
204
+ </html>