@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
package/dist/glass.css
ADDED
|
@@ -0,0 +1,1208 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* CASOON Atlas Glass - Complete Glassmorphism 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
|
+
* Advanced glassmorphism effects with backdrop-filter support
|
|
9
|
+
* Part of CASOON Atlas UI effects library
|
|
10
|
+
*
|
|
11
|
+
* Usage: @import "@casoon/atlas-styles/glass";
|
|
12
|
+
* Package: @casoon/atlas-styles
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* Note: @import "tailwindcss"; should be added by the consumer */
|
|
16
|
+
|
|
17
|
+
/*!
|
|
18
|
+
* CASOON Atlas Glass - Complete Glassmorphism System for Tailwind v4
|
|
19
|
+
* Pure Glass Effects & Glass Cards
|
|
20
|
+
*
|
|
21
|
+
* Features:
|
|
22
|
+
* - Glass Backdrop Filter Effects
|
|
23
|
+
* - Glass Background & Border Utilities
|
|
24
|
+
* - Glass Cards (with backdrop-filter)
|
|
25
|
+
* - Glass UI Components (buttons, nav, etc.)
|
|
26
|
+
* - Glass Animation Effects
|
|
27
|
+
* - SSR-safe, tree-shakeable, framework-agnostic
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/* Note: @import "tailwindcss"; should be added by the consumer */
|
|
31
|
+
|
|
32
|
+
/* =========================================================
|
|
33
|
+
GLASS DESIGN TOKENS & THEME
|
|
34
|
+
========================================================= */
|
|
35
|
+
@theme {
|
|
36
|
+
/* === GLASS COLOR SYSTEM === */
|
|
37
|
+
--cs-glass-white: #ffffff;
|
|
38
|
+
--cs-glass-black: #000000;
|
|
39
|
+
--cs-glass-blue: #3b82f6;
|
|
40
|
+
--cs-glass-purple: #9333ea;
|
|
41
|
+
--cs-glass-green: #22c55e;
|
|
42
|
+
--cs-glass-pink: #ec4899;
|
|
43
|
+
--cs-glass-amber: #f59e0b;
|
|
44
|
+
|
|
45
|
+
/* Glass background opacity tokens - Complete range */
|
|
46
|
+
--cs-glass-bg-xs: rgba(255, 255, 255, 0.02);
|
|
47
|
+
--cs-glass-bg-sm: rgba(255, 255, 255, 0.07);
|
|
48
|
+
--cs-glass-bg-light: rgba(255, 255, 255, 0.1);
|
|
49
|
+
--cs-glass-bg-weak: rgba(255, 255, 255, 0.05);
|
|
50
|
+
--cs-glass-bg-md: rgba(255, 255, 255, 0.12);
|
|
51
|
+
--cs-glass-bg-medium: rgba(255, 255, 255, 0.15);
|
|
52
|
+
--cs-glass-bg-lg: rgba(255, 255, 255, 0.18);
|
|
53
|
+
--cs-glass-bg-strong: rgba(255, 255, 255, 0.2);
|
|
54
|
+
--cs-glass-bg-xl: rgba(255, 255, 255, 0.25);
|
|
55
|
+
--cs-glass-bg-2xl: rgba(255, 255, 255, 0.35);
|
|
56
|
+
--cs-glass-bg-3xl: rgba(255, 255, 255, 0.45);
|
|
57
|
+
--cs-glass-bg-4xl: rgba(255, 255, 255, 0.6);
|
|
58
|
+
--cs-glass-bg-5xl: rgba(255, 255, 255, 0.75);
|
|
59
|
+
|
|
60
|
+
/* Dark glass backgrounds - Complete range */
|
|
61
|
+
--cs-glass-bg-dark: rgba(0, 0, 0, 0.1);
|
|
62
|
+
--cs-glass-bg-dark-xs: rgba(0, 0, 0, 0.02);
|
|
63
|
+
--cs-glass-bg-dark-sm: rgba(0, 0, 0, 0.07);
|
|
64
|
+
--cs-glass-bg-dark-md: rgba(0, 0, 0, 0.12);
|
|
65
|
+
--cs-glass-bg-dark-lg: rgba(0, 0, 0, 0.18);
|
|
66
|
+
--cs-glass-bg-dark-strong: rgba(0, 0, 0, 0.2);
|
|
67
|
+
--cs-glass-bg-dark-xl: rgba(0, 0, 0, 0.25);
|
|
68
|
+
--cs-glass-bg-dark-2xl: rgba(0, 0, 0, 0.35);
|
|
69
|
+
--cs-glass-bg-dark-3xl: rgba(0, 0, 0, 0.45);
|
|
70
|
+
--cs-glass-bg-dark-4xl: rgba(0, 0, 0, 0.6);
|
|
71
|
+
--cs-glass-bg-dark-5xl: rgba(0, 0, 0, 0.75);
|
|
72
|
+
|
|
73
|
+
/* Colored glass backgrounds */
|
|
74
|
+
--cs-glass-bg-blue: rgba(59, 130, 246, 0.1);
|
|
75
|
+
--cs-glass-bg-purple: rgba(147, 51, 234, 0.1);
|
|
76
|
+
--cs-glass-bg-green: rgba(34, 197, 94, 0.1);
|
|
77
|
+
--cs-glass-bg-pink: rgba(236, 72, 153, 0.1);
|
|
78
|
+
--cs-glass-bg-amber: rgba(245, 158, 11, 0.1);
|
|
79
|
+
|
|
80
|
+
/* Glass border opacity tokens - Complete range */
|
|
81
|
+
--cs-glass-border-xs: rgba(255, 255, 255, 0.05);
|
|
82
|
+
--cs-glass-border-sm: rgba(255, 255, 255, 0.08);
|
|
83
|
+
--cs-glass-border-light: rgba(255, 255, 255, 0.1);
|
|
84
|
+
--cs-glass-border-md: rgba(255, 255, 255, 0.15);
|
|
85
|
+
--cs-glass-border-medium: rgba(255, 255, 255, 0.2);
|
|
86
|
+
--cs-glass-border-lg: rgba(255, 255, 255, 0.25);
|
|
87
|
+
--cs-glass-border-strong: rgba(255, 255, 255, 0.3);
|
|
88
|
+
--cs-glass-border-xl: rgba(255, 255, 255, 0.4);
|
|
89
|
+
--cs-glass-border-2xl: rgba(255, 255, 255, 0.5);
|
|
90
|
+
--cs-glass-border-3xl: rgba(255, 255, 255, 0.65);
|
|
91
|
+
|
|
92
|
+
/* Colored glass borders */
|
|
93
|
+
--cs-glass-border-blue: rgba(59, 130, 246, 0.2);
|
|
94
|
+
--cs-glass-border-purple: rgba(147, 51, 234, 0.2);
|
|
95
|
+
--cs-glass-border-green: rgba(34, 197, 94, 0.2);
|
|
96
|
+
--cs-glass-border-pink: rgba(236, 72, 153, 0.2);
|
|
97
|
+
--cs-glass-border-amber: rgba(245, 158, 11, 0.2);
|
|
98
|
+
|
|
99
|
+
/* Glass effects tokens */
|
|
100
|
+
--cs-glass-blur-sm: blur(8px);
|
|
101
|
+
--cs-glass-blur: blur(16px);
|
|
102
|
+
--cs-glass-blur-lg: blur(24px);
|
|
103
|
+
--cs-glass-blur-xl: blur(32px);
|
|
104
|
+
|
|
105
|
+
--cs-glass-radius-sm: 0.25rem;
|
|
106
|
+
--cs-glass-radius: 0.5rem;
|
|
107
|
+
--cs-glass-radius-lg: 0.75rem;
|
|
108
|
+
--cs-glass-radius-xl: 1rem;
|
|
109
|
+
--cs-glass-radius-2xl: 1.5rem;
|
|
110
|
+
--cs-glass-radius-3xl: 2rem;
|
|
111
|
+
|
|
112
|
+
/* Glass shadow tokens */
|
|
113
|
+
--cs-glass-shadow-light: rgba(0, 0, 0, 0.05);
|
|
114
|
+
--cs-glass-shadow-medium: rgba(0, 0, 0, 0.1);
|
|
115
|
+
--cs-glass-shadow-strong: rgba(0, 0, 0, 0.15);
|
|
116
|
+
--cs-glass-shadow-xl: rgba(0, 0, 0, 0.2);
|
|
117
|
+
|
|
118
|
+
--cs-glass-shadow-sm-def: 0 1px 2px var(--cs-glass-shadow-light);
|
|
119
|
+
--cs-glass-shadow-def: 0 8px 32px var(--cs-glass-shadow-medium);
|
|
120
|
+
--cs-glass-shadow-lg-def: 0 20px 40px var(--cs-glass-shadow-strong);
|
|
121
|
+
--cs-glass-shadow-xl-def: 0 25px 50px var(--cs-glass-shadow-xl);
|
|
122
|
+
|
|
123
|
+
/* Glass misc tokens */
|
|
124
|
+
--cs-glass-transition: 0.3s;
|
|
125
|
+
--cs-glass-tooltip-bg: rgba(0, 0, 0, 0.8);
|
|
126
|
+
--cs-glass-bg-hover: rgba(255, 255, 255, 0.15);
|
|
127
|
+
--cs-glass-bg-light-hover: rgba(255, 255, 255, 0.25);
|
|
128
|
+
--cs-glass-bg-contrast: rgba(255, 255, 255, 0.2);
|
|
129
|
+
--cs-glass-bg-dark-contrast: rgba(0, 0, 0, 0.2);
|
|
130
|
+
--cs-glass-bg-fallback: rgba(255, 255, 255, 0.25);
|
|
131
|
+
--cs-glass-bg-dark-fallback: rgba(0, 0, 0, 0.25);
|
|
132
|
+
--cs-glass-bg-blue-fallback: rgba(59, 130, 246, 0.2);
|
|
133
|
+
--cs-glass-bg-purple-fallback: rgba(147, 51, 234, 0.2);
|
|
134
|
+
--cs-glass-bg-green-fallback: rgba(34, 197, 94, 0.2);
|
|
135
|
+
--cs-glass-bg-pink-fallback: rgba(236, 72, 153, 0.2);
|
|
136
|
+
--cs-glass-bg-amber-fallback: rgba(245, 158, 11, 0.2);
|
|
137
|
+
--cs-glass-focus-ring: rgba(59, 130, 246, 0.5);
|
|
138
|
+
--cs-glass-backdrop-filter-extra: none;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* =========================================================
|
|
142
|
+
CORE GLASS UTILITIES
|
|
143
|
+
Base glass backdrop-filter utilities
|
|
144
|
+
========================================================= */
|
|
145
|
+
|
|
146
|
+
/* Primary glass utility */
|
|
147
|
+
@utility cs-glass {
|
|
148
|
+
background: var(--cs-glass-bg-light);
|
|
149
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
150
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
151
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
152
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
153
|
+
transition: all var(--cs-glass-transition) ease;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* Glass size variants - all intensity levels */
|
|
157
|
+
@utility cs-glass-xs {
|
|
158
|
+
background: var(--cs-glass-bg-xs);
|
|
159
|
+
border: 1px solid var(--cs-glass-border-xs);
|
|
160
|
+
border-radius: var(--cs-glass-radius-sm);
|
|
161
|
+
backdrop-filter: var(--cs-glass-blur-sm);
|
|
162
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-sm);
|
|
163
|
+
transition: all var(--cs-glass-transition) ease;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@utility cs-glass-sm {
|
|
167
|
+
background: var(--cs-glass-bg-sm);
|
|
168
|
+
border: 1px solid var(--cs-glass-border-sm);
|
|
169
|
+
border-radius: var(--cs-glass-radius-sm);
|
|
170
|
+
backdrop-filter: var(--cs-glass-blur-sm);
|
|
171
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-sm);
|
|
172
|
+
transition: all var(--cs-glass-transition) ease;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
@utility cs-glass-md {
|
|
176
|
+
background: var(--cs-glass-bg-md);
|
|
177
|
+
border: 1px solid var(--cs-glass-border-md);
|
|
178
|
+
border-radius: var(--cs-glass-radius);
|
|
179
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
180
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
181
|
+
transition: all var(--cs-glass-transition) ease;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@utility cs-glass-lg {
|
|
185
|
+
background: var(--cs-glass-bg-lg);
|
|
186
|
+
border: 1px solid var(--cs-glass-border-lg);
|
|
187
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
188
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
189
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
190
|
+
transition: all var(--cs-glass-transition) ease;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@utility cs-glass-xl {
|
|
194
|
+
background: var(--cs-glass-bg-xl);
|
|
195
|
+
border: 1px solid var(--cs-glass-border-xl);
|
|
196
|
+
border-radius: var(--cs-glass-radius-xl);
|
|
197
|
+
backdrop-filter: var(--cs-glass-blur-lg);
|
|
198
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-lg);
|
|
199
|
+
transition: all var(--cs-glass-transition) ease;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
@utility cs-glass-2xl {
|
|
203
|
+
background: var(--cs-glass-bg-2xl);
|
|
204
|
+
border: 1px solid var(--cs-glass-border-2xl);
|
|
205
|
+
border-radius: var(--cs-glass-radius-2xl);
|
|
206
|
+
backdrop-filter: var(--cs-glass-blur-lg);
|
|
207
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-lg);
|
|
208
|
+
transition: all var(--cs-glass-transition) ease;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
@utility cs-glass-3xl {
|
|
212
|
+
background: var(--cs-glass-bg-3xl);
|
|
213
|
+
border: 1px solid var(--cs-glass-border-3xl);
|
|
214
|
+
border-radius: var(--cs-glass-radius-3xl);
|
|
215
|
+
backdrop-filter: var(--cs-glass-blur-xl);
|
|
216
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-xl);
|
|
217
|
+
transition: all var(--cs-glass-transition) ease;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
@utility cs-glass-4xl {
|
|
221
|
+
background: var(--cs-glass-bg-4xl);
|
|
222
|
+
border: 2px solid var(--cs-glass-border-3xl);
|
|
223
|
+
border-radius: var(--cs-glass-radius-3xl);
|
|
224
|
+
backdrop-filter: var(--cs-glass-blur-xl);
|
|
225
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-xl);
|
|
226
|
+
transition: all var(--cs-glass-transition) ease;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
@utility cs-glass-5xl {
|
|
230
|
+
background: var(--cs-glass-bg-5xl);
|
|
231
|
+
border: 2px solid var(--cs-glass-border-3xl);
|
|
232
|
+
border-radius: var(--cs-glass-radius-3xl);
|
|
233
|
+
backdrop-filter: var(--cs-glass-blur-xl);
|
|
234
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-xl);
|
|
235
|
+
transition: all var(--cs-glass-transition) ease;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* Dark glass variant */
|
|
239
|
+
@utility cs-glass-dark {
|
|
240
|
+
background: var(--cs-glass-bg-dark);
|
|
241
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
242
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
243
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
244
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
245
|
+
transition: all var(--cs-glass-transition) ease;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/* =========================================================
|
|
249
|
+
GLASS BACKGROUND UTILITIES
|
|
250
|
+
Different opacity levels for glass backgrounds
|
|
251
|
+
========================================================= */
|
|
252
|
+
@utility cs-glass-bg-xs {
|
|
253
|
+
background: var(--cs-glass-bg-xs);
|
|
254
|
+
}
|
|
255
|
+
@utility cs-glass-bg-sm {
|
|
256
|
+
background: var(--cs-glass-bg-sm);
|
|
257
|
+
}
|
|
258
|
+
@utility cs-glass-bg-light {
|
|
259
|
+
background: var(--cs-glass-bg-light);
|
|
260
|
+
}
|
|
261
|
+
@utility cs-glass-bg-weak {
|
|
262
|
+
background: var(--cs-glass-bg-weak);
|
|
263
|
+
}
|
|
264
|
+
@utility cs-glass-bg-md {
|
|
265
|
+
background: var(--cs-glass-bg-md);
|
|
266
|
+
}
|
|
267
|
+
@utility cs-glass-bg-medium {
|
|
268
|
+
background: var(--cs-glass-bg-medium);
|
|
269
|
+
}
|
|
270
|
+
@utility cs-glass-bg-lg {
|
|
271
|
+
background: var(--cs-glass-bg-lg);
|
|
272
|
+
}
|
|
273
|
+
@utility cs-glass-bg-strong {
|
|
274
|
+
background: var(--cs-glass-bg-strong);
|
|
275
|
+
}
|
|
276
|
+
@utility cs-glass-bg-xl {
|
|
277
|
+
background: var(--cs-glass-bg-xl);
|
|
278
|
+
}
|
|
279
|
+
@utility cs-glass-bg-2xl {
|
|
280
|
+
background: var(--cs-glass-bg-2xl);
|
|
281
|
+
}
|
|
282
|
+
@utility cs-glass-bg-3xl {
|
|
283
|
+
background: var(--cs-glass-bg-3xl);
|
|
284
|
+
}
|
|
285
|
+
@utility cs-glass-bg-4xl {
|
|
286
|
+
background: var(--cs-glass-bg-4xl);
|
|
287
|
+
}
|
|
288
|
+
@utility cs-glass-bg-5xl {
|
|
289
|
+
background: var(--cs-glass-bg-5xl);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/* Dark glass backgrounds */
|
|
293
|
+
@utility cs-glass-bg-dark {
|
|
294
|
+
background: var(--cs-glass-bg-dark);
|
|
295
|
+
}
|
|
296
|
+
@utility cs-glass-bg-dark-xs {
|
|
297
|
+
background: var(--cs-glass-bg-dark-xs);
|
|
298
|
+
}
|
|
299
|
+
@utility cs-glass-bg-dark-sm {
|
|
300
|
+
background: var(--cs-glass-bg-dark-sm);
|
|
301
|
+
}
|
|
302
|
+
@utility cs-glass-bg-dark-md {
|
|
303
|
+
background: var(--cs-glass-bg-dark-md);
|
|
304
|
+
}
|
|
305
|
+
@utility cs-glass-bg-dark-lg {
|
|
306
|
+
background: var(--cs-glass-bg-dark-lg);
|
|
307
|
+
}
|
|
308
|
+
@utility cs-glass-bg-dark-strong {
|
|
309
|
+
background: var(--cs-glass-bg-dark-strong);
|
|
310
|
+
}
|
|
311
|
+
@utility cs-glass-bg-dark-xl {
|
|
312
|
+
background: var(--cs-glass-bg-dark-xl);
|
|
313
|
+
}
|
|
314
|
+
@utility cs-glass-bg-dark-2xl {
|
|
315
|
+
background: var(--cs-glass-bg-dark-2xl);
|
|
316
|
+
}
|
|
317
|
+
@utility cs-glass-bg-dark-3xl {
|
|
318
|
+
background: var(--cs-glass-bg-dark-3xl);
|
|
319
|
+
}
|
|
320
|
+
@utility cs-glass-bg-dark-4xl {
|
|
321
|
+
background: var(--cs-glass-bg-dark-4xl);
|
|
322
|
+
}
|
|
323
|
+
@utility cs-glass-bg-dark-5xl {
|
|
324
|
+
background: var(--cs-glass-bg-dark-5xl);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/* Colored glass backgrounds */
|
|
328
|
+
@utility cs-glass-bg-blue {
|
|
329
|
+
background: var(--cs-glass-bg-blue);
|
|
330
|
+
}
|
|
331
|
+
@utility cs-glass-bg-purple {
|
|
332
|
+
background: var(--cs-glass-bg-purple);
|
|
333
|
+
}
|
|
334
|
+
@utility cs-glass-bg-green {
|
|
335
|
+
background: var(--cs-glass-bg-green);
|
|
336
|
+
}
|
|
337
|
+
@utility cs-glass-bg-pink {
|
|
338
|
+
background: var(--cs-glass-bg-pink);
|
|
339
|
+
}
|
|
340
|
+
@utility cs-glass-bg-amber {
|
|
341
|
+
background: var(--cs-glass-bg-amber);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/* =========================================================
|
|
345
|
+
GLASS COLOR UTILITIES
|
|
346
|
+
Complete glass effects with specific color themes
|
|
347
|
+
========================================================= */
|
|
348
|
+
@utility cs-glass-white {
|
|
349
|
+
background: var(--cs-glass-bg-light);
|
|
350
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
351
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
352
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
353
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
354
|
+
color: var(--cs-glass-black);
|
|
355
|
+
transition: all var(--cs-glass-transition) ease;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
@utility cs-glass-black {
|
|
359
|
+
background: var(--cs-glass-bg-dark);
|
|
360
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
361
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
362
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
363
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
364
|
+
color: var(--cs-glass-white);
|
|
365
|
+
transition: all var(--cs-glass-transition) ease;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
@utility cs-glass-blue {
|
|
369
|
+
background: var(--cs-glass-bg-blue);
|
|
370
|
+
border: 1px solid var(--cs-glass-border-blue);
|
|
371
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
372
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
373
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
374
|
+
color: var(--cs-glass-blue);
|
|
375
|
+
transition: all var(--cs-glass-transition) ease;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
@utility cs-glass-purple {
|
|
379
|
+
background: var(--cs-glass-bg-purple);
|
|
380
|
+
border: 1px solid var(--cs-glass-border-purple);
|
|
381
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
382
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
383
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
384
|
+
color: var(--cs-glass-purple);
|
|
385
|
+
transition: all var(--cs-glass-transition) ease;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
@utility cs-glass-green {
|
|
389
|
+
background: var(--cs-glass-bg-green);
|
|
390
|
+
border: 1px solid var(--cs-glass-border-green);
|
|
391
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
392
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
393
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
394
|
+
color: var(--cs-glass-green);
|
|
395
|
+
transition: all var(--cs-glass-transition) ease;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
@utility cs-glass-pink {
|
|
399
|
+
background: var(--cs-glass-bg-pink);
|
|
400
|
+
border: 1px solid var(--cs-glass-border-pink);
|
|
401
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
402
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
403
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
404
|
+
color: var(--cs-glass-pink);
|
|
405
|
+
transition: all var(--cs-glass-transition) ease;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
@utility cs-glass-amber {
|
|
409
|
+
background: var(--cs-glass-bg-amber);
|
|
410
|
+
border: 1px solid var(--cs-glass-border-amber);
|
|
411
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
412
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
413
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
414
|
+
color: var(--cs-glass-amber);
|
|
415
|
+
transition: all var(--cs-glass-transition) ease;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/* =========================================================
|
|
419
|
+
GLASS BORDER UTILITIES
|
|
420
|
+
========================================================= */
|
|
421
|
+
@utility cs-glass-border-xs {
|
|
422
|
+
border-color: var(--cs-glass-border-xs);
|
|
423
|
+
}
|
|
424
|
+
@utility cs-glass-border-sm {
|
|
425
|
+
border-color: var(--cs-glass-border-sm);
|
|
426
|
+
}
|
|
427
|
+
@utility cs-glass-border-light {
|
|
428
|
+
border-color: var(--cs-glass-border-light);
|
|
429
|
+
}
|
|
430
|
+
@utility cs-glass-border-md {
|
|
431
|
+
border-color: var(--cs-glass-border-md);
|
|
432
|
+
}
|
|
433
|
+
@utility cs-glass-border-medium {
|
|
434
|
+
border-color: var(--cs-glass-border-medium);
|
|
435
|
+
}
|
|
436
|
+
@utility cs-glass-border-lg {
|
|
437
|
+
border-color: var(--cs-glass-border-lg);
|
|
438
|
+
}
|
|
439
|
+
@utility cs-glass-border-strong {
|
|
440
|
+
border-color: var(--cs-glass-border-strong);
|
|
441
|
+
}
|
|
442
|
+
@utility cs-glass-border-xl {
|
|
443
|
+
border-color: var(--cs-glass-border-xl);
|
|
444
|
+
}
|
|
445
|
+
@utility cs-glass-border-2xl {
|
|
446
|
+
border-color: var(--cs-glass-border-2xl);
|
|
447
|
+
}
|
|
448
|
+
@utility cs-glass-border-3xl {
|
|
449
|
+
border-color: var(--cs-glass-border-3xl);
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/* Colored glass borders */
|
|
453
|
+
@utility cs-glass-border-blue {
|
|
454
|
+
border-color: var(--cs-glass-border-blue);
|
|
455
|
+
}
|
|
456
|
+
@utility cs-glass-border-purple {
|
|
457
|
+
border-color: var(--cs-glass-border-purple);
|
|
458
|
+
}
|
|
459
|
+
@utility cs-glass-border-green {
|
|
460
|
+
border-color: var(--cs-glass-border-green);
|
|
461
|
+
}
|
|
462
|
+
@utility cs-glass-border-pink {
|
|
463
|
+
border-color: var(--cs-glass-border-pink);
|
|
464
|
+
}
|
|
465
|
+
@utility cs-glass-border-amber {
|
|
466
|
+
border-color: var(--cs-glass-border-amber);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/* =========================================================
|
|
470
|
+
GLASS BLUR UTILITIES
|
|
471
|
+
========================================================= */
|
|
472
|
+
@utility cs-glass-blur-sm {
|
|
473
|
+
backdrop-filter: var(--cs-glass-blur-sm);
|
|
474
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-sm);
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
@utility cs-glass-blur {
|
|
478
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
479
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
@utility cs-glass-blur-lg {
|
|
483
|
+
backdrop-filter: var(--cs-glass-blur-lg);
|
|
484
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-lg);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
@utility cs-glass-blur-xl {
|
|
488
|
+
backdrop-filter: var(--cs-glass-blur-xl);
|
|
489
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-xl);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
/* =========================================================
|
|
493
|
+
GLASS RADIUS UTILITIES
|
|
494
|
+
========================================================= */
|
|
495
|
+
@utility cs-glass-radius-sm {
|
|
496
|
+
border-radius: var(--cs-glass-radius-sm);
|
|
497
|
+
}
|
|
498
|
+
@utility cs-glass-radius {
|
|
499
|
+
border-radius: var(--cs-glass-radius);
|
|
500
|
+
}
|
|
501
|
+
@utility cs-glass-radius-lg {
|
|
502
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
503
|
+
}
|
|
504
|
+
@utility cs-glass-radius-xl {
|
|
505
|
+
border-radius: var(--cs-glass-radius-xl);
|
|
506
|
+
}
|
|
507
|
+
@utility cs-glass-radius-2xl {
|
|
508
|
+
border-radius: var(--cs-glass-radius-2xl);
|
|
509
|
+
}
|
|
510
|
+
@utility cs-glass-radius-3xl {
|
|
511
|
+
border-radius: var(--cs-glass-radius-3xl);
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/* Glass rounded utilities - aliases for radius utilities */
|
|
515
|
+
@utility cs-glass-rounded {
|
|
516
|
+
border-radius: var(--cs-glass-radius);
|
|
517
|
+
}
|
|
518
|
+
@utility cs-glass-rounded-sm {
|
|
519
|
+
border-radius: var(--cs-glass-radius-sm);
|
|
520
|
+
}
|
|
521
|
+
@utility cs-glass-rounded-lg {
|
|
522
|
+
border-radius: var(--cs-glass-radius-lg);
|
|
523
|
+
}
|
|
524
|
+
@utility cs-glass-rounded-xl {
|
|
525
|
+
border-radius: var(--cs-glass-radius-xl);
|
|
526
|
+
}
|
|
527
|
+
@utility cs-glass-rounded-2xl {
|
|
528
|
+
border-radius: var(--cs-glass-radius-2xl);
|
|
529
|
+
}
|
|
530
|
+
@utility cs-glass-rounded-3xl {
|
|
531
|
+
border-radius: var(--cs-glass-radius-3xl);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/* =========================================================
|
|
535
|
+
GLASS SHADOW UTILITIES
|
|
536
|
+
========================================================= */
|
|
537
|
+
@utility cs-glass-shadow-sm {
|
|
538
|
+
box-shadow: var(--cs-glass-shadow-sm-def);
|
|
539
|
+
}
|
|
540
|
+
@utility cs-glass-shadow {
|
|
541
|
+
box-shadow: var(--cs-glass-shadow-def);
|
|
542
|
+
}
|
|
543
|
+
@utility cs-glass-shadow-lg {
|
|
544
|
+
box-shadow: var(--cs-glass-shadow-lg-def);
|
|
545
|
+
}
|
|
546
|
+
@utility cs-glass-shadow-xl {
|
|
547
|
+
box-shadow: var(--cs-glass-shadow-xl-def);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/* =========================================================
|
|
551
|
+
GLASS ADD-ON UTILITIES
|
|
552
|
+
========================================================= */
|
|
553
|
+
|
|
554
|
+
/* Acrylic look (adds saturation/contrast on the backdrop) */
|
|
555
|
+
@utility cs-glass-acrylic {
|
|
556
|
+
--cs-glass-backdrop-filter-extra: saturate(135%) contrast(110%);
|
|
557
|
+
backdrop-filter: var(--cs-glass-backdrop-filter-extra) var(--cs-glass-blur);
|
|
558
|
+
-webkit-backdrop-filter: var(--cs-glass-backdrop-filter-extra)
|
|
559
|
+
var(--cs-glass-blur);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/* Frosted edge (inner highlight for stronger glass rim) */
|
|
563
|
+
@utility cs-glass-frosted-edge {
|
|
564
|
+
box-shadow:
|
|
565
|
+
inset 0 1px 0 color-mix(in srgb, var(--cs-glass-white) 40%, transparent),
|
|
566
|
+
var(--cs-glass-shadow-def);
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
/* Noise/grain overlay */
|
|
570
|
+
@utility cs-glass-noise {
|
|
571
|
+
position: relative;
|
|
572
|
+
isolation: isolate;
|
|
573
|
+
&::after {
|
|
574
|
+
content: '';
|
|
575
|
+
position: absolute;
|
|
576
|
+
inset: 0;
|
|
577
|
+
pointer-events: none;
|
|
578
|
+
mix-blend-mode: overlay;
|
|
579
|
+
opacity: 0.07;
|
|
580
|
+
background-image: var(--cs-glass-noise-img, none);
|
|
581
|
+
background-size: 200px 200px;
|
|
582
|
+
z-index: 1;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
/* Text contrast helpers for content placed on glass */
|
|
587
|
+
@utility cs-glass-on {
|
|
588
|
+
color: var(--cs-glass-on, #0f172a);
|
|
589
|
+
}
|
|
590
|
+
@utility cs-glass-on-invert {
|
|
591
|
+
color: var(--cs-glass-on-invert, #ffffff);
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/* Disabled/read-only helper for interactive glass */
|
|
595
|
+
@utility cs-glass-disabled {
|
|
596
|
+
opacity: 0.6;
|
|
597
|
+
filter: grayscale(20%);
|
|
598
|
+
pointer-events: none;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
/* Elevation helpers (z-index layering for overlays on glass) */
|
|
602
|
+
@utility cs-glass-elev-1 {
|
|
603
|
+
z-index: 10;
|
|
604
|
+
}
|
|
605
|
+
@utility cs-glass-elev-2 {
|
|
606
|
+
z-index: 20;
|
|
607
|
+
}
|
|
608
|
+
@utility cs-glass-elev-3 {
|
|
609
|
+
z-index: 30;
|
|
610
|
+
}
|
|
611
|
+
@utility cs-glass-elev-4 {
|
|
612
|
+
z-index: 40;
|
|
613
|
+
}
|
|
614
|
+
@utility cs-glass-elev-5 {
|
|
615
|
+
z-index: 50;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
/* Blend mode utilities (creative tints over imagery) */
|
|
619
|
+
@utility cs-glass-blend-overlay {
|
|
620
|
+
mix-blend-mode: overlay;
|
|
621
|
+
}
|
|
622
|
+
@utility cs-glass-blend-screen {
|
|
623
|
+
mix-blend-mode: screen;
|
|
624
|
+
}
|
|
625
|
+
@utility cs-glass-blend-multiply {
|
|
626
|
+
mix-blend-mode: multiply;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/* Layout helpers for sticky bars & performance hints */
|
|
630
|
+
@utility cs-glass-sticky {
|
|
631
|
+
position: sticky;
|
|
632
|
+
top: 0;
|
|
633
|
+
}
|
|
634
|
+
@utility cs-glass-will-change {
|
|
635
|
+
will-change: transform, backdrop-filter;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
/* Isolation utility for Canvas/Background-Layering issues */
|
|
639
|
+
@utility cs-glass-isolate {
|
|
640
|
+
isolation: isolate;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
/* =========================================================
|
|
644
|
+
GLASS INTERACTIVE STATE UTILITIES
|
|
645
|
+
Hover and focus states for glass elements
|
|
646
|
+
========================================================= */
|
|
647
|
+
@utility cs-glass-bg-hover {
|
|
648
|
+
background: var(--cs-glass-bg-hover);
|
|
649
|
+
}
|
|
650
|
+
@utility cs-glass-bg-light-hover {
|
|
651
|
+
background: var(--cs-glass-bg-light-hover);
|
|
652
|
+
}
|
|
653
|
+
@utility cs-glass-focus-ring {
|
|
654
|
+
outline: 2px solid var(--cs-glass-focus-ring);
|
|
655
|
+
outline-offset: 2px;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
/* =========================================================
|
|
659
|
+
GLASS CARDS SYSTEM
|
|
660
|
+
Cards with glass backdrop-filter effects
|
|
661
|
+
========================================================= */
|
|
662
|
+
|
|
663
|
+
/* Glass card base component */
|
|
664
|
+
@utility cs-glass-card {
|
|
665
|
+
background: var(--cs-glass-bg-light);
|
|
666
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
667
|
+
border-radius: 20px;
|
|
668
|
+
padding: 2rem;
|
|
669
|
+
box-shadow: var(--cs-glass-shadow-def);
|
|
670
|
+
transition: all var(--cs-glass-transition) ease;
|
|
671
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
672
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
673
|
+
|
|
674
|
+
&:hover {
|
|
675
|
+
background: var(--cs-glass-bg-hover);
|
|
676
|
+
box-shadow: 0 20px 40px var(--cs-glass-shadow-strong);
|
|
677
|
+
transform: translateY(-2px);
|
|
678
|
+
border: 1px solid var(--cs-glass-border-strong);
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
&:focus-within {
|
|
682
|
+
outline: 2px solid var(--cs-glass-focus-ring);
|
|
683
|
+
outline-offset: 2px;
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
/* Light glass card variant */
|
|
688
|
+
@utility cs-glass-card-light {
|
|
689
|
+
background: var(--cs-glass-bg-medium);
|
|
690
|
+
border: 1px solid var(--cs-glass-border-strong);
|
|
691
|
+
border-radius: 20px;
|
|
692
|
+
padding: 2rem;
|
|
693
|
+
box-shadow: var(--cs-glass-shadow-def);
|
|
694
|
+
transition: all var(--cs-glass-transition) ease;
|
|
695
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
696
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
697
|
+
|
|
698
|
+
&:hover {
|
|
699
|
+
background: var(--cs-glass-bg-light-hover);
|
|
700
|
+
transform: translateY(-1px);
|
|
701
|
+
box-shadow: 0 12px 24px var(--cs-glass-shadow-strong);
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
&:focus-within {
|
|
705
|
+
outline: 2px solid var(--cs-glass-focus-ring);
|
|
706
|
+
outline-offset: 2px;
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
/* Glass Feature Card Component */
|
|
711
|
+
@utility cs-card-feature-glass {
|
|
712
|
+
background: var(--cs-glass-bg-light);
|
|
713
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
714
|
+
backdrop-filter: saturate(140%) blur(12px);
|
|
715
|
+
-webkit-backdrop-filter: saturate(140%) blur(12px);
|
|
716
|
+
display: grid;
|
|
717
|
+
grid-template-rows: auto auto 1fr;
|
|
718
|
+
gap: 1.5rem;
|
|
719
|
+
border-radius: 20px;
|
|
720
|
+
box-shadow: var(--cs-glass-shadow-def);
|
|
721
|
+
padding: 2rem;
|
|
722
|
+
text-align: center;
|
|
723
|
+
position: relative;
|
|
724
|
+
transition: all var(--cs-glass-transition) ease;
|
|
725
|
+
|
|
726
|
+
&:hover {
|
|
727
|
+
transform: translateY(-2px);
|
|
728
|
+
box-shadow: 0 20px 40px var(--cs-glass-shadow-strong);
|
|
729
|
+
background: var(--cs-glass-bg-hover);
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
/* Glass Product Card Component */
|
|
734
|
+
@utility cs-card-product-glass {
|
|
735
|
+
background: var(--cs-glass-bg-light);
|
|
736
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
737
|
+
backdrop-filter: saturate(140%) blur(12px);
|
|
738
|
+
-webkit-backdrop-filter: saturate(140%) blur(12px);
|
|
739
|
+
border-radius: 20px;
|
|
740
|
+
box-shadow: var(--cs-glass-shadow-def);
|
|
741
|
+
overflow: hidden;
|
|
742
|
+
transition: all var(--cs-glass-transition) ease;
|
|
743
|
+
position: relative;
|
|
744
|
+
display: flex;
|
|
745
|
+
flex-direction: column;
|
|
746
|
+
max-width: 20rem;
|
|
747
|
+
|
|
748
|
+
&:hover {
|
|
749
|
+
transform: translateY(-2px);
|
|
750
|
+
box-shadow: 0 20px 40px var(--cs-glass-shadow-strong);
|
|
751
|
+
background: var(--cs-glass-bg-hover);
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
/* Glass Pricing Card Component */
|
|
756
|
+
@utility cs-card-pricing-glass {
|
|
757
|
+
background: var(--cs-glass-bg-light);
|
|
758
|
+
border: 2px solid var(--cs-glass-border-medium);
|
|
759
|
+
backdrop-filter: saturate(140%) blur(12px);
|
|
760
|
+
-webkit-backdrop-filter: saturate(140%) blur(12px);
|
|
761
|
+
display: grid;
|
|
762
|
+
grid-template-rows: auto 1fr auto;
|
|
763
|
+
border-radius: 20px;
|
|
764
|
+
box-shadow: var(--cs-glass-shadow-def);
|
|
765
|
+
padding: 2rem;
|
|
766
|
+
text-align: center;
|
|
767
|
+
position: relative;
|
|
768
|
+
transition: all var(--cs-glass-transition) ease;
|
|
769
|
+
|
|
770
|
+
&:hover {
|
|
771
|
+
transform: translateY(-4px);
|
|
772
|
+
box-shadow: 0 25px 50px var(--cs-glass-shadow-xl);
|
|
773
|
+
background: var(--cs-glass-bg-hover);
|
|
774
|
+
border-color: var(--cs-glass-border-strong);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
/* =========================================================
|
|
779
|
+
GLASS UI COMPONENTS
|
|
780
|
+
Ready-to-use glass UI elements with backdrop-filter
|
|
781
|
+
========================================================= */
|
|
782
|
+
|
|
783
|
+
/* Glass navigation component */
|
|
784
|
+
@utility cs-glass-nav {
|
|
785
|
+
background: var(--cs-glass-bg-light);
|
|
786
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
787
|
+
border-radius: 12px;
|
|
788
|
+
box-shadow: var(--cs-glass-shadow-def);
|
|
789
|
+
transition: all var(--cs-glass-transition) ease;
|
|
790
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
791
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
@utility cs-glass-nav-light {
|
|
795
|
+
background: var(--cs-glass-bg-medium);
|
|
796
|
+
border: 1px solid var(--cs-glass-border-strong);
|
|
797
|
+
border-radius: 12px;
|
|
798
|
+
box-shadow: var(--cs-glass-shadow-def);
|
|
799
|
+
transition: all var(--cs-glass-transition) ease;
|
|
800
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
801
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
/* Glass button component */
|
|
805
|
+
@utility cs-glass-button {
|
|
806
|
+
background: var(--cs-glass-bg-light);
|
|
807
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
808
|
+
border-radius: 12px;
|
|
809
|
+
padding: 0.75rem 1.5rem;
|
|
810
|
+
transition: all var(--cs-glass-transition) ease;
|
|
811
|
+
cursor: pointer;
|
|
812
|
+
min-height: 2.5rem; /* touch target */
|
|
813
|
+
min-width: 2.5rem;
|
|
814
|
+
-webkit-tap-highlight-color: transparent;
|
|
815
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
816
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
817
|
+
|
|
818
|
+
&:hover {
|
|
819
|
+
background: var(--cs-glass-bg-hover);
|
|
820
|
+
transform: translateY(-1px);
|
|
821
|
+
box-shadow: 0 8px 16px var(--cs-glass-shadow-medium);
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
&:focus,
|
|
825
|
+
&:focus-visible {
|
|
826
|
+
outline: 2px solid var(--cs-glass-focus-ring);
|
|
827
|
+
outline-offset: 2px;
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
&:active {
|
|
831
|
+
transform: translateY(0);
|
|
832
|
+
box-shadow: 0 4px 8px var(--cs-glass-shadow-medium);
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
/* Glass toast component */
|
|
837
|
+
@utility cs-glass-toast {
|
|
838
|
+
background: var(--cs-glass-bg-light);
|
|
839
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
840
|
+
border-radius: 0.75rem;
|
|
841
|
+
padding: 1rem 1.5rem;
|
|
842
|
+
box-shadow: 0 8px 32px var(--cs-glass-shadow-strong);
|
|
843
|
+
position: relative;
|
|
844
|
+
overflow: hidden;
|
|
845
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
846
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
/* Glass tooltip component */
|
|
850
|
+
@utility cs-glass-tooltip {
|
|
851
|
+
background: var(--cs-glass-tooltip-bg);
|
|
852
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
853
|
+
border-radius: 0.5rem;
|
|
854
|
+
padding: 0.5rem 0.75rem;
|
|
855
|
+
box-shadow: 0 4px 16px var(--cs-glass-shadow-xl);
|
|
856
|
+
font-size: 0.875rem;
|
|
857
|
+
color: white;
|
|
858
|
+
white-space: nowrap;
|
|
859
|
+
z-index: 50;
|
|
860
|
+
backdrop-filter: var(--cs-glass-blur-sm);
|
|
861
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-sm);
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
/* Glass dropdown component */
|
|
865
|
+
@utility cs-glass-dropdown {
|
|
866
|
+
background: var(--cs-glass-bg-light);
|
|
867
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
868
|
+
border-radius: 0.75rem;
|
|
869
|
+
box-shadow: var(--cs-glass-shadow-def);
|
|
870
|
+
padding: 0.5rem;
|
|
871
|
+
min-width: 12rem;
|
|
872
|
+
z-index: 50;
|
|
873
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
874
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
/* Glass Forms System */
|
|
878
|
+
@utility cs-form-glass {
|
|
879
|
+
display: flex;
|
|
880
|
+
flex-direction: column;
|
|
881
|
+
gap: 1rem;
|
|
882
|
+
backdrop-filter: blur(20px) saturate(180%);
|
|
883
|
+
-webkit-backdrop-filter: blur(20px) saturate(180%);
|
|
884
|
+
background: var(--cs-glass-bg-light);
|
|
885
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
886
|
+
border-radius: 1rem;
|
|
887
|
+
padding: 2rem;
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
@utility cs-input-glass {
|
|
891
|
+
padding: 0.75rem 1rem;
|
|
892
|
+
background: var(--cs-glass-bg-md);
|
|
893
|
+
border: 1px solid var(--cs-glass-border-strong);
|
|
894
|
+
border-radius: 0.75rem;
|
|
895
|
+
transition: all var(--cs-glass-transition) ease;
|
|
896
|
+
color: inherit;
|
|
897
|
+
backdrop-filter: blur(10px);
|
|
898
|
+
-webkit-backdrop-filter: blur(10px);
|
|
899
|
+
|
|
900
|
+
&:focus {
|
|
901
|
+
outline: none;
|
|
902
|
+
border-color: var(--cs-glass-focus-ring);
|
|
903
|
+
box-shadow: 0 0 0 3px
|
|
904
|
+
color-mix(in srgb, var(--cs-glass-focus-ring) 20%, transparent);
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
&::placeholder {
|
|
908
|
+
color: color-mix(in srgb, currentColor 60%, transparent);
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
@utility cs-button-primary-glass {
|
|
913
|
+
background: var(--cs-glass-bg-medium);
|
|
914
|
+
border: 1px solid var(--cs-glass-border-strong);
|
|
915
|
+
backdrop-filter: blur(10px);
|
|
916
|
+
-webkit-backdrop-filter: blur(10px);
|
|
917
|
+
color: inherit;
|
|
918
|
+
padding: 0.875rem 1.5rem;
|
|
919
|
+
border-radius: 0.75rem;
|
|
920
|
+
font-weight: 600;
|
|
921
|
+
cursor: pointer;
|
|
922
|
+
transition: all var(--cs-glass-transition) ease;
|
|
923
|
+
|
|
924
|
+
&:hover {
|
|
925
|
+
background: var(--cs-glass-bg-strong);
|
|
926
|
+
transform: translateY(-1px);
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
&:focus {
|
|
930
|
+
outline: 2px solid transparent;
|
|
931
|
+
outline-offset: 2px;
|
|
932
|
+
box-shadow:
|
|
933
|
+
0 0 0 2px var(--cs-glass-focus-ring),
|
|
934
|
+
0 0 0 4px color-mix(in srgb, var(--cs-glass-focus-ring) 20%, transparent);
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
/* =========================================================
|
|
939
|
+
GLASS PRO EFFECTS
|
|
940
|
+
Advanced animations and glass effects
|
|
941
|
+
========================================================= */
|
|
942
|
+
|
|
943
|
+
/* Animated morph effects */
|
|
944
|
+
@utility cs-glass-morph-in {
|
|
945
|
+
animation: glassMorphIn 0.4s ease-out both;
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
@utility cs-glass-morph-out {
|
|
949
|
+
animation: glassMorphOut 0.3s ease-in both;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
@keyframes glassMorphIn {
|
|
953
|
+
from {
|
|
954
|
+
opacity: 0;
|
|
955
|
+
transform: scale(0.95);
|
|
956
|
+
backdrop-filter: blur(0px);
|
|
957
|
+
}
|
|
958
|
+
to {
|
|
959
|
+
opacity: 1;
|
|
960
|
+
transform: scale(1);
|
|
961
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
@keyframes glassMorphOut {
|
|
966
|
+
from {
|
|
967
|
+
opacity: 1;
|
|
968
|
+
transform: scale(1);
|
|
969
|
+
}
|
|
970
|
+
to {
|
|
971
|
+
opacity: 0;
|
|
972
|
+
transform: scale(0.95);
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
/* 3D hover glass effect */
|
|
977
|
+
@utility cs-glass-3d-hover {
|
|
978
|
+
transform-style: preserve-3d;
|
|
979
|
+
transition:
|
|
980
|
+
transform 0.3s ease,
|
|
981
|
+
box-shadow 0.3s ease;
|
|
982
|
+
|
|
983
|
+
&:hover {
|
|
984
|
+
transform: rotateX(6deg) rotateY(-4deg) scale(1.02);
|
|
985
|
+
box-shadow: 0 24px 48px var(--cs-glass-shadow-xl);
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
/* Glossy highlight overlays */
|
|
990
|
+
@utility cs-glass-gloss-top {
|
|
991
|
+
position: relative;
|
|
992
|
+
&::before {
|
|
993
|
+
content: '';
|
|
994
|
+
position: absolute;
|
|
995
|
+
top: 0;
|
|
996
|
+
left: 0;
|
|
997
|
+
right: 0;
|
|
998
|
+
height: 20%;
|
|
999
|
+
background: linear-gradient(
|
|
1000
|
+
to bottom,
|
|
1001
|
+
rgba(255, 255, 255, 0.4),
|
|
1002
|
+
transparent
|
|
1003
|
+
);
|
|
1004
|
+
border-top-left-radius: inherit;
|
|
1005
|
+
border-top-right-radius: inherit;
|
|
1006
|
+
pointer-events: none;
|
|
1007
|
+
z-index: 2;
|
|
1008
|
+
mix-blend-mode: soft-light;
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
@utility cs-glass-gloss-left {
|
|
1013
|
+
position: relative;
|
|
1014
|
+
&::before {
|
|
1015
|
+
content: '';
|
|
1016
|
+
position: absolute;
|
|
1017
|
+
top: 0;
|
|
1018
|
+
bottom: 0;
|
|
1019
|
+
left: 0;
|
|
1020
|
+
width: 15%;
|
|
1021
|
+
background: linear-gradient(
|
|
1022
|
+
to right,
|
|
1023
|
+
rgba(255, 255, 255, 0.35),
|
|
1024
|
+
transparent
|
|
1025
|
+
);
|
|
1026
|
+
pointer-events: none;
|
|
1027
|
+
z-index: 2;
|
|
1028
|
+
mix-blend-mode: soft-light;
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
@utility cs-glass-gloss-right {
|
|
1033
|
+
position: relative;
|
|
1034
|
+
&::before {
|
|
1035
|
+
content: '';
|
|
1036
|
+
position: absolute;
|
|
1037
|
+
top: 0;
|
|
1038
|
+
bottom: 0;
|
|
1039
|
+
right: 0;
|
|
1040
|
+
width: 15%;
|
|
1041
|
+
background: linear-gradient(
|
|
1042
|
+
to left,
|
|
1043
|
+
rgba(255, 255, 255, 0.35),
|
|
1044
|
+
transparent
|
|
1045
|
+
);
|
|
1046
|
+
pointer-events: none;
|
|
1047
|
+
z-index: 2;
|
|
1048
|
+
mix-blend-mode: soft-light;
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
/* Pro theme presets */
|
|
1053
|
+
@utility cs-glass-theme-neon {
|
|
1054
|
+
--cs-glass-bg-light: rgba(58, 227, 255, 0.1);
|
|
1055
|
+
--cs-glass-border-medium: rgba(58, 227, 255, 0.25);
|
|
1056
|
+
--cs-glass-shadow-def: 0 8px 32px rgba(58, 227, 255, 0.25);
|
|
1057
|
+
--cs-glass-focus-ring: rgba(58, 227, 255, 0.6);
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
@utility cs-glass-theme-carbon {
|
|
1061
|
+
--cs-glass-bg-light: rgba(30, 30, 30, 0.25);
|
|
1062
|
+
--cs-glass-border-medium: rgba(255, 255, 255, 0.08);
|
|
1063
|
+
--cs-glass-shadow-def: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
1064
|
+
--cs-glass-focus-ring: rgba(255, 255, 255, 0.3);
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
@utility cs-glass-theme-pastel {
|
|
1068
|
+
--cs-glass-bg-light: rgba(255, 230, 250, 0.12);
|
|
1069
|
+
--cs-glass-border-medium: rgba(255, 230, 250, 0.25);
|
|
1070
|
+
--cs-glass-shadow-def: 0 8px 32px rgba(255, 230, 250, 0.25);
|
|
1071
|
+
--cs-glass-focus-ring: rgba(255, 230, 250, 0.6);
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
/* =========================================================
|
|
1075
|
+
RESPONSIVE GLASS UTILITIES
|
|
1076
|
+
========================================================= */
|
|
1077
|
+
|
|
1078
|
+
/* Responsive glass blur based on container size */
|
|
1079
|
+
@utility cs-glass-responsive {
|
|
1080
|
+
background: var(--cs-glass-bg-light);
|
|
1081
|
+
border: 1px solid var(--cs-glass-border-medium);
|
|
1082
|
+
backdrop-filter: var(--cs-glass-blur-sm);
|
|
1083
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-sm);
|
|
1084
|
+
background-clip: padding-box;
|
|
1085
|
+
|
|
1086
|
+
@container (min-width: 320px) {
|
|
1087
|
+
backdrop-filter: var(--cs-glass-blur-sm);
|
|
1088
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-sm);
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
@container (min-width: 640px) {
|
|
1092
|
+
backdrop-filter: var(--cs-glass-blur);
|
|
1093
|
+
-webkit-backdrop-filter: var(--cs-glass-blur);
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
@container (min-width: 1024px) {
|
|
1097
|
+
backdrop-filter: var(--cs-glass-blur-lg);
|
|
1098
|
+
-webkit-backdrop-filter: var(--cs-glass-blur-lg);
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
/* Base backdrop filter utility */
|
|
1103
|
+
@utility cs-glass-backdrop-clip {
|
|
1104
|
+
background-clip: padding-box;
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
/* =========================================================
|
|
1108
|
+
FALLBACKS & BROWSER SUPPORT
|
|
1109
|
+
========================================================= */
|
|
1110
|
+
|
|
1111
|
+
/* For browsers that don't support backdrop-filter,
|
|
1112
|
+
provide a fallback with slightly higher opacity background */
|
|
1113
|
+
@supports not (
|
|
1114
|
+
(-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))
|
|
1115
|
+
) {
|
|
1116
|
+
.cs-glass,
|
|
1117
|
+
.cs-glass-card,
|
|
1118
|
+
.cs-glass-card-light,
|
|
1119
|
+
.cs-glass-nav,
|
|
1120
|
+
.cs-glass-nav-light,
|
|
1121
|
+
.cs-glass-button,
|
|
1122
|
+
.cs-glass-toast,
|
|
1123
|
+
.cs-glass-tooltip,
|
|
1124
|
+
.cs-glass-dropdown {
|
|
1125
|
+
background: var(--cs-glass-bg-fallback);
|
|
1126
|
+
box-shadow: 0 4px 16px var(--cs-glass-shadow-medium);
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
.cs-glass-dark {
|
|
1130
|
+
background: var(--cs-glass-bg-dark-fallback);
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
.cs-glass-blue {
|
|
1134
|
+
background: var(--cs-glass-bg-blue-fallback);
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
.cs-glass-purple {
|
|
1138
|
+
background: var(--cs-glass-bg-purple-fallback);
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
.cs-glass-green {
|
|
1142
|
+
background: var(--cs-glass-bg-green-fallback);
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
.cs-glass-pink {
|
|
1146
|
+
background: var(--cs-glass-bg-pink-fallback);
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
.cs-glass-amber {
|
|
1150
|
+
background: var(--cs-glass-bg-amber-fallback);
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
.cs-card-feature-glass,
|
|
1154
|
+
.cs-card-product-glass,
|
|
1155
|
+
.cs-card-pricing-glass {
|
|
1156
|
+
background: rgba(255, 255, 255, 0.4);
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
/* High contrast mode support */
|
|
1161
|
+
@media (prefers-contrast: high) {
|
|
1162
|
+
.cs-glass,
|
|
1163
|
+
.cs-glass-card,
|
|
1164
|
+
.cs-glass-nav,
|
|
1165
|
+
.cs-glass-button {
|
|
1166
|
+
border-width: 2px;
|
|
1167
|
+
background: var(--cs-glass-bg-contrast);
|
|
1168
|
+
}
|
|
1169
|
+
.cs-glass-dark {
|
|
1170
|
+
background: var(--cs-glass-bg-dark-contrast);
|
|
1171
|
+
border-color: var(--cs-glass-border-strong);
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
/* Forced colors mode support (Windows High Contrast) */
|
|
1176
|
+
@media (forced-colors: active) {
|
|
1177
|
+
.cs-glass,
|
|
1178
|
+
.cs-glass-card,
|
|
1179
|
+
.cs-glass-nav,
|
|
1180
|
+
.cs-glass-button {
|
|
1181
|
+
background: Canvas;
|
|
1182
|
+
border-color: CanvasText;
|
|
1183
|
+
box-shadow: none;
|
|
1184
|
+
}
|
|
1185
|
+
.cs-glass-tooltip {
|
|
1186
|
+
background: CanvasText;
|
|
1187
|
+
color: Canvas;
|
|
1188
|
+
border-color: CanvasText;
|
|
1189
|
+
box-shadow: none;
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
/* Mobile optimization - reduce blur on small screens */
|
|
1194
|
+
@media (max-width: 480px) {
|
|
1195
|
+
:root {
|
|
1196
|
+
--cs-glass-blur: var(--cs-glass-blur-sm);
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
/* Reduced motion optimizations */
|
|
1201
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1202
|
+
.cs-glass-morph-in,
|
|
1203
|
+
.cs-glass-morph-out,
|
|
1204
|
+
.cs-glass-3d-hover {
|
|
1205
|
+
animation: none !important;
|
|
1206
|
+
transform: none !important;
|
|
1207
|
+
}
|
|
1208
|
+
}
|