@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/LICENSE +21 -0
- package/README.md +271 -0
- package/dist/animations.css +1873 -0
- package/dist/core.css +2409 -0
- package/dist/glass.css +1208 -0
- package/dist/index.css +29 -0
- package/dist/orbs.css +1578 -0
- package/dist/utilities.css +1410 -0
- package/package.json +54 -0
|
@@ -0,0 +1,1410 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* CASOON Atlas Utilities - Comprehensive Utility System 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
|
+
* Complete utility system with modern design tokens
|
|
9
|
+
* Part of CASOON Atlas UI effects library
|
|
10
|
+
*
|
|
11
|
+
* Usage: @import "@casoon/atlas-styles/utilities";
|
|
12
|
+
* Package: @casoon/atlas-styles
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* Note: @import "tailwindcss"; should be added by the consumer */
|
|
16
|
+
|
|
17
|
+
/*!
|
|
18
|
+
* CASOON Atlas Utilities - Complete Utility System for Tailwind v4
|
|
19
|
+
* TOTAL: 8 CSS FILES → Pure Tailwind v4 (120+ classes + 80+ @utility)
|
|
20
|
+
*
|
|
21
|
+
* Features:
|
|
22
|
+
* ✅ Tree-Shaking Support with @utility directives
|
|
23
|
+
* ✅ Modern Design System with comprehensive tokens
|
|
24
|
+
* ✅ Accessibility-first components and utilities
|
|
25
|
+
* ✅ Progressive Enhancement & Fallbacks
|
|
26
|
+
* ✅ Container Queries & Responsive Design
|
|
27
|
+
* ✅ Performance optimized with reduced motion support
|
|
28
|
+
* ✅ SSR-safe, tree-shakeable, framework-agnostic
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/* Note: @import "tailwindcss"; should be added by the consumer */
|
|
32
|
+
|
|
33
|
+
/* =========================================================
|
|
34
|
+
CONSOLIDATED DESIGN TOKENS & THEME
|
|
35
|
+
Complete design system with light/dark theme support
|
|
36
|
+
========================================================= */
|
|
37
|
+
@theme {
|
|
38
|
+
/* === CORE COLOR SYSTEM === */
|
|
39
|
+
--cs-bg: #0b0c0f;
|
|
40
|
+
--cs-surface: #14161a;
|
|
41
|
+
--cs-elev1: #1b1e24;
|
|
42
|
+
--cs-elev2: #21252d;
|
|
43
|
+
--cs-text: #eef1f6;
|
|
44
|
+
--cs-text-muted: #b6bfcc;
|
|
45
|
+
--cs-border: #2a2f39;
|
|
46
|
+
--cs-brand: #4f7cff;
|
|
47
|
+
--cs-brand-contrast: #0b0d12;
|
|
48
|
+
--cs-brand-ink: var(--cs-brand-contrast);
|
|
49
|
+
|
|
50
|
+
/* STATE COLORS */
|
|
51
|
+
--cs-success: #22c55e;
|
|
52
|
+
--cs-warning: #f59e0b;
|
|
53
|
+
--cs-danger: #ef4444;
|
|
54
|
+
--cs-info: #06b6d4;
|
|
55
|
+
|
|
56
|
+
/* === TYPOGRAPHY SYSTEM === */
|
|
57
|
+
--cs-font-sans:
|
|
58
|
+
ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Inter,
|
|
59
|
+
'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif;
|
|
60
|
+
--cs-font-mono:
|
|
61
|
+
ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
|
|
62
|
+
'Courier New', monospace;
|
|
63
|
+
--cs-font-size: 16px;
|
|
64
|
+
--cs-line: 1.5;
|
|
65
|
+
|
|
66
|
+
/* FLUID TYPOGRAPHY SCALE */
|
|
67
|
+
--cs-fs-xs: clamp(0.78rem, 0.75rem + 0.2cqi, 0.84rem);
|
|
68
|
+
--cs-fs-sm: clamp(0.88rem, 0.82rem + 0.3cqi, 0.95rem);
|
|
69
|
+
--cs-fs-md: clamp(1rem, 0.95rem + 0.4cqi, 1.125rem);
|
|
70
|
+
--cs-fs-lg: clamp(1.25rem, 1.05rem + 0.8cqi, 1.5rem);
|
|
71
|
+
--cs-fs-xl: clamp(1.5rem, 1.2rem + 1.2cqi, 1.875rem);
|
|
72
|
+
--cs-fs-2xl: clamp(1.875rem, 1.4rem + 1.6cqi, 2.25rem);
|
|
73
|
+
|
|
74
|
+
/* TYPOGRAPHY UTILITIES */
|
|
75
|
+
--cs-leading-relaxed: 1.625;
|
|
76
|
+
--cs-leading-loose: 2;
|
|
77
|
+
--cs-text-balance: balance;
|
|
78
|
+
|
|
79
|
+
/* === SPACING SYSTEM === */
|
|
80
|
+
--cs-density: 1;
|
|
81
|
+
--cs-space-1: calc(4px * var(--cs-density));
|
|
82
|
+
--cs-space-2: calc(8px * var(--cs-density));
|
|
83
|
+
--cs-space-3: calc(12px * var(--cs-density));
|
|
84
|
+
--cs-space-4: calc(16px * var(--cs-density));
|
|
85
|
+
--cs-space-6: calc(24px * var(--cs-density));
|
|
86
|
+
--cs-space-8: calc(32px * var(--cs-density));
|
|
87
|
+
|
|
88
|
+
/* === RADIUS & SHADOW SYSTEM === */
|
|
89
|
+
--cs-radius: 10px;
|
|
90
|
+
--cs-radius-sm: calc(var(--cs-radius) - 4px);
|
|
91
|
+
--cs-radius-lg: calc(var(--cs-radius) + 6px);
|
|
92
|
+
|
|
93
|
+
--cs-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px 1px rgba(0, 0, 0, 0.1);
|
|
94
|
+
--cs-shadow-2: 0 8px 24px rgba(0, 0, 0, 0.22), 0 2px 8px rgba(0, 0, 0, 0.18);
|
|
95
|
+
|
|
96
|
+
/* === MOTION SYSTEM === */
|
|
97
|
+
--cs-transition: 180ms cubic-bezier(0.2, 0.6, 0.2, 1);
|
|
98
|
+
--cs-anim-duration-sm: 160ms;
|
|
99
|
+
--cs-anim-duration-md: 280ms;
|
|
100
|
+
--cs-anim-duration-lg: 420ms;
|
|
101
|
+
--cs-anim-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
102
|
+
--cs-anim-ease-in: cubic-bezier(0.32, 0, 0.67, 0);
|
|
103
|
+
--cs-anim-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
|
|
104
|
+
|
|
105
|
+
/* === Z-INDEX SYSTEM === */
|
|
106
|
+
--cs-z-0: 0;
|
|
107
|
+
--cs-z-1: 1;
|
|
108
|
+
--cs-z-base: 1;
|
|
109
|
+
--cs-z-10: 10;
|
|
110
|
+
--cs-z-20: 20;
|
|
111
|
+
--cs-z-30: 30;
|
|
112
|
+
--cs-z-popover: 30;
|
|
113
|
+
--cs-z-40: 40;
|
|
114
|
+
--cs-z-tooltip: 40;
|
|
115
|
+
--cs-z-50: 50;
|
|
116
|
+
--cs-z-toast: 50;
|
|
117
|
+
--cs-z-60: 60;
|
|
118
|
+
--cs-z-modal: 60;
|
|
119
|
+
--cs-z-70: 70;
|
|
120
|
+
--cs-z-80: 80;
|
|
121
|
+
--cs-z-90: 90;
|
|
122
|
+
--cs-z-100: 100;
|
|
123
|
+
--cs-z-200: 200;
|
|
124
|
+
--cs-z-300: 300;
|
|
125
|
+
--cs-z-400: 400;
|
|
126
|
+
--cs-z-500: 500;
|
|
127
|
+
--cs-z-600: 600;
|
|
128
|
+
--cs-z-700: 700;
|
|
129
|
+
--cs-z-800: 800;
|
|
130
|
+
--cs-z-900: 900;
|
|
131
|
+
--cs-z-999: 999;
|
|
132
|
+
--cs-z-9999: 9999;
|
|
133
|
+
--cs-z-max: 2147483647;
|
|
134
|
+
|
|
135
|
+
/* === LAYOUT SYSTEM === */
|
|
136
|
+
--cs-page-max: 1200px;
|
|
137
|
+
--cs-page-pad: var(--cs-space-4);
|
|
138
|
+
|
|
139
|
+
/* === GLASS/BACKDROP SYSTEM === */
|
|
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
|
+
}
|
|
147
|
+
|
|
148
|
+
/* =========================================================
|
|
149
|
+
LIGHT THEME SUPPORT
|
|
150
|
+
Complete theme switching system
|
|
151
|
+
========================================================= */
|
|
152
|
+
@media (prefers-color-scheme: light) {
|
|
153
|
+
@theme {
|
|
154
|
+
--cs-bg: #ffffff;
|
|
155
|
+
--cs-surface: #f7f8fa;
|
|
156
|
+
--cs-elev1: #ffffff;
|
|
157
|
+
--cs-elev2: #ffffff;
|
|
158
|
+
--cs-text: #101217;
|
|
159
|
+
--cs-text-muted: #475066;
|
|
160
|
+
--cs-border: #dfe3ea;
|
|
161
|
+
--cs-brand: #375dfb;
|
|
162
|
+
--cs-brand-contrast: #ffffff;
|
|
163
|
+
--cs-shadow-1:
|
|
164
|
+
0 1px 2px rgba(18, 24, 40, 0.06), 0 1px 1px rgba(18, 24, 40, 0.04);
|
|
165
|
+
--cs-shadow-2:
|
|
166
|
+
0 10px 24px rgba(18, 24, 40, 0.1), 0 2px 8px rgba(18, 24, 40, 0.06);
|
|
167
|
+
--cs-acrylic-tint: rgba(255, 255, 255, 0.65);
|
|
168
|
+
--cs-acrylic-border: rgba(0, 0, 0, 0.06);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* Manual theme override classes */
|
|
173
|
+
.cs-theme-light {
|
|
174
|
+
--cs-bg: #ffffff;
|
|
175
|
+
--cs-surface: #f7f8fa;
|
|
176
|
+
--cs-elev1: #ffffff;
|
|
177
|
+
--cs-elev2: #ffffff;
|
|
178
|
+
--cs-text: #101217;
|
|
179
|
+
--cs-text-muted: #475066;
|
|
180
|
+
--cs-border: #dfe3ea;
|
|
181
|
+
--cs-brand: #375dfb;
|
|
182
|
+
--cs-brand-contrast: #ffffff;
|
|
183
|
+
--cs-shadow-1:
|
|
184
|
+
0 1px 2px rgba(18, 24, 40, 0.06), 0 1px 1px rgba(18, 24, 40, 0.04);
|
|
185
|
+
--cs-shadow-2:
|
|
186
|
+
0 10px 24px rgba(18, 24, 40, 0.1), 0 2px 8px rgba(18, 24, 40, 0.06);
|
|
187
|
+
--cs-acrylic-tint: rgba(255, 255, 255, 0.65);
|
|
188
|
+
--cs-acrylic-border: rgba(0, 0, 0, 0.06);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.cs-theme-dark {
|
|
192
|
+
--cs-bg: #0b0c0f;
|
|
193
|
+
--cs-surface: #14161a;
|
|
194
|
+
--cs-elev1: #1b1e24;
|
|
195
|
+
--cs-elev2: #21252d;
|
|
196
|
+
--cs-text: #eef1f6;
|
|
197
|
+
--cs-text-muted: #b6bfcc;
|
|
198
|
+
--cs-border: #2a2f39;
|
|
199
|
+
--cs-brand: #4f7cff;
|
|
200
|
+
--cs-brand-contrast: #0b0d12;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/* =========================================================
|
|
204
|
+
ACCESSIBILITY UTILITIES
|
|
205
|
+
Screen readers, focus management, keyboard navigation
|
|
206
|
+
========================================================= */
|
|
207
|
+
|
|
208
|
+
@utility cs-sr-only {
|
|
209
|
+
position: absolute;
|
|
210
|
+
width: 1px;
|
|
211
|
+
height: 1px;
|
|
212
|
+
padding: 0;
|
|
213
|
+
margin: -1px;
|
|
214
|
+
overflow: hidden;
|
|
215
|
+
clip: rect(0, 0, 0, 0);
|
|
216
|
+
white-space: nowrap;
|
|
217
|
+
border: 0;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
@utility cs-focus-ring {
|
|
221
|
+
outline: none;
|
|
222
|
+
|
|
223
|
+
&:focus-visible {
|
|
224
|
+
outline: 2px solid transparent;
|
|
225
|
+
outline-offset: 2px;
|
|
226
|
+
box-shadow:
|
|
227
|
+
0 0 0 2px var(--cs-brand, #4f7cff),
|
|
228
|
+
0 0 0 4px color-mix(in srgb, var(--cs-brand, #4f7cff) 20%, transparent);
|
|
229
|
+
transition: box-shadow var(--cs-transition);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
@utility cs-focus-ring-within {
|
|
234
|
+
&:focus-within {
|
|
235
|
+
box-shadow:
|
|
236
|
+
0 0 0 2px var(--cs-brand, #4f7cff),
|
|
237
|
+
0 0 0 6px color-mix(in srgb, var(--cs-brand, #4f7cff) 22%, transparent);
|
|
238
|
+
border-radius: var(--cs-radius);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/* =========================================================
|
|
243
|
+
Z-INDEX UTILITIES
|
|
244
|
+
Complete z-index scale for modern UI layering
|
|
245
|
+
========================================================= */
|
|
246
|
+
|
|
247
|
+
@utility cs-z-0 {
|
|
248
|
+
z-index: var(--cs-z-0);
|
|
249
|
+
position: relative;
|
|
250
|
+
}
|
|
251
|
+
@utility cs-z-1 {
|
|
252
|
+
z-index: var(--cs-z-1);
|
|
253
|
+
position: relative;
|
|
254
|
+
}
|
|
255
|
+
@utility cs-z-base {
|
|
256
|
+
z-index: var(--cs-z-base);
|
|
257
|
+
position: relative;
|
|
258
|
+
}
|
|
259
|
+
@utility cs-z-10 {
|
|
260
|
+
z-index: var(--cs-z-10);
|
|
261
|
+
position: relative;
|
|
262
|
+
}
|
|
263
|
+
@utility cs-z-20 {
|
|
264
|
+
z-index: var(--cs-z-20);
|
|
265
|
+
position: relative;
|
|
266
|
+
}
|
|
267
|
+
@utility cs-z-30 {
|
|
268
|
+
z-index: var(--cs-z-30);
|
|
269
|
+
position: relative;
|
|
270
|
+
}
|
|
271
|
+
@utility cs-z-popover {
|
|
272
|
+
z-index: var(--cs-z-popover);
|
|
273
|
+
position: relative;
|
|
274
|
+
}
|
|
275
|
+
@utility cs-z-40 {
|
|
276
|
+
z-index: var(--cs-z-40);
|
|
277
|
+
position: relative;
|
|
278
|
+
}
|
|
279
|
+
@utility cs-z-tooltip {
|
|
280
|
+
z-index: var(--cs-z-tooltip);
|
|
281
|
+
position: relative;
|
|
282
|
+
}
|
|
283
|
+
@utility cs-z-50 {
|
|
284
|
+
z-index: var(--cs-z-50);
|
|
285
|
+
position: relative;
|
|
286
|
+
}
|
|
287
|
+
@utility cs-z-toast {
|
|
288
|
+
z-index: var(--cs-z-toast);
|
|
289
|
+
position: relative;
|
|
290
|
+
}
|
|
291
|
+
@utility cs-z-60 {
|
|
292
|
+
z-index: var(--cs-z-60);
|
|
293
|
+
position: relative;
|
|
294
|
+
}
|
|
295
|
+
@utility cs-z-modal {
|
|
296
|
+
z-index: var(--cs-z-modal);
|
|
297
|
+
position: relative;
|
|
298
|
+
}
|
|
299
|
+
@utility cs-z-70 {
|
|
300
|
+
z-index: var(--cs-z-70);
|
|
301
|
+
position: relative;
|
|
302
|
+
}
|
|
303
|
+
@utility cs-z-80 {
|
|
304
|
+
z-index: var(--cs-z-80);
|
|
305
|
+
position: relative;
|
|
306
|
+
}
|
|
307
|
+
@utility cs-z-90 {
|
|
308
|
+
z-index: var(--cs-z-90);
|
|
309
|
+
position: relative;
|
|
310
|
+
}
|
|
311
|
+
@utility cs-z-100 {
|
|
312
|
+
z-index: var(--cs-z-100);
|
|
313
|
+
position: relative;
|
|
314
|
+
}
|
|
315
|
+
@utility cs-z-200 {
|
|
316
|
+
z-index: var(--cs-z-200);
|
|
317
|
+
position: relative;
|
|
318
|
+
}
|
|
319
|
+
@utility cs-z-300 {
|
|
320
|
+
z-index: var(--cs-z-300);
|
|
321
|
+
position: relative;
|
|
322
|
+
}
|
|
323
|
+
@utility cs-z-400 {
|
|
324
|
+
z-index: var(--cs-z-400);
|
|
325
|
+
position: relative;
|
|
326
|
+
}
|
|
327
|
+
@utility cs-z-500 {
|
|
328
|
+
z-index: var(--cs-z-500);
|
|
329
|
+
position: relative;
|
|
330
|
+
}
|
|
331
|
+
@utility cs-z-600 {
|
|
332
|
+
z-index: var(--cs-z-600);
|
|
333
|
+
position: relative;
|
|
334
|
+
}
|
|
335
|
+
@utility cs-z-700 {
|
|
336
|
+
z-index: var(--cs-z-700);
|
|
337
|
+
position: relative;
|
|
338
|
+
}
|
|
339
|
+
@utility cs-z-800 {
|
|
340
|
+
z-index: var(--cs-z-800);
|
|
341
|
+
position: relative;
|
|
342
|
+
}
|
|
343
|
+
@utility cs-z-900 {
|
|
344
|
+
z-index: var(--cs-z-900);
|
|
345
|
+
position: relative;
|
|
346
|
+
}
|
|
347
|
+
@utility cs-z-999 {
|
|
348
|
+
z-index: var(--cs-z-999);
|
|
349
|
+
position: relative;
|
|
350
|
+
}
|
|
351
|
+
@utility cs-z-9999 {
|
|
352
|
+
z-index: var(--cs-z-9999);
|
|
353
|
+
position: relative;
|
|
354
|
+
}
|
|
355
|
+
@utility cs-z-max {
|
|
356
|
+
z-index: var(--cs-z-max);
|
|
357
|
+
position: relative;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/* =========================================================
|
|
361
|
+
CORE UTILITIES & COMPONENTS
|
|
362
|
+
Main utility definitions using modern @utility syntax
|
|
363
|
+
========================================================= */
|
|
364
|
+
|
|
365
|
+
/* === LOADING & PROGRESS UTILITIES === */
|
|
366
|
+
|
|
367
|
+
@utility cs-spinner {
|
|
368
|
+
animation: cs-rotate 1s linear infinite;
|
|
369
|
+
will-change: transform;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
@utility cs-skeleton {
|
|
373
|
+
background: linear-gradient(
|
|
374
|
+
90deg,
|
|
375
|
+
var(--cs-border) 25%,
|
|
376
|
+
var(--cs-elev1) 50%,
|
|
377
|
+
var(--cs-border) 75%
|
|
378
|
+
);
|
|
379
|
+
background-size: 200% 100%;
|
|
380
|
+
animation: cs-shimmer 1.5s ease-in-out infinite;
|
|
381
|
+
border-radius: var(--cs-radius);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
@keyframes cs-shimmer {
|
|
385
|
+
0% {
|
|
386
|
+
background-position: -200% 0;
|
|
387
|
+
}
|
|
388
|
+
100% {
|
|
389
|
+
background-position: 200% 0;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
@keyframes cs-rotate {
|
|
394
|
+
from {
|
|
395
|
+
transform: rotate(0deg);
|
|
396
|
+
}
|
|
397
|
+
to {
|
|
398
|
+
transform: rotate(360deg);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
@utility cs-progress {
|
|
403
|
+
width: 100%;
|
|
404
|
+
height: 8px;
|
|
405
|
+
background: var(--cs-border);
|
|
406
|
+
border-radius: var(--cs-radius);
|
|
407
|
+
overflow: hidden;
|
|
408
|
+
position: relative;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
@utility cs-progress-bar {
|
|
412
|
+
height: 100%;
|
|
413
|
+
background: var(--cs-brand);
|
|
414
|
+
border-radius: inherit;
|
|
415
|
+
transition: width var(--cs-transition);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
@utility cs-progress-indeterminate {
|
|
419
|
+
background: linear-gradient(90deg, transparent, var(--cs-brand), transparent);
|
|
420
|
+
background-size: 200% 100%;
|
|
421
|
+
animation: cs-progress-slide 1.5s ease-in-out infinite;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
@keyframes cs-progress-slide {
|
|
425
|
+
0% {
|
|
426
|
+
background-position: -200% 0;
|
|
427
|
+
}
|
|
428
|
+
100% {
|
|
429
|
+
background-position: 200% 0;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/* === SCROLL & OVERFLOW UTILITIES === */
|
|
434
|
+
|
|
435
|
+
@utility cs-scroll-smooth {
|
|
436
|
+
scroll-behavior: smooth;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
@utility cs-scroll-auto {
|
|
440
|
+
scroll-behavior: auto;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
@utility cs-scrollbar-thin {
|
|
444
|
+
scrollbar-width: thin;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
@utility cs-scrollbar-none {
|
|
448
|
+
scrollbar-width: none;
|
|
449
|
+
-ms-overflow-style: none;
|
|
450
|
+
|
|
451
|
+
&::-webkit-scrollbar {
|
|
452
|
+
display: none;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
@utility cs-snap-x {
|
|
457
|
+
scroll-snap-type: x mandatory;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
@utility cs-snap-y {
|
|
461
|
+
scroll-snap-type: y mandatory;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
@utility cs-snap-both {
|
|
465
|
+
scroll-snap-type: both mandatory;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
@utility cs-snap-none {
|
|
469
|
+
scroll-snap-type: none;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
@utility cs-snap-start {
|
|
473
|
+
scroll-snap-align: start;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
@utility cs-snap-end {
|
|
477
|
+
scroll-snap-align: end;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
@utility cs-snap-center {
|
|
481
|
+
scroll-snap-align: center;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
/* === ENHANCED CARD UTILITIES === */
|
|
485
|
+
|
|
486
|
+
@utility cs-card-product {
|
|
487
|
+
background: var(--cs-elev1);
|
|
488
|
+
border: 1px solid var(--cs-border);
|
|
489
|
+
border-radius: var(--cs-radius-lg);
|
|
490
|
+
padding: var(--cs-space-6);
|
|
491
|
+
transition: all var(--cs-transition);
|
|
492
|
+
position: relative;
|
|
493
|
+
overflow: hidden;
|
|
494
|
+
|
|
495
|
+
&:hover {
|
|
496
|
+
transform: translateY(-2px);
|
|
497
|
+
box-shadow: var(--cs-shadow-2);
|
|
498
|
+
border-color: var(--cs-brand);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
@utility cs-card-hero {
|
|
503
|
+
background: linear-gradient(135deg, var(--cs-elev1), var(--cs-elev2));
|
|
504
|
+
border: 1px solid var(--cs-border);
|
|
505
|
+
border-radius: var(--cs-radius-lg);
|
|
506
|
+
padding: var(--cs-space-8);
|
|
507
|
+
text-align: center;
|
|
508
|
+
position: relative;
|
|
509
|
+
overflow: hidden;
|
|
510
|
+
|
|
511
|
+
&::before {
|
|
512
|
+
content: '';
|
|
513
|
+
position: absolute;
|
|
514
|
+
top: 0;
|
|
515
|
+
left: 0;
|
|
516
|
+
right: 0;
|
|
517
|
+
height: 4px;
|
|
518
|
+
background: linear-gradient(
|
|
519
|
+
90deg,
|
|
520
|
+
var(--cs-brand),
|
|
521
|
+
var(--cs-success),
|
|
522
|
+
var(--cs-info)
|
|
523
|
+
);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
@utility cs-card-compact {
|
|
528
|
+
background: var(--cs-elev1);
|
|
529
|
+
border: 1px solid var(--cs-border);
|
|
530
|
+
border-radius: var(--cs-radius);
|
|
531
|
+
padding: var(--cs-space-4);
|
|
532
|
+
display: flex;
|
|
533
|
+
align-items: center;
|
|
534
|
+
gap: var(--cs-space-3);
|
|
535
|
+
transition: all var(--cs-transition);
|
|
536
|
+
|
|
537
|
+
&:hover {
|
|
538
|
+
background: var(--cs-elev2);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
@utility cs-container-fluid {
|
|
543
|
+
width: 100%;
|
|
544
|
+
padding-left: var(--cs-page-pad);
|
|
545
|
+
padding-right: var(--cs-page-pad);
|
|
546
|
+
margin-left: auto;
|
|
547
|
+
margin-right: auto;
|
|
548
|
+
max-width: none;
|
|
549
|
+
background-color: var(--cs-surface, #14161a);
|
|
550
|
+
color: var(--cs-text, #eef1f6);
|
|
551
|
+
|
|
552
|
+
@container (min-width: 768px) {
|
|
553
|
+
padding-left: calc(var(--cs-page-pad) + var(--cs-space-2));
|
|
554
|
+
padding-right: calc(var(--cs-page-pad) + var(--cs-space-2));
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
@container (min-width: 1200px) {
|
|
558
|
+
max-width: var(--cs-page-max);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/* =========================================================
|
|
563
|
+
LAYOUT UTILITIES
|
|
564
|
+
Modern layout patterns and micro-recipes
|
|
565
|
+
========================================================= */
|
|
566
|
+
|
|
567
|
+
@utility cs-stack {
|
|
568
|
+
display: grid;
|
|
569
|
+
gap: var(--cs-space-3);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
@utility cs-stack-sm {
|
|
573
|
+
display: grid;
|
|
574
|
+
gap: var(--cs-space-2);
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
@utility cs-stack-lg {
|
|
578
|
+
display: grid;
|
|
579
|
+
gap: var(--cs-space-6);
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
@utility cs-cluster {
|
|
583
|
+
display: flex;
|
|
584
|
+
flex-wrap: wrap;
|
|
585
|
+
gap: var(--cs-space-2);
|
|
586
|
+
align-items: center;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
@utility cs-center {
|
|
590
|
+
display: grid;
|
|
591
|
+
place-items: center;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
@utility cs-grid-fit {
|
|
595
|
+
display: grid;
|
|
596
|
+
gap: var(--cs-space-3);
|
|
597
|
+
grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
@utility cs-aspect {
|
|
601
|
+
aspect-ratio: var(--cs-aspect, 16 / 9);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
@utility cs-bleed-x {
|
|
605
|
+
margin-inline: calc(var(--cs-page-pad) * -1);
|
|
606
|
+
|
|
607
|
+
@container (min-width: 960px) {
|
|
608
|
+
margin-inline: calc((var(--cs-page-pad) + var(--cs-space-3)) * -1);
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
@utility cs-safe-pad {
|
|
613
|
+
padding-inline: max(var(--cs-page-pad), env(safe-area-inset-left));
|
|
614
|
+
padding-inline-end: max(var(--cs-page-pad), env(safe-area-inset-right));
|
|
615
|
+
padding-block-end: max(var(--cs-space-4), env(safe-area-inset-bottom));
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
/* Layout positioning utilities */
|
|
619
|
+
@utility cs-sticky {
|
|
620
|
+
position: sticky;
|
|
621
|
+
top: 0;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
@utility cs-will-change-transform {
|
|
625
|
+
will-change: transform;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
@utility cs-will-change-opacity {
|
|
629
|
+
will-change: opacity;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
/* =========================================================
|
|
633
|
+
TYPOGRAPHY UTILITIES
|
|
634
|
+
Fluid typography with line height optimization
|
|
635
|
+
========================================================= */
|
|
636
|
+
|
|
637
|
+
@utility cs-text-xs {
|
|
638
|
+
font-size: var(--cs-fs-xs);
|
|
639
|
+
line-height: var(--cs-line);
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
@utility cs-text-sm {
|
|
643
|
+
font-size: var(--cs-fs-sm);
|
|
644
|
+
line-height: var(--cs-line);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
@utility cs-text-md {
|
|
648
|
+
font-size: var(--cs-fs-md);
|
|
649
|
+
line-height: var(--cs-line);
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
@utility cs-text-lg {
|
|
653
|
+
font-size: var(--cs-fs-lg);
|
|
654
|
+
line-height: calc(var(--cs-line) + 0.05);
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
@utility cs-text-xl {
|
|
658
|
+
font-size: var(--cs-fs-xl);
|
|
659
|
+
line-height: calc(var(--cs-line) + 0.1);
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
@utility cs-text-2xl {
|
|
663
|
+
font-size: var(--cs-fs-2xl);
|
|
664
|
+
line-height: calc(var(--cs-line) + 0.12);
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
@utility cs-font-sans {
|
|
668
|
+
font-family: var(--cs-font-sans);
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
@utility cs-font-mono {
|
|
672
|
+
font-family: var(--cs-font-mono);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
/* =========================================================
|
|
676
|
+
GRID UTILITIES
|
|
677
|
+
Advanced grid system with auto-fit patterns
|
|
678
|
+
========================================================= */
|
|
679
|
+
|
|
680
|
+
@utility cs-grid-auto-fit-sm {
|
|
681
|
+
display: grid;
|
|
682
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
683
|
+
gap: var(--cs-space-4);
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
@utility cs-grid-auto-fit-md {
|
|
687
|
+
display: grid;
|
|
688
|
+
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
689
|
+
gap: var(--cs-space-4);
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
@utility cs-grid-auto-fit-lg {
|
|
693
|
+
display: grid;
|
|
694
|
+
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
|
|
695
|
+
gap: var(--cs-space-4);
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
@utility cs-grid-12 {
|
|
699
|
+
display: grid;
|
|
700
|
+
grid-template-columns: repeat(12, 1fr);
|
|
701
|
+
gap: var(--cs-space-4);
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
/* Fixed grid columns */
|
|
705
|
+
@utility cs-grid-cols-2 {
|
|
706
|
+
display: grid;
|
|
707
|
+
grid-template-columns: repeat(2, 1fr);
|
|
708
|
+
gap: var(--cs-space-4);
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
@utility cs-grid-cols-3 {
|
|
712
|
+
display: grid;
|
|
713
|
+
grid-template-columns: repeat(3, 1fr);
|
|
714
|
+
gap: var(--cs-space-4);
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
@utility cs-grid-cols-4 {
|
|
718
|
+
display: grid;
|
|
719
|
+
grid-template-columns: repeat(4, 1fr);
|
|
720
|
+
gap: var(--cs-space-4);
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
@utility cs-grid-cols-6 {
|
|
724
|
+
display: grid;
|
|
725
|
+
grid-template-columns: repeat(6, 1fr);
|
|
726
|
+
gap: var(--cs-space-4);
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
@utility cs-grid-cols-8 {
|
|
730
|
+
display: grid;
|
|
731
|
+
grid-template-columns: repeat(8, 1fr);
|
|
732
|
+
gap: var(--cs-space-4);
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
@utility cs-grid-cols-9 {
|
|
736
|
+
display: grid;
|
|
737
|
+
grid-template-columns: repeat(9, 1fr);
|
|
738
|
+
gap: var(--cs-space-4);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
@utility cs-grid-cols-12 {
|
|
742
|
+
display: grid;
|
|
743
|
+
grid-template-columns: repeat(12, 1fr);
|
|
744
|
+
gap: var(--cs-space-4);
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
/* Column spanning utilities for use within cs-grid-12 */
|
|
748
|
+
@utility cs-col-1 {
|
|
749
|
+
grid-column: span 1;
|
|
750
|
+
}
|
|
751
|
+
@utility cs-col-2 {
|
|
752
|
+
grid-column: span 2;
|
|
753
|
+
}
|
|
754
|
+
@utility cs-col-3 {
|
|
755
|
+
grid-column: span 3;
|
|
756
|
+
}
|
|
757
|
+
@utility cs-col-4 {
|
|
758
|
+
grid-column: span 4;
|
|
759
|
+
}
|
|
760
|
+
@utility cs-col-5 {
|
|
761
|
+
grid-column: span 5;
|
|
762
|
+
}
|
|
763
|
+
@utility cs-col-6 {
|
|
764
|
+
grid-column: span 6;
|
|
765
|
+
}
|
|
766
|
+
@utility cs-col-7 {
|
|
767
|
+
grid-column: span 7;
|
|
768
|
+
}
|
|
769
|
+
@utility cs-col-8 {
|
|
770
|
+
grid-column: span 8;
|
|
771
|
+
}
|
|
772
|
+
@utility cs-col-9 {
|
|
773
|
+
grid-column: span 9;
|
|
774
|
+
}
|
|
775
|
+
@utility cs-col-10 {
|
|
776
|
+
grid-column: span 10;
|
|
777
|
+
}
|
|
778
|
+
@utility cs-col-11 {
|
|
779
|
+
grid-column: span 11;
|
|
780
|
+
}
|
|
781
|
+
@utility cs-col-12 {
|
|
782
|
+
grid-column: span 12;
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
/* =========================================================
|
|
786
|
+
SPACING UTILITIES
|
|
787
|
+
Gap, padding, margin utilities using design tokens
|
|
788
|
+
========================================================= */
|
|
789
|
+
|
|
790
|
+
@utility cs-space-1 {
|
|
791
|
+
gap: var(--cs-space-1);
|
|
792
|
+
}
|
|
793
|
+
@utility cs-space-2 {
|
|
794
|
+
gap: var(--cs-space-2);
|
|
795
|
+
}
|
|
796
|
+
@utility cs-space-3 {
|
|
797
|
+
gap: var(--cs-space-3);
|
|
798
|
+
}
|
|
799
|
+
@utility cs-space-4 {
|
|
800
|
+
gap: var(--cs-space-4);
|
|
801
|
+
}
|
|
802
|
+
@utility cs-space-6 {
|
|
803
|
+
gap: var(--cs-space-6);
|
|
804
|
+
}
|
|
805
|
+
@utility cs-space-8 {
|
|
806
|
+
gap: var(--cs-space-8);
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
@utility cs-p-1 {
|
|
810
|
+
padding: var(--cs-space-1);
|
|
811
|
+
}
|
|
812
|
+
@utility cs-p-2 {
|
|
813
|
+
padding: var(--cs-space-2);
|
|
814
|
+
}
|
|
815
|
+
@utility cs-p-3 {
|
|
816
|
+
padding: var(--cs-space-3);
|
|
817
|
+
}
|
|
818
|
+
@utility cs-p-4 {
|
|
819
|
+
padding: var(--cs-space-4);
|
|
820
|
+
}
|
|
821
|
+
@utility cs-p-6 {
|
|
822
|
+
padding: var(--cs-space-6);
|
|
823
|
+
}
|
|
824
|
+
@utility cs-p-8 {
|
|
825
|
+
padding: var(--cs-space-8);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
@utility cs-m-1 {
|
|
829
|
+
margin: var(--cs-space-1);
|
|
830
|
+
}
|
|
831
|
+
@utility cs-m-2 {
|
|
832
|
+
margin: var(--cs-space-2);
|
|
833
|
+
}
|
|
834
|
+
@utility cs-m-3 {
|
|
835
|
+
margin: var(--cs-space-3);
|
|
836
|
+
}
|
|
837
|
+
@utility cs-m-4 {
|
|
838
|
+
margin: var(--cs-space-4);
|
|
839
|
+
}
|
|
840
|
+
@utility cs-m-6 {
|
|
841
|
+
margin: var(--cs-space-6);
|
|
842
|
+
}
|
|
843
|
+
@utility cs-m-8 {
|
|
844
|
+
margin: var(--cs-space-8);
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
/* Directional spacing utilities */
|
|
848
|
+
@utility cs-px-1 {
|
|
849
|
+
padding-inline: var(--cs-space-1);
|
|
850
|
+
}
|
|
851
|
+
@utility cs-px-2 {
|
|
852
|
+
padding-inline: var(--cs-space-2);
|
|
853
|
+
}
|
|
854
|
+
@utility cs-px-3 {
|
|
855
|
+
padding-inline: var(--cs-space-3);
|
|
856
|
+
}
|
|
857
|
+
@utility cs-px-4 {
|
|
858
|
+
padding-inline: var(--cs-space-4);
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
@utility cs-py-1 {
|
|
862
|
+
padding-block: var(--cs-space-1);
|
|
863
|
+
}
|
|
864
|
+
@utility cs-py-2 {
|
|
865
|
+
padding-block: var(--cs-space-2);
|
|
866
|
+
}
|
|
867
|
+
@utility cs-py-3 {
|
|
868
|
+
padding-block: var(--cs-space-3);
|
|
869
|
+
}
|
|
870
|
+
@utility cs-py-4 {
|
|
871
|
+
padding-block: var(--cs-space-4);
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/* === TYPOGRAPHY UTILITIES === */
|
|
875
|
+
|
|
876
|
+
@utility cs-text-balance {
|
|
877
|
+
text-wrap: var(--cs-text-balance);
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
@utility cs-text-gradient {
|
|
881
|
+
background: linear-gradient(135deg, var(--cs-brand), var(--cs-success));
|
|
882
|
+
background-clip: text;
|
|
883
|
+
-webkit-background-clip: text;
|
|
884
|
+
-webkit-text-fill-color: transparent;
|
|
885
|
+
color: transparent;
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
@utility cs-prose {
|
|
889
|
+
max-width: 65ch;
|
|
890
|
+
line-height: var(--cs-leading-relaxed);
|
|
891
|
+
|
|
892
|
+
& h1,
|
|
893
|
+
& h2,
|
|
894
|
+
& h3 {
|
|
895
|
+
text-wrap: var(--cs-text-balance);
|
|
896
|
+
margin-top: 2em;
|
|
897
|
+
margin-bottom: 1em;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
& p {
|
|
901
|
+
margin-bottom: 1.25em;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
& ul,
|
|
905
|
+
& ol {
|
|
906
|
+
padding-left: 2em;
|
|
907
|
+
margin-bottom: 1.25em;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
& blockquote {
|
|
911
|
+
border-left: 4px solid var(--cs-border);
|
|
912
|
+
padding-left: 1em;
|
|
913
|
+
font-style: italic;
|
|
914
|
+
margin: 1.5em 0;
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
@utility cs-font-feature-numbers {
|
|
919
|
+
font-feature-settings: 'tnum';
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
/* =========================================================
|
|
923
|
+
REDUCED MOTION SUPPORT & ACCESSIBILITY
|
|
924
|
+
Full accessibility compliance for motion-sensitive users
|
|
925
|
+
========================================================= */
|
|
926
|
+
|
|
927
|
+
@utility cs-surface {
|
|
928
|
+
background: var(--cs-surface);
|
|
929
|
+
color: var(--cs-text);
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
@utility cs-surface-elevated {
|
|
933
|
+
background: var(--cs-elev1);
|
|
934
|
+
color: var(--cs-text);
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
@utility cs-surface-raised {
|
|
938
|
+
background: var(--cs-elev2);
|
|
939
|
+
color: var(--cs-text);
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
@utility cs-bg-brand {
|
|
943
|
+
background-color: var(--cs-brand, #4f7cff);
|
|
944
|
+
color: var(--cs-brand-ink, #0b0d12);
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
/* Radius utilities */
|
|
948
|
+
@utility cs-radius-sm {
|
|
949
|
+
border-radius: var(--cs-radius-sm);
|
|
950
|
+
}
|
|
951
|
+
@utility cs-radius {
|
|
952
|
+
border-radius: var(--cs-radius);
|
|
953
|
+
}
|
|
954
|
+
@utility cs-radius-lg {
|
|
955
|
+
border-radius: var(--cs-radius-lg);
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
/* Shadow utilities */
|
|
959
|
+
@utility cs-shadow {
|
|
960
|
+
box-shadow: var(--cs-shadow-1);
|
|
961
|
+
}
|
|
962
|
+
@utility cs-shadow-lg {
|
|
963
|
+
box-shadow: var(--cs-shadow-2);
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
/* =========================================================
|
|
967
|
+
CARD COMPONENTS
|
|
968
|
+
Complete card system with variants
|
|
969
|
+
========================================================= */
|
|
970
|
+
|
|
971
|
+
@utility cs-card {
|
|
972
|
+
background: var(--cs-surface);
|
|
973
|
+
border: 1px solid var(--cs-border);
|
|
974
|
+
border-radius: var(--cs-radius);
|
|
975
|
+
padding: var(--cs-space-4);
|
|
976
|
+
box-shadow: var(--cs-shadow-1);
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
@utility cs-card-elevated {
|
|
980
|
+
background: var(--cs-elev1);
|
|
981
|
+
border: 1px solid var(--cs-border);
|
|
982
|
+
border-radius: var(--cs-radius);
|
|
983
|
+
padding: var(--cs-space-4);
|
|
984
|
+
box-shadow: var(--cs-shadow-2);
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
/* =========================================================
|
|
988
|
+
BUTTON COMPONENTS
|
|
989
|
+
Complete button system with variants
|
|
990
|
+
========================================================= */
|
|
991
|
+
|
|
992
|
+
@utility cs-btn {
|
|
993
|
+
display: inline-flex;
|
|
994
|
+
align-items: center;
|
|
995
|
+
justify-content: center;
|
|
996
|
+
padding: var(--cs-space-2) var(--cs-space-4);
|
|
997
|
+
border-radius: var(--cs-radius);
|
|
998
|
+
font-weight: 500;
|
|
999
|
+
text-decoration: none;
|
|
1000
|
+
transition: var(--cs-transition);
|
|
1001
|
+
cursor: pointer;
|
|
1002
|
+
border: 0;
|
|
1003
|
+
min-height: 44px; /* Touch target compliance */
|
|
1004
|
+
min-width: 44px;
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
@utility cs-btn-primary {
|
|
1008
|
+
background: var(--cs-brand);
|
|
1009
|
+
color: var(--cs-brand-contrast);
|
|
1010
|
+
|
|
1011
|
+
&:hover {
|
|
1012
|
+
background: color-mix(in srgb, var(--cs-brand) 85%, black);
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
&:focus-visible {
|
|
1016
|
+
outline: 2px solid transparent;
|
|
1017
|
+
outline-offset: 2px;
|
|
1018
|
+
box-shadow:
|
|
1019
|
+
0 0 0 2px var(--cs-brand),
|
|
1020
|
+
0 0 0 4px color-mix(in srgb, var(--cs-brand) 25%, transparent);
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
@utility cs-btn-secondary {
|
|
1025
|
+
background: var(--cs-elev1);
|
|
1026
|
+
color: var(--cs-text);
|
|
1027
|
+
border: 1px solid var(--cs-border);
|
|
1028
|
+
|
|
1029
|
+
&:hover {
|
|
1030
|
+
background: var(--cs-elev2);
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
&:focus-visible {
|
|
1034
|
+
outline: 2px solid transparent;
|
|
1035
|
+
outline-offset: 2px;
|
|
1036
|
+
box-shadow:
|
|
1037
|
+
0 0 0 2px var(--cs-border),
|
|
1038
|
+
0 0 0 4px color-mix(in srgb, var(--cs-text) 15%, transparent);
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
@utility cs-btn-outline {
|
|
1043
|
+
background: transparent;
|
|
1044
|
+
color: var(--cs-brand);
|
|
1045
|
+
border: 1px solid var(--cs-brand);
|
|
1046
|
+
|
|
1047
|
+
&:hover {
|
|
1048
|
+
background: var(--cs-brand);
|
|
1049
|
+
color: var(--cs-brand-contrast);
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
&:focus-visible {
|
|
1053
|
+
outline: 2px solid transparent;
|
|
1054
|
+
outline-offset: 2px;
|
|
1055
|
+
box-shadow:
|
|
1056
|
+
0 0 0 2px var(--cs-brand),
|
|
1057
|
+
0 0 0 4px color-mix(in srgb, var(--cs-brand) 25%, transparent);
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
@utility cs-btn-ghost {
|
|
1062
|
+
background: transparent;
|
|
1063
|
+
color: var(--cs-text);
|
|
1064
|
+
border: 1px solid transparent;
|
|
1065
|
+
|
|
1066
|
+
&:hover {
|
|
1067
|
+
background: var(--cs-elev1);
|
|
1068
|
+
border-color: var(--cs-border);
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
&:focus-visible {
|
|
1072
|
+
outline: 2px solid transparent;
|
|
1073
|
+
outline-offset: 2px;
|
|
1074
|
+
box-shadow:
|
|
1075
|
+
0 0 0 2px var(--cs-border),
|
|
1076
|
+
0 0 0 4px color-mix(in srgb, var(--cs-text) 15%, transparent);
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
/* Button sizes */
|
|
1081
|
+
@utility cs-btn-sm {
|
|
1082
|
+
padding: var(--cs-space-1) var(--cs-space-3);
|
|
1083
|
+
font-size: var(--cs-fs-sm);
|
|
1084
|
+
min-height: 36px;
|
|
1085
|
+
min-width: 36px;
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
@utility cs-btn-lg {
|
|
1089
|
+
padding: var(--cs-space-3) var(--cs-space-6);
|
|
1090
|
+
font-size: var(--cs-fs-lg);
|
|
1091
|
+
min-height: 52px;
|
|
1092
|
+
min-width: 52px;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
/* =========================================================
|
|
1096
|
+
ALERT COMPONENTS
|
|
1097
|
+
Semantic feedback alerts with state colors
|
|
1098
|
+
========================================================= */
|
|
1099
|
+
|
|
1100
|
+
@utility cs-alert {
|
|
1101
|
+
display: flex;
|
|
1102
|
+
align-items: center;
|
|
1103
|
+
gap: var(--cs-space-3);
|
|
1104
|
+
padding: var(--cs-space-4);
|
|
1105
|
+
border: 1px solid var(--cs-border);
|
|
1106
|
+
border-radius: var(--cs-radius);
|
|
1107
|
+
background: var(--cs-surface);
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
@utility cs-alert-info {
|
|
1111
|
+
border-color: var(--cs-info, #0ea5e9);
|
|
1112
|
+
background: color-mix(in srgb, var(--cs-info, #0ea5e9) 8%, var(--cs-surface));
|
|
1113
|
+
color: var(--cs-info, #0ea5e9);
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
@utility cs-alert-success {
|
|
1117
|
+
border-color: var(--cs-success, #22c55e);
|
|
1118
|
+
background: color-mix(
|
|
1119
|
+
in srgb,
|
|
1120
|
+
var(--cs-success, #22c55e) 8%,
|
|
1121
|
+
var(--cs-surface)
|
|
1122
|
+
);
|
|
1123
|
+
color: var(--cs-success, #22c55e);
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
@utility cs-alert-warning {
|
|
1127
|
+
border-color: var(--cs-warning, #f59e0b);
|
|
1128
|
+
background: color-mix(
|
|
1129
|
+
in srgb,
|
|
1130
|
+
var(--cs-warning, #f59e0b) 8%,
|
|
1131
|
+
var(--cs-surface)
|
|
1132
|
+
);
|
|
1133
|
+
color: var(--cs-warning, #f59e0b);
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
@utility cs-alert-danger {
|
|
1137
|
+
border-color: var(--cs-danger, #ef4444);
|
|
1138
|
+
background: color-mix(
|
|
1139
|
+
in srgb,
|
|
1140
|
+
var(--cs-danger, #ef4444) 8%,
|
|
1141
|
+
var(--cs-surface)
|
|
1142
|
+
);
|
|
1143
|
+
color: var(--cs-danger, #ef4444);
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
/* =========================================================
|
|
1147
|
+
BADGE COMPONENTS
|
|
1148
|
+
Status badges and tags with variants
|
|
1149
|
+
========================================================= */
|
|
1150
|
+
|
|
1151
|
+
@utility cs-badge {
|
|
1152
|
+
display: inline-flex;
|
|
1153
|
+
align-items: center;
|
|
1154
|
+
gap: var(--cs-space-1);
|
|
1155
|
+
padding: var(--cs-space-1) var(--cs-space-2);
|
|
1156
|
+
border-radius: var(--cs-radius-sm);
|
|
1157
|
+
font-size: var(--cs-fs-xs);
|
|
1158
|
+
font-weight: 600;
|
|
1159
|
+
line-height: 1;
|
|
1160
|
+
white-space: nowrap;
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
@utility cs-badge-primary {
|
|
1164
|
+
background: var(--cs-brand);
|
|
1165
|
+
color: var(--cs-brand-ink);
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
@utility cs-badge-secondary {
|
|
1169
|
+
background: var(--cs-text-muted);
|
|
1170
|
+
color: var(--cs-bg);
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
@utility cs-badge-success {
|
|
1174
|
+
background: var(--cs-success, #22c55e);
|
|
1175
|
+
color: white;
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1178
|
+
@utility cs-badge-warning {
|
|
1179
|
+
background: var(--cs-warning, #f59e0b);
|
|
1180
|
+
color: white;
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
@utility cs-badge-danger {
|
|
1184
|
+
background: var(--cs-danger, #ef4444);
|
|
1185
|
+
color: white;
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
@utility cs-badge-outline {
|
|
1189
|
+
background: transparent;
|
|
1190
|
+
border: 1px solid currentColor;
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
/* =========================================================
|
|
1194
|
+
ACRYLIC SURFACE COMPONENT
|
|
1195
|
+
Modern glass effect with backdrop filtering
|
|
1196
|
+
========================================================= */
|
|
1197
|
+
|
|
1198
|
+
@utility cs-acrylic {
|
|
1199
|
+
background: var(--cs-acrylic-tint, rgba(20, 22, 26, 0.55));
|
|
1200
|
+
border: 1px solid var(--cs-acrylic-border, rgba(255, 255, 255, 0.06));
|
|
1201
|
+
border-radius: var(--cs-radius, 10px);
|
|
1202
|
+
box-shadow: var(--cs-shadow-2);
|
|
1203
|
+
-webkit-backdrop-filter: saturate(140%) blur(var(--cs-acrylic-blur, 14px));
|
|
1204
|
+
backdrop-filter: saturate(140%) blur(var(--cs-acrylic-blur, 14px));
|
|
1205
|
+
background-clip: padding-box;
|
|
1206
|
+
|
|
1207
|
+
@media (max-width: 480px) {
|
|
1208
|
+
--cs-acrylic-blur: 8px;
|
|
1209
|
+
box-shadow: var(--cs-shadow-1);
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
/* =========================================================
|
|
1214
|
+
ANIMATION UTILITIES
|
|
1215
|
+
Performance-optimized micro-interactions
|
|
1216
|
+
========================================================= */
|
|
1217
|
+
|
|
1218
|
+
@utility cs-pulse {
|
|
1219
|
+
animation: csPulse 1.2s ease-in-out infinite;
|
|
1220
|
+
will-change: transform, opacity;
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1223
|
+
@keyframes csPulse {
|
|
1224
|
+
0% {
|
|
1225
|
+
transform: scale(1);
|
|
1226
|
+
opacity: 1;
|
|
1227
|
+
}
|
|
1228
|
+
50% {
|
|
1229
|
+
transform: scale(1.05);
|
|
1230
|
+
opacity: 0.75;
|
|
1231
|
+
}
|
|
1232
|
+
100% {
|
|
1233
|
+
transform: scale(1);
|
|
1234
|
+
opacity: 1;
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
@utility cs-fade-delayed {
|
|
1239
|
+
opacity: 0;
|
|
1240
|
+
animation: csFadeIn var(--cs-anim-duration-lg, 420ms)
|
|
1241
|
+
var(--cs-anim-ease-out, ease-out) forwards;
|
|
1242
|
+
animation-delay: 0.4s;
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
@keyframes csFadeIn {
|
|
1246
|
+
from {
|
|
1247
|
+
opacity: 0;
|
|
1248
|
+
}
|
|
1249
|
+
to {
|
|
1250
|
+
opacity: 1;
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
@utility cs-shimmer {
|
|
1255
|
+
position: relative;
|
|
1256
|
+
overflow: hidden;
|
|
1257
|
+
background: linear-gradient(
|
|
1258
|
+
90deg,
|
|
1259
|
+
var(--cs-elev1),
|
|
1260
|
+
var(--cs-elev2),
|
|
1261
|
+
var(--cs-elev1)
|
|
1262
|
+
);
|
|
1263
|
+
background-size: 200% 100%;
|
|
1264
|
+
animation: csShimmer 2s linear infinite;
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
@keyframes csShimmer {
|
|
1268
|
+
0% {
|
|
1269
|
+
background-position: 200% 0;
|
|
1270
|
+
}
|
|
1271
|
+
100% {
|
|
1272
|
+
background-position: -200% 0;
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1276
|
+
@utility cs-spin {
|
|
1277
|
+
animation: csSpin 1s linear infinite;
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
@keyframes csSpin {
|
|
1281
|
+
to {
|
|
1282
|
+
transform: rotate(360deg);
|
|
1283
|
+
}
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
/* Glow effect utility */
|
|
1287
|
+
@utility cs-glow {
|
|
1288
|
+
box-shadow: 0 0 0 transparent;
|
|
1289
|
+
transition: box-shadow 0.4s ease-out;
|
|
1290
|
+
|
|
1291
|
+
&.cs-glow-active {
|
|
1292
|
+
box-shadow:
|
|
1293
|
+
0 0 0 3px color-mix(in srgb, var(--cs-brand, #4f7cff) 40%, transparent),
|
|
1294
|
+
0 0 12px color-mix(in srgb, var(--cs-brand, #4f7cff) 65%, transparent);
|
|
1295
|
+
}
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
/* =========================================================
|
|
1299
|
+
RESPONSIVE VISIBILITY UTILITIES
|
|
1300
|
+
Container query based visibility controls
|
|
1301
|
+
========================================================= */
|
|
1302
|
+
|
|
1303
|
+
@container (max-width: 640px) {
|
|
1304
|
+
.cs-hide-mobile {
|
|
1305
|
+
display: none !important;
|
|
1306
|
+
}
|
|
1307
|
+
.cs-show-mobile {
|
|
1308
|
+
display: block !important;
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
@container (min-width: 641px) and (max-width: 1024px) {
|
|
1313
|
+
.cs-hide-tablet {
|
|
1314
|
+
display: none !important;
|
|
1315
|
+
}
|
|
1316
|
+
.cs-show-tablet {
|
|
1317
|
+
display: block !important;
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
@container (min-width: 1025px) {
|
|
1322
|
+
.cs-hide-desktop {
|
|
1323
|
+
display: none !important;
|
|
1324
|
+
}
|
|
1325
|
+
.cs-show-desktop {
|
|
1326
|
+
display: block !important;
|
|
1327
|
+
}
|
|
1328
|
+
}
|
|
1329
|
+
|
|
1330
|
+
/* =========================================================
|
|
1331
|
+
PROGRESSIVE ENHANCEMENT
|
|
1332
|
+
Modern CSS features with fallbacks
|
|
1333
|
+
========================================================= */
|
|
1334
|
+
|
|
1335
|
+
/* Progressive enhancement for color-mix support */
|
|
1336
|
+
@supports not (color: color-mix(in srgb, red 50%, blue)) {
|
|
1337
|
+
.cs-btn-primary:hover {
|
|
1338
|
+
background: rgba(79, 124, 255, 0.85);
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1341
|
+
.cs-alert-info {
|
|
1342
|
+
background: rgba(14, 165, 233, 0.08);
|
|
1343
|
+
}
|
|
1344
|
+
|
|
1345
|
+
.cs-alert-success {
|
|
1346
|
+
background: rgba(34, 197, 94, 0.08);
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1349
|
+
.cs-alert-warning {
|
|
1350
|
+
background: rgba(245, 158, 11, 0.08);
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
.cs-alert-danger {
|
|
1354
|
+
background: rgba(239, 68, 68, 0.08);
|
|
1355
|
+
}
|
|
1356
|
+
}
|
|
1357
|
+
|
|
1358
|
+
/* Fallback for backdrop-filter */
|
|
1359
|
+
@supports not (backdrop-filter: blur(1px)) {
|
|
1360
|
+
.cs-acrylic {
|
|
1361
|
+
background: color-mix(in srgb, var(--cs-acrylic-tint) 80%, var(--cs-elev1));
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
/* Progressive enhancement for oklch colors */
|
|
1366
|
+
@supports (color: oklch(60% 0.2 250)) {
|
|
1367
|
+
.cs-theme {
|
|
1368
|
+
--cs-brand-oklch: oklch(from var(--cs-brand) l c h);
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
/* =========================================================
|
|
1373
|
+
ACCESSIBILITY OPTIMIZATIONS
|
|
1374
|
+
Reduced motion and high contrast support
|
|
1375
|
+
========================================================= */
|
|
1376
|
+
|
|
1377
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1378
|
+
.cs-pulse,
|
|
1379
|
+
.cs-shimmer,
|
|
1380
|
+
.cs-fade-delayed,
|
|
1381
|
+
.cs-spin {
|
|
1382
|
+
animation: none !important;
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
.cs-btn:hover,
|
|
1386
|
+
.cs-focus-ring:focus-visible,
|
|
1387
|
+
.cs-focus-ring-within:focus-within {
|
|
1388
|
+
transition: none !important;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
.cs-glow {
|
|
1392
|
+
transition: none !important;
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1396
|
+
@media (prefers-contrast: high) {
|
|
1397
|
+
.cs-theme {
|
|
1398
|
+
--cs-border: currentColor;
|
|
1399
|
+
--cs-text-muted: var(--cs-text);
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
.cs-btn {
|
|
1403
|
+
border: 2px solid currentColor;
|
|
1404
|
+
}
|
|
1405
|
+
|
|
1406
|
+
.cs-card,
|
|
1407
|
+
.cs-card-elevated {
|
|
1408
|
+
border: 2px solid var(--cs-border);
|
|
1409
|
+
}
|
|
1410
|
+
}
|