eubottura commited on
Commit
9dc3818
·
verified ·
1 Parent(s): c6cee82

Manual changes saved

Browse files
Files changed (1) hide show
  1. style.css +203 -1085
style.css CHANGED
@@ -1,1102 +1,220 @@
1
  :root {
2
- --primary: #1e3a8a;
3
- --secondary: #3b82f6;
4
- --accent: #f59e0b;
5
- --dark: #0f172a;
6
- --darker: #020617;
7
- --light: #f8fafc;
8
- --gray: #64748b;
9
- --success: #10b981;
10
- --warning: #f59e0b;
11
- --danger: #ef4444;
12
- --radius: 12px;
13
- --shadow: 0 20px 25px -5px rgba(0, 0,0, 0.1), 0 10px 10px -5px rgba(0, 0,0, 0.04);
14
- --precision-green: #00ff88;
15
- --error-red: #ff3366;
16
- --group-blue: #3b82f6;
17
- --flow-purple: #8b5cf6;
18
- --audio-orange: #f97316;
19
- --whisper-blue: #06b6d4;
20
- }
21
-
22
- * {
23
- margin: 0;
24
- padding: 0;
25
- box-sizing: border-box;
26
- }
27
-
28
- body {
29
- font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
30
- background: linear-gradient(135deg, var(--darker) 0%, var(--dark) 50%, var(--primary) 100%);
31
- color: var(--light);
32
- min-height: 100vh;
33
- overflow-x: hidden;
34
- }
35
-
36
- .header {
37
- background: rgba(15, 23, 42, 0.95);
38
- backdrop-filter: blur(20px);
39
- padding: 1rem 0;
40
- border-bottom: 2px solid var(--precision-green);
41
- position: sticky;
42
- top: 0;
43
- z-index: 1000;
44
- box-shadow: 0 4px 20px rgba(0, 255, 136, 0.1);
45
- }
46
-
47
- .header-content {
48
- max-width: 1600px;
49
- margin: 0 auto;
50
- padding: 0 2rem;
51
- display: flex;
52
- justify-content: space-between;
53
- align-items: center;
54
- }
55
-
56
- .logo {
57
- display: flex;
58
- align-items: center;
59
- gap: 1rem;
60
- font-size: 1.8rem;
61
- font-weight: 900;
62
- background: linear-gradient(135deg, var(--precision-green), var(--secondary));
63
- -webkit-background-clip: text;
64
- -webkit-text-fill-color: transparent;
65
- background-clip: text;
66
- text-shadow: 0 0 30px rgba(0, 255, 136, 0.3);
67
- }
68
-
69
- .precision-indicator {
70
- display: flex;
71
- align-items: center;
72
- gap: 0.5rem;
73
- padding: 0.5rem 1rem;
74
- background: rgba(0, 255, 136, 0.1);
75
- border: 1px solid var(--precision-green);
76
- border-radius: 20px;
77
- font-size: 0.9rem;
78
- font-weight: 600;
79
- color: var(--precision-green);
80
- animation: pulse 2s infinite;
81
- }
82
-
83
- @keyframes pulse {
84
- 0%, 100% { opacity: 1; }
85
- 50% { opacity: 0.7; }
86
- }
87
-
88
- .main-container {
89
- max-width: 1600px;
90
- margin: 0 auto;
91
- padding: 2rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  }
93
 
94
  .upload-grid {
95
- display: grid;
96
- grid-template-columns: repeat(4, 1fr);
97
- gap: 2rem;
98
- margin-bottom: 3rem;
99
- }
100
-
101
- .upload-card {
102
- background: rgba(15, 23, 42, 0.9);
103
- backdrop-filter: blur(20px);
104
- border-radius: var(--radius);
105
- padding: 2rem;
106
- border: 1px solid rgba(59, 130, 246, 0.2);
107
- box-shadow: var(--shadow);
108
- transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
109
- }
110
-
111
- .upload-card:hover {
112
- transform: translateY(-5px);
113
- border-color: var(--precision-green);
114
- box-shadow: 0 25px 50px -12px rgba(0, 255, 136, 0.2);
115
- }
116
-
117
- .upload-card.audio-card {
118
- border-color: rgba(249, 115, 22, 0.3);
119
- }
120
-
121
- .upload-card.audio-card:hover {
122
- border-color: var(--audio-orange);
123
- box-shadow: 0 25px 50px -12px rgba(249, 115, 22, 0.3);
124
- }
125
-
126
- .section-title {
127
- font-size: 1.5rem;
128
- font-weight: 800;
129
- margin-bottom: 1.5rem;
130
- display: flex;
131
- align-items: center;
132
- gap: 0.8rem;
133
- }
134
-
135
- .precision-badge {
136
- background: var(--precision-green);
137
- color: var(--dark);
138
- padding: 0.2rem 0.6rem;
139
- border-radius: 12px;
140
- font-size: 0.7rem;
141
- font-weight: 700;
142
- text-transform: uppercase;
143
- letter-spacing: 0.5px;
144
- }
145
-
146
- .audio-badge {
147
- background: var(--audio-orange);
148
- color: var(--dark);
149
- padding: 0.2rem 0.6rem;
150
- border-radius: 12px;
151
- font-size: 0.7rem;
152
- font-weight: 700;
153
- text-transform: uppercase;
154
- letter-spacing: 0.5px;
155
- }
156
-
157
- .upload-zone {
158
- border: 3px dashed rgba(0, 255, 136, 0.3);
159
- border-radius: var(--radius);
160
- padding: 3rem 2rem;
161
- text-align: center;
162
- cursor: pointer;
163
- transition: all 0.3s ease;
164
- position: relative;
165
- overflow: hidden;
166
- background: rgba(0, 255, 136, 0.02);
167
- }
168
-
169
- .upload-zone.audio-zone {
170
- border-color: rgba(249, 115, 22, 0.3);
171
- background: rgba(249, 115, 22, 0.02);
172
- }
173
-
174
- .upload-zone:hover {
175
- border-color: var(--precision-green);
176
- background: rgba(0, 255, 136, 0.05);
177
- }
178
-
179
- .upload-zone.audio-zone:hover {
180
- border-color: var(--audio-orange);
181
- background: rgba(249, 115, 22, 0.05);
182
- }
183
-
184
- .upload-zone.dragover {
185
- border-color: var(--accent);
186
- background: rgba(245, 158, 11, 0.1);
187
- transform: scale(1.02);
188
- }
189
-
190
- .upload-icon {
191
- font-size: 3.5rem;
192
- color: var(--precision-green);
193
- margin-bottom: 1.5rem;
194
- animation: float 3s ease-in-out infinite;
195
- }
196
-
197
- .upload-icon.audio-icon {
198
- color: var(--audio-orange);
199
- }
200
-
201
- @keyframes float {
202
- 0%, 100% { transform: translateY(0); }
203
- 50% { transform: translateY(-10px); }
204
- }
205
-
206
- .file-list {
207
- margin-top: 1.5rem;
208
- max-height: 200px;
209
- overflow-y: auto;
210
- }
211
-
212
- .file-item {
213
- display: flex;
214
- justify-content: space-between;
215
- align-items: center;
216
- padding: 1rem;
217
- background: rgba(0, 255, 136, 0.05);
218
- border-radius: 8px;
219
- margin-bottom: 0.8rem;
220
- transition: all 0.3s ease;
221
- border: 1px solid transparent;
222
- }
223
-
224
- .file-item.audio-file {
225
- background: rgba(249, 115, 22, 0.05);
226
- }
227
-
228
- .file-item:hover {
229
- background: rgba(0, 255, 136, 0.1);
230
- border-color: var(--precision-green);
231
- transform: translateX(5px);
232
- }
233
-
234
- .file-item.audio-file:hover {
235
- background: rgba(249, 115, 22, 0.1);
236
- border-color: var(--audio-orange);
237
- }
238
-
239
- .file-info {
240
- display: flex;
241
- align-items: center;
242
- gap: 1rem;
243
- }
244
-
245
- .file-status {
246
- width: 8px;
247
- height: 8px;
248
- border-radius: 50%;
249
- background: var(--success);
250
- animation: blink 2s infinite;
251
- }
252
-
253
- .file-status.processing {
254
- background: var(--warning);
255
- animation: none;
256
- }
257
-
258
- .file-status.completed {
259
- background: var(--precision-green);
260
- }
261
-
262
- @keyframes blink {
263
- 0%, 100% { opacity: 1; }
264
- 50% { opacity: 0.5; }
265
- }
266
-
267
- .file-remove {
268
- background: none;
269
- border: none;
270
- color: var(--gray);
271
- cursor: pointer;
272
- padding: 0.5rem;
273
- border-radius: 4px;
274
- transition: all 0.3s ease;
275
- }
276
-
277
- .file-remove:hover {
278
- color: var(--danger);
279
- background: rgba(239, 68, 68, 0.1);
280
- }
281
-
282
- .control-panel {
283
- background: rgba(15, 23, 42, 0.9);
284
- backdrop-filter: blur(20px);
285
- border-radius: var(--radius);
286
- padding: 2rem;
287
- margin-bottom: 2rem;
288
- border: 1px solid rgba(59, 130, 246, 0.2);
289
- }
290
-
291
- .info-banner {
292
- background: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(139, 92, 246, 0.1));
293
- border: 1px solid var(--flow-purple);
294
- border-radius: var(--radius);
295
- padding: 1.5rem;
296
- margin-bottom: 2rem;
297
- }
298
-
299
- .info-banner.audio-banner {
300
- background: linear-gradient(135deg, rgba(249, 115, 22, 0.1), rgba(6, 182, 212, 0.1));
301
- border: 1px solid var(--whisper-blue);
302
- }
303
-
304
- .info-banner h3 {
305
- color: var(--flow-purple);
306
- margin-bottom: 0.5rem;
307
- display: flex;
308
- align-items: center;
309
- gap: 0.5rem;
310
- }
311
-
312
- .info-banner.audio-banner h3 {
313
- color: var(--whisper-blue);
314
- }
315
-
316
- .info-banner p {
317
- color: var(--gray);
318
- line-height: 1.6;
319
  }
320
 
321
  .audience-selector {
322
- display: grid;
323
- grid-template-columns: 1fr 1fr;
324
- gap: 1rem;
325
- margin-bottom: 2rem;
326
- }
327
-
328
- .audience-option {
329
- padding: 1.5rem;
330
- background: rgba(59, 130, 246, 0.05);
331
- border: 2px solid transparent;
332
- border-radius: var(--radius);
333
- cursor: pointer;
334
- transition: all 0.3s ease;
335
- }
336
-
337
- .audience-option:hover {
338
- background: rgba(59, 130, 246, 0.1);
339
- border-color: var(--secondary);
340
- }
341
-
342
- .audience-option.selected {
343
- background: rgba(0, 255, 136, 0.1);
344
- border-color: var(--precision-green);
345
- }
346
-
347
- .audience-title {
348
- font-weight: 700;
349
- font-size: 1.1rem;
350
- margin-bottom: 0.5rem;
351
- display: flex;
352
- align-items: center;
353
- gap: 0.5rem;
354
- }
355
-
356
- .audience-desc {
357
- font-size: 0.9rem;
358
- color: var(--gray);
359
- }
360
-
361
- .analyze-btn {
362
- width: 100%;
363
- background: linear-gradient(135deg, var(--precision-green), var(--secondary));
364
- color: var(--dark);
365
- border: none;
366
- padding: 1.5rem 2rem;
367
- font-size: 1.2rem;
368
- font-weight: 800;
369
- border-radius: var(--radius);
370
- cursor: pointer;
371
- transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
372
- position: relative;
373
- overflow: hidden;
374
- text-transform: uppercase;
375
- letter-spacing: 1px;
376
- display: flex;
377
- align-items: center;
378
- justify-content: center;
379
- gap: 0.5rem;
380
- }
381
-
382
- .analyze-btn:hover:not(:disabled) {
383
- transform: translateY(-3px);
384
- box-shadow: 0 20px 40px rgba(0, 255, 136, 0.4);
385
- }
386
-
387
- .analyze-btn:disabled {
388
- opacity: 0.5;
389
- cursor: not-allowed;
390
  }
391
 
392
- .loading-section {
393
- display: none;
394
- text-align: center;
395
- padding: 3rem;
396
- background: rgba(15, 23, 42, 0.9);
397
- border-radius: var(--radius);
398
- margin-bottom: 2rem;
399
- }
400
-
401
- .loading-section.active {
402
- display: block;
403
- }
404
-
405
- .analysis-progress {
406
- margin: 2rem 0;
407
- }
408
-
409
- .progress-bar {
410
- width: 100%;
411
- height: 8px;
412
- background: rgba(59, 130, 246, 0.1);
413
- border-radius: 4px;
414
- overflow: hidden;
415
- margin-bottom: 1rem;
416
- }
417
-
418
- .progress-fill {
419
- height: 100%;
420
- background: linear-gradient(90deg, var(--precision-green), var(--secondary));
421
- border-radius: 4px;
422
- transition: width 0.5s ease;
423
- box-shadow: 0 0 10px rgba(0, 255, 136, 0.5);
424
- }
425
-
426
- .analysis-steps {
427
- display: grid;
428
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
429
- gap: 1rem;
430
- margin-top: 2rem;
431
- }
432
-
433
- .step-card {
434
- padding: 1rem;
435
- background: rgba(59, 130, 246, 0.05);
436
- border-radius: 8px;
437
- border: 1px solid transparent;
438
- transition: all 0.3s ease;
439
- text-align: center;
440
- }
441
-
442
- .step-card.active {
443
- border-color: var(--precision-green);
444
- background: rgba(0, 255, 136, 0.1);
445
- }
446
-
447
- .step-card.completed {
448
- border-color: var(--success);
449
- background: rgba(16, 185, 129, 0.1);
450
- }
451
-
452
- .results-section {
453
- display: none;
454
- background: rgba(15, 23, 42, 0.95);
455
- backdrop-filter: blur(30px);
456
- border-radius: var(--radius);
457
- padding: 3rem;
458
- border: 2px solid var(--precision-green);
459
- box-shadow: 0 0 50px rgba(0, 255, 136, 0.1);
460
- }
461
-
462
- .results-section.active {
463
- display: block;
464
- animation: slideIn 0.6s cubic-bezier(0.4, 0, 0.2, 1);
465
- }
466
-
467
- @keyframes slideIn {
468
- from {
469
- opacity: 0;
470
- transform: translateY(30px);
471
- }
472
- to {
473
- opacity: 1;
474
- transform: translateY(0);
475
- }
476
  }
477
 
478
  .stats-grid {
479
- display: grid;
480
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
481
- gap: 1.5rem;
482
- margin: 2rem 0;
483
- }
484
-
485
- .stat-card {
486
- background: rgba(0, 255, 136, 0.05);
487
- padding: 1.5rem;
488
- border-radius: var(--radius);
489
- text-align: center;
490
- border: 1px solid rgba(0, 255, 136, 0.2);
491
- transition: all 0.3s ease;
492
- }
493
-
494
- .stat-card:hover {
495
- transform: translateY(-5px);
496
- box-shadow: 0 10px 30px rgba(0, 255, 136, 0.2);
497
- }
498
-
499
- .stat-number {
500
- font-size: 2.5rem;
501
- font-weight: 900;
502
- background: linear-gradient(135deg, var(--precision-green), var(--secondary));
503
- -webkit-background-clip: text;
504
- -webkit-text-fill-color: transparent;
505
- background-clip: text;
506
- }
507
-
508
- .stat-label {
509
- font-size: 0.9rem;
510
- color: var(--gray);
511
- margin-top: 0.5rem;
512
- text-transform: uppercase;
513
- letter-spacing: 0.5px;
514
- }
515
-
516
- .timeline-container {
517
- background: rgba(0, 255, 136, 0.02);
518
- border-radius: var(--radius);
519
- padding: 2rem;
520
- margin: 2rem 0;
521
- border: 1px solid rgba(0, 255, 136, 0.2);
522
- }
523
-
524
- .timeline-header {
525
- display: flex;
526
- justify-content: space-between;
527
- align-items: center;
528
- margin-bottom: 1.5rem;
529
- }
530
-
531
- .timeline-ruler {
532
- height: 60px;
533
- background: linear-gradient(90deg, var(--dark), var(--primary));
534
- border-radius: 8px;
535
- position: relative;
536
- margin-bottom: 2rem;
537
- overflow: hidden;
538
- }
539
-
540
- .timeline-takes {
541
- position: relative;
542
- min-height: 120px;
543
- }
544
-
545
- .timeline-take {
546
- position: absolute;
547
- height: 40px;
548
- background: linear-gradient(135deg, var(--precision-green), var(--secondary));
549
- border-radius: 6px;
550
- display: flex;
551
- align-items: center;
552
- padding: 0 1rem;
553
- color: var(--dark);
554
- font-weight: 600;
555
- font-size: 0.85rem;
556
- cursor: pointer;
557
- transition: all 0.3s ease;
558
- box-shadow: 0 4px 12px rgba(0, 255, 136, 0.3);
559
- }
560
-
561
- .timeline-take:hover {
562
- transform: scale(1.05);
563
- z-index: 10;
564
- box-shadow: 0 8px 20px rgba(0, 255, 136, 0.5);
565
- }
566
-
567
- .timeline-take.audio-track {
568
- background: linear-gradient(135deg, var(--audio-orange), var(--whisper-blue));
569
- height: 30px;
570
- font-size: 0.8rem;
571
- }
572
-
573
- .timeline-take.grouped {
574
- background: linear-gradient(135deg, var(--flow-purple), var(--group-blue));
575
- height: 50px;
576
- font-weight: 700;
577
- }
578
-
579
- .timeline-take.missing {
580
- background: linear-gradient(135deg, var(--error-red), var(--warning));
581
- opacity: 0.7;
582
- }
583
-
584
- .blocks-container {
585
- margin-top: 3rem;
586
- }
587
-
588
- .script-group {
589
- background: rgba(59, 130, 246, 0.05);
590
- border-radius: var(--radius);
591
- margin-bottom: 2rem;
592
- overflow: hidden;
593
- border: 1px solid rgba(59, 130, 246, 0.2);
594
- transition: all 0.3s ease;
595
- }
596
-
597
- .script-group:hover {
598
- border-color: var(--flow-purple);
599
- box-shadow: 0 10px 30px rgba(139, 92, 246, 0.2);
600
- }
601
-
602
- .group-header {
603
- background: linear-gradient(135deg, rgba(139, 92, 246, 0.1), rgba(59, 130, 246, 0.1));
604
- padding: 1.5rem;
605
- border-bottom: 1px solid rgba(59, 130, 246, 0.2);
606
- display: flex;
607
- justify-content: space-between;
608
- align-items: center;
609
- }
610
-
611
- .group-info {
612
- display: flex;
613
- align-items: center;
614
- gap: 1rem;
615
- }
616
-
617
- .group-badge {
618
- background: var(--flow-purple);
619
- color: var(--light);
620
- padding: 0.5rem 1rem;
621
- border-radius: 20px;
622
- font-weight: 700;
623
- font-size: 0.9rem;
624
- }
625
-
626
- .group-single .group-badge {
627
- background: var(--precision-green);
628
- }
629
-
630
- .flow-score {
631
- display: flex;
632
- align-items: center;
633
- gap: 0.5rem;
634
- padding: 0.5rem 1rem;
635
- background: rgba(0, 255, 136, 0.1);
636
- border-radius: 20px;
637
- font-weight: 600;
638
- color: var(--precision-green);
639
- }
640
-
641
- .script-block {
642
- padding: 2rem;
643
- border-left: 5px solid var(--precision-green);
644
- transition: all 0.3s ease;
645
- }
646
-
647
- .script-block:not(:last-child) {
648
- border-bottom: 1px solid rgba(59, 130, 246, 0.1);
649
- }
650
-
651
- .script-block:hover {
652
- background: rgba(0, 255, 136, 0.02);
653
- transform: translateX(5px);
654
- }
655
-
656
- .script-block.missing-take {
657
- border-left-color: var(--error-red);
658
- background: rgba(239, 68, 68, 0.05);
659
- }
660
-
661
- .block-header {
662
- display: flex;
663
- justify-content: space-between;
664
- align-items: flex-start;
665
- margin-bottom: 1.5rem;
666
- }
667
-
668
- .block-number {
669
- background: var(--precision-green);
670
- color: var(--dark);
671
- padding: 0.3rem 0.8rem;
672
- border-radius: 20px;
673
- font-weight: 700;
674
- font-size: 0.85rem;
675
- }
676
-
677
- .script-block.missing-take .block-number {
678
- background: var(--error-red);
679
- }
680
-
681
- .precision-score {
682
- display: flex;
683
- align-items: center;
684
- gap: 0.5rem;
685
- padding: 0.3rem 0.8rem;
686
- background: rgba(0, 255, 136, 0.1);
687
- border-radius: 20px;
688
- font-weight: 600;
689
- color: var(--precision-green);
690
- font-size: 0.85rem;
691
- }
692
-
693
- .script-text {
694
- font-size: 1.1rem;
695
- line-height: 1.7;
696
- margin-bottom: 1.5rem;
697
- background: rgba(255, 255, 255, 0.03);
698
- padding: 1.5rem;
699
- border-radius: 8px;
700
- border-left: 4px solid var(--secondary);
701
- }
702
-
703
- .script-block.missing-take .script-text {
704
- border-left-color: var(--error-red);
705
- }
706
-
707
- .audio-waveform {
708
- background: rgba(0, 0, 0, 0.3);
709
- border-radius: var(--radius);
710
- padding: 1rem;
711
- margin: 1rem 0;
712
- height: 60px;
713
- position: relative;
714
- overflow: hidden;
715
- }
716
-
717
- .waveform-bars {
718
- display: flex;
719
- align-items: flex-end;
720
- height: 100%;
721
- gap: 2px;
722
- }
723
-
724
- .waveform-bar {
725
- flex: 1;
726
- background: var(--audio-orange);
727
- border-radius: 2px 2px 0 0;
728
- transition: height 0.3s ease;
729
- }
730
-
731
- .take-selection {
732
- display: grid;
733
- grid-template-columns: 1fr 2fr;
734
- gap: 2rem;
735
- margin-top: 2rem;
736
- }
737
-
738
- .take-video-container {
739
- background: rgba(0, 0, 0, 0.3);
740
- border-radius: var(--radius);
741
- overflow: hidden;
742
- position: relative;
743
- }
744
-
745
- .take-video {
746
- width: 100%;
747
- height: 200px;
748
- object-fit: cover;
749
- }
750
-
751
- .take-overlay {
752
- position: absolute;
753
- top: 1rem;
754
- right: 1rem;
755
- background: rgba(0, 255, 136, 0.9);
756
- color: var(--dark);
757
- padding: 0.3rem 0.8rem;
758
- border-radius: 20px;
759
- font-weight: 700;
760
- font-size: 0.85rem;
761
- }
762
-
763
- .take-details {
764
- background: rgba(0, 255, 136, 0.05);
765
- border-radius: var(--radius);
766
- padding: 1.5rem;
767
- border: 1px solid rgba(0, 255, 136, 0.2);
768
- }
769
-
770
- .take-metrics {
771
- display: grid;
772
  grid-template-columns: repeat(2, 1fr);
773
- gap: 1rem;
774
- margin-top: 1rem;
775
- }
776
-
777
- .metric-item {
778
- display: flex;
779
- justify-content: space-between;
780
- padding: 0.5rem;
781
- background: rgba(59, 130, 246, 0.05);
782
- border-radius: 6px;
783
- font-size: 0.9rem;
784
- }
785
-
786
- .metric-label {
787
- color: var(--gray);
788
- }
789
-
790
- .metric-value {
791
- font-weight: 700;
792
- color: var(--precision-green);
793
- }
794
-
795
- .export-section {
796
- margin-top: 3rem;
797
- padding: 2rem;
798
- background: rgba(0, 255, 136, 0.05);
799
- border-radius: var(--radius);
800
- border: 2px dashed var(--precision-green);
801
- }
802
-
803
- .export-buttons {
804
- display: grid;
805
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
806
- gap: 1rem;
807
- margin-top: 1.5rem;
808
  }
809
 
810
- .export-btn {
811
- background: linear-gradient(135deg, var(--dark), var(--primary));
812
- color: var(--light);
813
- border: 1px solid var(--precision-green);
814
- padding: 1rem 2rem;
815
- border-radius: var(--radius);
816
- cursor: pointer;
817
- font-weight: 600;
818
- transition: all 0.3s ease;
819
- display: flex;
820
- align-items: center;
821
- justify-content: center;
822
- gap: 0.5rem;
823
- }
824
-
825
- .export-btn:hover {
826
- background: linear-gradient(135deg, var(--primary), var(--precision-green));
827
- color: var(--dark);
828
- transform: translateY(-3px);
829
- box-shadow: 0 10px 30px rgba(0, 255, 136, 0.3);
830
- }
831
-
832
- .export-btn:disabled {
833
- opacity: 0.5;
834
- cursor: not-allowed;
835
- }
836
-
837
- .export-btn.audio-export {
838
- background: linear-gradient(135deg, var(--dark), var(--audio-orange));
839
- border-color: var(--whisper-blue);
840
- }
841
-
842
- .export-btn.audio-export:hover {
843
- background: linear-gradient(135deg, var(--audio-orange), var(--whisper-blue));
844
- color: var(--dark);
845
- }
846
-
847
- .precision-indicator-small {
848
- display: inline-flex;
849
- align-items: center;
850
- gap: 0.3rem;
851
- padding: 0.2rem 0.5rem;
852
- background: rgba(0, 255, 136, 0.1);
853
- border-radius: 12px;
854
- font-size: 0.8rem;
855
- font-weight: 600;
856
- color: var(--precision-green);
857
- }
858
-
859
- .audio-indicator-small {
860
- display: inline-flex;
861
- align-items: center;
862
- gap: 0.3rem;
863
- padding: 0.2rem 0.5rem;
864
- background: rgba(249, 115, 22, 0.1);
865
- border-radius: 12px;
866
- font-size: 0.8rem;
867
- font-weight: 600;
868
- color: var(--audio-orange);
869
- }
870
-
871
- .error-indicator {
872
- color: var(--error-red);
873
- }
874
-
875
- .warning-indicator {
876
- color: var(--warning);
877
- }
878
-
879
- .srt-preview {
880
- background: rgba(0, 255, 136, 0.05);
881
- border: 1px solid rgba(0, 255, 136, 0.2);
882
- border-radius: var(--radius);
883
- padding: 1rem;
884
- margin-top: 1rem;
885
- max-height: 200px;
886
- overflow-y: auto;
887
- font-family: monospace;
888
- font-size: 0.85rem;
889
- }
890
-
891
- .srt-preview h4 {
892
- margin-bottom: 0.5rem;
893
- color: var(--precision-green);
894
- display: flex;
895
- align-items: center;
896
- gap: 0.5rem;
897
- }
898
-
899
- .srt-block {
900
- margin-bottom: 0.5rem;
901
- padding: 0.5rem;
902
- background: rgba(59, 130, 246, 0.05);
903
- border-radius: 4px;
904
- border-left: 3px solid var(--secondary);
905
- }
906
-
907
- .whisper-status {
908
- background: linear-gradient(135deg, rgba(6, 182, 212, 0.1), rgba(249, 115, 22, 0.1));
909
- border: 1px solid var(--whisper-blue);
910
- border-radius: var(--radius);
911
- padding: 1.5rem;
912
- margin: 2rem 0;
913
- text-align: center;
914
- }
915
-
916
- .whisper-status h3 {
917
- color: var(--whisper-blue);
918
- margin-bottom: 1rem;
919
- display: flex;
920
- align-items: center;
921
- justify-content: center;
922
- gap: 0.5rem;
923
- }
924
-
925
- .whisper-metrics {
926
- display: grid;
927
- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
928
- gap: 1rem;
929
- margin-top: 1rem;
930
- }
931
-
932
- .whisper-metric {
933
- background: rgba(255, 255, 255, 0.05);
934
- padding: 1rem;
935
- border-radius: 8px;
936
- text-align: center;
937
- }
938
-
939
- .whisper-metric-value {
940
- font-size: 1.5rem;
941
- font-weight: 700;
942
- color: var(--whisper-blue);
943
- }
944
-
945
- .whisper-metric-label {
946
- font-size: 0.8rem;
947
- color: var(--gray);
948
- margin-top: 0.5rem;
949
- }
950
-
951
- .video-preview-modal {
952
- display: none;
953
- position: fixed;
954
- top: 0;
955
- left: 0;
956
- width: 100%;
957
- height: 100%;
958
- background: rgba(0, 0, 0, 0.9);
959
- z-index: 10000;
960
- padding: 2rem;
961
- }
962
-
963
- .video-preview-modal.active {
964
- display: flex;
965
- align-items: center;
966
- justify-content: center;
967
- }
968
-
969
- .preview-content {
970
- background: var(--dark);
971
- border-radius: var(--radius);
972
- padding: 2rem;
973
- max-width: 1200px;
974
- width: 100%;
975
- border: 2px solid var(--precision-green);
976
- }
977
-
978
- .preview-header {
979
- display: flex;
980
- justify-content: space-between;
981
- align-items: center;
982
- margin-bottom: 2rem;
983
- }
984
-
985
- .preview-header button {
986
- background: none;
987
- border: none;
988
- color: var(--light);
989
- font-size: 1.5rem;
990
- cursor: pointer;
991
- }
992
-
993
- .preview-video-container {
994
- background: #000;
995
- border-radius: var(--radius);
996
- overflow: hidden;
997
- margin-bottom: 2rem;
998
- position: relative;
999
- }
1000
-
1001
- .preview-video {
1002
- width: 100%;
1003
- max-height: 500px;
1004
- object-fit: contain;
1005
- }
1006
-
1007
- .preview-controls {
1008
- display: flex;
1009
- gap: 1rem;
1010
- justify-content: center;
1011
- flex-wrap: wrap;
1012
- }
1013
-
1014
- .export-progress {
1015
- display: none;
1016
- position: fixed;
1017
- top: 50%;
1018
- left: 50%;
1019
- transform: translate(-50%, -50%);
1020
- background: var(--dark);
1021
- border: 2px solid var(--precision-green);
1022
- border-radius: var(--radius);
1023
- padding: 2rem;
1024
- text-align: center;
1025
- z-index: 10001;
1026
- min-width: 300px;
1027
- }
1028
-
1029
- .export-progress.active {
1030
- display: block;
1031
- }
1032
-
1033
- .flow-indicator {
1034
- display: inline-flex;
1035
- align-items: center;
1036
- gap: 0.3rem;
1037
- padding: 0.2rem 0.5rem;
1038
- background: rgba(139, 92, 246, 0.1);
1039
- border-radius: 12px;
1040
- font-size: 0.8rem;
1041
- font-weight: 600;
1042
- color: var(--flow-purple);
1043
- }
1044
-
1045
- .transcription-status {
1046
- display: none;
1047
- background: rgba(6, 182, 212, 0.1);
1048
- border: 1px solid var(--whisper-blue);
1049
- border-radius: var(--radius);
1050
- padding: 1.5rem;
1051
- margin: 1rem 0;
1052
- text-align: center;
1053
- }
1054
-
1055
- .transcription-status.active {
1056
- display: block;
1057
- }
1058
-
1059
- .missing-take-warning {
1060
- background: rgba(239, 68, 68, 0.1);
1061
- border: 1px solid var(--error-red);
1062
- border-radius: var(--radius);
1063
- padding: 1.5rem;
1064
- margin-top: 1rem;
1065
- color: var(--error-red);
1066
- }
1067
-
1068
- .audio-sync-indicator {
1069
- display: inline-flex;
1070
- align-items: center;
1071
- gap: 0.5rem;
1072
- padding: 0.3rem 0.8rem;
1073
- background: rgba(249, 115, 22, 0.1);
1074
- border-radius: 20px;
1075
- font-weight: 600;
1076
- color: var(--audio-orange);
1077
- font-size: 0.85rem;
1078
- }
1079
-
1080
- @media (max-width: 1200px) {
1081
- .upload-grid {
1082
- grid-template-columns: repeat(2, 1fr);
1083
- }
1084
  }
1085
 
1086
- @media (max-width: 768px) {
1087
- .upload-grid {
1088
- grid-template-columns: 1fr;
1089
- }
1090
-
1091
- .audience-selector {
1092
- grid-template-columns: 1fr;
1093
- }
1094
-
1095
- .take-selection {
1096
- grid-template-columns: 1fr;
1097
- }
1098
-
1099
- .export-buttons {
1100
- grid-template-columns: 1fr;
1101
- }
1102
- }
 
1
  :root {
2
+ /* Apple-inspired color system */
3
+ --blue: #007AFF;
4
+ --blue-dark: #0051D5;
5
+ --gray-50: #F9FAFB;
6
+ --gray-100: #F3F4F6;
7
+ --gray-200: #E5E7EB;
8
+ --gray-300: #D1D5DB;
9
+ --gray-400: #9CA3AF;
10
+ --gray-500: #6B7280;
11
+ --gray-600: #4B5563;
12
+ --gray-700: #374151;
13
+ --gray-800: #1F2937;
14
+ --gray-900: #111827;
15
+ --green: #34D399;
16
+ --orange: #FB923C;
17
+ --red: #EF4444;
18
+ --purple: #A78BFA;
19
+ --white: #FFFFFF;
20
+ --black: #000000;
21
+
22
+ Copied /* Spacing scale (8px base) */
23
+ --space-1: 0.25rem;
24
+ --space-2: 0.5rem;
25
+ --space-3: 0.75rem;
26
+ --space-4: 1rem;
27
+ --space-5: 1.25rem;
28
+ --space-6: 1.5rem;
29
+ --space-8: 2rem;
30
+ --space-10: 2.5rem;
31
+ --space-12: 3rem;
32
+ --space-16: 4rem;
33
+ --space-20: 5rem;
34
+ --space-24: 6rem;
35
+
36
+ /* Border radius */
37
+ --radius-sm: 0.375rem;
38
+ --radius: 0.75rem;
39
+ --radius-lg: 1rem;
40
+ --radius-xl: 1.5rem;
41
+
42
+ /* Typography scale */
43
+ --text-xs: 0.75rem;
44
+ --text-sm: 0.875rem;
45
+ --text-base: 1rem;
46
+ --text-lg: 1.125rem;
47
+ --text-xl: 1.25rem;
48
+ --text-2xl: 1.5rem;
49
+ --text-3xl: 1.875rem;
50
+ --text-4xl: 2.25rem;
51
+
52
+ /* Shadows */
53
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
54
+ --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
55
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
56
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
57
+ --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25); }
58
+
59
+ { margin: 0; padding: 0; box-sizing: border-box;}
60
+
61
+ body { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", system-ui, sans-serif; background: var(--gray-50); color: var(--gray-900); line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}
62
+ /* Header */.header { background: rgba(255, 255, 255, 0.95); backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px); border-bottom: 1px solid var(--gray-200); position: sticky; top: 0; z-index: 1000;}
63
+ .header-content { max-width: 1200px; margin: 0 auto; padding: var(--space-4) var(--space-6); display: flex; justify-content: space-between; align-items: center;}
64
+ .logo { display: flex; align-items: center; gap: var(--space-3); font-size: var(--text-2xl); font-weight: 600; color: var(--gray-900);}
65
+ .precision-indicator { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-4); background: var(--gray-100); border-radius: var(--radius-xl); font-size: var(--text-sm); font-weight: 500; color: var(--gray-600);}
66
+ /* Main Container */.main-container { max-width: 1200px; margin: 0 auto; padding: var(--space-8) var(--space-6);}
67
+ /* Upload Grid */.upload-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-6); margin-bottom: var(--space-12);}
68
+ .upload-card { background: var(--white); border-radius: var(--radius-xl); padding: var(--space-6); box-shadow: var(--shadow); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);}
69
+ .upload-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg);}
70
+ .section-title { font-size: var(--text-xl); font-weight: 600; margin-bottom: var(--space-4); display: flex; align-items: center; gap: var(--space-2);}
71
+ .precision-badge,.audio-badge { background: var(--blue); color: var(--white); padding: var(--space-1) var(--space-3); border-radius: var(--radius-sm); font-size: var(--text-xs); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;}
72
+ .audio-badge { background: var(--orange);}
73
+ /* Upload Zone */.upload-zone { border: 2px dashed var(--gray-300); border-radius: var(--radius-lg); padding: var(--space-8) var(--space-6); text-align: center; cursor: pointer; transition: all 0.2s ease; background: var(--gray-50);}
74
+ .upload-zone:hover { border-color: var(--blue); background: rgba(0, 122, 255, 0.02);}
75
+ .upload-zone.dragover { border-color: var(--blue); background: rgba(0, 122, 255, 0.05); transform: scale(1.01);}
76
+ .upload-icon { font-size: var(--text-4xl); color: var(--gray-400); margin-bottom: var(--space-4);}
77
+ /* File List */.file-list { margin-top: var(--space-4); max-height: 200px; overflow-y: auto;}
78
+ .file-item { display: flex; justify-content: space-between; align-items: center; padding: var(--space-3) var(--space-4); background: var(--gray-50); border-radius: var(--radius); margin-bottom: var(--space-2); transition: all 0.2s ease;}
79
+ .file-item:hover { background: var(--gray-100);}
80
+ .file-info { display: flex; align-items: center; gap: var(--space-3);}
81
+ .file-status { width: 6px; height: 6px; border-radius: 50%; background: var(--green);}
82
+ .file-remove { background: none; border: none; color: var(--gray-400); cursor: pointer; padding: var(--space-2); border-radius: var(--radius-sm); transition: all 0.2s ease;}
83
+ .file-remove:hover { color: var(--red); background: rgba(239, 68, 68, 0.1);}
84
+ /* Control Panel */.control-panel { background: var(--white); border-radius: var(--radius-xl); padding: var(--space-8); margin-bottom: var(--space-8); box-shadow: var(--shadow);}
85
+ .info-banner { background: linear-gradient(135deg, var(--gray-50), var(--gray-100)); border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--space-6); margin-bottom: var(--space-6);}
86
+ .info-banner h3 { color: var(--gray-900); margin-bottom: var(--space-2); font-weight: 600; display: flex; align-items: center; gap: var(--space-2);}
87
+ .info-banner p { color: var(--gray-600); font-size: var(--text-sm);}
88
+ /* Audience Selector */.audience-selector { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--space-4); margin-bottom: var(--space-6);}
89
+ .audience-option { padding: var(--space-6); background: var(--gray-50); border: 2px solid transparent; border-radius: var(--radius-lg); cursor: pointer; transition: all 0.2s ease;}
90
+ .audience-option:hover { background: var(--gray-100); border-color: var(--gray-300);}
91
+ .audience-option.selected { background: rgba(0, 122, 255, 0.05); border-color: var(--blue);}
92
+ .audience-title { font-weight: 600; font-size: var(--text-lg); margin-bottom: var(--space-2); display: flex; align-items: center; gap: var(--space-2);}
93
+ .audience-desc { font-size: var(--text-sm); color: var(--gray-600);}
94
+ /* Analyze Button */.analyze-btn { width: 100%; background: var(--blue); color: var(--white); border: none; padding: var(--space-4) var(--space-6); font-size: var(--text-lg); font-weight: 600; border-radius: var(--radius-lg); cursor: pointer; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; gap: var(--space-2);}
95
+ .analyze-btn:hover:not(:disabled) { background: var(--blue-dark); transform: translateY(-1px); box-shadow: var(--shadow-lg);}
96
+ .analyze-btn:disabled { opacity: 0.6; cursor: not-allowed;}
97
+ /* Loading Section */.loading-section { display: none; text-align: center; padding: var(--space-12); background: var(--white); border-radius: var(--radius-xl); margin-bottom: var(--space-8); box-shadow: var(--shadow);}
98
+ .loading-section.active { display: block;}
99
+ .progress-bar { width: 100%; height: 4px; background: var(--gray-200); border-radius: var(--radius-sm); overflow: hidden; margin: var(--space-6) 0;}
100
+ .progress-fill { height: 100%; background: var(--blue); border-radius: var(--radius-sm); transition: width 0.3s ease;}
101
+ .analysis-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--space-4); margin-top: var(--space-6);}
102
+ .step-card { padding: var(--space-4); background: var(--gray-50); border-radius: var(--radius); border: 1px solid var(--gray-200); transition: all 0.2s ease; text-align: center;}
103
+ .step-card.active { border-color: var(--blue); background: rgba(0, 122, 255, 0.05);}
104
+ .step-card.completed { border-color: var(--green); background: rgba(52, 211, 153, 0.05);}
105
+ /* Results Section */.results-section { display: none; background: var(--white); border-radius: var(--radius-xl); padding: var(--space-8); box-shadow: var(--shadow-xl); border: 1px solid var(--gray-200);}
106
+ .results-section.active { display: block; animation: slideIn 0.4s cubic-bezier(0.4, 0, 0.2, 1);}
107
+ @keyframes slideIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); }}
108
+ /* Stats Grid */.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--space-4); margin: var(--space-6) 0;}
109
+ .stat-card { background: var(--gray-50); padding: var(--space-6); border-radius: var(--radius-lg); text-align: center; border: 1px solid var(--gray-200); transition: all 0.2s ease;}
110
+ .stat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow);}
111
+ .stat-number { font-size: var(--text-3xl); font-weight: 700; color: var(--blue);}
112
+ .stat-label { font-size: var(--text-sm); color: var(--gray-600); margin-top: var(--space-2); text-transform: uppercase; letter-spacing: 0.05em;}
113
+ /* Timeline */.timeline-container { background: var(--gray-50); border-radius: var(--radius-lg); padding: var(--space-6); margin: var(--space-6) 0; border: 1px solid var(--gray-200);}
114
+ .timeline-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-4);}
115
+ .timeline-ruler { height: 40px; background: linear-gradient(90deg, var(--gray-100), var(--gray-200)); border-radius: var(--radius); position: relative; margin-bottom: var(--space-6);}
116
+ .timeline-takes { position: relative; min-height: 100px;}
117
+ .timeline-take { position: absolute; height: 32px; background: var(--blue); border-radius: var(--radius-sm); display: flex; align-items: center; padding: 0 var(--space-3); color: var(--white); font-weight: 500; font-size: var(--text-xs); cursor: pointer; transition: all 0.2s ease;}
118
+ .timeline-take:hover { transform: scale(1.02); box-shadow: var(--shadow-md);}
119
+ .timeline-take.audio-track { background: var(--orange); height: 24px;}
120
+ .timeline-take.grouped { background: var(--purple); height: 40px;}
121
+ .timeline-take.missing { background: var(--red); opacity: 0.7;}
122
+ /* Script Blocks */.blocks-container { margin-top: var(--space-8);}
123
+ .script-group { background: var(--white); border-radius: var(--radius-xl); margin-bottom: var(--space-6); overflow: hidden; border: 1px solid var(--gray-200); transition: all 0.2s ease;}
124
+ .script-group:hover { box-shadow: var(--shadow);}
125
+ .group-header { background: var(--gray-50); padding: var(--space-4) var(--space-6); border-bottom: 1px solid var(--gray-200); display: flex; justify-content: space-between; align-items: center;}
126
+ .group-info { display: flex; align-items: center; gap: var(--space-3);}
127
+ .group-badge { background: var(--purple); color: var(--white); padding: var(--space-2) var(--space-4); border-radius: var(--radius-sm); font-weight: 600; font-size: var(--text-sm);}
128
+ .group-single .group-badge { background: var(--green);}
129
+ .flow-score { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-4); background: var(--gray-100); border-radius: var(--radius-xl); font-weight: 500; color: var(--gray-700);}
130
+ .script-block { padding: var(--space-6); border-left: 3px solid var(--blue); transition: all 0.2s ease;}
131
+ .script-block:not(:last-child) { border-bottom: 1px solid var(--gray-100);}
132
+ .script-block:hover { background: var(--gray-50);}
133
+ .script-block.missing-take { border-left-color: var(--red); background: rgba(239, 68, 68, 0.02);}
134
+ .block-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: var(--space-4);}
135
+ .block-number { background: var(--blue); color: var(--white); padding: var(--space-1) var(--space-3); border-radius: var(--radius-sm); font-weight: 600; font-size: var(--text-sm);}
136
+ .script-block.missing-take .block-number { background: var(--red);}
137
+ .precision-score { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-1) var(--space-3); background: var(--gray-100); border-radius: var(--radius-sm); font-weight: 500; color: var(--green); font-size: var(--text-sm);}
138
+ .script-text { font-size: var(--text-base); line-height: 1.7; margin-bottom: var(--space-4); background: var(--gray-50); padding: var(--space-4); border-radius: var(--radius); border-left: 3px solid var(--blue);}
139
+ .script-block.missing-take .script-text { border-left-color: var(--red);}
140
+ /* Audio Waveform */.audio-waveform { background: var(--gray-900); border-radius: var(--radius); padding: var(--space-3); margin: var(--space-4) 0; height: 48px; position: relative; overflow: hidden;}
141
+ .waveform-bars { display: flex; align-items: flex-end; height: 100%; gap: 1px;}
142
+ .waveform-bar { flex: 1; background: var(--orange); border-radius: 1px 1px 0 0; transition: height 0.2s ease;}
143
+ /* Take Selection */.take-selection { display: grid; grid-template-columns: 1fr 2fr; gap: var(--space-6); margin-top: var(--space-6);}
144
+ .take-video-container { background: var(--gray-900); border-radius: var(--radius-lg); overflow: hidden; position: relative;}
145
+ .take-video { width: 100%; height: 180px; object-fit: cover;}
146
+ .take-overlay { position: absolute; top: var(--space-3); right: var(--space-3); background: var(--green); color: var(--white); padding: var(--space-1) var(--space-3); border-radius: var(--radius-sm); font-weight: 600; font-size: var(--text-xs);}
147
+ .take-details { background: var(--gray-50); border-radius: var(--radius-lg); padding: var(--space-6);}
148
+ .take-metrics { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-3); margin-top: var(--space-4);}
149
+ .metric-item { display: flex; justify-content: space-between; padding: var(--space-3); background: var(--white); border-radius: var(--radius); font-size: var(--text-sm);}
150
+ .metric-label { color: var(--gray-600);}
151
+ .metric-value { font-weight: 600; color: var(--blue);}
152
+ /* Export Section */.export-section { margin-top: var(--space-8); padding: var(--space-6); background: var(--gray-50); border-radius: var(--radius-xl); border: 2px dashed var(--gray-300);}
153
+ .export-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-3); margin-top: var(--space-4);}
154
+ .export-btn { background: var(--white); color: var(--gray-900); border: 1px solid var(--gray-300); padding: var(--space-3) var(--space-4); border-radius: var(--radius-lg); cursor: pointer; font-weight: 500; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; gap: var(--space-2);}
155
+ .export-btn:hover { background: var(--gray-900); color: var(--white); border-color: var(--gray-900);}
156
+ .export-btn:disabled { opacity: 0.5; cursor: not-allowed;}
157
+ /* Small indicators */.precision-indicator-small { display: inline-flex; align-items: center; gap: var(--space-1); padding: var(--space-1) var(--space-2); background: var(--gray-100); border-radius: var(--radius-sm); font-size: var(--text-xs); font-weight: 500; color: var(--green);}
158
+ .audio-indicator-small { display: inline-flex; align-items: center; gap: var(--space-1); padding: var(--space-1) var(--space-2); background: var(--gray-100); border-radius: var(--radius-sm); font-size: var(--text-xs); font-weight: 500; color: var(--orange);}
159
+ /* SRT Preview */.srt-preview { background: var(--gray-50); border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--space-4); margin-top: var(--space-4); max-height: 200px; overflow-y: auto; font-family: 'SF Mono', Monaco, Consolas, monospace; font-size: var(--text-sm);}
160
+ .srt-preview h4 { margin-bottom: var(--space-3); color: var(--gray-900); font-weight: 600; display: flex; align-items: center; gap: var(--space-2);}
161
+ .srt-block { margin-bottom: var(--space-2); padding: var(--space-3); background: var(--white); border-radius: var(--radius); border-left: 3px solid var(--blue);}
162
+ /* Whisper Status */.whisper-status { background: linear-gradient(135deg, var(--gray-50), var(--gray-100)); border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--space-6); margin: var(--space-6) 0; text-align: center;}
163
+ .whisper-status h3 { color: var(--gray-900); margin-bottom: var(--space-4); font-weight: 600; display: flex; align-items: center; justify-content: center; gap: var(--space-2);}
164
+ .whisper-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: var(--space-3); margin-top: var(--space-4);}
165
+ .whisper-metric { background: var(--white); padding: var(--space-4); border-radius: var(--radius); text-align: center;}
166
+ .whisper-metric-value { font-size: var(--text-2xl); font-weight: 700; color: var(--blue);}
167
+ .whisper-metric-label { font-size: var(--text-xs); color: var(--gray-600); margin-top: var(--space-2); text-transform: uppercase; letter-spacing: 0.05em;}
168
+ /* Modals */.video-preview-modal,.export-progress { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); z-index: 10000;}
169
+ .video-preview-modal.active,.export-progress.active { display: flex; align-items: center; justify-content: center;}
170
+ .preview-content { background: var(--white); border-radius: var(--radius-xl); padding: var(--space-6); max-width: 1000px; width: 90%; max-height: 90vh; overflow-y: auto;}
171
+ .preview-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-6);}
172
+ .preview-header button { background: none; border: none; color: var(--gray-600); font-size: var(--text-xl); cursor: pointer; padding: var(--space-2);}
173
+ .preview-video-container { background: var(--gray-900); border-radius: var(--radius-lg); overflow: hidden; margin-bottom: var(--space-6);}
174
+ .preview-video { width: 100%; max-height: 400px; object-fit: contain;}
175
+ .preview-controls { display: flex; gap: var(--space-3); justify-content: center; flex-wrap: wrap;}
176
+ .export-progress { padding: var(--space-6); background: var(--white); border-radius: var(--radius-xl); min-width: 300px;}
177
+ /* Additional utility classes */.flow-indicator { display: inline-flex; align-items: center; gap: var(--space-1); padding: var(--space-1) var(--space-2); background: var(--gray-100); border-radius: var(--radius-sm); font-size: var(--text-xs); font-weight: 500; color: var(--purple);}
178
+ .transcription-status { display: none; background: var(--gray-50); border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--space-4); margin: var(--space-4) 0; text-align: center;}
179
+ .transcription-status.active { display: block;}
180
+ .missing-take-warning { background: rgba(239, 68, 68, 0.05); border: 1px solid var(--red); border-radius: var(--radius-lg); padding: var(--space-4); margin-top: var(--space-4); color: var(--red);}
181
+ .audio-sync-indicator { display: inline-flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); background: var(--gray-100); border-radius: var(--radius-xl); font-weight: 500; color: var(--orange); font-size: var(--text-sm);}
182
+ /* Error and warning states */.error-indicator { color: var(--red);}
183
+ .warning-indicator { color: var(--orange);}
184
+ /* Responsive Design */@media (max-width: 1024px) { .upload-grid { grid-template-columns: repeat(2, 1fr); }
185
+ Copied .take-selection {
186
+ grid-template-columns: 1fr;
187
+ } }
188
+ @media (max-width: 768px) { .header-content { padding: var(--space-3) var(--space-4); }
189
+ Copied .main-container {
190
+ padding: var(--space-6) var(--space-4);
191
  }
192
 
193
  .upload-grid {
194
+ grid-template-columns: 1fr;
195
+ gap: var(--space-4);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  }
197
 
198
  .audience-selector {
199
+ grid-template-columns: 1fr;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  }
201
 
202
+ .export-buttons {
203
+ grid-template-columns: 1fr;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  }
205
 
206
  .stats-grid {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207
  grid-template-columns: repeat(2, 1fr);
208
+ } }
209
+ @media (max-width: 480px) { .logo { font-size: var(--text-lg); }
210
+ Copied .section-title {
211
+ font-size: var(--text-lg);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  }
213
 
214
+ .stats-grid {
215
+ grid-template-columns: 1fr;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  }
217
 
218
+ .take-metrics {
219
+ grid-template-columns: 1fr;
220
+ } }