snow-flow 3.4.35 → 3.4.39

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 (50) hide show
  1. package/README.md +412 -287
  2. package/dist/cli/deploy-artifact.js +2 -2
  3. package/dist/mcp/servicenow-deployment-mcp.js +1 -1
  4. package/dist/mcp/servicenow-mcp-server.js +2 -2
  5. package/dist/mcp/shared/mcp-logger.js +6 -12
  6. package/dist/queen/agent-factory.js +134 -52
  7. package/dist/queen/servicenow-queen.d.ts +127 -2
  8. package/dist/queen/servicenow-queen.js +978 -618
  9. package/dist/services/widget-deployment-service.d.ts +1 -1
  10. package/dist/services/widget-deployment-service.js +1 -1
  11. package/dist/templates/claude-md-template.d.ts +1 -1
  12. package/dist/templates/claude-md-template.js +2 -2
  13. package/dist/types/servicenow.types.d.ts +1 -1
  14. package/dist/utils/dependency-detector.d.ts +1 -1
  15. package/dist/utils/dependency-detector.js +1 -1
  16. package/dist/utils/servicenow-client.d.ts +1 -1
  17. package/dist/utils/servicenow-client.js +4 -8
  18. package/package.json +1 -1
  19. package/website/components/README.md +419 -0
  20. package/website/components/code-display/CodeDisplay.css +583 -0
  21. package/website/components/code-display/CodeDisplay.html +200 -0
  22. package/website/components/code-display/CodeDisplay.js +375 -0
  23. package/website/components/code-display/CodeDisplay.jsx +268 -0
  24. package/website/components/demo/ComponentLibraryDemo.html +845 -0
  25. package/website/components/feature-cards/FeatureCards.css +573 -0
  26. package/website/components/feature-cards/FeatureCards.html +247 -0
  27. package/website/components/feature-cards/FeatureCards.js +382 -0
  28. package/website/components/feature-cards/FeatureCards.jsx +235 -0
  29. package/website/components/hero/Hero.css +558 -0
  30. package/website/components/hero/Hero.html +98 -0
  31. package/website/components/hero/Hero.js +415 -0
  32. package/website/components/hero/Hero.jsx +214 -0
  33. package/website/components/interactive/InteractiveElements.css +776 -0
  34. package/website/components/interactive/InteractiveElements.html +283 -0
  35. package/website/components/interactive/InteractiveElements.js +489 -0
  36. package/website/components/interactive/InteractiveElements.jsx +444 -0
  37. package/website/components/layout/LayoutComponents.css +697 -0
  38. package/website/components/layout/LayoutComponents.html +374 -0
  39. package/website/components/layout/LayoutComponents.js +447 -0
  40. package/website/components/layout/LayoutComponents.jsx +379 -0
  41. package/website/components/navigation/Navigation.css +383 -0
  42. package/website/components/navigation/Navigation.html +89 -0
  43. package/website/components/navigation/Navigation.js +248 -0
  44. package/website/components/navigation/Navigation.jsx +124 -0
  45. package/website/css/animations.css +854 -0
  46. package/website/css/style.css +916 -948
  47. package/website/index.html +394 -424
  48. package/website/js/animations.js +707 -0
  49. package/website/js/main.js +310 -383
  50. package/website/mcp-servers.html +310 -0
@@ -0,0 +1,697 @@
1
+ /* Layout Components - Black/White Minimalist Design */
2
+
3
+ /* =============================================================================
4
+ CSS Custom Properties
5
+ ============================================================================= */
6
+
7
+ :root {
8
+ /* Spacing Scale */
9
+ --sf-space-xs: 0.25rem; /* 4px */
10
+ --sf-space-sm: 0.5rem; /* 8px */
11
+ --sf-space-md: 1rem; /* 16px */
12
+ --sf-space-lg: 1.5rem; /* 24px */
13
+ --sf-space-xl: 2rem; /* 32px */
14
+ --sf-space-2xl: 3rem; /* 48px */
15
+ --sf-space-3xl: 4rem; /* 64px */
16
+
17
+ /* Border Radius */
18
+ --sf-radius-sm: 4px;
19
+ --sf-radius-md: 8px;
20
+ --sf-radius-lg: 12px;
21
+ --sf-radius-xl: 16px;
22
+
23
+ /* Shadows */
24
+ --sf-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
25
+ --sf-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.1);
26
+ --sf-shadow-md: 0 4px 8px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06);
27
+ --sf-shadow-lg: 0 8px 16px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.06);
28
+ --sf-shadow-xl: 0 16px 32px rgba(0, 0, 0, 0.15), 0 8px 16px rgba(0, 0, 0, 0.1);
29
+
30
+ /* Colors */
31
+ --sf-bg-primary: #ffffff;
32
+ --sf-bg-secondary: #f8f9fa;
33
+ --sf-bg-tertiary: #f0f0f0;
34
+ --sf-bg-dark: #1a1a1a;
35
+
36
+ --sf-border-light: rgba(0, 0, 0, 0.1);
37
+ --sf-border-medium: rgba(0, 0, 0, 0.2);
38
+
39
+ --sf-gradient-primary: linear-gradient(135deg, #000000 0%, #333333 100%);
40
+ --sf-gradient-secondary: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
41
+ --sf-gradient-divider: linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.1) 50%, transparent 100%);
42
+
43
+ /* Transitions */
44
+ --sf-transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
45
+ --sf-transition-normal: 250ms cubic-bezier(0.4, 0, 0.2, 1);
46
+ --sf-transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1);
47
+ }
48
+
49
+ /* =============================================================================
50
+ Container Component
51
+ ============================================================================= */
52
+
53
+ .sf-container {
54
+ width: 100%;
55
+ margin: 0 auto;
56
+ position: relative;
57
+ }
58
+
59
+ .sf-container--fluid {
60
+ max-width: none !important;
61
+ width: 100%;
62
+ }
63
+
64
+ /* Container Padding Variants */
65
+ .sf-container--none {
66
+ padding: 0;
67
+ }
68
+
69
+ .sf-container--small {
70
+ padding: 0 var(--sf-space-sm);
71
+ }
72
+
73
+ .sf-container--medium {
74
+ padding: 0 var(--sf-space-md);
75
+ }
76
+
77
+ .sf-container--large {
78
+ padding: 0 var(--sf-space-lg);
79
+ }
80
+
81
+ .sf-container--xl {
82
+ padding: 0 var(--sf-space-xl);
83
+ }
84
+
85
+ /* Responsive Container Padding */
86
+ @media (min-width: 640px) {
87
+ .sf-container--small { padding: 0 var(--sf-space-md); }
88
+ .sf-container--medium { padding: 0 var(--sf-space-lg); }
89
+ .sf-container--large { padding: 0 var(--sf-space-xl); }
90
+ .sf-container--xl { padding: 0 var(--sf-space-2xl); }
91
+ }
92
+
93
+ @media (min-width: 1024px) {
94
+ .sf-container--small { padding: 0 var(--sf-space-lg); }
95
+ .sf-container--medium { padding: 0 var(--sf-space-xl); }
96
+ .sf-container--large { padding: 0 var(--sf-space-2xl); }
97
+ .sf-container--xl { padding: 0 var(--sf-space-3xl); }
98
+ }
99
+
100
+ /* =============================================================================
101
+ Grid Component
102
+ ============================================================================= */
103
+
104
+ .sf-grid {
105
+ display: grid;
106
+ width: 100%;
107
+ }
108
+
109
+ /* Grid Gap Variants */
110
+ .sf-grid--gap-none { gap: 0; }
111
+ .sf-grid--gap-xs { gap: var(--sf-space-xs); }
112
+ .sf-grid--gap-small { gap: var(--sf-space-sm); }
113
+ .sf-grid--gap-medium { gap: var(--sf-space-md); }
114
+ .sf-grid--gap-large { gap: var(--sf-space-lg); }
115
+ .sf-grid--gap-xl { gap: var(--sf-space-xl); }
116
+
117
+ /* Responsive Grid */
118
+ .sf-grid--responsive {
119
+ grid-template-columns: 1fr;
120
+ }
121
+
122
+ @media (min-width: 640px) {
123
+ .sf-grid--responsive {
124
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
125
+ }
126
+ }
127
+
128
+ /* =============================================================================
129
+ Flex Component
130
+ ============================================================================= */
131
+
132
+ .sf-flex {
133
+ display: flex;
134
+ }
135
+
136
+ /* Flex Direction */
137
+ .sf-flex--row { flex-direction: row; }
138
+ .sf-flex--column { flex-direction: column; }
139
+ .sf-flex--row-reverse { flex-direction: row-reverse; }
140
+ .sf-flex--column-reverse { flex-direction: column-reverse; }
141
+
142
+ /* Flex Align Items */
143
+ .sf-flex--align-start { align-items: flex-start; }
144
+ .sf-flex--align-center { align-items: center; }
145
+ .sf-flex--align-end { align-items: flex-end; }
146
+ .sf-flex--align-stretch { align-items: stretch; }
147
+ .sf-flex--align-baseline { align-items: baseline; }
148
+
149
+ /* Flex Justify Content */
150
+ .sf-flex--justify-start { justify-content: flex-start; }
151
+ .sf-flex--justify-center { justify-content: center; }
152
+ .sf-flex--justify-end { justify-content: flex-end; }
153
+ .sf-flex--justify-between { justify-content: space-between; }
154
+ .sf-flex--justify-around { justify-content: space-around; }
155
+ .sf-flex--justify-evenly { justify-content: space-evenly; }
156
+
157
+ /* Flex Wrap */
158
+ .sf-flex--wrap { flex-wrap: wrap; }
159
+ .sf-flex--nowrap { flex-wrap: nowrap; }
160
+
161
+ /* Flex Gap */
162
+ .sf-flex--gap-none { gap: 0; }
163
+ .sf-flex--gap-xs { gap: var(--sf-space-xs); }
164
+ .sf-flex--gap-small { gap: var(--sf-space-sm); }
165
+ .sf-flex--gap-medium { gap: var(--sf-space-md); }
166
+ .sf-flex--gap-large { gap: var(--sf-space-lg); }
167
+ .sf-flex--gap-xl { gap: var(--sf-space-xl); }
168
+
169
+ /* =============================================================================
170
+ Section Component
171
+ ============================================================================= */
172
+
173
+ .sf-section {
174
+ width: 100%;
175
+ position: relative;
176
+ }
177
+
178
+ /* Section Backgrounds */
179
+ .sf-section--bg-default {
180
+ background: var(--sf-bg-primary);
181
+ }
182
+
183
+ .sf-section--bg-light {
184
+ background: var(--sf-bg-secondary);
185
+ }
186
+
187
+ .sf-section--bg-lighter {
188
+ background: var(--sf-bg-tertiary);
189
+ }
190
+
191
+ .sf-section--bg-dark {
192
+ background: var(--sf-bg-dark);
193
+ color: white;
194
+ }
195
+
196
+ .sf-section--bg-gradient {
197
+ background: var(--sf-gradient-secondary);
198
+ }
199
+
200
+ /* Section Padding */
201
+ .sf-section--padding-none { padding: 0; }
202
+ .sf-section--padding-small { padding: var(--sf-space-md) 0; }
203
+ .sf-section--padding-medium { padding: var(--sf-space-lg) 0; }
204
+ .sf-section--padding-large { padding: var(--sf-space-xl) 0; }
205
+ .sf-section--padding-xl { padding: var(--sf-space-2xl) 0; }
206
+
207
+ @media (min-width: 768px) {
208
+ .sf-section--padding-small { padding: var(--sf-space-lg) 0; }
209
+ .sf-section--padding-medium { padding: var(--sf-space-xl) 0; }
210
+ .sf-section--padding-large { padding: var(--sf-space-2xl) 0; }
211
+ .sf-section--padding-xl { padding: var(--sf-space-3xl) 0; }
212
+ }
213
+
214
+ /* =============================================================================
215
+ Divider Component
216
+ ============================================================================= */
217
+
218
+ .sf-divider {
219
+ position: relative;
220
+ width: 100%;
221
+ display: flex;
222
+ align-items: center;
223
+ justify-content: center;
224
+ }
225
+
226
+ /* Divider Types */
227
+ .sf-divider--line {
228
+ border-top: 1px solid var(--sf-border-light);
229
+ margin: var(--sf-space-md) 0;
230
+ }
231
+
232
+ .sf-divider--line.sf-divider--gradient {
233
+ border: none;
234
+ height: 1px;
235
+ background: var(--sf-gradient-divider);
236
+ }
237
+
238
+ .sf-divider--line.sf-divider--animated {
239
+ background: linear-gradient(
240
+ 90deg,
241
+ transparent 0%,
242
+ rgba(0,0,0,0.1) 50%,
243
+ transparent 100%
244
+ );
245
+ background-size: 200% 100%;
246
+ animation: sf-divider-flow 3s ease-in-out infinite;
247
+ }
248
+
249
+ @keyframes sf-divider-flow {
250
+ 0%, 100% { background-position: 200% 0; }
251
+ 50% { background-position: -200% 0; }
252
+ }
253
+
254
+ /* Divider Thickness */
255
+ .sf-divider--thin { height: 1px; }
256
+ .sf-divider--medium { height: 2px; }
257
+ .sf-divider--thick { height: 4px; }
258
+
259
+ /* Dots Divider */
260
+ .sf-divider--dots {
261
+ border: none;
262
+ margin: var(--sf-space-lg) 0;
263
+ }
264
+
265
+ .sf-divider__dots {
266
+ display: flex;
267
+ gap: var(--sf-space-sm);
268
+ }
269
+
270
+ .sf-divider__dots span {
271
+ width: 6px;
272
+ height: 6px;
273
+ background: var(--sf-border-medium);
274
+ border-radius: 50%;
275
+ display: block;
276
+ }
277
+
278
+ .sf-divider--animated .sf-divider__dots span {
279
+ animation: sf-dots-pulse 2s ease-in-out infinite;
280
+ }
281
+
282
+ .sf-divider--animated .sf-divider__dots span:nth-child(2) {
283
+ animation-delay: 0.2s;
284
+ }
285
+
286
+ .sf-divider--animated .sf-divider__dots span:nth-child(3) {
287
+ animation-delay: 0.4s;
288
+ }
289
+
290
+ @keyframes sf-dots-pulse {
291
+ 0%, 100% { opacity: 0.3; transform: scale(1); }
292
+ 50% { opacity: 1; transform: scale(1.2); }
293
+ }
294
+
295
+ /* Wave Divider */
296
+ .sf-divider--wave {
297
+ height: 60px;
298
+ margin: var(--sf-space-lg) 0;
299
+ }
300
+
301
+ .sf-divider__wave {
302
+ width: 100%;
303
+ height: 100%;
304
+ fill: var(--sf-border-light);
305
+ }
306
+
307
+ .sf-divider--animated .sf-divider__wave {
308
+ animation: sf-wave-flow 4s ease-in-out infinite;
309
+ }
310
+
311
+ @keyframes sf-wave-flow {
312
+ 0%, 100% { transform: translateX(0); }
313
+ 50% { transform: translateX(-20px); }
314
+ }
315
+
316
+ /* Space Divider */
317
+ .sf-divider--space.sf-divider--thin { height: var(--sf-space-sm); }
318
+ .sf-divider--space.sf-divider--medium { height: var(--sf-space-md); }
319
+ .sf-divider--space.sf-divider--thick { height: var(--sf-space-lg); }
320
+
321
+ /* =============================================================================
322
+ Card Component
323
+ ============================================================================= */
324
+
325
+ .sf-card {
326
+ background: var(--sf-bg-primary);
327
+ border-radius: var(--sf-radius-md);
328
+ transition: var(--sf-transition-normal);
329
+ position: relative;
330
+ overflow: hidden;
331
+ }
332
+
333
+ /* Card Elevation */
334
+ .sf-card--elevation-none {
335
+ box-shadow: none;
336
+ }
337
+
338
+ .sf-card--elevation-low {
339
+ box-shadow: var(--sf-shadow-sm);
340
+ }
341
+
342
+ .sf-card--elevation-medium {
343
+ box-shadow: var(--sf-shadow-md);
344
+ }
345
+
346
+ .sf-card--elevation-high {
347
+ box-shadow: var(--sf-shadow-lg);
348
+ }
349
+
350
+ .sf-card--elevation-highest {
351
+ box-shadow: var(--sf-shadow-xl);
352
+ }
353
+
354
+ /* Card Padding */
355
+ .sf-card--padding-none { padding: 0; }
356
+ .sf-card--padding-small { padding: var(--sf-space-sm); }
357
+ .sf-card--padding-medium { padding: var(--sf-space-md); }
358
+ .sf-card--padding-large { padding: var(--sf-space-lg); }
359
+ .sf-card--padding-xl { padding: var(--sf-space-xl); }
360
+
361
+ /* Card Border Radius */
362
+ .sf-card--radius-none { border-radius: 0; }
363
+ .sf-card--radius-small { border-radius: var(--sf-radius-sm); }
364
+ .sf-card--radius-medium { border-radius: var(--sf-radius-md); }
365
+ .sf-card--radius-large { border-radius: var(--sf-radius-lg); }
366
+ .sf-card--radius-xl { border-radius: var(--sf-radius-xl); }
367
+
368
+ /* Card Border */
369
+ .sf-card--border {
370
+ border: 1px solid var(--sf-border-light);
371
+ }
372
+
373
+ /* Card Hover */
374
+ .sf-card--hover:hover {
375
+ transform: translateY(-2px);
376
+ box-shadow: var(--sf-shadow-lg);
377
+ }
378
+
379
+ .sf-card--hover {
380
+ cursor: pointer;
381
+ }
382
+
383
+ /* =============================================================================
384
+ Stack Component
385
+ ============================================================================= */
386
+
387
+ .sf-stack {
388
+ display: flex;
389
+ }
390
+
391
+ .sf-stack--vertical {
392
+ flex-direction: column;
393
+ }
394
+
395
+ .sf-stack--horizontal {
396
+ flex-direction: row;
397
+ }
398
+
399
+ /* Stack Spacing */
400
+ .sf-stack--spacing-none { gap: 0; }
401
+ .sf-stack--spacing-xs { gap: var(--sf-space-xs); }
402
+ .sf-stack--spacing-small { gap: var(--sf-space-sm); }
403
+ .sf-stack--spacing-medium { gap: var(--sf-space-md); }
404
+ .sf-stack--spacing-large { gap: var(--sf-space-lg); }
405
+ .sf-stack--spacing-xl { gap: var(--sf-space-xl); }
406
+
407
+ /* Stack Alignment */
408
+ .sf-stack--align-start { align-items: flex-start; }
409
+ .sf-stack--align-center { align-items: center; }
410
+ .sf-stack--align-end { align-items: flex-end; }
411
+ .sf-stack--align-stretch { align-items: stretch; }
412
+
413
+ /* =============================================================================
414
+ Spacer Component
415
+ ============================================================================= */
416
+
417
+ .sf-spacer {
418
+ flex-shrink: 0;
419
+ }
420
+
421
+ .sf-spacer--xs { height: var(--sf-space-xs); width: var(--sf-space-xs); }
422
+ .sf-spacer--small { height: var(--sf-space-sm); width: var(--sf-space-sm); }
423
+ .sf-spacer--medium { height: var(--sf-space-md); width: var(--sf-space-md); }
424
+ .sf-spacer--large { height: var(--sf-space-lg); width: var(--sf-space-lg); }
425
+ .sf-spacer--xl { height: var(--sf-space-xl); width: var(--sf-space-xl); }
426
+ .sf-spacer--2xl { height: var(--sf-space-2xl); width: var(--sf-space-2xl); }
427
+ .sf-spacer--3xl { height: var(--sf-space-3xl); width: var(--sf-space-3xl); }
428
+
429
+ /* Responsive Spacers */
430
+ @media (max-width: 767px) {
431
+ .sf-spacer--responsive.sf-spacer--large {
432
+ height: var(--sf-space-md);
433
+ width: var(--sf-space-md);
434
+ }
435
+ .sf-spacer--responsive.sf-spacer--xl {
436
+ height: var(--sf-space-lg);
437
+ width: var(--sf-space-lg);
438
+ }
439
+ .sf-spacer--responsive.sf-spacer--2xl {
440
+ height: var(--sf-space-xl);
441
+ width: var(--sf-space-xl);
442
+ }
443
+ .sf-spacer--responsive.sf-spacer--3xl {
444
+ height: var(--sf-space-2xl);
445
+ width: var(--sf-space-2xl);
446
+ }
447
+ }
448
+
449
+ /* =============================================================================
450
+ Center Component
451
+ ============================================================================= */
452
+
453
+ .sf-center {
454
+ display: flex;
455
+ align-items: center;
456
+ justify-content: center;
457
+ text-align: center;
458
+ }
459
+
460
+ /* =============================================================================
461
+ Demo Styles
462
+ ============================================================================= */
463
+
464
+ .sf-layout-demo {
465
+ background: var(--sf-bg-secondary);
466
+ min-height: 100vh;
467
+ padding: var(--sf-space-xl) 0;
468
+ }
469
+
470
+ .sf-layout-demo__header {
471
+ text-align: center;
472
+ margin-bottom: var(--sf-space-3xl);
473
+ }
474
+
475
+ .sf-layout-demo__title {
476
+ font-size: clamp(2.5rem, 5vw, 4rem);
477
+ font-weight: 800;
478
+ margin-bottom: var(--sf-space-md);
479
+ background: var(--sf-gradient-primary);
480
+ -webkit-background-clip: text;
481
+ -webkit-text-fill-color: transparent;
482
+ background-clip: text;
483
+ }
484
+
485
+ .sf-layout-demo__subtitle {
486
+ font-size: 1.25rem;
487
+ color: #666666;
488
+ max-width: 600px;
489
+ margin: 0 auto;
490
+ line-height: 1.6;
491
+ }
492
+
493
+ .sf-demo-title {
494
+ font-size: 2rem;
495
+ font-weight: 700;
496
+ color: #333333;
497
+ margin-bottom: var(--sf-space-md);
498
+ position: relative;
499
+ padding-bottom: var(--sf-space-sm);
500
+ }
501
+
502
+ .sf-demo-title::after {
503
+ content: '';
504
+ position: absolute;
505
+ bottom: 0;
506
+ left: 0;
507
+ width: 60px;
508
+ height: 3px;
509
+ background: var(--sf-gradient-primary);
510
+ border-radius: 2px;
511
+ }
512
+
513
+ .sf-demo-grid-container,
514
+ .sf-demo-flex-container,
515
+ .sf-divider-demo,
516
+ .sf-stack-demo {
517
+ margin-bottom: var(--sf-space-lg);
518
+ }
519
+
520
+ .sf-demo-grid-container h3,
521
+ .sf-demo-flex-container h3 {
522
+ font-size: 1.1rem;
523
+ font-weight: 600;
524
+ margin-bottom: var(--sf-space-sm);
525
+ color: #555555;
526
+ }
527
+
528
+ /* Demo Card Styling */
529
+ .sf-layout-demo .sf-card {
530
+ min-height: 80px;
531
+ display: flex;
532
+ align-items: center;
533
+ justify-content: center;
534
+ text-align: center;
535
+ font-weight: 500;
536
+ color: #333333;
537
+ background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
538
+ border: 1px solid rgba(0, 0, 0, 0.05);
539
+ }
540
+
541
+ .sf-layout-demo .sf-card h3 {
542
+ margin: 0 0 var(--sf-space-xs) 0;
543
+ font-size: 1.1rem;
544
+ color: #222222;
545
+ }
546
+
547
+ .sf-layout-demo .sf-card p {
548
+ margin: 0;
549
+ font-size: 0.9rem;
550
+ color: #666666;
551
+ line-height: 1.4;
552
+ }
553
+
554
+ /* =============================================================================
555
+ Utility Classes
556
+ ============================================================================= */
557
+
558
+ /* Display Utilities */
559
+ .sf-d-none { display: none !important; }
560
+ .sf-d-block { display: block !important; }
561
+ .sf-d-flex { display: flex !important; }
562
+ .sf-d-grid { display: grid !important; }
563
+ .sf-d-inline { display: inline !important; }
564
+ .sf-d-inline-block { display: inline-block !important; }
565
+
566
+ /* Positioning Utilities */
567
+ .sf-position-relative { position: relative !important; }
568
+ .sf-position-absolute { position: absolute !important; }
569
+ .sf-position-fixed { position: fixed !important; }
570
+ .sf-position-sticky { position: sticky !important; }
571
+
572
+ /* Text Alignment */
573
+ .sf-text-left { text-align: left !important; }
574
+ .sf-text-center { text-align: center !important; }
575
+ .sf-text-right { text-align: right !important; }
576
+
577
+ /* Width Utilities */
578
+ .sf-w-full { width: 100% !important; }
579
+ .sf-w-auto { width: auto !important; }
580
+
581
+ /* Height Utilities */
582
+ .sf-h-full { height: 100% !important; }
583
+ .sf-h-screen { height: 100vh !important; }
584
+ .sf-h-auto { height: auto !important; }
585
+
586
+ /* =============================================================================
587
+ Responsive Utilities
588
+ ============================================================================= */
589
+
590
+ @media (max-width: 639px) {
591
+ .sf-sm-hidden { display: none !important; }
592
+ }
593
+
594
+ @media (min-width: 640px) {
595
+ .sf-sm-block { display: block !important; }
596
+ .sf-sm-flex { display: flex !important; }
597
+ .sf-sm-grid { display: grid !important; }
598
+ }
599
+
600
+ @media (min-width: 768px) {
601
+ .sf-md-block { display: block !important; }
602
+ .sf-md-flex { display: flex !important; }
603
+ .sf-md-grid { display: grid !important; }
604
+ }
605
+
606
+ @media (min-width: 1024px) {
607
+ .sf-lg-block { display: block !important; }
608
+ .sf-lg-flex { display: flex !important; }
609
+ .sf-lg-grid { display: grid !important; }
610
+ }
611
+
612
+ /* =============================================================================
613
+ Accessibility & Special States
614
+ ============================================================================= */
615
+
616
+ /* High Contrast Mode */
617
+ @media (prefers-contrast: high) {
618
+ :root {
619
+ --sf-border-light: rgba(0, 0, 0, 0.3);
620
+ --sf-border-medium: rgba(0, 0, 0, 0.5);
621
+ }
622
+
623
+ .sf-card {
624
+ border: 2px solid var(--sf-border-light);
625
+ }
626
+
627
+ .sf-divider--line {
628
+ border-top-color: var(--sf-border-medium);
629
+ }
630
+
631
+ .sf-layout-demo__title {
632
+ -webkit-text-fill-color: black;
633
+ color: black;
634
+ }
635
+ }
636
+
637
+ /* Reduced Motion */
638
+ @media (prefers-reduced-motion: reduce) {
639
+ .sf-card--hover,
640
+ .sf-divider--animated,
641
+ .sf-divider__dots span,
642
+ .sf-divider__wave {
643
+ animation: none;
644
+ transition: none;
645
+ }
646
+
647
+ .sf-card--hover:hover {
648
+ transform: none;
649
+ }
650
+ }
651
+
652
+ /* Dark Mode Support */
653
+ @media (prefers-color-scheme: dark) {
654
+ .sf-layout-demo.sf-dark-mode {
655
+ --sf-bg-primary: #1a1a1a;
656
+ --sf-bg-secondary: #2a2a2a;
657
+ --sf-bg-tertiary: #3a3a3a;
658
+
659
+ color: white;
660
+ }
661
+
662
+ .sf-layout-demo.sf-dark-mode .sf-card {
663
+ background: var(--sf-bg-secondary);
664
+ color: white;
665
+ }
666
+
667
+ .sf-layout-demo.sf-dark-mode .sf-demo-title {
668
+ color: white;
669
+ }
670
+
671
+ .sf-layout-demo.sf-dark-mode .sf-layout-demo__subtitle {
672
+ color: #cccccc;
673
+ }
674
+ }
675
+
676
+ /* Print Styles */
677
+ @media print {
678
+ .sf-layout-demo {
679
+ background: white;
680
+ }
681
+
682
+ .sf-card {
683
+ box-shadow: none;
684
+ border: 1px solid #ddd;
685
+ break-inside: avoid;
686
+ }
687
+
688
+ .sf-layout-demo__title {
689
+ -webkit-text-fill-color: black;
690
+ color: black;
691
+ }
692
+
693
+ .sf-divider--animated,
694
+ .sf-divider__wave {
695
+ display: none;
696
+ }
697
+ }