@stratametriq/id-card-designer 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css ADDED
@@ -0,0 +1,997 @@
1
+ /* react-id-card-designer universal styles */
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Roboto:wght@400;500;700&family=Outfit:wght@400;500;600;700&display=swap');
3
+
4
+ :root {
5
+ --ricd-primary: #3b82f6;
6
+ --ricd-primary-hover: #2563eb;
7
+ --ricd-bg: #0f172a;
8
+ --ricd-surface: #1e293b;
9
+ --ricd-surface-light: #334155;
10
+ --ricd-border: #475569;
11
+ --ricd-text: #f8fafc;
12
+ --ricd-text-muted: #94a3b8;
13
+ --ricd-radius: 0.75rem;
14
+ --ricd-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.3);
15
+ }
16
+
17
+ /* Modal Overlay & Wrapper */
18
+ .ricd-modal-overlay {
19
+ position: fixed;
20
+ inset: 0;
21
+ z-index: 9999;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ background-color: rgba(15, 23, 42, 0.85);
26
+ backdrop-filter: blur(8px);
27
+ animation: ricdFadeIn 0.2s ease-out;
28
+ padding: 1.5rem;
29
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
30
+ color: var(--ricd-text);
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ .ricd-modal-overlay * {
35
+ box-sizing: border-box;
36
+ }
37
+
38
+ @keyframes ricdFadeIn {
39
+ from { opacity: 0; }
40
+ to { opacity: 1; }
41
+ }
42
+
43
+ .ricd-modal-container {
44
+ width: 100%;
45
+ max-width: 1440px;
46
+ height: 92vh;
47
+ max-height: 880px;
48
+ background: var(--ricd-surface);
49
+ border: 1px solid var(--ricd-border);
50
+ border-radius: var(--ricd-radius);
51
+ box-shadow: var(--ricd-shadow);
52
+ display: flex;
53
+ flex-direction: column;
54
+ overflow: hidden;
55
+ }
56
+
57
+ /* =========================================================
58
+ * ENTERPRISE LIGHT THEME (Matches ERP Screenshot Exactly)
59
+ * ========================================================= */
60
+ .ricd-theme-enterprise {
61
+ background: #ffffff;
62
+ color: #212529;
63
+ border: 1px solid #ced4da;
64
+ box-shadow: 0 15px 35px rgba(0,0,0,0.2);
65
+ }
66
+
67
+ .ricd-theme-enterprise .ricd-modal-header {
68
+ background: #0d6efd;
69
+ border-bottom: 1px solid #0a58ca;
70
+ padding: 0.75rem 1.25rem;
71
+ }
72
+
73
+ .ricd-theme-enterprise .ricd-header-title {
74
+ color: #ffffff;
75
+ font-weight: 600;
76
+ font-size: 1.15rem;
77
+ }
78
+
79
+ .ricd-theme-enterprise .ricd-sidebar-left,
80
+ .ricd-theme-enterprise .ricd-sidebar-right {
81
+ background: #f8f9fa;
82
+ border-color: #dee2e6;
83
+ }
84
+
85
+ .ricd-theme-enterprise .ricd-sidebar-section {
86
+ border-bottom: 1px solid #e9ecef;
87
+ padding: 1rem 1.15rem;
88
+ }
89
+
90
+ .ricd-theme-enterprise .ricd-section-title {
91
+ color: #495057;
92
+ font-size: 0.8rem;
93
+ font-weight: 700;
94
+ text-transform: uppercase;
95
+ letter-spacing: 0.03em;
96
+ margin-bottom: 0.75rem;
97
+ }
98
+
99
+ .ricd-theme-enterprise .ricd-canvas-wrapper {
100
+ background-color: #e9ecef;
101
+ background-image: none;
102
+ }
103
+
104
+ .ricd-theme-enterprise .ricd-form-input,
105
+ .ricd-theme-enterprise .ricd-form-select {
106
+ background: #ffffff;
107
+ border: 1px solid #ced4da;
108
+ color: #212529;
109
+ }
110
+
111
+ .ricd-theme-enterprise .ricd-form-input:focus,
112
+ .ricd-theme-enterprise .ricd-form-select:focus {
113
+ border-color: #86b7fe;
114
+ outline: 0;
115
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
116
+ }
117
+
118
+ .ricd-theme-enterprise .ricd-color-input-wrapper {
119
+ background: #ffffff;
120
+ border: 1px solid #ced4da;
121
+ color: #212529;
122
+ }
123
+
124
+ .ricd-theme-enterprise .ricd-btn-secondary {
125
+ background: #6c757d;
126
+ color: #ffffff;
127
+ border-color: #6c757d;
128
+ }
129
+ .ricd-theme-enterprise .ricd-btn-secondary:hover {
130
+ background: #5c636a;
131
+ }
132
+
133
+ .ricd-theme-enterprise .ricd-btn-green {
134
+ background: #198754;
135
+ color: #ffffff;
136
+ border: 1px solid #187f4f;
137
+ }
138
+ .ricd-theme-enterprise .ricd-btn-green:hover {
139
+ background: #157347;
140
+ }
141
+
142
+ .ricd-theme-enterprise .ricd-btn-white {
143
+ background: #ffffff;
144
+ color: #0d6efd;
145
+ border: 1px solid #dee2e6;
146
+ font-weight: 600;
147
+ }
148
+ .ricd-theme-enterprise .ricd-btn-white:hover {
149
+ background: #f1f5f9;
150
+ }
151
+
152
+ .ricd-theme-enterprise .ricd-btn-close {
153
+ background: #ffffff;
154
+ color: #000000;
155
+ border: 1px solid #ced4da;
156
+ border-radius: 4px;
157
+ padding: 0.35rem 0.6rem;
158
+ font-weight: 700;
159
+ }
160
+ .ricd-theme-enterprise .ricd-btn-close:hover {
161
+ background: #e9ecef;
162
+ }
163
+
164
+ /* Enterprise Orientation Buttons */
165
+ .ricd-ent-orientation-btn {
166
+ padding: 0.5rem 0.75rem;
167
+ border-radius: 6px;
168
+ font-size: 0.825rem;
169
+ font-weight: 600;
170
+ cursor: pointer;
171
+ display: flex;
172
+ align-items: center;
173
+ justify-content: center;
174
+ gap: 0.375rem;
175
+ transition: all 0.15s ease;
176
+ border: 1px solid #0d6efd;
177
+ background: #ffffff;
178
+ color: #0d6efd;
179
+ }
180
+ .ricd-ent-orientation-btn.active {
181
+ background: #198754;
182
+ border-color: #198754;
183
+ color: #ffffff;
184
+ }
185
+
186
+ /* Enterprise Pill Buttons for Add Elements */
187
+ .ricd-ent-pill-grid {
188
+ display: grid;
189
+ grid-template-columns: 1fr 1fr;
190
+ gap: 0.5rem;
191
+ }
192
+ .ricd-ent-pill-btn {
193
+ display: flex;
194
+ align-items: center;
195
+ gap: 0.4rem;
196
+ padding: 0.45rem 0.6rem;
197
+ border: 1px solid #0d6efd;
198
+ background: #ffffff;
199
+ color: #0d6efd;
200
+ border-radius: 6px;
201
+ font-size: 0.76rem;
202
+ font-weight: 500;
203
+ cursor: pointer;
204
+ transition: all 0.15s ease;
205
+ overflow: hidden;
206
+ text-overflow: ellipsis;
207
+ white-space: nowrap;
208
+ }
209
+ .ricd-ent-pill-btn:hover {
210
+ background: #0d6efd;
211
+ color: #ffffff;
212
+ }
213
+
214
+ /* Selected Element Badge Box in Right Panel */
215
+ .ricd-ent-selected-badge {
216
+ display: flex;
217
+ align-items: center;
218
+ justify-content: space-between;
219
+ background: #e7f1ff;
220
+ border: 1px solid #b6d4fe;
221
+ padding: 0.5rem 0.75rem;
222
+ border-radius: 6px;
223
+ color: #0d6efd;
224
+ font-weight: 600;
225
+ font-size: 0.9rem;
226
+ margin-bottom: 1rem;
227
+ }
228
+
229
+ /* Bottom Action Bar inside Right Panel */
230
+ .ricd-ent-footer-bar {
231
+ padding: 1rem 1.15rem;
232
+ background: #f8f9fa;
233
+ border-top: 1px solid #dee2e6;
234
+ display: flex;
235
+ align-items: center;
236
+ justify-content: flex-end;
237
+ gap: 0.75rem;
238
+ margin-top: auto;
239
+ }
240
+
241
+ /* Header Toolbar Base */
242
+ .ricd-modal-header {
243
+ display: flex;
244
+ align-items: center;
245
+ justify-content: space-between;
246
+ padding: 0.875rem 1.5rem;
247
+ background: rgba(15, 23, 42, 0.6);
248
+ border-bottom: 1px solid var(--ricd-border);
249
+ flex-shrink: 0;
250
+ }
251
+
252
+ .ricd-header-title {
253
+ display: flex;
254
+ align-items: center;
255
+ gap: 0.75rem;
256
+ font-size: 1.125rem;
257
+ font-weight: 600;
258
+ color: #fff;
259
+ margin: 0;
260
+ }
261
+
262
+ .ricd-header-badge {
263
+ font-size: 0.75rem;
264
+ font-weight: 500;
265
+ padding: 0.25rem 0.6rem;
266
+ border-radius: 9999px;
267
+ background: rgba(59, 130, 246, 0.15);
268
+ color: #60a5fa;
269
+ border: 1px solid rgba(59, 130, 246, 0.3);
270
+ }
271
+
272
+ .ricd-toolbar-actions {
273
+ display: flex;
274
+ align-items: center;
275
+ gap: 0.75rem;
276
+ }
277
+
278
+ /* Buttons */
279
+ .ricd-btn {
280
+ display: inline-flex;
281
+ align-items: center;
282
+ justify-content: center;
283
+ gap: 0.5rem;
284
+ padding: 0.5rem 1rem;
285
+ font-size: 0.875rem;
286
+ font-weight: 500;
287
+ border-radius: 0.5rem;
288
+ border: 1px solid transparent;
289
+ cursor: pointer;
290
+ transition: all 0.15s ease;
291
+ font-family: inherit;
292
+ }
293
+
294
+ .ricd-btn-primary {
295
+ background: var(--ricd-primary);
296
+ color: #ffffff;
297
+ }
298
+ .ricd-btn-primary:hover {
299
+ background: var(--ricd-primary-hover);
300
+ box-shadow: 0 0 15px rgba(59, 130, 246, 0.4);
301
+ }
302
+
303
+ .ricd-btn-secondary {
304
+ background: var(--ricd-surface-light);
305
+ color: var(--ricd-text);
306
+ border-color: var(--ricd-border);
307
+ }
308
+ .ricd-btn-secondary:hover {
309
+ background: #475569;
310
+ }
311
+
312
+ .ricd-btn-danger {
313
+ background: rgba(239, 68, 68, 0.15);
314
+ color: #f87171;
315
+ border-color: rgba(239, 68, 68, 0.3);
316
+ }
317
+ .ricd-btn-danger:hover {
318
+ background: rgba(239, 68, 68, 0.25);
319
+ }
320
+
321
+ .ricd-btn-icon {
322
+ padding: 0.4rem;
323
+ border-radius: 0.375rem;
324
+ background: transparent;
325
+ color: var(--ricd-text-muted);
326
+ border: none;
327
+ cursor: pointer;
328
+ }
329
+ .ricd-btn-icon:hover {
330
+ background: var(--ricd-surface-light);
331
+ color: var(--ricd-text);
332
+ }
333
+
334
+ /* Modal Body Layout */
335
+ .ricd-modal-body {
336
+ display: flex;
337
+ flex: 1;
338
+ overflow: hidden;
339
+ }
340
+
341
+ /* Left Sidebar (Presets & Toolbox) */
342
+ .ricd-sidebar-left {
343
+ width: 320px;
344
+ background: rgba(15, 23, 42, 0.4);
345
+ border-right: 1px solid var(--ricd-border);
346
+ display: flex;
347
+ flex-direction: column;
348
+ overflow-y: auto;
349
+ flex-shrink: 0;
350
+ }
351
+
352
+ .ricd-sidebar-section {
353
+ padding: 1.25rem;
354
+ border-bottom: 1px solid rgba(71, 85, 105, 0.4);
355
+ }
356
+
357
+ .ricd-section-title {
358
+ font-size: 0.75rem;
359
+ font-weight: 600;
360
+ text-transform: uppercase;
361
+ letter-spacing: 0.05em;
362
+ color: var(--ricd-text-muted);
363
+ margin-bottom: 0.75rem;
364
+ }
365
+
366
+ .ricd-orientation-switcher {
367
+ display: grid;
368
+ grid-template-columns: 1fr 1fr;
369
+ gap: 0.5rem;
370
+ background: rgba(15, 23, 42, 0.6);
371
+ padding: 0.25rem;
372
+ border-radius: 0.5rem;
373
+ border: 1px solid var(--ricd-border);
374
+ }
375
+
376
+ .ricd-orientation-tab {
377
+ padding: 0.5rem;
378
+ font-size: 0.8rem;
379
+ font-weight: 500;
380
+ text-align: center;
381
+ border-radius: 0.375rem;
382
+ cursor: pointer;
383
+ transition: all 0.15s ease;
384
+ color: var(--ricd-text-muted);
385
+ background: transparent;
386
+ border: none;
387
+ display: flex;
388
+ align-items: center;
389
+ justify-content: center;
390
+ gap: 0.375rem;
391
+ }
392
+
393
+ .ricd-orientation-tab.active {
394
+ background: var(--ricd-primary);
395
+ color: #fff;
396
+ box-shadow: 0 2px 4px rgba(0,0,0,0.2);
397
+ }
398
+
399
+ .ricd-presets-grid {
400
+ display: grid;
401
+ grid-template-columns: 1fr;
402
+ gap: 0.75rem;
403
+ }
404
+
405
+ .ricd-preset-card {
406
+ padding: 0.75rem;
407
+ background: var(--ricd-surface);
408
+ border: 1px solid var(--ricd-border);
409
+ border-radius: 0.5rem;
410
+ cursor: pointer;
411
+ transition: all 0.15s ease;
412
+ display: flex;
413
+ align-items: center;
414
+ justify-content: space-between;
415
+ }
416
+ .ricd-preset-card:hover {
417
+ border-color: #60a5fa;
418
+ background: var(--ricd-surface-light);
419
+ transform: translateY(-1px);
420
+ }
421
+
422
+ .ricd-toolbox-grid {
423
+ display: grid;
424
+ grid-template-columns: 1fr 1fr;
425
+ gap: 0.5rem;
426
+ }
427
+
428
+ .ricd-toolbox-item {
429
+ display: flex;
430
+ flex-direction: column;
431
+ align-items: center;
432
+ justify-content: center;
433
+ gap: 0.375rem;
434
+ padding: 0.75rem 0.5rem;
435
+ background: var(--ricd-surface);
436
+ border: 1px solid var(--ricd-border);
437
+ border-radius: 0.5rem;
438
+ cursor: pointer;
439
+ font-size: 0.75rem;
440
+ color: var(--ricd-text);
441
+ transition: all 0.15s ease;
442
+ }
443
+ .ricd-toolbox-item:hover {
444
+ border-color: #60a5fa;
445
+ background: rgba(59, 130, 246, 0.1);
446
+ color: #60a5fa;
447
+ }
448
+
449
+ /* Center Canvas Area */
450
+ .ricd-canvas-wrapper {
451
+ flex: 1;
452
+ background-color: #0b1120;
453
+ background-image:
454
+ radial-gradient(circle at 50% 50%, rgba(30, 41, 59, 0.4) 0%, transparent 80%),
455
+ linear-gradient(to right, rgba(71, 85, 105, 0.1) 1px, transparent 1px),
456
+ linear-gradient(to bottom, rgba(71, 85, 105, 0.1) 1px, transparent 1px);
457
+ background-size: 100% 100%, 20px 20px, 20px 20px;
458
+ display: flex;
459
+ flex-direction: column;
460
+ align-items: center;
461
+ justify-content: center;
462
+ position: relative;
463
+ overflow: auto;
464
+ padding: 2rem;
465
+ }
466
+
467
+ .ricd-canvas-controls {
468
+ position: absolute;
469
+ top: 1rem;
470
+ display: flex;
471
+ align-items: center;
472
+ gap: 0.5rem;
473
+ background: var(--ricd-surface);
474
+ padding: 0.375rem 0.75rem;
475
+ border-radius: 9999px;
476
+ border: 1px solid var(--ricd-border);
477
+ box-shadow: 0 4px 12px rgba(0,0,0,0.3);
478
+ z-index: 10;
479
+ }
480
+
481
+ .ricd-canvas-container {
482
+ position: relative;
483
+ background: #ffffff;
484
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.7);
485
+ transition: width 0.3s ease, height 0.3s ease;
486
+ overflow: hidden;
487
+ user-select: none;
488
+ }
489
+
490
+ .ricd-canvas-grid-overlay {
491
+ position: absolute;
492
+ inset: 0;
493
+ pointer-events: none;
494
+ background-image:
495
+ linear-gradient(to right, rgba(0,0,0,0.06) 1px, transparent 1px),
496
+ linear-gradient(to bottom, rgba(0,0,0,0.06) 1px, transparent 1px);
497
+ background-size: 10px 10px;
498
+ z-index: 1;
499
+ }
500
+
501
+ /* Canvas Elements */
502
+ .ricd-canvas-element {
503
+ position: absolute;
504
+ cursor: move;
505
+ box-sizing: border-box;
506
+ display: flex;
507
+ align-items: center;
508
+ overflow: hidden;
509
+ transition: border-color 0.1s ease;
510
+ }
511
+
512
+ .ricd-canvas-element.selected {
513
+ outline: 2px dashed #3b82f6 !important;
514
+ outline-offset: 1px;
515
+ }
516
+
517
+ .ricd-element-handle {
518
+ position: absolute;
519
+ width: 8px;
520
+ height: 8px;
521
+ background: #3b82f6;
522
+ border: 1px solid #fff;
523
+ border-radius: 50%;
524
+ bottom: -4px;
525
+ right: -4px;
526
+ cursor: se-resize;
527
+ z-index: 99;
528
+ }
529
+
530
+ /* Right Sidebar (Property Inspector) */
531
+ .ricd-sidebar-right {
532
+ width: 350px;
533
+ background: rgba(15, 23, 42, 0.4);
534
+ border-left: 1px solid var(--ricd-border);
535
+ display: flex;
536
+ flex-direction: column;
537
+ overflow-y: auto;
538
+ flex-shrink: 0;
539
+ }
540
+
541
+ .ricd-form-group {
542
+ margin-bottom: 1rem;
543
+ }
544
+
545
+ .ricd-form-label {
546
+ display: block;
547
+ font-size: 0.75rem;
548
+ font-weight: 500;
549
+ color: var(--ricd-text-muted);
550
+ margin-bottom: 0.375rem;
551
+ }
552
+
553
+ .ricd-form-input, .ricd-form-select {
554
+ width: 100%;
555
+ padding: 0.5rem 0.75rem;
556
+ background: rgba(15, 23, 42, 0.8);
557
+ border: 1px solid var(--ricd-border);
558
+ border-radius: 0.375rem;
559
+ color: #fff;
560
+ font-size: 0.85rem;
561
+ outline: none;
562
+ transition: border-color 0.15s ease;
563
+ }
564
+ .ricd-form-input:focus, .ricd-form-select:focus {
565
+ border-color: #3b82f6;
566
+ }
567
+
568
+ .ricd-grid-2 {
569
+ display: grid;
570
+ grid-template-columns: 1fr 1fr;
571
+ gap: 0.75rem;
572
+ }
573
+
574
+ .ricd-grid-3 {
575
+ display: grid;
576
+ grid-template-columns: 1fr 1fr 1fr;
577
+ gap: 0.5rem;
578
+ }
579
+
580
+ .ricd-grid-4 {
581
+ display: grid;
582
+ grid-template-columns: 1fr 1fr 1fr 1fr;
583
+ gap: 0.4rem;
584
+ }
585
+
586
+ .ricd-color-input-wrapper {
587
+ display: flex;
588
+ align-items: center;
589
+ gap: 0.5rem;
590
+ background: rgba(15, 23, 42, 0.8);
591
+ border: 1px solid var(--ricd-border);
592
+ border-radius: 0.375rem;
593
+ padding: 0.25rem 0.5rem;
594
+ }
595
+
596
+ .ricd-color-picker {
597
+ width: 24px;
598
+ height: 24px;
599
+ border: none;
600
+ background: transparent;
601
+ cursor: pointer;
602
+ padding: 0;
603
+ }
604
+
605
+ /* Preview Card Wrapper */
606
+ .ricd-preview-card {
607
+ position: relative;
608
+ background: #ffffff;
609
+ overflow: hidden;
610
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
611
+ user-select: none;
612
+ display: block;
613
+ }
614
+
615
+ .ricd-preview-element {
616
+ position: absolute;
617
+ box-sizing: border-box;
618
+ display: flex;
619
+ align-items: center;
620
+ overflow: hidden;
621
+ }
622
+
623
+ /* ==========================================
624
+ TURNKEY DASHBOARD & STUDIO UI (<IdCardManager />)
625
+ ========================================== */
626
+ .pg-app-wrapper {
627
+ display: flex;
628
+ min-height: 100vh;
629
+ background-color: #0b0f19;
630
+ background-image:
631
+ radial-gradient(circle at 50% 0%, rgba(30, 58, 138, 0.25) 0%, transparent 60%),
632
+ radial-gradient(circle at 85% 30%, rgba(14, 165, 233, 0.1) 0%, transparent 50%),
633
+ radial-gradient(circle at 15% 80%, rgba(124, 58, 237, 0.1) 0%, transparent 50%);
634
+ color: #f8fafc;
635
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
636
+ }
637
+
638
+ /* Left Navigation Sidebar (Removed - Unified Full Width Layout) */
639
+ .pg-main-content {
640
+ flex: 1;
641
+ width: 100%;
642
+ padding: 1.5rem 2.25rem 4rem;
643
+ max-width: 1460px;
644
+ margin: 0 auto;
645
+ min-width: 0;
646
+ }
647
+
648
+ /* Master Header Row */
649
+ .pg-master-header {
650
+ display: flex;
651
+ align-items: center;
652
+ justify-content: space-between;
653
+ flex-wrap: wrap;
654
+ gap: 1.25rem;
655
+ padding: 1.25rem 1.75rem;
656
+ background: linear-gradient(135deg, rgba(30, 41, 59, 0.9) 0%, rgba(15, 23, 42, 0.95) 100%);
657
+ backdrop-filter: blur(16px);
658
+ border: 1px solid rgba(59, 130, 246, 0.35);
659
+ border-radius: 16px;
660
+ margin-bottom: 2rem;
661
+ box-shadow: 0 15px 35px -10px rgba(0, 0, 0, 0.6), inset 0 1px 0 0 rgba(255, 255, 255, 0.1);
662
+ }
663
+
664
+ .pg-header-left {
665
+ display: flex;
666
+ align-items: center;
667
+ gap: 1rem;
668
+ flex: 1;
669
+ min-width: 300px;
670
+ }
671
+
672
+ .pg-logo {
673
+ width: 48px;
674
+ height: 48px;
675
+ border-radius: 12px;
676
+ background: linear-gradient(135deg, #3b82f6, #06b6d4);
677
+ display: flex;
678
+ align-items: center;
679
+ justify-content: center;
680
+ font-weight: 700;
681
+ color: #fff;
682
+ box-shadow: 0 0 18px rgba(59, 130, 246, 0.45);
683
+ flex-shrink: 0;
684
+ }
685
+
686
+ .pg-title {
687
+ font-size: 1.35rem;
688
+ font-weight: 800;
689
+ letter-spacing: -0.02em;
690
+ background: linear-gradient(to right, #ffffff 30%, #cbd5e1);
691
+ -webkit-background-clip: text;
692
+ -webkit-text-fill-color: transparent;
693
+ margin: 0;
694
+ display: flex;
695
+ align-items: center;
696
+ gap: 0.6rem;
697
+ flex-wrap: wrap;
698
+ }
699
+
700
+ .pg-version-pill {
701
+ font-size: 0.72rem;
702
+ font-weight: 700;
703
+ color: #60a5fa;
704
+ background: rgba(59, 130, 246, 0.18);
705
+ border: 1px solid rgba(59, 130, 246, 0.4);
706
+ padding: 0.18rem 0.55rem;
707
+ border-radius: 6px;
708
+ }
709
+
710
+ .pg-subtitle {
711
+ font-size: 0.82rem;
712
+ color: #94a3b8;
713
+ margin: 0.3rem 0 0 0;
714
+ font-weight: 400;
715
+ white-space: normal;
716
+ line-height: 1.4;
717
+ }
718
+
719
+ /* Section Header & Number Badge */
720
+ .pg-section-header {
721
+ display: flex;
722
+ align-items: center;
723
+ gap: 0.75rem;
724
+ margin-bottom: 1rem;
725
+ }
726
+
727
+ .pg-section-badge {
728
+ width: 26px;
729
+ height: 26px;
730
+ border-radius: 50%;
731
+ background: #3b82f6;
732
+ color: #ffffff;
733
+ display: flex;
734
+ align-items: center;
735
+ justify-content: center;
736
+ font-size: 0.82rem;
737
+ font-weight: 800;
738
+ box-shadow: 0 0 12px rgba(59, 130, 246, 0.5);
739
+ flex-shrink: 0;
740
+ }
741
+
742
+ .pg-section-title {
743
+ font-size: 0.95rem;
744
+ font-weight: 800;
745
+ text-transform: uppercase;
746
+ letter-spacing: 0.04em;
747
+ color: #f8fafc;
748
+ margin: 0;
749
+ }
750
+
751
+ .pg-section-subtitle {
752
+ font-size: 0.78rem;
753
+ color: #94a3b8;
754
+ margin-left: auto;
755
+ font-weight: 500;
756
+ }
757
+
758
+ /* Stage Toolbar */
759
+ .pg-stage-toolbar {
760
+ display: flex;
761
+ align-items: center;
762
+ justify-content: space-between;
763
+ padding: 0.6rem 1rem;
764
+ background: rgba(15, 23, 42, 0.85);
765
+ border: 1px solid rgba(255, 255, 255, 0.08);
766
+ border-radius: 10px;
767
+ margin-bottom: 0.85rem;
768
+ gap: 1rem;
769
+ flex-wrap: wrap;
770
+ }
771
+
772
+ .pg-toolbar-group {
773
+ display: flex;
774
+ align-items: center;
775
+ gap: 0.65rem;
776
+ }
777
+
778
+ .pg-toggle-label {
779
+ display: flex;
780
+ align-items: center;
781
+ gap: 0.45rem;
782
+ font-size: 0.78rem;
783
+ font-weight: 600;
784
+ color: #cbd5e1;
785
+ cursor: pointer;
786
+ user-select: none;
787
+ }
788
+
789
+ .pg-card {
790
+ background: rgba(30, 41, 59, 0.55);
791
+ border: 1px solid rgba(255, 255, 255, 0.08);
792
+ border-radius: 16px;
793
+ padding: 1.5rem;
794
+ backdrop-filter: blur(16px);
795
+ margin-bottom: 2rem;
796
+ box-shadow: 0 15px 35px -10px rgba(0, 0, 0, 0.4);
797
+ }
798
+
799
+ .pg-preview-stage {
800
+ display: flex;
801
+ justify-content: center;
802
+ align-items: center;
803
+ width: 100%;
804
+ min-height: 380px;
805
+ padding: 2.5rem 1rem;
806
+ background: radial-gradient(circle, rgba(59, 130, 246, 0.12) 1px, transparent 1px), rgba(15, 23, 42, 0.7);
807
+ background-size: 20px 20px;
808
+ border-radius: 12px;
809
+ border: 1px solid rgba(71, 85, 105, 0.35);
810
+ position: relative;
811
+ overflow: hidden;
812
+ }
813
+
814
+ /* Buttons */
815
+ .pg-btn-sm {
816
+ display: inline-flex;
817
+ align-items: center;
818
+ justify-content: center;
819
+ gap: 0.45rem;
820
+ padding: 0.45rem 0.85rem;
821
+ font-size: 0.8rem;
822
+ font-weight: 600;
823
+ border-radius: 8px;
824
+ cursor: pointer;
825
+ transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
826
+ border: none;
827
+ font-family: 'Inter', sans-serif;
828
+ user-select: none;
829
+ white-space: nowrap;
830
+ }
831
+
832
+ .pg-btn-sm-primary {
833
+ background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
834
+ color: #ffffff;
835
+ border: 1px solid rgba(255, 255, 255, 0.2);
836
+ box-shadow: 0 4px 12px rgba(59, 130, 246, 0.4);
837
+ }
838
+ .pg-btn-sm-primary:hover {
839
+ transform: translateY(-1px);
840
+ box-shadow: 0 6px 16px rgba(59, 130, 246, 0.55);
841
+ }
842
+
843
+ .pg-btn-violet {
844
+ background: linear-gradient(135deg, #7c3aed 0%, #5b21b6 100%);
845
+ color: #ffffff;
846
+ border: 1px solid rgba(255, 255, 255, 0.22);
847
+ box-shadow: 0 4px 14px rgba(124, 58, 237, 0.45);
848
+ padding: 0.5rem 1rem;
849
+ border-radius: 8px;
850
+ font-weight: 700;
851
+ font-size: 0.84rem;
852
+ display: inline-flex;
853
+ align-items: center;
854
+ gap: 0.5rem;
855
+ cursor: pointer;
856
+ transition: all 0.2s ease;
857
+ }
858
+ .pg-btn-violet:hover {
859
+ transform: translateY(-1px);
860
+ box-shadow: 0 6px 18px rgba(124, 58, 237, 0.6);
861
+ }
862
+
863
+ .pg-btn-sm-glass {
864
+ background: rgba(255, 255, 255, 0.06);
865
+ border: 1px solid rgba(255, 255, 255, 0.15);
866
+ color: #e2e8f0;
867
+ }
868
+ .pg-btn-sm-glass:hover {
869
+ background: rgba(255, 255, 255, 0.12);
870
+ border-color: #60a5fa;
871
+ color: #fff;
872
+ }
873
+
874
+ .pg-status-pill {
875
+ display: inline-flex;
876
+ align-items: center;
877
+ gap: 0.4rem;
878
+ font-size: 0.75rem;
879
+ color: #34d399;
880
+ background: rgba(16, 185, 129, 0.12);
881
+ border: 1px solid rgba(16, 185, 129, 0.35);
882
+ padding: 0.38rem 0.75rem;
883
+ border-radius: 20px;
884
+ font-weight: 600;
885
+ }
886
+
887
+ .pg-status-dot {
888
+ width: 6px;
889
+ height: 6px;
890
+ border-radius: 50%;
891
+ background-color: #10b981;
892
+ box-shadow: 0 0 8px #10b981;
893
+ animation: pulse-dot 2s infinite;
894
+ }
895
+
896
+ @keyframes pulse-dot {
897
+ 0% { transform: scale(0.95); opacity: 0.8; }
898
+ 50% { transform: scale(1.25); opacity: 1; box-shadow: 0 0 12px #10b981; }
899
+ 100% { transform: scale(0.95); opacity: 0.8; }
900
+ }
901
+
902
+ .pg-btn {
903
+ display: inline-flex;
904
+ align-items: center;
905
+ justify-content: center;
906
+ gap: 0.5rem;
907
+ padding: 0.65rem 1.25rem;
908
+ font-size: 0.88rem;
909
+ font-weight: 600;
910
+ border-radius: 10px;
911
+ cursor: pointer;
912
+ transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
913
+ border: none;
914
+ font-family: 'Inter', sans-serif;
915
+ }
916
+
917
+ .pg-btn-emerald {
918
+ background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
919
+ color: #ffffff;
920
+ padding: 0.75rem 1.35rem;
921
+ font-size: 0.92rem;
922
+ font-weight: 700;
923
+ box-shadow: 0 4px 14px rgba(59, 130, 246, 0.35);
924
+ border: 1px solid rgba(255, 255, 255, 0.18);
925
+ }
926
+ .pg-btn-emerald:hover:not(:disabled) {
927
+ transform: translateY(-1px);
928
+ box-shadow: 0 6px 18px rgba(59, 130, 246, 0.5);
929
+ }
930
+ .pg-btn-emerald:disabled {
931
+ opacity: 0.55;
932
+ cursor: not-allowed;
933
+ transform: none;
934
+ }
935
+
936
+ .pg-table-wrapper {
937
+ overflow-x: auto;
938
+ border-radius: 12px;
939
+ border: 1px solid rgba(255, 255, 255, 0.08);
940
+ background: rgba(15, 23, 42, 0.75);
941
+ }
942
+
943
+ .pg-table {
944
+ width: 100%;
945
+ border-collapse: collapse;
946
+ text-align: left;
947
+ }
948
+
949
+ .pg-table th {
950
+ padding: 1rem 1.25rem;
951
+ font-size: 0.75rem;
952
+ font-weight: 700;
953
+ text-transform: uppercase;
954
+ letter-spacing: 0.05em;
955
+ color: #94a3b8;
956
+ background: rgba(30, 41, 59, 0.95);
957
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
958
+ }
959
+
960
+ .pg-table td {
961
+ padding: 1rem 1.25rem;
962
+ font-size: 0.86rem;
963
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
964
+ transition: background-color 0.15s ease;
965
+ }
966
+
967
+ .pg-table tr:hover td {
968
+ background: rgba(59, 130, 246, 0.08);
969
+ }
970
+
971
+ .pg-avatar {
972
+ width: 40px;
973
+ height: 40px;
974
+ border-radius: 50%;
975
+ object-fit: cover;
976
+ border: 2px solid #3b82f6;
977
+ box-shadow: 0 0 10px rgba(59, 130, 246, 0.3);
978
+ }
979
+
980
+ .pg-select {
981
+ width: 100%;
982
+ padding: 0.6rem 0.8rem;
983
+ background: #0f172a;
984
+ border: 1px solid rgba(255, 255, 255, 0.12);
985
+ border-radius: 8px;
986
+ color: #fff;
987
+ font-size: 0.84rem;
988
+ font-family: 'Inter', sans-serif;
989
+ transition: all 0.2s ease;
990
+ }
991
+ .pg-select:focus {
992
+ outline: none;
993
+ border-color: #3b82f6;
994
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.25);
995
+ }
996
+
997
+