osi-cards-lib 1.5.30 → 1.5.32

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.
Files changed (88) hide show
  1. package/README.md +58 -20
  2. package/package.json +13 -25
  3. package/postcss.config.js +81 -0
  4. package/section-registry.json +3864 -0
  5. package/section-registry.schema.json +264 -0
  6. package/fesm2022/osi-cards-lib.mjs +0 -31878
  7. package/fesm2022/osi-cards-lib.mjs.map +0 -1
  8. package/index.d.ts +0 -11522
  9. package/scripts/setup-angular-styles.js +0 -169
  10. package/styles/_components.scss +0 -38
  11. package/styles/_index.scss +0 -25
  12. package/styles/_osi-cards-mixins.scss +0 -459
  13. package/styles/_osi-cards-tokens.scss +0 -333
  14. package/styles/_styles-scoped.scss +0 -81
  15. package/styles/_styles.scss +0 -26
  16. package/styles/bundles/_ai-card.scss +0 -245
  17. package/styles/bundles/_all.scss +0 -68
  18. package/styles/bundles/_base.scss +0 -60
  19. package/styles/bundles/_card-skeleton.scss +0 -290
  20. package/styles/bundles/_index.scss +0 -25
  21. package/styles/bundles/_sections.scss +0 -48
  22. package/styles/bundles/_tokens-only.scss +0 -139
  23. package/styles/components/_ai-card-renderer.scss +0 -104
  24. package/styles/components/_badges.scss +0 -317
  25. package/styles/components/_card-actions.scss +0 -169
  26. package/styles/components/_card-footer.scss +0 -47
  27. package/styles/components/_component-styles.scss +0 -205
  28. package/styles/components/_empty-state.scss +0 -630
  29. package/styles/components/_hero-card.scss +0 -422
  30. package/styles/components/_image-fallback.scss +0 -28
  31. package/styles/components/_streaming-effects.scss +0 -518
  32. package/styles/components/cards/_ai-card.scss +0 -718
  33. package/styles/components/sections/_all-sections.generated.scss +0 -41
  34. package/styles/components/sections/_all-sections.scss +0 -1086
  35. package/styles/components/sections/_balanced-compact-system.scss +0 -186
  36. package/styles/components/sections/_compact-mixins.scss +0 -180
  37. package/styles/components/sections/_component-mixins.scss +0 -454
  38. package/styles/components/sections/_design-system.scss +0 -477
  39. package/styles/components/sections/_design-tokens.scss +0 -308
  40. package/styles/components/sections/_enhanced-design-variables.scss +0 -147
  41. package/styles/components/sections/_master-compact-system.scss +0 -302
  42. package/styles/components/sections/_master-dense-system.scss +0 -239
  43. package/styles/components/sections/_minimalistic-design.scss +0 -268
  44. package/styles/components/sections/_modern-effects.scss +0 -392
  45. package/styles/components/sections/_modern-sections.scss +0 -351
  46. package/styles/components/sections/_perfect-system.scss +0 -204
  47. package/styles/components/sections/_section-animations.scss +0 -331
  48. package/styles/components/sections/_section-shell.scss +0 -337
  49. package/styles/components/sections/_section-types.generated.scss +0 -30
  50. package/styles/components/sections/_sections-all.scss +0 -26
  51. package/styles/components/sections/_sections-base.scss +0 -334
  52. package/styles/components/sections/_typography-system.scss +0 -327
  53. package/styles/components/sections/_ultra-compact-tokens.scss +0 -375
  54. package/styles/components/sections/_unified-section-style.scss +0 -157
  55. package/styles/components/sections/_utility-classes.scss +0 -567
  56. package/styles/components/sections/_visual-effects-library.scss +0 -374
  57. package/styles/core/_animations.scss +0 -1498
  58. package/styles/core/_bootstrap-reset.scss +0 -445
  59. package/styles/core/_color-helpers.scss +0 -46
  60. package/styles/core/_global-unified.scss +0 -118
  61. package/styles/core/_global.scss +0 -73
  62. package/styles/core/_mixins.scss +0 -491
  63. package/styles/core/_surface-layers.scss +0 -76
  64. package/styles/core/_utilities.scss +0 -326
  65. package/styles/core/_variables-unified.scss +0 -57
  66. package/styles/core/_variables.scss +0 -36
  67. package/styles/core/variables/_colors-source.scss +0 -34
  68. package/styles/core/variables/_colors-unified.scss +0 -26
  69. package/styles/core/variables/_colors.scss +0 -21
  70. package/styles/critical.scss +0 -353
  71. package/styles/design-system/_compact-theme.scss +0 -159
  72. package/styles/design-system/_section-base.scss +0 -426
  73. package/styles/design-system/_tokens.scss +0 -237
  74. package/styles/design-system/_unified-sections.scss +0 -215
  75. package/styles/layout/_feature-grid.scss +0 -322
  76. package/styles/layout/_masonry.scss +0 -734
  77. package/styles/layout/_tilt.scss +0 -244
  78. package/styles/micro-interactions.scss +0 -583
  79. package/styles/mixins/_section-mixins.scss +0 -280
  80. package/styles/non-critical.scss +0 -643
  81. package/styles/reset/_framework-reset.scss +0 -457
  82. package/styles/reset/_index.scss +0 -14
  83. package/styles/reset/_shadow-reset.scss +0 -383
  84. package/styles/responsive.scss +0 -326
  85. package/styles/themes.scss +0 -573
  86. package/styles/tokens/_index.scss +0 -92
  87. package/styles/tokens/_master.scss +0 -1404
  88. package/styles/tokens/_section-tokens.generated.scss +0 -140
@@ -1,104 +0,0 @@
1
- /* Card renderer container and async states */
2
-
3
- .ai-card-container {
4
- position: relative;
5
- max-width: 920px;
6
- margin: 0 auto;
7
- padding: 24px;
8
- background: linear-gradient(180deg, var(--card-background) 0%, rgba(12, 12, 12, 0) 100%);
9
- border-radius: 24px;
10
- box-shadow:
11
- inset 0 1px 3px rgba(255, 121, 0, 0.08),
12
- 0 4px 20px rgba(0, 0, 0, 0.15);
13
-
14
- /* CSS Isolation - Prevent Bootstrap styles from affecting card container */
15
- isolation: isolate;
16
- }
17
-
18
- /* Card preview body improvements */
19
- .preview-body {
20
- display: flex;
21
- flex-direction: column;
22
- gap: var(--spacing-6xl);
23
- padding: var(--spacing-6xl) 0;
24
- }
25
-
26
- /* Section spacing improvements - using CSS variables */
27
- .ai-section + .ai-section {
28
- margin-top: 0; /* Spacing controlled by margin-bottom on .ai-section */
29
- }
30
-
31
- /* Card grid improvements - using centralized gaps */
32
- .contact-collection,
33
- /* Remove forced large gaps - sections now control their own spacing */
34
- .info-grid,
35
- .analytics-metrics,
36
- .list-stack,
37
- .network-collection {
38
- gap: var(--spacing-4xl) !important;
39
- }
40
-
41
- /* Overview grid uses compact spacing defined in _overview.scss */
42
-
43
- /* Global card styling enforced via variables - remove !important overrides */
44
- /* All cards now inherit from centralized --card-* variables */
45
-
46
- .ai-card-loading {
47
- position: absolute;
48
- top: 0;
49
- left: 0;
50
- width: 100%;
51
- height: 100%;
52
- display: flex;
53
- justify-content: center;
54
- align-items: center;
55
- background-color: rgba(0, 0, 0, 0.2);
56
- z-index: 10;
57
- border-radius: 24px;
58
- backdrop-filter: blur(4px);
59
- }
60
-
61
- .ai-card-error {
62
- padding: 18px 20px;
63
- background: linear-gradient(135deg, rgba(239, 68, 68, 0.15) 0%, rgba(239, 68, 68, 0.05) 100%);
64
- color: rgba(239, 68, 68, 0.95);
65
- border-radius: 14px;
66
- margin-bottom: 20px;
67
- border: 1px solid rgba(239, 68, 68, 0.35);
68
- border-left: 4px solid rgba(239, 68, 68, 0.7);
69
- font-weight: 600;
70
- font-size: 0.9rem;
71
- line-height: 1.5;
72
- box-shadow: 0 6px 16px rgba(239, 68, 68, 0.12);
73
- transition: all 0.25s ease;
74
- }
75
-
76
- .ai-card-error:hover {
77
- background: linear-gradient(135deg, rgba(239, 68, 68, 0.22) 0%, rgba(239, 68, 68, 0.08) 100%);
78
- border-color: rgba(239, 68, 68, 0.5);
79
- transform: translateX(4px);
80
- }
81
-
82
- /* Responsive improvements */
83
- @media (max-width: 768px) {
84
- .ai-card-container {
85
- padding: 16px;
86
- border-radius: 20px;
87
- }
88
-
89
- .preview-body {
90
- gap: 16px;
91
- padding: 16px 0;
92
- }
93
-
94
- .ai-section + .ai-section {
95
- margin-top: 0; /* Spacing controlled by margin-bottom */
96
- }
97
-
98
- .contact-card,
99
- .info-card,
100
- .metric-card,
101
- .list-card {
102
- padding: 14px 16px !important;
103
- }
104
- }
@@ -1,317 +0,0 @@
1
- /**
2
- * Unified Badge Component System
3
- * ============================================================================
4
- * Standardized badge styling across all sections and card types.
5
- * Replaces multiple inconsistent badge patterns with unified design.
6
- *
7
- * Design Spec:
8
- * - Height: ~20-22px (auto with padding)
9
- * - Padding: 4px 8px (vertical horizontal)
10
- * - Border radius: 4px (--radius-sm)
11
- * - Font size: 10px (0.625rem)
12
- * - Font weight: 600 (semibold)
13
- * - Text transform: uppercase
14
- * - Letter spacing: 0.05em
15
- */
16
-
17
- /* ===== BASE BADGE COMPONENT ===== */
18
- .badge {
19
- display: inline-flex;
20
- align-items: center;
21
- justify-content: center;
22
- gap: var(--spacing-xs);
23
- padding: 4px 8px;
24
- border-radius: var(--radius-sm);
25
- font-size: 0.625rem; /* 10px */
26
- font-weight: 600;
27
- text-transform: uppercase;
28
- letter-spacing: 0.05em;
29
- line-height: 1.2;
30
- white-space: nowrap;
31
- transition: var(--hover-transition);
32
- cursor: default;
33
- user-select: none;
34
-
35
- /* Default variant (primary/orange) */
36
- background: var(--badge-bg-primary);
37
- border: 1px solid var(--color-orange-border);
38
- color: var(--color-orange-solid);
39
-
40
- /* Icon inside badge */
41
- lucide-icon,
42
- svg {
43
- width: 12px;
44
- height: 12px;
45
- flex-shrink: 0;
46
- }
47
- }
48
-
49
- /* ===== BADGE VARIANTS ===== */
50
-
51
- /* Success - Green (completed, active, success states) */
52
- .badge--success {
53
- background: var(--badge-bg-success);
54
- border-color: var(--color-success-border);
55
- color: var(--color-success-solid);
56
-
57
- lucide-icon,
58
- svg {
59
- color: var(--color-success-solid);
60
- }
61
- }
62
-
63
- /* Warning - Amber/Yellow (pending, in-progress, warning states) */
64
- .badge--warning {
65
- background: var(--badge-bg-warning);
66
- border-color: var(--color-warning-border);
67
- color: var(--color-warning-solid);
68
-
69
- lucide-icon,
70
- svg {
71
- color: var(--color-warning-solid);
72
- }
73
- }
74
-
75
- /* Error - Red (failed, urgent, error states) */
76
- .badge--error {
77
- background: var(--badge-bg-error);
78
- border-color: var(--color-error-border);
79
- color: var(--color-error-solid);
80
-
81
- lucide-icon,
82
- svg {
83
- color: var(--color-error-solid);
84
- }
85
- }
86
-
87
- /* Info - Blue (information, notes, details) */
88
- .badge--info {
89
- background: var(--badge-bg-info);
90
- border-color: var(--color-info-border);
91
- color: var(--color-info-solid);
92
-
93
- lucide-icon,
94
- svg {
95
- color: var(--color-info-solid);
96
- }
97
- }
98
-
99
- /* Primary - Orange (default, highlighted items) */
100
- .badge--primary {
101
- background: var(--badge-bg-primary);
102
- border-color: var(--color-orange-border);
103
- color: var(--color-orange-solid);
104
-
105
- lucide-icon,
106
- svg {
107
- color: var(--color-orange-solid);
108
- }
109
- }
110
-
111
- /* Neutral - Gray (inactive, disabled, neutral states) */
112
- .badge--neutral {
113
- background: var(--badge-bg-neutral);
114
- border-color: var(--color-neutral-border);
115
- color: var(--color-neutral-solid);
116
-
117
- lucide-icon,
118
- svg {
119
- color: var(--color-neutral-solid);
120
- }
121
- }
122
-
123
- /* ===== BADGE SIZE VARIANTS ===== */
124
-
125
- /* Small badge (more compact) */
126
- .badge--sm {
127
- padding: 2px 6px;
128
- font-size: 0.5625rem; /* 9px */
129
-
130
- lucide-icon,
131
- svg {
132
- width: 10px;
133
- height: 10px;
134
- }
135
- }
136
-
137
- /* Large badge (more prominent) */
138
- .badge--lg {
139
- padding: 6px 10px;
140
- font-size: 0.6875rem; /* 11px */
141
-
142
- lucide-icon,
143
- svg {
144
- width: 14px;
145
- height: 14px;
146
- }
147
- }
148
-
149
- /* ===== BADGE STYLE MODIFIERS ===== */
150
-
151
- /* Solid badge (filled background, no border) */
152
- .badge--solid {
153
- border: none;
154
- font-weight: 700;
155
-
156
- &.badge--success {
157
- background: var(--color-success-solid);
158
- color: var(--color-white);
159
- }
160
-
161
- &.badge--warning {
162
- background: var(--color-warning-solid);
163
- color: var(--color-gray-900);
164
- }
165
-
166
- &.badge--error {
167
- background: var(--color-error-solid);
168
- color: var(--color-white);
169
- }
170
-
171
- &.badge--info {
172
- background: var(--color-info-solid);
173
- color: var(--color-white);
174
- }
175
-
176
- &.badge--primary {
177
- background: var(--color-orange-solid);
178
- color: var(--color-white);
179
- }
180
-
181
- &.badge--neutral {
182
- background: var(--color-neutral-solid);
183
- color: var(--color-white);
184
- }
185
- }
186
-
187
- /* Outline badge (no background, border only) */
188
- .badge--outline {
189
- background: transparent;
190
- border-width: 1px;
191
-
192
- &.badge--success {
193
- border-color: var(--color-success-border);
194
- color: var(--color-success-solid);
195
- }
196
-
197
- &.badge--warning {
198
- border-color: var(--color-warning-border);
199
- color: var(--color-warning-solid);
200
- }
201
-
202
- &.badge--error {
203
- border-color: var(--color-error-border);
204
- color: var(--color-error-solid);
205
- }
206
-
207
- &.badge--info {
208
- border-color: var(--color-info-border);
209
- color: var(--color-info-solid);
210
- }
211
-
212
- &.badge--primary {
213
- border-color: var(--color-orange-border);
214
- color: var(--color-orange-solid);
215
- }
216
-
217
- &.badge--neutral {
218
- border-color: var(--color-neutral-border);
219
- color: var(--color-neutral-solid);
220
- }
221
- }
222
-
223
- /* ===== INTERACTIVE BADGES ===== */
224
-
225
- /* Clickable/interactive badge */
226
- .badge--interactive {
227
- cursor: pointer;
228
-
229
- &:hover {
230
- border-color: var(--hover-border-color);
231
- background: var(--hover-bg-color);
232
- transform: translateY(-1px);
233
- }
234
-
235
- &:active {
236
- transform: translateY(0);
237
- }
238
-
239
- /* Variant-specific hover states */
240
- &.badge--success:hover {
241
- border-color: var(--color-success-border);
242
- background: color-mix(in srgb, var(--color-success-light) 150%, transparent);
243
- }
244
-
245
- &.badge--warning:hover {
246
- border-color: var(--color-warning-border);
247
- background: color-mix(in srgb, var(--color-warning-light) 150%, transparent);
248
- }
249
-
250
- &.badge--error:hover {
251
- border-color: var(--color-error-border);
252
- background: color-mix(in srgb, var(--color-error-light) 150%, transparent);
253
- }
254
-
255
- &.badge--info:hover {
256
- border-color: var(--color-info-border);
257
- background: color-mix(in srgb, var(--color-info-light) 150%, transparent);
258
- }
259
- }
260
-
261
- /* ===== BADGE WITH DOT INDICATOR ===== */
262
-
263
- .badge--with-dot {
264
- &::before {
265
- content: "";
266
- width: 6px;
267
- height: 6px;
268
- border-radius: 50%;
269
- background: currentColor;
270
- flex-shrink: 0;
271
- }
272
- }
273
-
274
- /* ===== MOBILE RESPONSIVENESS ===== */
275
-
276
- @media (max-width: 768px) {
277
- .badge {
278
- font-size: 0.5625rem; /* 9px on mobile */
279
- padding: 3px 6px;
280
-
281
- lucide-icon,
282
- svg {
283
- width: 10px;
284
- height: 10px;
285
- }
286
- }
287
-
288
- .badge--sm {
289
- padding: 2px 4px;
290
- font-size: 0.5rem; /* 8px */
291
- }
292
-
293
- .badge--lg {
294
- padding: 4px 8px;
295
- font-size: 0.625rem; /* 10px */
296
- }
297
- }
298
-
299
- /* ===== UTILITY CLASSES ===== */
300
-
301
- /* Badge group container */
302
- .badge-group {
303
- display: flex;
304
- align-items: center;
305
- gap: var(--spacing-sm);
306
- flex-wrap: wrap;
307
- }
308
-
309
- /* Badge group with tight spacing */
310
- .badge-group--tight {
311
- gap: var(--spacing-xs);
312
- }
313
-
314
- /* Badge group with loose spacing */
315
- .badge-group--loose {
316
- gap: var(--spacing-lg);
317
- }
@@ -1,169 +0,0 @@
1
- // ============================================
2
- // CARD ACTIONS - Enforced Button Styles
3
- // ============================================
4
- // These styles are included in the Shadow DOM bundle
5
- // to ensure proper button styling regardless of host app CSS.
6
- // Buttons are rendered directly without wrapper containers.
7
-
8
- // Host component styles
9
- app-card-actions {
10
- display: flex !important;
11
- flex-wrap: wrap !important;
12
- align-items: center !important;
13
- gap: var(--card-element-gap-lg) !important;
14
- margin-top: var(--space-3) !important;
15
- margin-left: var(--space-1) !important;
16
- margin-right: var(--space-1) !important;
17
- padding-bottom: var(--osi-card-padding) !important;
18
- }
19
-
20
- // Base Button Styles
21
- .osi-action-button {
22
- // Reset
23
- margin: 0 !important;
24
- -webkit-appearance: none !important;
25
- appearance: none !important;
26
-
27
- // Layout
28
- display: inline-flex !important;
29
- align-items: center !important;
30
- gap: var(--card-element-gap-md) !important;
31
- padding: var(--space-2) var(--space-5) !important;
32
-
33
- // Typography
34
- font-family:
35
- Helvetica,
36
- "Helvetica Neue",
37
- -apple-system,
38
- BlinkMacSystemFont,
39
- "Segoe UI",
40
- Roboto,
41
- Arial,
42
- sans-serif !important;
43
- font-size: 0.875rem !important;
44
- font-weight: 600 !important;
45
- line-height: 1.25rem !important;
46
- text-decoration: none !important;
47
- white-space: nowrap !important;
48
-
49
- // Interaction
50
- cursor: pointer !important;
51
-
52
- // Visual
53
- border-radius: var(--radius-md) !important;
54
- transition: var(--duration-fast) ease !important;
55
- box-sizing: border-box !important;
56
- }
57
-
58
- // Primary Button - Solid Orange Background with WHITE text
59
- .osi-action-button--primary {
60
- background-color: var(--osi-card-action-primary-bg) !important;
61
- color: var(--osi-card-action-primary-color) !important;
62
- border: none !important;
63
- box-shadow: var(--osi-card-action-primary-shadow) !important;
64
-
65
- // Force white text on all child elements
66
- * {
67
- color: var(--osi-card-action-primary-color) !important;
68
- }
69
- }
70
-
71
- .osi-action-button--primary:hover {
72
- background-color: var(--osi-card-action-primary-bg-hover) !important;
73
- color: var(--osi-card-action-primary-color) !important;
74
- box-shadow: var(--osi-card-action-primary-shadow-hover) !important;
75
- transform: translateY(calc(var(--motion-distance-xs) * -0.5)) !important;
76
- }
77
-
78
- .osi-action-button--primary:active {
79
- background-color: var(--color-brand-dark) !important;
80
- color: var(--osi-card-action-primary-color) !important;
81
- transform: scale(0.98) translateY(0) !important;
82
- box-shadow: var(--osi-card-action-primary-shadow) !important;
83
- }
84
-
85
- .osi-action-button--primary:focus-visible {
86
- outline: var(--border-width-accent-sm) solid var(--color-brand) !important;
87
- outline-offset: var(--border-width-accent-sm) !important;
88
- }
89
-
90
- // Secondary Button - Orange Border (Outline) with WHITE text
91
- .osi-action-button--secondary {
92
- background-color: transparent !important;
93
- color: var(--osi-card-action-secondary-color) !important;
94
- border: var(--osi-card-action-secondary-border) !important;
95
-
96
- // Force white text on all child elements
97
- * {
98
- color: var(--osi-card-action-secondary-color) !important;
99
- }
100
- }
101
-
102
- .osi-action-button--secondary:hover {
103
- background-color: var(--osi-card-action-secondary-bg-hover) !important;
104
- color: var(--osi-card-action-secondary-color) !important;
105
- box-shadow: var(--osi-card-action-secondary-shadow-hover) !important;
106
- }
107
-
108
- .osi-action-button--secondary:active {
109
- background-color: var(--osi-card-action-secondary-bg-hover) !important;
110
- color: var(--osi-card-action-secondary-color) !important;
111
- transform: scale(0.98) !important;
112
- }
113
-
114
- .osi-action-button--secondary:focus-visible {
115
- outline: var(--border-width-accent-sm) solid var(--color-brand) !important;
116
- outline-offset: var(--border-width-accent-sm) !important;
117
- }
118
-
119
- // Button Content Elements - Always white
120
- .osi-action-button__label {
121
- color: inherit !important;
122
- font-family: inherit !important;
123
- font-size: inherit !important;
124
- font-weight: inherit !important;
125
- }
126
-
127
- .osi-action-button__icon {
128
- width: var(--icon-sm) !important;
129
- height: var(--icon-sm) !important;
130
- object-fit: contain !important;
131
- flex-shrink: 0 !important;
132
- }
133
-
134
- .osi-action-button__emoji {
135
- font-size: var(--icon-sm) !important;
136
- line-height: 1 !important;
137
- flex-shrink: 0 !important;
138
- }
139
-
140
- // Lucide Icons in Buttons
141
- .osi-action-button lucide-icon {
142
- display: inline-flex !important;
143
- align-items: center !important;
144
- justify-content: center !important;
145
- flex-shrink: 0 !important;
146
- }
147
-
148
- .osi-action-button lucide-icon svg {
149
- width: var(--icon-sm) !important;
150
- height: var(--icon-sm) !important;
151
- stroke: currentColor !important;
152
- fill: none !important;
153
- stroke-width: var(--border-width-accent-sm) !important;
154
- stroke-linecap: round !important;
155
- stroke-linejoin: round !important;
156
- }
157
-
158
- // Screen Reader Only (Accessibility)
159
- .sr-only {
160
- position: absolute !important;
161
- width: 1px !important;
162
- height: 1px !important;
163
- padding: 0 !important;
164
- margin: -1px !important;
165
- overflow: hidden !important;
166
- clip: rect(0, 0, 0, 0) !important;
167
- white-space: nowrap !important;
168
- border-width: 0 !important;
169
- }
@@ -1,47 +0,0 @@
1
- // ============================================
2
- // CARD FOOTER - Enforced Signature Styles
3
- // ============================================
4
- // These styles are included in the Shadow DOM bundle
5
- // to ensure proper footer styling regardless of host app CSS.
6
-
7
- // Card Signature / "Powered by" Footer
8
- .card-signature {
9
- // Layout
10
- display: block !important;
11
- width: 100% !important;
12
- box-sizing: border-box !important;
13
-
14
- // Spacing - No margin above
15
- margin: 0 !important;
16
- padding: var(--space-3) var(--osi-card-padding) !important;
17
-
18
- // Typography - Small, centered, muted
19
- font-family:
20
- Helvetica,
21
- "Helvetica Neue",
22
- -apple-system,
23
- BlinkMacSystemFont,
24
- "Segoe UI",
25
- Roboto,
26
- Arial,
27
- sans-serif !important;
28
- font-size: var(--text-xs) !important;
29
- font-weight: 400 !important;
30
- line-height: 1.4 !important;
31
- letter-spacing: 0.02em !important;
32
- text-align: center !important;
33
-
34
- // Color - Muted gray
35
- color: var(--muted-foreground) !important;
36
-
37
- // Visual reset
38
- background: transparent !important;
39
- border: none !important;
40
- text-decoration: none !important;
41
- }
42
-
43
- // Dark theme variant - uses theme-aware variable
44
- :host([data-theme="night"]) .card-signature,
45
- :host-context([data-theme="night"]) .card-signature {
46
- color: var(--muted-foreground) !important;
47
- }