Samfredoly commited on
Commit
1b145bd
·
verified ·
1 Parent(s): dd094ce

Create style.css

Browse files
Files changed (1) hide show
  1. style.css +654 -0
style.css ADDED
@@ -0,0 +1,654 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ============================================================================
2
+ International Typographic Style - Swiss Design System
3
+ ============================================================================ */
4
+
5
+ :root {
6
+ /* Colors */
7
+ --color-white: #ffffff;
8
+ --color-black: #000000;
9
+ --color-red: #e63946;
10
+ --color-gray-light: #f5f5f5;
11
+ --color-gray-medium: #e0e0e0;
12
+ --color-gray-dark: #333333;
13
+ --color-success: #2d6a4f;
14
+ --color-warning: #f77f00;
15
+ --color-error: #d62828;
16
+
17
+ /* Typography */
18
+ --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", sans-serif;
19
+ --font-size-base: 14px;
20
+ --font-size-small: 12px;
21
+ --font-size-large: 16px;
22
+ --font-size-xl: 20px;
23
+ --font-size-2xl: 28px;
24
+ --font-size-3xl: 36px;
25
+ --line-height-base: 1.6;
26
+ --line-height-tight: 1.2;
27
+
28
+ /* Spacing (8px grid) */
29
+ --spacing-xs: 4px;
30
+ --spacing-sm: 8px;
31
+ --spacing-md: 16px;
32
+ --spacing-lg: 24px;
33
+ --spacing-xl: 32px;
34
+ --spacing-2xl: 48px;
35
+ --spacing-3xl: 64px;
36
+
37
+ /* Borders */
38
+ --border-width: 1px;
39
+ --border-color: var(--color-black);
40
+
41
+ /* Shadows */
42
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
43
+ --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.1);
44
+ --shadow-lg: 0 4px 8px rgba(0, 0, 0, 0.15);
45
+
46
+ /* Transitions */
47
+ --transition-fast: 150ms ease-in-out;
48
+ --transition-base: 300ms ease-in-out;
49
+ }
50
+
51
+ /* ============================================================================
52
+ Reset & Base Styles
53
+ ============================================================================ */
54
+
55
+ * {
56
+ margin: 0;
57
+ padding: 0;
58
+ box-sizing: border-box;
59
+ }
60
+
61
+ html {
62
+ font-size: 16px;
63
+ -webkit-font-smoothing: antialiased;
64
+ -moz-osx-font-smoothing: grayscale;
65
+ }
66
+
67
+ body {
68
+ font-family: var(--font-family);
69
+ font-size: var(--font-size-base);
70
+ line-height: var(--line-height-base);
71
+ color: var(--color-black);
72
+ background-color: var(--color-white);
73
+ }
74
+
75
+ /* ============================================================================
76
+ Header & Navigation
77
+ ============================================================================ */
78
+
79
+ .header {
80
+ background-color: var(--color-white);
81
+ border-bottom: var(--border-width) solid var(--border-color);
82
+ position: sticky;
83
+ top: 0;
84
+ z-index: 100;
85
+ }
86
+
87
+ .header-content {
88
+ max-width: 1400px;
89
+ margin: 0 auto;
90
+ padding: var(--spacing-lg) var(--spacing-md);
91
+ display: flex;
92
+ justify-content: space-between;
93
+ align-items: center;
94
+ }
95
+
96
+ .logo {
97
+ font-size: var(--font-size-2xl);
98
+ font-weight: 700;
99
+ letter-spacing: -0.02em;
100
+ text-transform: uppercase;
101
+ }
102
+
103
+ .nav {
104
+ display: flex;
105
+ gap: var(--spacing-xl);
106
+ }
107
+
108
+ .nav-link {
109
+ font-size: var(--font-size-base);
110
+ text-decoration: none;
111
+ color: var(--color-black);
112
+ border-bottom: 2px solid transparent;
113
+ padding-bottom: var(--spacing-xs);
114
+ transition: border-color var(--transition-fast);
115
+ cursor: pointer;
116
+ }
117
+
118
+ .nav-link:hover {
119
+ border-bottom-color: var(--color-black);
120
+ }
121
+
122
+ .nav-link.active {
123
+ border-bottom-color: var(--color-red);
124
+ color: var(--color-red);
125
+ }
126
+
127
+ /* ============================================================================
128
+ Main Container & Layout
129
+ ============================================================================ */
130
+
131
+ .container {
132
+ display: flex;
133
+ flex-direction: column;
134
+ min-height: 100vh;
135
+ }
136
+
137
+ .main {
138
+ flex: 1;
139
+ max-width: 1400px;
140
+ width: 100%;
141
+ margin: 0 auto;
142
+ padding: var(--spacing-2xl) var(--spacing-md);
143
+ }
144
+
145
+ /* ============================================================================
146
+ Sections
147
+ ============================================================================ */
148
+
149
+ .section {
150
+ display: none;
151
+ animation: fadeIn var(--transition-base);
152
+ }
153
+
154
+ .section.active {
155
+ display: block;
156
+ }
157
+
158
+ @keyframes fadeIn {
159
+ from {
160
+ opacity: 0;
161
+ }
162
+ to {
163
+ opacity: 1;
164
+ }
165
+ }
166
+
167
+ .section-header {
168
+ margin-bottom: var(--spacing-2xl);
169
+ }
170
+
171
+ .section-header h2 {
172
+ font-size: var(--font-size-3xl);
173
+ font-weight: 700;
174
+ letter-spacing: -0.02em;
175
+ margin-bottom: var(--spacing-md);
176
+ }
177
+
178
+ .divider-line {
179
+ width: 64px;
180
+ height: 2px;
181
+ background-color: var(--color-red);
182
+ margin-bottom: var(--spacing-lg);
183
+ }
184
+
185
+ /* ============================================================================
186
+ Statistics Grid
187
+ ============================================================================ */
188
+
189
+ .stats-grid {
190
+ display: grid;
191
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
192
+ gap: var(--spacing-lg);
193
+ margin-bottom: var(--spacing-2xl);
194
+ }
195
+
196
+ .stat-card {
197
+ padding: var(--spacing-lg);
198
+ border: var(--border-width) solid var(--border-color);
199
+ background-color: var(--color-white);
200
+ display: flex;
201
+ flex-direction: column;
202
+ align-items: flex-start;
203
+ transition: all var(--transition-base);
204
+ }
205
+
206
+ .stat-card:hover {
207
+ box-shadow: var(--shadow-md);
208
+ }
209
+
210
+ .stat-value {
211
+ font-size: var(--font-size-3xl);
212
+ font-weight: 700;
213
+ color: var(--color-red);
214
+ line-height: var(--line-height-tight);
215
+ margin-bottom: var(--spacing-sm);
216
+ }
217
+
218
+ .stat-label {
219
+ font-size: var(--font-size-small);
220
+ text-transform: uppercase;
221
+ letter-spacing: 0.1em;
222
+ color: var(--color-gray-dark);
223
+ }
224
+
225
+ /* ============================================================================
226
+ Cards
227
+ ============================================================================ */
228
+
229
+ .card {
230
+ padding: var(--spacing-lg);
231
+ border: var(--border-width) solid var(--border-color);
232
+ background-color: var(--color-white);
233
+ margin-bottom: var(--spacing-lg);
234
+ }
235
+
236
+ .card h3 {
237
+ font-size: var(--font-size-xl);
238
+ font-weight: 700;
239
+ margin-bottom: var(--spacing-md);
240
+ letter-spacing: -0.01em;
241
+ }
242
+
243
+ .status-content {
244
+ margin-bottom: var(--spacing-lg);
245
+ }
246
+
247
+ .status-row {
248
+ display: flex;
249
+ justify-content: space-between;
250
+ align-items: center;
251
+ padding: var(--spacing-md) 0;
252
+ border-bottom: var(--border-width) solid var(--color-gray-medium);
253
+ }
254
+
255
+ .status-row:last-child {
256
+ border-bottom: none;
257
+ }
258
+
259
+ .status-label {
260
+ font-weight: 600;
261
+ color: var(--color-gray-dark);
262
+ min-width: 150px;
263
+ }
264
+
265
+ .status-value {
266
+ color: var(--color-black);
267
+ font-weight: 500;
268
+ }
269
+
270
+ /* ============================================================================
271
+ Progress Bar
272
+ ============================================================================ */
273
+
274
+ .progress-bar {
275
+ flex: 1;
276
+ height: 8px;
277
+ background-color: var(--color-gray-light);
278
+ border: var(--border-width) solid var(--border-color);
279
+ margin: 0 var(--spacing-md);
280
+ overflow: hidden;
281
+ }
282
+
283
+ .progress-fill {
284
+ height: 100%;
285
+ background-color: var(--color-red);
286
+ transition: width var(--transition-base);
287
+ }
288
+
289
+ /* ============================================================================
290
+ Forms
291
+ ============================================================================ */
292
+
293
+ .config-form {
294
+ max-width: 600px;
295
+ }
296
+
297
+ .form-group {
298
+ margin-bottom: var(--spacing-lg);
299
+ }
300
+
301
+ .form-row {
302
+ display: grid;
303
+ grid-template-columns: 1fr 1fr;
304
+ gap: var(--spacing-lg);
305
+ }
306
+
307
+ label {
308
+ display: block;
309
+ font-weight: 600;
310
+ margin-bottom: var(--spacing-sm);
311
+ font-size: var(--font-size-base);
312
+ }
313
+
314
+ .form-input,
315
+ .filter-select {
316
+ width: 100%;
317
+ padding: var(--spacing-md);
318
+ border: var(--border-width) solid var(--border-color);
319
+ background-color: var(--color-white);
320
+ font-family: var(--font-family);
321
+ font-size: var(--font-size-base);
322
+ transition: all var(--transition-fast);
323
+ }
324
+
325
+ .form-input:focus,
326
+ .filter-select:focus {
327
+ outline: none;
328
+ border-color: var(--color-red);
329
+ box-shadow: 0 0 0 2px rgba(230, 57, 70, 0.1);
330
+ }
331
+
332
+ /* ============================================================================
333
+ Buttons
334
+ ============================================================================ */
335
+
336
+ .btn {
337
+ padding: var(--spacing-md) var(--spacing-lg);
338
+ border: var(--border-width) solid var(--border-color);
339
+ background-color: var(--color-white);
340
+ color: var(--color-black);
341
+ font-family: var(--font-family);
342
+ font-size: var(--font-size-base);
343
+ font-weight: 600;
344
+ cursor: pointer;
345
+ transition: all var(--transition-fast);
346
+ text-transform: uppercase;
347
+ letter-spacing: 0.05em;
348
+ }
349
+
350
+ .btn:hover {
351
+ box-shadow: var(--shadow-md);
352
+ }
353
+
354
+ .btn:active {
355
+ transform: scale(0.98);
356
+ }
357
+
358
+ .btn-primary {
359
+ background-color: var(--color-red);
360
+ color: var(--color-white);
361
+ border-color: var(--color-red);
362
+ }
363
+
364
+ .btn-primary:hover {
365
+ background-color: #d62828;
366
+ border-color: #d62828;
367
+ }
368
+
369
+ .btn-secondary {
370
+ background-color: var(--color-white);
371
+ color: var(--color-black);
372
+ border-color: var(--color-black);
373
+ }
374
+
375
+ .btn-secondary:hover {
376
+ background-color: var(--color-gray-light);
377
+ }
378
+
379
+ .btn:disabled {
380
+ opacity: 0.5;
381
+ cursor: not-allowed;
382
+ }
383
+
384
+ /* ============================================================================
385
+ Tables
386
+ ============================================================================ */
387
+
388
+ .queue-controls,
389
+ .logs-controls {
390
+ display: flex;
391
+ gap: var(--spacing-md);
392
+ margin-bottom: var(--spacing-lg);
393
+ align-items: center;
394
+ }
395
+
396
+ .filter-select {
397
+ flex: 1;
398
+ max-width: 200px;
399
+ }
400
+
401
+ .queue-table,
402
+ .logs-table {
403
+ border: var(--border-width) solid var(--border-color);
404
+ overflow-x: auto;
405
+ }
406
+
407
+ table {
408
+ width: 100%;
409
+ border-collapse: collapse;
410
+ background-color: var(--color-white);
411
+ }
412
+
413
+ thead {
414
+ background-color: var(--color-gray-light);
415
+ border-bottom: var(--border-width) solid var(--border-color);
416
+ }
417
+
418
+ th {
419
+ padding: var(--spacing-md);
420
+ text-align: left;
421
+ font-weight: 700;
422
+ font-size: var(--font-size-small);
423
+ text-transform: uppercase;
424
+ letter-spacing: 0.05em;
425
+ color: var(--color-gray-dark);
426
+ }
427
+
428
+ td {
429
+ padding: var(--spacing-md);
430
+ border-bottom: var(--border-width) solid var(--color-gray-medium);
431
+ font-size: var(--font-size-base);
432
+ }
433
+
434
+ tbody tr:hover {
435
+ background-color: var(--color-gray-light);
436
+ }
437
+
438
+ .empty-row td {
439
+ text-align: center;
440
+ color: var(--color-gray-dark);
441
+ padding: var(--spacing-xl);
442
+ }
443
+
444
+ .status-badge {
445
+ display: inline-block;
446
+ padding: var(--spacing-xs) var(--spacing-sm);
447
+ border-radius: 2px;
448
+ font-size: var(--font-size-small);
449
+ font-weight: 600;
450
+ text-transform: uppercase;
451
+ letter-spacing: 0.05em;
452
+ }
453
+
454
+ .status-pending {
455
+ background-color: #fff3cd;
456
+ color: #856404;
457
+ border: var(--border-width) solid #ffc107;
458
+ }
459
+
460
+ .status-uploading {
461
+ background-color: #cfe2ff;
462
+ color: #084298;
463
+ border: var(--border-width) solid #0d6efd;
464
+ }
465
+
466
+ .status-completed {
467
+ background-color: #d1e7dd;
468
+ color: #0f5132;
469
+ border: var(--border-width) solid #198754;
470
+ }
471
+
472
+ .status-failed {
473
+ background-color: #f8d7da;
474
+ color: #842029;
475
+ border: var(--border-width) solid #f5c2c7;
476
+ }
477
+
478
+ /* ============================================================================
479
+ Toast Notifications
480
+ ============================================================================ */
481
+
482
+ .toast {
483
+ position: fixed;
484
+ bottom: var(--spacing-lg);
485
+ right: var(--spacing-lg);
486
+ padding: var(--spacing-md) var(--spacing-lg);
487
+ background-color: var(--color-black);
488
+ color: var(--color-white);
489
+ border-radius: 2px;
490
+ box-shadow: var(--shadow-lg);
491
+ opacity: 0;
492
+ transform: translateY(20px);
493
+ transition: all var(--transition-base);
494
+ pointer-events: none;
495
+ max-width: 400px;
496
+ z-index: 1000;
497
+ }
498
+
499
+ .toast.show {
500
+ opacity: 1;
501
+ transform: translateY(0);
502
+ pointer-events: auto;
503
+ }
504
+
505
+ .toast.success {
506
+ background-color: var(--color-success);
507
+ }
508
+
509
+ .toast.error {
510
+ background-color: var(--color-error);
511
+ }
512
+
513
+ .toast.warning {
514
+ background-color: var(--color-warning);
515
+ }
516
+
517
+ /* ============================================================================
518
+ Modal
519
+ ============================================================================ */
520
+
521
+ .modal {
522
+ display: none;
523
+ position: fixed;
524
+ top: 0;
525
+ left: 0;
526
+ width: 100%;
527
+ height: 100%;
528
+ background-color: rgba(0, 0, 0, 0.5);
529
+ z-index: 999;
530
+ justify-content: center;
531
+ align-items: center;
532
+ }
533
+
534
+ .modal.show {
535
+ display: flex;
536
+ }
537
+
538
+ .modal-content {
539
+ background-color: var(--color-white);
540
+ padding: var(--spacing-lg);
541
+ max-width: 800px;
542
+ max-height: 80vh;
543
+ overflow-y: auto;
544
+ border: var(--border-width) solid var(--border-color);
545
+ position: relative;
546
+ }
547
+
548
+ .modal-content h2 {
549
+ font-size: var(--font-size-2xl);
550
+ margin-bottom: var(--spacing-lg);
551
+ }
552
+
553
+ .modal-close {
554
+ position: absolute;
555
+ top: var(--spacing-md);
556
+ right: var(--spacing-md);
557
+ background: none;
558
+ border: none;
559
+ font-size: var(--font-size-2xl);
560
+ cursor: pointer;
561
+ color: var(--color-black);
562
+ padding: 0;
563
+ width: 32px;
564
+ height: 32px;
565
+ display: flex;
566
+ align-items: center;
567
+ justify-content: center;
568
+ }
569
+
570
+ .modal-close:hover {
571
+ color: var(--color-red);
572
+ }
573
+
574
+ .preview-content {
575
+ background-color: var(--color-gray-light);
576
+ padding: var(--spacing-lg);
577
+ border: var(--border-width) solid var(--border-color);
578
+ max-height: 500px;
579
+ overflow-y: auto;
580
+ font-family: "Courier New", monospace;
581
+ font-size: var(--font-size-small);
582
+ white-space: pre-wrap;
583
+ word-break: break-all;
584
+ }
585
+
586
+ /* ============================================================================
587
+ Responsive Design
588
+ ============================================================================ */
589
+
590
+ @media (max-width: 768px) {
591
+ .header-content {
592
+ flex-direction: column;
593
+ gap: var(--spacing-lg);
594
+ }
595
+
596
+ .nav {
597
+ flex-wrap: wrap;
598
+ gap: var(--spacing-md);
599
+ }
600
+
601
+ .main {
602
+ padding: var(--spacing-lg) var(--spacing-md);
603
+ }
604
+
605
+ .stats-grid {
606
+ grid-template-columns: 1fr 1fr;
607
+ }
608
+
609
+ .form-row {
610
+ grid-template-columns: 1fr;
611
+ }
612
+
613
+ .queue-table,
614
+ .logs-table {
615
+ font-size: var(--font-size-small);
616
+ }
617
+
618
+ th,
619
+ td {
620
+ padding: var(--spacing-sm);
621
+ }
622
+
623
+ .section-header h2 {
624
+ font-size: var(--font-size-2xl);
625
+ }
626
+
627
+ .modal-content {
628
+ max-width: 90vw;
629
+ max-height: 90vh;
630
+ }
631
+ }
632
+
633
+ @media (max-width: 480px) {
634
+ .stats-grid {
635
+ grid-template-columns: 1fr;
636
+ }
637
+
638
+ .queue-controls {
639
+ flex-direction: column;
640
+ align-items: stretch;
641
+ }
642
+
643
+ .filter-select {
644
+ max-width: none;
645
+ }
646
+
647
+ .nav {
648
+ gap: var(--spacing-sm);
649
+ }
650
+
651
+ .nav-link {
652
+ font-size: var(--font-size-small);
653
+ }
654
+ }