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,491 +0,0 @@
1
- /* ===================================================================
2
- SHARED STYLING MIXINS FOR OSI CARDS
3
- =================================================================== */
4
-
5
- /* ===================================================================
6
- IMPORTANT FLAG SYSTEM
7
- Controls whether !important is applied for Bootstrap/Boosted overrides.
8
-
9
- Usage:
10
- - In scoped/standalone styles: $osi-use-important: true (default)
11
- - In demo app styles: $osi-use-important: false
12
- =================================================================== */
13
-
14
- // Global flag - set to false in demo app entry point to disable !important
15
- $osi-use-important: true !default;
16
-
17
- /// Apply a property with conditional !important
18
- /// @param {String} $property - CSS property name
19
- /// @param {*} $value - Property value
20
- @mixin important-prop($property, $value) {
21
- @if $osi-use-important {
22
- #{$property}: #{$value} !important;
23
- } @else {
24
- #{$property}: #{$value};
25
- }
26
- }
27
-
28
- /// Apply display property with conditional !important
29
- @mixin display($value) {
30
- @include important-prop("display", $value);
31
- }
32
-
33
- /// Apply width property with conditional !important
34
- @mixin width($value) {
35
- @include important-prop("width", $value);
36
- }
37
-
38
- /// Apply grid-template-columns with conditional !important
39
- @mixin grid-columns($value) {
40
- @include important-prop("grid-template-columns", $value);
41
- }
42
-
43
- /// Apply gap property with conditional !important
44
- @mixin gap($value) {
45
- @include important-prop("gap", $value);
46
- }
47
-
48
- /// Apply flex-direction with conditional !important
49
- @mixin flex-direction($value) {
50
- @include important-prop("flex-direction", $value);
51
- }
52
-
53
- /// Apply box-sizing with conditional !important
54
- @mixin box-sizing($value) {
55
- @include important-prop("box-sizing", $value);
56
- }
57
-
58
- /// Apply min-height with conditional !important
59
- @mixin min-height($value) {
60
- @include important-prop("min-height", $value);
61
- }
62
-
63
- /* Glass panel effect for cards and modals */
64
- @mixin glass-panel(
65
- $padding: 1.5rem,
66
- $border-color: rgba(255, 255, 255, 0.08),
67
- $background-start: rgba(16, 16, 24, 0.86),
68
- $background-end: rgba(10, 10, 18, 0.92),
69
- $shadow: 0 28px 70px rgba(0, 0, 0, 0.5)
70
- ) {
71
- position: relative;
72
- border-radius: 22px;
73
- border: 1px solid $border-color;
74
- background: color-mix(in srgb, $background-start 50%, $background-end 50%);
75
- box-shadow: $shadow;
76
- -webkit-backdrop-filter: blur(18px);
77
- backdrop-filter: blur(18px);
78
- padding: $padding;
79
- }
80
-
81
- /* Shimmer overlay effect */
82
- @mixin shimmer-overlay($border-radius: 20px, $start-opacity: 0.08, $end-opacity: 0) {
83
- content: "";
84
- position: absolute;
85
- inset: 1px;
86
- border-radius: $border-radius;
87
- background: rgba(255, 255, 255, $start-opacity);
88
- pointer-events: none;
89
- }
90
-
91
- /* ===================================================================
92
- ANIMATION & TRANSITION MIXINS
93
- Performance-optimized with design system variables
94
- =================================================================== */
95
-
96
- /* Standard smooth transition for all properties */
97
- @mixin smooth-transition($duration: var(--duration-normal)) {
98
- transition: all $duration var(--ease-out-smooth);
99
-
100
- @media (prefers-reduced-motion: reduce) {
101
- transition: none;
102
- }
103
- }
104
-
105
- /* Transform-only transition (best performance) */
106
- @mixin transition-transform($duration: var(--duration-normal)) {
107
- transition: transform $duration var(--ease-out-smooth);
108
-
109
- @media (prefers-reduced-motion: reduce) {
110
- transition: none;
111
- }
112
- }
113
-
114
- /* Opacity transition */
115
- @mixin transition-opacity($duration: var(--duration-normal)) {
116
- transition: opacity $duration var(--ease-out-smooth);
117
-
118
- @media (prefers-reduced-motion: reduce) {
119
- transition: none;
120
- }
121
- }
122
-
123
- /* Multiple property transition */
124
- @mixin transition-properties(
125
- $properties,
126
- $duration: var(--duration-normal),
127
- $easing: var(--ease-out-smooth)
128
- ) {
129
- $transition-list: ();
130
-
131
- @each $property in $properties {
132
- $transition-list: append($transition-list, #{$property} $duration $easing, comma);
133
- }
134
-
135
- transition: $transition-list;
136
-
137
- @media (prefers-reduced-motion: reduce) {
138
- transition: none;
139
- }
140
- }
141
-
142
- /* Card interaction transitions - standard for all cards */
143
- @mixin card-transition() {
144
- transition:
145
- transform var(--card-hover-duration) var(--ease-out-smooth),
146
- border-color var(--card-hover-duration) var(--ease-out-smooth),
147
- background var(--card-hover-duration) var(--ease-out-smooth),
148
- box-shadow var(--card-hover-duration) var(--ease-out-smooth);
149
-
150
- @media (prefers-reduced-motion: reduce) {
151
- transition: none;
152
- }
153
- }
154
-
155
- /* Hardware acceleration hint */
156
- @mixin gpu-accelerated() {
157
- transform: translateZ(0);
158
- backface-visibility: hidden;
159
- perspective: 1000px;
160
- }
161
-
162
- /* Will-change optimization (use sparingly) */
163
- @mixin will-change-transform() {
164
- will-change: transform;
165
-
166
- &:not(:hover):not(:focus):not(:active) {
167
- will-change: auto;
168
- }
169
-
170
- @media (prefers-reduced-motion: reduce) {
171
- will-change: auto;
172
- }
173
- }
174
-
175
- /* Hover lift effect - DISABLED: Cards should not move vertically */
176
- @mixin hover-lift($distance: 0px) {
177
- @include transition-transform();
178
-
179
- &:hover {
180
- /* No vertical movement, only GPU acceleration */
181
- transform: translateZ(0);
182
-
183
- @media (prefers-reduced-motion: reduce) {
184
- transform: none;
185
- }
186
- }
187
- }
188
-
189
- /* Hover scale effect */
190
- @mixin hover-scale($scale: 1.05) {
191
- @include transition-transform();
192
-
193
- &:hover {
194
- transform: scale($scale) translateZ(0);
195
-
196
- @media (prefers-reduced-motion: reduce) {
197
- transform: none;
198
- }
199
- }
200
- }
201
-
202
- /* ===================================================================
203
- TYPOGRAPHY MIXINS
204
- Unified typography patterns for consistent text styling
205
- =================================================================== */
206
-
207
- /// Label text - used for field names, categories, tags
208
- /// @example @include osi-text('label');
209
- @mixin osi-text-label {
210
- @include important-prop("font-size", var(--card-label-font-size, 0.5rem));
211
- @include important-prop("font-weight", var(--card-label-font-weight, 700));
212
- @include important-prop("letter-spacing", var(--card-label-letter-spacing, 0.065em));
213
- @include important-prop("text-transform", var(--card-label-text-transform, uppercase));
214
- @include important-prop("color", var(--card-text-label, inherit));
215
- @include important-prop("line-height", var(--card-label-line-height, 1.25));
216
- @include important-prop("text-align", left);
217
- @include important-prop("font-family", inherit);
218
- }
219
-
220
- /// Value text - used for field values, data points
221
- @mixin osi-text-value {
222
- @include important-prop("font-size", var(--card-value-font-size, 1rem));
223
- @include important-prop("font-weight", var(--card-value-font-weight, 600));
224
- @include important-prop("color", var(--card-text-primary, inherit));
225
- @include important-prop("letter-spacing", var(--card-value-letter-spacing, -0.015em));
226
- @include important-prop("line-height", var(--card-value-line-height, 1.35));
227
- @include important-prop("text-align", left);
228
- @include important-prop("font-family", inherit);
229
- }
230
-
231
- /// Large value text - for emphasized stats, metrics
232
- @mixin osi-text-value-lg {
233
- @include important-prop("font-size", var(--card-value-font-size-large, 1.2rem));
234
- @include important-prop("font-weight", var(--card-value-font-weight, 600));
235
- @include important-prop("color", var(--card-text-primary, inherit));
236
- @include important-prop("letter-spacing", var(--card-value-letter-spacing, -0.015em));
237
- @include important-prop("line-height", var(--card-value-line-height, 1.35));
238
- @include important-prop("text-align", left);
239
- @include important-prop("font-family", inherit);
240
- }
241
-
242
- /// Title text - used for card titles, headings within cards
243
- @mixin osi-text-title {
244
- @include important-prop("font-size", var(--card-title-font-size, 0.95rem));
245
- @include important-prop("font-weight", var(--card-title-font-weight, 700));
246
- @include important-prop("color", var(--card-text-primary, inherit));
247
- @include important-prop("letter-spacing", var(--card-title-letter-spacing, -0.01em));
248
- @include important-prop("line-height", var(--card-title-line-height, 1.4));
249
- @include important-prop("text-align", left);
250
- @include important-prop("font-family", inherit);
251
- }
252
-
253
- /// Subtitle text - used for secondary headings, roles
254
- @mixin osi-text-subtitle {
255
- @include important-prop("font-size", var(--card-subtitle-font-size, 0.7rem));
256
- @include important-prop("font-weight", var(--card-subtitle-font-weight, 500));
257
- @include important-prop("color", var(--card-text-secondary, inherit));
258
- @include important-prop("letter-spacing", var(--card-subtitle-letter-spacing, 0.015em));
259
- @include important-prop("line-height", var(--card-subtitle-line-height, 1.3));
260
- @include important-prop("text-align", left);
261
- @include important-prop("font-family", inherit);
262
- }
263
-
264
- /// Meta text - used for timestamps, small descriptions
265
- @mixin osi-text-meta {
266
- @include important-prop("font-size", var(--card-meta-font-size, 0.6rem));
267
- @include important-prop("font-weight", var(--card-meta-font-weight, 500));
268
- @include important-prop("color", var(--card-text-muted, inherit));
269
- @include important-prop("line-height", var(--card-meta-line-height, 1.3));
270
- @include important-prop("text-align", left);
271
- @include important-prop("font-family", inherit);
272
- }
273
-
274
- /// Unified text mixin with variant selector
275
- /// @param {String} $variant - label, value, value-lg, title, subtitle, meta
276
- @mixin osi-text($variant) {
277
- @if $variant == "label" {
278
- @include osi-text-label;
279
- } @else if $variant == "value" {
280
- @include osi-text-value;
281
- } @else if $variant == "value-lg" {
282
- @include osi-text-value-lg;
283
- } @else if $variant == "title" {
284
- @include osi-text-title;
285
- } @else if $variant == "subtitle" {
286
- @include osi-text-subtitle;
287
- } @else if $variant == "meta" {
288
- @include osi-text-meta;
289
- }
290
- }
291
-
292
- /* ===================================================================
293
- GRID MIXINS
294
- Unified grid patterns for consistent layouts
295
- =================================================================== */
296
-
297
- /// Responsive auto-fit grid
298
- /// @param {Length} $min-width - Minimum column width
299
- /// @param {Length} $gap - Gap between items
300
- @mixin osi-grid(
301
- $min-width: var(--section-grid-min-width, 200px),
302
- $gap: var(--section-card-gap, 12px)
303
- ) {
304
- @include display(grid);
305
- @include grid-columns(repeat(auto-fit, minmax($min-width, 1fr)));
306
- @include gap($gap);
307
- @include width(100%);
308
- @include min-height(0);
309
- @include box-sizing(border-box);
310
-
311
- @media (max-width: 420px) {
312
- @include grid-columns(1fr);
313
- }
314
- }
315
-
316
- /// Flex column stack for vertical lists
317
- /// @param {Length} $gap - Gap between items
318
- @mixin osi-stack($gap: var(--section-stack-gap, 12px)) {
319
- @include display(flex);
320
- @include flex-direction(column);
321
- @include gap($gap);
322
- @include width(100%);
323
- @include box-sizing(border-box);
324
- }
325
-
326
- /// Fixed column grid
327
- /// @param {Number} $columns - Number of columns
328
- /// @param {Length} $gap - Gap between items
329
- @mixin osi-grid-fixed($columns: 2, $gap: var(--section-card-gap, 12px)) {
330
- @include display(grid);
331
- @include grid-columns(repeat($columns, 1fr));
332
- @include gap($gap);
333
- @include width(100%);
334
- @include box-sizing(border-box);
335
- }
336
-
337
- /* ===================================================================
338
- STAGGER ANIMATION MIXINS
339
- Reusable patterns for staggered animations
340
- =================================================================== */
341
-
342
- /// Apply staggered animation delays to child elements
343
- /// @param {Number} $count - Number of children to stagger
344
- /// @param {Time} $base-delay - Base delay between items (default: 0.08s)
345
- /// @param {String} $selector - Child selector (default: '&')
346
- /// @param {String} $property - CSS property to delay (default: animation-delay)
347
- @mixin stagger-animation(
348
- $count: 10,
349
- $base-delay: 0.08s,
350
- $selector: "&",
351
- $property: animation-delay
352
- ) {
353
- @for $i from 1 through $count {
354
- #{$selector}:nth-child(#{$i}) {
355
- #{$property}: #{$i * $base-delay};
356
- }
357
- }
358
- }
359
-
360
- /// Apply staggered transition delays to child elements
361
- /// @param {Number} $count - Number of children to stagger
362
- /// @param {Time} $base-delay - Base delay between items (default: 0.05s)
363
- /// @param {String} $selector - Child selector (default: '&')
364
- @mixin stagger-transition($count: 10, $base-delay: 0.05s, $selector: "&") {
365
- @include stagger-animation($count, $base-delay, $selector, transition-delay);
366
- }
367
-
368
- /// Apply staggered entrance animation with fade-in-up
369
- /// @param {Number} $count - Number of children to stagger
370
- /// @param {Time} $base-delay - Base delay between items (default: 0.08s)
371
- /// @param {Time} $duration - Animation duration (default: 0.6s)
372
- @mixin stagger-entrance($count: 10, $base-delay: 0.08s, $duration: 0.6s) {
373
- animation: fadeInUp $duration ease-out backwards;
374
-
375
- @for $i from 1 through $count {
376
- &:nth-child(#{$i}) {
377
- animation-delay: #{$i * $base-delay};
378
- }
379
- }
380
-
381
- @media (prefers-reduced-motion: reduce) {
382
- animation: none;
383
- }
384
- }
385
-
386
- /* ===================================================================
387
- BRAND GRADIENT MIXINS
388
- Consistent gradient patterns for brand styling
389
- =================================================================== */
390
-
391
- /// Brand radial gradient background
392
- /// @param {Number} $opacity - Opacity of the gradient (default: 0.1)
393
- /// @param {String} $position - Gradient position (default: center)
394
- @mixin brand-gradient-bg($opacity: 0.1, $position: center) {
395
- background: radial-gradient(
396
- circle at $position,
397
- color-mix(in srgb, var(--color-brand, #ff7900) #{$opacity * 100}%, transparent) 0%,
398
- transparent 70%
399
- );
400
- }
401
-
402
- /// Brand linear gradient background
403
- /// @param {Angle} $angle - Gradient angle (default: 135deg)
404
- /// @param {Number} $start-opacity - Start opacity (default: 0.15)
405
- /// @param {Number} $end-opacity - End opacity (default: 0.05)
406
- @mixin brand-gradient-linear($angle: 135deg, $start-opacity: 0.15, $end-opacity: 0.05) {
407
- background: linear-gradient(
408
- $angle,
409
- color-mix(in srgb, var(--color-brand, #ff7900) #{$start-opacity * 100}%, transparent) 0%,
410
- color-mix(in srgb, var(--color-brand, #ff7900) #{$end-opacity * 100}%, transparent) 100%
411
- );
412
- }
413
-
414
- /// Brand gradient text effect
415
- /// Creates a shimmering gradient text effect
416
- @mixin brand-gradient-text() {
417
- background: linear-gradient(
418
- 90deg,
419
- var(--foreground, #ffffff) 0%,
420
- var(--color-brand, #ff7900) 50%,
421
- var(--foreground, #ffffff) 100%
422
- );
423
- background-size: 200% 100%;
424
- background-clip: text;
425
- -webkit-background-clip: text;
426
- -webkit-text-fill-color: transparent;
427
-
428
- @media (prefers-reduced-motion: reduce) {
429
- background: none;
430
- -webkit-text-fill-color: currentColor;
431
- }
432
- }
433
-
434
- /// Brand gradient text with animation
435
- /// @param {Time} $duration - Animation duration (default: 2s)
436
- @mixin brand-gradient-text-animated($duration: 2s) {
437
- @include brand-gradient-text();
438
- animation: textShimmer $duration ease-in-out infinite;
439
-
440
- @media (prefers-reduced-motion: reduce) {
441
- animation: none;
442
- background: none;
443
- -webkit-text-fill-color: currentColor;
444
- }
445
- }
446
-
447
- /// Glow effect mixin
448
- /// @param {Color} $color - Glow color (default: brand color)
449
- /// @param {Length} $blur - Blur radius (default: 20px)
450
- /// @param {Number} $opacity - Opacity (default: 0.4)
451
- @mixin glow-effect($color: var(--color-brand, #ff7900), $blur: 20px, $opacity: 0.4) {
452
- box-shadow: 0 0 $blur color-mix(in srgb, $color #{$opacity * 100}%, transparent);
453
- }
454
-
455
- /// Glow effect on hover
456
- /// @param {Color} $color - Glow color (default: brand color)
457
- /// @param {Length} $blur - Blur radius (default: 25px)
458
- /// @param {Number} $opacity - Opacity (default: 0.5)
459
- @mixin glow-effect-hover($color: var(--color-brand, #ff7900), $blur: 25px, $opacity: 0.5) {
460
- transition: box-shadow var(--duration-normal, 200ms) var(--ease-out-smooth, ease-out);
461
-
462
- &:hover {
463
- @include glow-effect($color, $blur, $opacity);
464
- }
465
-
466
- @media (prefers-reduced-motion: reduce) {
467
- transition: none;
468
- }
469
- }
470
-
471
- /* ===================================================================
472
- BACKDROP BLUR MIXINS
473
- Glass-morphism effect mixins
474
- =================================================================== */
475
-
476
- /// Apply backdrop blur with vendor prefix
477
- /// @param {Length} $blur - Blur amount (default: 12px)
478
- @mixin backdrop-blur($blur: 12px) {
479
- backdrop-filter: blur($blur);
480
- -webkit-backdrop-filter: blur($blur);
481
- }
482
-
483
- /// Glass panel effect
484
- /// @param {Length} $blur - Blur amount (default: 12px)
485
- /// @param {Number} $opacity - Background opacity (default: 0.8)
486
- /// @param {Color} $bg-color - Background color (default: var(--background))
487
- @mixin glass-effect($blur: 12px, $opacity: 0.8, $bg-color: var(--background, #0c0c0c)) {
488
- background: color-mix(in srgb, $bg-color #{$opacity * 100}%, transparent);
489
- @include backdrop-blur($blur);
490
- border: 1px solid color-mix(in srgb, var(--border, rgba(255, 255, 255, 0.1)) 50%, transparent);
491
- }
@@ -1,76 +0,0 @@
1
- /* -------------------------------------------------------------------------- */
2
- /* Surface Layer Mixins */
3
- /* -------------------------------------------------------------------------- */
4
- /*
5
- * Centralized mixins for the three visual layers in the card stack:
6
- * 1. Hero AI card shell (.ai-card-surface)
7
- * 2. Section containers (.masonry-item)
8
- * 3. Section items (cards rendered inside sections)
9
- *
10
- * Each mixin relies exclusively on CSS custom properties declared in
11
- * core/_variables.scss so that switching providers or day/night themes only
12
- * requires token tweaks rather than touching component styles.
13
- */
14
-
15
- /* AI card (hero shell) ----------------------------------------------------- */
16
- @mixin surface-ai-card-base {
17
- border: var(--ai-card-border, 1px solid rgba(255, 121, 0, 0.12)) !important;
18
- border-width: 1px !important;
19
- border-style: solid !important;
20
- border-radius: var(--ai-card-border-radius) !important;
21
- background: var(--section-item-background) !important;
22
- box-shadow: var(--ai-card-box-shadow, none) !important;
23
- transition: var(--ai-card-transition, none) !important;
24
- animation: var(--ai-card-entrance-animation, none);
25
- will-change: opacity, transform;
26
- }
27
-
28
- @mixin surface-ai-card-hover {
29
- border-color: var(--ai-card-border-hover, rgba(255, 121, 0, 0.2)) !important;
30
- background: var(--section-item-background-hover, var(--section-item-background)) !important;
31
- box-shadow: var(--ai-card-box-shadow-hover, var(--ai-card-box-shadow, none)) !important;
32
- }
33
-
34
- /* Section container (masonry item) ---------------------------------------- */
35
- @mixin surface-section-base {
36
- border: var(--section-border) !important;
37
- border-radius: var(--section-border-radius) !important;
38
- background: var(--section-surface, var(--section-background, var(--card-section-bg))) !important;
39
- box-shadow: var(--section-box-shadow) !important;
40
- transition: var(--section-transition, none) !important;
41
- animation: var(--section-entrance-animation, none);
42
- will-change: opacity, transform;
43
- }
44
-
45
- @mixin surface-section-hover {
46
- /* Use hover background variable - flat color with theme border */
47
- background: var(
48
- --section-surface-hover,
49
- var(--section-background-hover, var(--section-surface))
50
- ) !important;
51
- border-color: var(--section-border-hover, var(--section-border)) !important;
52
- box-shadow: var(--section-box-shadow-hover, var(--section-box-shadow)) !important;
53
- }
54
-
55
- /* Section items (cards rendered inside sections) --------------------------- */
56
- @mixin surface-section-item-base {
57
- padding: var(--section-item-padding) !important;
58
- border: var(--section-item-border) !important;
59
- border-width: 1px !important;
60
- border-style: solid !important;
61
- border-radius: var(--section-item-border-radius) !important;
62
- background: var(--section-item-background) !important;
63
- box-shadow: var(--section-item-box-shadow) !important;
64
- gap: var(--card-gap) !important;
65
- min-height: var(--card-min-height) !important;
66
- transition: var(--section-item-transition) !important;
67
- animation: var(--section-item-entrance-animation, none);
68
- will-change: opacity, transform;
69
- }
70
-
71
- @mixin surface-section-item-hover {
72
- /* Use hover background variable - flat color with theme border */
73
- background: var(--section-item-background-hover, var(--section-item-background)) !important;
74
- border-color: var(--section-item-border-hover, var(--section-item-border)) !important;
75
- box-shadow: var(--section-item-box-shadow-hover) !important;
76
- }