veilkit 0.0.0-stage → 0.2.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/LICENSE +21 -0
  3. package/README.md +801 -2
  4. package/dist/angular/index.cjs +660 -0
  5. package/dist/angular/index.cjs.map +1 -0
  6. package/dist/angular/index.d.cts +113 -0
  7. package/dist/angular/index.d.ts +113 -0
  8. package/dist/angular/index.js +660 -0
  9. package/dist/angular/index.js.map +1 -0
  10. package/dist/cli/index.cjs +25 -0
  11. package/dist/cli/index.cjs.map +1 -0
  12. package/dist/cli/index.d.cts +1 -0
  13. package/dist/cli/index.d.ts +1 -0
  14. package/dist/cli/index.js +25 -0
  15. package/dist/cli/index.js.map +1 -0
  16. package/dist/controller-B6kFsWzi.d.cts +195 -0
  17. package/dist/controller-Ceub9kLC.d.ts +195 -0
  18. package/dist/element/index.cjs +660 -0
  19. package/dist/element/index.cjs.map +1 -0
  20. package/dist/element/index.d.cts +48 -0
  21. package/dist/element/index.d.ts +48 -0
  22. package/dist/element/index.js +660 -0
  23. package/dist/element/index.js.map +1 -0
  24. package/dist/index.cjs +660 -0
  25. package/dist/index.cjs.map +1 -0
  26. package/dist/index.d.cts +211 -0
  27. package/dist/index.d.ts +211 -0
  28. package/dist/index.js +660 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/native/index.cjs +2 -0
  31. package/dist/native/index.cjs.map +1 -0
  32. package/dist/native/index.d.cts +54 -0
  33. package/dist/native/index.d.ts +54 -0
  34. package/dist/native/index.js +2 -0
  35. package/dist/native/index.js.map +1 -0
  36. package/dist/react/index.cjs +660 -0
  37. package/dist/react/index.cjs.map +1 -0
  38. package/dist/react/index.d.cts +121 -0
  39. package/dist/react/index.d.ts +121 -0
  40. package/dist/react/index.js +660 -0
  41. package/dist/react/index.js.map +1 -0
  42. package/dist/styles.css +509 -0
  43. package/dist/svelte/index.cjs +660 -0
  44. package/dist/svelte/index.cjs.map +1 -0
  45. package/dist/svelte/index.d.cts +48 -0
  46. package/dist/svelte/index.d.ts +48 -0
  47. package/dist/svelte/index.js +660 -0
  48. package/dist/svelte/index.js.map +1 -0
  49. package/dist/themes/index.cjs +2 -0
  50. package/dist/themes/index.cjs.map +1 -0
  51. package/dist/themes/index.d.cts +18 -0
  52. package/dist/themes/index.d.ts +18 -0
  53. package/dist/themes/index.js +2 -0
  54. package/dist/themes/index.js.map +1 -0
  55. package/dist/types-CnR-rU97.d.cts +176 -0
  56. package/dist/types-CnR-rU97.d.ts +176 -0
  57. package/dist/veilkit.min.js +659 -0
  58. package/dist/vue/index.cjs +660 -0
  59. package/dist/vue/index.cjs.map +1 -0
  60. package/dist/vue/index.d.cts +512 -0
  61. package/dist/vue/index.d.ts +512 -0
  62. package/dist/vue/index.js +660 -0
  63. package/dist/vue/index.js.map +1 -0
  64. package/package.json +254 -4
@@ -0,0 +1,509 @@
1
+ /* === VEILKIT CORE STYLES === */
2
+ :root {
3
+ --veil-base: #e5e7eb;
4
+ --veil-highlight: rgba(255, 255, 255, 0.7);
5
+ --veil-radius: 6px;
6
+ --veil-duration: 1.5s;
7
+ --veil-easing: cubic-bezier(0.4, 0, 0.2, 1);
8
+ --veil-direction: ltr;
9
+ --veil-border: none;
10
+ --veil-blur: none;
11
+ --veil-glow: none;
12
+ --veil-contrast: #374151;
13
+
14
+ --veil-auto-base: #e5e7eb;
15
+ --veil-auto-highlight: rgba(255, 255, 255, 0.7);
16
+ --veil-auto-contrast: #374151;
17
+ }
18
+
19
+ @media (prefers-color-scheme: dark) {
20
+ :root {
21
+ --veil-auto-base: #1f2937;
22
+ --veil-auto-highlight: rgba(255, 255, 255, 0.12);
23
+ --veil-auto-contrast: #f3f4f6;
24
+ }
25
+ }
26
+
27
+ /* === DARK THEME SELECTORS === */
28
+ [data-theme="dark"], .dark, [data-theme="dark"] .veil-skeleton {
29
+ --veil-base: #1f2937;
30
+ --veil-highlight: rgba(255, 255, 255, 0.12);
31
+ --veil-contrast: #f3f4f6;
32
+ }
33
+
34
+ /* === THEME ATTRIBUTE CLASSES === */
35
+ [data-veil-theme="light"]{--veil-base:#e5e7eb;--veil-highlight:rgba(255, 255, 255, 0.7);--veil-radius:6px;--veil-duration:1.5s;--veil-easing:cubic-bezier(0.4, 0, 0.2, 1);--veil-border:none;--veil-contrast:#374151;}[data-veil-theme="dark"]{--veil-base:#1f2937;--veil-highlight:rgba(255, 255, 255, 0.12);--veil-radius:6px;--veil-duration:1.5s;--veil-easing:cubic-bezier(0.4, 0, 0.2, 1);--veil-border:none;--veil-contrast:#f3f4f6;}[data-veil-theme="auto"]{--veil-base:var(--veil-auto-base, #e5e7eb);--veil-highlight:var(--veil-auto-highlight, rgba(255, 255, 255, 0.7));--veil-radius:6px;--veil-duration:1.5s;--veil-easing:cubic-bezier(0.4, 0, 0.2, 1);--veil-border:none;--veil-contrast:var(--veil-auto-contrast, #374151);}[data-veil-theme="glass"]{--veil-base:rgba(255, 255, 255, 0.08);--veil-highlight:rgba(255, 255, 255, 0.25);--veil-radius:12px;--veil-duration:1.8s;--veil-easing:cubic-bezier(0.25, 1, 0.5, 1);--veil-border:1px solid rgba(255, 255, 255, 0.15);--veil-blur:12px;--veil-glow:inset 0 1px 1px 0 rgba(255, 255, 255, 0.25), 0 4px 16px 0 rgba(0, 0, 0, 0.12);--veil-contrast:#ffffff;}[data-veil-theme="ios"]{--veil-base:rgba(120, 120, 128, 0.18);--veil-highlight:rgba(255, 255, 255, 0.45);--veil-radius:10px;--veil-duration:1.4s;--veil-easing:cubic-bezier(0.32, 0.72, 0, 1);--veil-border:none;--veil-contrast:#1c1c1e;}[data-veil-theme="material"]{--veil-base:#e7e0ec;--veil-highlight:#f7f2fa;--veil-radius:12px;--veil-duration:1.6s;--veil-easing:cubic-bezier(0.2, 0, 0, 1);--veil-border:none;--veil-contrast:#1d1b20;}[data-veil-theme="minimal"]{--veil-base:#f1f3f5;--veil-highlight:#ffffff;--veil-radius:4px;--veil-duration:1.4s;--veil-easing:ease-in-out;--veil-border:none;--veil-contrast:#212529;}[data-veil-theme="mono"]{--veil-base:#e0e0e0;--veil-highlight:#ffffff;--veil-radius:0px;--veil-duration:1.2s;--veil-easing:linear;--veil-border:1px solid #cccccc;--veil-contrast:#000000;}[data-veil-theme="neon"]{--veil-base:#0c0b16;--veil-highlight:rgba(0, 240, 255, 0.5);--veil-radius:8px;--veil-duration:1.6s;--veil-easing:cubic-bezier(0.4, 0, 0.2, 1);--veil-border:1px solid rgba(0, 240, 255, 0.3);--veil-glow:0 0 12px rgba(0, 240, 255, 0.35);--veil-contrast:#00f0ff;}[data-veil-theme="sunset"]{--veil-base:#fed7aa;--veil-highlight:#fff7ed;--veil-radius:8px;--veil-duration:1.7s;--veil-easing:cubic-bezier(0.4, 0, 0.2, 1);--veil-border:none;--veil-glow:0 0 8px rgba(251, 146, 60, 0.25);--veil-contrast:#7c2d12;}[data-veil-theme="ocean"]{--veil-base:#0f2937;--veil-highlight:rgba(56, 189, 248, 0.45);--veil-radius:8px;--veil-duration:1.7s;--veil-easing:cubic-bezier(0.4, 0, 0.2, 1);--veil-border:1px solid rgba(56, 189, 248, 0.2);--veil-glow:0 0 10px rgba(56, 189, 248, 0.25);--veil-contrast:#38bdf8;}
36
+
37
+ /* === BASE SKELETON ELEMENT === */
38
+ .veil-skeleton {
39
+ position: relative;
40
+ display: block;
41
+ box-sizing: border-box;
42
+ background-color: var(--veil-base, #e5e7eb);
43
+ border-radius: var(--veil-radius, 6px);
44
+ border: var(--veil-border, none);
45
+ box-shadow: var(--veil-glow, none);
46
+ overflow: hidden;
47
+ pointer-events: none;
48
+ user-select: none;
49
+ min-height: 12px;
50
+ }
51
+
52
+ [data-veil-theme="glass"] .veil-skeleton,
53
+ .veil-skeleton[data-veil-theme="glass"] {
54
+ backdrop-filter: blur(var(--veil-blur, 12px));
55
+ -webkit-backdrop-filter: blur(var(--veil-blur, 12px));
56
+ }
57
+
58
+ /* === SHIMMER / ANIMATION OVERLAY === */
59
+ .veil-skeleton::after {
60
+ content: "";
61
+ position: absolute;
62
+ top: 0;
63
+ left: 0;
64
+ right: 0;
65
+ bottom: 0;
66
+ pointer-events: none;
67
+ will-change: transform, opacity;
68
+ background: linear-gradient(
69
+ 90deg,
70
+ transparent 0%,
71
+ var(--veil-highlight, rgba(255, 255, 255, 0.7)) 50%,
72
+ transparent 100%
73
+ );
74
+ animation-duration: var(--veil-duration, 1.5s);
75
+ animation-timing-function: var(--veil-easing, cubic-bezier(0.4, 0, 0.2, 1));
76
+ animation-iteration-count: infinite;
77
+ animation-delay: var(--veil-sync-delay, 0s);
78
+ animation-play-state: var(--veil-play-state, running);
79
+ }
80
+
81
+ /* Animation name mapping */
82
+ .veil-skeleton[data-veil-anim="shimmer"]::after,
83
+ .veil-skeleton:not([data-veil-anim])::after {
84
+ animation-name: veil-shimmer-ltr;
85
+ }
86
+ .veil-skeleton[data-veil-dir="rtl"]::after,
87
+ [dir="rtl"] .veil-skeleton[data-veil-anim="shimmer"]::after {
88
+ animation-name: veil-shimmer-rtl;
89
+ }
90
+ .veil-skeleton[data-veil-dir="ttb"]::after {
91
+ animation-name: veil-shimmer-ttb;
92
+ background: linear-gradient(180deg, transparent 0%, var(--veil-highlight, rgba(255,255,255,0.7)) 50%, transparent 100%);
93
+ }
94
+ .veil-skeleton[data-veil-dir="btt"]::after {
95
+ animation-name: veil-shimmer-btt;
96
+ background: linear-gradient(0deg, transparent 0%, var(--veil-highlight, rgba(255,255,255,0.7)) 50%, transparent 100%);
97
+ }
98
+
99
+ .veil-skeleton[data-veil-anim="wave"]::after {
100
+ animation-name: veil-wave;
101
+ }
102
+
103
+ .veil-skeleton[data-veil-anim="pulse"]::after {
104
+ background: none;
105
+ }
106
+ .veil-skeleton[data-veil-anim="pulse"] {
107
+ animation: veil-pulse var(--veil-duration, 1.5s) var(--veil-easing, ease-in-out) infinite;
108
+ animation-delay: var(--veil-sync-delay, 0s);
109
+ animation-play-state: var(--veil-play-state, running);
110
+ }
111
+
112
+ .veil-skeleton[data-veil-anim="blink"]::after {
113
+ background: none;
114
+ }
115
+ .veil-skeleton[data-veil-anim="blink"] {
116
+ animation: veil-blink var(--veil-duration, 1.2s) steps(2, start) infinite;
117
+ animation-delay: var(--veil-sync-delay, 0s);
118
+ animation-play-state: var(--veil-play-state, running);
119
+ }
120
+
121
+ .veil-skeleton[data-veil-anim="breathe"]::after {
122
+ background: none;
123
+ }
124
+ .veil-skeleton[data-veil-anim="breathe"] {
125
+ animation: veil-breathe var(--veil-duration, 2.2s) var(--veil-easing, ease-in-out) infinite;
126
+ animation-delay: var(--veil-sync-delay, 0s);
127
+ animation-play-state: var(--veil-play-state, running);
128
+ }
129
+
130
+ .veil-skeleton[data-veil-anim="glass-shine"]::after {
131
+ animation-name: veil-glass-shine;
132
+ background: linear-gradient(
133
+ 115deg,
134
+ transparent 20%,
135
+ var(--veil-highlight, rgba(255, 255, 255, 0.4)) 50%,
136
+ transparent 80%
137
+ );
138
+ }
139
+
140
+ .veil-skeleton[data-veil-anim="gradient-flow"]::after {
141
+ width: 300%;
142
+ animation-name: veil-gradient-flow;
143
+ background: linear-gradient(
144
+ 90deg,
145
+ var(--veil-base, #e5e7eb) 0%,
146
+ var(--veil-highlight, rgba(255, 255, 255, 0.8)) 30%,
147
+ var(--veil-base, #e5e7eb) 60%,
148
+ var(--veil-highlight, rgba(255, 255, 255, 0.8)) 100%
149
+ );
150
+ }
151
+
152
+ .veil-skeleton[data-veil-anim="aurora"]::after {
153
+ width: 160%;
154
+ height: 160%;
155
+ animation-name: veil-aurora;
156
+ background: radial-gradient(
157
+ circle at 50% 50%,
158
+ rgba(56, 189, 248, 0.3) 0%,
159
+ rgba(168, 85, 247, 0.25) 45%,
160
+ rgba(236, 72, 153, 0.2) 75%,
161
+ transparent 100%
162
+ );
163
+ }
164
+
165
+ .veil-skeleton[data-veil-anim="scan-line"]::after {
166
+ height: 30%;
167
+ animation-name: veil-scan-line;
168
+ background: linear-gradient(180deg, transparent, var(--veil-highlight, rgba(0, 240, 255, 0.8)), transparent);
169
+ }
170
+
171
+ .veil-skeleton[data-veil-anim="sparkle"]::after {
172
+ animation-name: veil-sparkle;
173
+ }
174
+
175
+ .veil-skeleton[data-veil-anim="neon-glow"] {
176
+ animation: veil-neon-glow var(--veil-duration, 1.6s) ease-in-out infinite;
177
+ animation-delay: var(--veil-sync-delay, 0s);
178
+ }
179
+
180
+ .veil-skeleton[data-veil-anim="ripple"]::after {
181
+ width: 100%;
182
+ height: 100%;
183
+ animation: veil-ripple var(--veil-duration, 1.8s) ease-out infinite;
184
+ background: radial-gradient(circle, var(--veil-highlight, rgba(255, 255, 255, 0.7)) 10%, transparent 70%);
185
+ }
186
+
187
+ .veil-skeleton[data-veil-anim="ping-pong"]::after {
188
+ animation-name: veil-ping-pong;
189
+ animation-duration: var(--veil-duration, 2.4s);
190
+ animation-timing-function: ease-in-out;
191
+ }
192
+
193
+ .veil-skeleton[data-veil-anim="wipe"]::after {
194
+ width: 100%;
195
+ animation-name: veil-wipe;
196
+ animation-duration: var(--veil-duration, 1.8s);
197
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
198
+ }
199
+
200
+ .veil-skeleton[data-veil-anim="cascade"]::after {
201
+ width: 100%;
202
+ animation-name: veil-cascade;
203
+ animation-duration: var(--veil-duration, 1.6s);
204
+ }
205
+
206
+ .veil-skeleton[data-veil-anim="spotlight"]::after {
207
+ width: 140%;
208
+ height: 140%;
209
+ animation-name: veil-spotlight;
210
+ animation-duration: var(--veil-duration, 2.5s);
211
+ background: radial-gradient(circle at center, var(--veil-highlight, rgba(255, 255, 255, 0.85)) 0%, transparent 60%);
212
+ }
213
+
214
+ .veil-skeleton[data-veil-anim="rainbow"]::after {
215
+ width: 250%;
216
+ animation-name: veil-rainbow;
217
+ animation-duration: var(--veil-duration, 3.5s);
218
+ background: linear-gradient(90deg, #f43f5e, #fbbf24, #10b981, #06b6d4, #8b5cf6, #f43f5e);
219
+ opacity: 0.25;
220
+ }
221
+
222
+ .veil-skeleton[data-veil-anim="heartbeat"] {
223
+ animation: veil-heartbeat var(--veil-duration, 1.4s) ease-in-out infinite;
224
+ animation-delay: var(--veil-sync-delay, 0s);
225
+ }
226
+ .veil-skeleton[data-veil-anim="heartbeat"]::after {
227
+ background: none;
228
+ }
229
+
230
+ .veil-skeleton[data-veil-anim="liquid"]::after {
231
+ width: 150%;
232
+ animation-name: veil-liquid;
233
+ animation-duration: var(--veil-duration, 2.2s);
234
+ background: radial-gradient(ellipse at center, var(--veil-highlight, rgba(255, 255, 255, 0.7)) 0%, transparent 70%);
235
+ }
236
+
237
+ .veil-skeleton[data-veil-anim="stripes"]::after {
238
+ width: 200%;
239
+ animation-name: veil-stripes;
240
+ animation-duration: var(--veil-duration, 1.5s);
241
+ animation-timing-function: linear;
242
+ background: repeating-linear-gradient(45deg, transparent, transparent 12px, var(--veil-highlight, rgba(255, 255, 255, 0.4)) 12px, var(--veil-highlight, rgba(255, 255, 255, 0.4)) 24px);
243
+ }
244
+
245
+ .veil-skeleton[data-veil-anim="halftone"] {
246
+ animation: veil-halftone var(--veil-duration, 1.8s) ease-in-out infinite;
247
+ }
248
+ .veil-skeleton[data-veil-anim="halftone"]::after {
249
+ background: radial-gradient(var(--veil-highlight, rgba(255, 255, 255, 0.5)) 15%, transparent 16%);
250
+ background-size: 8px 8px;
251
+ }
252
+
253
+ .veil-skeleton[data-veil-anim="border-glow"] {
254
+ animation: veil-border-glow var(--veil-duration, 1.6s) ease-in-out infinite;
255
+ box-shadow: 0 0 12px var(--veil-highlight, rgba(99, 102, 241, 0.5));
256
+ }
257
+ .veil-skeleton[data-veil-anim="border-glow"]::after {
258
+ background: none;
259
+ }
260
+
261
+ .veil-skeleton[data-veil-anim="typewriter"] {
262
+ animation: veil-typewriter var(--veil-duration, 1.5s) steps(20, end) infinite alternate;
263
+ }
264
+ .veil-skeleton[data-veil-anim="typewriter"]::after {
265
+ background: none;
266
+ }
267
+
268
+ .veil-skeleton[data-veil-anim="glitch"] {
269
+ animation: veil-glitch var(--veil-duration, 2s) steps(4, jump-none) infinite;
270
+ }
271
+ .veil-skeleton[data-veil-anim="glitch"]::after {
272
+ background: linear-gradient(90deg, transparent, var(--veil-highlight, rgba(255, 255, 255, 0.6)), transparent);
273
+ }
274
+
275
+ .veil-skeleton[data-veil-anim="pixelate"] {
276
+ animation: veil-pixelate var(--veil-duration, 1.4s) steps(5, start) infinite;
277
+ }
278
+ .veil-skeleton[data-veil-anim="pixelate"]::after {
279
+ background: none;
280
+ }
281
+
282
+ .veil-skeleton[data-veil-anim="tilt"] {
283
+ animation: veil-tilt var(--veil-duration, 2.5s) ease-in-out infinite;
284
+ transform-style: preserve-3d;
285
+ }
286
+ .veil-skeleton[data-veil-anim="tilt"]::after {
287
+ animation-name: veil-shimmer-ltr;
288
+ }
289
+
290
+ .veil-skeleton[data-veil-anim="diagonal-sweep"]::after {
291
+ width: 200%;
292
+ height: 200%;
293
+ animation-name: veil-diagonal-sweep;
294
+ animation-duration: var(--veil-duration, 2s);
295
+ background: linear-gradient(90deg, transparent 20%, var(--veil-highlight, rgba(255, 255, 255, 0.65)) 50%, transparent 80%);
296
+ }
297
+
298
+ .veil-skeleton[data-veil-anim="bounce-in"] {
299
+ animation: veil-bounce-in var(--veil-duration, 1.6s) cubic-bezier(0.34, 1.56, 0.64, 1) infinite;
300
+ }
301
+ .veil-skeleton[data-veil-anim="bounce-in"]::after {
302
+ background: none;
303
+ }
304
+
305
+ .veil-skeleton[data-veil-anim="fade-slide"] {
306
+ animation: veil-fade-slide var(--veil-duration, 1.6s) ease-in-out infinite;
307
+ }
308
+ .veil-skeleton[data-veil-anim="fade-slide"]::after {
309
+ background: none;
310
+ }
311
+
312
+ .veil-skeleton[data-veil-anim="none"]::after {
313
+ display: none !important;
314
+ }
315
+
316
+ /* === PRIMITIVE VARIANTS === */
317
+ .veil-skeleton[data-veil-shape="line"] {
318
+ height: 1em;
319
+ margin: 0.35em 0;
320
+ border-radius: var(--veil-radius, 4px);
321
+ }
322
+ .veil-skeleton[data-veil-shape="circle"] {
323
+ border-radius: 50% !important;
324
+ aspect-ratio: 1 / 1;
325
+ }
326
+ .veil-skeleton[data-veil-shape="heading"] {
327
+ height: 1.8em;
328
+ margin: 0.5em 0;
329
+ border-radius: var(--veil-radius, 6px);
330
+ }
331
+ .veil-skeleton[data-veil-shape="button"] {
332
+ height: 2.5rem;
333
+ border-radius: var(--veil-radius, 8px);
334
+ }
335
+ .veil-skeleton[data-veil-shape="badge"] {
336
+ height: 1.35rem;
337
+ border-radius: 9999px;
338
+ display: inline-block;
339
+ }
340
+ .veil-skeleton[data-veil-shape="icon"] {
341
+ width: 1.5rem;
342
+ height: 1.5rem;
343
+ border-radius: var(--veil-radius, 6px);
344
+ display: inline-block;
345
+ }
346
+ .veil-skeleton[data-veil-shape="input"] {
347
+ height: 2.6rem;
348
+ border-radius: var(--veil-radius, 8px);
349
+ }
350
+ .veil-skeleton[data-veil-shape="divider"] {
351
+ height: 1px;
352
+ width: 100%;
353
+ margin: 1rem 0;
354
+ min-height: 1px;
355
+ }
356
+
357
+ /* Natural randomized last-line widths */
358
+ .veil-lines-group > .veil-skeleton:last-child {
359
+ width: var(--veil-last-width, 68%);
360
+ }
361
+
362
+ /* === ACCESSIBILITY === */
363
+ .veil-sr-only {
364
+ position: absolute !important;
365
+ width: 1px !important;
366
+ height: 1px !important;
367
+ padding: 0 !important;
368
+ margin: -1px !important;
369
+ overflow: hidden !important;
370
+ clip: rect(0, 0, 0, 0) !important;
371
+ white-space: nowrap !important;
372
+ border-width: 0 !important;
373
+ }
374
+
375
+ /* prefers-reduced-motion */
376
+ @media (prefers-reduced-motion: reduce) {
377
+ .veil-skeleton::after {
378
+ animation: none !important;
379
+ display: none !important;
380
+ }
381
+ .veil-skeleton {
382
+ animation: veil-pulse 3s ease-in-out infinite !important;
383
+ transform: none !important;
384
+ }
385
+ }
386
+
387
+ /* forced-colors */
388
+ @media (forced-colors: active) {
389
+ .veil-skeleton {
390
+ forced-color-adjust: none;
391
+ background-color: ButtonFace !important;
392
+ outline: 1px solid Highlight !important;
393
+ }
394
+ .veil-skeleton::after {
395
+ display: none !important;
396
+ }
397
+ }
398
+
399
+ /* Offscreen & Tab Hidden Pausing */
400
+ [data-veil-tab-hidden="true"] .veil-skeleton,
401
+ [data-veil-tab-hidden="true"] .veil-skeleton::after,
402
+ [data-veil-offscreen="true"],
403
+ [data-veil-offscreen="true"]::after {
404
+ animation-play-state: paused !important;
405
+ }
406
+
407
+ /* === REVEAL TRANSITIONS === */
408
+ .veil-revealing {
409
+ position: relative;
410
+ }
411
+ .veil-reveal-fade {
412
+ animation: veil-reveal-fade 350ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
413
+ }
414
+ .veil-reveal-blur-in {
415
+ animation: veil-reveal-blur 400ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
416
+ }
417
+ .veil-reveal-slide-up {
418
+ animation: veil-reveal-slide 400ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
419
+ }
420
+ .veil-reveal-scale {
421
+ animation: veil-reveal-scale 350ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
422
+ }
423
+
424
+ @keyframes veil-reveal-fade {
425
+ 0% { opacity: 0; }
426
+ 100% { opacity: 1; }
427
+ }
428
+ @keyframes veil-reveal-blur {
429
+ 0% { opacity: 0; filter: blur(8px); }
430
+ 100% { opacity: 1; filter: blur(0px); }
431
+ }
432
+ @keyframes veil-reveal-slide {
433
+ 0% { opacity: 0; transform: translateY(12px); }
434
+ 100% { opacity: 1; transform: translateY(0); }
435
+ }
436
+ @keyframes veil-reveal-scale {
437
+ 0% { opacity: 0; transform: scale(0.96); }
438
+ 100% { opacity: 1; transform: scale(1); }
439
+ }
440
+
441
+ /* === SPINNERS, PROGRESS, OVERLAY, BUTTON, LAZY IMAGE === */
442
+ .veil-spinner {
443
+ display: inline-block;
444
+ box-sizing: border-box;
445
+ vertical-align: middle;
446
+ }
447
+ .veil-overlay {
448
+ position: absolute;
449
+ inset: 0;
450
+ display: flex;
451
+ flex-direction: column;
452
+ align-items: center;
453
+ justify-content: center;
454
+ gap: 12px;
455
+ background-color: var(--veil-overlay-bg, rgba(255, 255, 255, 0.75));
456
+ backdrop-filter: blur(var(--veil-overlay-blur, 6px));
457
+ -webkit-backdrop-filter: blur(var(--veil-overlay-blur, 6px));
458
+ z-index: 100;
459
+ transition: opacity 250ms ease;
460
+ }
461
+ .veil-overlay-fullscreen {
462
+ position: fixed !important;
463
+ z-index: 999999 !important;
464
+ }
465
+ .veil-progress-bar {
466
+ position: fixed;
467
+ top: 0;
468
+ left: 0;
469
+ right: 0;
470
+ height: 3px;
471
+ z-index: 999999;
472
+ background: transparent;
473
+ pointer-events: none;
474
+ }
475
+ .veil-progress-inner {
476
+ height: 100%;
477
+ background: var(--veil-progress-color, #3b82f6);
478
+ box-shadow: 0 0 10px var(--veil-progress-color, #3b82f6), 0 0 5px var(--veil-progress-color, #3b82f6);
479
+ transition: width 200ms ease, opacity 350ms ease;
480
+ }
481
+ .veil-btn-loading {
482
+ position: relative;
483
+ pointer-events: none;
484
+ cursor: default;
485
+ }
486
+ .veil-btn-spinner-wrap {
487
+ display: inline-flex;
488
+ align-items: center;
489
+ justify-content: center;
490
+ margin-right: 8px;
491
+ }
492
+ .veil-lazy-img-wrap {
493
+ position: relative;
494
+ overflow: hidden;
495
+ display: inline-block;
496
+ }
497
+ .veil-lazy-img {
498
+ transition: opacity 350ms ease, filter 350ms ease;
499
+ }
500
+ .veil-lazy-img-loading {
501
+ opacity: 0;
502
+ filter: blur(10px);
503
+ }
504
+ .veil-lazy-img-loaded {
505
+ opacity: 1;
506
+ filter: blur(0px);
507
+ }
508
+
509
+ @keyframes veil-shimmer-ltr{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes veil-shimmer-rtl{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}@keyframes veil-shimmer-ttb{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}@keyframes veil-shimmer-btt{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}@keyframes veil-wave{0%{transform:translateX(-120%) scaleX(0.8);opacity:0.3}50%{opacity:0.95}100%{transform:translateX(120%) scaleX(1.2);opacity:0.3}}@keyframes veil-pulse{0%,100%{opacity:1}50%{opacity:0.38}}@keyframes veil-blink{0%,49%{opacity:1}50%,99%{opacity:0.2}100%{opacity:1}}@keyframes veil-breathe{0%,100%{opacity:0.65;transform:scale(0.995)}50%{opacity:1;transform:scale(1.005)}}@keyframes veil-glass-shine{0%{transform:translate3d(-150%,-150%,0) rotate(35deg);opacity:0.1}40%,60%{opacity:0.85}100%{transform:translate3d(200%,200%,0) rotate(35deg);opacity:0.1}}@keyframes veil-gradient-flow{0%{transform:translateX(-66.6%)}100%{transform:translateX(0%)}}@keyframes veil-aurora{0%{transform:translate3d(-20%,-15%,0) rotate(0deg) scale(1);opacity:0.5}50%{transform:translate3d(25%,20%,0) rotate(180deg) scale(1.25);opacity:0.85}100%{transform:translate3d(-20%,-15%,0) rotate(360deg) scale(1);opacity:0.5}}@keyframes veil-scan-line{0%{transform:translateY(-100%);opacity:0.2}50%{opacity:1}100%{transform:translateY(300%);opacity:0.2}}@keyframes veil-sparkle{0%,100%{opacity:0.2;transform:scale(0.98)}25%{opacity:0.8;transform:scale(1.02)}50%{opacity:0.3;transform:scale(0.99)}75%{opacity:0.95;transform:scale(1.01)}}@keyframes veil-neon-glow{0%,100%{opacity:0.45;transform:scale(0.998)}50%{opacity:1;transform:scale(1.002)}}@keyframes veil-ripple{0%{transform:scale(0.2);opacity:0.9}100%{transform:scale(2.4);opacity:0}}@keyframes veil-ping-pong{0%,100%{transform:translateX(-100%)}50%{transform:translateX(100%)}}@keyframes veil-wipe{0%{transform:translateX(-100%) scaleX(0.2);opacity:0.2}50%{transform:translateX(0%) scaleX(1);opacity:0.9}100%{transform:translateX(100%) scaleX(0.2);opacity:0.2}}@keyframes veil-cascade{0%{transform:translateY(-100%);opacity:0.3}50%{opacity:0.95}100%{transform:translateY(100%);opacity:0.3}}@keyframes veil-spotlight{0%{transform:translate3d(-100%,-50%,0);opacity:0.15}50%{transform:translate3d(50%,0%,0);opacity:0.85}100%{transform:translate3d(200%,50%,0);opacity:0.15}}@keyframes veil-rainbow{0%{filter:hue-rotate(0deg);transform:translateX(-50%)}100%{filter:hue-rotate(360deg);transform:translateX(0%)}}@keyframes veil-heartbeat{0%,100%{transform:scale(1);opacity:0.7}14%{transform:scale(1.025);opacity:1}28%{transform:scale(1);opacity:0.75}42%{transform:scale(1.035);opacity:1}70%{transform:scale(1);opacity:0.7}}@keyframes veil-liquid{0%,100%{transform:translateX(-100%) scaleY(0.9) skewX(-8deg);opacity:0.4}50%{transform:translateX(100%) scaleY(1.1) skewX(8deg);opacity:0.9}}@keyframes veil-stripes{0%{transform:translateX(-48px)}100%{transform:translateX(0px)}}@keyframes veil-halftone{0%,100%{opacity:0.35;transform:scale(0.995)}50%{opacity:0.95;transform:scale(1.005)}}@keyframes veil-border-glow{0%,100%{opacity:0.5;transform:scale(0.998)}50%{opacity:1;transform:scale(1.002)}}@keyframes veil-typewriter{0%{transform:scaleX(0.1);transform-origin:left;opacity:0.4}100%{transform:scaleX(1);transform-origin:left;opacity:1}}@keyframes veil-glitch{0%,100%{transform:translate(0);opacity:0.8}20%{transform:translate(-2px,1px);opacity:0.95}40%{transform:translate(2px,-1px);opacity:0.85}60%{transform:translate(-1px,-1px);opacity:1}80%{transform:translate(1px,2px);opacity:0.9}}@keyframes veil-pixelate{0%,100%{opacity:0.3;transform:scale(0.99)}25%{opacity:0.75;transform:scale(1)}50%{opacity:0.45;transform:scale(0.995)}75%{opacity:0.9;transform:scale(1.005)}}@keyframes veil-tilt{0%,100%{transform:perspective(600px) rotateX(0deg) rotateY(0deg);opacity:0.7}50%{transform:perspective(600px) rotateX(4deg) rotateY(-4deg);opacity:1}}@keyframes veil-diagonal-sweep{0%{transform:translate3d(-100%,-100%,0) rotate(-45deg)}100%{transform:translate3d(150%,150%,0) rotate(-45deg)}}@keyframes veil-bounce-in{0%,100%{transform:scale(0.985);opacity:0.6}50%{transform:scale(1.015);opacity:1}}@keyframes veil-fade-slide{0%,100%{transform:translateY(3px);opacity:0.5}50%{transform:translateY(-3px);opacity:1}}[data-veil-anim="stagger"]>*{animation-delay:calc(var(--veil-stagger-idx,0)*120ms)!important}