@casoon/atlas-styles 0.0.1

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.
package/dist/core.css ADDED
@@ -0,0 +1,2409 @@
1
+ /*!
2
+ * CASOON Atlas Core - Design System Foundation for Tailwind v4
3
+ * Version: 0.0.1
4
+ * Repository: https://github.com/casoon/atlas
5
+ * Author: Jörn Seidel (joern.seidel@casoon.de)
6
+ * License: MIT
7
+ *
8
+ * Core design system with tokens, utilities, and components
9
+ * Part of CASOON Atlas UI effects library
10
+ *
11
+ * Usage: @import "@casoon/atlas-styles/core";
12
+ * Package: @casoon/atlas-styles
13
+ */
14
+
15
+ /* Note: @import "tailwindcss"; should be added by the consumer */
16
+
17
+ /*!
18
+ * CASOON Atlas Core - Complete Foundation Package
19
+ * Ultra-complete foundation with 7 integrated systems:
20
+ * - Core Utilities, Forms, Cards & Components
21
+ * - Navigation System (navbar, tabs, breadcrumbs, drawer)
22
+ * - Scroll System (custom scrollbars, snap, reveal animations)
23
+ * - Gradients System (dynamic backgrounds & effects)
24
+ * - Loading System (spinners, skeleton, progress indicators)
25
+ * - Micro Interactions (hover effects, animations)
26
+ * - Typography System (prose, blog, marketing, docs styles)
27
+ *
28
+ * Total: 145+ classes, optimized for production
29
+ * SSR-safe, tree-shakeable, framework-agnostic
30
+ */
31
+
32
+ /* Note: @import "tailwindcss"; should be added by the consumer */
33
+
34
+ /* =========================================================
35
+ DESIGN SYSTEM FOUNDATION
36
+ ========================================================= */
37
+
38
+ /* Design Tokens - Complete token system for all components */
39
+ /*!
40
+ * Design Tokens - Complete Design System Foundation
41
+ * Core color, spacing, typography, and motion tokens
42
+ */
43
+
44
+ @theme {
45
+ /* Color tokens - Primary design system */
46
+ --cs-bg: #0b0c0f;
47
+ --cs-surface: #14161a;
48
+ --cs-elev1: #1b1e24;
49
+ --cs-elev2: #21252d;
50
+ --cs-text: #eef1f6;
51
+ --cs-text-muted: #b6bfcc;
52
+ --cs-border: #2a2f39;
53
+ --cs-brand: #4f7cff;
54
+ --cs-brand-contrast: #0b0d12;
55
+
56
+ /* State colors */
57
+ --cs-success: #22c55e;
58
+ --cs-warning: #f59e0b;
59
+ --cs-danger: #ef4444;
60
+ --cs-info: #06b6d4;
61
+
62
+ /* Typography tokens */
63
+ --cs-font-sans:
64
+ ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Inter,
65
+ 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif;
66
+ --cs-font-mono:
67
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
68
+ 'Courier New', monospace;
69
+ --cs-font-size: 16px;
70
+ --cs-line: 1.5;
71
+
72
+ /* Spacing tokens with density support */
73
+ --cs-density: 1;
74
+ --cs-space-1: calc(4px * var(--cs-density));
75
+ --cs-space-2: calc(8px * var(--cs-density));
76
+ --cs-space-3: calc(12px * var(--cs-density));
77
+ --cs-space-4: calc(16px * var(--cs-density));
78
+ --cs-space-6: calc(24px * var(--cs-density));
79
+ --cs-space-8: calc(32px * var(--cs-density));
80
+
81
+ /* Border radius & shadow tokens */
82
+ --cs-radius: 10px;
83
+ --cs-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px 1px rgba(0, 0, 0, 0.1);
84
+ --cs-shadow-2: 0 8px 24px rgba(0, 0, 0, 0.22), 0 2px 8px rgba(0, 0, 0, 0.18);
85
+
86
+ /* Motion tokens */
87
+ --cs-transition: 180ms cubic-bezier(0.2, 0.6, 0.2, 1);
88
+ --cs-anim-duration-sm: 160ms;
89
+ --cs-anim-duration-md: 280ms;
90
+ --cs-anim-duration-lg: 420ms;
91
+ --cs-anim-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
92
+ --cs-anim-ease-in: cubic-bezier(0.32, 0, 0.67, 0);
93
+ --cs-anim-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
94
+
95
+ /* Z-index tokens - Extended scale */
96
+ --cs-z-0: 0;
97
+ --cs-z-1: 1;
98
+ --cs-z-base: 1;
99
+ --cs-z-10: 10;
100
+ --cs-z-20: 20;
101
+ --cs-z-30: 30;
102
+ --cs-z-popover: 30;
103
+ --cs-z-40: 40;
104
+ --cs-z-tooltip: 40;
105
+ --cs-z-50: 50;
106
+ --cs-z-toast: 50;
107
+ --cs-z-60: 60;
108
+ --cs-z-modal: 60;
109
+ --cs-z-70: 70;
110
+ --cs-z-80: 80;
111
+ --cs-z-90: 90;
112
+ --cs-z-100: 100;
113
+ --cs-z-200: 200;
114
+ --cs-z-300: 300;
115
+ --cs-z-400: 400;
116
+ --cs-z-500: 500;
117
+ --cs-z-600: 600;
118
+ --cs-z-700: 700;
119
+ --cs-z-800: 800;
120
+ --cs-z-900: 900;
121
+ --cs-z-999: 999;
122
+ --cs-z-high: 9999;
123
+ --cs-z-9999: 9999;
124
+ --cs-z-max: 2147483647;
125
+ /* Additional semantic z-index tokens from v0.8.x */
126
+ --cs-z-drawer: 1000;
127
+ --cs-z-dropdown: 1000;
128
+ --cs-z-fixed: 1030;
129
+ --cs-z-nav: 1020;
130
+ --cs-z-nav-overlay: 1010;
131
+ --cs-z-orb: 5;
132
+ --cs-z-overlay: 1040;
133
+ --cs-z-sticky: 1020;
134
+
135
+ /* Layout tokens */
136
+ --cs-page-max: 1200px;
137
+ --cs-page-pad: var(--cs-space-4);
138
+
139
+ /* Backdrop/blur tokens */
140
+ --cs-acrylic-blur: 14px;
141
+ --cs-acrylic-tint: rgba(20, 22, 26, 0.55);
142
+ --cs-acrylic-border: rgba(255, 255, 255, 0.06);
143
+
144
+ /* Progressive color tokens */
145
+ --cs-brand-oklch: oklch(60% 0.15 255);
146
+ --cs-brand-ink: var(--cs-brand-contrast);
147
+
148
+ /* Fluid typography tokens */
149
+ --cs-fs-xs: clamp(0.78rem, 0.75rem + 0.2cqi, 0.84rem);
150
+ --cs-fs-sm: clamp(0.88rem, 0.82rem + 0.3cqi, 0.95rem);
151
+ --cs-fs-md: clamp(1rem, 0.95rem + 0.4cqi, 1.125rem);
152
+ --cs-fs-lg: clamp(1.25rem, 1.05rem + 0.8cqi, 1.5rem);
153
+ --cs-fs-xl: clamp(1.5rem, 1.2rem + 1.2cqi, 1.875rem);
154
+ --cs-fs-2xl: clamp(1.875rem, 1.4rem + 1.6cqi, 2.25rem);
155
+
156
+ /* Form tokens */
157
+ --cs-form-bg: var(--cs-surface);
158
+ --cs-form-border: var(--cs-border);
159
+ --cs-form-radius: var(--cs-radius);
160
+ --cs-form-shadow: var(--cs-shadow-1);
161
+ --cs-form-focus: var(--cs-brand);
162
+
163
+ /* Typography component tokens */
164
+ --cs-prose-headings: var(--cs-text);
165
+ --cs-prose-body: var(--cs-text-muted);
166
+ --cs-prose-links: var(--cs-brand);
167
+ --cs-prose-bold: var(--cs-text);
168
+ --cs-prose-quotes: var(--cs-text-muted);
169
+ --cs-prose-captions: var(--cs-text-muted);
170
+
171
+ /* Gradients system tokens */
172
+ --cs-gradient-primary: linear-gradient(
173
+ 135deg,
174
+ var(--cs-brand),
175
+ color-mix(in srgb, var(--cs-brand) 80%, var(--cs-info))
176
+ );
177
+ --cs-gradient-success: linear-gradient(
178
+ 135deg,
179
+ var(--cs-success),
180
+ color-mix(in srgb, var(--cs-success) 70%, var(--cs-info))
181
+ );
182
+ --cs-gradient-warning: linear-gradient(
183
+ 135deg,
184
+ var(--cs-warning),
185
+ color-mix(in srgb, var(--cs-warning) 80%, var(--cs-danger))
186
+ );
187
+ --cs-gradient-sunset: linear-gradient(135deg, #ff9a9e, #fecfef, #fecfef);
188
+ --cs-gradient-ocean: linear-gradient(135deg, #667eea, #764ba2);
189
+ --cs-gradient-forest: linear-gradient(135deg, #11998e, #38ef7d);
190
+
191
+ /* Extended gradient color stop tokens for comprehensive utilities */
192
+ --cs-gradient-sunset-start: #ff6b6b;
193
+ --cs-gradient-sunset-mid: #ffd93d;
194
+ --cs-gradient-sunset-end: #6bcf7f;
195
+
196
+ --cs-gradient-ocean-start: #667eea;
197
+ --cs-gradient-ocean-end: #764ba2;
198
+
199
+ --cs-gradient-fire-start: #f093fb;
200
+ --cs-gradient-fire-end: #f5576c;
201
+
202
+ --cs-gradient-mint-start: #4facfe;
203
+ --cs-gradient-mint-end: #00f2fe;
204
+
205
+ --cs-gradient-purple-start: #a8edea;
206
+ --cs-gradient-purple-end: #fed6e3;
207
+
208
+ --cs-gradient-orange-start: #ffeaa7;
209
+ --cs-gradient-orange-end: #fab1a0;
210
+
211
+ --cs-gradient-blue-start: #74b9ff;
212
+ --cs-gradient-blue-end: #0984e3;
213
+
214
+ --cs-gradient-pink-start: #fd79a8;
215
+ --cs-gradient-pink-end: #fdcb6e;
216
+
217
+ /* Custom gradient variables (user customizable) */
218
+ --cs-gradient-custom-start: #667eea;
219
+ --cs-gradient-custom-mid: ;
220
+ --cs-gradient-custom-end: #764ba2;
221
+
222
+ --cs-gradient-white: #ffffff;
223
+
224
+ /* Shared stops list fallback (for radial/conic) */
225
+ --cs-gradient-stops:
226
+ var(--cs-gradient-ocean-start), var(--cs-gradient-ocean-end);
227
+
228
+ /* Gradient fade color tokens */
229
+ --cs-gradient-fade-color: rgba(79, 124, 255, 0.6);
230
+ --cs-gradient-fade-mid: rgba(79, 124, 255, 0.3);
231
+
232
+ /* Animation defaults for gradient animations */
233
+ --cs-anim-gradient-duration: 4s;
234
+ --cs-anim-gradient-ease: var(--cs-anim-ease-in-out);
235
+ --cs-anim-gradient-iteration: infinite;
236
+
237
+ /* Loading system tokens */
238
+ --cs-loading-spinner-size: 40px;
239
+ --cs-loading-spinner-border: 4px;
240
+ --cs-loading-duration-fast: 0.8s;
241
+ --cs-loading-duration-normal: 1.2s;
242
+ --cs-loading-duration-slow: 2s;
243
+
244
+ /* Micro interactions tokens */
245
+ --cs-hover-lift: -2px;
246
+ --cs-hover-scale: 1.02;
247
+ --cs-hover-glow-spread: 8px;
248
+ --cs-tap-scale: 0.98;
249
+
250
+ /* Scrollbar design tokens */
251
+ --cs-scroll-thumb-gray: #6b7280;
252
+ --cs-scroll-thumb-blue: #3b82f6;
253
+ --cs-scroll-thumb-primary: var(--cs-brand);
254
+ --cs-scroll-track: rgba(0, 0, 0, 0.08);
255
+ --cs-scroll-track-light: rgba(0, 0, 0, 0.04);
256
+ --cs-scroll-thumb-radius: 8px;
257
+ --cs-scrollbar-size: 10px;
258
+ --cs-scrollbar-size-thin: 6px;
259
+
260
+ /* Scroll shadow tokens */
261
+ --cs-scroll-shadow-color: rgba(0, 0, 0, 0.08);
262
+ --cs-scroll-shadow-size: 12px;
263
+
264
+ /* Scroll animation tokens */
265
+ --cs-scroll-reveal-distance: 16px;
266
+ --cs-scroll-reveal-scale: 0.96;
267
+
268
+ /* Navigation design tokens */
269
+ --cs-nav-primary: var(--cs-brand);
270
+ --cs-nav-text: var(--cs-text);
271
+ --cs-nav-text-muted: var(--cs-text-muted);
272
+ --cs-nav-text-secondary: color-mix(in srgb, var(--cs-text) 75%, transparent);
273
+ --cs-nav-text-disabled: color-mix(in srgb, var(--cs-text) 40%, transparent);
274
+ --cs-nav-border: var(--cs-border);
275
+ --cs-nav-border-light: color-mix(in srgb, var(--cs-border) 60%, transparent);
276
+ --cs-nav-bg: var(--cs-surface);
277
+ --cs-nav-bg-hover: color-mix(
278
+ in srgb,
279
+ var(--cs-surface) 80%,
280
+ var(--cs-text) 8%
281
+ );
282
+ --cs-nav-bg-secondary: color-mix(
283
+ in srgb,
284
+ var(--cs-surface) 60%,
285
+ var(--cs-bg)
286
+ );
287
+ --cs-nav-bg-disabled: color-mix(in srgb, var(--cs-surface) 50%, transparent);
288
+ --cs-nav-height: 64px;
289
+ --cs-nav-transition: var(--cs-transition);
290
+ --cs-nav-transition-fast: calc(var(--cs-transition) * 0.75);
291
+ --cs-nav-transition-base: var(--cs-transition);
292
+ --cs-nav-backdrop-bg: rgba(0, 0, 0, 0.5);
293
+ --cs-nav-backdrop-blur: var(--cs-acrylic-blur);
294
+
295
+ /* Typography base tokens */
296
+ --cs-prose-font-size: 1rem;
297
+ --cs-prose-line-height: 1.75;
298
+ --cs-prose-color: color-mix(in srgb, currentColor 85%, transparent);
299
+ --cs-prose-headings-color: color-mix(in srgb, currentColor 95%, transparent);
300
+ --cs-prose-links-color: #3b82f6;
301
+ --cs-prose-links-hover: color-mix(in srgb, #3b82f6 80%, transparent);
302
+ --cs-prose-spacing: 1.5rem;
303
+ --cs-prose-max-width: 65ch;
304
+
305
+ /* Typography scale tokens */
306
+ --cs-prose-xs: 0.8125rem;
307
+ --cs-prose-sm: 0.875rem;
308
+ --cs-prose-base: 1rem;
309
+ --cs-prose-lg: 1.125rem;
310
+ --cs-prose-xl: 1.25rem;
311
+ --cs-prose-2xl: 1.5rem;
312
+ --cs-prose-3xl: 1.875rem;
313
+ --cs-prose-4xl: 2.25rem;
314
+ --cs-prose-5xl: 3rem;
315
+
316
+ /* Typography weight tokens */
317
+ --cs-prose-weight-light: 300;
318
+ --cs-prose-weight-normal: 400;
319
+ --cs-prose-weight-medium: 500;
320
+ --cs-prose-weight-semibold: 600;
321
+ --cs-prose-weight-bold: 700;
322
+ --cs-prose-weight-extrabold: 800;
323
+ --cs-prose-weight-black: 900;
324
+
325
+ /* Typography family tokens */
326
+ --cs-prose-font-sans:
327
+ system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
328
+ 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;
329
+ --cs-prose-font-serif: Georgia, 'Times New Roman', Times, serif;
330
+ --cs-prose-font-mono:
331
+ 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New',
332
+ monospace;
333
+
334
+ /* Typography spacing tokens */
335
+ --cs-prose-spacing-tight: 1.25rem;
336
+ --cs-prose-spacing-normal: 1.5rem;
337
+ --cs-prose-spacing-relaxed: 1.75rem;
338
+ --cs-prose-spacing-loose: 2rem;
339
+
340
+ /* Code styling tokens */
341
+ --cs-prose-code-bg: color-mix(in srgb, currentColor 8%, transparent);
342
+ --cs-prose-code-border: color-mix(in srgb, currentColor 10%, transparent);
343
+ --cs-prose-pre-bg: color-mix(in srgb, currentColor 5%, transparent);
344
+ }
345
+
346
+ /* =========================================================
347
+ BASE LAYER - Core accessibility and utilities
348
+ ========================================================= */
349
+
350
+ /* Core Accessibility Utilities */
351
+ /* =========================================================
352
+ BASE ACCESSIBILITY UTILITIES
353
+ ========================================================= */
354
+
355
+ /* Screen reader only content */
356
+ @utility cs-sr-only {
357
+ position: absolute;
358
+ width: 1px;
359
+ height: 1px;
360
+ padding: 0;
361
+ margin: -1px;
362
+ overflow: hidden;
363
+ clip: rect(0, 0, 0, 0);
364
+ white-space: nowrap;
365
+ border: 0;
366
+ }
367
+
368
+ /* Focus management utilities */
369
+ @utility cs-focus-ring {
370
+ outline: none;
371
+
372
+ &:focus-visible {
373
+ outline: 2px solid transparent;
374
+ outline-offset: 2px;
375
+ box-shadow:
376
+ 0 0 0 2px var(--cs-brand, #4f7cff),
377
+ 0 0 0 4px color-mix(in srgb, var(--cs-brand, #4f7cff) 20%, transparent);
378
+ transition: box-shadow var(--cs-transition);
379
+ }
380
+ }
381
+
382
+ @utility cs-focus-ring-within {
383
+ &:focus-within {
384
+ box-shadow:
385
+ 0 0 0 2px var(--cs-brand, #4f7cff),
386
+ 0 0 0 6px color-mix(in srgb, var(--cs-brand, #4f7cff) 22%, transparent);
387
+ border-radius: var(--cs-radius);
388
+ }
389
+ }
390
+
391
+ /* Core Layout Utilities */
392
+ /* =========================================================
393
+ BASE LAYOUT UTILITIES
394
+ ========================================================= */
395
+
396
+ /* Container utilities */
397
+ @utility cs-container-fluid {
398
+ width: 100%;
399
+ padding-left: var(--cs-page-pad);
400
+ padding-right: var(--cs-page-pad);
401
+ margin-left: auto;
402
+ margin-right: auto;
403
+ max-width: none;
404
+ background-color: var(--cs-surface, #14161a);
405
+ color: var(--cs-text, #eef1f6);
406
+
407
+ @media (min-width: 768px) {
408
+ padding-left: calc(var(--cs-page-pad) + var(--cs-space-2));
409
+ padding-right: calc(var(--cs-page-pad) + var(--cs-space-2));
410
+ }
411
+
412
+ @media (min-width: 1200px) {
413
+ max-width: var(--cs-page-max);
414
+ }
415
+ }
416
+
417
+ /* Z-Index utilities - Complete scale */
418
+ @utility cs-z-0 {
419
+ z-index: var(--cs-z-0);
420
+ position: relative;
421
+ }
422
+ @utility cs-z-1 {
423
+ z-index: var(--cs-z-1);
424
+ position: relative;
425
+ }
426
+ @utility cs-z-base {
427
+ z-index: var(--cs-z-base);
428
+ position: relative;
429
+ }
430
+ @utility cs-z-10 {
431
+ z-index: var(--cs-z-10);
432
+ position: relative;
433
+ }
434
+ @utility cs-z-20 {
435
+ z-index: var(--cs-z-20);
436
+ position: relative;
437
+ }
438
+ @utility cs-z-30 {
439
+ z-index: var(--cs-z-30);
440
+ position: relative;
441
+ }
442
+ @utility cs-z-popover {
443
+ z-index: var(--cs-z-popover);
444
+ position: relative;
445
+ }
446
+ @utility cs-z-40 {
447
+ z-index: var(--cs-z-40);
448
+ position: relative;
449
+ }
450
+ @utility cs-z-tooltip {
451
+ z-index: var(--cs-z-tooltip);
452
+ position: relative;
453
+ }
454
+ @utility cs-z-50 {
455
+ z-index: var(--cs-z-50);
456
+ position: relative;
457
+ }
458
+ @utility cs-z-toast {
459
+ z-index: var(--cs-z-toast);
460
+ position: relative;
461
+ }
462
+ @utility cs-z-60 {
463
+ z-index: var(--cs-z-60);
464
+ position: relative;
465
+ }
466
+ @utility cs-z-modal {
467
+ z-index: var(--cs-z-modal);
468
+ position: relative;
469
+ }
470
+ @utility cs-z-70 {
471
+ z-index: var(--cs-z-70);
472
+ position: relative;
473
+ }
474
+ @utility cs-z-80 {
475
+ z-index: var(--cs-z-80);
476
+ position: relative;
477
+ }
478
+ @utility cs-z-90 {
479
+ z-index: var(--cs-z-90);
480
+ position: relative;
481
+ }
482
+ @utility cs-z-100 {
483
+ z-index: var(--cs-z-100);
484
+ position: relative;
485
+ }
486
+ @utility cs-z-200 {
487
+ z-index: var(--cs-z-200);
488
+ position: relative;
489
+ }
490
+ @utility cs-z-300 {
491
+ z-index: var(--cs-z-300);
492
+ position: relative;
493
+ }
494
+ @utility cs-z-400 {
495
+ z-index: var(--cs-z-400);
496
+ position: relative;
497
+ }
498
+ @utility cs-z-500 {
499
+ z-index: var(--cs-z-500);
500
+ position: relative;
501
+ }
502
+ @utility cs-z-600 {
503
+ z-index: var(--cs-z-600);
504
+ position: relative;
505
+ }
506
+ @utility cs-z-700 {
507
+ z-index: var(--cs-z-700);
508
+ position: relative;
509
+ }
510
+ @utility cs-z-800 {
511
+ z-index: var(--cs-z-800);
512
+ position: relative;
513
+ }
514
+ @utility cs-z-900 {
515
+ z-index: var(--cs-z-900);
516
+ position: relative;
517
+ }
518
+ @utility cs-z-999 {
519
+ z-index: var(--cs-z-999);
520
+ position: relative;
521
+ }
522
+ @utility cs-z-high {
523
+ z-index: var(--cs-z-high);
524
+ position: relative;
525
+ }
526
+ @utility cs-z-9999 {
527
+ z-index: var(--cs-z-9999);
528
+ position: relative;
529
+ }
530
+ @utility cs-z-max {
531
+ z-index: var(--cs-z-max);
532
+ position: relative;
533
+ }
534
+
535
+ /* Additional semantic z-index utilities from v0.8.x */
536
+ @utility cs-z-drawer {
537
+ z-index: var(--cs-z-drawer);
538
+ position: relative;
539
+ }
540
+ @utility cs-z-dropdown {
541
+ z-index: var(--cs-z-dropdown);
542
+ position: relative;
543
+ }
544
+ @utility cs-z-fixed {
545
+ z-index: var(--cs-z-fixed);
546
+ position: fixed;
547
+ }
548
+ @utility cs-z-nav {
549
+ z-index: var(--cs-z-nav);
550
+ position: relative;
551
+ }
552
+ @utility cs-z-nav-overlay {
553
+ z-index: var(--cs-z-nav-overlay);
554
+ position: relative;
555
+ }
556
+ @utility cs-z-orb {
557
+ z-index: var(--cs-z-orb);
558
+ position: relative;
559
+ }
560
+ @utility cs-z-overlay {
561
+ z-index: var(--cs-z-overlay);
562
+ position: relative;
563
+ }
564
+ @utility cs-z-sticky {
565
+ z-index: var(--cs-z-sticky);
566
+ position: sticky;
567
+ }
568
+
569
+ /* =========================================================
570
+ LAYOUT UTILITIES
571
+ Page layout and spacing utilities
572
+ ========================================================= */
573
+ @utility cs-page-max {
574
+ max-width: var(--cs-page-max);
575
+ }
576
+ @utility cs-page-pad {
577
+ padding: var(--cs-page-pad);
578
+ }
579
+
580
+ /* Shadow utilities */
581
+ @utility cs-shadow-0 {
582
+ box-shadow: var(--cs-shadow-0);
583
+ }
584
+ @utility cs-shadow-1 {
585
+ box-shadow: var(--cs-shadow-1);
586
+ }
587
+ @utility cs-shadow-2 {
588
+ box-shadow: var(--cs-shadow-2);
589
+ }
590
+
591
+ /* =========================================================
592
+ COLOR SYSTEM UTILITIES
593
+ Core color utilities from design tokens
594
+ ========================================================= */
595
+ @utility cs-bg {
596
+ background-color: var(--cs-bg);
597
+ }
598
+ @utility cs-surface {
599
+ background-color: var(--cs-surface);
600
+ }
601
+ @utility cs-surface-2 {
602
+ background-color: var(--cs-surface-2);
603
+ }
604
+ @utility cs-elev1 {
605
+ background-color: var(--cs-elev1);
606
+ }
607
+ @utility cs-elev2 {
608
+ background-color: var(--cs-elev2);
609
+ }
610
+ @utility cs-text {
611
+ color: var(--cs-text);
612
+ }
613
+ @utility cs-text-muted {
614
+ color: var(--cs-text-muted);
615
+ }
616
+ @utility cs-text-inverse {
617
+ color: var(--cs-text-inverse);
618
+ }
619
+ @utility cs-brand {
620
+ color: var(--cs-brand);
621
+ }
622
+ @utility cs-brand-contrast {
623
+ color: var(--cs-brand-contrast);
624
+ }
625
+ @utility cs-success {
626
+ color: var(--cs-success);
627
+ }
628
+ @utility cs-warning {
629
+ color: var(--cs-warning);
630
+ }
631
+ @utility cs-danger {
632
+ color: var(--cs-danger);
633
+ }
634
+ @utility cs-info {
635
+ color: var(--cs-info);
636
+ }
637
+ @utility cs-border {
638
+ border-color: var(--cs-border);
639
+ }
640
+
641
+ /* =========================================================
642
+ COMPONENT SYSTEMS - All UI components
643
+ ========================================================= */
644
+
645
+ /* Cards System - Feature, product, pricing cards */
646
+ /* =========================================================
647
+ CARD SYSTEM COMPONENTS
648
+ Standard card components without glass effects
649
+ ========================================================= */
650
+
651
+ /* Feature Card Component */
652
+ @utility cs-card-feature {
653
+ display: grid;
654
+ grid-template-rows: auto auto 1fr;
655
+ gap: var(--cs-card-space-lg, 1.5rem);
656
+ background: var(--cs-card-bg, #ffffff);
657
+ border: 1px solid var(--cs-card-border, #e5e7eb);
658
+ border-radius: var(--cs-card-radius, 12px);
659
+ box-shadow: var(--cs-card-shadow, 0 1px 2px rgba(0, 0, 0, 0.05));
660
+ padding: var(--cs-card-space-xl, 2rem);
661
+ text-align: center;
662
+ position: relative;
663
+ transition: var(--cs-card-transition, all 0.2s ease);
664
+
665
+ &:hover {
666
+ transform: translateY(var(--cs-card-hover-lift, -2px));
667
+ box-shadow: var(--cs-card-shadow-hover, 0 4px 6px rgba(0, 0, 0, 0.07));
668
+ }
669
+ }
670
+
671
+ /* Product Card Component */
672
+ @utility cs-card-product {
673
+ background: var(--cs-card-bg, #ffffff);
674
+ border-radius: var(--cs-card-radius, 12px);
675
+ box-shadow: var(--cs-card-shadow, 0 1px 3px rgba(0, 0, 0, 0.1));
676
+ transition: var(--cs-card-transition, all 0.2s ease);
677
+ overflow: hidden;
678
+ max-width: 20rem;
679
+ display: flex;
680
+ flex-direction: column;
681
+ position: relative;
682
+
683
+ &:hover {
684
+ transform: translateY(var(--cs-card-hover-lift, -2px));
685
+ box-shadow: var(--cs-card-shadow-hover, 0 4px 6px rgba(0, 0, 0, 0.1));
686
+ }
687
+ }
688
+
689
+ /* Pricing Card Component */
690
+ @utility cs-card-pricing {
691
+ display: grid;
692
+ grid-template-rows: auto 1fr auto;
693
+ background: var(--cs-card-bg, #ffffff);
694
+ border: 2px solid var(--cs-card-border, #e5e7eb);
695
+ border-radius: var(--cs-card-radius, 12px);
696
+ box-shadow: var(--cs-card-shadow, 0 1px 3px rgba(0, 0, 0, 0.1));
697
+ padding: var(--cs-card-space-xl, 2rem);
698
+ text-align: center;
699
+ position: relative;
700
+ transition: var(--cs-card-transition, all 0.2s ease);
701
+
702
+ &:hover {
703
+ transform: translateY(var(--cs-card-hover-lift, -4px));
704
+ box-shadow: var(--cs-card-shadow-hover, 0 8px 25px rgba(0, 0, 0, 0.15));
705
+ }
706
+ }
707
+
708
+ /* Testimonial Card Component */
709
+ @utility cs-card-testimonial {
710
+ background: var(--cs-card-bg, #ffffff);
711
+ border-radius: var(--cs-card-radius, 12px);
712
+ box-shadow: var(--cs-card-shadow, 0 1px 3px rgba(0, 0, 0, 0.1));
713
+ transition: var(--cs-card-transition, all 0.2s ease);
714
+ overflow: hidden;
715
+ padding: var(--cs-card-padding, 1.5rem);
716
+ max-width: 24rem;
717
+ text-align: center;
718
+ position: relative;
719
+
720
+ &:hover {
721
+ box-shadow: var(--cs-card-shadow-hover, 0 4px 6px rgba(0, 0, 0, 0.1));
722
+ transform: translateY(var(--cs-card-hover-lift, -2px));
723
+ }
724
+ }
725
+
726
+ /* =========================================================
727
+ CARD HELPER COMPONENTS
728
+ ========================================================= */
729
+
730
+ /* Card Image */
731
+ @utility cs-card-image {
732
+ width: 100%;
733
+ height: 12rem;
734
+ object-fit: cover;
735
+ background: color-mix(in srgb, currentColor 5%, transparent);
736
+ }
737
+
738
+ /* Card Content */
739
+ @utility cs-card-content {
740
+ padding: var(--cs-card-padding, 1.5rem);
741
+ flex: 1;
742
+ display: flex;
743
+ flex-direction: column;
744
+ gap: 0.75rem;
745
+ }
746
+
747
+ /* Card Title */
748
+ @utility cs-card-title {
749
+ font-size: 1.25rem;
750
+ font-weight: 700;
751
+ color: var(--cs-card-text, currentColor);
752
+ margin: 0;
753
+ line-height: 1.3;
754
+ }
755
+
756
+ /* Card Description */
757
+ @utility cs-card-description {
758
+ color: var(
759
+ --cs-card-text-muted,
760
+ color-mix(in srgb, currentColor 70%, transparent)
761
+ );
762
+ line-height: 1.6;
763
+ margin: 0;
764
+ flex: 1;
765
+ }
766
+
767
+ /* Card Price */
768
+ @utility cs-card-price {
769
+ font-size: 1.5rem;
770
+ font-weight: 800;
771
+ color: var(--cs-success, #059669);
772
+ margin: 0;
773
+ }
774
+
775
+ /* Card Actions */
776
+ @utility cs-card-actions {
777
+ padding: 0 var(--cs-card-padding, 1.5rem) var(--cs-card-padding, 1.5rem);
778
+ display: flex;
779
+ gap: 0.75rem;
780
+ }
781
+
782
+ /* Testimonial Quote */
783
+ @utility cs-testimonial-quote {
784
+ font-size: 1.125rem;
785
+ line-height: 1.6;
786
+ font-style: italic;
787
+ color: var(
788
+ --cs-card-text-muted,
789
+ color-mix(in srgb, currentColor 85%, transparent)
790
+ );
791
+ margin-bottom: 1.5rem;
792
+ position: relative;
793
+
794
+ &::before {
795
+ content: '"';
796
+ position: absolute;
797
+ top: -0.5rem;
798
+ left: -0.5rem;
799
+ font-size: 3rem;
800
+ color: color-mix(in srgb, currentColor 20%, transparent);
801
+ line-height: 1;
802
+ }
803
+ }
804
+
805
+ /* Testimonial Author */
806
+ @utility cs-testimonial-author {
807
+ display: flex;
808
+ align-items: center;
809
+ justify-content: center;
810
+ gap: 1rem;
811
+ margin-top: 1rem;
812
+ }
813
+
814
+ /* Primary Button for Cards */
815
+ @utility cs-button-primary-card {
816
+ background: linear-gradient(
817
+ 135deg,
818
+ var(--cs-brand, #3b82f6),
819
+ color-mix(in srgb, var(--cs-brand, #3b82f6) 80%, #000000)
820
+ );
821
+ color: var(--cs-brand-ink, #ffffff);
822
+ border: none;
823
+ padding: 0.75rem 1.5rem;
824
+ border-radius: calc(var(--cs-radius, 10px) / 2);
825
+ font-weight: 600;
826
+ cursor: pointer;
827
+ transition: all var(--cs-transition, 200ms ease);
828
+ flex: 1;
829
+
830
+ &:hover {
831
+ transform: translateY(-1px);
832
+ box-shadow: 0 4px 12px
833
+ color-mix(in srgb, var(--cs-brand, #3b82f6) 40%, transparent);
834
+ }
835
+
836
+ &:focus {
837
+ outline: 2px solid transparent;
838
+ outline-offset: 2px;
839
+ box-shadow:
840
+ 0 0 0 2px var(--cs-brand, #3b82f6),
841
+ 0 0 0 4px color-mix(in srgb, var(--cs-brand, #3b82f6) 20%, transparent);
842
+ }
843
+ }
844
+
845
+ /* Forms System - Input, labels, validation */
846
+ /* =========================================================
847
+ FORMS SYSTEM COMPONENTS
848
+ Complete form system with modern styling
849
+ ========================================================= */
850
+
851
+ /* Form Base */
852
+ @utility cs-form-base {
853
+ display: flex;
854
+ flex-direction: column;
855
+ gap: var(--cs-space-4, 1rem);
856
+ }
857
+
858
+ /* Input Base */
859
+ @utility cs-input-base {
860
+ padding: var(--cs-space-3, 12px) var(--cs-space-4, 16px);
861
+ border: 1px solid var(--cs-form-border, #e5e7eb);
862
+ border-radius: var(--cs-form-radius, 8px);
863
+ transition: var(--cs-transition, 180ms ease);
864
+ background: var(--cs-form-bg, #ffffff);
865
+ color: var(--cs-text, #111827);
866
+
867
+ &:focus {
868
+ outline: none;
869
+ border-color: var(--cs-form-focus, #3b82f6);
870
+ box-shadow: 0 0 0 3px
871
+ color-mix(in srgb, var(--cs-form-focus, #3b82f6) 15%, transparent);
872
+ }
873
+ }
874
+
875
+ /* Modern Form */
876
+ @utility cs-form-modern {
877
+ display: flex;
878
+ flex-direction: column;
879
+ gap: var(--cs-space-4, 1rem);
880
+ max-width: 32rem;
881
+ margin: 0 auto;
882
+ padding: 2rem;
883
+ background: var(--cs-card-bg, #ffffff);
884
+ border-radius: var(--cs-radius, 10px);
885
+ box-shadow: var(--cs-shadow-1, 0 1px 3px rgba(0, 0, 0, 0.1));
886
+ }
887
+
888
+ /* Modern Input */
889
+ @utility cs-input-modern {
890
+ padding: var(--cs-space-3, 12px) var(--cs-space-4, 16px);
891
+ border: 2px solid color-mix(in srgb, currentColor 10%, transparent);
892
+ border-radius: var(--cs-form-radius, 8px);
893
+ transition: var(--cs-transition, 180ms ease);
894
+ background: var(--cs-form-bg, #ffffff);
895
+ font-size: var(--cs-fs-md, 1rem);
896
+ line-height: var(--cs-line, 1.5);
897
+ color: var(--cs-text, #111827);
898
+
899
+ &:focus {
900
+ outline: none;
901
+ border-color: var(--cs-form-focus, #3b82f6);
902
+ box-shadow: 0 0 0 3px
903
+ color-mix(in srgb, var(--cs-form-focus, #3b82f6) 20%, transparent);
904
+ }
905
+
906
+ &::placeholder {
907
+ color: var(--cs-text-muted, #6b7280);
908
+ }
909
+ }
910
+
911
+ /* Modern Label */
912
+ @utility cs-label-modern {
913
+ font-weight: 600;
914
+ color: var(--cs-text, #111827);
915
+ margin-bottom: 0.5rem;
916
+ display: block;
917
+ font-size: var(--cs-fs-sm, 0.875rem);
918
+ }
919
+
920
+ /* Modern Primary Button */
921
+ @utility cs-button-primary-modern {
922
+ background: linear-gradient(
923
+ 135deg,
924
+ var(--cs-brand, #3b82f6),
925
+ color-mix(in srgb, var(--cs-brand, #3b82f6) 80%, #000000)
926
+ );
927
+ color: var(--cs-brand-ink, #ffffff);
928
+ border: none;
929
+ padding: 0.875rem 1.5rem;
930
+ border-radius: var(--cs-form-radius, 8px);
931
+ font-weight: 600;
932
+ cursor: pointer;
933
+ transition: var(--cs-transition, 180ms ease);
934
+ font-size: var(--cs-fs-md, 1rem);
935
+
936
+ &:hover {
937
+ transform: translateY(-2px);
938
+ box-shadow: 0 8px 20px
939
+ color-mix(in srgb, var(--cs-brand, #3b82f6) 30%, transparent);
940
+ }
941
+
942
+ &:focus {
943
+ outline: 2px solid transparent;
944
+ outline-offset: 2px;
945
+ box-shadow:
946
+ 0 0 0 2px var(--cs-brand, #3b82f6),
947
+ 0 0 0 4px color-mix(in srgb, var(--cs-brand, #3b82f6) 20%, transparent);
948
+ }
949
+ }
950
+
951
+ /* Form Group */
952
+ @utility cs-form-group {
953
+ position: relative;
954
+ margin-bottom: var(--cs-space-4, 1rem);
955
+ }
956
+
957
+ /* =========================================================
958
+ FORM VALIDATION SYSTEM
959
+ ========================================================= */
960
+
961
+ /* Form Validation States */
962
+ @utility cs-input-validation {
963
+ position: absolute;
964
+ top: 100%;
965
+ left: 0;
966
+ right: 0;
967
+ margin-top: 0.25rem;
968
+ font-size: 0.875rem;
969
+ display: none;
970
+ align-items: center;
971
+ gap: 0.25rem;
972
+ }
973
+
974
+ @utility cs-validation-error {
975
+ display: flex;
976
+ color: var(--cs-danger, #ef4444);
977
+ }
978
+
979
+ @utility cs-validation-success {
980
+ display: flex;
981
+ color: var(--cs-success, #22c55e);
982
+ }
983
+
984
+ @utility cs-validation-icon {
985
+ font-size: 1rem;
986
+ line-height: 1;
987
+ }
988
+
989
+ @utility cs-input-error {
990
+ border-color: var(--cs-danger, #ef4444) !important;
991
+ box-shadow: 0 0 0 3px
992
+ color-mix(in srgb, var(--cs-danger, #ef4444) 20%, transparent) !important;
993
+ }
994
+
995
+ @utility cs-input-success {
996
+ border-color: var(--cs-success, #22c55e) !important;
997
+ box-shadow: 0 0 0 3px
998
+ color-mix(in srgb, var(--cs-success, #22c55e) 20%, transparent) !important;
999
+ }
1000
+
1001
+ /* =========================================================
1002
+ INPUT GROUP UTILITIES
1003
+ ========================================================= */
1004
+
1005
+ /* Input Group Utilities */
1006
+ @utility cs-input-group {
1007
+ position: relative;
1008
+ display: flex;
1009
+ align-items: stretch;
1010
+ }
1011
+
1012
+ @utility cs-input-addon {
1013
+ display: flex;
1014
+ align-items: center;
1015
+ padding: 0 0.75rem;
1016
+ background: color-mix(in srgb, currentColor 5%, transparent);
1017
+ border: 1px solid var(--cs-form-border, #e5e7eb);
1018
+ color: var(--cs-text-muted, #6b7280);
1019
+ font-size: 0.875rem;
1020
+ }
1021
+
1022
+ @utility cs-input-addon-left {
1023
+ border-right: none;
1024
+ border-radius: var(--cs-form-radius, 8px) 0 0 var(--cs-form-radius, 8px);
1025
+ }
1026
+
1027
+ @utility cs-input-addon-right {
1028
+ border-left: none;
1029
+ border-radius: 0 var(--cs-form-radius, 8px) var(--cs-form-radius, 8px) 0;
1030
+ }
1031
+
1032
+ @utility cs-input-with-addon-left {
1033
+ border-radius: 0 var(--cs-form-radius, 8px) var(--cs-form-radius, 8px) 0;
1034
+ border-left: none;
1035
+ }
1036
+
1037
+ @utility cs-input-with-addon-right {
1038
+ border-radius: var(--cs-form-radius, 8px) 0 0 var(--cs-form-radius, 8px);
1039
+ border-right: none;
1040
+ }
1041
+
1042
+ /* =========================================================
1043
+ FORM LAYOUT UTILITIES
1044
+ ========================================================= */
1045
+
1046
+ /* Form Layout Utilities */
1047
+ @utility cs-form-row {
1048
+ display: flex;
1049
+ gap: var(--cs-space-4, 1rem);
1050
+ align-items: flex-start;
1051
+ }
1052
+
1053
+ @utility cs-form-col {
1054
+ flex: 1;
1055
+ min-width: 0;
1056
+ }
1057
+
1058
+ /* =========================================================
1059
+ FORM TOKEN UTILITIES
1060
+ Direct form token utilities from design system
1061
+ ========================================================= */
1062
+ @utility cs-form-bg {
1063
+ background-color: var(--cs-form-bg);
1064
+ }
1065
+ @utility cs-form-border {
1066
+ border-color: var(--cs-form-border);
1067
+ }
1068
+ @utility cs-form-radius {
1069
+ border-radius: var(--cs-form-radius);
1070
+ }
1071
+ @utility cs-form-shadow {
1072
+ box-shadow: var(--cs-form-shadow);
1073
+ }
1074
+ @utility cs-form-focus {
1075
+ border-color: var(--cs-form-focus);
1076
+ }
1077
+
1078
+ /* =========================================================
1079
+ INTEGRATED SYSTEMS - Complex feature systems
1080
+ ========================================================= */
1081
+
1082
+ /* Typography System - Prose, callouts, lead text */
1083
+ /* =========================================================
1084
+ TYPOGRAPHY SYSTEM
1085
+ ========================================================= */
1086
+
1087
+ /* Prose typography system */
1088
+ .cs-prose {
1089
+ color: var(--cs-prose-body);
1090
+ max-width: 65ch;
1091
+ line-height: 1.75;
1092
+ font-size: var(--cs-fs-md);
1093
+ }
1094
+
1095
+ .cs-prose h1,
1096
+ .cs-prose h2,
1097
+ .cs-prose h3,
1098
+ .cs-prose h4,
1099
+ .cs-prose h5,
1100
+ .cs-prose h6 {
1101
+ color: var(--cs-prose-headings);
1102
+ font-weight: 700;
1103
+ line-height: 1.25;
1104
+ margin-top: 2rem;
1105
+ margin-bottom: 0.75rem;
1106
+ }
1107
+
1108
+ .cs-prose h1 {
1109
+ font-size: var(--cs-fs-2xl);
1110
+ }
1111
+ .cs-prose h2 {
1112
+ font-size: var(--cs-fs-xl);
1113
+ }
1114
+ .cs-prose h3 {
1115
+ font-size: var(--cs-fs-lg);
1116
+ }
1117
+
1118
+ .cs-prose p {
1119
+ margin-bottom: 1.25rem;
1120
+ line-height: 1.7;
1121
+ }
1122
+
1123
+ .cs-prose a {
1124
+ color: var(--cs-prose-links);
1125
+ text-decoration: underline;
1126
+ text-underline-offset: 0.2em;
1127
+ }
1128
+
1129
+ .cs-prose a:hover {
1130
+ text-decoration: none;
1131
+ }
1132
+
1133
+ .cs-prose strong {
1134
+ color: var(--cs-prose-bold);
1135
+ font-weight: 600;
1136
+ }
1137
+
1138
+ .cs-prose ul,
1139
+ .cs-prose ol {
1140
+ margin-left: 1.5rem;
1141
+ margin-bottom: 1.25rem;
1142
+ }
1143
+
1144
+ .cs-prose li {
1145
+ margin-bottom: 0.5rem;
1146
+ }
1147
+
1148
+ .cs-prose blockquote {
1149
+ border-left: 4px solid var(--cs-border);
1150
+ padding-left: 1.5rem;
1151
+ margin: 1.5rem 0;
1152
+ font-style: italic;
1153
+ color: var(--cs-prose-quotes);
1154
+ }
1155
+
1156
+ .cs-prose code {
1157
+ background: color-mix(in srgb, currentColor 8%, transparent);
1158
+ padding: 0.25rem 0.375rem;
1159
+ border-radius: 0.25rem;
1160
+ font-size: 0.875em;
1161
+ font-family: var(--cs-font-mono);
1162
+ }
1163
+
1164
+ .cs-prose pre {
1165
+ background: var(--cs-elev1);
1166
+ padding: 1.25rem;
1167
+ border-radius: var(--cs-radius);
1168
+ overflow-x: auto;
1169
+ margin: 1.5rem 0;
1170
+ }
1171
+
1172
+ .cs-prose pre code {
1173
+ background: none;
1174
+ padding: 0;
1175
+ }
1176
+
1177
+ .cs-callout {
1178
+ padding: var(--cs-space-4) var(--cs-space-6);
1179
+ border-radius: var(--cs-radius);
1180
+ border-left: 4px solid var(--cs-info);
1181
+ background: color-mix(in srgb, var(--cs-info) 5%, var(--cs-surface));
1182
+ color: var(--cs-text);
1183
+ margin: 1.5rem 0;
1184
+ }
1185
+
1186
+ .cs-callout.cs-callout-info {
1187
+ border-left-color: var(--cs-info);
1188
+ background: color-mix(in srgb, var(--cs-info) 5%, var(--cs-surface));
1189
+ }
1190
+
1191
+ .cs-callout.cs-callout-warning {
1192
+ border-left-color: var(--cs-warning);
1193
+ background: color-mix(in srgb, var(--cs-warning) 5%, var(--cs-surface));
1194
+ }
1195
+
1196
+ .cs-callout.cs-callout-danger {
1197
+ border-left-color: var(--cs-danger);
1198
+ background: color-mix(in srgb, var(--cs-danger) 5%, var(--cs-surface));
1199
+ }
1200
+
1201
+ .cs-callout.cs-callout-success {
1202
+ border-left-color: var(--cs-success);
1203
+ background: color-mix(in srgb, var(--cs-success) 5%, var(--cs-surface));
1204
+ }
1205
+
1206
+ .cs-lead {
1207
+ font-size: var(--cs-fs-lg);
1208
+ line-height: 1.6;
1209
+ color: var(--cs-text-muted);
1210
+ }
1211
+
1212
+ /* =========================================================
1213
+ FLUID TYPOGRAPHY UTILITIES
1214
+ Responsive typography using CSS clamp()
1215
+ ========================================================= */
1216
+ @utility cs-fs-xs {
1217
+ font-size: var(--cs-fs-xs);
1218
+ }
1219
+ @utility cs-fs-sm {
1220
+ font-size: var(--cs-fs-sm);
1221
+ }
1222
+ @utility cs-fs-md {
1223
+ font-size: var(--cs-fs-md);
1224
+ }
1225
+ @utility cs-fs-lg {
1226
+ font-size: var(--cs-fs-lg);
1227
+ }
1228
+ @utility cs-fs-xl {
1229
+ font-size: var(--cs-fs-xl);
1230
+ }
1231
+ @utility cs-fs-2xl {
1232
+ font-size: var(--cs-fs-2xl);
1233
+ }
1234
+
1235
+ /* Line Height utilities */
1236
+ @utility cs-leading-relaxed {
1237
+ line-height: var(--cs-leading-relaxed);
1238
+ }
1239
+ @utility cs-leading-loose {
1240
+ line-height: var(--cs-leading-loose);
1241
+ }
1242
+
1243
+ /* Text Balance utility */
1244
+ @utility cs-text-balance {
1245
+ text-wrap: var(--cs-text-balance);
1246
+ }
1247
+
1248
+ /* Navigation System - Navbar, links, brand */
1249
+ /* =========================================================
1250
+ NAVIGATION SYSTEM
1251
+ ========================================================= */
1252
+
1253
+ @utility cs-navbar {
1254
+ position: relative;
1255
+ z-index: var(--cs-z-40, 40);
1256
+ display: flex;
1257
+ align-items: center;
1258
+ justify-content: space-between;
1259
+ gap: 0.5rem;
1260
+ padding: 0.75rem 1rem;
1261
+ background-color: var(--cs-surface, #ffffff);
1262
+ border-bottom: 1px solid var(--cs-border, #e5e7eb);
1263
+ transition: var(--cs-transition, 180ms ease);
1264
+ }
1265
+
1266
+ @utility cs-navbar-brand {
1267
+ display: inline-block;
1268
+ padding: 0.3125rem 0;
1269
+ margin-right: 1rem;
1270
+ font-size: 1.25rem;
1271
+ font-weight: 600;
1272
+ line-height: 1.2;
1273
+ white-space: nowrap;
1274
+ text-decoration: none;
1275
+ color: var(--cs-text, #111827);
1276
+
1277
+ &:hover {
1278
+ text-decoration: none;
1279
+ }
1280
+ }
1281
+
1282
+ @utility cs-navbar-nav {
1283
+ display: flex;
1284
+ align-items: center;
1285
+ gap: 0.5rem;
1286
+ margin: 0;
1287
+ padding: 0;
1288
+ list-style: none;
1289
+ }
1290
+
1291
+ @utility cs-navbar-link {
1292
+ display: inline-block;
1293
+ padding: 0.75rem 1rem;
1294
+ color: var(--cs-text-muted, #6b7280);
1295
+ text-decoration: none;
1296
+ font-weight: 500;
1297
+ border-radius: 0.375rem;
1298
+ transition: var(--cs-transition, 180ms ease);
1299
+
1300
+ &:hover {
1301
+ color: var(--cs-text);
1302
+ background-color: color-mix(in srgb, currentColor 8%, transparent);
1303
+ text-decoration: none;
1304
+ }
1305
+
1306
+ &.active {
1307
+ color: var(--cs-brand);
1308
+ background-color: color-mix(in srgb, var(--cs-brand) 10%, transparent);
1309
+ }
1310
+ }
1311
+
1312
+ /* Gradient System - CASOON signature gradients */
1313
+ /* =========================================================
1314
+ COMPREHENSIVE GRADIENT SYSTEM - Complete Collection
1315
+ ========================================================= */
1316
+
1317
+ /* =========================================================
1318
+ Core Gradient Background Utilities
1319
+ ========================================================= */
1320
+
1321
+ @utility cs-gradient-sunset {
1322
+ background: linear-gradient(
1323
+ 135deg,
1324
+ var(--cs-gradient-sunset-start),
1325
+ var(--cs-gradient-sunset-mid, var(--cs-gradient-sunset-end)),
1326
+ var(--cs-gradient-sunset-end)
1327
+ );
1328
+ }
1329
+
1330
+ @utility cs-gradient-ocean {
1331
+ background: linear-gradient(
1332
+ 135deg,
1333
+ var(--cs-gradient-ocean-start),
1334
+ var(--cs-gradient-ocean-end)
1335
+ );
1336
+ }
1337
+
1338
+ @utility cs-gradient-fire {
1339
+ background: linear-gradient(
1340
+ 135deg,
1341
+ var(--cs-gradient-fire-start),
1342
+ var(--cs-gradient-fire-end)
1343
+ );
1344
+ }
1345
+
1346
+ @utility cs-gradient-mint {
1347
+ background: linear-gradient(
1348
+ 135deg,
1349
+ var(--cs-gradient-mint-start),
1350
+ var(--cs-gradient-mint-end)
1351
+ );
1352
+ }
1353
+
1354
+ @utility cs-gradient-purple {
1355
+ background: linear-gradient(
1356
+ 135deg,
1357
+ var(--cs-gradient-purple-start),
1358
+ var(--cs-gradient-purple-end)
1359
+ );
1360
+ }
1361
+
1362
+ @utility cs-gradient-orange {
1363
+ background: linear-gradient(
1364
+ 135deg,
1365
+ var(--cs-gradient-orange-start),
1366
+ var(--cs-gradient-orange-end)
1367
+ );
1368
+ }
1369
+
1370
+ @utility cs-gradient-blue {
1371
+ background: linear-gradient(
1372
+ 135deg,
1373
+ var(--cs-gradient-blue-start),
1374
+ var(--cs-gradient-blue-end)
1375
+ );
1376
+ }
1377
+
1378
+ @utility cs-gradient-pink {
1379
+ background: linear-gradient(
1380
+ 135deg,
1381
+ var(--cs-gradient-pink-start),
1382
+ var(--cs-gradient-pink-end)
1383
+ );
1384
+ }
1385
+
1386
+ /* Custom gradient variants - 2-stop and 3-stop */
1387
+ @utility cs-gradient-custom-2 {
1388
+ background: linear-gradient(
1389
+ 135deg,
1390
+ var(--cs-gradient-custom-start),
1391
+ var(--cs-gradient-custom-end)
1392
+ );
1393
+ }
1394
+
1395
+ @utility cs-gradient-custom {
1396
+ background: linear-gradient(
1397
+ 135deg,
1398
+ var(--cs-gradient-custom-start),
1399
+ var(--cs-gradient-custom-mid, var(--cs-gradient-custom-end)),
1400
+ var(--cs-gradient-custom-end)
1401
+ );
1402
+ }
1403
+
1404
+ @utility cs-gradient-custom-3 {
1405
+ background: linear-gradient(
1406
+ 135deg,
1407
+ var(--cs-gradient-custom-start),
1408
+ var(--cs-gradient-custom-mid, var(--cs-gradient-custom-end)),
1409
+ var(--cs-gradient-custom-end)
1410
+ );
1411
+ }
1412
+
1413
+ /* =========================================================
1414
+ Directional Fade Gradients
1415
+ ========================================================= */
1416
+
1417
+ /* Basic directional fades */
1418
+ @utility cs-gradient-fade-r {
1419
+ background: linear-gradient(
1420
+ to right,
1421
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1422
+ var(--cs-gradient-fade-mid, rgba(79, 124, 255, 0.3)) 50%,
1423
+ transparent 100%
1424
+ );
1425
+ }
1426
+
1427
+ @utility cs-gradient-fade-l {
1428
+ background: linear-gradient(
1429
+ to left,
1430
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1431
+ var(--cs-gradient-fade-mid, rgba(79, 124, 255, 0.3)) 50%,
1432
+ transparent 100%
1433
+ );
1434
+ }
1435
+
1436
+ @utility cs-gradient-fade-b {
1437
+ background: linear-gradient(
1438
+ to bottom,
1439
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1440
+ var(--cs-gradient-fade-mid, rgba(79, 124, 255, 0.3)) 50%,
1441
+ transparent 100%
1442
+ );
1443
+ }
1444
+
1445
+ @utility cs-gradient-fade-t {
1446
+ background: linear-gradient(
1447
+ to top,
1448
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1449
+ var(--cs-gradient-fade-mid, rgba(79, 124, 255, 0.3)) 50%,
1450
+ transparent 100%
1451
+ );
1452
+ }
1453
+
1454
+ /* Diagonal fade variants */
1455
+ @utility cs-gradient-fade-br {
1456
+ background: linear-gradient(
1457
+ to bottom right,
1458
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1459
+ transparent 100%
1460
+ );
1461
+ }
1462
+
1463
+ @utility cs-gradient-fade-bl {
1464
+ background: linear-gradient(
1465
+ to bottom left,
1466
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1467
+ transparent 100%
1468
+ );
1469
+ }
1470
+
1471
+ @utility cs-gradient-fade-tr {
1472
+ background: linear-gradient(
1473
+ to top right,
1474
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1475
+ transparent 100%
1476
+ );
1477
+ }
1478
+
1479
+ @utility cs-gradient-fade-tl {
1480
+ background: linear-gradient(
1481
+ to top left,
1482
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1483
+ transparent 100%
1484
+ );
1485
+ }
1486
+
1487
+ /* Intensity variants for fade gradients */
1488
+ @utility cs-gradient-fade-subtle {
1489
+ --cs-gradient-fade-color: rgba(79, 124, 255, 0.3);
1490
+ --cs-gradient-fade-mid: rgba(79, 124, 255, 0.1);
1491
+ }
1492
+
1493
+ @utility cs-gradient-fade-medium {
1494
+ --cs-gradient-fade-color: rgba(79, 124, 255, 0.6);
1495
+ --cs-gradient-fade-mid: rgba(79, 124, 255, 0.3);
1496
+ }
1497
+
1498
+ @utility cs-gradient-fade-strong {
1499
+ --cs-gradient-fade-color: rgba(79, 124, 255, 0.8);
1500
+ --cs-gradient-fade-mid: rgba(79, 124, 255, 0.5);
1501
+ }
1502
+
1503
+ /* Smooth fade with color-mix support */
1504
+ @utility cs-gradient-fade-smooth {
1505
+ background: linear-gradient(
1506
+ 135deg,
1507
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1508
+ transparent 100%
1509
+ );
1510
+
1511
+ @supports (background: color-mix(in srgb, red 50%, transparent)) {
1512
+ background: linear-gradient(
1513
+ 135deg,
1514
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1515
+ color-mix(
1516
+ in srgb,
1517
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 30%,
1518
+ transparent
1519
+ )
1520
+ 60%,
1521
+ transparent 100%
1522
+ );
1523
+ }
1524
+ }
1525
+
1526
+ /* =========================================================
1527
+ Radial Gradient Utilities
1528
+ ========================================================= */
1529
+
1530
+ @utility cs-gradient-radial-fade {
1531
+ background: radial-gradient(
1532
+ circle at center,
1533
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1534
+ var(--cs-gradient-fade-mid, rgba(79, 124, 255, 0.2)) 40%,
1535
+ transparent 70%
1536
+ );
1537
+ }
1538
+
1539
+ @utility cs-gradient-radial-fade-tl {
1540
+ background: radial-gradient(
1541
+ circle at top left,
1542
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1543
+ transparent 60%
1544
+ );
1545
+ }
1546
+
1547
+ @utility cs-gradient-radial-fade-tr {
1548
+ background: radial-gradient(
1549
+ circle at top right,
1550
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1551
+ transparent 60%
1552
+ );
1553
+ }
1554
+
1555
+ @utility cs-gradient-radial-fade-bl {
1556
+ background: radial-gradient(
1557
+ circle at bottom left,
1558
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1559
+ transparent 60%
1560
+ );
1561
+ }
1562
+
1563
+ @utility cs-gradient-radial-fade-br {
1564
+ background: radial-gradient(
1565
+ circle at bottom right,
1566
+ var(--cs-gradient-fade-color, rgba(79, 124, 255, 0.6)) 0%,
1567
+ transparent 60%
1568
+ );
1569
+ }
1570
+
1571
+ @utility cs-gradient-radial-center {
1572
+ background: radial-gradient(circle at center, var(--cs-gradient-stops));
1573
+ }
1574
+
1575
+ @utility cs-gradient-radial-top {
1576
+ background: radial-gradient(circle at top, var(--cs-gradient-stops));
1577
+ }
1578
+
1579
+ @utility cs-gradient-radial-bottom {
1580
+ background: radial-gradient(circle at bottom, var(--cs-gradient-stops));
1581
+ }
1582
+
1583
+ /* =========================================================
1584
+ Conic Gradient Utilities
1585
+ ========================================================= */
1586
+
1587
+ @utility cs-gradient-conic {
1588
+ background: conic-gradient(var(--cs-gradient-stops));
1589
+ }
1590
+
1591
+ @utility cs-gradient-conic-center {
1592
+ background: conic-gradient(from 0deg at 50% 50%, var(--cs-gradient-stops));
1593
+ }
1594
+
1595
+ /* =========================================================
1596
+ Mesh Gradient (Multi-layer System)
1597
+ ========================================================= */
1598
+
1599
+ @utility cs-gradient-mesh {
1600
+ background:
1601
+ radial-gradient(
1602
+ at 27% 37%,
1603
+ color-mix(in srgb, var(--cs-brand) 50%, transparent) 0px,
1604
+ transparent 50%
1605
+ ),
1606
+ radial-gradient(
1607
+ at 97% 21%,
1608
+ color-mix(in srgb, var(--cs-info) 50%, transparent) 0px,
1609
+ transparent 50%
1610
+ ),
1611
+ radial-gradient(
1612
+ at 52% 99%,
1613
+ color-mix(in srgb, var(--cs-success) 50%, transparent) 0px,
1614
+ transparent 50%
1615
+ ),
1616
+ radial-gradient(
1617
+ at 10% 29%,
1618
+ color-mix(in srgb, var(--cs-warning) 50%, transparent) 0px,
1619
+ transparent 50%
1620
+ ),
1621
+ radial-gradient(
1622
+ at 97% 96%,
1623
+ color-mix(in srgb, var(--cs-danger) 50%, transparent) 0px,
1624
+ transparent 50%
1625
+ ),
1626
+ radial-gradient(
1627
+ at 33% 50%,
1628
+ color-mix(in srgb, var(--cs-brand) 50%, transparent) 0px,
1629
+ transparent 50%
1630
+ ),
1631
+ radial-gradient(
1632
+ at 79% 53%,
1633
+ color-mix(in srgb, var(--cs-info) 50%, transparent) 0px,
1634
+ transparent 50%
1635
+ );
1636
+ }
1637
+
1638
+ /* =========================================================
1639
+ CASOON SIGNATURE GRADIENT PRESETS
1640
+ ========================================================= */
1641
+
1642
+ /* CASOON Original - Your signature gradient */
1643
+ @utility cs-bg-casoon-original {
1644
+ background:
1645
+ radial-gradient(circle at 20% 80%, #1e40af 0%, transparent 50%),
1646
+ radial-gradient(circle at 80% 20%, #0891b2 0%, transparent 50%),
1647
+ radial-gradient(circle at 40% 40%, #f97316 0%, transparent 50%),
1648
+ linear-gradient(135deg, #0f172a, #1e293b);
1649
+ }
1650
+
1651
+ /* CASOON Theme Variations */
1652
+ @utility cs-bg-casoon-warm {
1653
+ background:
1654
+ radial-gradient(circle at 25% 75%, #dc2626 0%, transparent 55%),
1655
+ radial-gradient(circle at 75% 25%, #f59e0b 0%, transparent 45%),
1656
+ radial-gradient(circle at 50% 50%, #ea580c 0%, transparent 60%),
1657
+ linear-gradient(135deg, #1f2937, #374151);
1658
+ }
1659
+
1660
+ @utility cs-bg-casoon-cool {
1661
+ background:
1662
+ radial-gradient(circle at 30% 70%, #3b82f6 0%, transparent 50%),
1663
+ radial-gradient(circle at 70% 30%, #06b6d4 0%, transparent 55%),
1664
+ radial-gradient(circle at 45% 45%, #8b5cf6 0%, transparent 45%),
1665
+ linear-gradient(135deg, #111827, #1f2937);
1666
+ }
1667
+
1668
+ @utility cs-bg-casoon-forest {
1669
+ background:
1670
+ radial-gradient(circle at 15% 85%, #059669 0%, transparent 50%),
1671
+ radial-gradient(circle at 85% 15%, #10b981 0%, transparent 60%),
1672
+ radial-gradient(circle at 55% 35%, #065f46 0%, transparent 40%),
1673
+ linear-gradient(135deg, #064e3b, #134e4a);
1674
+ }
1675
+
1676
+ /* CASOON Utility Variants */
1677
+ @utility cs-bg-casoon-animated {
1678
+ background:
1679
+ radial-gradient(circle at 20% 80%, #1e40af 0%, transparent 50%),
1680
+ radial-gradient(circle at 80% 20%, #0891b2 0%, transparent 50%),
1681
+ radial-gradient(circle at 40% 40%, #f97316 0%, transparent 50%),
1682
+ linear-gradient(135deg, #0f172a, #1e293b);
1683
+ background-size: 400% 400%;
1684
+ animation: cs-gradient-shift 8s ease-in-out infinite;
1685
+ }
1686
+
1687
+ @utility cs-bg-casoon-subtle {
1688
+ background:
1689
+ radial-gradient(circle at 20% 80%, #1e40af 0%, transparent 50%),
1690
+ radial-gradient(circle at 80% 20%, #0891b2 0%, transparent 50%),
1691
+ radial-gradient(circle at 40% 40%, #f97316 0%, transparent 50%),
1692
+ linear-gradient(135deg, #0f172a, #1e293b);
1693
+ filter: brightness(0.8) saturate(0.7) opacity(0.9);
1694
+ }
1695
+
1696
+ @utility cs-bg-casoon-intense {
1697
+ background:
1698
+ radial-gradient(circle at 20% 80%, #1e40af 0%, transparent 50%),
1699
+ radial-gradient(circle at 80% 20%, #0891b2 0%, transparent 50%),
1700
+ radial-gradient(circle at 40% 40%, #f97316 0%, transparent 50%),
1701
+ linear-gradient(135deg, #0f172a, #1e293b);
1702
+ filter: brightness(1.2) saturate(1.3) contrast(1.1);
1703
+ }
1704
+
1705
+ /* =========================================================
1706
+ ADDITIONAL SIGNATURE PRESETS
1707
+ ========================================================= */
1708
+
1709
+ @utility cs-bg-nebula-purple {
1710
+ background:
1711
+ radial-gradient(circle at 20% 20%, #8b5cf6 0%, transparent 70%),
1712
+ radial-gradient(circle at 80% 80%, #ec4899 0%, transparent 60%),
1713
+ radial-gradient(circle at 40% 60%, #3b82f6 0%, transparent 80%),
1714
+ linear-gradient(135deg, #0c0a1d, #1e1b3b);
1715
+ }
1716
+
1717
+ @utility cs-bg-deep-ocean {
1718
+ background:
1719
+ radial-gradient(circle at 25% 25%, #1e40af 0%, transparent 65%),
1720
+ radial-gradient(circle at 75% 75%, #0891b2 0%, transparent 55%),
1721
+ radial-gradient(circle at 50% 80%, #0e7490 0%, transparent 70%),
1722
+ linear-gradient(135deg, #0c1e3d, #164e63);
1723
+ }
1724
+
1725
+ @utility cs-bg-corporate-blue {
1726
+ background:
1727
+ radial-gradient(circle at 30% 30%, #1e40af 0%, transparent 70%),
1728
+ radial-gradient(circle at 70% 70%, #3b82f6 0%, transparent 60%),
1729
+ radial-gradient(circle at 50% 50%, #1d4ed8 0%, transparent 80%),
1730
+ linear-gradient(135deg, #1e3a8a, #1e40af);
1731
+ }
1732
+
1733
+ /* =========================================================
1734
+ GRADIENT TEXT UTILITIES
1735
+ ========================================================= */
1736
+
1737
+ @utility cs-gradient-text {
1738
+ -webkit-background-clip: text;
1739
+ background-clip: text;
1740
+ color: transparent;
1741
+ }
1742
+
1743
+ @utility cs-gradient-text-sunset {
1744
+ background: linear-gradient(
1745
+ 135deg,
1746
+ var(--cs-gradient-sunset-start),
1747
+ var(--cs-gradient-sunset-mid, var(--cs-gradient-sunset-end)),
1748
+ var(--cs-gradient-sunset-end)
1749
+ );
1750
+ -webkit-background-clip: text;
1751
+ background-clip: text;
1752
+ color: transparent;
1753
+ }
1754
+
1755
+ @utility cs-gradient-text-ocean {
1756
+ background: linear-gradient(
1757
+ 135deg,
1758
+ var(--cs-gradient-ocean-start),
1759
+ var(--cs-gradient-ocean-end)
1760
+ );
1761
+ -webkit-background-clip: text;
1762
+ background-clip: text;
1763
+ color: transparent;
1764
+ }
1765
+
1766
+ @utility cs-gradient-text-fire {
1767
+ background: linear-gradient(
1768
+ 135deg,
1769
+ var(--cs-gradient-fire-start),
1770
+ var(--cs-gradient-fire-end)
1771
+ );
1772
+ -webkit-background-clip: text;
1773
+ background-clip: text;
1774
+ color: transparent;
1775
+ }
1776
+
1777
+ @utility cs-gradient-text-custom-2 {
1778
+ background: linear-gradient(
1779
+ 135deg,
1780
+ var(--cs-gradient-custom-start),
1781
+ var(--cs-gradient-custom-end)
1782
+ );
1783
+ -webkit-background-clip: text;
1784
+ background-clip: text;
1785
+ color: transparent;
1786
+ }
1787
+
1788
+ @utility cs-gradient-text-custom {
1789
+ background: linear-gradient(
1790
+ 135deg,
1791
+ var(--cs-gradient-custom-start),
1792
+ var(--cs-gradient-custom-mid, var(--cs-gradient-custom-end)),
1793
+ var(--cs-gradient-custom-end)
1794
+ );
1795
+ -webkit-background-clip: text;
1796
+ background-clip: text;
1797
+ color: transparent;
1798
+ }
1799
+
1800
+ @utility cs-gradient-text-custom-3 {
1801
+ background: linear-gradient(
1802
+ 135deg,
1803
+ var(--cs-gradient-custom-start),
1804
+ var(--cs-gradient-custom-mid, var(--cs-gradient-custom-end)),
1805
+ var(--cs-gradient-custom-end)
1806
+ );
1807
+ -webkit-background-clip: text;
1808
+ background-clip: text;
1809
+ color: transparent;
1810
+ }
1811
+
1812
+ /* =========================================================
1813
+ GRADIENT ANIMATION UTILITIES
1814
+ ========================================================= */
1815
+
1816
+ @utility cs-gradient-animate {
1817
+ background-size: 400% 400%;
1818
+ animation: cs-gradient-shift var(--cs-anim-gradient-duration)
1819
+ var(--cs-anim-gradient-ease) var(--cs-anim-gradient-iteration);
1820
+ }
1821
+
1822
+ @utility cs-gradient-shift-x {
1823
+ background-size: 200% 100%;
1824
+ animation: cs-gradient-shift-x 3s linear infinite;
1825
+ }
1826
+
1827
+ @utility cs-gradient-shift-y {
1828
+ background-size: 100% 200%;
1829
+ animation: cs-gradient-shift-y 3s linear infinite;
1830
+ }
1831
+
1832
+ @utility cs-gradient-rotate {
1833
+ background-size: 200% 200%;
1834
+ animation: cs-gradient-rotate 8s linear infinite;
1835
+ }
1836
+
1837
+ @utility cs-gradient-pulse {
1838
+ animation: cs-gradient-pulse 2s ease-in-out infinite;
1839
+ transform-origin: center;
1840
+ }
1841
+
1842
+ @utility cs-gradient-pulse-slow {
1843
+ animation: cs-gradient-pulse-slow 4s ease-in-out infinite;
1844
+ }
1845
+
1846
+ @utility cs-gradient-breathe {
1847
+ animation: cs-gradient-breathe 3s ease-in-out infinite;
1848
+ transform-origin: center;
1849
+ }
1850
+
1851
+ @utility cs-gradient-wave {
1852
+ background-size:
1853
+ 300% 300%,
1854
+ 300% 300%;
1855
+ animation: cs-gradient-wave 6s ease-in-out infinite;
1856
+ }
1857
+
1858
+ @utility cs-gradient-shimmer {
1859
+ background-size: 200% 100%;
1860
+ animation: cs-gradient-shimmer 2s linear infinite;
1861
+ }
1862
+
1863
+ /* Speed and direction variants */
1864
+ @utility cs-gradient-animate-slow {
1865
+ animation-duration: 8s;
1866
+ }
1867
+
1868
+ @utility cs-gradient-animate-fast {
1869
+ animation-duration: 1.5s;
1870
+ }
1871
+
1872
+ @utility cs-gradient-animate-reverse {
1873
+ animation-direction: reverse;
1874
+ }
1875
+
1876
+ @utility cs-gradient-animate-alternate {
1877
+ animation-direction: alternate;
1878
+ }
1879
+
1880
+ @utility cs-gradient-animate-hover-pause {
1881
+ &:hover {
1882
+ animation-play-state: paused;
1883
+ }
1884
+ }
1885
+
1886
+ /* =========================================================
1887
+ ADVANCED GRADIENT EFFECTS
1888
+ ========================================================= */
1889
+
1890
+ @utility cs-gradient-shine {
1891
+ background: linear-gradient(
1892
+ 90deg,
1893
+ rgba(255, 255, 255, 0.05) 0%,
1894
+ rgba(255, 255, 255, 0.15) 50%,
1895
+ rgba(255, 255, 255, 0.05) 100%
1896
+ );
1897
+ background-size: 200% 100%;
1898
+ animation: cs-gradient-shine 3s linear infinite;
1899
+ }
1900
+
1901
+ @utility cs-hover-ripple {
1902
+ position: relative;
1903
+ overflow: hidden;
1904
+ isolation: isolate;
1905
+
1906
+ &::after {
1907
+ content: '';
1908
+ position: absolute;
1909
+ top: 50%;
1910
+ left: 50%;
1911
+ width: 200px;
1912
+ height: 200px;
1913
+ background: radial-gradient(
1914
+ circle,
1915
+ rgba(255, 255, 255, 0.4) 10%,
1916
+ transparent 80%
1917
+ );
1918
+ transform: translate(-50%, -50%) scale(0);
1919
+ opacity: 0;
1920
+ pointer-events: none;
1921
+ border-radius: 9999px;
1922
+ animation: none;
1923
+ z-index: 1;
1924
+ }
1925
+
1926
+ &:active::after {
1927
+ animation: cs-hover-ripple 0.6s ease-out;
1928
+ }
1929
+ }
1930
+
1931
+ @utility cs-gradient-ambient-rotate {
1932
+ background: conic-gradient(from 0deg, var(--cs-gradient-stops));
1933
+ animation: cs-ambient-rotate 20s linear infinite;
1934
+ }
1935
+
1936
+ @utility cs-gradient-zoom-fade {
1937
+ animation: cs-gradient-zoom-fade 800ms var(--cs-anim-ease-in-out) both;
1938
+ }
1939
+
1940
+ /* =========================================================
1941
+ GRADIENT BORDER COMPONENT
1942
+ ========================================================= */
1943
+
1944
+ @utility cs-gradient-border {
1945
+ position: relative;
1946
+ border-radius: 0.5rem;
1947
+ background: linear-gradient(
1948
+ 135deg,
1949
+ var(--cs-gradient-ocean-start),
1950
+ var(--cs-gradient-ocean-end)
1951
+ );
1952
+
1953
+ &::before {
1954
+ content: '';
1955
+ position: absolute;
1956
+ inset: 1px;
1957
+ background: var(--cs-gradient-white);
1958
+ border-radius: calc(0.5rem - 1px);
1959
+ z-index: 0;
1960
+ }
1961
+
1962
+ & > * {
1963
+ position: relative;
1964
+ z-index: 1;
1965
+ }
1966
+ }
1967
+
1968
+ /* =========================================================
1969
+ ANIMATION KEYFRAMES
1970
+ ========================================================= */
1971
+
1972
+ @keyframes cs-gradient-shift {
1973
+ 0%,
1974
+ 100% {
1975
+ background-position: 0% 50%;
1976
+ }
1977
+ 50% {
1978
+ background-position: 100% 50%;
1979
+ }
1980
+ }
1981
+
1982
+ @keyframes cs-gradient-shift-x {
1983
+ 0% {
1984
+ background-position: 0% 50%;
1985
+ }
1986
+ 100% {
1987
+ background-position: 100% 50%;
1988
+ }
1989
+ }
1990
+
1991
+ @keyframes cs-gradient-shift-y {
1992
+ 0% {
1993
+ background-position: 50% 0%;
1994
+ }
1995
+ 100% {
1996
+ background-position: 50% 100%;
1997
+ }
1998
+ }
1999
+
2000
+ @keyframes cs-gradient-rotate {
2001
+ 0% {
2002
+ background-position: 0% 0%;
2003
+ }
2004
+ 25% {
2005
+ background-position: 100% 0%;
2006
+ }
2007
+ 50% {
2008
+ background-position: 100% 100%;
2009
+ }
2010
+ 75% {
2011
+ background-position: 0% 100%;
2012
+ }
2013
+ 100% {
2014
+ background-position: 0% 0%;
2015
+ }
2016
+ }
2017
+
2018
+ @keyframes cs-gradient-pulse {
2019
+ 0%,
2020
+ 100% {
2021
+ opacity: 0.6;
2022
+ transform: scale(1);
2023
+ }
2024
+ 50% {
2025
+ opacity: 1;
2026
+ transform: scale(1.05);
2027
+ }
2028
+ }
2029
+
2030
+ @keyframes cs-gradient-pulse-slow {
2031
+ 0%,
2032
+ 100% {
2033
+ opacity: 0.4;
2034
+ }
2035
+ 50% {
2036
+ opacity: 0.9;
2037
+ }
2038
+ }
2039
+
2040
+ @keyframes cs-gradient-breathe {
2041
+ 0%,
2042
+ 100% {
2043
+ filter: brightness(0.8) saturate(1.2);
2044
+ transform: scale(1);
2045
+ }
2046
+ 50% {
2047
+ filter: brightness(1.2) saturate(1.8);
2048
+ transform: scale(1.02);
2049
+ }
2050
+ }
2051
+
2052
+ @keyframes cs-gradient-wave {
2053
+ 0% {
2054
+ background-position:
2055
+ 0% 50%,
2056
+ 100% 50%;
2057
+ }
2058
+ 25% {
2059
+ background-position:
2060
+ 50% 0%,
2061
+ 50% 100%;
2062
+ }
2063
+ 50% {
2064
+ background-position:
2065
+ 100% 50%,
2066
+ 0% 50%;
2067
+ }
2068
+ 75% {
2069
+ background-position:
2070
+ 50% 100%,
2071
+ 50% 0%;
2072
+ }
2073
+ 100% {
2074
+ background-position:
2075
+ 0% 50%,
2076
+ 100% 50%;
2077
+ }
2078
+ }
2079
+
2080
+ @keyframes cs-gradient-shimmer {
2081
+ 0% {
2082
+ background-position: -200% 0;
2083
+ }
2084
+ 100% {
2085
+ background-position: 200% 0;
2086
+ }
2087
+ }
2088
+
2089
+ @keyframes cs-gradient-shine {
2090
+ 0% {
2091
+ background-position: -200% 0;
2092
+ }
2093
+ 100% {
2094
+ background-position: 200% 0;
2095
+ }
2096
+ }
2097
+
2098
+ @keyframes cs-hover-ripple {
2099
+ 0% {
2100
+ transform: translate(-50%, -50%) scale(0);
2101
+ opacity: 0.8;
2102
+ }
2103
+ 100% {
2104
+ transform: translate(-50%, -50%) scale(2);
2105
+ opacity: 0;
2106
+ }
2107
+ }
2108
+
2109
+ @keyframes cs-ambient-rotate {
2110
+ 0% {
2111
+ transform: rotate(0deg);
2112
+ }
2113
+ 100% {
2114
+ transform: rotate(360deg);
2115
+ }
2116
+ }
2117
+
2118
+ @keyframes cs-gradient-zoom-fade {
2119
+ 0% {
2120
+ opacity: 0;
2121
+ transform: scale(1.05);
2122
+ }
2123
+ 100% {
2124
+ opacity: 1;
2125
+ transform: scale(1);
2126
+ }
2127
+ }
2128
+
2129
+ /* =========================================================
2130
+ ACCESSIBILITY & PERFORMANCE
2131
+ ========================================================= */
2132
+
2133
+ /* Reduced motion support */
2134
+ @media (prefers-reduced-motion: reduce) {
2135
+ .cs-bg-casoon-animated,
2136
+ .cs-gradient-animate,
2137
+ .cs-gradient-shift-x,
2138
+ .cs-gradient-shift-y,
2139
+ .cs-gradient-rotate,
2140
+ .cs-gradient-pulse,
2141
+ .cs-gradient-pulse-slow,
2142
+ .cs-gradient-breathe,
2143
+ .cs-gradient-wave,
2144
+ .cs-gradient-shimmer,
2145
+ .cs-gradient-shine,
2146
+ .cs-gradient-ambient-rotate,
2147
+ .cs-gradient-zoom-fade {
2148
+ animation: none !important;
2149
+ background-size: 100% 100% !important;
2150
+ }
2151
+
2152
+ .cs-hover-ripple::after {
2153
+ animation: none !important;
2154
+ }
2155
+ }
2156
+
2157
+ /* High contrast mode support */
2158
+ @media (prefers-contrast: high) {
2159
+ .cs-bg-casoon-original,
2160
+ .cs-bg-casoon-warm,
2161
+ .cs-bg-casoon-cool,
2162
+ .cs-bg-casoon-forest,
2163
+ .cs-bg-casoon-animated,
2164
+ .cs-bg-casoon-subtle,
2165
+ .cs-bg-casoon-intense {
2166
+ filter: contrast(1.5) brightness(1.2) !important;
2167
+ }
2168
+ }
2169
+
2170
+ /* High-contrast/forced colors mode for gradient border */
2171
+ @media (prefers-contrast: more) {
2172
+ .cs-gradient-border::before {
2173
+ outline: 1px solid currentColor;
2174
+ outline-offset: -1px;
2175
+ }
2176
+ }
2177
+
2178
+ @media (forced-colors: active) {
2179
+ .cs-gradient-border {
2180
+ forced-color-adjust: none;
2181
+ background: CanvasText;
2182
+ }
2183
+
2184
+ .cs-gradient-border::before {
2185
+ background: Canvas;
2186
+ border: 1px solid CanvasText;
2187
+ }
2188
+ }
2189
+
2190
+ /* Performance optimizations for mobile */
2191
+ @media (max-width: 480px) {
2192
+ .cs-gradient-animate {
2193
+ animation-duration: calc(var(--cs-anim-gradient-duration) * 1.25);
2194
+ }
2195
+ }
2196
+
2197
+ /* TEMPORARY: Remaining systems inline until extracted */
2198
+
2199
+ /* SCROLL SYSTEM */
2200
+ @utility cs-scrollbar-thin {
2201
+ scrollbar-width: thin;
2202
+ scrollbar-color: color-mix(in srgb, currentColor 20%, transparent) transparent;
2203
+
2204
+ &::-webkit-scrollbar {
2205
+ width: 8px;
2206
+ height: 8px;
2207
+ }
2208
+
2209
+ &::-webkit-scrollbar-track {
2210
+ background: transparent;
2211
+ }
2212
+
2213
+ &::-webkit-scrollbar-thumb {
2214
+ background: color-mix(in srgb, currentColor 20%, transparent);
2215
+ border-radius: 4px;
2216
+
2217
+ &:hover {
2218
+ background: color-mix(in srgb, currentColor 35%, transparent);
2219
+ }
2220
+ }
2221
+
2222
+ &::-webkit-scrollbar-corner {
2223
+ background: transparent;
2224
+ }
2225
+ }
2226
+
2227
+ @utility cs-scrollbar-custom {
2228
+ scrollbar-width: auto;
2229
+ scrollbar-color: var(--cs-brand)
2230
+ color-mix(in srgb, var(--cs-brand) 10%, transparent);
2231
+
2232
+ &::-webkit-scrollbar {
2233
+ width: 12px;
2234
+ height: 12px;
2235
+ }
2236
+
2237
+ &::-webkit-scrollbar-track {
2238
+ background: color-mix(in srgb, var(--cs-brand) 5%, transparent);
2239
+ border-radius: 6px;
2240
+ }
2241
+
2242
+ &::-webkit-scrollbar-thumb {
2243
+ background: var(--cs-brand);
2244
+ border-radius: 6px;
2245
+ border: 2px solid color-mix(in srgb, var(--cs-brand) 5%, transparent);
2246
+
2247
+ &:hover {
2248
+ background: color-mix(in srgb, var(--cs-brand) 85%, #000);
2249
+ }
2250
+ }
2251
+ }
2252
+
2253
+ @utility cs-scroll-snap-x {
2254
+ scroll-snap-type: x mandatory;
2255
+ overflow-x: auto;
2256
+ overscroll-behavior-x: contain;
2257
+ }
2258
+
2259
+ @utility cs-scroll-snap-y {
2260
+ scroll-snap-type: y mandatory;
2261
+ overflow-y: auto;
2262
+ overscroll-behavior-y: contain;
2263
+ }
2264
+
2265
+ @utility cs-snap-start {
2266
+ scroll-snap-align: start;
2267
+ }
2268
+ @utility cs-snap-center {
2269
+ scroll-snap-align: center;
2270
+ }
2271
+ @utility cs-snap-end {
2272
+ scroll-snap-align: end;
2273
+ }
2274
+ @utility cs-scroll-smooth {
2275
+ scroll-behavior: smooth;
2276
+ }
2277
+
2278
+ /* LOADING SYSTEM */
2279
+ @utility cs-spinner {
2280
+ width: 1.5rem;
2281
+ height: 1.5rem;
2282
+ border: 2px solid color-mix(in srgb, currentColor 20%, transparent);
2283
+ border-radius: 50%;
2284
+ border-top-color: currentColor;
2285
+ animation: cs-spin 0.8s linear infinite;
2286
+ }
2287
+
2288
+ @utility cs-spinner-lg {
2289
+ width: 2rem;
2290
+ height: 2rem;
2291
+ border-width: 3px;
2292
+ }
2293
+
2294
+ @utility cs-spinner-sm {
2295
+ width: 1rem;
2296
+ height: 1rem;
2297
+ border-width: 2px;
2298
+ }
2299
+
2300
+ @keyframes cs-spin {
2301
+ to {
2302
+ transform: rotate(360deg);
2303
+ }
2304
+ }
2305
+
2306
+ @utility cs-pulse {
2307
+ animation: cs-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2308
+ }
2309
+
2310
+ @keyframes cs-pulse {
2311
+ 0%,
2312
+ 100% {
2313
+ opacity: 1;
2314
+ }
2315
+ 50% {
2316
+ opacity: 0.5;
2317
+ }
2318
+ }
2319
+
2320
+ @utility cs-skeleton {
2321
+ background: linear-gradient(
2322
+ 90deg,
2323
+ color-mix(in srgb, currentColor 10%, transparent) 0%,
2324
+ color-mix(in srgb, currentColor 18%, transparent) 50%,
2325
+ color-mix(in srgb, currentColor 10%, transparent) 100%
2326
+ );
2327
+ background-size: 200% 100%;
2328
+ animation: cs-skeleton 1.5s ease-in-out infinite;
2329
+ border-radius: 0.375rem;
2330
+ }
2331
+
2332
+ @keyframes cs-skeleton {
2333
+ 0% {
2334
+ background-position: 200% 0;
2335
+ }
2336
+ 100% {
2337
+ background-position: -200% 0;
2338
+ }
2339
+ }
2340
+
2341
+ /* MICRO INTERACTIONS */
2342
+ @utility cs-hover-lift {
2343
+ transition: transform var(--cs-transition);
2344
+
2345
+ &:hover {
2346
+ transform: translateY(-2px);
2347
+ }
2348
+ }
2349
+
2350
+ @utility cs-hover-scale {
2351
+ transition: transform var(--cs-transition);
2352
+
2353
+ &:hover {
2354
+ transform: scale(1.02);
2355
+ }
2356
+ }
2357
+
2358
+ @utility cs-hover-glow {
2359
+ transition: box-shadow var(--cs-transition);
2360
+
2361
+ &:hover {
2362
+ box-shadow: 0 8px 25px color-mix(in srgb, var(--cs-brand) 25%, transparent);
2363
+ }
2364
+ }
2365
+
2366
+ @utility cs-interactive {
2367
+ transition: all var(--cs-transition);
2368
+ cursor: pointer;
2369
+
2370
+ &:hover {
2371
+ transform: translateY(-1px);
2372
+ box-shadow: 0 4px 12px color-mix(in srgb, currentColor 15%, transparent);
2373
+ }
2374
+
2375
+ &:active {
2376
+ transform: translateY(0);
2377
+ box-shadow: 0 2px 4px color-mix(in srgb, currentColor 20%, transparent);
2378
+ }
2379
+ }
2380
+
2381
+ /* =========================================================
2382
+ RESPONSIVE & ACCESSIBILITY
2383
+ ========================================================= */
2384
+
2385
+ /* Print Optimizations */
2386
+ @media print {
2387
+ .cs-prose {
2388
+ color: black !important;
2389
+ }
2390
+
2391
+ .cs-navbar {
2392
+ display: none !important;
2393
+ }
2394
+
2395
+ .cs-card {
2396
+ box-shadow: none !important;
2397
+ border: 1px solid #ccc !important;
2398
+ }
2399
+ }
2400
+
2401
+ /* Reduced Motion Preferences */
2402
+ @media (prefers-reduced-motion: reduce) {
2403
+ * {
2404
+ animation-duration: 0.01ms !important;
2405
+ animation-iteration-count: 1 !important;
2406
+ transition-duration: 0.01ms !important;
2407
+ scroll-behavior: auto !important;
2408
+ }
2409
+ }