osi-cards-lib 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.
Files changed (114) hide show
  1. package/README.md +763 -0
  2. package/esm2022/lib/components/ai-card-renderer/ai-card-renderer.component.mjs +911 -0
  3. package/esm2022/lib/components/card-preview/card-preview.component.mjs +74 -0
  4. package/esm2022/lib/components/card-skeleton/card-skeleton.component.mjs +24 -0
  5. package/esm2022/lib/components/masonry-grid/masonry-grid.component.mjs +330 -0
  6. package/esm2022/lib/components/section-renderer/section-renderer.component.mjs +166 -0
  7. package/esm2022/lib/components/sections/analytics-section/analytics-section.component.mjs +70 -0
  8. package/esm2022/lib/components/sections/base-section.component.mjs +335 -0
  9. package/esm2022/lib/components/sections/brand-colors-section/brand-colors-section.component.mjs +89 -0
  10. package/esm2022/lib/components/sections/chart-section/chart-section.component.mjs +92 -0
  11. package/esm2022/lib/components/sections/contact-card-section/contact-card-section.component.mjs +70 -0
  12. package/esm2022/lib/components/sections/event-section/event-section.component.mjs +32 -0
  13. package/esm2022/lib/components/sections/fallback-section/fallback-section.component.mjs +16 -0
  14. package/esm2022/lib/components/sections/financials-section/financials-section.component.mjs +53 -0
  15. package/esm2022/lib/components/sections/info-section.component.mjs +68 -0
  16. package/esm2022/lib/components/sections/list-section/list-section.component.mjs +36 -0
  17. package/esm2022/lib/components/sections/map-section/map-section.component.mjs +52 -0
  18. package/esm2022/lib/components/sections/network-card-section/network-card-section.component.mjs +41 -0
  19. package/esm2022/lib/components/sections/news-section/news-section.component.mjs +44 -0
  20. package/esm2022/lib/components/sections/overview-section/overview-section.component.mjs +47 -0
  21. package/esm2022/lib/components/sections/product-section/product-section.component.mjs +129 -0
  22. package/esm2022/lib/components/sections/quotation-section/quotation-section.component.mjs +39 -0
  23. package/esm2022/lib/components/sections/social-media-section/social-media-section.component.mjs +45 -0
  24. package/esm2022/lib/components/sections/solutions-section/solutions-section.component.mjs +29 -0
  25. package/esm2022/lib/components/sections/text-reference-section/text-reference-section.component.mjs +42 -0
  26. package/esm2022/lib/icons/index.mjs +2 -0
  27. package/esm2022/lib/icons/lucide-icons.module.mjs +91 -0
  28. package/esm2022/lib/models/card.model.mjs +111 -0
  29. package/esm2022/lib/models/index.mjs +2 -0
  30. package/esm2022/lib/services/icon.service.mjs +148 -0
  31. package/esm2022/lib/services/index.mjs +5 -0
  32. package/esm2022/lib/services/magnetic-tilt.service.mjs +224 -0
  33. package/esm2022/lib/services/section-normalization.service.mjs +243 -0
  34. package/esm2022/lib/services/section-utils.service.mjs +122 -0
  35. package/esm2022/lib/utils/card-diff.util.mjs +327 -0
  36. package/esm2022/lib/utils/index.mjs +3 -0
  37. package/esm2022/lib/utils/responsive.util.mjs +14 -0
  38. package/esm2022/osi-cards-lib.mjs +5 -0
  39. package/esm2022/public-api.mjs +57 -0
  40. package/fesm2022/osi-cards-lib.mjs +3960 -0
  41. package/index.d.ts +5 -0
  42. package/lib/components/ai-card-renderer/ai-card-renderer.component.d.ts +163 -0
  43. package/lib/components/card-preview/card-preview.component.d.ts +52 -0
  44. package/lib/components/card-skeleton/card-skeleton.component.d.ts +8 -0
  45. package/lib/components/masonry-grid/masonry-grid.component.d.ts +72 -0
  46. package/lib/components/section-renderer/section-renderer.component.d.ts +25 -0
  47. package/lib/components/sections/analytics-section/analytics-section.component.d.ts +32 -0
  48. package/lib/components/sections/base-section.component.d.ts +138 -0
  49. package/lib/components/sections/brand-colors-section/brand-colors-section.component.d.ts +28 -0
  50. package/lib/components/sections/chart-section/chart-section.component.d.ts +30 -0
  51. package/lib/components/sections/contact-card-section/contact-card-section.component.d.ts +35 -0
  52. package/lib/components/sections/event-section/event-section.component.d.ts +17 -0
  53. package/lib/components/sections/fallback-section/fallback-section.component.d.ts +7 -0
  54. package/lib/components/sections/financials-section/financials-section.component.d.ts +27 -0
  55. package/lib/components/sections/info-section.component.d.ts +33 -0
  56. package/lib/components/sections/list-section/list-section.component.d.ts +21 -0
  57. package/lib/components/sections/map-section/map-section.component.d.ts +22 -0
  58. package/lib/components/sections/network-card-section/network-card-section.component.d.ts +18 -0
  59. package/lib/components/sections/news-section/news-section.component.d.ts +16 -0
  60. package/lib/components/sections/overview-section/overview-section.component.d.ts +19 -0
  61. package/lib/components/sections/product-section/product-section.component.d.ts +57 -0
  62. package/lib/components/sections/quotation-section/quotation-section.component.d.ts +23 -0
  63. package/lib/components/sections/social-media-section/social-media-section.component.d.ts +11 -0
  64. package/lib/components/sections/solutions-section/solutions-section.component.d.ts +19 -0
  65. package/lib/components/sections/text-reference-section/text-reference-section.component.d.ts +25 -0
  66. package/lib/icons/index.d.ts +1 -0
  67. package/lib/icons/lucide-icons.module.d.ts +7 -0
  68. package/lib/models/card.model.d.ts +289 -0
  69. package/lib/models/index.d.ts +1 -0
  70. package/lib/services/icon.service.d.ts +9 -0
  71. package/lib/services/index.d.ts +4 -0
  72. package/lib/services/magnetic-tilt.service.d.ts +34 -0
  73. package/lib/services/section-normalization.service.d.ts +38 -0
  74. package/lib/services/section-utils.service.d.ts +46 -0
  75. package/lib/utils/card-diff.util.d.ts +52 -0
  76. package/lib/utils/index.d.ts +2 -0
  77. package/lib/utils/responsive.util.d.ts +2 -0
  78. package/package.json +63 -0
  79. package/public-api.d.ts +50 -0
  80. package/styles/_styles.scss +95 -0
  81. package/styles/components/cards/_ai-card.scss +743 -0
  82. package/styles/components/sections/_analytics.scss +280 -0
  83. package/styles/components/sections/_brand-colors.scss +280 -0
  84. package/styles/components/sections/_chart.scss +494 -0
  85. package/styles/components/sections/_contact.scss +250 -0
  86. package/styles/components/sections/_design-system.scss +540 -0
  87. package/styles/components/sections/_event.scss +246 -0
  88. package/styles/components/sections/_fallback.scss +172 -0
  89. package/styles/components/sections/_financials.scss +258 -0
  90. package/styles/components/sections/_global-enforcement.scss +648 -0
  91. package/styles/components/sections/_info.scss +224 -0
  92. package/styles/components/sections/_list.scss +216 -0
  93. package/styles/components/sections/_map.scss +186 -0
  94. package/styles/components/sections/_network.scss +115 -0
  95. package/styles/components/sections/_news.scss +81 -0
  96. package/styles/components/sections/_overview.scss +159 -0
  97. package/styles/components/sections/_product.scss +906 -0
  98. package/styles/components/sections/_quotation.scss +151 -0
  99. package/styles/components/sections/_section-shell.scss +385 -0
  100. package/styles/components/sections/_section-types.scss +290 -0
  101. package/styles/components/sections/_sections-base.scss +332 -0
  102. package/styles/components/sections/_social-media.scss +88 -0
  103. package/styles/components/sections/_solutions.scss +205 -0
  104. package/styles/components/sections/_text-reference.scss +158 -0
  105. package/styles/components/sections/_unified-cards.scss +124 -0
  106. package/styles/core/_animations.scss +766 -0
  107. package/styles/core/_global.scss +66 -0
  108. package/styles/core/_mixins.scss +140 -0
  109. package/styles/core/_surface-layers.scss +76 -0
  110. package/styles/core/_utilities.scss +193 -0
  111. package/styles/core/_variables.scss +462 -0
  112. package/styles/core/variables/_colors.scss +212 -0
  113. package/styles/layout/_masonry.scss +60 -0
  114. package/styles/layout/_tilt.scss +214 -0
@@ -0,0 +1,743 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* AI Card Design System */
3
+ /* -------------------------------------------------------------------------- */
4
+
5
+ .ai-card-surface {
6
+ position: relative;
7
+ display: flex;
8
+ flex-direction: column;
9
+ height: 100%;
10
+ overflow: hidden;
11
+ /* Card has its own background distinct from sections */
12
+ @include surface-ai-card-base;
13
+ /* Force border to be visible - override any resets */
14
+ border: 0.5px solid color-mix(in srgb, var(--color-brand) 49%, transparent) !important;
15
+ border-width: 0.5px !important;
16
+ border-style: solid !important;
17
+ border-color: color-mix(in srgb, var(--color-brand) 49%, transparent) !important;
18
+ padding: var(--card-main-padding, 16px) !important;
19
+
20
+ /* Gap between header and body - defined at card level */
21
+ gap: var(--section-card-gap) !important;
22
+
23
+ /* Smooth transitions for content updates */
24
+ transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),
25
+ transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
26
+
27
+ /* Enhanced text sharpness */
28
+ -webkit-font-smoothing: antialiased;
29
+ -moz-osx-font-smoothing: grayscale;
30
+ text-rendering: optimizeLegibility;
31
+
32
+ /* Force sharp text rendering on all child elements */
33
+ * {
34
+ -webkit-font-smoothing: antialiased;
35
+ -moz-osx-font-smoothing: grayscale;
36
+ text-rendering: optimizeLegibility;
37
+ }
38
+
39
+ /* Smooth transitions for card title and subtitle updates */
40
+ h1, .ai-card-subtitle {
41
+ transition: opacity 0.2s ease, transform 0.2s ease;
42
+ }
43
+ }
44
+
45
+ .ai-card-surface:hover {
46
+ @include surface-ai-card-hover;
47
+ /* Force hover border to be visible - override any resets */
48
+ border: 0.5px solid var(--color-brand) !important;
49
+ border-width: 0.5px !important;
50
+ border-style: solid !important;
51
+ border-color: var(--color-brand) !important;
52
+ transform: none !important;
53
+ }
54
+
55
+ .ai-card-surface--fullscreen {
56
+ /* Fullscreen styling - clean and focused */
57
+ border: none !important;
58
+ box-shadow: none !important;
59
+ background: transparent !important;
60
+ max-height: none !important;
61
+ max-width: none !important;
62
+ width: 100% !important;
63
+ overflow: visible !important;
64
+ padding: var(--card-main-padding, 16px) !important;
65
+
66
+ /* Disable all tilt effects */
67
+ .tilt-container {
68
+ transform: none !important;
69
+ box-shadow: none !important;
70
+ width: 100% !important;
71
+ max-width: none !important;
72
+ }
73
+
74
+ .glow-container {
75
+ filter: none !important;
76
+ }
77
+
78
+ .card-reflection {
79
+ display: none !important;
80
+ }
81
+
82
+ /* Remove box-shadow glow from masonry items (sections) in fullscreen */
83
+ .masonry-item {
84
+ box-shadow: none !important;
85
+
86
+ &:hover {
87
+ box-shadow: none !important;
88
+ }
89
+ }
90
+
91
+ /* Compact header - invisible container */
92
+ .ai-card-header {
93
+ padding: 0 !important;
94
+ margin: 0 !important;
95
+ border: none !important;
96
+ background: transparent !important;
97
+ box-shadow: none !important;
98
+ }
99
+
100
+ .ai-card-title {
101
+ font-size: 22px !important;
102
+ }
103
+
104
+ .ai-card-subtitle {
105
+ font-size: 12px !important;
106
+ }
107
+ }
108
+
109
+ .ai-card-fullscreen-btn {
110
+ display: inline-flex;
111
+ align-items: center;
112
+ justify-content: center;
113
+ width: 36px;
114
+ height: 36px;
115
+ border-radius: 8px;
116
+ background: rgba(255, 121, 0, 0.08);
117
+ border: 1px solid rgba(255, 121, 0, 0.2);
118
+ color: var(--foreground);
119
+ cursor: pointer;
120
+ transition: all 0.2s ease;
121
+ flex-shrink: 0;
122
+
123
+ /* Position absolutely in top-right corner */
124
+ position: absolute;
125
+ top: var(--card-main-padding);
126
+ right: var(--card-main-padding);
127
+ z-index: 100;
128
+ }
129
+
130
+ .ai-card-fullscreen-btn:hover {
131
+ transform: translateY(-2px);
132
+ background: rgba(255, 121, 0, 0.15);
133
+ border-color: rgba(255, 121, 0, 0.4);
134
+ box-shadow: 0 4px 12px rgba(255, 121, 0, 0.2);
135
+ }
136
+
137
+ .ai-card-fullscreen-btn:active {
138
+ transform: translateY(0);
139
+ }
140
+
141
+ .ai-card-fullscreen-btn__icon {
142
+ color: currentColor;
143
+ }
144
+
145
+ .ai-card-header {
146
+ position: relative;
147
+ z-index: 10;
148
+ /* INVISIBLE CONTAINER - No visual styling */
149
+ /* NO PADDING - completely removed */
150
+ padding: 0 !important;
151
+ padding-top: 0 !important;
152
+ padding-bottom: 0 !important;
153
+ padding-left: 0 !important;
154
+ padding-right: 0 !important;
155
+ padding-block: 0 !important;
156
+ padding-block-start: 0 !important;
157
+ padding-block-end: 0 !important;
158
+ padding-inline: 0 !important;
159
+ padding-inline-start: 0 !important;
160
+ padding-inline-end: 0 !important;
161
+ margin: 0 !important;
162
+ display: flex;
163
+ flex-direction: column;
164
+ gap: 10px;
165
+ /* NO BORDER - completely invisible */
166
+ border: none !important;
167
+ border-top: none !important;
168
+ border-bottom: none !important;
169
+ border-left: none !important;
170
+ border-right: none !important;
171
+ border-width: 0 !important;
172
+ border-style: none !important;
173
+ border-color: transparent !important;
174
+ border-image: none !important;
175
+ border-block: none !important;
176
+ border-block-start: none !important;
177
+ border-block-end: none !important;
178
+ border-inline: none !important;
179
+ border-inline-start: none !important;
180
+ border-inline-end: none !important;
181
+ /* NO BACKGROUND - completely transparent */
182
+ background: transparent !important;
183
+ background-color: transparent !important;
184
+ backdrop-filter: none !important;
185
+ /* NO BOX SHADOW - completely invisible */
186
+ box-shadow: none !important;
187
+ /* NO BORDER RADIUS - no visual styling */
188
+ border-radius: 0 !important;
189
+ /* NO OUTLINE - no visual styling */
190
+ outline: none !important;
191
+ outline-offset: 0 !important;
192
+ outline-width: 0 !important;
193
+ outline-style: none !important;
194
+ outline-color: transparent !important;
195
+ }
196
+
197
+ .ai-card-header::before {
198
+ display: none !important;
199
+ border: none !important;
200
+ border-top: none !important;
201
+ border-bottom: none !important;
202
+ border-left: none !important;
203
+ border-right: none !important;
204
+ border-width: 0 !important;
205
+ border-style: none !important;
206
+ border-color: transparent !important;
207
+ border-image: none !important;
208
+ border-block: none !important;
209
+ border-inline: none !important;
210
+ padding: 0 !important;
211
+ padding-block: 0 !important;
212
+ padding-inline: 0 !important;
213
+ outline: none !important;
214
+ outline-width: 0 !important;
215
+ outline-style: none !important;
216
+ outline-color: transparent !important;
217
+ box-shadow: none !important;
218
+ }
219
+
220
+ .ai-card-header::after {
221
+ display: none !important;
222
+ border: none !important;
223
+ border-top: none !important;
224
+ border-bottom: none !important;
225
+ border-left: none !important;
226
+ border-right: none !important;
227
+ border-width: 0 !important;
228
+ border-style: none !important;
229
+ border-color: transparent !important;
230
+ border-image: none !important;
231
+ border-block: none !important;
232
+ border-inline: none !important;
233
+ padding: 0 !important;
234
+ padding-block: 0 !important;
235
+ padding-inline: 0 !important;
236
+ outline: none !important;
237
+ outline-width: 0 !important;
238
+ outline-style: none !important;
239
+ outline-color: transparent !important;
240
+ box-shadow: none !important;
241
+ }
242
+
243
+ .ai-card-title-stack {
244
+ display: flex;
245
+ flex-direction: column;
246
+ gap: 2px;
247
+ }
248
+
249
+ .ai-card-eyebrow {
250
+ font-size: var(--font-card-eyebrow);
251
+ letter-spacing: 0.08em;
252
+ text-transform: none;
253
+ color: color-mix(in srgb, var(--foreground) 85%, transparent);
254
+ font-weight: 600;
255
+ opacity: 0.9;
256
+ }
257
+
258
+ /* Removed .ai-card-title-group - content moved up one level */
259
+
260
+ .ai-card-title {
261
+ font-size: 28px; /* Increased from default */
262
+ font-weight: 700;
263
+ color: var(--foreground);
264
+ letter-spacing: -0.01em;
265
+ line-height: 1.2;
266
+ text-transform: none;
267
+
268
+ /* ABSOLUTE NO BORDERS - MAXIMUM SPECIFICITY */
269
+ border: 0 !important;
270
+ border-width: 0 !important;
271
+ border-style: none !important;
272
+ border-color: transparent !important;
273
+ border-top: 0 !important;
274
+ border-right: 0 !important;
275
+ border-bottom: 0 !important;
276
+ border-left: 0 !important;
277
+ border-top: none !important;
278
+ border-right: none !important;
279
+ border-bottom: none !important;
280
+ border-left: none !important;
281
+ border-block: none !important;
282
+ border-inline: none !important;
283
+ border-image: none !important;
284
+ border-radius: 0 !important;
285
+
286
+ /* NO OUTLINES */
287
+ outline: none !important;
288
+ outline-width: 0 !important;
289
+ outline-style: none !important;
290
+ outline-color: transparent !important;
291
+ outline-offset: 0 !important;
292
+
293
+ /* NO PADDING */
294
+ padding: 0 !important;
295
+ padding-top: 0 !important;
296
+ padding-right: 0 !important;
297
+ padding-bottom: 0 !important;
298
+ padding-left: 0 !important;
299
+ padding-block: 0 !important;
300
+ padding-inline: 0 !important;
301
+
302
+ /* NO MARGIN */
303
+ margin: 0 !important;
304
+ margin-top: 0 !important;
305
+ margin-right: 0 !important;
306
+ margin-bottom: 0 !important;
307
+ margin-left: 0 !important;
308
+ margin-block: 0 !important;
309
+ margin-inline: 0 !important;
310
+
311
+ /* NO SHADOWS OR DECORATIONS */
312
+ box-shadow: none !important;
313
+ text-decoration: none !important;
314
+ text-decoration-line: none !important;
315
+ text-decoration-style: none !important;
316
+ text-decoration-color: transparent !important;
317
+ text-underline-offset: 0 !important;
318
+ text-decoration-thickness: 0 !important;
319
+
320
+ /* NO PSEUDO-ELEMENT BORDERS */
321
+ &::before,
322
+ &::after {
323
+ display: none !important;
324
+ border: none !important;
325
+ border-width: 0 !important;
326
+ border-style: none !important;
327
+ border-color: transparent !important;
328
+ border-top: none !important;
329
+ border-right: none !important;
330
+ border-bottom: none !important;
331
+ border-left: none !important;
332
+ border-block: none !important;
333
+ border-inline: none !important;
334
+ border-image: none !important;
335
+ outline: none !important;
336
+ outline-width: 0 !important;
337
+ outline-style: none !important;
338
+ outline-color: transparent !important;
339
+ box-shadow: none !important;
340
+ padding: 0 !important;
341
+ padding-top: 0 !important;
342
+ padding-right: 0 !important;
343
+ padding-bottom: 0 !important;
344
+ padding-left: 0 !important;
345
+ padding-block: 0 !important;
346
+ padding-inline: 0 !important;
347
+ margin: 0 !important;
348
+ content: none !important;
349
+ }
350
+ }
351
+
352
+ .ai-card-type-pill {
353
+ display: inline-flex;
354
+ align-items: center;
355
+ gap: 3px;
356
+ padding: 2px 6px;
357
+ border-radius: 999px;
358
+ border: 1px solid color-mix(in srgb, var(--accent) 32%, transparent);
359
+ background: color-mix(in srgb, var(--accent) 18%, transparent);
360
+ text-transform: none;
361
+ letter-spacing: 0.05em;
362
+ font-size: var(--font-card-meta);
363
+ font-weight: 600;
364
+ color: color-mix(in srgb, var(--foreground) 85%, var(--accent) 15%);
365
+ }
366
+
367
+ .ai-card-subtitle {
368
+ font-size: var(--font-card-subtitle);
369
+ line-height: 1.4;
370
+ color: color-mix(in srgb, var(--foreground) 88%, transparent);
371
+ max-width: 42ch;
372
+ text-transform: none;
373
+ }
374
+
375
+ .ai-card-meta {
376
+ display: flex;
377
+ flex-wrap: wrap;
378
+ align-items: center;
379
+ gap: 4px;
380
+ text-transform: none;
381
+ font-size: var(--font-card-meta);
382
+ letter-spacing: 0.05em;
383
+ color: color-mix(in srgb, var(--foreground) 85%, transparent);
384
+ }
385
+
386
+ .ai-card-meta__chip {
387
+ display: inline-flex;
388
+ align-items: stretch;
389
+ gap: 4px;
390
+ padding: 2px 6px;
391
+ border-radius: 999px;
392
+ border: 1px solid color-mix(in srgb, var(--border) 65%, transparent);
393
+ background: color-mix(in srgb, var(--surface) 80%, transparent);
394
+ }
395
+
396
+ .ai-card-meta__chip-dot {
397
+ width: 3px;
398
+ height: 3px;
399
+ border-radius: 50%;
400
+ background: var(--accent);
401
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 12%, transparent);
402
+ }
403
+
404
+ .ai-card-meta__chip-dot--primary {
405
+ background: var(--accent);
406
+ }
407
+
408
+ .ai-card-meta__chip-dot--secondary {
409
+ background: color-mix(in srgb, var(--accent) 65%, transparent);
410
+ }
411
+
412
+ .ai-card-meta__chip-dot--tertiary {
413
+ background: color-mix(in srgb, var(--accent) 35%, transparent);
414
+ }
415
+
416
+ .ai-card-meta__chip-content {
417
+ display: flex;
418
+ flex-direction: column;
419
+ gap: 0px;
420
+ line-height: 1;
421
+ }
422
+
423
+ .ai-card-meta__chip-label {
424
+ font-size: 0.48rem;
425
+ letter-spacing: 0.05em;
426
+ text-transform: none;
427
+ color: color-mix(in srgb, var(--foreground) 85%, transparent);
428
+ font-weight: 600;
429
+ }
430
+
431
+ .ai-card-meta__chip-value {
432
+ font-size: var(--font-card-meta-value);
433
+ font-weight: 600;
434
+ color: var(--foreground);
435
+ letter-spacing: 0.01em;
436
+ }
437
+
438
+ .ai-card-body {
439
+ position: relative;
440
+ z-index: 10;
441
+ flex: 1;
442
+ /* INVISIBLE CONTAINER - No visual styling */
443
+ /* NO PADDING - completely removed */
444
+ padding: 0 !important;
445
+ padding-top: 0 !important;
446
+ padding-bottom: 0 !important;
447
+ padding-left: 0 !important;
448
+ padding-right: 0 !important;
449
+ padding-block: 0 !important;
450
+ padding-block-start: 0 !important;
451
+ padding-block-end: 0 !important;
452
+ padding-inline: 0 !important;
453
+ padding-inline-start: 0 !important;
454
+ padding-inline-end: 0 !important;
455
+ margin: 0 !important;
456
+ display: flex;
457
+ flex-direction: column;
458
+ gap: 12px; /* Constant gap between sections */
459
+ min-height: 0;
460
+ /* NO BORDER - completely invisible */
461
+ border: none !important;
462
+ border-top: none !important;
463
+ border-bottom: none !important;
464
+ border-left: none !important;
465
+ border-right: none !important;
466
+ border-width: 0 !important;
467
+ border-style: none !important;
468
+ border-color: transparent !important;
469
+ border-image: none !important;
470
+ border-block: none !important;
471
+ border-block-start: none !important;
472
+ border-block-end: none !important;
473
+ border-inline: none !important;
474
+ border-inline-start: none !important;
475
+ border-inline-end: none !important;
476
+ /* NO BACKGROUND - completely transparent */
477
+ background: transparent !important;
478
+ background-color: transparent !important;
479
+ backdrop-filter: none !important;
480
+ /* NO BOX SHADOW - completely invisible */
481
+ box-shadow: none !important;
482
+ /* NO BORDER RADIUS - no visual styling */
483
+ border-radius: 0 !important;
484
+ /* NO OUTLINE - no visual styling */
485
+ outline: none !important;
486
+ outline-offset: 0 !important;
487
+ outline-width: 0 !important;
488
+ outline-style: none !important;
489
+ outline-color: transparent !important;
490
+ }
491
+
492
+ .ai-card-body::before {
493
+ display: none !important;
494
+ border: none !important;
495
+ border-top: none !important;
496
+ border-bottom: none !important;
497
+ border-left: none !important;
498
+ border-right: none !important;
499
+ border-width: 0 !important;
500
+ border-style: none !important;
501
+ border-color: transparent !important;
502
+ border-image: none !important;
503
+ border-block: none !important;
504
+ border-inline: none !important;
505
+ padding: 0 !important;
506
+ padding-block: 0 !important;
507
+ padding-inline: 0 !important;
508
+ outline: none !important;
509
+ outline-width: 0 !important;
510
+ outline-style: none !important;
511
+ outline-color: transparent !important;
512
+ box-shadow: none !important;
513
+ }
514
+
515
+ .ai-card-body::after {
516
+ display: none !important;
517
+ border: none !important;
518
+ border-top: none !important;
519
+ border-bottom: none !important;
520
+ border-left: none !important;
521
+ border-right: none !important;
522
+ border-width: 0 !important;
523
+ border-style: none !important;
524
+ border-color: transparent !important;
525
+ border-image: none !important;
526
+ border-block: none !important;
527
+ border-inline: none !important;
528
+ padding: 0 !important;
529
+ padding-block: 0 !important;
530
+ padding-inline: 0 !important;
531
+ outline: none !important;
532
+ outline-width: 0 !important;
533
+ outline-style: none !important;
534
+ outline-color: transparent !important;
535
+ box-shadow: none !important;
536
+ }
537
+
538
+ /* Actions are now direct children of .ai-card-body - no wrapper container */
539
+ /* Removed .ai-card-actions container - actions are now direct children */
540
+
541
+ .ai-card-action {
542
+ position: relative;
543
+ overflow: hidden;
544
+ display: inline-flex;
545
+ align-items: center;
546
+ justify-content: center;
547
+ gap: 8px;
548
+ padding: 10px 20px;
549
+ border-radius: 8px;
550
+ font-weight: 600;
551
+ font-size: var(--font-card-action, 0.875rem);
552
+ letter-spacing: 0.01em;
553
+ border: 1px solid transparent;
554
+ text-transform: none;
555
+ cursor: pointer;
556
+ transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
557
+ }
558
+
559
+ .ai-card-action--primary {
560
+ background: var(--primary);
561
+ color: var(--primary-foreground);
562
+ border-color: color-mix(in srgb, var(--primary) 80%, transparent);
563
+ box-shadow:
564
+ 0 2px 8px color-mix(in srgb, var(--primary) 25%, transparent),
565
+ 0 1px 2px rgba(0, 0, 0, 0.1);
566
+ }
567
+
568
+ .ai-card-action--primary:hover {
569
+ transform: translateY(-1px);
570
+ box-shadow:
571
+ 0 4px 16px color-mix(in srgb, var(--primary) 35%, transparent),
572
+ 0 2px 4px rgba(0, 0, 0, 0.1);
573
+ background: color-mix(in srgb, var(--primary) 95%, white 5%);
574
+ border-color: var(--primary);
575
+ }
576
+
577
+ .ai-card-action--secondary {
578
+ background: color-mix(in srgb, var(--card) 90%, transparent);
579
+ color: var(--foreground);
580
+ border-color: color-mix(in srgb, var(--border) 60%, transparent);
581
+ box-shadow:
582
+ 0 1px 3px rgba(0, 0, 0, 0.1),
583
+ 0 1px 2px rgba(0, 0, 0, 0.06);
584
+ }
585
+
586
+ .ai-card-action--secondary:hover {
587
+ transform: translateY(-1px);
588
+ border-color: color-mix(in srgb, var(--primary) 40%, transparent);
589
+ box-shadow:
590
+ 0 4px 12px rgba(0, 0, 0, 0.15),
591
+ 0 2px 4px rgba(0, 0, 0, 0.1);
592
+ background: color-mix(in srgb, var(--card) 95%, var(--primary) 5%);
593
+ }
594
+
595
+ .ai-card-action__shine {
596
+ position: absolute;
597
+ inset: 0;
598
+ background: linear-gradient(
599
+ 135deg,
600
+ rgba(255, 255, 255, 0.2) 0%,
601
+ rgba(255, 255, 255, 0) 50%,
602
+ rgba(255, 255, 255, 0.1) 100%
603
+ );
604
+ opacity: 0;
605
+ transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);
606
+ pointer-events: none;
607
+ border-radius: inherit;
608
+ }
609
+
610
+ .ai-card-action:hover .ai-card-action__shine {
611
+ opacity: 1;
612
+ }
613
+
614
+ .ai-card-action--primary .ai-card-action__shine {
615
+ background: linear-gradient(
616
+ 135deg,
617
+ rgba(255, 255, 255, 0.3) 0%,
618
+ rgba(255, 255, 255, 0) 50%,
619
+ rgba(255, 255, 255, 0.15) 100%
620
+ );
621
+ }
622
+
623
+ .ai-card-action--secondary .ai-card-action__shine {
624
+ background: linear-gradient(
625
+ 135deg,
626
+ rgba(255, 255, 255, 0.15) 0%,
627
+ rgba(255, 255, 255, 0) 50%,
628
+ rgba(255, 255, 255, 0.08) 100%
629
+ );
630
+ }
631
+
632
+ .ai-card-action__content {
633
+ position: relative;
634
+ z-index: 10;
635
+ display: inline-flex;
636
+ align-items: center;
637
+ gap: 6px;
638
+ }
639
+
640
+ .ai-card-action__icon {
641
+ color: currentColor;
642
+ opacity: 0.9;
643
+ transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), opacity 300ms cubic-bezier(0.4, 0, 0.2, 1);
644
+ }
645
+
646
+ .ai-card-action__label {
647
+ font-weight: 600;
648
+ letter-spacing: 0.01em;
649
+ transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);
650
+ }
651
+
652
+ .ai-card-action:hover .ai-card-action__icon {
653
+ transform: translateX(2px);
654
+ opacity: 1;
655
+ }
656
+
657
+ .ai-card-action:hover .ai-card-action__label {
658
+ transform: translateX(1px);
659
+ }
660
+
661
+ .ai-card-footnote {
662
+ margin-top: auto;
663
+ /* NO PADDING - compact design */
664
+ padding: 0 !important;
665
+ /* NO BORDER - removed border */
666
+ border: none !important;
667
+ border-top: none !important;
668
+ text-align: center;
669
+ /* MUCH SMALLER FONT - reduced font size */
670
+ font-size: 0.65rem !important; /* Reduced from default */
671
+ letter-spacing: 0.08em;
672
+ text-transform: none;
673
+ color: color-mix(in srgb, var(--foreground) 70%, transparent);
674
+ line-height: 1.2;
675
+ }
676
+
677
+ /* All sizing is now continuous via clamp() - no discrete breakpoints */
678
+
679
+ @media (prefers-reduced-motion: reduce) {
680
+ .ai-card-surface {
681
+ transition: none !important;
682
+ transform: none !important;
683
+ box-shadow: var(--card-box-shadow) !important;
684
+ }
685
+
686
+ .ai-card-surface::before {
687
+ opacity: 0 !important;
688
+ }
689
+
690
+ .ai-card-surface:hover {
691
+ transform: none !important;
692
+ }
693
+ }
694
+
695
+ /* Light theme overrides */
696
+ :root[data-theme='day'] {
697
+ .ai-card-surface {
698
+ background: rgba(255, 255, 255, 0.9);
699
+ border: 0.5px solid rgba(255, 121, 0, 0.25); /* Brand border in light mode too */
700
+ box-shadow: 0 0 18px rgba(255, 121, 0, 0.3); /* Orange glow only, intensified by 50% */
701
+ }
702
+
703
+ .ai-card-surface:hover {
704
+ background: rgba(255, 255, 255, 1);
705
+ border-color: rgba(255, 121, 0, 0.4);
706
+ /* Orange glow only - no dark shadows, intensified by 50% */
707
+ box-shadow: 0 0 24px rgba(255, 121, 0, 0.45);
708
+ }
709
+
710
+ .ai-card-surface--fullscreen {
711
+ background: #ffffff;
712
+ border-color: rgba(200, 200, 200, 0.4);
713
+ }
714
+
715
+ .ai-card-title {
716
+ color: #1a1a1a;
717
+ }
718
+
719
+ .ai-card-subtitle {
720
+ color: #6b7280;
721
+ }
722
+
723
+ .ai-card-eyebrow {
724
+ color: #9ca3af;
725
+ }
726
+
727
+ .ai-card-type-pill {
728
+ background: rgba(255, 121, 0, 0.08);
729
+ color: var(--primary);
730
+ border-color: rgba(255, 121, 0, 0.2);
731
+ }
732
+
733
+ .ai-card-fullscreen-btn {
734
+ background: rgba(255, 121, 0, 0.06);
735
+ border-color: rgba(255, 121, 0, 0.25);
736
+ color: #1a1a1a;
737
+
738
+ &:hover {
739
+ background: rgba(255, 121, 0, 0.12);
740
+ border-color: rgba(255, 121, 0, 0.4);
741
+ }
742
+ }
743
+ }