osi-cards-lib 1.2.2 → 1.4.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.
@@ -0,0 +1,114 @@
1
+ /* ===================================================================
2
+ SCOPED GLOBAL STYLES - Encapsulated for OSI Cards Container
3
+ =================================================================== */
4
+ /* These styles only apply within .osi-cards-container to prevent CSS leakage */
5
+
6
+ .osi-cards-container,
7
+ .osi-cards-container * {
8
+ box-sizing: border-box;
9
+ }
10
+
11
+ .osi-cards-container {
12
+ /* Scoped reset - only affects elements within container */
13
+ * {
14
+ margin: 0;
15
+ padding: 0;
16
+ outline-color: var(--ring, var(--osi-ring, #FF7900));
17
+ }
18
+
19
+ /* Scoped HTML element styles */
20
+ html {
21
+ font-size: var(--font-size, var(--osi-font-size, 16px));
22
+ }
23
+
24
+ /* Scoped body styles - only if body has the container class */
25
+ &.body,
26
+ body & {
27
+ font-family: Helvetica, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
28
+ background-color: var(--background, var(--osi-background, transparent));
29
+ color: var(--foreground, var(--osi-foreground, inherit));
30
+ line-height: 1.5;
31
+
32
+ /* Improved text rendering for sharpness */
33
+ -webkit-font-smoothing: antialiased;
34
+ -moz-osx-font-smoothing: grayscale;
35
+ text-rendering: optimizeLegibility;
36
+ font-feature-settings: 'kern' 1;
37
+ }
38
+
39
+ /* Scoped button styles */
40
+ button {
41
+ cursor: pointer;
42
+ font-family: inherit;
43
+
44
+ // Enhanced focus indicators for accessibility
45
+ &:focus-visible {
46
+ outline: 2px solid var(--color-brand, var(--osi-color-brand, #FF7900));
47
+ outline-offset: 2px;
48
+ border-radius: 4px;
49
+ }
50
+
51
+ &:focus:not(:focus-visible) {
52
+ outline: none;
53
+ }
54
+ }
55
+
56
+ // Scoped focus styles for all interactive elements
57
+ a,
58
+ button,
59
+ input,
60
+ select,
61
+ textarea,
62
+ [tabindex]:not([tabindex="-1"]) {
63
+ &:focus-visible {
64
+ outline: 2px solid var(--color-brand, var(--osi-color-brand, #FF7900));
65
+ outline-offset: 2px;
66
+ border-radius: 2px;
67
+ }
68
+
69
+ &:focus:not(:focus-visible) {
70
+ outline: none;
71
+ }
72
+ }
73
+
74
+ /* Scoped heading styles */
75
+ h1,
76
+ h2,
77
+ h3,
78
+ h4,
79
+ h5,
80
+ h6 {
81
+ margin: 0;
82
+ line-height: 1.2;
83
+ font-family: Helvetica, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
84
+ }
85
+
86
+ h1 {
87
+ font-size: var(--text-2xl, var(--osi-text-2xl, 1.375rem));
88
+ font-weight: var(--font-weight-medium, var(--osi-font-weight-medium, 500));
89
+ }
90
+
91
+ h2 {
92
+ font-size: var(--text-xl, var(--osi-text-xl, 1.125rem));
93
+ font-weight: var(--font-weight-medium, var(--osi-font-weight-medium, 500));
94
+ }
95
+
96
+ h3 {
97
+ font-size: var(--text-lg, var(--osi-text-lg, 1rem));
98
+ font-weight: var(--font-weight-medium, var(--osi-font-weight-medium, 500));
99
+ }
100
+
101
+ h4 {
102
+ font-size: var(--text-base, var(--osi-text-base, 0.875rem));
103
+ font-weight: var(--font-weight-medium, var(--osi-font-weight-medium, 500));
104
+ }
105
+
106
+ /* Scoped paragraph styles */
107
+ p {
108
+ font-size: var(--text-base, var(--osi-text-base, 0.875rem));
109
+ font-weight: var(--font-weight-normal, var(--osi-font-weight-normal, 400));
110
+ line-height: 1.5;
111
+ margin: 0;
112
+ }
113
+ }
114
+
@@ -0,0 +1,429 @@
1
+ /* ===================================================================
2
+ SCOPED CSS VARIABLES - Encapsulated for OSI Cards Container
3
+ =================================================================== */
4
+ /* Variables are scoped to .osi-cards-container to prevent CSS leakage */
5
+ /* Essential variables are also available on :root with --osi- prefix for fallback */
6
+
7
+ /* Import theme colors - these will be scoped */
8
+ @import 'variables/colors-scoped';
9
+
10
+ /* Scoped variables within container */
11
+ .osi-cards-container {
12
+ /* ===== BASE DESIGN TOKENS ===== */
13
+ --font-size-base: 14px;
14
+ --radius-base: 0.625rem;
15
+ --spacing-base: 0.25rem;
16
+
17
+ /* Base text scale - for reference and general use */
18
+ --text-xs: 0.75rem;
19
+ --text-sm: 0.875rem;
20
+ --text-base: 1rem;
21
+ --text-lg: 1.125rem;
22
+ --text-xl: 1.25rem;
23
+ --text-2xl: 1.5rem;
24
+ --text-3xl: 1.875rem;
25
+ --text-4xl: 2.25rem;
26
+ --text-5xl: 3rem;
27
+ --text-7xl: 4.5rem;
28
+
29
+ /* Base radius scale */
30
+ --radius-xs: 0.25rem;
31
+ --radius-sm: 0.375rem;
32
+ --radius-md: 0.5rem;
33
+ --radius-lg: 0.75rem;
34
+ --radius-xl: 1rem;
35
+ --radius-2xl: 1.5rem;
36
+ --radius-full: 9999px;
37
+
38
+ /* ===== UNIFIED CARD SYSTEM ===== */
39
+ --card-main-padding: 16px;
40
+ --card-padding-vertical: 12px;
41
+ --card-padding-horizontal: 16px;
42
+ --card-padding: 16px;
43
+ --card-padding-large: 20px;
44
+ --section-padding: 16px;
45
+ --card-min-height: auto;
46
+ --card-gap: clamp(6px, 0.6vw, 10px);
47
+ --card-gap-large: clamp(10px, 0.8vw, 14px);
48
+
49
+ /* Nested Element Spacing */
50
+ --card-nested-gap: clamp(3px, 0.4vw, 6px);
51
+ --section-header-gap: clamp(3px, 0.4vw, 6px);
52
+ --section-header-padding-bottom: clamp(3px, 0.4vw, 6px);
53
+
54
+ /* Card Backgrounds */
55
+ --card-background: var(--ai-card-background, rgba(255, 121, 0, 0.025));
56
+ --card-background-hover: var(--ai-card-background-hover, rgba(255, 121, 0, 0.055));
57
+
58
+ /* ===== 5 ELEMENT TYPE SYSTEM ===== */
59
+ /* 1. HERO CARDS */
60
+ --hero-card-border: 1px solid rgba(146, 153, 158, 0.15);
61
+ --hero-card-border-hover: rgba(255, 121, 0, 0.4);
62
+ --hero-card-background: var(--card);
63
+ --hero-card-background-hover: var(--card);
64
+ --hero-card-border-radius: 10px;
65
+ --hero-card-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
66
+ --hero-card-box-shadow-hover: 0 6px 16px rgba(0, 0, 0, 0.12);
67
+ --hero-card-hover-transform: translateY(-2px);
68
+
69
+ /* 2. BUTTONS & SELECTORS */
70
+ --button-border: 1px solid transparent;
71
+ --button-border-hover: 1px solid rgba(255, 121, 0, 0.4);
72
+ --button-background: var(--primary);
73
+ --button-background-hover: color-mix(in srgb, var(--primary) 85%, transparent);
74
+ --button-border-radius: 8px;
75
+ --button-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
76
+ --button-box-shadow-hover: 0 4px 8px rgba(0, 0, 0, 0.12);
77
+ --button-hover-transform: translateY(-1px);
78
+
79
+ /* 3. CARDS (.ai-card-surface) */
80
+ --ai-card-border: var(--theme-ai-card-border, none);
81
+ --ai-card-border-hover: var(--theme-ai-card-border-hover, var(--ai-card-border));
82
+ --ai-card-background: var(--theme-ai-card-background, var(--card-surface, var(--card-section-bg)));
83
+ --ai-card-background-hover: var(--theme-ai-card-background-hover, var(--card-surface-hover, var(--card-section-bg)));
84
+ --ai-card-border-radius: 12px;
85
+ --ai-card-box-shadow: var(--theme-ai-card-box-shadow, 0 2px 8px rgba(0, 0, 0, 0.08));
86
+ --ai-card-box-shadow-hover: var(--theme-ai-card-box-shadow-hover, 0 4px 16px rgba(0, 0, 0, 0.12));
87
+ --ai-card-hover-transform: none;
88
+ --ai-card-transition-default: border 0.32s cubic-bezier(0.4, 0, 0.2, 1), background 0.32s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.32s cubic-bezier(0.4, 0, 0.2, 1);
89
+ --ai-card-transition: var(--theme-ai-card-transition, var(--ai-card-transition-default));
90
+
91
+ /* 4. SECTIONS (.masonry-item) */
92
+ --section-border: var(--theme-section-border, 1px solid rgba(255, 255, 255, 0.04));
93
+ --section-border-hover: var(--theme-section-border-hover, 1px solid rgba(255, 121, 0, 0.15));
94
+ --section-border-radius: var(--card-border-radius);
95
+ --section-box-shadow-default: 0 1px 3px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(255, 255, 255, 0.02);
96
+ --section-box-shadow-hover-default: 0 4px 12px rgba(0, 0, 0, 0.18), 0 0 0 1px rgba(255, 121, 0, 0.08);
97
+ --section-box-shadow: var(--theme-section-box-shadow, var(--section-box-shadow-default));
98
+ --section-box-shadow-hover: var(--theme-section-box-shadow-hover, var(--section-box-shadow-hover-default));
99
+ --section-hover-transform: none;
100
+ --section-transition: var(--theme-section-transition, none);
101
+
102
+ /* 5. SECTION ITEMS */
103
+ --section-item-border: var(--theme-section-item-border, 1px solid rgba(255, 255, 255, 0.03));
104
+ --section-item-border-hover: var(--theme-section-item-border-hover, 1px solid rgba(255, 121, 0, 0.12));
105
+ --section-item-background: var(--theme-section-item-background, var(--card-section-bg));
106
+ --section-item-background-hover: var(--theme-section-item-background-hover, color-mix(in srgb, var(--theme-section-item-background, var(--card-section-bg)) 97%, rgba(255, 121, 0, 0.03)));
107
+ --section-item-border-radius: var(--section-card-border-radius);
108
+ --section-item-box-shadow: var(--theme-section-item-box-shadow, 0 1px 2px rgba(0, 0, 0, 0.08));
109
+ --section-item-box-shadow-hover-default: 0 3px 10px rgba(0, 0, 0, 0.14), 0 0 0 1px rgba(255, 121, 0, 0.1);
110
+ --section-item-box-shadow-hover: var(--theme-section-item-box-shadow-hover, var(--section-item-box-shadow-hover-default));
111
+ --section-item-hover-transform: var(--theme-section-item-hover-transform, none);
112
+ --section-item-transition-default: background 300ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1);
113
+ --section-item-transition: var(--theme-section-item-transition, var(--section-item-transition-default));
114
+
115
+ /* Legacy card variables */
116
+ --card-border: var(--theme-card-border, 1px solid rgba(146, 153, 158, 0.15));
117
+ --card-border-hover: var(--theme-card-border-hover, rgba(255, 121, 0, 0.4));
118
+ --card-background: var(--theme-card-background, var(--ai-card-background));
119
+ --card-background-hover: var(--theme-card-background-hover, var(--ai-card-background-hover));
120
+ --card-box-shadow: var(--theme-card-box-shadow, 0 1px 3px rgba(0, 0, 0, 0.08));
121
+ --card-box-shadow-hover: var(--theme-card-box-shadow-hover, 0 4px 12px rgba(0, 0, 0, 0.12));
122
+
123
+ /* Border radius */
124
+ --card-border-radius: 12px;
125
+ --card-border-radius-large: 16px;
126
+ --section-card-gap: 12px;
127
+ --section-card-border-radius: 10px;
128
+ --section-grid-min-width: 200px;
129
+
130
+ /* Card Hover State Aliases */
131
+ --card-hover-border: var(--theme-card-hover-border, var(--card-border-hover));
132
+ --card-hover-background: var(--theme-card-hover-background, var(--card-background-hover));
133
+ --card-hover-shadow: var(--theme-card-hover-shadow, var(--card-box-shadow-hover));
134
+
135
+ /* Legacy transform effects */
136
+ --card-hover-transform: var(--theme-card-hover-transform, none);
137
+ --card-hover-transform-scale: var(--theme-card-hover-transform-scale, none);
138
+ --card-hover-transform-slide: var(--theme-card-hover-transform-slide, none);
139
+ --card-box-shadow-hover-lift: var(--theme-card-box-shadow-hover-lift, var(--card-box-shadow-hover));
140
+
141
+ /* ===== UNIFIED TYPOGRAPHY SYSTEM ===== */
142
+ --section-title-font-size: clamp(1.3rem, 1.15rem + 0.4vw, 1.6rem);
143
+ --section-title-font-weight: 700;
144
+ --section-title-letter-spacing: -0.02em;
145
+ --section-title-line-height: 1.3;
146
+ --section-title-text-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
147
+ --font-size-section-header: var(--section-title-font-size);
148
+
149
+ --card-title-font-size: clamp(1.05rem, 0.95rem + 0.3vw, 1.2rem);
150
+ --card-title-font-weight: 700;
151
+ --card-title-letter-spacing: -0.01em;
152
+ --card-title-line-height: 1.4;
153
+ --card-title-text-shadow: 0 1px 1px rgba(0, 0, 0, 0.06);
154
+
155
+ --card-subtitle-font-size: clamp(0.75rem, 0.67rem + 0.16vw, 0.9rem);
156
+ --card-subtitle-font-weight: 600;
157
+ --card-subtitle-letter-spacing: 0.015em;
158
+ --card-subtitle-line-height: 1.3;
159
+
160
+ --card-label-font-size: clamp(0.58rem, 0.52rem + 0.16vw, 0.72rem);
161
+ --card-label-font-weight: 800;
162
+ --card-label-letter-spacing: 0.065em;
163
+ --card-label-line-height: 1.25;
164
+ --card-label-text-transform: uppercase;
165
+ --card-label-text-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
166
+
167
+ --card-value-font-size: clamp(0.93rem, 0.85rem + 0.3vw, 1.08rem);
168
+ --card-value-font-size-large: clamp(1.35rem, 1.2rem + 0.5vw, 1.65rem);
169
+ --card-value-font-size-xl: clamp(1.8rem, 1.6rem + 0.6vw, 2.1rem);
170
+ --card-value-font-weight: 700;
171
+ --card-value-letter-spacing: -0.015em;
172
+ --card-value-line-height: 1.35;
173
+ --card-value-text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
174
+
175
+ --card-meta-font-size: clamp(0.68rem, 0.6rem + 0.16vw, 0.84rem);
176
+ --card-meta-font-weight: 500;
177
+ --card-meta-line-height: 1.3;
178
+
179
+ --card-text-small-font-size: clamp(0.48rem, 0.42rem + 0.13vw, 0.58rem);
180
+
181
+ /* Card Colors */
182
+ --card-text-primary: var(--foreground);
183
+ --card-text-secondary: var(--muted-foreground);
184
+ --card-text-muted: var(--muted-foreground);
185
+ --card-text-hover: var(--primary);
186
+ --card-text-label: var(--muted-foreground);
187
+ --card-meta-color: var(--muted-foreground);
188
+
189
+ /* Card Transitions */
190
+ --card-transition: all 0.28s cubic-bezier(0.4, 0, 0.2, 1);
191
+ --card-transition-fast: all 0.22s ease;
192
+
193
+ /* Entrance animations */
194
+ --ai-card-entrance-animation: fadeInUpSoft var(--duration-moderate) var(--ease-out-smooth) 10ms 1 normal both;
195
+ --section-entrance-animation: fadeInSoft var(--duration-moderate) var(--ease-out-smooth) 20ms 1 normal both;
196
+ --section-item-entrance-animation: fadeInScaleSoft var(--duration-normal) var(--ease-out-smooth) 30ms 1 normal both;
197
+
198
+ /* Legacy font aliases */
199
+ --font-section-label: var(--card-label-font-size);
200
+ --font-section-value: var(--card-value-font-size);
201
+ --font-section-value-lg: var(--card-title-font-size);
202
+ --font-section-value-xl: var(--card-value-font-size-large);
203
+ --font-section-value-2xl: var(--card-value-font-size-large);
204
+ --font-section-description: var(--card-subtitle-font-size);
205
+ --font-section-role: var(--card-subtitle-font-size);
206
+ --font-section-tag: var(--card-label-font-size);
207
+ --font-section-tag-sm: var(--card-label-font-size);
208
+ --font-section-tag-lg: var(--card-label-font-size);
209
+ --font-section-meta: var(--card-meta-font-size);
210
+ --font-section-name: var(--card-title-font-size);
211
+
212
+ /* Chart-specific aliases */
213
+ --font-chart-label: var(--card-label-font-size);
214
+ --font-chart-value: var(--card-value-font-size);
215
+ --font-chart-meta: var(--card-meta-font-size);
216
+ --font-chart-value-mobile: var(--card-value-font-size);
217
+
218
+ /* Contact-specific aliases */
219
+ --font-contact-name: var(--card-title-font-size);
220
+ --font-contact-role: var(--card-subtitle-font-size);
221
+ --font-contact-meta: var(--card-meta-font-size);
222
+
223
+ /* List-specific aliases */
224
+ --font-list-title: var(--card-title-font-size);
225
+ --font-list-subtitle: var(--card-subtitle-font-size);
226
+ --font-list-meta: var(--card-meta-font-size);
227
+
228
+ /* Overview-specific aliases */
229
+ --font-overview-label: var(--card-label-font-size);
230
+ --font-overview-value: var(--card-value-font-size);
231
+
232
+ /* Mobile label aliases */
233
+ --font-section-label-mobile: var(--card-label-font-size);
234
+ --font-section-description-mobile: var(--card-subtitle-font-size);
235
+
236
+ /* ===== UNIFIED SPACING SYSTEM ===== */
237
+ --spacing-xs: clamp(2px, 0.4vw, 6px);
238
+ --spacing-sm: clamp(4px, 0.6vw, 8px);
239
+ --spacing-md: clamp(6px, 0.8vw, 12px);
240
+ --spacing-lg: clamp(8px, 1vw, 14px);
241
+ --spacing-xl: clamp(10px, 1.2vw, 18px);
242
+ --spacing-2xl: clamp(12px, 1.4vw, 20px);
243
+ --spacing-3xl: clamp(14px, 1.6vw, 22px);
244
+ --spacing-4xl: clamp(16px, 1.8vw, 24px);
245
+ --spacing-5xl: clamp(18px, 2vw, 28px);
246
+ --spacing-6xl: clamp(20px, 2.2vw, 32px);
247
+ --spacing-7xl: clamp(22px, 2.4vw, 36px);
248
+ --spacing-8xl: clamp(24px, 2.6vw, 40px);
249
+ --spacing-9xl: clamp(26px, 2.8vw, 44px);
250
+ --spacing-10xl: clamp(28px, 3vw, 48px);
251
+
252
+ /* Grid Gaps */
253
+ --grid-gap-xs: 6px;
254
+ --grid-gap-sm: 8px;
255
+ --grid-gap-md: 12px;
256
+ --grid-gap-lg: 16px;
257
+ --grid-gap-xl: 20px;
258
+ --grid-gap-2xl: 24px;
259
+ --grid-gap-3xl: 32px;
260
+
261
+ --section-grid-gap: 8px;
262
+ --section-grid-gap-mobile: 9px;
263
+ --section-stack-gap: 12px;
264
+ --section-stack-gap-mobile: 9px;
265
+
266
+ --grid-gap-xs-mobile: 4px;
267
+ --grid-gap-sm-mobile: 4px;
268
+ --grid-gap-md-mobile: 4px;
269
+
270
+ /* Section Item Padding */
271
+ --section-item-padding: 8px;
272
+ --section-item-padding-mobile: 6px;
273
+ --section-item-gap: 6px;
274
+ --section-item-gap-mobile: 4px;
275
+
276
+ /* Metric Card Padding */
277
+ --metric-item-padding: 10px 12px;
278
+ --metric-item-gap: 6px;
279
+ --metric-item-gap-mobile: 4px;
280
+
281
+ /* List/Contact Item Padding */
282
+ --list-item-padding: 10px 12px;
283
+ --list-item-gap: 6px;
284
+ --list-item-gap-mobile: 4px;
285
+
286
+ /* Internal Card Element Gaps */
287
+ --card-element-gap-xs: 2px;
288
+ --card-element-gap-sm: 3px;
289
+ --card-element-gap-md: 4px;
290
+ --card-element-gap-lg: 6px;
291
+ --card-element-gap-xl: 8px;
292
+ --card-element-gap-2xl: 10px;
293
+
294
+ /* Tag/Badge Padding */
295
+ --tag-padding-x: 6px;
296
+ --tag-padding-y: 3px;
297
+ --tag-padding-x-sm: 4px;
298
+ --tag-padding-y-sm: 2px;
299
+ --tag-padding-x-lg: 7px;
300
+ --tag-padding-y-lg: 3px;
301
+
302
+ /* Border Accents */
303
+ --accent-border-width: 3px;
304
+ --accent-border-width-sm: 2px;
305
+
306
+ /* Icon Sizes */
307
+ --icon-size-xs: 10px;
308
+ --icon-size-sm: 13px;
309
+ --icon-size-md: 16px;
310
+ --icon-size-lg: 22px;
311
+ --icon-size-xl: 36px;
312
+ --icon-size-section: 18px;
313
+
314
+ /* Avatar Sizes */
315
+ --avatar-size-sm: 32px;
316
+ --avatar-size-md: 36px;
317
+
318
+ /* Progress Bar */
319
+ --progress-height: 2px;
320
+ --progress-margin: 4px 0;
321
+
322
+ /* ===== ANIMATION SYSTEM ===== */
323
+ --duration-instant: 40ms;
324
+ --duration-fast: 80ms;
325
+ --duration-normal: 160ms;
326
+ --duration-moderate: 220ms;
327
+ --duration-slow: 300ms;
328
+ --duration-slower: 380ms;
329
+ --duration-slowest: 460ms;
330
+
331
+ /* Motion Distances & Scale */
332
+ --motion-distance-xl: 12px;
333
+ --motion-distance-lg: 10px;
334
+ --motion-distance-md: 6px;
335
+ --motion-distance-sm: 4px;
336
+ --motion-distance-xs: 2px;
337
+ --motion-scale-soft-start: 0.992;
338
+ --motion-scale-soft-end: 1;
339
+ --motion-scale-pop: 1.015;
340
+ --motion-scale-pulse-min: 0.985;
341
+ --motion-scale-pulse-max: 1.015;
342
+
343
+ /* Animation Easing Functions */
344
+ --ease-out-smooth: cubic-bezier(0.23, 1, 0.32, 1);
345
+ --ease-in-out-smooth: cubic-bezier(0.4, 0, 0.2, 1);
346
+ --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
347
+ --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
348
+ --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
349
+ --ease-in-out-quad: cubic-bezier(0.455, 0.03, 0.515, 0.955);
350
+
351
+ /* Tilt & Interaction Timings */
352
+ --tilt-duration: 80ms;
353
+ --tilt-reset-duration: 300ms;
354
+ --shadow-duration: 100ms;
355
+ --glow-duration: 120ms;
356
+ --reflection-duration: 120ms;
357
+
358
+ /* Card Interaction Timings */
359
+ --card-hover-duration: 200ms;
360
+ --card-hover-delay: 0ms;
361
+
362
+ /* Animation Delays */
363
+ --stagger-delay-base: 25ms;
364
+ --stagger-delay-fast: 15ms;
365
+ --stagger-delay-slow: 45ms;
366
+
367
+ /* Performance Hints */
368
+ --animation-fill-mode: both;
369
+ --animation-play-state: running;
370
+
371
+ /* Legacy variables */
372
+ --master-color: var(--color-brand);
373
+ --master-color-dark: #CC5F00;
374
+ --master-color-light: #FF9933;
375
+ --master-color-pale: #FFE6CC;
376
+ --bg-color: var(--background);
377
+ --card-bg: var(--card);
378
+ --section-bg: var(--muted);
379
+ --border-color: var(--border);
380
+ --text-color: var(--foreground);
381
+ --text-muted: var(--muted-foreground);
382
+ --primary-color: var(--primary);
383
+ --primary-contrast: var(--primary-foreground);
384
+ --secondary-color: var(--secondary);
385
+ --secondary-contrast: var(--secondary-foreground);
386
+ --hover-bg: rgba(255, 121, 0, 0.1);
387
+ --placeholder-bg: rgba(255, 255, 255, 0.05);
388
+ --font-weight-medium: 500;
389
+ --font-weight-normal: 400;
390
+ }
391
+
392
+ /* Reduced motion support */
393
+ @media (prefers-reduced-motion: reduce) {
394
+ .osi-cards-container {
395
+ --duration-instant: 1ms;
396
+ --duration-fast: 1ms;
397
+ --duration-normal: 1ms;
398
+ --duration-moderate: 1ms;
399
+ --duration-slow: 1ms;
400
+ --duration-slower: 1ms;
401
+ --duration-slowest: 1ms;
402
+
403
+ --tilt-duration: 1ms;
404
+ --tilt-reset-duration: 1ms;
405
+ --shadow-duration: 1ms;
406
+ --glow-duration: 1ms;
407
+ --reflection-duration: 1ms;
408
+
409
+ --card-hover-duration: 1ms;
410
+
411
+ --stagger-delay-base: 0ms;
412
+ --stagger-delay-fast: 0ms;
413
+ --stagger-delay-slow: 0ms;
414
+
415
+ --ai-card-entrance-animation: none;
416
+ --section-entrance-animation: none;
417
+ --section-item-entrance-animation: none;
418
+ }
419
+
420
+ .osi-cards-container *,
421
+ .osi-cards-container *::before,
422
+ .osi-cards-container *::after {
423
+ animation-duration: 1ms !important;
424
+ animation-iteration-count: 1 !important;
425
+ transition-duration: 1ms !important;
426
+ scroll-behavior: auto !important;
427
+ }
428
+ }
429
+