@zhang_jifan/fanui 2.1.0

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 (127) hide show
  1. package/ACCESSIBILITY.md +61 -0
  2. package/CHANGELOG.md +112 -0
  3. package/COMMERCIAL-LICENSE.md +71 -0
  4. package/DESIGN-SYSTEM.md +294 -0
  5. package/LICENSE +661 -0
  6. package/README.md +348 -0
  7. package/USAGE.md +1926 -0
  8. package/_index.scss +20 -0
  9. package/dist/fanui.cjs +15 -0
  10. package/dist/fanui.css +28209 -0
  11. package/dist/fanui.d.ts +353 -0
  12. package/dist/fanui.esm.js +71 -0
  13. package/dist/fanui.js +4782 -0
  14. package/dist/fanui.min.css +1 -0
  15. package/dist/fanui.mjs +71 -0
  16. package/dist/modules/fanui-advanced.css +830 -0
  17. package/dist/modules/fanui-advanced.min.css +129 -0
  18. package/dist/modules/fanui-alert.css +575 -0
  19. package/dist/modules/fanui-alert.min.css +122 -0
  20. package/dist/modules/fanui-badge.css +426 -0
  21. package/dist/modules/fanui-badge.min.css +77 -0
  22. package/dist/modules/fanui-base.css +1394 -0
  23. package/dist/modules/fanui-base.min.css +236 -0
  24. package/dist/modules/fanui-blog.css +762 -0
  25. package/dist/modules/fanui-blog.min.css +108 -0
  26. package/dist/modules/fanui-button.css +526 -0
  27. package/dist/modules/fanui-button.min.css +56 -0
  28. package/dist/modules/fanui-card.css +291 -0
  29. package/dist/modules/fanui-card.min.css +52 -0
  30. package/dist/modules/fanui-choice.css +539 -0
  31. package/dist/modules/fanui-choice.min.css +83 -0
  32. package/dist/modules/fanui-dashboard.css +1057 -0
  33. package/dist/modules/fanui-dashboard.min.css +160 -0
  34. package/dist/modules/fanui-data.css +687 -0
  35. package/dist/modules/fanui-data.min.css +125 -0
  36. package/dist/modules/fanui-feedback.css +432 -0
  37. package/dist/modules/fanui-feedback.min.css +79 -0
  38. package/dist/modules/fanui-form.css +779 -0
  39. package/dist/modules/fanui-form.min.css +123 -0
  40. package/dist/modules/fanui-glass.css +497 -0
  41. package/dist/modules/fanui-glass.min.css +46 -0
  42. package/dist/modules/fanui-input-plus.css +799 -0
  43. package/dist/modules/fanui-input-plus.min.css +124 -0
  44. package/dist/modules/fanui-interactive.css +960 -0
  45. package/dist/modules/fanui-interactive.min.css +138 -0
  46. package/dist/modules/fanui-layout.css +4399 -0
  47. package/dist/modules/fanui-layout.min.css +1172 -0
  48. package/dist/modules/fanui-marketing.css +1125 -0
  49. package/dist/modules/fanui-marketing.min.css +144 -0
  50. package/dist/modules/fanui-nav.css +458 -0
  51. package/dist/modules/fanui-nav.min.css +76 -0
  52. package/dist/modules/fanui-overlay.css +547 -0
  53. package/dist/modules/fanui-overlay.min.css +91 -0
  54. package/dist/modules/fanui-table.css +290 -0
  55. package/dist/modules/fanui-table.min.css +62 -0
  56. package/dist/modules/fanui-tabs.css +333 -0
  57. package/dist/modules/fanui-tabs.min.css +58 -0
  58. package/dist/modules/fanui-themes.css +2728 -0
  59. package/dist/modules/fanui-themes.min.css +40 -0
  60. package/dist/modules/fanui-tokens.css +587 -0
  61. package/dist/modules/fanui-tokens.min.css +3 -0
  62. package/dist/modules/fanui-utilities.css +6557 -0
  63. package/dist/modules/fanui-utilities.min.css +1762 -0
  64. package/dist/modules/sizes.json +103 -0
  65. package/docs/MIGRATION-v2.md +179 -0
  66. package/examples/01-script-tag.html +149 -0
  67. package/examples/02-react/README.md +39 -0
  68. package/examples/02-react/index.html +12 -0
  69. package/examples/02-react/package.json +20 -0
  70. package/examples/02-react/src/App.jsx +108 -0
  71. package/examples/02-react/src/main.jsx +13 -0
  72. package/examples/02-react/src/useFanUI.js +87 -0
  73. package/examples/02-react/vite.config.js +6 -0
  74. package/examples/03-vue3/README.md +67 -0
  75. package/examples/03-vue3/index.html +12 -0
  76. package/examples/03-vue3/package.json +19 -0
  77. package/examples/03-vue3/src/App.vue +93 -0
  78. package/examples/03-vue3/src/main.js +8 -0
  79. package/examples/03-vue3/src/useFanUI.js +85 -0
  80. package/examples/03-vue3/vite.config.js +6 -0
  81. package/examples/04-vue2-cdn.html +93 -0
  82. package/examples/README.md +34 -0
  83. package/package.json +127 -0
  84. package/src/_functions.scss +319 -0
  85. package/src/_mixins.scss +1202 -0
  86. package/src/_tokens.scss +180 -0
  87. package/src/_variables.scss +491 -0
  88. package/src/base/_animations.scss +210 -0
  89. package/src/base/_reset.scss +359 -0
  90. package/src/base/_rtl.scss +133 -0
  91. package/src/base/_typography.scss +353 -0
  92. package/src/components/_advanced.scss +763 -0
  93. package/src/components/_alert.scss +322 -0
  94. package/src/components/_badge.scss +279 -0
  95. package/src/components/_blog.scss +693 -0
  96. package/src/components/_button.scss +351 -0
  97. package/src/components/_capabilities.scss +463 -0
  98. package/src/components/_card.scss +281 -0
  99. package/src/components/_choice.scss +444 -0
  100. package/src/components/_dashboard.scss +950 -0
  101. package/src/components/_data.scss +618 -0
  102. package/src/components/_feedback.scss +403 -0
  103. package/src/components/_form.scss +408 -0
  104. package/src/components/_glass.scss +374 -0
  105. package/src/components/_input-plus.scss +730 -0
  106. package/src/components/_interactive.scss +885 -0
  107. package/src/components/_marketing.scss +982 -0
  108. package/src/components/_nav.scss +480 -0
  109. package/src/components/_overlay.scss +517 -0
  110. package/src/components/_table.scss +276 -0
  111. package/src/components/_tabs.scss +338 -0
  112. package/src/fanui.d.ts +353 -0
  113. package/src/fanui.js +4782 -0
  114. package/src/fanui.scss +79 -0
  115. package/src/glass/_switches.scss +36 -0
  116. package/src/glass/_tokens.scss +259 -0
  117. package/src/layout/_container.scss +111 -0
  118. package/src/layout/_flex.scss +164 -0
  119. package/src/layout/_grid.scss +180 -0
  120. package/src/themes/_accents.scss +201 -0
  121. package/src/themes/_palettes.scss +180 -0
  122. package/src/utilities/_borders.scss +104 -0
  123. package/src/utilities/_display.scss +145 -0
  124. package/src/utilities/_effects.scss +210 -0
  125. package/src/utilities/_sizing.scss +123 -0
  126. package/src/utilities/_spacing.scss +118 -0
  127. package/src/utilities/_texture.scss +323 -0
@@ -0,0 +1,1394 @@
1
+ /* fanUI v2.1.0 · module: base(独立产物,自带令牌) */
2
+ @charset "UTF-8";
3
+ *,
4
+ *::before,
5
+ *::after {
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ html {
10
+ -webkit-text-size-adjust: 100%;
11
+ -moz-text-size-adjust: 100%;
12
+ text-size-adjust: 100%;
13
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
14
+ scroll-behavior: smooth;
15
+ font-size: 100%;
16
+ line-height: 1;
17
+ tab-size: 4;
18
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
19
+ text-rendering: optimizeLegibility;
20
+ }
21
+
22
+ @media (prefers-reduced-motion: reduce) {
23
+ html {
24
+ scroll-behavior: auto;
25
+ }
26
+ }
27
+ body {
28
+ margin: 0;
29
+ min-height: 100vh;
30
+ font-family: var(--fanui-font-base, -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji);
31
+ font-size: var(--fanui-font-size-base, 14px);
32
+ font-weight: 400;
33
+ line-height: var(--fanui-line-height-base, 1.5715);
34
+ color: var(--fanui-color-text);
35
+ background-color: var(--fanui-color-bg);
36
+ transition: color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0s, background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
37
+ -webkit-font-smoothing: antialiased;
38
+ -moz-osx-font-smoothing: grayscale;
39
+ }
40
+
41
+ main,
42
+ article,
43
+ aside,
44
+ figure,
45
+ footer,
46
+ header,
47
+ hgroup,
48
+ nav,
49
+ section,
50
+ details,
51
+ summary,
52
+ figcaption {
53
+ display: block;
54
+ }
55
+
56
+ h1, h2, h3, h4, h5, h6,
57
+ p,
58
+ figure,
59
+ blockquote,
60
+ dl,
61
+ dd,
62
+ ol,
63
+ ul,
64
+ pre {
65
+ margin: 0;
66
+ }
67
+
68
+ ol[class],
69
+ ul[class],
70
+ li[class] {
71
+ list-style: none;
72
+ padding: 0;
73
+ }
74
+
75
+ a {
76
+ color: var(--fanui-primary);
77
+ text-decoration: none;
78
+ background-color: transparent;
79
+ transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
80
+ }
81
+ a:hover {
82
+ color: var(--fanui-primary-hover);
83
+ text-decoration: underline;
84
+ }
85
+ a:active {
86
+ color: var(--fanui-primary-active);
87
+ }
88
+ a:focus-visible {
89
+ outline: 0;
90
+ box-shadow: 0 0 0 var(--fanui-focus-ring-offset, 1px) var(--fanui-color-surface, #fff), 0 0 0 calc(var(--fanui-focus-ring-offset, 1px) + var(--fanui-focus-ring-width, 3px)) var(--fanui-focus-ring-color, rgba(14, 116, 144, 0.3));
91
+ }
92
+ @media (forced-colors: active) {
93
+ a:focus-visible {
94
+ outline: 2px solid transparent;
95
+ outline-offset: 2px;
96
+ }
97
+ }
98
+ a:focus-visible {
99
+ border-radius: 2px;
100
+ }
101
+
102
+ b,
103
+ strong {
104
+ font-weight: 700;
105
+ }
106
+
107
+ small {
108
+ font-size: 0.875em;
109
+ }
110
+
111
+ sub,
112
+ sup {
113
+ position: relative;
114
+ font-size: 0.75em;
115
+ line-height: 0;
116
+ vertical-align: baseline;
117
+ }
118
+
119
+ sub {
120
+ bottom: -0.25em;
121
+ }
122
+
123
+ sup {
124
+ top: -0.5em;
125
+ }
126
+
127
+ img,
128
+ picture,
129
+ video,
130
+ canvas,
131
+ svg {
132
+ display: block;
133
+ max-width: 100%;
134
+ }
135
+
136
+ img,
137
+ video {
138
+ height: auto;
139
+ border-style: none;
140
+ }
141
+
142
+ svg {
143
+ overflow: hidden;
144
+ vertical-align: middle;
145
+ }
146
+
147
+ button,
148
+ input,
149
+ optgroup,
150
+ select,
151
+ textarea {
152
+ margin: 0;
153
+ font-family: inherit;
154
+ font-size: 100%;
155
+ line-height: inherit;
156
+ color: inherit;
157
+ }
158
+
159
+ button,
160
+ [type=button],
161
+ [type=reset],
162
+ [type=submit],
163
+ [role=button] {
164
+ -webkit-appearance: button;
165
+ cursor: pointer;
166
+ text-transform: none;
167
+ background-color: transparent;
168
+ background-image: none;
169
+ border: 0;
170
+ padding: 0;
171
+ }
172
+
173
+ ::-moz-focus-inner {
174
+ padding: 0;
175
+ border-style: none;
176
+ }
177
+
178
+ :-moz-ui-invalid {
179
+ box-shadow: none;
180
+ }
181
+
182
+ fieldset {
183
+ min-width: 0;
184
+ padding: 0;
185
+ margin: 0;
186
+ border: 0;
187
+ }
188
+
189
+ legend {
190
+ padding: 0;
191
+ display: table;
192
+ max-width: 100%;
193
+ white-space: normal;
194
+ color: inherit;
195
+ }
196
+
197
+ progress {
198
+ vertical-align: baseline;
199
+ }
200
+
201
+ textarea {
202
+ resize: vertical;
203
+ overflow: auto;
204
+ }
205
+
206
+ [type=search] {
207
+ outline-offset: -2px;
208
+ -webkit-appearance: textfield;
209
+ appearance: textfield;
210
+ }
211
+ [type=search]::-webkit-search-decoration {
212
+ -webkit-appearance: none;
213
+ }
214
+
215
+ ::-webkit-file-upload-button {
216
+ -webkit-appearance: button;
217
+ font: inherit;
218
+ }
219
+
220
+ [type=number]::-webkit-outer-spin-button, [type=number]::-webkit-inner-spin-button {
221
+ height: auto;
222
+ -webkit-appearance: none;
223
+ margin: 0;
224
+ }
225
+ [type=number] {
226
+ -moz-appearance: textfield;
227
+ }
228
+
229
+ [hidden],
230
+ template {
231
+ display: none !important;
232
+ }
233
+
234
+ iframe {
235
+ border: 0;
236
+ display: block;
237
+ }
238
+
239
+ hr {
240
+ box-sizing: content-box;
241
+ height: 0;
242
+ overflow: visible;
243
+ margin: 1em 0;
244
+ border: 0;
245
+ border-top: var(--fanui-border-width, 1px) solid var(--fanui-color-border);
246
+ opacity: 1;
247
+ color: inherit;
248
+ }
249
+
250
+ abbr[title] {
251
+ text-decoration: underline dotted;
252
+ cursor: help;
253
+ }
254
+
255
+ code,
256
+ kbd,
257
+ samp,
258
+ pre {
259
+ font-family: var(--fanui-font-mono, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, Courier New, monospace);
260
+ font-size: 1em;
261
+ }
262
+
263
+ pre {
264
+ overflow: auto;
265
+ -webkit-overflow-scrolling: touch;
266
+ }
267
+
268
+ summary {
269
+ display: list-item;
270
+ cursor: pointer;
271
+ }
272
+
273
+ details > summary::-webkit-details-marker {
274
+ display: none;
275
+ }
276
+
277
+ table {
278
+ border-collapse: collapse;
279
+ border-spacing: 0;
280
+ text-indent: 0;
281
+ }
282
+
283
+ th {
284
+ text-align: inherit;
285
+ text-align: -webkit-match-parent;
286
+ }
287
+
288
+ html {
289
+ scrollbar-width: thin;
290
+ scrollbar-color: rgba(100, 116, 139, 0.45) transparent;
291
+ }
292
+ html::-webkit-scrollbar {
293
+ width: 8px;
294
+ height: 8px;
295
+ }
296
+ html::-webkit-scrollbar-track {
297
+ background: transparent;
298
+ }
299
+ html::-webkit-scrollbar-thumb {
300
+ background: rgba(100, 116, 139, 0.45);
301
+ border-radius: 9999px;
302
+ }
303
+ html::-webkit-scrollbar-thumb:hover {
304
+ background: rgba(100, 116, 139, 0.7);
305
+ }
306
+
307
+ ::selection {
308
+ background-color: var(--fanui-primary-soft);
309
+ color: var(--fanui-primary-active);
310
+ }
311
+
312
+ .fanui-skip-link {
313
+ position: fixed;
314
+ top: -100%;
315
+ left: var(--fanui-space-4);
316
+ z-index: calc(var(--fanui-z-toast) + 1);
317
+ padding: 10px 18px;
318
+ border-radius: var(--fanui-radius-md);
319
+ background-color: var(--fanui-primary);
320
+ color: var(--fanui-primary-fg);
321
+ font-size: var(--fanui-font-size-sm);
322
+ font-weight: var(--fanui-font-weight-semibold);
323
+ text-decoration: none;
324
+ box-shadow: var(--fanui-shadow-lg);
325
+ transition: top 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
326
+ }
327
+ .fanui-skip-link:focus {
328
+ top: var(--fanui-space-3);
329
+ outline: 3px solid var(--fanui-primary-ring);
330
+ outline-offset: 2px;
331
+ }
332
+
333
+ .fanui-visually-hidden,
334
+ .fanui-sr-only {
335
+ position: absolute !important;
336
+ width: 1px !important;
337
+ height: 1px !important;
338
+ padding: 0 !important;
339
+ margin: -1px !important;
340
+ overflow: hidden !important;
341
+ clip: rect(0, 0, 0, 0) !important;
342
+ white-space: nowrap !important;
343
+ border: 0 !important;
344
+ }
345
+
346
+ .fanui-sr-only-focusable {
347
+ position: absolute !important;
348
+ width: 1px !important;
349
+ height: 1px !important;
350
+ padding: 0 !important;
351
+ margin: -1px !important;
352
+ overflow: hidden !important;
353
+ clip: rect(0, 0, 0, 0) !important;
354
+ white-space: nowrap !important;
355
+ border: 0 !important;
356
+ }
357
+ .fanui-sr-only-focusable:active, .fanui-sr-only-focusable:focus {
358
+ position: static !important;
359
+ width: auto !important;
360
+ height: auto !important;
361
+ margin: 0 !important;
362
+ overflow: visible !important;
363
+ clip: auto !important;
364
+ white-space: normal !important;
365
+ }
366
+
367
+ .fanui-no-scrollbar {
368
+ scrollbar-width: none;
369
+ -ms-overflow-style: none;
370
+ }
371
+ .fanui-no-scrollbar::-webkit-scrollbar {
372
+ display: none;
373
+ width: 0;
374
+ height: 0;
375
+ }
376
+
377
+ :focus-visible {
378
+ outline: 2px solid var(--fanui-primary-ring);
379
+ outline-offset: 1px;
380
+ }
381
+
382
+ @media (forced-colors: active) {
383
+ :focus-visible {
384
+ outline: 2px solid transparent;
385
+ }
386
+ }
387
+ .fanui-font-sans {
388
+ font-family: var(--fanui-font-sans);
389
+ }
390
+
391
+ .fanui-font-serif {
392
+ font-family: var(--fanui-font-serif);
393
+ }
394
+
395
+ .fanui-font-mono {
396
+ font-family: var(--fanui-font-mono);
397
+ }
398
+
399
+ h1, h2, h3, h4, h5, h6,
400
+ .fanui-h1, .fanui-h2, .fanui-h3, .fanui-h4, .fanui-h5, .fanui-h6 {
401
+ margin-top: 0;
402
+ margin-bottom: var(--fanui-heading-margin-bottom, 0.5em);
403
+ font-weight: 600;
404
+ line-height: 1.25;
405
+ color: var(--fanui-color-text-strong);
406
+ text-wrap: balance;
407
+ }
408
+
409
+ h1, .fanui-h1 {
410
+ font-size: var(--fanui-font-size-3xl);
411
+ letter-spacing: -0.02em;
412
+ }
413
+
414
+ h2, .fanui-h2 {
415
+ font-size: var(--fanui-font-size-2xl);
416
+ letter-spacing: -0.015em;
417
+ }
418
+
419
+ h3, .fanui-h3 {
420
+ font-size: var(--fanui-font-size-xl);
421
+ }
422
+
423
+ h4, .fanui-h4 {
424
+ font-size: var(--fanui-font-size-lg);
425
+ }
426
+
427
+ h5, .fanui-h5 {
428
+ font-size: var(--fanui-font-size-md);
429
+ }
430
+
431
+ h6, .fanui-h6 {
432
+ font-size: var(--fanui-font-size-base);
433
+ }
434
+
435
+ .fanui-display-1 {
436
+ font-size: var(--fanui-font-size-6xl);
437
+ font-weight: 800;
438
+ line-height: 1.1;
439
+ letter-spacing: -0.025em;
440
+ }
441
+
442
+ .fanui-display-2 {
443
+ font-size: var(--fanui-font-size-5xl);
444
+ font-weight: 800;
445
+ line-height: 1.15;
446
+ letter-spacing: -0.02em;
447
+ }
448
+
449
+ .fanui-display-3 {
450
+ font-size: var(--fanui-font-size-4xl);
451
+ font-weight: 700;
452
+ line-height: 1.2;
453
+ letter-spacing: -0.02em;
454
+ }
455
+
456
+ p {
457
+ margin-top: 0;
458
+ margin-bottom: var(--fanui-paragraph-margin-bottom, 1em);
459
+ }
460
+
461
+ .fanui-lead {
462
+ font-size: var(--fanui-font-size-md);
463
+ line-height: var(--fanui-line-height-relaxed);
464
+ color: var(--fanui-color-text-muted);
465
+ }
466
+
467
+ .fanui-text-muted {
468
+ color: var(--fanui-color-text-muted);
469
+ }
470
+
471
+ .fanui-text-subtle {
472
+ color: var(--fanui-color-text-subtle);
473
+ }
474
+
475
+ .fanui-text-strong {
476
+ color: var(--fanui-color-text-strong);
477
+ font-weight: 600;
478
+ }
479
+
480
+ .fanui-text-inverse {
481
+ color: var(--fanui-color-text-inverse);
482
+ }
483
+
484
+ .fanui-text-primary {
485
+ color: var(--fanui-primary);
486
+ }
487
+
488
+ .fanui-text-accent {
489
+ color: var(--fanui-accent);
490
+ }
491
+
492
+ .fanui-text-success {
493
+ color: var(--fanui-success);
494
+ }
495
+
496
+ .fanui-text-warning {
497
+ color: var(--fanui-warning);
498
+ }
499
+
500
+ .fanui-text-danger {
501
+ color: var(--fanui-danger);
502
+ }
503
+
504
+ .fanui-text-info {
505
+ color: var(--fanui-info);
506
+ }
507
+
508
+ .fanui-text-gradient {
509
+ background-image: linear-gradient(to right, var(--fanui-primary), var(--fanui-accent));
510
+ -webkit-background-clip: text;
511
+ background-clip: text;
512
+ color: transparent;
513
+ -webkit-text-fill-color: transparent;
514
+ }
515
+
516
+ .fanui-fs-xs {
517
+ font-size: var(--fanui-font-size-xs);
518
+ }
519
+
520
+ .fanui-fs-sm {
521
+ font-size: var(--fanui-font-size-sm);
522
+ }
523
+
524
+ .fanui-fs-base {
525
+ font-size: var(--fanui-font-size-base);
526
+ }
527
+
528
+ .fanui-fs-md {
529
+ font-size: var(--fanui-font-size-md);
530
+ }
531
+
532
+ .fanui-fs-lg {
533
+ font-size: var(--fanui-font-size-lg);
534
+ }
535
+
536
+ .fanui-fs-xl {
537
+ font-size: var(--fanui-font-size-xl);
538
+ }
539
+
540
+ .fanui-fs-2xl {
541
+ font-size: var(--fanui-font-size-2xl);
542
+ }
543
+
544
+ .fanui-fs-3xl {
545
+ font-size: var(--fanui-font-size-3xl);
546
+ }
547
+
548
+ .fanui-fs-4xl {
549
+ font-size: var(--fanui-font-size-4xl);
550
+ }
551
+
552
+ .fanui-fs-5xl {
553
+ font-size: var(--fanui-font-size-5xl);
554
+ }
555
+
556
+ .fanui-fs-6xl {
557
+ font-size: var(--fanui-font-size-6xl);
558
+ }
559
+
560
+ .fanui-fs-lead-lg::first-letter {
561
+ font-size: var(--fanui-font-size-5xl);
562
+ font-weight: 700;
563
+ float: left;
564
+ line-height: 1;
565
+ margin-inline-end: 8px;
566
+ }
567
+
568
+ .fanui-lh-none {
569
+ line-height: 1;
570
+ }
571
+
572
+ .fanui-lh-tight {
573
+ line-height: 1.25;
574
+ }
575
+
576
+ .fanui-lh-snug {
577
+ line-height: 1.375;
578
+ }
579
+
580
+ .fanui-lh-normal {
581
+ line-height: 1.5;
582
+ }
583
+
584
+ .fanui-lh-base {
585
+ line-height: 1.5715;
586
+ }
587
+
588
+ .fanui-lh-relaxed {
589
+ line-height: 1.625;
590
+ }
591
+
592
+ .fanui-lh-loose {
593
+ line-height: 2;
594
+ }
595
+
596
+ .fanui-fw-light {
597
+ font-weight: 300;
598
+ }
599
+
600
+ .fanui-fw-normal {
601
+ font-weight: 400;
602
+ }
603
+
604
+ .fanui-fw-medium {
605
+ font-weight: 500;
606
+ }
607
+
608
+ .fanui-fw-semibold {
609
+ font-weight: 600;
610
+ }
611
+
612
+ .fanui-fw-bold {
613
+ font-weight: 700;
614
+ }
615
+
616
+ .fanui-fw-extrabold {
617
+ font-weight: 800;
618
+ }
619
+
620
+ .fanui-tracking-tighter {
621
+ letter-spacing: -0.05em;
622
+ }
623
+
624
+ .fanui-tracking-tight {
625
+ letter-spacing: -0.025em;
626
+ }
627
+
628
+ .fanui-tracking-normal {
629
+ letter-spacing: 0;
630
+ }
631
+
632
+ .fanui-tracking-wide {
633
+ letter-spacing: 0.025em;
634
+ }
635
+
636
+ .fanui-tracking-wider {
637
+ letter-spacing: 0.05em;
638
+ }
639
+
640
+ .fanui-tracking-widest {
641
+ letter-spacing: 0.1em;
642
+ }
643
+
644
+ .fanui-italic {
645
+ font-style: italic;
646
+ }
647
+
648
+ .fanui-not-italic {
649
+ font-style: normal;
650
+ }
651
+
652
+ .fanui-uppercase {
653
+ text-transform: uppercase;
654
+ }
655
+
656
+ .fanui-lowercase {
657
+ text-transform: lowercase;
658
+ }
659
+
660
+ .fanui-capitalize {
661
+ text-transform: capitalize;
662
+ }
663
+
664
+ .fanui-underline {
665
+ text-decoration: underline;
666
+ }
667
+
668
+ .fanui-line-through {
669
+ text-decoration: line-through;
670
+ }
671
+
672
+ .fanui-no-underline {
673
+ text-decoration: none;
674
+ }
675
+
676
+ .fanui-text-start {
677
+ text-align: start;
678
+ }
679
+
680
+ .fanui-text-center {
681
+ text-align: center;
682
+ }
683
+
684
+ .fanui-text-end {
685
+ text-align: end;
686
+ }
687
+
688
+ .fanui-text-justify {
689
+ text-align: justify;
690
+ }
691
+
692
+ .fanui-text-wrap {
693
+ white-space: normal;
694
+ }
695
+
696
+ .fanui-text-nowrap {
697
+ white-space: nowrap;
698
+ }
699
+
700
+ .fanui-text-pre {
701
+ white-space: pre;
702
+ }
703
+
704
+ .fanui-text-pre-wrap {
705
+ white-space: pre-wrap;
706
+ }
707
+
708
+ .fanui-text-break {
709
+ word-break: break-word;
710
+ overflow-wrap: anywhere;
711
+ }
712
+
713
+ .fanui-text-balance {
714
+ text-wrap: balance;
715
+ }
716
+
717
+ .fanui-text-pretty {
718
+ text-wrap: pretty;
719
+ }
720
+
721
+ .fanui-truncate {
722
+ overflow: hidden;
723
+ text-overflow: ellipsis;
724
+ white-space: nowrap;
725
+ }
726
+
727
+ .fanui-truncate-2 {
728
+ display: -webkit-box;
729
+ -webkit-line-clamp: 2;
730
+ -webkit-box-orient: vertical;
731
+ overflow: hidden;
732
+ text-overflow: ellipsis;
733
+ }
734
+
735
+ .fanui-truncate-3 {
736
+ display: -webkit-box;
737
+ -webkit-line-clamp: 3;
738
+ -webkit-box-orient: vertical;
739
+ overflow: hidden;
740
+ text-overflow: ellipsis;
741
+ }
742
+
743
+ .fanui-truncate-4 {
744
+ display: -webkit-box;
745
+ -webkit-line-clamp: 4;
746
+ -webkit-box-orient: vertical;
747
+ overflow: hidden;
748
+ text-overflow: ellipsis;
749
+ }
750
+
751
+ .fanui-list {
752
+ padding-inline-start: 1.25rem;
753
+ margin-bottom: 1em;
754
+ }
755
+ .fanui-list li {
756
+ margin-bottom: 0.25em;
757
+ }
758
+
759
+ .fanui-list-unstyled {
760
+ list-style: none;
761
+ padding-inline-start: 0;
762
+ margin-inline-start: 0;
763
+ }
764
+
765
+ .fanui-list-inline {
766
+ display: flex;
767
+ flex-wrap: wrap;
768
+ gap: var(--fanui-space-4);
769
+ list-style: none;
770
+ padding-inline-start: 0;
771
+ }
772
+
773
+ .fanui-list-dashed {
774
+ list-style: none;
775
+ padding-inline-start: 0;
776
+ }
777
+ .fanui-list-dashed > li {
778
+ position: relative;
779
+ padding-inline-start: 1.25em;
780
+ }
781
+ .fanui-list-dashed > li::before {
782
+ content: "";
783
+ position: absolute;
784
+ left: 0.25em;
785
+ top: 0.65em;
786
+ width: 0.35em;
787
+ height: 0.35em;
788
+ border-radius: 50%;
789
+ background-color: var(--fanui-primary);
790
+ }
791
+
792
+ .fanui-blockquote {
793
+ margin: 0 0 1em;
794
+ padding: var(--fanui-space-4) var(--fanui-space-5);
795
+ border-inline-start: 4px solid var(--fanui-primary);
796
+ background-color: var(--fanui-color-surface-sunken);
797
+ border-radius: 0 var(--fanui-radius-base) var(--fanui-radius-base) 0;
798
+ color: var(--fanui-color-text-muted);
799
+ }
800
+ .fanui-blockquote footer {
801
+ margin-top: var(--fanui-space-2);
802
+ font-size: var(--fanui-font-size-sm);
803
+ color: var(--fanui-color-text-subtle);
804
+ }
805
+ .fanui-blockquote footer::before {
806
+ content: "— ";
807
+ }
808
+
809
+ .fanui-code, .fanui-prose code {
810
+ padding: 0.15em 0.4em;
811
+ font-family: var(--fanui-font-mono);
812
+ font-size: 0.875em;
813
+ color: var(--fanui-danger);
814
+ background-color: var(--fanui-color-surface-sunken);
815
+ border: 1px solid var(--fanui-color-border-subtle);
816
+ border-radius: var(--fanui-radius-sm);
817
+ white-space: nowrap;
818
+ }
819
+
820
+ .fanui-pre, .fanui-prose pre {
821
+ display: block;
822
+ margin: 0 0 1em;
823
+ padding: var(--fanui-space-4);
824
+ font-family: var(--fanui-font-mono);
825
+ font-size: var(--fanui-font-size-sm);
826
+ line-height: var(--fanui-line-height-relaxed);
827
+ color: var(--fanui-color-text);
828
+ background-color: var(--fanui-color-surface-sunken);
829
+ border: 1px solid var(--fanui-color-border);
830
+ border-radius: var(--fanui-radius-md);
831
+ overflow-x: auto;
832
+ tab-size: 2;
833
+ }
834
+ .fanui-pre code, .fanui-prose pre code {
835
+ padding: 0;
836
+ background: none;
837
+ border: 0;
838
+ color: inherit;
839
+ font-size: inherit;
840
+ white-space: pre;
841
+ }
842
+
843
+ .fanui-kbd {
844
+ display: inline-block;
845
+ min-width: 1.6em;
846
+ padding: 0.1em 0.4em;
847
+ font-family: var(--fanui-font-mono);
848
+ font-size: 0.8125em;
849
+ line-height: 1.4;
850
+ text-align: center;
851
+ color: var(--fanui-color-text);
852
+ background-color: var(--fanui-color-surface);
853
+ border: 1px solid var(--fanui-color-border-strong);
854
+ border-bottom-width: 2px;
855
+ border-radius: var(--fanui-radius-sm);
856
+ box-shadow: var(--fanui-shadow-xs);
857
+ }
858
+
859
+ .fanui-mark {
860
+ padding: 0.1em 0.2em;
861
+ background-color: rgba(245, 158, 11, 0.28);
862
+ color: inherit;
863
+ border-radius: var(--fanui-radius-sm);
864
+ }
865
+
866
+ .fanui-link {
867
+ color: var(--fanui-primary);
868
+ text-decoration: none;
869
+ border-bottom: 1px solid var(--fanui-primary-border);
870
+ transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
871
+ }
872
+ .fanui-link:hover {
873
+ color: var(--fanui-primary-hover);
874
+ border-bottom-color: var(--fanui-primary-hover);
875
+ text-decoration: none;
876
+ }
877
+ .fanui-link--subtle {
878
+ color: var(--fanui-color-text-muted);
879
+ border-bottom-color: var(--fanui-color-border);
880
+ }
881
+ .fanui-link--subtle:hover {
882
+ color: var(--fanui-color-text);
883
+ border-bottom-color: var(--fanui-color-border-strong);
884
+ }
885
+
886
+ .fanui-anchor {
887
+ position: relative;
888
+ scroll-margin-top: var(--fanui-space-8);
889
+ }
890
+ .fanui-anchor > .fanui-anchor__link {
891
+ position: absolute;
892
+ left: -1.25em;
893
+ padding-inline-end: 0.25em;
894
+ color: var(--fanui-color-text-subtle);
895
+ opacity: 0;
896
+ transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
897
+ }
898
+ .fanui-anchor > .fanui-anchor__link::before {
899
+ content: "#";
900
+ }
901
+ .fanui-anchor:hover > .fanui-anchor__link {
902
+ opacity: 1;
903
+ }
904
+
905
+ .fanui-prose {
906
+ font-size: var(--fanui-font-size-md);
907
+ line-height: var(--fanui-line-height-relaxed);
908
+ color: var(--fanui-color-text);
909
+ max-width: 72ch;
910
+ }
911
+ .fanui-prose > * + * {
912
+ margin-top: 1em;
913
+ }
914
+ .fanui-prose > h2 {
915
+ margin-top: 2em;
916
+ }
917
+ .fanui-prose > h3 {
918
+ margin-top: 1.5em;
919
+ }
920
+ .fanui-prose > h2 + *,
921
+ .fanui-prose > h3 + * {
922
+ margin-top: 0.5em;
923
+ }
924
+ .fanui-prose ul, .fanui-prose ol {
925
+ padding-inline-start: 1.4em;
926
+ }
927
+ .fanui-prose li + li {
928
+ margin-top: 0.35em;
929
+ }
930
+ .fanui-prose li > ul,
931
+ .fanui-prose li > ol {
932
+ margin-top: 0.35em;
933
+ }
934
+ .fanui-prose img {
935
+ border-radius: var(--fanui-radius-md);
936
+ margin: 1.5em 0;
937
+ }
938
+ .fanui-prose hr {
939
+ margin: 2.5em 0;
940
+ }
941
+ .fanui-prose table {
942
+ width: 100%;
943
+ border-collapse: collapse;
944
+ font-size: var(--fanui-font-size-base);
945
+ margin: 1.5em 0;
946
+ }
947
+ .fanui-prose table th,
948
+ .fanui-prose table td {
949
+ padding: 8px 12px;
950
+ text-align: start;
951
+ border: 1px solid var(--fanui-color-border);
952
+ }
953
+ .fanui-prose table th {
954
+ background-color: var(--fanui-color-surface-sunken);
955
+ font-weight: 600;
956
+ }
957
+
958
+ @keyframes fanui-fade-in {
959
+ from {
960
+ opacity: 0;
961
+ }
962
+ to {
963
+ opacity: 1;
964
+ }
965
+ }
966
+ @keyframes fanui-fade-out {
967
+ from {
968
+ opacity: 1;
969
+ }
970
+ to {
971
+ opacity: 0;
972
+ }
973
+ }
974
+ @keyframes fanui-slide-in-up {
975
+ from {
976
+ opacity: 0;
977
+ transform: translateY(12px);
978
+ }
979
+ to {
980
+ opacity: 1;
981
+ transform: translateY(0);
982
+ }
983
+ }
984
+ @keyframes fanui-slide-in-down {
985
+ from {
986
+ opacity: 0;
987
+ transform: translateY(-12px);
988
+ }
989
+ to {
990
+ opacity: 1;
991
+ transform: translateY(0);
992
+ }
993
+ }
994
+ @keyframes fanui-slide-in-start {
995
+ from {
996
+ opacity: 0;
997
+ transform: translateX(-16px);
998
+ }
999
+ to {
1000
+ opacity: 1;
1001
+ transform: translateX(0);
1002
+ }
1003
+ }
1004
+ @keyframes fanui-slide-in-end {
1005
+ from {
1006
+ opacity: 0;
1007
+ transform: translateX(16px);
1008
+ }
1009
+ to {
1010
+ opacity: 1;
1011
+ transform: translateX(0);
1012
+ }
1013
+ }
1014
+ @keyframes fanui-zoom-in {
1015
+ from {
1016
+ opacity: 0;
1017
+ transform: scale(0.94);
1018
+ }
1019
+ to {
1020
+ opacity: 1;
1021
+ transform: scale(1);
1022
+ }
1023
+ }
1024
+ @keyframes fanui-zoom-out {
1025
+ from {
1026
+ opacity: 1;
1027
+ transform: scale(1);
1028
+ }
1029
+ to {
1030
+ opacity: 0;
1031
+ transform: scale(0.94);
1032
+ }
1033
+ }
1034
+ @keyframes fanui-pop-in {
1035
+ from {
1036
+ opacity: 0;
1037
+ transform: scale(0.86) translateY(8px);
1038
+ }
1039
+ 60% {
1040
+ opacity: 1;
1041
+ transform: scale(1.02) translateY(0);
1042
+ }
1043
+ to {
1044
+ opacity: 1;
1045
+ transform: scale(1) translateY(0);
1046
+ }
1047
+ }
1048
+ @keyframes fanui-spin {
1049
+ to {
1050
+ transform: rotate(360deg);
1051
+ }
1052
+ }
1053
+ @keyframes fanui-pulse {
1054
+ 0%, 100% {
1055
+ opacity: 1;
1056
+ }
1057
+ 50% {
1058
+ opacity: 0.45;
1059
+ }
1060
+ }
1061
+ @keyframes fanui-bounce {
1062
+ 0%, 100% {
1063
+ transform: translateY(0);
1064
+ }
1065
+ 50% {
1066
+ transform: translateY(-6px);
1067
+ }
1068
+ }
1069
+ @keyframes fanui-shake {
1070
+ 0%, 100% {
1071
+ transform: translateX(0);
1072
+ }
1073
+ 20% {
1074
+ transform: translateX(-6px);
1075
+ }
1076
+ 40% {
1077
+ transform: translateX(6px);
1078
+ }
1079
+ 60% {
1080
+ transform: translateX(-4px);
1081
+ }
1082
+ 80% {
1083
+ transform: translateX(4px);
1084
+ }
1085
+ }
1086
+ @keyframes fanui-progress-stripes {
1087
+ from {
1088
+ background-position: 1rem 0;
1089
+ }
1090
+ to {
1091
+ background-position: 0 0;
1092
+ }
1093
+ }
1094
+ @keyframes fanui-progress-indeterminate {
1095
+ 0% {
1096
+ left: -35%;
1097
+ width: 35%;
1098
+ }
1099
+ 60% {
1100
+ left: 100%;
1101
+ width: 60%;
1102
+ }
1103
+ 100% {
1104
+ left: 100%;
1105
+ width: 60%;
1106
+ }
1107
+ }
1108
+ @keyframes fanui-skeleton-shimmer {
1109
+ from {
1110
+ background-position: 200% 0;
1111
+ }
1112
+ to {
1113
+ background-position: -200% 0;
1114
+ }
1115
+ }
1116
+ @keyframes fanui-toast-in {
1117
+ from {
1118
+ opacity: 0;
1119
+ transform: translateY(-8px) scale(0.98);
1120
+ }
1121
+ to {
1122
+ opacity: 1;
1123
+ transform: translateY(0) scale(1);
1124
+ }
1125
+ }
1126
+ @keyframes fanui-ripple {
1127
+ from {
1128
+ transform: scale(0);
1129
+ opacity: 0.45;
1130
+ }
1131
+ to {
1132
+ transform: scale(2.6);
1133
+ opacity: 0;
1134
+ }
1135
+ }
1136
+ @keyframes fanui-blink {
1137
+ 0%, 100% {
1138
+ opacity: 1;
1139
+ }
1140
+ 50% {
1141
+ opacity: 0;
1142
+ }
1143
+ }
1144
+ .fanui-animate-fade-in {
1145
+ animation-name: fanui-fade-in;
1146
+ animation-duration: 200ms;
1147
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
1148
+ animation-fill-mode: both;
1149
+ animation-iteration-count: 1;
1150
+ }
1151
+
1152
+ .fanui-animate-fade-out {
1153
+ animation-name: fanui-fade-out;
1154
+ animation-duration: 200ms;
1155
+ animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
1156
+ animation-fill-mode: both;
1157
+ animation-iteration-count: 1;
1158
+ }
1159
+
1160
+ .fanui-animate-slide-in-up {
1161
+ animation-name: fanui-slide-in-up;
1162
+ animation-duration: 300ms;
1163
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
1164
+ animation-fill-mode: both;
1165
+ animation-iteration-count: 1;
1166
+ }
1167
+
1168
+ .fanui-animate-slide-in-down {
1169
+ animation-name: fanui-slide-in-down;
1170
+ animation-duration: 300ms;
1171
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
1172
+ animation-fill-mode: both;
1173
+ animation-iteration-count: 1;
1174
+ }
1175
+
1176
+ .fanui-animate-slide-in-start {
1177
+ animation-name: fanui-slide-in-start;
1178
+ animation-duration: 300ms;
1179
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
1180
+ animation-fill-mode: both;
1181
+ animation-iteration-count: 1;
1182
+ }
1183
+
1184
+ .fanui-animate-slide-in-end {
1185
+ animation-name: fanui-slide-in-end;
1186
+ animation-duration: 300ms;
1187
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
1188
+ animation-fill-mode: both;
1189
+ animation-iteration-count: 1;
1190
+ }
1191
+
1192
+ .fanui-animate-zoom-in {
1193
+ animation-name: fanui-zoom-in;
1194
+ animation-duration: 200ms;
1195
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
1196
+ animation-fill-mode: both;
1197
+ animation-iteration-count: 1;
1198
+ }
1199
+
1200
+ .fanui-animate-zoom-out {
1201
+ animation-name: fanui-zoom-out;
1202
+ animation-duration: 200ms;
1203
+ animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
1204
+ animation-fill-mode: both;
1205
+ animation-iteration-count: 1;
1206
+ }
1207
+
1208
+ .fanui-animate-pop-in {
1209
+ animation-name: fanui-pop-in;
1210
+ animation-duration: 300ms;
1211
+ animation-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
1212
+ animation-fill-mode: both;
1213
+ animation-iteration-count: 1;
1214
+ }
1215
+
1216
+ .fanui-animate-spin {
1217
+ animation-name: fanui-spin;
1218
+ animation-duration: 900ms;
1219
+ animation-timing-function: linear;
1220
+ animation-fill-mode: infinite;
1221
+ animation-iteration-count: 1;
1222
+ }
1223
+
1224
+ .fanui-animate-pulse {
1225
+ animation-name: fanui-pulse;
1226
+ animation-duration: 1.6s;
1227
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1228
+ animation-fill-mode: infinite;
1229
+ animation-iteration-count: 1;
1230
+ }
1231
+
1232
+ .fanui-animate-bounce {
1233
+ animation-name: fanui-bounce;
1234
+ animation-duration: 1s;
1235
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1236
+ animation-fill-mode: infinite;
1237
+ animation-iteration-count: 1;
1238
+ }
1239
+
1240
+ .fanui-animate-shake {
1241
+ animation-name: fanui-shake;
1242
+ animation-duration: 420ms;
1243
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1244
+ animation-fill-mode: both;
1245
+ animation-iteration-count: 1;
1246
+ }
1247
+
1248
+ .fanui-animate-blink {
1249
+ animation-name: fanui-blink;
1250
+ animation-duration: 1s;
1251
+ animation-timing-function: step-end;
1252
+ animation-fill-mode: infinite;
1253
+ animation-iteration-count: 1;
1254
+ }
1255
+
1256
+ .fanui-animate-spin,
1257
+ .fanui-animate-pulse,
1258
+ .fanui-animate-bounce,
1259
+ .fanui-animate-blink {
1260
+ animation-iteration-count: infinite;
1261
+ }
1262
+
1263
+ .fanui-animate-infinite {
1264
+ animation-iteration-count: infinite;
1265
+ }
1266
+
1267
+ .fanui-animate-once {
1268
+ animation-iteration-count: 1;
1269
+ }
1270
+
1271
+ .fanui-duration-instant {
1272
+ animation-duration: 100ms;
1273
+ transition-duration: 100ms;
1274
+ }
1275
+
1276
+ .fanui-duration-fast {
1277
+ animation-duration: 150ms;
1278
+ transition-duration: 150ms;
1279
+ }
1280
+
1281
+ .fanui-duration-base {
1282
+ animation-duration: 200ms;
1283
+ transition-duration: 200ms;
1284
+ }
1285
+
1286
+ .fanui-duration-slow {
1287
+ animation-duration: 300ms;
1288
+ transition-duration: 300ms;
1289
+ }
1290
+
1291
+ .fanui-duration-slower {
1292
+ animation-duration: 500ms;
1293
+ transition-duration: 500ms;
1294
+ }
1295
+
1296
+ .fanui-ease-linear {
1297
+ animation-timing-function: linear;
1298
+ transition-timing-function: linear;
1299
+ }
1300
+
1301
+ .fanui-ease-in {
1302
+ animation-timing-function: cubic-bezier(0.4, 0, 1, 1);
1303
+ transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
1304
+ }
1305
+
1306
+ .fanui-ease-out {
1307
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
1308
+ transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
1309
+ }
1310
+
1311
+ .fanui-ease-in-out {
1312
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1313
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1314
+ }
1315
+
1316
+ .fanui-ease-spring {
1317
+ animation-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
1318
+ transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
1319
+ }
1320
+
1321
+ .fanui-delay-75 {
1322
+ animation-delay: 75ms;
1323
+ }
1324
+
1325
+ .fanui-delay-150 {
1326
+ animation-delay: 150ms;
1327
+ }
1328
+
1329
+ .fanui-delay-300 {
1330
+ animation-delay: 300ms;
1331
+ }
1332
+
1333
+ .fanui-delay-500 {
1334
+ animation-delay: 500ms;
1335
+ }
1336
+
1337
+ .fanui-paused {
1338
+ animation-play-state: paused;
1339
+ }
1340
+
1341
+ .fanui-running {
1342
+ animation-play-state: running;
1343
+ }
1344
+
1345
+ .fanui-transition-all {
1346
+ transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
1347
+ }
1348
+
1349
+ .fanui-transition-color {
1350
+ transition: color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
1351
+ }
1352
+
1353
+ .fanui-transition-background-color {
1354
+ transition: background-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
1355
+ }
1356
+
1357
+ .fanui-transition-border-color {
1358
+ transition: border-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
1359
+ }
1360
+
1361
+ .fanui-transition-box-shadow {
1362
+ transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
1363
+ }
1364
+
1365
+ .fanui-transition-opacity {
1366
+ transition: opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
1367
+ }
1368
+
1369
+ .fanui-transition-transform {
1370
+ transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
1371
+ }
1372
+
1373
+ @media (prefers-reduced-motion: reduce) {
1374
+ .fanui-animate-fade-in,
1375
+ .fanui-animate-fade-out,
1376
+ .fanui-animate-slide-in-up,
1377
+ .fanui-animate-slide-in-down,
1378
+ .fanui-animate-slide-in-start,
1379
+ .fanui-animate-slide-in-end,
1380
+ .fanui-animate-zoom-in,
1381
+ .fanui-animate-zoom-out,
1382
+ .fanui-animate-pop-in,
1383
+ .fanui-animate-shake {
1384
+ animation: none !important;
1385
+ opacity: 1 !important;
1386
+ transform: none !important;
1387
+ }
1388
+ .fanui-animate-spin,
1389
+ .fanui-animate-pulse,
1390
+ .fanui-animate-bounce,
1391
+ .fanui-animate-blink {
1392
+ animation-duration: 3s !important;
1393
+ }
1394
+ }