Advait3009 commited on
Commit
e92f4b2
·
verified ·
1 Parent(s): 98d0cda

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +113 -215
index.html CHANGED
@@ -23,13 +23,11 @@
23
  --dark-gray: #e0e0e0;
24
  --transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
25
  }
26
-
27
  * {
28
  margin: 0;
29
  padding: 0;
30
  box-sizing: border-box;
31
  }
32
-
33
  body {
34
  font-family: 'Raleway', sans-serif;
35
  color: var(--text);
@@ -37,12 +35,10 @@
37
  overflow-x: hidden;
38
  line-height: 1.6;
39
  }
40
-
41
  h1, h2, h3, h4, h5, h6 {
42
  font-family: 'Playfair Display', serif;
43
  font-weight: 600;
44
  }
45
-
46
  /* Preloader */
47
  .preloader {
48
  position: fixed;
@@ -58,11 +54,9 @@
58
  z-index: 9999;
59
  transition: opacity 0.5s ease;
60
  }
61
-
62
  .preloader.fade-out {
63
  opacity: 0;
64
  }
65
-
66
  .preloader-logo {
67
  font-family: 'Playfair Display', serif;
68
  font-size: 3rem;
@@ -70,11 +64,9 @@
70
  color: var(--primary);
71
  margin-bottom: 1rem;
72
  }
73
-
74
  .preloader-logo span {
75
  color: var(--accent);
76
  }
77
-
78
  .spinner {
79
  width: 50px;
80
  height: 50px;
@@ -84,12 +76,10 @@
84
  animation: spin 1s linear infinite;
85
  margin-bottom: 2rem;
86
  }
87
-
88
  @keyframes spin {
89
  0% { transform: rotate(0deg); }
90
  100% { transform: rotate(360deg); }
91
  }
92
-
93
  /* Header */
94
  header {
95
  background-color: var(--secondary);
@@ -103,12 +93,10 @@
103
  align-items: center;
104
  transition: var(--transition);
105
  }
106
-
107
  header.scrolled {
108
  padding: 1rem 5%;
109
  box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
110
  }
111
-
112
  .logo {
113
  font-family: 'Playfair Display', serif;
114
  font-size: 2rem;
@@ -119,21 +107,17 @@
119
  align-items: center;
120
  gap: 0.5rem;
121
  }
122
-
123
  .logo-icon {
124
  color: var(--accent);
125
  }
126
-
127
  nav ul {
128
  display: flex;
129
  list-style: none;
130
  gap: 2rem;
131
  }
132
-
133
  nav ul li {
134
  position: relative;
135
  }
136
-
137
  nav ul li a {
138
  text-decoration: none;
139
  color: var(--text);
@@ -143,7 +127,6 @@
143
  transition: var(--transition);
144
  position: relative;
145
  }
146
-
147
  nav ul li a::after {
148
  content: '';
149
  position: absolute;
@@ -154,28 +137,23 @@
154
  background-color: var(--accent);
155
  transition: var(--transition);
156
  }
157
-
158
  nav ul li a:hover::after {
159
  width: 100%;
160
  }
161
-
162
  .header-actions {
163
  display: flex;
164
  gap: 1.5rem;
165
  align-items: center;
166
  }
167
-
168
  .header-actions i {
169
  font-size: 1.2rem;
170
  cursor: pointer;
171
  transition: var(--transition);
172
  position: relative;
173
  }
174
-
175
  .header-actions i:hover {
176
  color: var(--accent);
177
  }
178
-
179
  .cart-count {
180
  position: absolute;
181
  top: -8px;
@@ -191,7 +169,6 @@
191
  font-size: 0.6rem;
192
  font-weight: 700;
193
  }
194
-
195
  .account-btn {
196
  background-color: var(--primary);
197
  color: white;
@@ -206,18 +183,15 @@
206
  align-items: center;
207
  gap: 0.5rem;
208
  }
209
-
210
  .account-btn:hover {
211
  background-color: var(--accent);
212
  transform: translateY(-2px);
213
  box-shadow: 0 5px 15px rgba(255, 77, 109, 0.3);
214
  }
215
-
216
  .account-btn i {
217
  font-size: 0.9rem;
218
  color: white;
219
  }
220
-
221
  /* Hero Section */
222
  .hero {
223
  height: 100vh;
@@ -230,7 +204,6 @@
230
  url('https://images.unsplash.com/photo-1525507119028-ed4c629a60a3?w=1200&auto=format&fit=crop') no-repeat center center/cover;
231
  color: white;
232
  }
233
-
234
  .hero::before {
235
  content: '';
236
  position: absolute;
@@ -240,20 +213,17 @@
240
  height: 100%;
241
  background: linear-gradient(90deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.3) 100%);
242
  }
243
-
244
  .hero-content {
245
  width: 50%;
246
  z-index: 10;
247
  position: relative;
248
  }
249
-
250
  .hero h1 {
251
  font-size: 4rem;
252
  margin-bottom: 1.5rem;
253
  line-height: 1.2;
254
  text-shadow: 0 2px 10px rgba(0,0,0,0.3);
255
  }
256
-
257
  .hero p {
258
  font-size: 1.2rem;
259
  margin-bottom: 2.5rem;
@@ -261,13 +231,11 @@
261
  max-width: 85%;
262
  font-weight: 300;
263
  }
264
-
265
  .hero-btns {
266
  display: flex;
267
  gap: 1.5rem;
268
  margin-top: 2rem;
269
  }
270
-
271
  .hero-btn {
272
  background-color: var(--accent);
273
  color: white;
@@ -283,39 +251,32 @@
283
  gap: 0.7rem;
284
  text-decoration: none;
285
  }
286
-
287
  .hero-btn:hover {
288
  background-color: var(--dark-accent);
289
  transform: translateY(-3px);
290
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
291
  }
292
-
293
  .hero-btn i {
294
  font-size: 0.9rem;
295
  }
296
-
297
  .hero-btn.secondary {
298
  background-color: transparent;
299
  color: white;
300
  border: 2px solid white;
301
  }
302
-
303
  .hero-btn.secondary:hover {
304
  background-color: rgba(255,255,255,0.2);
305
  border-color: transparent;
306
  }
307
-
308
  /* AI Designer Section */
309
  .ai-designer {
310
  padding: 6rem 5%;
311
  background-color: var(--secondary);
312
  }
313
-
314
  .section-title {
315
  text-align: center;
316
  margin-bottom: 5rem;
317
  }
318
-
319
  .section-title h2 {
320
  font-size: 2.8rem;
321
  font-weight: 700;
@@ -323,7 +284,6 @@
323
  position: relative;
324
  display: inline-block;
325
  }
326
-
327
  .section-title h2::after {
328
  content: '';
329
  position: absolute;
@@ -334,21 +294,18 @@
334
  height: 3px;
335
  background-color: var(--accent);
336
  }
337
-
338
  .section-title p {
339
  font-size: 1.1rem;
340
  color: var(--light-text);
341
  max-width: 700px;
342
  margin: 0 auto;
343
  }
344
-
345
  .designer-container {
346
  display: flex;
347
  gap: 3rem;
348
  align-items: center;
349
  margin-bottom: 5rem;
350
  }
351
-
352
  .designer-form {
353
  flex: 1;
354
  padding: 2.5rem;
@@ -356,24 +313,20 @@
356
  border-radius: 20px;
357
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
358
  }
359
-
360
  .designer-form h3 {
361
  font-size: 1.6rem;
362
  margin-bottom: 1.5rem;
363
  color: var(--primary);
364
  }
365
-
366
  .form-group {
367
  margin-bottom: 1.5rem;
368
  }
369
-
370
  .form-group label {
371
  display: block;
372
  font-weight: 600;
373
  margin-bottom: 0.7rem;
374
  color: var(--primary);
375
  }
376
-
377
  .form-control {
378
  width: 100%;
379
  padding: 1rem;
@@ -383,18 +336,15 @@
383
  font-size: 1rem;
384
  transition: var(--transition);
385
  }
386
-
387
  .form-control:focus {
388
  outline: none;
389
  border-color: var(--accent);
390
  box-shadow: 0 0 0 2px rgba(255, 77, 109, 0.2);
391
  }
392
-
393
  textarea.form-control {
394
  min-height: 120px;
395
  resize: vertical;
396
  }
397
-
398
  .generate-btn {
399
  background-color: var(--accent);
400
  color: white;
@@ -411,13 +361,11 @@
411
  justify-content: center;
412
  gap: 0.7rem;
413
  }
414
-
415
  .generate-btn:hover {
416
  background-color: var(--dark-accent);
417
  transform: translateY(-2px);
418
  box-shadow: 0 5px 15px rgba(255, 77, 109, 0.3);
419
  }
420
-
421
  .designer-result {
422
  flex: 1;
423
  min-height: 400px;
@@ -430,26 +378,22 @@
430
  overflow: hidden;
431
  position: relative;
432
  }
433
-
434
  .result-placeholder {
435
  text-align: center;
436
  padding: 2rem;
437
  color: var(--light-text);
438
  }
439
-
440
  .result-placeholder i {
441
  font-size: 3rem;
442
  margin-bottom: 1rem;
443
  color: var(--dark-gray);
444
  }
445
-
446
  .result-image {
447
  width: 100%;
448
  height: 100%;
449
  object-fit: cover;
450
  display: none;
451
  }
452
-
453
  .loading-overlay {
454
  position: absolute;
455
  top: 0;
@@ -463,7 +407,6 @@
463
  justify-content: center;
464
  display: none;
465
  }
466
-
467
  .loading-spinner {
468
  width: 50px;
469
  height: 50px;
@@ -473,19 +416,16 @@
473
  animation: spin 1s linear infinite;
474
  margin-bottom: 1rem;
475
  }
476
-
477
  /* Features Section */
478
  .features {
479
  padding: 6rem 5%;
480
  background-color: var(--light-gray);
481
  }
482
-
483
  .features-grid {
484
  display: grid;
485
  grid-template-columns: repeat(3, 1fr);
486
  gap: 2.5rem;
487
  }
488
-
489
  .feature-card {
490
  background-color: var(--secondary);
491
  border-radius: 15px;
@@ -496,7 +436,6 @@
496
  position: relative;
497
  overflow: hidden;
498
  }
499
-
500
  .feature-card::before {
501
  content: '';
502
  position: absolute;
@@ -506,12 +445,10 @@
506
  height: 5px;
507
  background-color: var(--accent);
508
  }
509
-
510
  .feature-card:hover {
511
  transform: translateY(-10px);
512
  box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1);
513
  }
514
-
515
  .feature-icon {
516
  background: linear-gradient(135deg, var(--accent) 0%, var(--dark-accent) 100%);
517
  color: white;
@@ -525,31 +462,26 @@
525
  font-size: 2rem;
526
  box-shadow: 0 10px 20px rgba(255, 77, 109, 0.2);
527
  }
528
-
529
  .feature-card h3 {
530
  font-size: 1.5rem;
531
  margin-bottom: 1.2rem;
532
  }
533
-
534
  .feature-card p {
535
  color: var(--light-text);
536
  line-height: 1.7;
537
  }
538
-
539
  /* Collections Section */
540
  .collections {
541
  padding: 6rem 5%;
542
  background-color: var(--secondary);
543
  text-align: center;
544
  }
545
-
546
  .collections-container {
547
  display: grid;
548
  grid-template-columns: repeat(3, 1fr);
549
  gap: 2.5rem;
550
  margin-top: 3rem;
551
  }
552
-
553
  .collection-card {
554
  background-color: var(--light-gray);
555
  border-radius: 15px;
@@ -558,23 +490,19 @@
558
  text-align: left;
559
  position: relative;
560
  }
561
-
562
  .collection-card:hover {
563
  transform: translateY(-10px);
564
  box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1);
565
  }
566
-
567
  .collection-image {
568
  width: 100%;
569
  height: 300px;
570
  object-fit: cover;
571
  transition: var(--transition);
572
  }
573
-
574
  .collection-card:hover .collection-image {
575
  transform: scale(1.05);
576
  }
577
-
578
  .collection-overlay {
579
  position: absolute;
580
  bottom: 0;
@@ -584,18 +512,15 @@
584
  background: linear-gradient(transparent, rgba(0,0,0,0.8));
585
  color: white;
586
  }
587
-
588
  .collection-overlay h3 {
589
  font-size: 1.4rem;
590
  margin-bottom: 0.5rem;
591
  }
592
-
593
  .collection-overlay p {
594
  font-size: 0.9rem;
595
  opacity: 0.8;
596
  margin-bottom: 1rem;
597
  }
598
-
599
  .collection-btn {
600
  background-color: var(--secondary);
601
  color: var(--primary);
@@ -610,12 +535,10 @@
610
  align-items: center;
611
  gap: 0.5rem;
612
  }
613
-
614
  .collection-btn:hover {
615
  background-color: var(--accent);
616
  color: white;
617
  }
618
-
619
  /* Newsletter Section */
620
  .newsletter {
621
  padding: 5rem 5%;
@@ -623,12 +546,10 @@
623
  color: white;
624
  text-align: center;
625
  }
626
-
627
  .newsletter h2 {
628
  font-size: 2.5rem;
629
  margin-bottom: 1.5rem;
630
  }
631
-
632
  .newsletter p {
633
  font-size: 1.1rem;
634
  margin-bottom: 2.5rem;
@@ -637,7 +558,6 @@
637
  margin-right: auto;
638
  color: rgba(255,255,255,0.8);
639
  }
640
-
641
  .newsletter-form {
642
  display: flex;
643
  max-width: 500px;
@@ -646,18 +566,15 @@
646
  border-radius: 50px;
647
  overflow: hidden;
648
  }
649
-
650
  .newsletter-input {
651
  flex: 1;
652
  padding: 1rem 1.5rem;
653
  border: none;
654
  font-size: 1rem;
655
  }
656
-
657
  .newsletter-input:focus {
658
  outline: none;
659
  }
660
-
661
  .newsletter-btn {
662
  background-color: var(--accent);
663
  color: white;
@@ -670,25 +587,21 @@
670
  align-items: center;
671
  gap: 0.5rem;
672
  }
673
-
674
  .newsletter-btn:hover {
675
  background-color: var(--dark-accent);
676
  }
677
-
678
  /* Footer */
679
  footer {
680
  background-color: var(--primary);
681
  color: white;
682
  padding: 4rem 5% 2rem;
683
  }
684
-
685
  .footer-content {
686
  display: grid;
687
  grid-template-columns: repeat(4, 1fr);
688
  gap: 3rem;
689
  margin-bottom: 3rem;
690
  }
691
-
692
  .footer-logo {
693
  font-family: 'Playfair Display', serif;
694
  font-size: 2rem;
@@ -699,23 +612,19 @@
699
  align-items: center;
700
  gap: 0.5rem;
701
  }
702
-
703
  .footer-logo .logo-icon {
704
  color: var(--accent);
705
  }
706
-
707
  .footer-about p {
708
  margin-bottom: 1.5rem;
709
  color: rgba(255,255,255,0.6);
710
  line-height: 1.7;
711
  }
712
-
713
  .social-links {
714
  display: flex;
715
  gap: 1.5rem;
716
  margin-top: 2rem;
717
  }
718
-
719
  .social-links a {
720
  color: white;
721
  font-size: 1.2rem;
@@ -728,12 +637,10 @@
728
  align-items: center;
729
  justify-content: center;
730
  }
731
-
732
  .social-links a:hover {
733
  background-color: var(--accent);
734
  transform: translateY(-3px);
735
  }
736
-
737
  .footer-title {
738
  font-size: 1.2rem;
739
  margin-bottom: 1.5rem;
@@ -741,27 +648,22 @@
741
  letter-spacing: 1px;
742
  color: white;
743
  }
744
-
745
  .footer-links ul {
746
  list-style: none;
747
  }
748
-
749
  .footer-links ul li {
750
  margin-bottom: 1rem;
751
  }
752
-
753
  .footer-links ul li a {
754
  color: rgba(255,255,255,0.6);
755
  text-decoration: none;
756
  transition: var(--transition);
757
  font-weight: 400;
758
  }
759
-
760
  .footer-links ul li a:hover {
761
  color: white;
762
  padding-left: 5px;
763
  }
764
-
765
  .footer-contact p {
766
  display: flex;
767
  align-items: center;
@@ -769,12 +671,10 @@
769
  margin-bottom: 1.2rem;
770
  color: rgba(255,255,255,0.6);
771
  }
772
-
773
  .footer-contact i {
774
  color: var(--accent);
775
  min-width: 20px;
776
  }
777
-
778
  .footer-bottom {
779
  padding-top: 2rem;
780
  border-top: 1px solid rgba(255,255,255,0.1);
@@ -782,7 +682,6 @@
782
  color: rgba(255,255,255,0.4);
783
  font-size: 0.9rem;
784
  }
785
-
786
  /* Responsive styles */
787
  @media (max-width: 1200px) {
788
  .features-grid, .footer-content {
@@ -793,7 +692,6 @@
793
  grid-template-columns: repeat(2, 1fr);
794
  }
795
  }
796
-
797
  @media (max-width: 768px) {
798
  header {
799
  padding: 1rem 5%;
@@ -912,30 +810,43 @@
912
  <h3>Custom Outfit Generator</h3>
913
  <form id="designerForm">
914
  <div class="form-group">
915
- <label for="color-scheme">Color Scheme</label>
916
- <input type="text" id="color-scheme" class="form-control" placeholder="E.g., Red, Blue, Pastel tones" required>
 
 
 
 
 
 
 
 
 
 
917
  </div>
918
 
919
  <div class="form-group">
920
- <label for="outfit-type">Outfit Type</label>
921
- <select id="outfit-type" class="form-control" required>
922
- <option value="">Select outfit type</option>
923
- <option value="T-shirt">T-shirt</option>
924
- <option value="Hoodie">Hoodie</option>
925
- <option value="Dress">Dress</option>
926
- <option value="Sweatshirt">Sweatshirt</option>
927
- <option value="Jacket">Jacket</option>
 
 
 
928
  </select>
929
  </div>
930
 
931
  <div class="form-group">
932
- <label for="design-style">Design Style</label>
933
- <input type="text" id="design-style" class="form-control" placeholder="E.g., Abstract Art, Minimalist Logo" required>
934
  </div>
935
 
936
  <div class="form-group">
937
- <label for="additional-text">Additional Text (Optional)</label>
938
- <input type="text" id="additional-text" class="form-control" placeholder="E.g., Slogan or text to include">
939
  </div>
940
 
941
  <button type="submit" class="generate-btn">
@@ -954,11 +865,7 @@
954
  <img id="resultImage" class="result-image" alt="AI Generated Outfit">
955
  <div class="loading-overlay">
956
  <div class="loading-spinner"></div>
957
- <div class="progress-container">
958
- <div class="progress-bar" id="progressBar"></div>
959
- <span id="progressText">0%</span>
960
- </div>
961
- <p id="statusText">Initializing AI model...</p>
962
  </div>
963
  </div>
964
  </div>
@@ -1136,127 +1043,118 @@
1136
  </footer>
1137
 
1138
  <script>
1139
- // Add this to your existing script section
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1140
  document.getElementById('designerForm').addEventListener('submit', async function(e) {
1141
  e.preventDefault();
1142
 
1143
- // Get form values
1144
- const colorScheme = document.getElementById('color-scheme').value;
1145
  const outfitType = document.getElementById('outfit-type').value;
1146
- const designStyle = document.getElementById('design-style').value;
1147
- const additionalText = document.getElementById('additional-text').value;
 
 
 
 
 
 
 
 
 
 
 
 
 
1148
 
1149
  // Show loading state
1150
  const resultPlaceholder = document.querySelector('.result-placeholder');
1151
  const resultImage = document.getElementById('resultImage');
1152
  const loadingOverlay = document.querySelector('.loading-overlay');
1153
- const progressBar = document.getElementById('progressBar');
1154
- const progressText = document.getElementById('progressText');
1155
- const statusText = document.getElementById('statusText');
1156
 
1157
  resultPlaceholder.style.display = 'none';
1158
  resultImage.style.display = 'none';
1159
  loadingOverlay.style.display = 'flex';
1160
 
1161
- // Create a progress simulation (since we can't get real progress from API)
1162
- let progress = 0;
1163
- const progressInterval = setInterval(() => {
1164
- progress += Math.random() * 5;
1165
- if (progress > 95) progress = 95; // Don't go to 100% until we get the image
1166
- progressBar.style.width = `${progress}%`;
1167
- progressText.textContent = `${Math.floor(progress)}%`;
1168
-
1169
- // Update status text based on progress
1170
- if (progress < 30) {
1171
- statusText.textContent = "Initializing AI model...";
1172
- } else if (progress < 60) {
1173
- statusText.textContent = "Generating design concepts...";
1174
- } else {
1175
- statusText.textContent = "Finalizing your unique outfit...";
1176
- }
1177
- }, 500);
1178
-
1179
  try {
1180
- // Construct the prompt based on form inputs
1181
- const prompt = `A high-resolution, premium-quality ${colorScheme} ${outfitType} with a ${designStyle}. ` +
1182
- `The design is visually striking, seamlessly integrated, and enhances the garment's texture. ` +
1183
- `The fabric appears realistic with natural folds, shadows, and highlights. ` +
1184
- (additionalText ? `The text "${additionalText}" is positioned artistically.` : "");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1185
 
1186
- console.log("Prompt:", prompt);
 
 
1187
 
1188
- // Call your backend API (you'll need to set this up)
1189
- // For now, we'll simulate the API call with a timeout
1190
- const response = await simulateApiCall(prompt);
1191
 
1192
- // Complete the progress bar
1193
- clearInterval(progressInterval);
1194
- progressBar.style.width = '100%';
1195
- progressText.textContent = '100%';
1196
- statusText.textContent = "Generation complete!";
1197
 
1198
- // Display the result after a brief delay to show completion
1199
- setTimeout(() => {
1200
- // In a real implementation, you would use the actual image from the API
1201
- // For demo purposes, we'll use a placeholder
1202
- resultImage.src = 'https://images.unsplash.com/photo-1525507119028-ed4c629a60a3?w=800&auto=format&fit=crop';
1203
- resultImage.style.display = 'block';
1204
- loadingOverlay.style.display = 'none';
1205
- }, 1000);
1206
 
1207
  } catch (error) {
1208
  console.error('Error generating outfit:', error);
1209
- clearInterval(progressInterval);
1210
  loadingOverlay.style.display = 'none';
1211
  resultPlaceholder.style.display = 'block';
1212
- alert('Failed to generate outfit. Please try again.');
 
 
 
 
 
1213
  }
1214
  });
1215
-
1216
- // Simulate API call with progress (replace with actual API call)
1217
- async function simulateApiCall(prompt) {
1218
- return new Promise((resolve) => {
1219
- // Simulate API processing time (3-6 seconds)
1220
- const delay = 3000 + Math.random() * 3000;
1221
- setTimeout(() => {
1222
- resolve({ success: true });
1223
- }, delay);
1224
  });
1225
- }
1226
-
1227
- // Add this to your CSS
1228
- <style>
1229
- .progress-container {
1230
- width: 100%;
1231
- background-color: #f1f1f1;
1232
- border-radius: 10px;
1233
- margin: 20px 0;
1234
- position: relative;
1235
- }
1236
-
1237
- .progress-bar {
1238
- height: 20px;
1239
- border-radius: 10px;
1240
- background-color: var(--accent);
1241
- width: 0%;
1242
- transition: width 0.3s ease;
1243
- }
1244
-
1245
- #progressText {
1246
- position: absolute;
1247
- top: 50%;
1248
- left: 50%;
1249
- transform: translate(-50%, -50%);
1250
- color: white;
1251
- font-weight: bold;
1252
- }
1253
-
1254
- #statusText {
1255
- margin-top: 10px;
1256
- font-size: 1rem;
1257
- color: var(--text);
1258
- }
1259
- </style>
1260
  </script>
1261
  </body>
1262
  </html>
 
23
  --dark-gray: #e0e0e0;
24
  --transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
25
  }
 
26
  * {
27
  margin: 0;
28
  padding: 0;
29
  box-sizing: border-box;
30
  }
 
31
  body {
32
  font-family: 'Raleway', sans-serif;
33
  color: var(--text);
 
35
  overflow-x: hidden;
36
  line-height: 1.6;
37
  }
 
38
  h1, h2, h3, h4, h5, h6 {
39
  font-family: 'Playfair Display', serif;
40
  font-weight: 600;
41
  }
 
42
  /* Preloader */
43
  .preloader {
44
  position: fixed;
 
54
  z-index: 9999;
55
  transition: opacity 0.5s ease;
56
  }
 
57
  .preloader.fade-out {
58
  opacity: 0;
59
  }
 
60
  .preloader-logo {
61
  font-family: 'Playfair Display', serif;
62
  font-size: 3rem;
 
64
  color: var(--primary);
65
  margin-bottom: 1rem;
66
  }
 
67
  .preloader-logo span {
68
  color: var(--accent);
69
  }
 
70
  .spinner {
71
  width: 50px;
72
  height: 50px;
 
76
  animation: spin 1s linear infinite;
77
  margin-bottom: 2rem;
78
  }
 
79
  @keyframes spin {
80
  0% { transform: rotate(0deg); }
81
  100% { transform: rotate(360deg); }
82
  }
 
83
  /* Header */
84
  header {
85
  background-color: var(--secondary);
 
93
  align-items: center;
94
  transition: var(--transition);
95
  }
 
96
  header.scrolled {
97
  padding: 1rem 5%;
98
  box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
99
  }
 
100
  .logo {
101
  font-family: 'Playfair Display', serif;
102
  font-size: 2rem;
 
107
  align-items: center;
108
  gap: 0.5rem;
109
  }
 
110
  .logo-icon {
111
  color: var(--accent);
112
  }
 
113
  nav ul {
114
  display: flex;
115
  list-style: none;
116
  gap: 2rem;
117
  }
 
118
  nav ul li {
119
  position: relative;
120
  }
 
121
  nav ul li a {
122
  text-decoration: none;
123
  color: var(--text);
 
127
  transition: var(--transition);
128
  position: relative;
129
  }
 
130
  nav ul li a::after {
131
  content: '';
132
  position: absolute;
 
137
  background-color: var(--accent);
138
  transition: var(--transition);
139
  }
 
140
  nav ul li a:hover::after {
141
  width: 100%;
142
  }
 
143
  .header-actions {
144
  display: flex;
145
  gap: 1.5rem;
146
  align-items: center;
147
  }
 
148
  .header-actions i {
149
  font-size: 1.2rem;
150
  cursor: pointer;
151
  transition: var(--transition);
152
  position: relative;
153
  }
 
154
  .header-actions i:hover {
155
  color: var(--accent);
156
  }
 
157
  .cart-count {
158
  position: absolute;
159
  top: -8px;
 
169
  font-size: 0.6rem;
170
  font-weight: 700;
171
  }
 
172
  .account-btn {
173
  background-color: var(--primary);
174
  color: white;
 
183
  align-items: center;
184
  gap: 0.5rem;
185
  }
 
186
  .account-btn:hover {
187
  background-color: var(--accent);
188
  transform: translateY(-2px);
189
  box-shadow: 0 5px 15px rgba(255, 77, 109, 0.3);
190
  }
 
191
  .account-btn i {
192
  font-size: 0.9rem;
193
  color: white;
194
  }
 
195
  /* Hero Section */
196
  .hero {
197
  height: 100vh;
 
204
  url('https://images.unsplash.com/photo-1525507119028-ed4c629a60a3?w=1200&auto=format&fit=crop') no-repeat center center/cover;
205
  color: white;
206
  }
 
207
  .hero::before {
208
  content: '';
209
  position: absolute;
 
213
  height: 100%;
214
  background: linear-gradient(90deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.3) 100%);
215
  }
 
216
  .hero-content {
217
  width: 50%;
218
  z-index: 10;
219
  position: relative;
220
  }
 
221
  .hero h1 {
222
  font-size: 4rem;
223
  margin-bottom: 1.5rem;
224
  line-height: 1.2;
225
  text-shadow: 0 2px 10px rgba(0,0,0,0.3);
226
  }
 
227
  .hero p {
228
  font-size: 1.2rem;
229
  margin-bottom: 2.5rem;
 
231
  max-width: 85%;
232
  font-weight: 300;
233
  }
 
234
  .hero-btns {
235
  display: flex;
236
  gap: 1.5rem;
237
  margin-top: 2rem;
238
  }
 
239
  .hero-btn {
240
  background-color: var(--accent);
241
  color: white;
 
251
  gap: 0.7rem;
252
  text-decoration: none;
253
  }
 
254
  .hero-btn:hover {
255
  background-color: var(--dark-accent);
256
  transform: translateY(-3px);
257
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
258
  }
 
259
  .hero-btn i {
260
  font-size: 0.9rem;
261
  }
 
262
  .hero-btn.secondary {
263
  background-color: transparent;
264
  color: white;
265
  border: 2px solid white;
266
  }
 
267
  .hero-btn.secondary:hover {
268
  background-color: rgba(255,255,255,0.2);
269
  border-color: transparent;
270
  }
 
271
  /* AI Designer Section */
272
  .ai-designer {
273
  padding: 6rem 5%;
274
  background-color: var(--secondary);
275
  }
 
276
  .section-title {
277
  text-align: center;
278
  margin-bottom: 5rem;
279
  }
 
280
  .section-title h2 {
281
  font-size: 2.8rem;
282
  font-weight: 700;
 
284
  position: relative;
285
  display: inline-block;
286
  }
 
287
  .section-title h2::after {
288
  content: '';
289
  position: absolute;
 
294
  height: 3px;
295
  background-color: var(--accent);
296
  }
 
297
  .section-title p {
298
  font-size: 1.1rem;
299
  color: var(--light-text);
300
  max-width: 700px;
301
  margin: 0 auto;
302
  }
 
303
  .designer-container {
304
  display: flex;
305
  gap: 3rem;
306
  align-items: center;
307
  margin-bottom: 5rem;
308
  }
 
309
  .designer-form {
310
  flex: 1;
311
  padding: 2.5rem;
 
313
  border-radius: 20px;
314
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
315
  }
 
316
  .designer-form h3 {
317
  font-size: 1.6rem;
318
  margin-bottom: 1.5rem;
319
  color: var(--primary);
320
  }
 
321
  .form-group {
322
  margin-bottom: 1.5rem;
323
  }
 
324
  .form-group label {
325
  display: block;
326
  font-weight: 600;
327
  margin-bottom: 0.7rem;
328
  color: var(--primary);
329
  }
 
330
  .form-control {
331
  width: 100%;
332
  padding: 1rem;
 
336
  font-size: 1rem;
337
  transition: var(--transition);
338
  }
 
339
  .form-control:focus {
340
  outline: none;
341
  border-color: var(--accent);
342
  box-shadow: 0 0 0 2px rgba(255, 77, 109, 0.2);
343
  }
 
344
  textarea.form-control {
345
  min-height: 120px;
346
  resize: vertical;
347
  }
 
348
  .generate-btn {
349
  background-color: var(--accent);
350
  color: white;
 
361
  justify-content: center;
362
  gap: 0.7rem;
363
  }
 
364
  .generate-btn:hover {
365
  background-color: var(--dark-accent);
366
  transform: translateY(-2px);
367
  box-shadow: 0 5px 15px rgba(255, 77, 109, 0.3);
368
  }
 
369
  .designer-result {
370
  flex: 1;
371
  min-height: 400px;
 
378
  overflow: hidden;
379
  position: relative;
380
  }
 
381
  .result-placeholder {
382
  text-align: center;
383
  padding: 2rem;
384
  color: var(--light-text);
385
  }
 
386
  .result-placeholder i {
387
  font-size: 3rem;
388
  margin-bottom: 1rem;
389
  color: var(--dark-gray);
390
  }
 
391
  .result-image {
392
  width: 100%;
393
  height: 100%;
394
  object-fit: cover;
395
  display: none;
396
  }
 
397
  .loading-overlay {
398
  position: absolute;
399
  top: 0;
 
407
  justify-content: center;
408
  display: none;
409
  }
 
410
  .loading-spinner {
411
  width: 50px;
412
  height: 50px;
 
416
  animation: spin 1s linear infinite;
417
  margin-bottom: 1rem;
418
  }
 
419
  /* Features Section */
420
  .features {
421
  padding: 6rem 5%;
422
  background-color: var(--light-gray);
423
  }
 
424
  .features-grid {
425
  display: grid;
426
  grid-template-columns: repeat(3, 1fr);
427
  gap: 2.5rem;
428
  }
 
429
  .feature-card {
430
  background-color: var(--secondary);
431
  border-radius: 15px;
 
436
  position: relative;
437
  overflow: hidden;
438
  }
 
439
  .feature-card::before {
440
  content: '';
441
  position: absolute;
 
445
  height: 5px;
446
  background-color: var(--accent);
447
  }
 
448
  .feature-card:hover {
449
  transform: translateY(-10px);
450
  box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1);
451
  }
 
452
  .feature-icon {
453
  background: linear-gradient(135deg, var(--accent) 0%, var(--dark-accent) 100%);
454
  color: white;
 
462
  font-size: 2rem;
463
  box-shadow: 0 10px 20px rgba(255, 77, 109, 0.2);
464
  }
 
465
  .feature-card h3 {
466
  font-size: 1.5rem;
467
  margin-bottom: 1.2rem;
468
  }
 
469
  .feature-card p {
470
  color: var(--light-text);
471
  line-height: 1.7;
472
  }
 
473
  /* Collections Section */
474
  .collections {
475
  padding: 6rem 5%;
476
  background-color: var(--secondary);
477
  text-align: center;
478
  }
 
479
  .collections-container {
480
  display: grid;
481
  grid-template-columns: repeat(3, 1fr);
482
  gap: 2.5rem;
483
  margin-top: 3rem;
484
  }
 
485
  .collection-card {
486
  background-color: var(--light-gray);
487
  border-radius: 15px;
 
490
  text-align: left;
491
  position: relative;
492
  }
 
493
  .collection-card:hover {
494
  transform: translateY(-10px);
495
  box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1);
496
  }
 
497
  .collection-image {
498
  width: 100%;
499
  height: 300px;
500
  object-fit: cover;
501
  transition: var(--transition);
502
  }
 
503
  .collection-card:hover .collection-image {
504
  transform: scale(1.05);
505
  }
 
506
  .collection-overlay {
507
  position: absolute;
508
  bottom: 0;
 
512
  background: linear-gradient(transparent, rgba(0,0,0,0.8));
513
  color: white;
514
  }
 
515
  .collection-overlay h3 {
516
  font-size: 1.4rem;
517
  margin-bottom: 0.5rem;
518
  }
 
519
  .collection-overlay p {
520
  font-size: 0.9rem;
521
  opacity: 0.8;
522
  margin-bottom: 1rem;
523
  }
 
524
  .collection-btn {
525
  background-color: var(--secondary);
526
  color: var(--primary);
 
535
  align-items: center;
536
  gap: 0.5rem;
537
  }
 
538
  .collection-btn:hover {
539
  background-color: var(--accent);
540
  color: white;
541
  }
 
542
  /* Newsletter Section */
543
  .newsletter {
544
  padding: 5rem 5%;
 
546
  color: white;
547
  text-align: center;
548
  }
 
549
  .newsletter h2 {
550
  font-size: 2.5rem;
551
  margin-bottom: 1.5rem;
552
  }
 
553
  .newsletter p {
554
  font-size: 1.1rem;
555
  margin-bottom: 2.5rem;
 
558
  margin-right: auto;
559
  color: rgba(255,255,255,0.8);
560
  }
 
561
  .newsletter-form {
562
  display: flex;
563
  max-width: 500px;
 
566
  border-radius: 50px;
567
  overflow: hidden;
568
  }
 
569
  .newsletter-input {
570
  flex: 1;
571
  padding: 1rem 1.5rem;
572
  border: none;
573
  font-size: 1rem;
574
  }
 
575
  .newsletter-input:focus {
576
  outline: none;
577
  }
 
578
  .newsletter-btn {
579
  background-color: var(--accent);
580
  color: white;
 
587
  align-items: center;
588
  gap: 0.5rem;
589
  }
 
590
  .newsletter-btn:hover {
591
  background-color: var(--dark-accent);
592
  }
 
593
  /* Footer */
594
  footer {
595
  background-color: var(--primary);
596
  color: white;
597
  padding: 4rem 5% 2rem;
598
  }
 
599
  .footer-content {
600
  display: grid;
601
  grid-template-columns: repeat(4, 1fr);
602
  gap: 3rem;
603
  margin-bottom: 3rem;
604
  }
 
605
  .footer-logo {
606
  font-family: 'Playfair Display', serif;
607
  font-size: 2rem;
 
612
  align-items: center;
613
  gap: 0.5rem;
614
  }
 
615
  .footer-logo .logo-icon {
616
  color: var(--accent);
617
  }
 
618
  .footer-about p {
619
  margin-bottom: 1.5rem;
620
  color: rgba(255,255,255,0.6);
621
  line-height: 1.7;
622
  }
 
623
  .social-links {
624
  display: flex;
625
  gap: 1.5rem;
626
  margin-top: 2rem;
627
  }
 
628
  .social-links a {
629
  color: white;
630
  font-size: 1.2rem;
 
637
  align-items: center;
638
  justify-content: center;
639
  }
 
640
  .social-links a:hover {
641
  background-color: var(--accent);
642
  transform: translateY(-3px);
643
  }
 
644
  .footer-title {
645
  font-size: 1.2rem;
646
  margin-bottom: 1.5rem;
 
648
  letter-spacing: 1px;
649
  color: white;
650
  }
 
651
  .footer-links ul {
652
  list-style: none;
653
  }
 
654
  .footer-links ul li {
655
  margin-bottom: 1rem;
656
  }
 
657
  .footer-links ul li a {
658
  color: rgba(255,255,255,0.6);
659
  text-decoration: none;
660
  transition: var(--transition);
661
  font-weight: 400;
662
  }
 
663
  .footer-links ul li a:hover {
664
  color: white;
665
  padding-left: 5px;
666
  }
 
667
  .footer-contact p {
668
  display: flex;
669
  align-items: center;
 
671
  margin-bottom: 1.2rem;
672
  color: rgba(255,255,255,0.6);
673
  }
 
674
  .footer-contact i {
675
  color: var(--accent);
676
  min-width: 20px;
677
  }
 
678
  .footer-bottom {
679
  padding-top: 2rem;
680
  border-top: 1px solid rgba(255,255,255,0.1);
 
682
  color: rgba(255,255,255,0.4);
683
  font-size: 0.9rem;
684
  }
 
685
  /* Responsive styles */
686
  @media (max-width: 1200px) {
687
  .features-grid, .footer-content {
 
692
  grid-template-columns: repeat(2, 1fr);
693
  }
694
  }
 
695
  @media (max-width: 768px) {
696
  header {
697
  padding: 1rem 5%;
 
810
  <h3>Custom Outfit Generator</h3>
811
  <form id="designerForm">
812
  <div class="form-group">
813
+ <label for="outfit-type">Outfit Type</label>
814
+ <select id="outfit-type" class="form-control">
815
+ <option value="">Select outfit type</option>
816
+ <option value="casual">Casual Wear</option>
817
+ <option value="formal">Formal Wear</option>
818
+ <option value="business">Business Attire</option>
819
+ <option value="evening">Evening Wear</option>
820
+ <option value="sporty">Sporty Outfit</option>
821
+ <option value="summer">Summer Outfit</option>
822
+ <option value="winter">Winter Outfit</option>
823
+ <option value="festive">Festive Look</option>
824
+ </select>
825
  </div>
826
 
827
  <div class="form-group">
828
+ <label for="style-preference">Style Preference</label>
829
+ <select id="style-preference" class="form-control">
830
+ <option value="">Select style preference</option>
831
+ <option value="minimalist">Minimalist</option>
832
+ <option value="bohemian">Bohemian</option>
833
+ <option value="streetwear">Streetwear</option>
834
+ <option value="classic">Classic</option>
835
+ <option value="edgy">Edgy</option>
836
+ <option value="romantic">Romantic</option>
837
+ <option value="vintage">Vintage</option>
838
+ <option value="modern">Modern</option>
839
  </select>
840
  </div>
841
 
842
  <div class="form-group">
843
+ <label for="color-scheme">Color Scheme</label>
844
+ <input type="text" id="color-scheme" class="form-control" placeholder="E.g., pastel tones, monochrome, bold colors">
845
  </div>
846
 
847
  <div class="form-group">
848
+ <label for="additional-details">Additional Details</label>
849
+ <textarea id="additional-details" class="form-control" placeholder="Describe any specific details or inspirations for your outfit"></textarea>
850
  </div>
851
 
852
  <button type="submit" class="generate-btn">
 
865
  <img id="resultImage" class="result-image" alt="AI Generated Outfit">
866
  <div class="loading-overlay">
867
  <div class="loading-spinner"></div>
868
+ <p>Generating your unique outfit...</p>
 
 
 
 
869
  </div>
870
  </div>
871
  </div>
 
1043
  </footer>
1044
 
1045
  <script>
1046
+ // Preloader
1047
+ window.addEventListener('load', function() {
1048
+ const preloader = document.querySelector('.preloader');
1049
+ preloader.classList.add('fade-out');
1050
+
1051
+ setTimeout(function() {
1052
+ preloader.style.display = 'none';
1053
+ }, 500);
1054
+ });
1055
+ // Header scroll effect
1056
+ window.addEventListener('scroll', function() {
1057
+ const header = document.querySelector('header');
1058
+ if (window.scrollY > 50) {
1059
+ header.classList.add('scrolled');
1060
+ } else {
1061
+ header.classList.remove('scrolled');
1062
+ }
1063
+ });
1064
+ // AI Designer Form Submission
1065
  document.getElementById('designerForm').addEventListener('submit', async function(e) {
1066
  e.preventDefault();
1067
 
 
 
1068
  const outfitType = document.getElementById('outfit-type').value;
1069
+ const stylePreference = document.getElementById('style-preference').value;
1070
+ const colorScheme = document.getElementById('color-scheme').value;
1071
+ const additionalDetails = document.getElementById('additional-details').value;
1072
+
1073
+ // Validate inputs
1074
+ if (!outfitType || !stylePreference || !colorScheme) {
1075
+ alert('Please fill in all required fields');
1076
+ return;
1077
+ }
1078
+
1079
+ // Construct prompt
1080
+ let prompt = `Fashion design for ${outfitType} outfit with ${stylePreference} style and ${colorScheme} color scheme.`;
1081
+ if (additionalDetails) {
1082
+ prompt += ` Additional details: ${additionalDetails}`;
1083
+ }
1084
 
1085
  // Show loading state
1086
  const resultPlaceholder = document.querySelector('.result-placeholder');
1087
  const resultImage = document.getElementById('resultImage');
1088
  const loadingOverlay = document.querySelector('.loading-overlay');
 
 
 
1089
 
1090
  resultPlaceholder.style.display = 'none';
1091
  resultImage.style.display = 'none';
1092
  loadingOverlay.style.display = 'flex';
1093
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1094
  try {
1095
+ // Call the Hugging Face API
1096
+ const response = await fetch('https://gaur3009-imagier-text-2-img.hf.space/run/predict', {
1097
+ method: 'POST',
1098
+ headers: {
1099
+ 'Content-Type': 'application/json'
1100
+ },
1101
+ body: JSON.stringify({
1102
+ data: [
1103
+ prompt, // Prompt
1104
+ "", // Negative prompt (optional)
1105
+ 7.5, // Guidance scale
1106
+ 512, // Width
1107
+ 512, // Height
1108
+ 50, // Num inference steps
1109
+ false, // Enable safety checker
1110
+ 1, // Seed (-1 for random)
1111
+ 0 // Num outputs
1112
+ ]
1113
+ })
1114
+ });
1115
 
1116
+ if (!response.ok) {
1117
+ throw new Error('API request failed');
1118
+ }
1119
 
1120
+ const data = await response.json();
 
 
1121
 
1122
+ // Extract the image URL from the response
1123
+ // Note: The actual response structure might need adjustment based on the API
1124
+ const imageData = data.data[0] || '';
 
 
1125
 
1126
+ // Display the generated image
1127
+ resultImage.src = `data:image/png;base64,${imageData}`;
1128
+ resultImage.style.display = 'block';
1129
+ loadingOverlay.style.display = 'none';
 
 
 
 
1130
 
1131
  } catch (error) {
1132
  console.error('Error generating outfit:', error);
 
1133
  loadingOverlay.style.display = 'none';
1134
  resultPlaceholder.style.display = 'block';
1135
+
1136
+ // Display a placeholder since the API might not work due to CORS or other issues
1137
+ resultImage.src = 'https://images.unsplash.com/photo-1525507119028-ed4c629a60a3?w=800&auto=format&fit=crop';
1138
+ resultImage.style.display = 'block';
1139
+
1140
+ alert('Outfit generation failed. Showing sample outfit instead.');
1141
  }
1142
  });
1143
+ // Like buttons functionality
1144
+ document.querySelectorAll('.collection-btn').forEach(button => {
1145
+ button.addEventListener('click', function(e) {
1146
+ e.preventDefault();
1147
+ // In a real app, this would navigate to the collection page
1148
+ alert('This would navigate to the collection page in a real application');
 
 
 
1149
  });
1150
+ });
1151
+ // Newsletter form
1152
+ document.querySelector('.newsletter-form').addEventListener('submit', function(e) {
1153
+ e.preventDefault();
1154
+ const email = e.target.querySelector('input').value;
1155
+ alert(`Thank you for subscribing with ${email}! You'll receive our fashion updates soon.`);
1156
+ e.target.reset();
1157
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1158
  </script>
1159
  </body>
1160
  </html>