@compose-market/theme 0.0.4 → 0.0.6

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/css/index.css ADDED
@@ -0,0 +1,3 @@
1
+ /* Auto-generated proxy — resolves @compose-market/theme/css for bundlers
2
+ that don't support package.json "exports" for CSS subpaths. */
3
+ @import "../dist/css/index.css";
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Compose.Market Cyberpunk Effects
3
+ * @compose-market/theme/css/effects
4
+ *
5
+ * DO NOT EDIT – generated from the theme package.
6
+ */
7
+
8
+ /* Glass Panel */
9
+ .glass-panel {
10
+ background: linear-gradient(145deg, hsl(var(--card) / 0.8), hsl(var(--card) / 0.4));
11
+ backdrop-filter: blur(12px);
12
+ border: 1px solid hsl(var(--border) / 0.5);
13
+ box-shadow:
14
+ 0 4px 24px -1px hsl(0 0% 0% / 0.3),
15
+ inset 0 1px 0 hsl(0 0% 100% / 0.05);
16
+ }
17
+
18
+ /* Neon Effects */
19
+ .neon-border {
20
+ box-shadow: 0 0 10px -2px hsl(var(--primary) / 0.5);
21
+ border-color: hsl(var(--primary) / 0.5);
22
+ }
23
+
24
+ .neon-text {
25
+ text-shadow: 0 0 10px hsl(var(--primary) / 0.5);
26
+ }
27
+
28
+ .neon-glow {
29
+ animation: neon-pulse 2s ease-in-out infinite alternate;
30
+ }
31
+
32
+ @keyframes neon-pulse {
33
+ from {
34
+ box-shadow: 0 0 5px hsl(var(--primary) / 0.5),
35
+ 0 0 10px hsl(var(--primary) / 0.3),
36
+ 0 0 15px hsl(var(--primary) / 0.1);
37
+ }
38
+ to {
39
+ box-shadow: 0 0 10px hsl(var(--primary) / 0.6),
40
+ 0 0 20px hsl(var(--primary) / 0.4),
41
+ 0 0 30px hsl(var(--primary) / 0.2);
42
+ }
43
+ }
44
+
45
+ /* Background Grid Pattern */
46
+ .bg-grid-pattern {
47
+ background-size: 40px 40px;
48
+ background-image: linear-gradient(to right, hsl(217 33% 17% / 0.3) 1px, transparent 1px),
49
+ linear-gradient(to bottom, hsl(217 33% 17% / 0.3) 1px, transparent 1px);
50
+ }
51
+
52
+ /* Scanline Animation */
53
+ .scanline {
54
+ width: 100%;
55
+ height: 100px;
56
+ z-index: 50;
57
+ background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%, hsl(188 95% 43% / 0.05) 50%, rgba(0, 0, 0, 0) 100%);
58
+ opacity: 0.1;
59
+ position: absolute;
60
+ bottom: 100%;
61
+ animation: scanline 8s linear infinite;
62
+ pointer-events: none;
63
+ }
64
+
65
+ @keyframes scanline {
66
+ 0% { bottom: 100%; }
67
+ 100% { bottom: -100px; }
68
+ }
69
+
70
+ /* Glitch Border Effect */
71
+ .glitch-border {
72
+ position: relative;
73
+ }
74
+
75
+ .glitch-border::before {
76
+ content: '';
77
+ position: absolute;
78
+ top: 0;
79
+ left: 0;
80
+ right: 0;
81
+ bottom: 0;
82
+ border: 1px solid hsl(188 95% 43% / 0.3);
83
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
84
+ animation: glitch-border 3s infinite linear alternate-reverse;
85
+ pointer-events: none;
86
+ }
87
+
88
+ @keyframes glitch-border {
89
+ 0% { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }
90
+ 5% { clip-path: polygon(0 10%, 100% 0, 95% 100%, 5% 90%); }
91
+ 10% { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }
92
+ }
93
+
94
+ /* Glitch Text Hover Effect */
95
+ .glitch-text {
96
+ position: relative;
97
+ }
98
+
99
+ .glitch-text::before,
100
+ .glitch-text::after {
101
+ content: attr(data-text);
102
+ position: absolute;
103
+ top: 0;
104
+ left: 0;
105
+ opacity: 0;
106
+ pointer-events: none;
107
+ }
108
+
109
+ .glitch-text:hover::before {
110
+ left: 2px;
111
+ color: hsl(292 85% 55%);
112
+ opacity: 0.7;
113
+ animation: glitch-1 0.3s infinite;
114
+ mix-blend-mode: screen;
115
+ }
116
+
117
+ .glitch-text:hover::after {
118
+ left: -2px;
119
+ color: hsl(188 95% 43%);
120
+ opacity: 0.7;
121
+ animation: glitch-2 0.3s infinite;
122
+ mix-blend-mode: screen;
123
+ }
124
+
125
+ @keyframes glitch-1 {
126
+ 0%, 100% { transform: translate(0); }
127
+ 20% { transform: translate(-2px, 2px); }
128
+ 40% { transform: translate(-2px, -2px); }
129
+ 60% { transform: translate(2px, 2px); }
130
+ 80% { transform: translate(2px, -2px); }
131
+ }
132
+
133
+ @keyframes glitch-2 {
134
+ 0%, 100% { transform: translate(0); }
135
+ 20% { transform: translate(2px, 2px); }
136
+ 40% { transform: translate(2px, -2px); }
137
+ 60% { transform: translate(-2px, 2px); }
138
+ 80% { transform: translate(-2px, -2px); }
139
+ }
140
+
141
+ /* Corner Decorations */
142
+ .corner-decoration {
143
+ position: relative;
144
+ }
145
+
146
+ .corner-decoration::before {
147
+ content: '';
148
+ position: absolute;
149
+ top: 0;
150
+ left: 0;
151
+ width: 8px;
152
+ height: 8px;
153
+ border-top: 2px solid hsl(var(--primary) / 0.5);
154
+ border-left: 2px solid hsl(var(--primary) / 0.5);
155
+ }
156
+
157
+ .corner-decoration::after {
158
+ content: '';
159
+ position: absolute;
160
+ bottom: 0;
161
+ right: 0;
162
+ width: 8px;
163
+ height: 8px;
164
+ border-bottom: 2px solid hsl(var(--primary) / 0.5);
165
+ border-right: 2px solid hsl(var(--primary) / 0.5);
166
+ }
167
+
168
+ /* Cyberpunk Scrollbar */
169
+ ::-webkit-scrollbar {
170
+ width: 8px;
171
+ height: 8px;
172
+ }
173
+
174
+ ::-webkit-scrollbar-track {
175
+ background: hsl(var(--background));
176
+ }
177
+
178
+ ::-webkit-scrollbar-thumb {
179
+ background: hsl(var(--muted));
180
+ border-radius: 2px;
181
+ }
182
+
183
+ ::-webkit-scrollbar-thumb:hover {
184
+ background: hsl(var(--primary) / 0.5);
185
+ }
186
+
187
+ /* Partner Badge Scanline Animation */
188
+ @keyframes partner-scanline {
189
+ 0% { transform: translateY(-100px); }
190
+ 100% { transform: translateY(calc(100vh + 100px)); }
191
+ }
192
+
193
+ /* Shimmer Animation */
194
+ @keyframes shimmer {
195
+ 0% { transform: translateX(-100%); }
196
+ 100% { transform: translateX(100%); }
197
+ }
@@ -8,3 +8,4 @@
8
8
  @import './tokens.css';
9
9
  @import './dark.css';
10
10
  @import './shell.css';
11
+ @import './effects.css';
@@ -412,3 +412,359 @@
412
412
  overflow-x: auto;
413
413
  }
414
414
  }
415
+
416
+ /* ── Form Controls ── */
417
+ .cm-form-group {
418
+ margin-bottom: 16px;
419
+ }
420
+
421
+ .cm-form-group label {
422
+ display: block;
423
+ margin-bottom: 6px;
424
+ font-size: 13px;
425
+ color: hsl(var(--muted-foreground));
426
+ font-weight: 500;
427
+ }
428
+
429
+ .cm-form-input,
430
+ .cm-form-textarea,
431
+ .cm-form-select {
432
+ width: 100%;
433
+ padding: 10px 12px;
434
+ background: hsl(var(--muted));
435
+ border: 1px solid hsl(var(--border));
436
+ border-radius: 6px;
437
+ color: hsl(var(--foreground));
438
+ font-size: 14px;
439
+ font-family: var(--font-sans), sans-serif;
440
+ transition: border-color 0.2s;
441
+ }
442
+
443
+ .cm-form-input:focus,
444
+ .cm-form-textarea:focus,
445
+ .cm-form-select:focus {
446
+ outline: none;
447
+ border-color: hsl(var(--primary));
448
+ }
449
+
450
+ .cm-form-input:disabled,
451
+ .cm-form-textarea:disabled,
452
+ .cm-form-select:disabled {
453
+ opacity: 0.6;
454
+ cursor: not-allowed;
455
+ }
456
+
457
+ .cm-form-textarea {
458
+ min-height: 80px;
459
+ resize: vertical;
460
+ }
461
+
462
+ /* ── Notification / Alert ── */
463
+ .cm-notification {
464
+ display: flex;
465
+ align-items: center;
466
+ gap: 10px;
467
+ padding: 12px 16px;
468
+ border-radius: 8px;
469
+ font-size: 14px;
470
+ font-weight: 500;
471
+ animation: cm-slide-in 0.2s ease;
472
+ }
473
+
474
+ @keyframes cm-slide-in {
475
+ from { opacity: 0; transform: translateY(-10px); }
476
+ to { opacity: 1; transform: translateY(0); }
477
+ }
478
+
479
+ .cm-notification--success {
480
+ background: hsl(142 71% 45% / 0.15);
481
+ color: hsl(142 71% 45%);
482
+ border: 1px solid hsl(142 71% 45%);
483
+ }
484
+
485
+ .cm-notification--error {
486
+ background: hsl(var(--destructive) / 0.15);
487
+ color: hsl(var(--destructive));
488
+ border: 1px solid hsl(var(--destructive));
489
+ }
490
+
491
+ .cm-notification--warning {
492
+ background: hsl(42 100% 48% / 0.12);
493
+ color: hsl(42 100% 52%);
494
+ border: 1px solid hsl(42 100% 52% / 0.5);
495
+ }
496
+
497
+ .cm-notification--info {
498
+ background: hsl(var(--primary) / 0.08);
499
+ border: 1px solid hsl(var(--primary) / 0.22);
500
+ color: hsl(var(--foreground));
501
+ }
502
+
503
+ /* ── Navigation ── */
504
+ .cm-nav {
505
+ display: flex;
506
+ gap: 4px;
507
+ padding: 12px 0 0;
508
+ }
509
+
510
+ .cm-nav-btn {
511
+ padding: 8px 16px;
512
+ background: transparent;
513
+ border: none;
514
+ color: hsl(var(--muted-foreground));
515
+ cursor: pointer;
516
+ border-radius: 6px;
517
+ font-size: 14px;
518
+ font-weight: 500;
519
+ font-family: var(--font-sans), sans-serif;
520
+ transition: all 0.2s;
521
+ }
522
+
523
+ .cm-nav-btn:hover {
524
+ color: hsl(var(--foreground));
525
+ background: hsl(var(--muted));
526
+ }
527
+
528
+ .cm-nav-btn[data-active="true"],
529
+ .cm-nav-btn.active {
530
+ color: hsl(var(--primary));
531
+ background: hsl(var(--primary) / 0.15);
532
+ }
533
+
534
+ /* ── Loading State ── */
535
+ .cm-loading-state {
536
+ display: flex;
537
+ flex-direction: column;
538
+ align-items: center;
539
+ justify-content: center;
540
+ padding: 60px;
541
+ color: hsl(var(--muted-foreground));
542
+ }
543
+
544
+ .cm-spinner {
545
+ animation: cm-spin 1s linear infinite;
546
+ }
547
+
548
+ @keyframes cm-spin {
549
+ from { transform: rotate(0deg); }
550
+ to { transform: rotate(360deg); }
551
+ }
552
+
553
+ /* ── Badge / Tag ── */
554
+ .cm-badge {
555
+ display: inline-flex;
556
+ align-items: center;
557
+ gap: 4px;
558
+ padding: 3px 8px;
559
+ border-radius: 4px;
560
+ font-size: 11px;
561
+ font-weight: 600;
562
+ text-transform: uppercase;
563
+ letter-spacing: 0.03em;
564
+ }
565
+
566
+ .cm-badge--primary {
567
+ background: hsl(var(--primary) / 0.15);
568
+ color: hsl(var(--primary));
569
+ }
570
+
571
+ .cm-badge--accent {
572
+ background: hsl(var(--accent) / 0.15);
573
+ color: hsl(var(--accent));
574
+ }
575
+
576
+ .cm-badge--muted {
577
+ background: hsl(var(--muted));
578
+ color: hsl(var(--muted-foreground));
579
+ }
580
+
581
+ .cm-badge--success {
582
+ background: hsl(142 71% 45% / 0.15);
583
+ color: hsl(142 71% 45%);
584
+ }
585
+
586
+ .cm-badge--destructive {
587
+ background: hsl(var(--destructive) / 0.15);
588
+ color: hsl(var(--destructive));
589
+ }
590
+
591
+ /* ── Search Bar ── */
592
+ .cm-search-bar {
593
+ display: flex;
594
+ align-items: center;
595
+ gap: 12px;
596
+ padding: 12px 16px;
597
+ background: hsl(var(--card));
598
+ border: 1px solid hsl(var(--border));
599
+ border-radius: 8px;
600
+ }
601
+
602
+ .cm-search-bar__icon {
603
+ color: hsl(var(--muted-foreground));
604
+ flex-shrink: 0;
605
+ }
606
+
607
+ .cm-search-bar__input {
608
+ flex: 1;
609
+ background: transparent;
610
+ border: none;
611
+ color: hsl(var(--foreground));
612
+ font-size: 14px;
613
+ font-family: var(--font-sans), sans-serif;
614
+ outline: none;
615
+ }
616
+
617
+ .cm-search-bar__input::placeholder {
618
+ color: hsl(var(--muted-foreground));
619
+ }
620
+
621
+ /* ── Filter Buttons ── */
622
+ .cm-filter-btn {
623
+ padding: 6px 14px;
624
+ background: hsl(var(--card));
625
+ border: 1px solid hsl(var(--border));
626
+ border-radius: 16px;
627
+ color: hsl(var(--muted-foreground));
628
+ font-size: 13px;
629
+ font-family: var(--font-sans), sans-serif;
630
+ cursor: pointer;
631
+ transition: all 0.2s;
632
+ }
633
+
634
+ .cm-filter-btn:hover {
635
+ border-color: hsl(var(--primary));
636
+ color: hsl(var(--foreground));
637
+ }
638
+
639
+ .cm-filter-btn[data-active="true"],
640
+ .cm-filter-btn.active {
641
+ background: hsl(var(--primary));
642
+ color: hsl(var(--primary-foreground));
643
+ border-color: hsl(var(--primary));
644
+ }
645
+
646
+ /* ── Icon Button ── */
647
+ .cm-icon-btn {
648
+ display: inline-flex;
649
+ align-items: center;
650
+ justify-content: center;
651
+ padding: 8px;
652
+ background: transparent;
653
+ border: 1px solid hsl(var(--border));
654
+ color: hsl(var(--muted-foreground));
655
+ border-radius: 6px;
656
+ cursor: pointer;
657
+ font-family: var(--font-sans), sans-serif;
658
+ transition: all 0.2s;
659
+ }
660
+
661
+ .cm-icon-btn:hover {
662
+ background: hsl(var(--muted));
663
+ color: hsl(var(--foreground));
664
+ }
665
+
666
+ .cm-icon-btn--danger:hover {
667
+ border-color: hsl(var(--destructive));
668
+ color: hsl(var(--destructive));
669
+ }
670
+
671
+ /* ── Settings Section ── */
672
+ .cm-settings-section {
673
+ margin-bottom: 24px;
674
+ padding: 20px;
675
+ background: hsl(var(--card));
676
+ border: 1px solid hsl(var(--border));
677
+ border-radius: 8px;
678
+ }
679
+
680
+ .cm-settings-section__title {
681
+ font-size: 14px;
682
+ font-weight: 600;
683
+ margin-bottom: 16px;
684
+ color: hsl(var(--muted-foreground));
685
+ text-transform: uppercase;
686
+ letter-spacing: 0.05em;
687
+ }
688
+
689
+ .cm-settings-section__hint {
690
+ margin-bottom: 14px;
691
+ font-size: 13px;
692
+ color: hsl(var(--muted-foreground));
693
+ }
694
+
695
+ /* ── Pagination ── */
696
+ .cm-pagination {
697
+ display: flex;
698
+ align-items: center;
699
+ justify-content: center;
700
+ gap: 16px;
701
+ margin-top: 32px;
702
+ padding-top: 24px;
703
+ border-top: 1px solid hsl(var(--border));
704
+ }
705
+
706
+ .cm-page-btn {
707
+ padding: 8px 16px;
708
+ background: hsl(var(--card));
709
+ border: 1px solid hsl(var(--border));
710
+ border-radius: 6px;
711
+ color: hsl(var(--muted-foreground));
712
+ cursor: pointer;
713
+ font-size: 13px;
714
+ font-family: var(--font-sans), sans-serif;
715
+ transition: all 0.2s;
716
+ }
717
+
718
+ .cm-page-btn:hover:not(:disabled) {
719
+ background: hsl(var(--muted));
720
+ color: hsl(var(--foreground));
721
+ }
722
+
723
+ .cm-page-btn:disabled {
724
+ opacity: 0.4;
725
+ cursor: not-allowed;
726
+ }
727
+
728
+ .cm-page-info {
729
+ font-size: 13px;
730
+ color: hsl(var(--muted-foreground));
731
+ }
732
+
733
+ /* ── Card ── */
734
+ .cm-card {
735
+ background: hsl(var(--card));
736
+ border: 1px solid hsl(var(--border));
737
+ border-radius: 10px;
738
+ padding: 18px;
739
+ transition: all 0.2s;
740
+ }
741
+
742
+ .cm-card:hover {
743
+ border-color: hsl(var(--border) / 0.8);
744
+ transform: translateY(-2px);
745
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
746
+ }
747
+
748
+ /* ── Code Block ── */
749
+ .cm-code-block {
750
+ display: block;
751
+ padding: 10px 12px;
752
+ background: hsl(var(--muted));
753
+ border-radius: 6px;
754
+ font-size: 12px;
755
+ color: hsl(var(--primary));
756
+ word-break: break-all;
757
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
758
+ }
759
+
760
+ /* ── Error / Empty States ── */
761
+ .cm-error-message {
762
+ display: flex;
763
+ align-items: center;
764
+ justify-content: space-between;
765
+ padding: 16px;
766
+ background: hsl(var(--destructive) / 0.15);
767
+ border: 1px solid hsl(var(--destructive));
768
+ border-radius: 8px;
769
+ color: hsl(var(--destructive));
770
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Cyberpunk Visual Effects - Compose.Market Design System
3
+ *
4
+ * Shared effects used across web and desktop apps.
5
+ * Generated from @compose-market/theme.
6
+ */
7
+ export declare const effectsCss = "/**\n * Compose.Market Cyberpunk Effects\n * @compose-market/theme/css/effects\n *\n * DO NOT EDIT \u2013 generated from the theme package.\n */\n\n/* Glass Panel */\n.glass-panel {\n background: linear-gradient(145deg, hsl(var(--card) / 0.8), hsl(var(--card) / 0.4));\n backdrop-filter: blur(12px);\n border: 1px solid hsl(var(--border) / 0.5);\n box-shadow:\n 0 4px 24px -1px hsl(0 0% 0% / 0.3),\n inset 0 1px 0 hsl(0 0% 100% / 0.05);\n}\n\n/* Neon Effects */\n.neon-border {\n box-shadow: 0 0 10px -2px hsl(var(--primary) / 0.5);\n border-color: hsl(var(--primary) / 0.5);\n}\n\n.neon-text {\n text-shadow: 0 0 10px hsl(var(--primary) / 0.5);\n}\n\n.neon-glow {\n animation: neon-pulse 2s ease-in-out infinite alternate;\n}\n\n@keyframes neon-pulse {\n from {\n box-shadow: 0 0 5px hsl(var(--primary) / 0.5),\n 0 0 10px hsl(var(--primary) / 0.3),\n 0 0 15px hsl(var(--primary) / 0.1);\n }\n to {\n box-shadow: 0 0 10px hsl(var(--primary) / 0.6),\n 0 0 20px hsl(var(--primary) / 0.4),\n 0 0 30px hsl(var(--primary) / 0.2);\n }\n}\n\n/* Background Grid Pattern */\n.bg-grid-pattern {\n background-size: 40px 40px;\n background-image: linear-gradient(to right, hsl(217 33% 17% / 0.3) 1px, transparent 1px),\n linear-gradient(to bottom, hsl(217 33% 17% / 0.3) 1px, transparent 1px);\n}\n\n/* Scanline Animation */\n.scanline {\n width: 100%;\n height: 100px;\n z-index: 50;\n background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%, hsl(188 95% 43% / 0.05) 50%, rgba(0, 0, 0, 0) 100%);\n opacity: 0.1;\n position: absolute;\n bottom: 100%;\n animation: scanline 8s linear infinite;\n pointer-events: none;\n}\n\n@keyframes scanline {\n 0% { bottom: 100%; }\n 100% { bottom: -100px; }\n}\n\n/* Glitch Border Effect */\n.glitch-border {\n position: relative;\n}\n\n.glitch-border::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 1px solid hsl(188 95% 43% / 0.3);\n clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);\n animation: glitch-border 3s infinite linear alternate-reverse;\n pointer-events: none;\n}\n\n@keyframes glitch-border {\n 0% { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }\n 5% { clip-path: polygon(0 10%, 100% 0, 95% 100%, 5% 90%); }\n 10% { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }\n}\n\n/* Glitch Text Hover Effect */\n.glitch-text {\n position: relative;\n}\n\n.glitch-text::before,\n.glitch-text::after {\n content: attr(data-text);\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.glitch-text:hover::before {\n left: 2px;\n color: hsl(292 85% 55%);\n opacity: 0.7;\n animation: glitch-1 0.3s infinite;\n mix-blend-mode: screen;\n}\n\n.glitch-text:hover::after {\n left: -2px;\n color: hsl(188 95% 43%);\n opacity: 0.7;\n animation: glitch-2 0.3s infinite;\n mix-blend-mode: screen;\n}\n\n@keyframes glitch-1 {\n 0%, 100% { transform: translate(0); }\n 20% { transform: translate(-2px, 2px); }\n 40% { transform: translate(-2px, -2px); }\n 60% { transform: translate(2px, 2px); }\n 80% { transform: translate(2px, -2px); }\n}\n\n@keyframes glitch-2 {\n 0%, 100% { transform: translate(0); }\n 20% { transform: translate(2px, 2px); }\n 40% { transform: translate(2px, -2px); }\n 60% { transform: translate(-2px, 2px); }\n 80% { transform: translate(-2px, -2px); }\n}\n\n/* Corner Decorations */\n.corner-decoration {\n position: relative;\n}\n\n.corner-decoration::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 8px;\n height: 8px;\n border-top: 2px solid hsl(var(--primary) / 0.5);\n border-left: 2px solid hsl(var(--primary) / 0.5);\n}\n\n.corner-decoration::after {\n content: '';\n position: absolute;\n bottom: 0;\n right: 0;\n width: 8px;\n height: 8px;\n border-bottom: 2px solid hsl(var(--primary) / 0.5);\n border-right: 2px solid hsl(var(--primary) / 0.5);\n}\n\n/* Cyberpunk Scrollbar */\n::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n\n::-webkit-scrollbar-track {\n background: hsl(var(--background));\n}\n\n::-webkit-scrollbar-thumb {\n background: hsl(var(--muted));\n border-radius: 2px;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background: hsl(var(--primary) / 0.5);\n}\n\n/* Partner Badge Scanline Animation */\n@keyframes partner-scanline {\n 0% { transform: translateY(-100px); }\n 100% { transform: translateY(calc(100vh + 100px)); }\n}\n\n/* Shimmer Animation */\n@keyframes shimmer {\n 0% { transform: translateX(-100%); }\n 100% { transform: translateX(100%); }\n}\n";
8
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/effects/styles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,UAAU,i/IAqMtB,CAAC"}