tacel-canva 1.0.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/canva.css ADDED
@@ -0,0 +1,2928 @@
1
+ /**
2
+ * Tacel Canva Module - Premium Edition
3
+ * Modern, polished UI with glassmorphism & micro-interactions
4
+ */
5
+
6
+ .tacel-canva {
7
+ /* ═══════════════════════════════════════════════════════════════
8
+ PREMIUM COLOR SYSTEM
9
+ ═══════════════════════════════════════════════════════════════ */
10
+ --tc-primary: #00c4cc;
11
+ --tc-primary-hover: #00d4dc;
12
+ --tc-primary-dark: #00a8b0;
13
+ --tc-primary-light: rgba(0, 196, 204, 0.12);
14
+ --tc-primary-glow: rgba(0, 196, 204, 0.4);
15
+
16
+ /* Gradient system */
17
+ --tc-gradient-primary: linear-gradient(135deg, #00c4cc 0%, #7c3aed 100%);
18
+ --tc-gradient-accent: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
19
+ --tc-gradient-warm: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
20
+ --tc-gradient-cool: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
21
+ --tc-gradient-dark: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
22
+ --tc-gradient-glass: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%);
23
+
24
+ /* Background system */
25
+ --tc-bg: #ffffff;
26
+ --tc-bg-secondary: #f8fafc;
27
+ --tc-bg-tertiary: #f1f5f9;
28
+ --tc-bg-elevated: #ffffff;
29
+ --tc-bg-glass: rgba(255, 255, 255, 0.8);
30
+ --tc-bg-glass-dark: rgba(0, 0, 0, 0.6);
31
+
32
+ /* Border system */
33
+ --tc-border: #e2e8f0;
34
+ --tc-border-light: #f1f5f9;
35
+ --tc-border-focus: var(--tc-primary);
36
+
37
+ /* Text system */
38
+ --tc-text: #0f172a;
39
+ --tc-text-secondary: #475569;
40
+ --tc-text-muted: #64748b;
41
+ --tc-text-light: #94a3b8;
42
+ --tc-text-inverse: #ffffff;
43
+
44
+ /* Shadow system - layered for depth */
45
+ --tc-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
46
+ --tc-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.06);
47
+ --tc-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
48
+ --tc-shadow-md: 0 8px 24px rgba(0, 0, 0, 0.12);
49
+ --tc-shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.16);
50
+ --tc-shadow-xl: 0 24px 64px rgba(0, 0, 0, 0.2);
51
+ --tc-shadow-glow: 0 0 40px var(--tc-primary-glow);
52
+ --tc-shadow-inner: inset 0 2px 4px rgba(0, 0, 0, 0.06);
53
+
54
+ /* Status colors */
55
+ --tc-danger: #ef4444;
56
+ --tc-danger-hover: #dc2626;
57
+ --tc-danger-light: rgba(239, 68, 68, 0.1);
58
+ --tc-success: #10b981;
59
+ --tc-success-light: rgba(16, 185, 129, 0.1);
60
+ --tc-warning: #f59e0b;
61
+ --tc-warning-light: rgba(245, 158, 11, 0.1);
62
+ --tc-info: #3b82f6;
63
+ --tc-info-light: rgba(59, 130, 246, 0.1);
64
+ --tc-favorite: #fbbf24;
65
+
66
+ /* Layout system */
67
+ --tc-border-radius-xs: 4px;
68
+ --tc-border-radius-sm: 8px;
69
+ --tc-border-radius: 12px;
70
+ --tc-border-radius-lg: 16px;
71
+ --tc-border-radius-xl: 24px;
72
+ --tc-border-radius-full: 9999px;
73
+
74
+ --tc-spacing-xs: 4px;
75
+ --tc-spacing-sm: 8px;
76
+ --tc-spacing: 16px;
77
+ --tc-spacing-lg: 24px;
78
+ --tc-spacing-xl: 32px;
79
+ --tc-spacing-2xl: 48px;
80
+
81
+ --tc-sidebar-width: 260px;
82
+
83
+ /* Animation system */
84
+ --tc-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);
85
+ --tc-transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
86
+ --tc-transition-slow: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
87
+ --tc-transition-bounce: 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55);
88
+
89
+ /* Typography */
90
+ --tc-font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
91
+ --tc-font-mono: 'SF Mono', 'Fira Code', 'Consolas', monospace;
92
+
93
+ /* Base styles */
94
+ width: 100%;
95
+ height: 100%;
96
+ background: var(--tc-bg);
97
+ font-family: var(--tc-font-family);
98
+ color: var(--tc-text);
99
+ display: flex;
100
+ flex-direction: column;
101
+ overflow: hidden;
102
+ position: relative;
103
+ -webkit-font-smoothing: antialiased;
104
+ -moz-osx-font-smoothing: grayscale;
105
+ }
106
+
107
+ /* ═══════════════════════════════════════════════════════════════
108
+ GLOBAL ANIMATIONS
109
+ ═══════════════════════════════════════════════════════════════ */
110
+
111
+ @keyframes tc-spin {
112
+ to { transform: rotate(360deg); }
113
+ }
114
+
115
+ @keyframes tc-fade-in {
116
+ from { opacity: 0; }
117
+ to { opacity: 1; }
118
+ }
119
+
120
+ @keyframes tc-slide-up {
121
+ from { transform: translateY(20px); opacity: 0; }
122
+ to { transform: translateY(0); opacity: 1; }
123
+ }
124
+
125
+ @keyframes tc-slide-down {
126
+ from { transform: translateY(-20px); opacity: 0; }
127
+ to { transform: translateY(0); opacity: 1; }
128
+ }
129
+
130
+ @keyframes tc-scale-in {
131
+ from { transform: scale(0.95); opacity: 0; }
132
+ to { transform: scale(1); opacity: 1; }
133
+ }
134
+
135
+ @keyframes tc-pulse {
136
+ 0%, 100% { opacity: 1; }
137
+ 50% { opacity: 0.5; }
138
+ }
139
+
140
+ @keyframes tc-shimmer {
141
+ 0% { background-position: -200% 0; }
142
+ 100% { background-position: 200% 0; }
143
+ }
144
+
145
+ @keyframes tc-float {
146
+ 0%, 100% { transform: translateY(0); }
147
+ 50% { transform: translateY(-8px); }
148
+ }
149
+
150
+ @keyframes tc-glow-pulse {
151
+ 0%, 100% { box-shadow: 0 0 20px var(--tc-primary-glow); }
152
+ 50% { box-shadow: 0 0 40px var(--tc-primary-glow); }
153
+ }
154
+
155
+ /* ═══════════════════════════════════════════════════════════════
156
+ AUTH SCREEN - Premium
157
+ ═══════════════════════════════════════════════════════════════ */
158
+
159
+ .tc-auth-screen {
160
+ display: flex;
161
+ flex-direction: column;
162
+ align-items: center;
163
+ justify-content: center;
164
+ height: 100%;
165
+ padding: var(--tc-spacing-xl);
166
+ text-align: center;
167
+ background: linear-gradient(180deg, var(--tc-bg) 0%, var(--tc-bg-secondary) 100%);
168
+ position: relative;
169
+ overflow: hidden;
170
+ }
171
+
172
+ .tc-auth-screen::before {
173
+ content: '';
174
+ position: absolute;
175
+ top: -50%;
176
+ left: -50%;
177
+ width: 200%;
178
+ height: 200%;
179
+ background: radial-gradient(circle at 30% 20%, var(--tc-primary-light) 0%, transparent 50%),
180
+ radial-gradient(circle at 70% 80%, rgba(124, 58, 237, 0.08) 0%, transparent 50%);
181
+ pointer-events: none;
182
+ }
183
+
184
+ .tc-auth-logo {
185
+ margin-bottom: var(--tc-spacing-xl);
186
+ position: relative;
187
+ z-index: 1;
188
+ }
189
+
190
+ .tc-auth-logo svg,
191
+ .tc-auth-logo img {
192
+ filter: drop-shadow(0 8px 24px var(--tc-primary-glow));
193
+ }
194
+
195
+ .tc-auth-title {
196
+ font-size: 32px;
197
+ font-weight: 700;
198
+ margin: 0 0 var(--tc-spacing) 0;
199
+ color: var(--tc-text);
200
+ position: relative;
201
+ z-index: 1;
202
+ letter-spacing: -0.5px;
203
+ }
204
+
205
+ .tc-auth-desc {
206
+ font-size: 16px;
207
+ line-height: 1.6;
208
+ color: var(--tc-text-muted);
209
+ margin: 0 0 var(--tc-spacing-xl) 0;
210
+ max-width: 420px;
211
+ position: relative;
212
+ z-index: 1;
213
+ }
214
+
215
+ .tc-auth-waiting {
216
+ display: flex;
217
+ flex-direction: column;
218
+ align-items: center;
219
+ justify-content: center;
220
+ height: 100%;
221
+ padding: var(--tc-spacing-xl);
222
+ text-align: center;
223
+ background: linear-gradient(180deg, var(--tc-bg) 0%, var(--tc-bg-secondary) 100%);
224
+ }
225
+
226
+ .tc-auth-waiting h3 {
227
+ font-size: 24px;
228
+ font-weight: 600;
229
+ margin: var(--tc-spacing-lg) 0 var(--tc-spacing);
230
+ color: var(--tc-text);
231
+ }
232
+
233
+ .tc-auth-waiting p {
234
+ font-size: 15px;
235
+ color: var(--tc-text-muted);
236
+ margin: 0 0 var(--tc-spacing-xl) 0;
237
+ }
238
+
239
+ .tc-auth-spinner {
240
+ width: 56px;
241
+ height: 56px;
242
+ border: 3px solid var(--tc-border);
243
+ border-top-color: var(--tc-primary);
244
+ border-radius: 50%;
245
+ animation: tc-spin 0.8s linear infinite;
246
+ box-shadow: 0 0 20px var(--tc-primary-light);
247
+ }
248
+
249
+ /* ═══════════════════════════════════════════════════════════════
250
+ HEADER - Premium
251
+ ═══════════════════════════════════════════════════════════════ */
252
+
253
+ .tc-header {
254
+ display: flex;
255
+ align-items: center;
256
+ justify-content: space-between;
257
+ gap: var(--tc-spacing);
258
+ padding: var(--tc-spacing) var(--tc-spacing-lg);
259
+ border-bottom: 1px solid var(--tc-border-light);
260
+ background: var(--tc-bg-glass);
261
+ backdrop-filter: blur(12px);
262
+ -webkit-backdrop-filter: blur(12px);
263
+ position: relative;
264
+ z-index: 10;
265
+ }
266
+
267
+ .tc-header::after {
268
+ content: '';
269
+ position: absolute;
270
+ bottom: 0;
271
+ left: 0;
272
+ right: 0;
273
+ height: 1px;
274
+ background: linear-gradient(90deg, transparent, var(--tc-primary-light), transparent);
275
+ }
276
+
277
+ .tc-header-title {
278
+ font-size: 22px;
279
+ font-weight: 700;
280
+ margin: 0;
281
+ background: var(--tc-gradient-primary);
282
+ -webkit-background-clip: text;
283
+ -webkit-text-fill-color: transparent;
284
+ background-clip: text;
285
+ }
286
+
287
+ .tc-header-right {
288
+ display: flex;
289
+ align-items: center;
290
+ gap: var(--tc-spacing);
291
+ }
292
+
293
+ .tc-user-info {
294
+ display: flex;
295
+ align-items: center;
296
+ gap: var(--tc-spacing-sm);
297
+ font-size: 13px;
298
+ color: var(--tc-text-muted);
299
+ padding: 6px 12px;
300
+ background: var(--tc-bg-secondary);
301
+ border-radius: var(--tc-border-radius-full);
302
+ }
303
+
304
+ .tc-user-avatar {
305
+ width: 24px;
306
+ height: 24px;
307
+ border-radius: 50%;
308
+ background: var(--tc-gradient-primary);
309
+ display: flex;
310
+ align-items: center;
311
+ justify-content: center;
312
+ color: white;
313
+ font-size: 11px;
314
+ font-weight: 600;
315
+ }
316
+
317
+ /* ═══════════════════════════════════════════════════════════════
318
+ TOOLBAR - Premium
319
+ ═══════════════════════════════════════════════════════════════ */
320
+
321
+ .tc-toolbar {
322
+ display: flex;
323
+ align-items: center;
324
+ justify-content: space-between;
325
+ gap: var(--tc-spacing);
326
+ padding: var(--tc-spacing) var(--tc-spacing-lg);
327
+ background: var(--tc-bg);
328
+ border-bottom: 1px solid var(--tc-border-light);
329
+ }
330
+
331
+ .tc-toolbar-left,
332
+ .tc-toolbar-right {
333
+ display: flex;
334
+ align-items: center;
335
+ gap: var(--tc-spacing-sm);
336
+ }
337
+
338
+ .tc-search-wrapper {
339
+ position: relative;
340
+ display: flex;
341
+ align-items: center;
342
+ }
343
+
344
+ .tc-search-icon {
345
+ position: absolute;
346
+ left: 14px;
347
+ font-size: 14px;
348
+ color: var(--tc-text-light);
349
+ pointer-events: none;
350
+ }
351
+
352
+ .tc-search-input {
353
+ width: 320px;
354
+ padding: 10px 14px 10px 40px;
355
+ border: 2px solid var(--tc-border);
356
+ border-radius: var(--tc-border-radius-full);
357
+ font-size: 14px;
358
+ background: var(--tc-bg);
359
+ color: var(--tc-text);
360
+ outline: none;
361
+ transition: var(--tc-transition);
362
+ }
363
+
364
+ .tc-search-input::placeholder {
365
+ color: var(--tc-text-light);
366
+ }
367
+
368
+ .tc-search-input:hover {
369
+ border-color: var(--tc-border);
370
+ background: var(--tc-bg-secondary);
371
+ }
372
+
373
+ .tc-search-input:focus {
374
+ border-color: var(--tc-primary);
375
+ background: var(--tc-bg);
376
+ box-shadow: 0 0 0 4px var(--tc-primary-light);
377
+ }
378
+
379
+ /* ═══════════════════════════════════════════════════════════════
380
+ BUTTONS - Premium
381
+ ═══════════════════════════════════════════════════════════════ */
382
+
383
+ .tc-btn {
384
+ display: inline-flex;
385
+ align-items: center;
386
+ justify-content: center;
387
+ gap: 8px;
388
+ padding: 10px 20px;
389
+ border: none;
390
+ border-radius: var(--tc-border-radius);
391
+ font-size: 14px;
392
+ font-weight: 600;
393
+ cursor: pointer;
394
+ transition: var(--tc-transition);
395
+ white-space: nowrap;
396
+ position: relative;
397
+ overflow: hidden;
398
+ }
399
+
400
+ .tc-btn::before {
401
+ content: '';
402
+ position: absolute;
403
+ inset: 0;
404
+ background: linear-gradient(180deg, rgba(255,255,255,0.15) 0%, transparent 50%);
405
+ pointer-events: none;
406
+ }
407
+
408
+ .tc-btn-primary {
409
+ background: var(--tc-gradient-primary);
410
+ color: white;
411
+ box-shadow: 0 4px 14px var(--tc-primary-glow);
412
+ }
413
+
414
+ .tc-btn-primary:hover {
415
+ transform: translateY(-2px);
416
+ box-shadow: 0 6px 20px var(--tc-primary-glow);
417
+ }
418
+
419
+ .tc-btn-primary:active {
420
+ transform: translateY(0);
421
+ }
422
+
423
+ .tc-btn-secondary {
424
+ background: var(--tc-bg);
425
+ color: var(--tc-text);
426
+ border: 2px solid var(--tc-border);
427
+ box-shadow: var(--tc-shadow-xs);
428
+ }
429
+
430
+ .tc-btn-secondary::before {
431
+ display: none;
432
+ }
433
+
434
+ .tc-btn-secondary:hover {
435
+ border-color: var(--tc-primary);
436
+ color: var(--tc-primary);
437
+ background: var(--tc-primary-light);
438
+ }
439
+
440
+ .tc-btn-ghost {
441
+ background: transparent;
442
+ color: var(--tc-text-muted);
443
+ padding: 8px 12px;
444
+ }
445
+
446
+ .tc-btn-ghost::before {
447
+ display: none;
448
+ }
449
+
450
+ .tc-btn-ghost:hover {
451
+ background: var(--tc-bg-secondary);
452
+ color: var(--tc-text);
453
+ }
454
+
455
+ .tc-btn-danger {
456
+ background: var(--tc-danger);
457
+ color: white;
458
+ box-shadow: 0 4px 14px rgba(239, 68, 68, 0.3);
459
+ }
460
+
461
+ .tc-btn-danger:hover {
462
+ background: var(--tc-danger-hover);
463
+ transform: translateY(-2px);
464
+ }
465
+
466
+ .tc-btn-small {
467
+ padding: 8px 14px;
468
+ font-size: 13px;
469
+ border-radius: var(--tc-border-radius-sm);
470
+ }
471
+
472
+ .tc-btn-icon {
473
+ width: 40px;
474
+ height: 40px;
475
+ padding: 0;
476
+ border-radius: var(--tc-border-radius);
477
+ background: var(--tc-bg);
478
+ border: 1px solid var(--tc-border);
479
+ color: var(--tc-text-muted);
480
+ box-shadow: var(--tc-shadow-xs);
481
+ }
482
+
483
+ .tc-btn-icon::before {
484
+ display: none;
485
+ }
486
+
487
+ .tc-btn-icon:hover {
488
+ background: var(--tc-bg-secondary);
489
+ border-color: var(--tc-border);
490
+ color: var(--tc-text);
491
+ transform: translateY(-1px);
492
+ box-shadow: var(--tc-shadow-sm);
493
+ }
494
+
495
+ .tc-btn-icon.active {
496
+ background: var(--tc-primary-light);
497
+ border-color: var(--tc-primary);
498
+ color: var(--tc-primary);
499
+ }
500
+
501
+ .tc-btn-icon svg {
502
+ width: 18px;
503
+ height: 18px;
504
+ }
505
+
506
+ .tc-btn-icon-sm {
507
+ width: 32px;
508
+ height: 32px;
509
+ }
510
+
511
+ /* Gradient button variant */
512
+ .tc-btn-gradient {
513
+ background: var(--tc-gradient-primary);
514
+ color: white;
515
+ border: none;
516
+ box-shadow: 0 4px 14px var(--tc-primary-glow);
517
+ }
518
+
519
+ .tc-btn-gradient:hover {
520
+ transform: translateY(-2px);
521
+ box-shadow: 0 8px 24px var(--tc-primary-glow);
522
+ }
523
+
524
+ /* ═══════════════════════════════════════════════════════════════
525
+ CONTENT AREA - Premium
526
+ ═══════════════════════════════════════════════════════════════ */
527
+
528
+ .tc-content {
529
+ flex: 1;
530
+ overflow-y: auto;
531
+ padding: var(--tc-spacing-lg);
532
+ background: linear-gradient(180deg, var(--tc-bg) 0%, var(--tc-bg-secondary) 100%);
533
+ }
534
+
535
+ .tc-loader {
536
+ display: flex;
537
+ flex-direction: column;
538
+ align-items: center;
539
+ justify-content: center;
540
+ height: 100%;
541
+ gap: var(--tc-spacing);
542
+ }
543
+
544
+ .tc-loader-spinner {
545
+ width: 48px;
546
+ height: 48px;
547
+ border: 3px solid var(--tc-border);
548
+ border-top-color: var(--tc-primary);
549
+ border-radius: 50%;
550
+ animation: tc-spin 0.8s linear infinite;
551
+ }
552
+
553
+ .tc-empty-state {
554
+ display: flex;
555
+ flex-direction: column;
556
+ align-items: center;
557
+ justify-content: center;
558
+ height: 100%;
559
+ text-align: center;
560
+ padding: var(--tc-spacing-2xl);
561
+ }
562
+
563
+ .tc-empty-icon {
564
+ font-size: 72px;
565
+ margin-bottom: var(--tc-spacing-lg);
566
+ opacity: 0.6;
567
+ animation: tc-float 3s ease-in-out infinite;
568
+ }
569
+
570
+ .tc-empty-state h3 {
571
+ font-size: 20px;
572
+ font-weight: 600;
573
+ margin: 0 0 var(--tc-spacing-sm);
574
+ color: var(--tc-text);
575
+ }
576
+
577
+ .tc-empty-state p {
578
+ color: var(--tc-text-muted);
579
+ margin: 0 0 var(--tc-spacing-lg);
580
+ max-width: 320px;
581
+ }
582
+
583
+ /* ═══════════════════════════════════════════════════════════════
584
+ DESIGN GRID - Premium
585
+ ═══════════════════════════════════════════════════════════════ */
586
+
587
+ .tc-design-grid {
588
+ display: grid;
589
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
590
+ gap: var(--tc-spacing-lg);
591
+ }
592
+
593
+ .tc-design-card {
594
+ background: var(--tc-bg);
595
+ border: 1px solid var(--tc-border-light);
596
+ border-radius: var(--tc-border-radius-lg);
597
+ overflow: hidden;
598
+ transition: var(--tc-transition);
599
+ cursor: pointer;
600
+ position: relative;
601
+ }
602
+
603
+ .tc-design-card::before {
604
+ content: '';
605
+ position: absolute;
606
+ inset: 0;
607
+ border-radius: var(--tc-border-radius-lg);
608
+ padding: 1px;
609
+ background: linear-gradient(135deg, transparent 0%, transparent 100%);
610
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
611
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
612
+ -webkit-mask-composite: xor;
613
+ mask-composite: exclude;
614
+ pointer-events: none;
615
+ opacity: 0;
616
+ transition: var(--tc-transition);
617
+ }
618
+
619
+ .tc-design-card:hover {
620
+ border-color: transparent;
621
+ box-shadow: var(--tc-shadow-md);
622
+ transform: translateY(-4px);
623
+ }
624
+
625
+ .tc-design-card:hover::before {
626
+ background: var(--tc-gradient-primary);
627
+ opacity: 1;
628
+ }
629
+
630
+ .tc-design-card.selected {
631
+ border-color: var(--tc-primary);
632
+ box-shadow: 0 0 0 3px var(--tc-primary-light), var(--tc-shadow-md);
633
+ }
634
+
635
+ .tc-design-thumbnail {
636
+ position: relative;
637
+ width: 100%;
638
+ aspect-ratio: 16 / 10;
639
+ background: linear-gradient(135deg, var(--tc-bg-secondary) 0%, var(--tc-bg-tertiary) 100%);
640
+ overflow: hidden;
641
+ }
642
+
643
+ .tc-design-thumbnail img {
644
+ width: 100%;
645
+ height: 100%;
646
+ object-fit: cover;
647
+ transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
648
+ }
649
+
650
+ .tc-design-card:hover .tc-design-thumbnail img {
651
+ transform: scale(1.08);
652
+ }
653
+
654
+ /* Card overlay with glassmorphism */
655
+ .tc-card-overlay {
656
+ position: absolute;
657
+ inset: 0;
658
+ background: var(--tc-bg-glass-dark);
659
+ backdrop-filter: blur(8px);
660
+ -webkit-backdrop-filter: blur(8px);
661
+ display: flex;
662
+ align-items: center;
663
+ justify-content: center;
664
+ opacity: 0;
665
+ transition: var(--tc-transition);
666
+ }
667
+
668
+ .tc-design-card:hover .tc-card-overlay {
669
+ opacity: 1;
670
+ }
671
+
672
+ .tc-overlay-actions {
673
+ display: flex;
674
+ gap: 10px;
675
+ }
676
+
677
+ .tc-overlay-btn {
678
+ width: 44px;
679
+ height: 44px;
680
+ border: none;
681
+ border-radius: var(--tc-border-radius);
682
+ background: var(--tc-bg-glass);
683
+ backdrop-filter: blur(12px);
684
+ -webkit-backdrop-filter: blur(12px);
685
+ cursor: pointer;
686
+ font-size: 18px;
687
+ transition: var(--tc-transition-bounce);
688
+ display: flex;
689
+ align-items: center;
690
+ justify-content: center;
691
+ transform: translateY(10px);
692
+ opacity: 0;
693
+ }
694
+
695
+ .tc-design-card:hover .tc-overlay-btn {
696
+ transform: translateY(0);
697
+ opacity: 1;
698
+ }
699
+
700
+ .tc-design-card:hover .tc-overlay-btn:nth-child(1) { transition-delay: 0s; }
701
+ .tc-design-card:hover .tc-overlay-btn:nth-child(2) { transition-delay: 0.05s; }
702
+ .tc-design-card:hover .tc-overlay-btn:nth-child(3) { transition-delay: 0.1s; }
703
+ .tc-design-card:hover .tc-overlay-btn:nth-child(4) { transition-delay: 0.15s; }
704
+
705
+ .tc-overlay-btn:hover {
706
+ background: white;
707
+ transform: scale(1.1) !important;
708
+ box-shadow: var(--tc-shadow-md);
709
+ }
710
+
711
+ /* Card checkbox */
712
+ .tc-card-checkbox {
713
+ position: absolute;
714
+ top: 12px;
715
+ left: 12px;
716
+ opacity: 0;
717
+ transition: var(--tc-transition);
718
+ z-index: 5;
719
+ }
720
+
721
+ .tc-design-card:hover .tc-card-checkbox,
722
+ .tc-design-card.selected .tc-card-checkbox {
723
+ opacity: 1;
724
+ }
725
+
726
+ .tc-card-checkbox input {
727
+ width: 20px;
728
+ height: 20px;
729
+ cursor: pointer;
730
+ accent-color: var(--tc-primary);
731
+ border-radius: var(--tc-border-radius-xs);
732
+ }
733
+
734
+ /* Favorite button */
735
+ .tc-card-fav-btn {
736
+ position: absolute;
737
+ top: 12px;
738
+ right: 12px;
739
+ width: 36px;
740
+ height: 36px;
741
+ border: none;
742
+ border-radius: var(--tc-border-radius);
743
+ background: var(--tc-bg-glass);
744
+ backdrop-filter: blur(12px);
745
+ -webkit-backdrop-filter: blur(12px);
746
+ cursor: pointer;
747
+ font-size: 18px;
748
+ display: flex;
749
+ align-items: center;
750
+ justify-content: center;
751
+ transition: var(--tc-transition);
752
+ color: var(--tc-text-light);
753
+ z-index: 5;
754
+ }
755
+
756
+ .tc-card-fav-btn:hover {
757
+ transform: scale(1.1);
758
+ background: white;
759
+ box-shadow: var(--tc-shadow-sm);
760
+ }
761
+
762
+ .tc-card-fav-btn.active {
763
+ color: var(--tc-favorite);
764
+ background: white;
765
+ }
766
+
767
+ /* Design info */
768
+ .tc-design-info {
769
+ padding: var(--tc-spacing);
770
+ }
771
+
772
+ .tc-design-title-row {
773
+ display: flex;
774
+ align-items: center;
775
+ justify-content: space-between;
776
+ gap: var(--tc-spacing-sm);
777
+ }
778
+
779
+ .tc-design-title {
780
+ font-size: 14px;
781
+ font-weight: 600;
782
+ overflow: hidden;
783
+ text-overflow: ellipsis;
784
+ white-space: nowrap;
785
+ flex: 1;
786
+ color: var(--tc-text);
787
+ }
788
+
789
+ .tc-design-meta {
790
+ display: flex;
791
+ align-items: center;
792
+ gap: 6px;
793
+ font-size: 12px;
794
+ color: var(--tc-text-muted);
795
+ margin-top: 6px;
796
+ }
797
+
798
+ .tc-meta-dot {
799
+ opacity: 0.4;
800
+ }
801
+
802
+ /* ═══════════════════════════════════════════════════════════════
803
+ SCROLLBAR - Premium
804
+ ═══════════════════════════════════════════════════════════════ */
805
+
806
+ .tc-content::-webkit-scrollbar,
807
+ .tc-sidebar-nav::-webkit-scrollbar {
808
+ width: 6px;
809
+ }
810
+
811
+ .tc-content::-webkit-scrollbar-track,
812
+ .tc-sidebar-nav::-webkit-scrollbar-track {
813
+ background: transparent;
814
+ }
815
+
816
+ .tc-content::-webkit-scrollbar-thumb,
817
+ .tc-sidebar-nav::-webkit-scrollbar-thumb {
818
+ background: var(--tc-border);
819
+ border-radius: var(--tc-border-radius-full);
820
+ }
821
+
822
+ .tc-content::-webkit-scrollbar-thumb:hover,
823
+ .tc-sidebar-nav::-webkit-scrollbar-thumb:hover {
824
+ background: var(--tc-text-light);
825
+ }
826
+
827
+ .tc-content,
828
+ .tc-sidebar-nav {
829
+ scrollbar-width: thin;
830
+ scrollbar-color: var(--tc-border) transparent;
831
+ }
832
+
833
+ /* ═══════════════════════════════════════════════════════════════
834
+ MAIN WRAPPER & SIDEBAR - Premium
835
+ ═══════════════════════════════════════════════════════════════ */
836
+
837
+ .tc-main-wrapper {
838
+ display: flex;
839
+ flex: 1;
840
+ overflow: hidden;
841
+ background: var(--tc-bg);
842
+ }
843
+
844
+ .tc-main-area {
845
+ flex: 1;
846
+ display: flex;
847
+ flex-direction: column;
848
+ overflow: hidden;
849
+ background: var(--tc-bg);
850
+ }
851
+
852
+ .tc-sidebar {
853
+ width: var(--tc-sidebar-width);
854
+ background: var(--tc-bg-secondary);
855
+ border-right: 1px solid var(--tc-border-light);
856
+ display: flex;
857
+ flex-direction: column;
858
+ overflow: hidden;
859
+ position: relative;
860
+ }
861
+
862
+ .tc-sidebar::after {
863
+ content: '';
864
+ position: absolute;
865
+ top: 0;
866
+ right: 0;
867
+ bottom: 0;
868
+ width: 1px;
869
+ background: linear-gradient(180deg, var(--tc-primary-light), transparent, var(--tc-primary-light));
870
+ pointer-events: none;
871
+ }
872
+
873
+ .tc-sidebar-header {
874
+ padding: var(--tc-spacing-lg) var(--tc-spacing);
875
+ border-bottom: 1px solid var(--tc-border-light);
876
+ }
877
+
878
+ .tc-sidebar-title {
879
+ font-weight: 700;
880
+ font-size: 11px;
881
+ text-transform: uppercase;
882
+ letter-spacing: 1px;
883
+ color: var(--tc-text-light);
884
+ }
885
+
886
+ .tc-sidebar-nav {
887
+ flex: 1;
888
+ overflow-y: auto;
889
+ padding: var(--tc-spacing-sm);
890
+ }
891
+
892
+ .tc-sidebar-item {
893
+ display: flex;
894
+ align-items: center;
895
+ gap: 12px;
896
+ padding: 11px 14px;
897
+ border-radius: var(--tc-border-radius);
898
+ cursor: pointer;
899
+ transition: var(--tc-transition);
900
+ margin-bottom: 4px;
901
+ position: relative;
902
+ }
903
+
904
+ .tc-sidebar-item::before {
905
+ content: '';
906
+ position: absolute;
907
+ left: 0;
908
+ top: 50%;
909
+ transform: translateY(-50%);
910
+ width: 3px;
911
+ height: 0;
912
+ background: var(--tc-gradient-primary);
913
+ border-radius: 0 2px 2px 0;
914
+ transition: var(--tc-transition);
915
+ }
916
+
917
+ .tc-sidebar-item:hover {
918
+ background: var(--tc-bg);
919
+ }
920
+
921
+ .tc-sidebar-item.active {
922
+ background: var(--tc-bg);
923
+ color: var(--tc-primary);
924
+ box-shadow: var(--tc-shadow-sm);
925
+ }
926
+
927
+ .tc-sidebar-item.active::before {
928
+ height: 60%;
929
+ }
930
+
931
+ .tc-sidebar-icon {
932
+ font-size: 18px;
933
+ width: 24px;
934
+ text-align: center;
935
+ flex-shrink: 0;
936
+ }
937
+
938
+ .tc-sidebar-label {
939
+ flex: 1;
940
+ font-size: 14px;
941
+ font-weight: 500;
942
+ }
943
+
944
+ .tc-sidebar-count {
945
+ font-size: 11px;
946
+ font-weight: 600;
947
+ color: var(--tc-text-muted);
948
+ background: var(--tc-bg-tertiary);
949
+ padding: 3px 8px;
950
+ border-radius: var(--tc-border-radius-full);
951
+ }
952
+
953
+ .tc-sidebar-section-header {
954
+ font-size: 10px;
955
+ font-weight: 600;
956
+ text-transform: uppercase;
957
+ letter-spacing: 0.5px;
958
+ color: var(--tc-text-light);
959
+ padding: 16px 12px 8px;
960
+ }
961
+
962
+ /* ═══════════════════════════════════════════════════════════════
963
+ ENHANCED TOOLBAR
964
+ ═══════════════════════════════════════════════════════════════ */
965
+
966
+ .tc-toolbar {
967
+ display: flex;
968
+ align-items: center;
969
+ justify-content: space-between;
970
+ gap: var(--tc-spacing);
971
+ padding: 12px var(--tc-spacing);
972
+ border-bottom: 1px solid var(--tc-border-light);
973
+ background: var(--tc-bg);
974
+ }
975
+
976
+ .tc-toolbar-left,
977
+ .tc-toolbar-right {
978
+ display: flex;
979
+ align-items: center;
980
+ gap: var(--tc-spacing-sm);
981
+ }
982
+
983
+ .tc-search-wrapper {
984
+ position: relative;
985
+ display: flex;
986
+ align-items: center;
987
+ }
988
+
989
+ .tc-search-icon {
990
+ position: absolute;
991
+ left: 12px;
992
+ font-size: 14px;
993
+ opacity: 0.5;
994
+ }
995
+
996
+ .tc-search-wrapper .tc-search-input {
997
+ padding-left: 36px;
998
+ width: 280px;
999
+ }
1000
+
1001
+ .tc-sort-wrapper {
1002
+ display: flex;
1003
+ align-items: center;
1004
+ gap: 4px;
1005
+ }
1006
+
1007
+ .tc-sort-select {
1008
+ padding: 8px 12px;
1009
+ border: 1px solid var(--tc-border);
1010
+ border-radius: var(--tc-border-radius-sm);
1011
+ background: var(--tc-bg);
1012
+ font-size: 13px;
1013
+ color: var(--tc-text);
1014
+ cursor: pointer;
1015
+ }
1016
+
1017
+ .tc-view-toggle {
1018
+ display: flex;
1019
+ background: var(--tc-bg-secondary);
1020
+ border-radius: var(--tc-border-radius-sm);
1021
+ padding: 2px;
1022
+ }
1023
+
1024
+ .tc-view-toggle .tc-btn-icon {
1025
+ background: transparent;
1026
+ border: none;
1027
+ }
1028
+
1029
+ .tc-view-toggle .tc-btn-icon.active {
1030
+ background: var(--tc-bg);
1031
+ box-shadow: 0 1px 3px var(--tc-shadow);
1032
+ }
1033
+
1034
+ .tc-bulk-actions {
1035
+ display: flex;
1036
+ align-items: center;
1037
+ gap: var(--tc-spacing-sm);
1038
+ padding: 6px 12px;
1039
+ background: var(--tc-primary-light);
1040
+ border-radius: var(--tc-border-radius);
1041
+ }
1042
+
1043
+ .tc-bulk-count {
1044
+ font-size: 13px;
1045
+ font-weight: 500;
1046
+ color: var(--tc-primary);
1047
+ }
1048
+
1049
+ /* ═══════════════════════════════════════════════════════════════
1050
+ ENHANCED BUTTONS
1051
+ ═══════════════════════════════════════════════════════════════ */
1052
+
1053
+ .tc-btn {
1054
+ display: inline-flex;
1055
+ align-items: center;
1056
+ justify-content: center;
1057
+ gap: 6px;
1058
+ padding: 8px 16px;
1059
+ border: none;
1060
+ border-radius: var(--tc-border-radius-sm);
1061
+ font-size: 14px;
1062
+ font-weight: 500;
1063
+ cursor: pointer;
1064
+ transition: var(--tc-transition);
1065
+ white-space: nowrap;
1066
+ }
1067
+
1068
+ .tc-btn-icon {
1069
+ width: 36px;
1070
+ height: 36px;
1071
+ padding: 0;
1072
+ display: flex;
1073
+ align-items: center;
1074
+ justify-content: center;
1075
+ background: var(--tc-bg);
1076
+ border: 1px solid var(--tc-border);
1077
+ border-radius: var(--tc-border-radius-sm);
1078
+ }
1079
+
1080
+ .tc-btn-icon:hover {
1081
+ background: var(--tc-bg-secondary);
1082
+ }
1083
+
1084
+ .tc-btn-icon.active {
1085
+ background: var(--tc-primary-light);
1086
+ border-color: var(--tc-primary);
1087
+ color: var(--tc-primary);
1088
+ }
1089
+
1090
+ .tc-btn-icon svg {
1091
+ width: 16px;
1092
+ height: 16px;
1093
+ }
1094
+
1095
+ .tc-btn-ghost {
1096
+ background: transparent;
1097
+ border: none;
1098
+ color: var(--tc-text-muted);
1099
+ }
1100
+
1101
+ .tc-btn-ghost:hover {
1102
+ color: var(--tc-text);
1103
+ background: var(--tc-bg-secondary);
1104
+ }
1105
+
1106
+ .tc-btn-icon-left {
1107
+ font-size: 16px;
1108
+ font-weight: 400;
1109
+ }
1110
+
1111
+ /* ═══════════════════════════════════════════════════════════════
1112
+ STATS BAR
1113
+ ═══════════════════════════════════════════════════════════════ */
1114
+
1115
+ .tc-stats-bar {
1116
+ padding: var(--tc-spacing-sm) 0;
1117
+ font-size: 13px;
1118
+ color: var(--tc-text-muted);
1119
+ }
1120
+
1121
+ /* ═══════════════════════════════════════════════════════════════
1122
+ ENHANCED LOADER & EMPTY STATE
1123
+ ═══════════════════════════════════════════════════════════════ */
1124
+
1125
+ .tc-loader {
1126
+ display: flex;
1127
+ flex-direction: column;
1128
+ align-items: center;
1129
+ justify-content: center;
1130
+ height: 100%;
1131
+ gap: var(--tc-spacing);
1132
+ background: var(--tc-bg);
1133
+ }
1134
+
1135
+ .tc-loader-spinner {
1136
+ width: 40px;
1137
+ height: 40px;
1138
+ border: 3px solid var(--tc-border);
1139
+ border-top-color: var(--tc-primary);
1140
+ border-radius: 50%;
1141
+ animation: tc-spin 0.8s linear infinite;
1142
+ }
1143
+
1144
+ .tc-loader p {
1145
+ color: var(--tc-text-muted);
1146
+ font-size: 14px;
1147
+ }
1148
+
1149
+ .tc-empty-state {
1150
+ display: flex;
1151
+ flex-direction: column;
1152
+ align-items: center;
1153
+ justify-content: center;
1154
+ height: 100%;
1155
+ text-align: center;
1156
+ padding: var(--tc-spacing-lg);
1157
+ background: var(--tc-bg);
1158
+ }
1159
+
1160
+ .tc-empty-icon {
1161
+ font-size: 64px;
1162
+ margin-bottom: var(--tc-spacing);
1163
+ opacity: 0.5;
1164
+ }
1165
+
1166
+ .tc-empty-state h3 {
1167
+ font-size: 18px;
1168
+ font-weight: 600;
1169
+ margin: 0 0 var(--tc-spacing-sm);
1170
+ }
1171
+
1172
+ .tc-empty-state p {
1173
+ color: var(--tc-text-muted);
1174
+ margin: 0 0 var(--tc-spacing);
1175
+ }
1176
+
1177
+ /* ═══════════════════════════════════════════════════════════════
1178
+ ENHANCED DESIGN GRID
1179
+ ═══════════════════════════════════════════════════════════════ */
1180
+
1181
+ .tc-design-grid {
1182
+ display: grid;
1183
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
1184
+ gap: var(--tc-spacing);
1185
+ background: var(--tc-bg);
1186
+ }
1187
+
1188
+ .tc-design-card {
1189
+ background: var(--tc-bg);
1190
+ border: 1px solid var(--tc-border-light);
1191
+ border-radius: var(--tc-border-radius);
1192
+ overflow: hidden;
1193
+ transition: var(--tc-transition);
1194
+ cursor: pointer;
1195
+ }
1196
+
1197
+ .tc-design-card:hover {
1198
+ border-color: var(--tc-border);
1199
+ box-shadow: 0 8px 24px var(--tc-shadow);
1200
+ transform: translateY(-2px);
1201
+ }
1202
+
1203
+ .tc-design-card.selected {
1204
+ border-color: var(--tc-primary);
1205
+ box-shadow: 0 0 0 2px var(--tc-primary-light);
1206
+ }
1207
+
1208
+ .tc-design-thumbnail {
1209
+ position: relative;
1210
+ width: 100%;
1211
+ aspect-ratio: 16 / 10;
1212
+ background: linear-gradient(135deg, var(--tc-bg-secondary) 0%, var(--tc-bg-tertiary) 100%);
1213
+ overflow: hidden;
1214
+ }
1215
+
1216
+ .tc-design-thumbnail img {
1217
+ width: 100%;
1218
+ height: 100%;
1219
+ object-fit: cover;
1220
+ transition: transform 0.3s ease;
1221
+ }
1222
+
1223
+ .tc-design-card:hover .tc-design-thumbnail img {
1224
+ transform: scale(1.05);
1225
+ }
1226
+
1227
+ /* Card overlay */
1228
+ .tc-card-overlay {
1229
+ position: absolute;
1230
+ inset: 0;
1231
+ background: rgba(0, 0, 0, 0.6);
1232
+ display: flex;
1233
+ align-items: center;
1234
+ justify-content: center;
1235
+ opacity: 0;
1236
+ transition: var(--tc-transition);
1237
+ }
1238
+
1239
+ .tc-design-card:hover .tc-card-overlay {
1240
+ opacity: 1;
1241
+ }
1242
+
1243
+ .tc-overlay-actions {
1244
+ display: flex;
1245
+ gap: 8px;
1246
+ }
1247
+
1248
+ .tc-overlay-btn {
1249
+ width: 40px;
1250
+ height: 40px;
1251
+ border: none;
1252
+ border-radius: 50%;
1253
+ background: rgba(255, 255, 255, 0.9);
1254
+ cursor: pointer;
1255
+ font-size: 16px;
1256
+ transition: var(--tc-transition);
1257
+ display: flex;
1258
+ align-items: center;
1259
+ justify-content: center;
1260
+ }
1261
+
1262
+ .tc-overlay-btn:hover {
1263
+ background: white;
1264
+ transform: scale(1.1);
1265
+ }
1266
+
1267
+ /* Card checkbox */
1268
+ .tc-card-checkbox {
1269
+ position: absolute;
1270
+ top: 10px;
1271
+ left: 10px;
1272
+ opacity: 0;
1273
+ transition: var(--tc-transition);
1274
+ }
1275
+
1276
+ .tc-design-card:hover .tc-card-checkbox,
1277
+ .tc-design-card.selected .tc-card-checkbox {
1278
+ opacity: 1;
1279
+ }
1280
+
1281
+ .tc-card-checkbox input {
1282
+ width: 18px;
1283
+ height: 18px;
1284
+ cursor: pointer;
1285
+ accent-color: var(--tc-primary);
1286
+ }
1287
+
1288
+ /* Favorite button on card - always visible */
1289
+ .tc-card-fav-btn {
1290
+ position: absolute;
1291
+ top: 10px;
1292
+ right: 10px;
1293
+ width: 32px;
1294
+ height: 32px;
1295
+ border: none;
1296
+ border-radius: 50%;
1297
+ background: rgba(255, 255, 255, 0.9);
1298
+ cursor: pointer;
1299
+ font-size: 16px;
1300
+ display: flex;
1301
+ align-items: center;
1302
+ justify-content: center;
1303
+ transition: var(--tc-transition);
1304
+ color: var(--tc-text-light);
1305
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
1306
+ z-index: 5;
1307
+ }
1308
+
1309
+ .tc-card-fav-btn:hover {
1310
+ transform: scale(1.1);
1311
+ background: white;
1312
+ }
1313
+
1314
+ .tc-card-fav-btn.active {
1315
+ color: var(--tc-favorite);
1316
+ }
1317
+
1318
+ .tc-card-fav-btn.active:hover {
1319
+ color: var(--tc-warning);
1320
+ }
1321
+
1322
+ /* Design info */
1323
+ .tc-design-info {
1324
+ padding: 14px;
1325
+ }
1326
+
1327
+ .tc-design-title-row {
1328
+ display: flex;
1329
+ align-items: center;
1330
+ justify-content: space-between;
1331
+ gap: 8px;
1332
+ }
1333
+
1334
+ .tc-design-title {
1335
+ font-size: 14px;
1336
+ font-weight: 500;
1337
+ overflow: hidden;
1338
+ text-overflow: ellipsis;
1339
+ white-space: nowrap;
1340
+ flex: 1;
1341
+ }
1342
+
1343
+ .tc-design-meta {
1344
+ display: flex;
1345
+ align-items: center;
1346
+ gap: 4px;
1347
+ font-size: 12px;
1348
+ color: var(--tc-text-muted);
1349
+ margin-top: 6px;
1350
+ }
1351
+
1352
+ .tc-meta-dot {
1353
+ opacity: 0.5;
1354
+ }
1355
+
1356
+ .tc-fav-btn {
1357
+ background: none;
1358
+ border: none;
1359
+ font-size: 16px;
1360
+ cursor: pointer;
1361
+ color: var(--tc-text-light);
1362
+ padding: 4px;
1363
+ transition: var(--tc-transition);
1364
+ }
1365
+
1366
+ .tc-fav-btn:hover,
1367
+ .tc-fav-btn.active {
1368
+ color: var(--tc-favorite);
1369
+ }
1370
+
1371
+ /* ═══════════════════════════════════════════════════════════════
1372
+ LIST VIEW
1373
+ ═══════════════════════════════════════════════════════════════ */
1374
+
1375
+ .tc-design-list {
1376
+ display: flex;
1377
+ flex-direction: column;
1378
+ gap: 2px;
1379
+ background: var(--tc-bg);
1380
+ }
1381
+
1382
+ .tc-design-row {
1383
+ display: flex;
1384
+ align-items: center;
1385
+ gap: var(--tc-spacing);
1386
+ padding: 12px var(--tc-spacing);
1387
+ background: var(--tc-bg);
1388
+ border-radius: var(--tc-border-radius-sm);
1389
+ cursor: pointer;
1390
+ transition: var(--tc-transition);
1391
+ }
1392
+
1393
+ .tc-design-row:hover {
1394
+ background: var(--tc-bg-secondary);
1395
+ }
1396
+
1397
+ .tc-design-row.selected {
1398
+ background: var(--tc-primary-light);
1399
+ }
1400
+
1401
+ .tc-design-checkbox {
1402
+ width: 18px;
1403
+ height: 18px;
1404
+ accent-color: var(--tc-primary);
1405
+ }
1406
+
1407
+ .tc-row-thumbnail {
1408
+ width: 60px;
1409
+ height: 40px;
1410
+ border-radius: var(--tc-border-radius-sm);
1411
+ overflow: hidden;
1412
+ background: var(--tc-bg-secondary);
1413
+ flex-shrink: 0;
1414
+ }
1415
+
1416
+ .tc-row-thumbnail img {
1417
+ width: 100%;
1418
+ height: 100%;
1419
+ object-fit: cover;
1420
+ }
1421
+
1422
+ .tc-row-info {
1423
+ flex: 1;
1424
+ min-width: 0;
1425
+ }
1426
+
1427
+ .tc-row-title {
1428
+ font-size: 14px;
1429
+ font-weight: 500;
1430
+ overflow: hidden;
1431
+ text-overflow: ellipsis;
1432
+ white-space: nowrap;
1433
+ }
1434
+
1435
+ .tc-row-meta {
1436
+ font-size: 12px;
1437
+ color: var(--tc-text-muted);
1438
+ margin-top: 2px;
1439
+ }
1440
+
1441
+ .tc-row-actions {
1442
+ display: flex;
1443
+ align-items: center;
1444
+ gap: 8px;
1445
+ opacity: 0;
1446
+ transition: var(--tc-transition);
1447
+ }
1448
+
1449
+ .tc-design-row:hover .tc-row-actions {
1450
+ opacity: 1;
1451
+ }
1452
+
1453
+ /* ═══════════════════════════════════════════════════════════════
1454
+ MODALS - Premium
1455
+ ═══════════════════════════════════════════════════════════════ */
1456
+
1457
+ .tc-modal-overlay {
1458
+ position: fixed;
1459
+ inset: 0;
1460
+ background: rgba(0, 0, 0, 0.6);
1461
+ backdrop-filter: blur(4px);
1462
+ -webkit-backdrop-filter: blur(4px);
1463
+ display: flex;
1464
+ align-items: center;
1465
+ justify-content: center;
1466
+ z-index: 1000;
1467
+ animation: tc-fade-in 0.2s ease;
1468
+ }
1469
+
1470
+ .tc-preview-modal,
1471
+ .tc-export-modal,
1472
+ .tc-collection-modal,
1473
+ .tc-editor-modal {
1474
+ background: var(--tc-bg);
1475
+ border-radius: var(--tc-border-radius-xl);
1476
+ box-shadow: var(--tc-shadow-xl);
1477
+ max-width: 95vw;
1478
+ max-height: 95vh;
1479
+ overflow: hidden;
1480
+ animation: tc-scale-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
1481
+ border: 1px solid var(--tc-border-light);
1482
+ }
1483
+
1484
+ .tc-preview-modal {
1485
+ width: 900px;
1486
+ }
1487
+
1488
+ .tc-export-modal {
1489
+ width: 440px;
1490
+ }
1491
+
1492
+ .tc-editor-modal {
1493
+ width: 95vw;
1494
+ height: 90vh;
1495
+ }
1496
+
1497
+ .tc-preview-header,
1498
+ .tc-modal-header {
1499
+ display: flex;
1500
+ align-items: center;
1501
+ justify-content: space-between;
1502
+ padding: var(--tc-spacing) var(--tc-spacing-lg);
1503
+ border-bottom: 1px solid var(--tc-border-light);
1504
+ background: var(--tc-bg);
1505
+ }
1506
+
1507
+ .tc-preview-header h3,
1508
+ .tc-modal-header h3 {
1509
+ font-size: 18px;
1510
+ font-weight: 700;
1511
+ margin: 0;
1512
+ display: flex;
1513
+ align-items: center;
1514
+ gap: var(--tc-spacing-sm);
1515
+ }
1516
+
1517
+ .tc-modal-subtitle {
1518
+ font-size: 13px;
1519
+ color: var(--tc-text-muted);
1520
+ font-weight: 400;
1521
+ }
1522
+
1523
+ .tc-modal-close {
1524
+ width: 36px;
1525
+ height: 36px;
1526
+ display: flex;
1527
+ align-items: center;
1528
+ justify-content: center;
1529
+ background: var(--tc-bg-secondary);
1530
+ border: none;
1531
+ border-radius: var(--tc-border-radius);
1532
+ font-size: 18px;
1533
+ cursor: pointer;
1534
+ color: var(--tc-text-muted);
1535
+ transition: var(--tc-transition);
1536
+ }
1537
+
1538
+ .tc-modal-close:hover {
1539
+ background: var(--tc-danger-light);
1540
+ color: var(--tc-danger);
1541
+ transform: rotate(90deg);
1542
+ }
1543
+
1544
+ .tc-preview-body {
1545
+ display: flex;
1546
+ gap: var(--tc-spacing);
1547
+ padding: var(--tc-spacing);
1548
+ }
1549
+
1550
+ .tc-preview-image {
1551
+ flex: 1;
1552
+ background: var(--tc-bg-secondary);
1553
+ border-radius: var(--tc-border-radius);
1554
+ overflow: hidden;
1555
+ display: flex;
1556
+ align-items: center;
1557
+ justify-content: center;
1558
+ min-height: 300px;
1559
+ }
1560
+
1561
+ .tc-preview-image img {
1562
+ max-width: 100%;
1563
+ max-height: 400px;
1564
+ object-fit: contain;
1565
+ }
1566
+
1567
+ .tc-preview-placeholder {
1568
+ color: var(--tc-text-muted);
1569
+ font-size: 14px;
1570
+ }
1571
+
1572
+ .tc-preview-details {
1573
+ width: 200px;
1574
+ flex-shrink: 0;
1575
+ }
1576
+
1577
+ .tc-detail-row {
1578
+ display: flex;
1579
+ justify-content: space-between;
1580
+ padding: 10px 0;
1581
+ border-bottom: 1px solid var(--tc-border-light);
1582
+ font-size: 13px;
1583
+ }
1584
+
1585
+ .tc-detail-label {
1586
+ color: var(--tc-text-muted);
1587
+ }
1588
+
1589
+ .tc-preview-footer,
1590
+ .tc-modal-footer {
1591
+ display: flex;
1592
+ align-items: center;
1593
+ justify-content: space-between;
1594
+ padding: var(--tc-spacing);
1595
+ border-top: 1px solid var(--tc-border-light);
1596
+ background: var(--tc-bg-secondary);
1597
+ }
1598
+
1599
+ .tc-preview-actions {
1600
+ display: flex;
1601
+ gap: var(--tc-spacing-sm);
1602
+ }
1603
+
1604
+ .tc-modal-body {
1605
+ padding: var(--tc-spacing);
1606
+ }
1607
+
1608
+ .tc-modal-footer {
1609
+ justify-content: flex-end;
1610
+ gap: var(--tc-spacing-sm);
1611
+ }
1612
+
1613
+ /* Export options */
1614
+ .tc-export-options {
1615
+ display: flex;
1616
+ flex-direction: column;
1617
+ gap: var(--tc-spacing-sm);
1618
+ }
1619
+
1620
+ .tc-export-option {
1621
+ display: flex;
1622
+ cursor: pointer;
1623
+ }
1624
+
1625
+ .tc-export-option input {
1626
+ display: none;
1627
+ }
1628
+
1629
+ .tc-export-option-content {
1630
+ flex: 1;
1631
+ display: flex;
1632
+ align-items: center;
1633
+ gap: 12px;
1634
+ padding: 14px;
1635
+ border: 2px solid var(--tc-border);
1636
+ border-radius: var(--tc-border-radius);
1637
+ transition: var(--tc-transition);
1638
+ }
1639
+
1640
+ .tc-export-option input:checked + .tc-export-option-content {
1641
+ border-color: var(--tc-primary);
1642
+ background: var(--tc-primary-light);
1643
+ }
1644
+
1645
+ .tc-export-icon {
1646
+ font-size: 24px;
1647
+ }
1648
+
1649
+ .tc-export-format {
1650
+ font-weight: 600;
1651
+ font-size: 14px;
1652
+ }
1653
+
1654
+ .tc-export-desc {
1655
+ font-size: 12px;
1656
+ color: var(--tc-text-muted);
1657
+ }
1658
+
1659
+ /* ═══════════════════════════════════════════════════════════════
1660
+ CONTEXT MENU - Premium
1661
+ ═══════════════════════════════════════════════════════════════ */
1662
+
1663
+ .tc-context-menu {
1664
+ position: fixed;
1665
+ background: var(--tc-bg-glass);
1666
+ backdrop-filter: blur(20px);
1667
+ -webkit-backdrop-filter: blur(20px);
1668
+ border: 1px solid var(--tc-border-light);
1669
+ border-radius: var(--tc-border-radius-lg);
1670
+ box-shadow: var(--tc-shadow-lg);
1671
+ min-width: 220px;
1672
+ padding: 8px;
1673
+ z-index: 1001;
1674
+ animation: tc-scale-in 0.15s ease;
1675
+ }
1676
+
1677
+ .tc-context-item {
1678
+ display: flex;
1679
+ align-items: center;
1680
+ gap: 12px;
1681
+ padding: 10px 14px;
1682
+ border-radius: var(--tc-border-radius);
1683
+ cursor: pointer;
1684
+ font-size: 13px;
1685
+ font-weight: 500;
1686
+ transition: var(--tc-transition);
1687
+ position: relative;
1688
+ }
1689
+
1690
+ .tc-context-item:hover {
1691
+ background: var(--tc-primary-light);
1692
+ color: var(--tc-primary);
1693
+ }
1694
+
1695
+ .tc-context-item.danger {
1696
+ color: var(--tc-danger);
1697
+ }
1698
+
1699
+ .tc-context-item.danger:hover {
1700
+ background: var(--tc-danger-light);
1701
+ color: var(--tc-danger);
1702
+ }
1703
+
1704
+ .tc-context-icon {
1705
+ font-size: 16px;
1706
+ width: 22px;
1707
+ text-align: center;
1708
+ flex-shrink: 0;
1709
+ }
1710
+
1711
+ .tc-context-divider {
1712
+ height: 1px;
1713
+ background: linear-gradient(90deg, transparent, var(--tc-border), transparent);
1714
+ margin: 8px 12px;
1715
+ }
1716
+
1717
+ .tc-context-item.has-submenu::after {
1718
+ content: '›';
1719
+ margin-left: auto;
1720
+ font-size: 16px;
1721
+ opacity: 0.5;
1722
+ }
1723
+
1724
+ .tc-submenu {
1725
+ position: absolute;
1726
+ left: 100%;
1727
+ top: -8px;
1728
+ background: var(--tc-bg-glass);
1729
+ backdrop-filter: blur(20px);
1730
+ -webkit-backdrop-filter: blur(20px);
1731
+ border: 1px solid var(--tc-border-light);
1732
+ border-radius: var(--tc-border-radius-lg);
1733
+ box-shadow: var(--tc-shadow-lg);
1734
+ min-width: 200px;
1735
+ padding: 8px;
1736
+ margin-left: 4px;
1737
+ }
1738
+
1739
+ /* ═══════════════════════════════════════════════════════════════
1740
+ TOAST NOTIFICATIONS - Premium
1741
+ ═══════════════════════════════════════════════════════════════ */
1742
+
1743
+ .tc-toast-container {
1744
+ position: fixed;
1745
+ bottom: 24px;
1746
+ right: 24px;
1747
+ display: flex;
1748
+ flex-direction: column;
1749
+ gap: 12px;
1750
+ z-index: 1002;
1751
+ pointer-events: none;
1752
+ }
1753
+
1754
+ .tc-toast {
1755
+ display: flex;
1756
+ align-items: center;
1757
+ gap: 12px;
1758
+ padding: 14px 20px;
1759
+ background: var(--tc-bg);
1760
+ border: 1px solid var(--tc-border-light);
1761
+ border-radius: var(--tc-border-radius-lg);
1762
+ box-shadow: var(--tc-shadow-lg);
1763
+ font-size: 14px;
1764
+ font-weight: 500;
1765
+ transform: translateX(120%);
1766
+ opacity: 0;
1767
+ transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
1768
+ pointer-events: auto;
1769
+ max-width: 400px;
1770
+ }
1771
+
1772
+ .tc-toast.show {
1773
+ transform: translateX(0);
1774
+ opacity: 1;
1775
+ }
1776
+
1777
+ .tc-toast-icon {
1778
+ font-size: 20px;
1779
+ flex-shrink: 0;
1780
+ }
1781
+
1782
+ .tc-toast-content {
1783
+ flex: 1;
1784
+ }
1785
+
1786
+ .tc-toast-title {
1787
+ font-weight: 600;
1788
+ margin-bottom: 2px;
1789
+ }
1790
+
1791
+ .tc-toast-message {
1792
+ font-size: 13px;
1793
+ color: var(--tc-text-muted);
1794
+ }
1795
+
1796
+ .tc-toast-close {
1797
+ width: 28px;
1798
+ height: 28px;
1799
+ border: none;
1800
+ background: var(--tc-bg-secondary);
1801
+ border-radius: var(--tc-border-radius-sm);
1802
+ cursor: pointer;
1803
+ color: var(--tc-text-muted);
1804
+ display: flex;
1805
+ align-items: center;
1806
+ justify-content: center;
1807
+ transition: var(--tc-transition);
1808
+ flex-shrink: 0;
1809
+ }
1810
+
1811
+ .tc-toast-close:hover {
1812
+ background: var(--tc-danger-light);
1813
+ color: var(--tc-danger);
1814
+ }
1815
+
1816
+ .tc-toast.success {
1817
+ border-left: 4px solid var(--tc-success);
1818
+ }
1819
+
1820
+ .tc-toast.success .tc-toast-icon {
1821
+ color: var(--tc-success);
1822
+ }
1823
+
1824
+ .tc-toast.error {
1825
+ border-left: 4px solid var(--tc-danger);
1826
+ }
1827
+
1828
+ .tc-toast.error .tc-toast-icon {
1829
+ color: var(--tc-danger);
1830
+ }
1831
+
1832
+ .tc-toast.warning {
1833
+ border-left: 4px solid var(--tc-warning);
1834
+ }
1835
+
1836
+ .tc-toast.warning .tc-toast-icon {
1837
+ color: var(--tc-warning);
1838
+ }
1839
+
1840
+ .tc-toast.info {
1841
+ border-left: 4px solid var(--tc-info);
1842
+ }
1843
+
1844
+ .tc-toast.info .tc-toast-icon {
1845
+ color: var(--tc-info);
1846
+ }
1847
+
1848
+ /* ═══════════════════════════════════════════════════════════════
1849
+ LOAD MORE
1850
+ ═══════════════════════════════════════════════════════════════ */
1851
+
1852
+ .tc-load-more {
1853
+ display: block;
1854
+ width: 100%;
1855
+ margin-top: var(--tc-spacing);
1856
+ padding: 14px;
1857
+ }
1858
+
1859
+ /* ═══════════════════════════════════════════════════════════════
1860
+ COLLECTIONS
1861
+ ═══════════════════════════════════════════════════════════════ */
1862
+
1863
+ .tc-sidebar-section-header {
1864
+ display: flex;
1865
+ align-items: center;
1866
+ justify-content: space-between;
1867
+ font-size: 11px;
1868
+ font-weight: 600;
1869
+ text-transform: uppercase;
1870
+ letter-spacing: 0.5px;
1871
+ color: var(--tc-text-light);
1872
+ padding: 16px 12px 8px;
1873
+ }
1874
+
1875
+ .tc-sidebar-add-btn {
1876
+ width: 20px;
1877
+ height: 20px;
1878
+ border: none;
1879
+ border-radius: 4px;
1880
+ background: var(--tc-primary-light);
1881
+ color: var(--tc-primary);
1882
+ font-size: 14px;
1883
+ font-weight: 600;
1884
+ cursor: pointer;
1885
+ display: flex;
1886
+ align-items: center;
1887
+ justify-content: center;
1888
+ transition: var(--tc-transition);
1889
+ }
1890
+
1891
+ .tc-sidebar-add-btn:hover {
1892
+ background: var(--tc-primary);
1893
+ color: white;
1894
+ }
1895
+
1896
+ .tc-sidebar-hint {
1897
+ font-size: 12px;
1898
+ color: var(--tc-text-light);
1899
+ padding: 8px 12px;
1900
+ font-style: italic;
1901
+ }
1902
+
1903
+ .tc-collection-modal {
1904
+ background: var(--tc-bg);
1905
+ border-radius: var(--tc-border-radius-lg);
1906
+ box-shadow: 0 20px 60px var(--tc-shadow-lg);
1907
+ width: 400px;
1908
+ max-width: 90vw;
1909
+ animation: tc-slide-up 0.3s ease;
1910
+ }
1911
+
1912
+ .tc-form-group {
1913
+ margin-bottom: var(--tc-spacing);
1914
+ }
1915
+
1916
+ .tc-form-group label {
1917
+ display: block;
1918
+ font-size: 13px;
1919
+ font-weight: 500;
1920
+ margin-bottom: 6px;
1921
+ color: var(--tc-text);
1922
+ }
1923
+
1924
+ .tc-input {
1925
+ width: 100%;
1926
+ padding: 10px 12px;
1927
+ border: 1px solid var(--tc-border);
1928
+ border-radius: var(--tc-border-radius-sm);
1929
+ font-size: 14px;
1930
+ background: var(--tc-bg);
1931
+ color: var(--tc-text);
1932
+ transition: var(--tc-transition);
1933
+ }
1934
+
1935
+ .tc-input:focus {
1936
+ outline: none;
1937
+ border-color: var(--tc-primary);
1938
+ box-shadow: 0 0 0 3px var(--tc-primary-light);
1939
+ }
1940
+
1941
+ .tc-color-picker {
1942
+ display: flex;
1943
+ gap: 8px;
1944
+ flex-wrap: wrap;
1945
+ }
1946
+
1947
+ .tc-color-option {
1948
+ width: 32px;
1949
+ height: 32px;
1950
+ border: 2px solid transparent;
1951
+ border-radius: 50%;
1952
+ cursor: pointer;
1953
+ transition: var(--tc-transition);
1954
+ }
1955
+
1956
+ .tc-color-option:hover {
1957
+ transform: scale(1.1);
1958
+ }
1959
+
1960
+ .tc-color-option.selected {
1961
+ border-color: var(--tc-text);
1962
+ box-shadow: 0 0 0 2px var(--tc-bg);
1963
+ }
1964
+
1965
+ /* Submenu */
1966
+ .tc-context-item.has-submenu {
1967
+ position: relative;
1968
+ }
1969
+
1970
+ .tc-submenu-arrow {
1971
+ margin-left: auto;
1972
+ font-size: 10px;
1973
+ opacity: 0.5;
1974
+ }
1975
+
1976
+ .tc-submenu {
1977
+ position: absolute;
1978
+ left: 100%;
1979
+ top: 0;
1980
+ background: var(--tc-bg);
1981
+ border: 1px solid var(--tc-border);
1982
+ border-radius: var(--tc-border-radius);
1983
+ box-shadow: 0 8px 24px var(--tc-shadow-lg);
1984
+ min-width: 180px;
1985
+ padding: 6px;
1986
+ z-index: 1002;
1987
+ }
1988
+
1989
+ .tc-context-item.checked {
1990
+ background: var(--tc-primary-light);
1991
+ }
1992
+
1993
+ .tc-context-item.disabled {
1994
+ opacity: 0.5;
1995
+ cursor: default;
1996
+ }
1997
+
1998
+ .tc-check {
1999
+ margin-left: auto;
2000
+ color: var(--tc-primary);
2001
+ }
2002
+
2003
+ /* ═══════════════════════════════════════════════════════════════
2004
+ THEME PICKER
2005
+ ═══════════════════════════════════════════════════════════════ */
2006
+
2007
+ .tc-theme-picker {
2008
+ position: relative;
2009
+ }
2010
+
2011
+ .tc-theme-btn {
2012
+ display: flex;
2013
+ align-items: center;
2014
+ gap: 8px;
2015
+ padding: 6px 12px;
2016
+ background: var(--tc-bg);
2017
+ border: 1px solid var(--tc-border);
2018
+ border-radius: var(--tc-border-radius-sm);
2019
+ cursor: pointer;
2020
+ font-size: 13px;
2021
+ color: var(--tc-text);
2022
+ transition: var(--tc-transition);
2023
+ }
2024
+
2025
+ .tc-theme-btn:hover {
2026
+ border-color: var(--tc-primary);
2027
+ }
2028
+
2029
+ .tc-theme-colors {
2030
+ display: flex;
2031
+ gap: 2px;
2032
+ }
2033
+
2034
+ .tc-theme-color-dot {
2035
+ width: 12px;
2036
+ height: 12px;
2037
+ border-radius: 50%;
2038
+ border: 1px solid rgba(0,0,0,0.1);
2039
+ }
2040
+
2041
+ .tc-theme-dropdown {
2042
+ position: absolute;
2043
+ top: 100%;
2044
+ right: 0;
2045
+ margin-top: 4px;
2046
+ background: var(--tc-bg);
2047
+ border: 1px solid var(--tc-border);
2048
+ border-radius: var(--tc-border-radius);
2049
+ box-shadow: 0 8px 24px var(--tc-shadow-lg);
2050
+ min-width: 220px;
2051
+ max-height: 400px;
2052
+ overflow-y: auto;
2053
+ z-index: 100;
2054
+ padding: 6px;
2055
+ }
2056
+
2057
+ .tc-theme-option {
2058
+ display: flex;
2059
+ align-items: center;
2060
+ gap: 10px;
2061
+ padding: 10px 12px;
2062
+ border-radius: var(--tc-border-radius-sm);
2063
+ cursor: pointer;
2064
+ transition: var(--tc-transition);
2065
+ }
2066
+
2067
+ .tc-theme-option:hover {
2068
+ background: var(--tc-bg-secondary);
2069
+ }
2070
+
2071
+ .tc-theme-option.active {
2072
+ background: var(--tc-primary-light);
2073
+ }
2074
+
2075
+ .tc-theme-option-colors {
2076
+ display: flex;
2077
+ gap: 2px;
2078
+ }
2079
+
2080
+ .tc-theme-option-dot {
2081
+ width: 16px;
2082
+ height: 16px;
2083
+ border-radius: 50%;
2084
+ border: 1px solid rgba(0,0,0,0.1);
2085
+ }
2086
+
2087
+ .tc-theme-option-name {
2088
+ flex: 1;
2089
+ font-size: 13px;
2090
+ }
2091
+
2092
+ .tc-theme-option-check {
2093
+ color: var(--tc-primary);
2094
+ font-size: 14px;
2095
+ }
2096
+
2097
+ /* ═══════════════════════════════════════════════════════════════
2098
+ SIDEBAR ENHANCEMENTS
2099
+ ═══════════════════════════════════════════════════════════════ */
2100
+
2101
+ .tc-sidebar-divider {
2102
+ height: 1px;
2103
+ background: var(--tc-border);
2104
+ margin: 12px 0;
2105
+ }
2106
+
2107
+ .tc-sidebar-badge {
2108
+ background: var(--tc-primary);
2109
+ color: white;
2110
+ font-size: 10px;
2111
+ padding: 2px 6px;
2112
+ border-radius: 10px;
2113
+ margin-left: auto;
2114
+ }
2115
+
2116
+ /* ═══════════════════════════════════════════════════════════════
2117
+ FEATURE VIEWS - COMMON STYLES
2118
+ ═══════════════════════════════════════════════════════════════ */
2119
+
2120
+ .tc-feature-view {
2121
+ padding: var(--tc-spacing-lg);
2122
+ background: var(--tc-bg);
2123
+ min-height: 100%;
2124
+ }
2125
+
2126
+ .tc-view-header {
2127
+ margin-bottom: var(--tc-spacing-lg);
2128
+ }
2129
+
2130
+ .tc-view-header h2 {
2131
+ font-size: 24px;
2132
+ font-weight: 600;
2133
+ color: var(--tc-text);
2134
+ margin: 0 0 4px 0;
2135
+ }
2136
+
2137
+ .tc-view-header p {
2138
+ color: var(--tc-text-muted);
2139
+ margin: 0 0 16px 0;
2140
+ }
2141
+
2142
+ .tc-hint {
2143
+ color: var(--tc-text-muted);
2144
+ font-size: 13px;
2145
+ font-style: italic;
2146
+ }
2147
+
2148
+ /* ═══════════════════════════════════════════════════════════════
2149
+ BRAND KIT VIEW
2150
+ ═══════════════════════════════════════════════════════════════ */
2151
+
2152
+ .tc-brand-kit-content {
2153
+ display: flex;
2154
+ flex-direction: column;
2155
+ gap: var(--tc-spacing-lg);
2156
+ }
2157
+
2158
+ .tc-brand-section {
2159
+ background: var(--tc-bg-secondary);
2160
+ border-radius: var(--tc-border-radius);
2161
+ padding: var(--tc-spacing);
2162
+ }
2163
+
2164
+ .tc-brand-section h3 {
2165
+ font-size: 14px;
2166
+ font-weight: 600;
2167
+ margin: 0 0 12px 0;
2168
+ color: var(--tc-text);
2169
+ }
2170
+
2171
+ .tc-brand-colors-grid {
2172
+ display: flex;
2173
+ flex-wrap: wrap;
2174
+ gap: 12px;
2175
+ }
2176
+
2177
+ .tc-color-swatch {
2178
+ width: 80px;
2179
+ height: 80px;
2180
+ border-radius: var(--tc-border-radius);
2181
+ display: flex;
2182
+ flex-direction: column;
2183
+ align-items: center;
2184
+ justify-content: flex-end;
2185
+ padding: 8px;
2186
+ cursor: pointer;
2187
+ position: relative;
2188
+ transition: var(--tc-transition);
2189
+ }
2190
+
2191
+ .tc-color-swatch:hover {
2192
+ transform: scale(1.05);
2193
+ }
2194
+
2195
+ .tc-color-hex {
2196
+ font-size: 10px;
2197
+ font-weight: 600;
2198
+ color: white;
2199
+ text-shadow: 0 1px 2px rgba(0,0,0,0.5);
2200
+ }
2201
+
2202
+ .tc-color-swatch .tc-copy-btn {
2203
+ position: absolute;
2204
+ top: 4px;
2205
+ right: 4px;
2206
+ background: rgba(255,255,255,0.9);
2207
+ border: none;
2208
+ border-radius: 4px;
2209
+ padding: 4px;
2210
+ cursor: pointer;
2211
+ opacity: 0;
2212
+ transition: var(--tc-transition);
2213
+ }
2214
+
2215
+ .tc-color-swatch:hover .tc-copy-btn {
2216
+ opacity: 1;
2217
+ }
2218
+
2219
+ .tc-add-color-btn {
2220
+ width: 80px;
2221
+ height: 80px;
2222
+ border: 2px dashed var(--tc-border);
2223
+ border-radius: var(--tc-border-radius);
2224
+ display: flex;
2225
+ flex-direction: column;
2226
+ align-items: center;
2227
+ justify-content: center;
2228
+ gap: 4px;
2229
+ cursor: pointer;
2230
+ color: var(--tc-text-muted);
2231
+ font-size: 12px;
2232
+ transition: var(--tc-transition);
2233
+ }
2234
+
2235
+ .tc-add-color-btn:hover {
2236
+ border-color: var(--tc-primary);
2237
+ color: var(--tc-primary);
2238
+ }
2239
+
2240
+ .tc-add-color-btn span:first-child {
2241
+ font-size: 24px;
2242
+ }
2243
+
2244
+ /* ═══════════════════════════════════════════════════════════════
2245
+ TEMPLATES VIEW
2246
+ ═══════════════════════════════════════════════════════════════ */
2247
+
2248
+ .tc-template-categories {
2249
+ display: grid;
2250
+ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
2251
+ gap: var(--tc-spacing);
2252
+ }
2253
+
2254
+ .tc-template-category {
2255
+ background: var(--tc-bg-secondary);
2256
+ border: 1px solid var(--tc-border-light);
2257
+ border-radius: var(--tc-border-radius);
2258
+ padding: var(--tc-spacing-lg);
2259
+ display: flex;
2260
+ flex-direction: column;
2261
+ align-items: center;
2262
+ gap: 12px;
2263
+ cursor: pointer;
2264
+ transition: var(--tc-transition);
2265
+ }
2266
+
2267
+ .tc-template-category:hover {
2268
+ border-color: var(--tc-primary);
2269
+ transform: translateY(-2px);
2270
+ box-shadow: var(--tc-shadow);
2271
+ }
2272
+
2273
+ .tc-category-icon {
2274
+ font-size: 40px;
2275
+ }
2276
+
2277
+ .tc-category-name {
2278
+ font-weight: 500;
2279
+ color: var(--tc-text);
2280
+ }
2281
+
2282
+ /* ═══════════════════════════════════════════════════════════════
2283
+ SCHEDULED EXPORTS VIEW
2284
+ ═══════════════════════════════════════════════════════════════ */
2285
+
2286
+ .tc-scheduled-list {
2287
+ display: flex;
2288
+ flex-direction: column;
2289
+ gap: 12px;
2290
+ }
2291
+
2292
+ .tc-scheduled-item {
2293
+ display: flex;
2294
+ align-items: center;
2295
+ justify-content: space-between;
2296
+ background: var(--tc-bg-secondary);
2297
+ border-radius: var(--tc-border-radius);
2298
+ padding: var(--tc-spacing);
2299
+ }
2300
+
2301
+ .tc-scheduled-design {
2302
+ display: flex;
2303
+ align-items: center;
2304
+ gap: 12px;
2305
+ }
2306
+
2307
+ .tc-scheduled-design img {
2308
+ width: 60px;
2309
+ height: 60px;
2310
+ object-fit: cover;
2311
+ border-radius: var(--tc-border-radius-sm);
2312
+ }
2313
+
2314
+ .tc-scheduled-info {
2315
+ display: flex;
2316
+ flex-direction: column;
2317
+ gap: 4px;
2318
+ }
2319
+
2320
+ .tc-scheduled-info strong {
2321
+ color: var(--tc-text);
2322
+ }
2323
+
2324
+ .tc-scheduled-info span {
2325
+ font-size: 13px;
2326
+ color: var(--tc-text-muted);
2327
+ }
2328
+
2329
+ /* ═══════════════════════════════════════════════════════════════
2330
+ COMPARE VIEW
2331
+ ═══════════════════════════════════════════════════════════════ */
2332
+
2333
+ .tc-compare-container {
2334
+ margin-top: var(--tc-spacing);
2335
+ }
2336
+
2337
+ .tc-compare-grid {
2338
+ display: grid;
2339
+ gap: var(--tc-spacing);
2340
+ }
2341
+
2342
+ .tc-compare-item {
2343
+ background: var(--tc-bg-secondary);
2344
+ border-radius: var(--tc-border-radius);
2345
+ overflow: hidden;
2346
+ position: relative;
2347
+ }
2348
+
2349
+ .tc-compare-item img {
2350
+ width: 100%;
2351
+ aspect-ratio: 4/3;
2352
+ object-fit: cover;
2353
+ }
2354
+
2355
+ .tc-compare-info {
2356
+ padding: 12px;
2357
+ }
2358
+
2359
+ .tc-compare-info strong {
2360
+ display: block;
2361
+ color: var(--tc-text);
2362
+ margin-bottom: 4px;
2363
+ }
2364
+
2365
+ .tc-compare-info span {
2366
+ font-size: 12px;
2367
+ color: var(--tc-text-muted);
2368
+ }
2369
+
2370
+ .tc-remove-compare {
2371
+ position: absolute;
2372
+ top: 8px;
2373
+ right: 8px;
2374
+ width: 28px;
2375
+ height: 28px;
2376
+ border: none;
2377
+ border-radius: 50%;
2378
+ background: rgba(0,0,0,0.6);
2379
+ color: white;
2380
+ cursor: pointer;
2381
+ display: flex;
2382
+ align-items: center;
2383
+ justify-content: center;
2384
+ }
2385
+
2386
+ /* ═══════════════════════════════════════════════════════════════
2387
+ ASSET LIBRARY VIEW
2388
+ ═══════════════════════════════════════════════════════════════ */
2389
+
2390
+ .tc-assets-grid {
2391
+ display: grid;
2392
+ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
2393
+ gap: var(--tc-spacing);
2394
+ }
2395
+
2396
+ .tc-asset-card {
2397
+ background: var(--tc-bg-secondary);
2398
+ border-radius: var(--tc-border-radius);
2399
+ overflow: hidden;
2400
+ position: relative;
2401
+ }
2402
+
2403
+ .tc-asset-card img {
2404
+ width: 100%;
2405
+ aspect-ratio: 1;
2406
+ object-fit: cover;
2407
+ }
2408
+
2409
+ .tc-asset-overlay {
2410
+ position: absolute;
2411
+ top: 0;
2412
+ left: 0;
2413
+ right: 0;
2414
+ bottom: 0;
2415
+ background: rgba(0,0,0,0.5);
2416
+ display: flex;
2417
+ align-items: center;
2418
+ justify-content: center;
2419
+ gap: 8px;
2420
+ opacity: 0;
2421
+ transition: var(--tc-transition);
2422
+ }
2423
+
2424
+ .tc-asset-card:hover .tc-asset-overlay {
2425
+ opacity: 1;
2426
+ }
2427
+
2428
+ .tc-asset-action {
2429
+ width: 36px;
2430
+ height: 36px;
2431
+ border: none;
2432
+ border-radius: 50%;
2433
+ background: white;
2434
+ cursor: pointer;
2435
+ display: flex;
2436
+ align-items: center;
2437
+ justify-content: center;
2438
+ font-size: 16px;
2439
+ }
2440
+
2441
+ .tc-asset-name {
2442
+ padding: 8px;
2443
+ font-size: 12px;
2444
+ color: var(--tc-text);
2445
+ white-space: nowrap;
2446
+ overflow: hidden;
2447
+ text-overflow: ellipsis;
2448
+ }
2449
+
2450
+ /* ═══════════════════════════════════════════════════════════════
2451
+ ANALYTICS VIEW
2452
+ ═══════════════════════════════════════════════════════════════ */
2453
+
2454
+ .tc-analytics-stats {
2455
+ display: grid;
2456
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
2457
+ gap: var(--tc-spacing);
2458
+ margin-bottom: var(--tc-spacing-lg);
2459
+ }
2460
+
2461
+ .tc-stat-card {
2462
+ background: var(--tc-bg-secondary);
2463
+ border-radius: var(--tc-border-radius);
2464
+ padding: var(--tc-spacing);
2465
+ text-align: center;
2466
+ }
2467
+
2468
+ .tc-stat-value {
2469
+ font-size: 32px;
2470
+ font-weight: 700;
2471
+ color: var(--tc-primary);
2472
+ }
2473
+
2474
+ .tc-stat-label {
2475
+ font-size: 13px;
2476
+ color: var(--tc-text-muted);
2477
+ margin-top: 4px;
2478
+ }
2479
+
2480
+ .tc-analytics-section {
2481
+ background: var(--tc-bg-secondary);
2482
+ border-radius: var(--tc-border-radius);
2483
+ padding: var(--tc-spacing);
2484
+ }
2485
+
2486
+ .tc-analytics-section h3 {
2487
+ font-size: 14px;
2488
+ font-weight: 600;
2489
+ margin: 0 0 12px 0;
2490
+ color: var(--tc-text);
2491
+ }
2492
+
2493
+ .tc-top-list {
2494
+ display: flex;
2495
+ flex-direction: column;
2496
+ gap: 8px;
2497
+ }
2498
+
2499
+ .tc-top-item {
2500
+ display: flex;
2501
+ align-items: center;
2502
+ gap: 12px;
2503
+ padding: 8px;
2504
+ background: var(--tc-bg);
2505
+ border-radius: var(--tc-border-radius-sm);
2506
+ }
2507
+
2508
+ .tc-top-rank {
2509
+ width: 24px;
2510
+ height: 24px;
2511
+ background: var(--tc-primary-light);
2512
+ color: var(--tc-primary);
2513
+ border-radius: 50%;
2514
+ display: flex;
2515
+ align-items: center;
2516
+ justify-content: center;
2517
+ font-weight: 600;
2518
+ font-size: 12px;
2519
+ }
2520
+
2521
+ .tc-top-item img {
2522
+ width: 40px;
2523
+ height: 40px;
2524
+ object-fit: cover;
2525
+ border-radius: var(--tc-border-radius-sm);
2526
+ }
2527
+
2528
+ .tc-top-name {
2529
+ flex: 1;
2530
+ color: var(--tc-text);
2531
+ }
2532
+
2533
+ .tc-top-count {
2534
+ color: var(--tc-text-muted);
2535
+ font-size: 13px;
2536
+ }
2537
+
2538
+ /* ═══════════════════════════════════════════════════════════════
2539
+ DESIGN REQUESTS VIEW
2540
+ ═══════════════════════════════════════════════════════════════ */
2541
+
2542
+ .tc-requests-tabs {
2543
+ display: flex;
2544
+ gap: 8px;
2545
+ margin-bottom: var(--tc-spacing);
2546
+ }
2547
+
2548
+ .tc-tab {
2549
+ padding: 8px 16px;
2550
+ border: none;
2551
+ background: var(--tc-bg-secondary);
2552
+ border-radius: var(--tc-border-radius-sm);
2553
+ cursor: pointer;
2554
+ color: var(--tc-text-muted);
2555
+ font-size: 13px;
2556
+ transition: var(--tc-transition);
2557
+ }
2558
+
2559
+ .tc-tab:hover {
2560
+ background: var(--tc-border-light);
2561
+ }
2562
+
2563
+ .tc-tab.active {
2564
+ background: var(--tc-primary);
2565
+ color: white;
2566
+ }
2567
+
2568
+ .tc-requests-list {
2569
+ display: flex;
2570
+ flex-direction: column;
2571
+ gap: 12px;
2572
+ }
2573
+
2574
+ .tc-request-card {
2575
+ background: var(--tc-bg-secondary);
2576
+ border-radius: var(--tc-border-radius);
2577
+ padding: var(--tc-spacing);
2578
+ }
2579
+
2580
+ .tc-request-header {
2581
+ display: flex;
2582
+ align-items: center;
2583
+ justify-content: space-between;
2584
+ margin-bottom: 8px;
2585
+ }
2586
+
2587
+ .tc-request-title {
2588
+ font-weight: 600;
2589
+ color: var(--tc-text);
2590
+ }
2591
+
2592
+ .tc-request-status {
2593
+ font-size: 11px;
2594
+ padding: 4px 8px;
2595
+ border-radius: 12px;
2596
+ text-transform: uppercase;
2597
+ font-weight: 600;
2598
+ }
2599
+
2600
+ .tc-status-pending {
2601
+ background: #fef3c7;
2602
+ color: #92400e;
2603
+ }
2604
+
2605
+ .tc-status-completed {
2606
+ background: #d1fae5;
2607
+ color: #065f46;
2608
+ }
2609
+
2610
+ .tc-request-desc {
2611
+ color: var(--tc-text-muted);
2612
+ font-size: 14px;
2613
+ margin: 0 0 12px 0;
2614
+ }
2615
+
2616
+ .tc-request-meta {
2617
+ display: flex;
2618
+ gap: 16px;
2619
+ font-size: 12px;
2620
+ color: var(--tc-text-muted);
2621
+ }
2622
+
2623
+ .tc-request-actions {
2624
+ display: flex;
2625
+ gap: 8px;
2626
+ margin-top: 12px;
2627
+ padding-top: 12px;
2628
+ border-top: 1px solid var(--tc-border-light);
2629
+ }
2630
+
2631
+ .tc-btn-sm {
2632
+ padding: 6px 12px;
2633
+ font-size: 12px;
2634
+ }
2635
+
2636
+ /* ═══════════════════════════════════════════════════════════════
2637
+ MODALS FOR NEW FEATURES
2638
+ ═══════════════════════════════════════════════════════════════ */
2639
+
2640
+ .tc-schedule-modal,
2641
+ .tc-annotations-modal,
2642
+ .tc-batch-export-modal,
2643
+ .tc-request-modal {
2644
+ background: var(--tc-bg);
2645
+ border-radius: var(--tc-border-radius-lg);
2646
+ box-shadow: 0 20px 60px var(--tc-shadow-lg);
2647
+ width: 480px;
2648
+ max-width: 90vw;
2649
+ animation: tc-slide-up 0.3s ease;
2650
+ }
2651
+
2652
+ .tc-design-preview-small {
2653
+ display: flex;
2654
+ align-items: center;
2655
+ gap: 12px;
2656
+ padding: 12px;
2657
+ background: var(--tc-bg-secondary);
2658
+ border-radius: var(--tc-border-radius-sm);
2659
+ margin-bottom: var(--tc-spacing);
2660
+ }
2661
+
2662
+ .tc-design-preview-small img {
2663
+ width: 48px;
2664
+ height: 48px;
2665
+ object-fit: cover;
2666
+ border-radius: var(--tc-border-radius-sm);
2667
+ }
2668
+
2669
+ .tc-form-row {
2670
+ display: grid;
2671
+ grid-template-columns: 1fr 1fr;
2672
+ gap: var(--tc-spacing);
2673
+ }
2674
+
2675
+ .tc-selected-preview {
2676
+ display: flex;
2677
+ gap: 8px;
2678
+ padding: 12px;
2679
+ background: var(--tc-bg-secondary);
2680
+ border-radius: var(--tc-border-radius-sm);
2681
+ margin-top: var(--tc-spacing);
2682
+ }
2683
+
2684
+ .tc-selected-preview img {
2685
+ width: 48px;
2686
+ height: 48px;
2687
+ object-fit: cover;
2688
+ border-radius: var(--tc-border-radius-sm);
2689
+ }
2690
+
2691
+ .tc-selected-preview span {
2692
+ display: flex;
2693
+ align-items: center;
2694
+ color: var(--tc-text-muted);
2695
+ font-size: 13px;
2696
+ }
2697
+
2698
+ /* Quick Insert Menu */
2699
+ .tc-quick-insert-menu {
2700
+ position: fixed;
2701
+ background: var(--tc-bg);
2702
+ border: 1px solid var(--tc-border);
2703
+ border-radius: var(--tc-border-radius);
2704
+ box-shadow: 0 8px 24px var(--tc-shadow-lg);
2705
+ min-width: 200px;
2706
+ padding: 6px;
2707
+ z-index: 1001;
2708
+ }
2709
+
2710
+ .tc-insert-header {
2711
+ padding: 8px 12px;
2712
+ font-size: 12px;
2713
+ font-weight: 600;
2714
+ color: var(--tc-text-muted);
2715
+ border-bottom: 1px solid var(--tc-border-light);
2716
+ margin-bottom: 4px;
2717
+ }
2718
+
2719
+ .tc-insert-option {
2720
+ display: flex;
2721
+ align-items: center;
2722
+ gap: 10px;
2723
+ padding: 10px 12px;
2724
+ border-radius: var(--tc-border-radius-sm);
2725
+ cursor: pointer;
2726
+ transition: var(--tc-transition);
2727
+ }
2728
+
2729
+ .tc-insert-option:hover {
2730
+ background: var(--tc-bg-secondary);
2731
+ }
2732
+
2733
+ /* ═══════════════════════════════════════════════════════════════
2734
+ INLINE EDITOR MODAL
2735
+ ═══════════════════════════════════════════════════════════════ */
2736
+
2737
+ .tc-editor-modal {
2738
+ width: 95vw;
2739
+ height: 90vh;
2740
+ display: flex;
2741
+ flex-direction: column;
2742
+ }
2743
+
2744
+ .tc-editor-modal .tc-modal-header {
2745
+ flex-shrink: 0;
2746
+ }
2747
+
2748
+ .tc-editor-modal .tc-modal-header h3 {
2749
+ display: flex;
2750
+ align-items: center;
2751
+ gap: 10px;
2752
+ }
2753
+
2754
+ .tc-editor-actions {
2755
+ display: flex;
2756
+ align-items: center;
2757
+ gap: var(--tc-spacing-sm);
2758
+ }
2759
+
2760
+ .tc-editor-body {
2761
+ flex: 1;
2762
+ position: relative;
2763
+ background: var(--tc-bg-tertiary);
2764
+ overflow: hidden;
2765
+ }
2766
+
2767
+ .tc-editor-loading {
2768
+ position: absolute;
2769
+ inset: 0;
2770
+ display: flex;
2771
+ flex-direction: column;
2772
+ align-items: center;
2773
+ justify-content: center;
2774
+ gap: var(--tc-spacing);
2775
+ background: var(--tc-bg);
2776
+ }
2777
+
2778
+ .tc-editor-loading h3 {
2779
+ margin: var(--tc-spacing) 0 var(--tc-spacing-sm);
2780
+ }
2781
+
2782
+ .tc-editor-loading p {
2783
+ color: var(--tc-text-muted);
2784
+ margin: 0;
2785
+ }
2786
+
2787
+ .tc-editor-iframe {
2788
+ width: 100%;
2789
+ height: 100%;
2790
+ border: none;
2791
+ display: none;
2792
+ }
2793
+
2794
+ /* ═══════════════════════════════════════════════════════════════
2795
+ KEYBOARD HELP MODAL
2796
+ ═══════════════════════════════════════════════════════════════ */
2797
+
2798
+ .tc-help-modal {
2799
+ width: 560px;
2800
+ max-width: 95vw;
2801
+ background: var(--tc-bg);
2802
+ border-radius: var(--tc-border-radius-xl);
2803
+ box-shadow: var(--tc-shadow-xl);
2804
+ animation: tc-scale-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
2805
+ }
2806
+
2807
+ .tc-shortcuts-grid {
2808
+ display: grid;
2809
+ grid-template-columns: 1fr 1fr;
2810
+ gap: var(--tc-spacing-xl);
2811
+ }
2812
+
2813
+ .tc-shortcut-section h4 {
2814
+ font-size: 12px;
2815
+ font-weight: 700;
2816
+ text-transform: uppercase;
2817
+ letter-spacing: 0.5px;
2818
+ color: var(--tc-text-muted);
2819
+ margin: 0 0 var(--tc-spacing) 0;
2820
+ padding-bottom: var(--tc-spacing-sm);
2821
+ border-bottom: 1px solid var(--tc-border-light);
2822
+ }
2823
+
2824
+ .tc-shortcut {
2825
+ display: flex;
2826
+ align-items: center;
2827
+ gap: var(--tc-spacing-sm);
2828
+ padding: 8px 0;
2829
+ font-size: 13px;
2830
+ }
2831
+
2832
+ .tc-shortcut kbd {
2833
+ display: inline-flex;
2834
+ align-items: center;
2835
+ justify-content: center;
2836
+ min-width: 28px;
2837
+ height: 28px;
2838
+ padding: 0 8px;
2839
+ background: var(--tc-bg-secondary);
2840
+ border: 1px solid var(--tc-border);
2841
+ border-radius: var(--tc-border-radius-sm);
2842
+ font-family: var(--tc-font-mono);
2843
+ font-size: 11px;
2844
+ font-weight: 600;
2845
+ color: var(--tc-text);
2846
+ box-shadow: 0 2px 0 var(--tc-border);
2847
+ }
2848
+
2849
+ .tc-shortcut span {
2850
+ color: var(--tc-text-muted);
2851
+ }
2852
+
2853
+ /* ═══════════════════════════════════════════════════════════════
2854
+ PREMIUM LOADING SKELETON
2855
+ ═══════════════════════════════════════════════════════════════ */
2856
+
2857
+ .tc-skeleton {
2858
+ background: linear-gradient(
2859
+ 90deg,
2860
+ var(--tc-bg-secondary) 25%,
2861
+ var(--tc-bg-tertiary) 50%,
2862
+ var(--tc-bg-secondary) 75%
2863
+ );
2864
+ background-size: 200% 100%;
2865
+ animation: tc-shimmer 1.5s infinite;
2866
+ border-radius: var(--tc-border-radius);
2867
+ }
2868
+
2869
+ .tc-skeleton-card {
2870
+ aspect-ratio: 16 / 10;
2871
+ border-radius: var(--tc-border-radius-lg);
2872
+ }
2873
+
2874
+ .tc-skeleton-text {
2875
+ height: 14px;
2876
+ width: 60%;
2877
+ margin-top: var(--tc-spacing-sm);
2878
+ }
2879
+
2880
+ .tc-skeleton-text-sm {
2881
+ height: 12px;
2882
+ width: 40%;
2883
+ margin-top: var(--tc-spacing-xs);
2884
+ }
2885
+
2886
+ /* ═══════════════════════════════════════════════════════════════
2887
+ RESPONSIVE ADJUSTMENTS
2888
+ ═══════════════════════════════════════════════════════════════ */
2889
+
2890
+ @media (max-width: 768px) {
2891
+ .tc-sidebar {
2892
+ width: 200px;
2893
+ }
2894
+
2895
+ .tc-design-grid {
2896
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
2897
+ }
2898
+
2899
+ .tc-search-input {
2900
+ width: 200px;
2901
+ }
2902
+
2903
+ .tc-shortcuts-grid {
2904
+ grid-template-columns: 1fr;
2905
+ }
2906
+
2907
+ .tc-preview-body {
2908
+ flex-direction: column;
2909
+ }
2910
+
2911
+ .tc-preview-details {
2912
+ width: 100%;
2913
+ }
2914
+ }
2915
+
2916
+ @media (max-width: 480px) {
2917
+ .tc-sidebar {
2918
+ display: none;
2919
+ }
2920
+
2921
+ .tc-toolbar {
2922
+ flex-wrap: wrap;
2923
+ }
2924
+
2925
+ .tc-search-input {
2926
+ width: 100%;
2927
+ }
2928
+ }