userIdc2024 commited on
Commit
0b22f03
·
verified ·
1 Parent(s): f308110

Update frontend/styles.css

Browse files
Files changed (1) hide show
  1. frontend/styles.css +80 -381
frontend/styles.css CHANGED
@@ -36,32 +36,6 @@ body {
36
  position: relative;
37
  }
38
 
39
- /* ===== Background Blobs ===== */
40
- .blob {
41
- position: fixed;
42
- border-radius: 50%;
43
- filter: blur(120px);
44
- opacity: 0.15;
45
- pointer-events: none;
46
- z-index: 0;
47
- }
48
-
49
- .blob-1 {
50
- width: 500px;
51
- height: 500px;
52
- background: var(--accent);
53
- top: -120px;
54
- right: -100px;
55
- }
56
-
57
- .blob-2 {
58
- width: 400px;
59
- height: 400px;
60
- background: #6c5ce7;
61
- bottom: -80px;
62
- left: -100px;
63
- }
64
-
65
  /* ===== Container ===== */
66
  .container {
67
  position: relative;
@@ -72,36 +46,12 @@ body {
72
  transition: max-width 0.3s ease;
73
  }
74
 
75
- .container.expanded {
76
- max-width: 95vw;
77
- }
78
-
79
  /* ===== Header ===== */
80
  .header {
81
  text-align: center;
82
  margin-bottom: 40px;
83
  }
84
 
85
- .logo {
86
- display: inline-flex;
87
- align-items: center;
88
- gap: 8px;
89
- margin-bottom: 16px;
90
- }
91
-
92
- .logo-icon {
93
- font-size: 1.5rem;
94
- color: var(--accent);
95
- }
96
-
97
- .logo-text {
98
- font-family: "Playfair Display", serif;
99
- font-size: 1.6rem;
100
- font-weight: 700;
101
- letter-spacing: 0.04em;
102
- color: var(--accent-light);
103
- }
104
-
105
  .title {
106
  font-family: "Playfair Display", serif;
107
  font-size: 2rem;
@@ -149,8 +99,8 @@ body {
149
  color: var(--text);
150
  font-family: inherit;
151
  font-size: 0.95rem;
152
- transition: border-color 0.2s, box-shadow 0.2s;
153
  outline: none;
 
154
  }
155
 
156
  .field input:focus,
@@ -160,166 +110,6 @@ body {
160
  box-shadow: 0 0 0 3px rgba(201, 164, 108, 0.15);
161
  }
162
 
163
- .field input::placeholder,
164
- .field textarea::placeholder {
165
- color: var(--text-muted);
166
- opacity: 0.6;
167
- }
168
-
169
- .field select {
170
- cursor: pointer;
171
- appearance: none;
172
- -webkit-appearance: none;
173
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5l5 5 5-5' stroke='%238888a0' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
174
- background-repeat: no-repeat;
175
- background-position: right 16px center;
176
- padding-right: 40px;
177
- }
178
-
179
- /* ===== Multi-select ===== */
180
- .label-hint {
181
- font-weight: 400;
182
- font-size: 0.75rem;
183
- text-transform: none;
184
- letter-spacing: normal;
185
- color: var(--text-muted);
186
- opacity: 0.7;
187
- }
188
-
189
- .multiselect {
190
- position: relative;
191
- }
192
-
193
- .multiselect-selected {
194
- width: 100%;
195
- min-height: 46px;
196
- padding: 8px 12px;
197
- background: var(--bg);
198
- border: 1px solid var(--border);
199
- border-radius: var(--radius-sm);
200
- color: var(--text);
201
- cursor: pointer;
202
- display: flex;
203
- flex-wrap: wrap;
204
- gap: 6px;
205
- align-items: center;
206
- transition: border-color 0.2s, box-shadow 0.2s;
207
- }
208
-
209
- .multiselect-selected:hover {
210
- border-color: var(--text-muted);
211
- }
212
-
213
- .multiselect-selected.active {
214
- border-color: var(--accent);
215
- box-shadow: 0 0 0 3px rgba(201, 164, 108, 0.15);
216
- }
217
-
218
- .multiselect-placeholder {
219
- color: var(--text-muted);
220
- opacity: 0.6;
221
- font-size: 0.95rem;
222
- }
223
-
224
- .multiselect-tag {
225
- display: inline-flex;
226
- align-items: center;
227
- gap: 6px;
228
- padding: 4px 10px;
229
- background: rgba(201, 164, 108, 0.15);
230
- border: 1px solid rgba(201, 164, 108, 0.25);
231
- border-radius: 6px;
232
- font-size: 0.8rem;
233
- color: var(--accent-light);
234
- }
235
-
236
- .multiselect-tag-remove {
237
- cursor: pointer;
238
- font-size: 1rem;
239
- line-height: 1;
240
- opacity: 0.6;
241
- transition: opacity 0.15s;
242
- }
243
-
244
- .multiselect-tag-remove:hover {
245
- opacity: 1;
246
- }
247
-
248
- .multiselect-dropdown {
249
- position: absolute;
250
- top: calc(100% + 6px);
251
- left: 0;
252
- right: 0;
253
- background: var(--surface);
254
- border: 1px solid var(--border);
255
- border-radius: var(--radius-sm);
256
- z-index: 100;
257
- max-height: 280px;
258
- display: flex;
259
- flex-direction: column;
260
- box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4);
261
- }
262
-
263
- .multiselect-search {
264
- width: 100%;
265
- padding: 10px 14px;
266
- background: var(--bg);
267
- border: none;
268
- border-bottom: 1px solid var(--border);
269
- border-radius: var(--radius-sm) var(--radius-sm) 0 0;
270
- color: var(--text);
271
- font-family: inherit;
272
- font-size: 0.9rem;
273
- outline: none;
274
- }
275
-
276
- .multiselect-search::placeholder {
277
- color: var(--text-muted);
278
- opacity: 0.5;
279
- }
280
-
281
- .multiselect-options {
282
- overflow-y: auto;
283
- padding: 4px 0;
284
- }
285
-
286
- .multiselect-option {
287
- padding: 9px 14px;
288
- font-size: 0.9rem;
289
- cursor: pointer;
290
- transition: background 0.15s;
291
- display: flex;
292
- align-items: center;
293
- gap: 8px;
294
- }
295
-
296
- .multiselect-option:hover {
297
- background: var(--surface-hover);
298
- }
299
-
300
- .multiselect-option.selected {
301
- color: var(--accent-light);
302
- }
303
-
304
- .multiselect-option .check {
305
- width: 16px;
306
- height: 16px;
307
- border: 1.5px solid var(--border);
308
- border-radius: 4px;
309
- display: flex;
310
- align-items: center;
311
- justify-content: center;
312
- flex-shrink: 0;
313
- font-size: 0.7rem;
314
- transition: all 0.15s;
315
- }
316
-
317
- .multiselect-option.selected .check {
318
- background: var(--accent);
319
- border-color: var(--accent);
320
- color: #fff;
321
- }
322
-
323
  .field textarea {
324
  resize: vertical;
325
  min-height: 80px;
@@ -338,30 +128,19 @@ body {
338
  border-radius: var(--radius-sm);
339
  background: var(--bg);
340
  color: var(--text-muted);
341
- font-family: inherit;
342
  font-size: 0.95rem;
343
- font-weight: 500;
344
  cursor: pointer;
345
  transition: all 0.2s;
346
- display: flex;
347
- align-items: center;
348
- justify-content: center;
349
- gap: 8px;
350
  }
351
 
352
  .toggle-btn:hover {
353
  background: var(--surface-hover);
354
- border-color: var(--text-muted);
355
  }
356
 
357
  .toggle-btn.active {
358
- background: rgba(201, 164, 108, 0.1);
359
  border-color: var(--accent);
360
  color: var(--accent-light);
361
- }
362
-
363
- .toggle-icon {
364
- font-size: 1.1rem;
365
  }
366
 
367
  /* ===== Submit Button ===== */
@@ -372,19 +151,15 @@ body {
372
  border-radius: var(--radius-sm);
373
  background: linear-gradient(135deg, var(--accent-dark), var(--accent));
374
  color: #fff;
375
- font-family: inherit;
376
  font-size: 1rem;
377
  font-weight: 600;
378
  cursor: pointer;
379
- transition: opacity 0.2s, transform 0.1s;
380
  }
381
 
382
  .submit-btn:hover {
383
- opacity: 0.9;
384
- }
385
-
386
- .submit-btn:active {
387
- transform: scale(0.98);
388
  }
389
 
390
  .submit-btn:disabled {
@@ -392,28 +167,6 @@ body {
392
  cursor: not-allowed;
393
  }
394
 
395
- .btn-loader {
396
- display: inline-flex;
397
- align-items: center;
398
- gap: 8px;
399
- }
400
-
401
- .spinner {
402
- display: inline-block;
403
- width: 18px;
404
- height: 18px;
405
- border: 2px solid rgba(255, 255, 255, 0.3);
406
- border-top-color: #fff;
407
- border-radius: 50%;
408
- animation: spin 0.6s linear infinite;
409
- }
410
-
411
- @keyframes spin {
412
- to {
413
- transform: rotate(360deg);
414
- }
415
- }
416
-
417
  .hidden {
418
  display: none !important;
419
  }
@@ -427,13 +180,14 @@ body {
427
  border-radius: var(--radius-sm);
428
  color: var(--danger);
429
  font-size: 0.9rem;
430
- line-height: 1.5;
431
  }
432
 
433
- /* ===== Results Section ===== */
 
 
 
434
  .results {
435
  margin-top: 40px;
436
- max-width: none;
437
  }
438
 
439
  .results-header {
@@ -450,9 +204,9 @@ body {
450
  }
451
 
452
  .results-badge {
453
- padding: 4px 12px;
454
- border-radius: 20px;
455
- font-size: 0.75rem;
456
  font-weight: 600;
457
  text-transform: uppercase;
458
  letter-spacing: 0.06em;
@@ -468,172 +222,139 @@ body {
468
  color: var(--accent-light);
469
  }
470
 
471
- /* ===== Audience Grid (horizontal columns) ===== */
472
- .audience-grid {
 
473
  display: flex;
 
474
  gap: 20px;
475
- overflow-x: auto;
476
- padding-bottom: 12px;
477
- scrollbar-width: thin;
478
- scrollbar-color: var(--border) transparent;
479
- -webkit-overflow-scrolling: touch;
480
  }
481
 
482
- .audience-grid::-webkit-scrollbar {
483
- height: 6px;
 
 
 
 
484
  }
485
 
486
- .audience-grid::-webkit-scrollbar-track {
487
- background: transparent;
 
488
  }
489
 
490
- .audience-grid::-webkit-scrollbar-thumb {
491
- background: var(--border);
492
- border-radius: 3px;
 
 
 
 
493
  }
494
 
495
- .audience-column {
496
- flex: 0 0 340px;
497
- min-width: 300px;
498
  }
499
 
500
- .audience-header {
501
  display: flex;
502
  align-items: center;
503
  gap: 10px;
504
- margin-bottom: 16px;
505
- padding-bottom: 12px;
506
- border-bottom: 2px solid var(--accent-dark);
507
  }
508
 
509
- .audience-icon {
510
- font-size: 1.1rem;
 
511
  }
512
 
513
- .audience-name {
514
- font-family: "Playfair Display", serif;
515
- font-size: 1rem;
516
- font-weight: 600;
517
- color: var(--accent-light);
518
- white-space: nowrap;
519
  overflow: hidden;
520
- text-overflow: ellipsis;
 
 
 
 
 
 
521
  }
522
 
523
- /* ===== Trigger Card (Accordion) ===== */
 
524
  .trigger-card {
525
- background: var(--surface);
526
  border: 1px solid var(--border);
527
- border-radius: var(--radius);
528
- margin-bottom: 14px;
529
- animation: fadeUp 0.4s ease both;
530
  overflow: hidden;
 
531
  }
532
 
533
- .trigger-card:nth-child(2) { animation-delay: 0.1s; }
534
- .trigger-card:nth-child(3) { animation-delay: 0.2s; }
535
- .trigger-card:nth-child(4) { animation-delay: 0.3s; }
536
-
537
- @keyframes fadeUp {
538
- from {
539
- opacity: 0;
540
- transform: translateY(16px);
541
- }
542
- to {
543
- opacity: 1;
544
- transform: translateY(0);
545
- }
546
  }
547
 
548
- /* Clickable header */
549
  .trigger-header {
550
  display: flex;
551
- align-items: center;
552
  justify-content: space-between;
553
- padding: 16px 20px;
 
554
  cursor: pointer;
555
- transition: background 0.2s;
556
- gap: 12px;
557
  }
558
 
559
  .trigger-header:hover {
560
  background: var(--surface-hover);
561
  }
562
 
563
- .trigger-header-left {
564
- flex: 1;
565
- min-width: 0;
 
 
 
 
 
 
 
 
 
566
  }
567
 
568
  .trigger-chevron {
569
- font-size: 1.2rem;
570
- color: var(--text-muted);
571
  transition: transform 0.25s ease;
572
- flex-shrink: 0;
573
  }
574
 
575
- /* Rotate chevron when open */
576
  .trigger-card.open .trigger-chevron {
577
  transform: rotate(180deg);
578
  }
579
 
580
- /* Highlight active card border */
581
- .trigger-card.open {
582
- border-color: var(--accent-dark);
583
- }
584
-
585
- /* Collapsible body */
586
  .trigger-body {
587
  max-height: 0;
588
  overflow: hidden;
589
  transition: max-height 0.3s ease, padding 0.3s ease;
590
- padding: 0 20px;
591
  }
592
 
593
  .trigger-card.open .trigger-body {
594
- max-height: 600px; /* large enough to fit content */
595
- padding: 0 20px 20px;
596
- }
597
-
598
- .trigger-label {
599
- display: inline-block;
600
- font-size: 0.7rem;
601
- font-weight: 600;
602
- text-transform: uppercase;
603
- letter-spacing: 0.08em;
604
- color: var(--accent);
605
- background: rgba(201, 164, 108, 0.1);
606
- padding: 4px 10px;
607
- border-radius: 4px;
608
- margin-bottom: 8px;
609
- }
610
-
611
- .trigger-name {
612
- font-size: 1.05rem;
613
- font-weight: 600;
614
- margin-bottom: 0;
615
- line-height: 1.4;
616
  }
617
 
618
  .trigger-section {
619
  margin-bottom: 16px;
620
  }
621
 
622
- .trigger-section:first-child {
623
- margin-top: 8px;
624
- }
625
-
626
- .trigger-section:last-child {
627
- margin-bottom: 0;
628
- }
629
-
630
  .section-title {
631
  font-size: 0.75rem;
632
- font-weight: 600;
633
  text-transform: uppercase;
634
- letter-spacing: 0.06em;
635
  color: var(--text-muted);
636
  margin-bottom: 8px;
 
637
  }
638
 
639
  .section-list {
@@ -642,10 +363,8 @@ body {
642
 
643
  .section-list li {
644
  position: relative;
645
- padding: 8px 0 8px 20px;
646
  font-size: 0.9rem;
647
- line-height: 1.5;
648
- color: var(--text);
649
  border-bottom: 1px solid rgba(42, 42, 56, 0.5);
650
  }
651
 
@@ -657,29 +376,9 @@ body {
657
  content: "";
658
  position: absolute;
659
  left: 0;
660
- top: 14px;
661
  width: 6px;
662
  height: 6px;
663
  border-radius: 50%;
664
  background: var(--accent);
665
- opacity: 0.6;
666
- }
667
-
668
- /* ===== Responsive ===== */
669
- @media (max-width: 600px) {
670
- .container {
671
- padding: 32px 16px 60px;
672
- }
673
-
674
- .card {
675
- padding: 24px 20px;
676
- }
677
-
678
- .title {
679
- font-size: 1.5rem;
680
- }
681
-
682
- .toggle-group {
683
- gap: 8px;
684
- }
685
  }
 
36
  position: relative;
37
  }
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  /* ===== Container ===== */
40
  .container {
41
  position: relative;
 
46
  transition: max-width 0.3s ease;
47
  }
48
 
 
 
 
 
49
  /* ===== Header ===== */
50
  .header {
51
  text-align: center;
52
  margin-bottom: 40px;
53
  }
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  .title {
56
  font-family: "Playfair Display", serif;
57
  font-size: 2rem;
 
99
  color: var(--text);
100
  font-family: inherit;
101
  font-size: 0.95rem;
 
102
  outline: none;
103
+ transition: border-color 0.2s, box-shadow 0.2s;
104
  }
105
 
106
  .field input:focus,
 
110
  box-shadow: 0 0 0 3px rgba(201, 164, 108, 0.15);
111
  }
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  .field textarea {
114
  resize: vertical;
115
  min-height: 80px;
 
128
  border-radius: var(--radius-sm);
129
  background: var(--bg);
130
  color: var(--text-muted);
 
131
  font-size: 0.95rem;
 
132
  cursor: pointer;
133
  transition: all 0.2s;
 
 
 
 
134
  }
135
 
136
  .toggle-btn:hover {
137
  background: var(--surface-hover);
 
138
  }
139
 
140
  .toggle-btn.active {
 
141
  border-color: var(--accent);
142
  color: var(--accent-light);
143
+ background: rgba(201, 164, 108, 0.1);
 
 
 
144
  }
145
 
146
  /* ===== Submit Button ===== */
 
151
  border-radius: var(--radius-sm);
152
  background: linear-gradient(135deg, var(--accent-dark), var(--accent));
153
  color: #fff;
 
154
  font-size: 1rem;
155
  font-weight: 600;
156
  cursor: pointer;
157
+ transition: all 0.2s;
158
  }
159
 
160
  .submit-btn:hover {
161
+ transform: translateY(-2px);
162
+ box-shadow: 0 10px 25px rgba(201,164,108,0.25);
 
 
 
163
  }
164
 
165
  .submit-btn:disabled {
 
167
  cursor: not-allowed;
168
  }
169
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  .hidden {
171
  display: none !important;
172
  }
 
180
  border-radius: var(--radius-sm);
181
  color: var(--danger);
182
  font-size: 0.9rem;
 
183
  }
184
 
185
+ /* ===================================================== */
186
+ /* ============= NEW VERTICAL RESULTS UI ============== */
187
+ /* ===================================================== */
188
+
189
  .results {
190
  margin-top: 40px;
 
191
  }
192
 
193
  .results-header {
 
204
  }
205
 
206
  .results-badge {
207
+ padding: 6px 14px;
208
+ border-radius: 999px;
209
+ font-size: 0.7rem;
210
  font-weight: 600;
211
  text-transform: uppercase;
212
  letter-spacing: 0.06em;
 
222
  color: var(--accent-light);
223
  }
224
 
225
+ /* ===== Audience Stack ===== */
226
+
227
+ .audience-stack {
228
  display: flex;
229
+ flex-direction: column;
230
  gap: 20px;
 
 
 
 
 
231
  }
232
 
233
+ .audience-card {
234
+ background: var(--surface);
235
+ border: 1px solid var(--border);
236
+ border-radius: var(--radius);
237
+ overflow: hidden;
238
+ transition: all 0.25s ease;
239
  }
240
 
241
+ .audience-card.open {
242
+ border-color: var(--accent-dark);
243
+ box-shadow: 0 10px 30px rgba(0,0,0,0.4);
244
  }
245
 
246
+ .audience-card-header {
247
+ display: flex;
248
+ justify-content: space-between;
249
+ align-items: center;
250
+ padding: 18px 22px;
251
+ cursor: pointer;
252
+ transition: background 0.2s ease;
253
  }
254
 
255
+ .audience-card-header:hover {
256
+ background: var(--surface-hover);
 
257
  }
258
 
259
+ .audience-header-left {
260
  display: flex;
261
  align-items: center;
262
  gap: 10px;
 
 
 
263
  }
264
 
265
+ .audience-chevron {
266
+ transition: transform 0.25s ease;
267
+ color: var(--text-muted);
268
  }
269
 
270
+ .audience-card.open .audience-chevron {
271
+ transform: rotate(180deg);
272
+ }
273
+
274
+ .audience-card-body {
275
+ max-height: 0;
276
  overflow: hidden;
277
+ transition: max-height 0.35s ease, padding 0.3s ease;
278
+ padding: 0 22px;
279
+ }
280
+
281
+ .audience-card.open .audience-card-body {
282
+ max-height: 2000px;
283
+ padding: 0 22px 20px;
284
  }
285
 
286
+ /* ===== Nested Trigger ===== */
287
+
288
  .trigger-card {
289
+ margin-top: 14px;
290
  border: 1px solid var(--border);
291
+ border-radius: 10px;
292
+ background: rgba(255,255,255,0.02);
 
293
  overflow: hidden;
294
+ transition: all 0.25s ease;
295
  }
296
 
297
+ .trigger-card.open {
298
+ border-color: var(--accent);
 
 
 
 
 
 
 
 
 
 
 
299
  }
300
 
 
301
  .trigger-header {
302
  display: flex;
 
303
  justify-content: space-between;
304
+ align-items: center;
305
+ padding: 14px 16px;
306
  cursor: pointer;
 
 
307
  }
308
 
309
  .trigger-header:hover {
310
  background: var(--surface-hover);
311
  }
312
 
313
+ .trigger-label {
314
+ font-size: 0.7rem;
315
+ text-transform: uppercase;
316
+ color: var(--accent);
317
+ font-weight: 600;
318
+ display: block;
319
+ margin-bottom: 4px;
320
+ }
321
+
322
+ .trigger-name {
323
+ font-size: 1rem;
324
+ font-weight: 600;
325
  }
326
 
327
  .trigger-chevron {
 
 
328
  transition: transform 0.25s ease;
329
+ color: var(--text-muted);
330
  }
331
 
 
332
  .trigger-card.open .trigger-chevron {
333
  transform: rotate(180deg);
334
  }
335
 
 
 
 
 
 
 
336
  .trigger-body {
337
  max-height: 0;
338
  overflow: hidden;
339
  transition: max-height 0.3s ease, padding 0.3s ease;
340
+ padding: 0 16px;
341
  }
342
 
343
  .trigger-card.open .trigger-body {
344
+ max-height: 1000px;
345
+ padding: 10px 16px 16px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  }
347
 
348
  .trigger-section {
349
  margin-bottom: 16px;
350
  }
351
 
 
 
 
 
 
 
 
 
352
  .section-title {
353
  font-size: 0.75rem;
 
354
  text-transform: uppercase;
 
355
  color: var(--text-muted);
356
  margin-bottom: 8px;
357
+ font-weight: 600;
358
  }
359
 
360
  .section-list {
 
363
 
364
  .section-list li {
365
  position: relative;
366
+ padding: 6px 0 6px 18px;
367
  font-size: 0.9rem;
 
 
368
  border-bottom: 1px solid rgba(42, 42, 56, 0.5);
369
  }
370
 
 
376
  content: "";
377
  position: absolute;
378
  left: 0;
379
+ top: 12px;
380
  width: 6px;
381
  height: 6px;
382
  border-radius: 50%;
383
  background: var(--accent);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
384
  }