@farzadbagheri/fb-components 0.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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +131 -0
  3. package/dist/ai.cjs +16 -0
  4. package/dist/ai.cjs.map +1 -0
  5. package/dist/ai.css +176 -0
  6. package/dist/ai.css.map +1 -0
  7. package/dist/ai.d.cts +33 -0
  8. package/dist/ai.d.ts +33 -0
  9. package/dist/ai.js +3 -0
  10. package/dist/ai.js.map +1 -0
  11. package/dist/backgrounds.cjs +32 -0
  12. package/dist/backgrounds.cjs.map +1 -0
  13. package/dist/backgrounds.css +253 -0
  14. package/dist/backgrounds.css.map +1 -0
  15. package/dist/backgrounds.d.cts +71 -0
  16. package/dist/backgrounds.d.ts +71 -0
  17. package/dist/backgrounds.js +3 -0
  18. package/dist/backgrounds.js.map +1 -0
  19. package/dist/buttons.cjs +20 -0
  20. package/dist/buttons.cjs.map +1 -0
  21. package/dist/buttons.css +116 -0
  22. package/dist/buttons.css.map +1 -0
  23. package/dist/buttons.d.cts +40 -0
  24. package/dist/buttons.d.ts +40 -0
  25. package/dist/buttons.js +3 -0
  26. package/dist/buttons.js.map +1 -0
  27. package/dist/chunk-4FWJRWS5.cjs +125 -0
  28. package/dist/chunk-4FWJRWS5.cjs.map +1 -0
  29. package/dist/chunk-BSEOOGOV.cjs +217 -0
  30. package/dist/chunk-BSEOOGOV.cjs.map +1 -0
  31. package/dist/chunk-C3ASXASL.cjs +205 -0
  32. package/dist/chunk-C3ASXASL.cjs.map +1 -0
  33. package/dist/chunk-CTD2GDO6.cjs +121 -0
  34. package/dist/chunk-CTD2GDO6.cjs.map +1 -0
  35. package/dist/chunk-EIE6FLCL.js +202 -0
  36. package/dist/chunk-EIE6FLCL.js.map +1 -0
  37. package/dist/chunk-H2AV67DY.cjs +260 -0
  38. package/dist/chunk-H2AV67DY.cjs.map +1 -0
  39. package/dist/chunk-H6Y3EJPA.cjs +83 -0
  40. package/dist/chunk-H6Y3EJPA.cjs.map +1 -0
  41. package/dist/chunk-JHOJY54P.js +123 -0
  42. package/dist/chunk-JHOJY54P.js.map +1 -0
  43. package/dist/chunk-JWV3IITG.js +80 -0
  44. package/dist/chunk-JWV3IITG.js.map +1 -0
  45. package/dist/chunk-K5QRX5CZ.js +194 -0
  46. package/dist/chunk-K5QRX5CZ.js.map +1 -0
  47. package/dist/chunk-MKCSRMHF.cjs +198 -0
  48. package/dist/chunk-MKCSRMHF.cjs.map +1 -0
  49. package/dist/chunk-R2F3FTBL.js +119 -0
  50. package/dist/chunk-R2F3FTBL.js.map +1 -0
  51. package/dist/chunk-ROKPXWY2.cjs +198 -0
  52. package/dist/chunk-ROKPXWY2.cjs.map +1 -0
  53. package/dist/chunk-RUSFF3MZ.js +214 -0
  54. package/dist/chunk-RUSFF3MZ.js.map +1 -0
  55. package/dist/chunk-T7CC3CLH.js +195 -0
  56. package/dist/chunk-T7CC3CLH.js.map +1 -0
  57. package/dist/chunk-UWQ5QNE3.cjs +311 -0
  58. package/dist/chunk-UWQ5QNE3.cjs.map +1 -0
  59. package/dist/chunk-WDUETPNG.js +256 -0
  60. package/dist/chunk-WDUETPNG.js.map +1 -0
  61. package/dist/chunk-YQSTEIU5.js +304 -0
  62. package/dist/chunk-YQSTEIU5.js.map +1 -0
  63. package/dist/data.cjs +20 -0
  64. package/dist/data.cjs.map +1 -0
  65. package/dist/data.css +151 -0
  66. package/dist/data.css.map +1 -0
  67. package/dist/data.d.cts +47 -0
  68. package/dist/data.d.ts +47 -0
  69. package/dist/data.js +3 -0
  70. package/dist/data.js.map +1 -0
  71. package/dist/heroes.cjs +12 -0
  72. package/dist/heroes.cjs.map +1 -0
  73. package/dist/heroes.css +190 -0
  74. package/dist/heroes.css.map +1 -0
  75. package/dist/heroes.d.cts +19 -0
  76. package/dist/heroes.d.ts +19 -0
  77. package/dist/heroes.js +3 -0
  78. package/dist/heroes.js.map +1 -0
  79. package/dist/index.cjs +104 -0
  80. package/dist/index.cjs.map +1 -0
  81. package/dist/index.css +1269 -0
  82. package/dist/index.css.map +1 -0
  83. package/dist/index.d.cts +10 -0
  84. package/dist/index.d.ts +10 -0
  85. package/dist/index.js +11 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/landing.cjs +12 -0
  88. package/dist/landing.cjs.map +1 -0
  89. package/dist/landing.css +137 -0
  90. package/dist/landing.css.map +1 -0
  91. package/dist/landing.d.cts +14 -0
  92. package/dist/landing.d.ts +14 -0
  93. package/dist/landing.js +3 -0
  94. package/dist/landing.js.map +1 -0
  95. package/dist/motion.cjs +16 -0
  96. package/dist/motion.cjs.map +1 -0
  97. package/dist/motion.css +79 -0
  98. package/dist/motion.css.map +1 -0
  99. package/dist/motion.d.cts +26 -0
  100. package/dist/motion.d.ts +26 -0
  101. package/dist/motion.js +3 -0
  102. package/dist/motion.js.map +1 -0
  103. package/dist/text.cjs +16 -0
  104. package/dist/text.cjs.map +1 -0
  105. package/dist/text.css +72 -0
  106. package/dist/text.css.map +1 -0
  107. package/dist/text.d.cts +28 -0
  108. package/dist/text.d.ts +28 -0
  109. package/dist/text.js +3 -0
  110. package/dist/text.js.map +1 -0
  111. package/dist/ui.cjs +16 -0
  112. package/dist/ui.cjs.map +1 -0
  113. package/dist/ui.css +95 -0
  114. package/dist/ui.css.map +1 -0
  115. package/dist/ui.d.cts +28 -0
  116. package/dist/ui.d.ts +28 -0
  117. package/dist/ui.js +3 -0
  118. package/dist/ui.js.map +1 -0
  119. package/package.json +134 -0
package/dist/index.css ADDED
@@ -0,0 +1,1269 @@
1
+ /* src/backgrounds/PredictiveArc.css */
2
+ .fb-predictive-arc {
3
+ position: relative;
4
+ width: 100%;
5
+ height: 100%;
6
+ overflow: hidden;
7
+ background: var( --predictive-arc-background, #0d0d11 );
8
+ }
9
+ .fb-predictive-arc__line {
10
+ position: absolute;
11
+ left: 50%;
12
+ top: 60%;
13
+ border-radius: 50%;
14
+ border-left: 0;
15
+ border-right: 0;
16
+ border-bottom: 0;
17
+ transform: translate(-50%, -50%);
18
+ border-top: var( --predictive-arc-thickness, 3px ) solid var( --predictive-arc-color, #9b7cff );
19
+ box-shadow: 0 0 var( --predictive-arc-glow, 16px ) var( --predictive-arc-color, #9b7cff );
20
+ }
21
+ .fb-predictive-arc__line--outer {
22
+ width: var( --predictive-arc-size, 70% );
23
+ height: 45%;
24
+ }
25
+ .fb-predictive-arc__line--inner {
26
+ width: 50%;
27
+ height: 32%;
28
+ opacity: 0.4;
29
+ }
30
+ .fb-predictive-arc__point {
31
+ position: absolute;
32
+ top: 60%;
33
+ width: 7px;
34
+ height: 7px;
35
+ border-radius: 50%;
36
+ background: var( --predictive-arc-color, #9b7cff );
37
+ box-shadow: 0 0 16px var( --predictive-arc-color, #9b7cff );
38
+ }
39
+ .fb-predictive-arc__point--left {
40
+ left: 20%;
41
+ }
42
+ .fb-predictive-arc__point--right {
43
+ right: 20%;
44
+ }
45
+ .fb-predictive-arc--animated .fb-predictive-arc__line--outer {
46
+ animation: fbPredictiveArcPulse 2.8s ease-in-out infinite alternate;
47
+ }
48
+ @keyframes fbPredictiveArcPulse {
49
+ from {
50
+ opacity: 0.55;
51
+ transform: translate(-50%, -50%) scale(0.98);
52
+ }
53
+ to {
54
+ opacity: 1;
55
+ transform: translate(-50%, -50%) scale(1.02);
56
+ }
57
+ }
58
+ @media (prefers-reduced-motion: reduce) {
59
+ .fb-predictive-arc * {
60
+ animation: none !important;
61
+ }
62
+ }
63
+
64
+ /* src/backgrounds/SignalParticles.css */
65
+ .fb-signal-particles {
66
+ position: relative;
67
+ width: 100%;
68
+ height: 100%;
69
+ overflow: hidden;
70
+ }
71
+ .fb-signal-particles__particle {
72
+ position: absolute;
73
+ border-radius: 50%;
74
+ }
75
+ .fb-signal-particles__particle--animated {
76
+ animation: fbSignalParticle 3s ease-in-out infinite alternate;
77
+ }
78
+ @keyframes fbSignalParticle {
79
+ from {
80
+ opacity: 0.2;
81
+ transform: scale(0.7);
82
+ }
83
+ to {
84
+ opacity: 1;
85
+ transform: scale(1.2);
86
+ }
87
+ }
88
+ @media (prefers-reduced-motion: reduce) {
89
+ .fb-signal-particles__particle {
90
+ animation: none !important;
91
+ }
92
+ }
93
+
94
+ /* src/backgrounds/DotMatrix.css */
95
+ .fb-dot-matrix {
96
+ width: 100%;
97
+ height: 100%;
98
+ }
99
+ .fb-dot-matrix--fade {
100
+ mask-image:
101
+ radial-gradient(
102
+ circle,
103
+ #000 30%,
104
+ transparent 80%);
105
+ -webkit-mask-image:
106
+ radial-gradient(
107
+ circle,
108
+ #000 30%,
109
+ transparent 80%);
110
+ }
111
+
112
+ /* src/backgrounds/GradientMesh.css */
113
+ .fb-gradient-mesh {
114
+ position: relative;
115
+ width: 100%;
116
+ height: 100%;
117
+ overflow: hidden;
118
+ }
119
+ .fb-gradient-mesh__layer {
120
+ position: absolute;
121
+ inset: -25%;
122
+ }
123
+ .fb-gradient-mesh__layer--animated {
124
+ animation: fbGradientMeshMove 8s ease-in-out infinite alternate;
125
+ }
126
+ @keyframes fbGradientMeshMove {
127
+ from {
128
+ transform: translate3d(-3%, -2%, 0) scale(1);
129
+ }
130
+ to {
131
+ transform: translate3d(6%, 5%, 0) scale(1.12);
132
+ }
133
+ }
134
+ @media (prefers-reduced-motion: reduce) {
135
+ .fb-gradient-mesh__layer {
136
+ animation: none !important;
137
+ }
138
+ }
139
+
140
+ /* src/backgrounds/AuroraGrid.css */
141
+ .fb-aurora-grid {
142
+ position: relative;
143
+ width: 100%;
144
+ height: 100%;
145
+ overflow: hidden;
146
+ }
147
+ .fb-aurora-grid__grid {
148
+ position: absolute;
149
+ inset: -35%;
150
+ transform: perspective(600px) rotateX(58deg) scale(1.35);
151
+ transform-origin: center bottom;
152
+ }
153
+ .fb-aurora-grid__grid--animated {
154
+ animation: fbAuroraGridMove 8s linear infinite;
155
+ }
156
+ .fb-aurora-grid__glow {
157
+ position: absolute;
158
+ left: 50%;
159
+ bottom: -18%;
160
+ width: 58%;
161
+ aspect-ratio: 1;
162
+ border-radius: 50%;
163
+ opacity: 0.4;
164
+ transform: translateX(-50%);
165
+ }
166
+ .fb-aurora-grid__glow--animated {
167
+ animation: fbAuroraGlow 6s ease-in-out infinite alternate;
168
+ }
169
+ @keyframes fbAuroraGridMove {
170
+ from {
171
+ background-position: 0 0;
172
+ }
173
+ to {
174
+ background-position: 0 80px;
175
+ }
176
+ }
177
+ @keyframes fbAuroraGlow {
178
+ from {
179
+ transform: translateX(-50%) scale(0.9);
180
+ opacity: 0.28;
181
+ }
182
+ to {
183
+ transform: translateX(-50%) scale(1.15);
184
+ opacity: 0.5;
185
+ }
186
+ }
187
+ @media (prefers-reduced-motion: reduce) {
188
+ .fb-aurora-grid__grid,
189
+ .fb-aurora-grid__glow {
190
+ animation: none !important;
191
+ }
192
+ }
193
+
194
+ /* src/backgrounds/NoiseField.css */
195
+ .fb-noise-field {
196
+ position: relative;
197
+ width: 100%;
198
+ height: 100%;
199
+ overflow: hidden;
200
+ }
201
+ .fb-noise-field__blob {
202
+ position: absolute;
203
+ width: 58%;
204
+ aspect-ratio: 1;
205
+ border-radius: 48% 52% 62% 38%;
206
+ filter: blur(45px);
207
+ }
208
+ .fb-noise-field__blob--one {
209
+ left: 8%;
210
+ top: 8%;
211
+ }
212
+ .fb-noise-field__blob--two {
213
+ right: -5%;
214
+ bottom: -8%;
215
+ }
216
+ .fb-noise-field__blob--animated {
217
+ animation: fbNoiseFieldMorph 6s ease-in-out infinite alternate;
218
+ }
219
+ .fb-noise-field__texture {
220
+ position: absolute;
221
+ inset: 0;
222
+ background-image:
223
+ repeating-radial-gradient(
224
+ circle at 30% 40%,
225
+ rgba(255, 255, 255, 0.22) 0 1px,
226
+ transparent 1px 4px);
227
+ }
228
+ .fb-noise-field__texture--animated {
229
+ animation: fbNoiseFieldTexture 5s linear infinite;
230
+ }
231
+ @keyframes fbNoiseFieldMorph {
232
+ from {
233
+ transform: translate3d(-8%, -5%, 0) rotate(-8deg) scale(0.95);
234
+ }
235
+ to {
236
+ transform: translate3d(14%, 10%, 0) rotate(14deg) scale(1.12);
237
+ }
238
+ }
239
+ @keyframes fbNoiseFieldTexture {
240
+ from {
241
+ transform: translate3d(0, 0, 0);
242
+ }
243
+ to {
244
+ transform: translate3d(16px, -12px, 0);
245
+ }
246
+ }
247
+ @media (prefers-reduced-motion: reduce) {
248
+ .fb-noise-field__blob,
249
+ .fb-noise-field__texture {
250
+ animation: none !important;
251
+ }
252
+ }
253
+
254
+ /* src/buttons/MagneticButton.css */
255
+ .fb-magnetic-button {
256
+ border: 0;
257
+ cursor: pointer;
258
+ font-family: inherit;
259
+ transition: transform 0.18s ease-out, box-shadow 0.2s ease;
260
+ }
261
+ .fb-magnetic-button:hover {
262
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
263
+ }
264
+ .fb-magnetic-button:focus-visible {
265
+ outline: 2px solid #9b7cff;
266
+ outline-offset: 4px;
267
+ }
268
+
269
+ /* src/buttons/GlowButton.css */
270
+ .fb-glow-button {
271
+ position: relative;
272
+ isolation: isolate;
273
+ overflow: hidden;
274
+ border: 1px solid rgba(255, 255, 255, 0.18);
275
+ font-family: inherit;
276
+ font-weight: 500;
277
+ cursor: pointer;
278
+ transition: transform 0.2s ease, box-shadow 0.25s ease;
279
+ }
280
+ .fb-glow-button:hover {
281
+ transform: translateY(-2px) scale(1.02);
282
+ }
283
+ .fb-glow-button:active {
284
+ transform: translateY(0) scale(0.99);
285
+ }
286
+ .fb-glow-button:focus-visible {
287
+ outline: 2px solid var( --fb-glow-button-color, #9b7cff );
288
+ outline-offset: 4px;
289
+ }
290
+ .fb-glow-button__content {
291
+ position: relative;
292
+ z-index: 2;
293
+ }
294
+ .fb-glow-button__glow {
295
+ position: absolute;
296
+ z-index: 1;
297
+ inset: -25%;
298
+ border-radius: inherit;
299
+ background: var( --fb-glow-button-color, #9b7cff );
300
+ opacity: 0.16;
301
+ filter: blur(18px);
302
+ animation: fbGlowButtonPulse 2.5s ease-in-out infinite alternate;
303
+ }
304
+ @keyframes fbGlowButtonPulse {
305
+ from {
306
+ opacity: 0.08;
307
+ transform: scale(0.85);
308
+ }
309
+ to {
310
+ opacity: 0.26;
311
+ transform: scale(1.15);
312
+ }
313
+ }
314
+ @media (prefers-reduced-motion: reduce) {
315
+ .fb-glow-button,
316
+ .fb-glow-button__glow {
317
+ animation: none !important;
318
+ transition: none !important;
319
+ }
320
+ }
321
+
322
+ /* src/buttons/GlassButton.css */
323
+ .fb-glass-button {
324
+ position: relative;
325
+ overflow: hidden;
326
+ padding: 13px 22px;
327
+ border: 1px solid;
328
+ font-family: inherit;
329
+ font-size: 14px;
330
+ font-weight: 500;
331
+ cursor: pointer;
332
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14);
333
+ transition: transform 0.2s ease, background 0.2s ease;
334
+ }
335
+ .fb-glass-button:hover {
336
+ transform: translateY(-2px);
337
+ }
338
+ .fb-glass-button:active {
339
+ transform: translateY(0);
340
+ }
341
+ .fb-glass-button:focus-visible {
342
+ outline: 2px solid #a88cff;
343
+ outline-offset: 4px;
344
+ }
345
+ .fb-glass-button__shine {
346
+ position: absolute;
347
+ width: 45%;
348
+ height: 300%;
349
+ left: -70%;
350
+ top: -100%;
351
+ background:
352
+ linear-gradient(
353
+ 90deg,
354
+ transparent,
355
+ rgba(255, 255, 255, 0.22),
356
+ transparent);
357
+ transform: rotate(20deg);
358
+ transition: left 0.5s ease;
359
+ }
360
+ .fb-glass-button:hover .fb-glass-button__shine {
361
+ left: 130%;
362
+ }
363
+ @media (prefers-reduced-motion: reduce) {
364
+ .fb-glass-button,
365
+ .fb-glass-button__shine {
366
+ transition: none !important;
367
+ }
368
+ }
369
+
370
+ /* src/text/RevealText.css */
371
+ .fb-reveal-text {
372
+ display: inline-block;
373
+ font-weight: 650;
374
+ letter-spacing: -0.05em;
375
+ animation: fbRevealText 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
376
+ }
377
+ @keyframes fbRevealText {
378
+ from {
379
+ opacity: 0;
380
+ transform: translateY(22px);
381
+ }
382
+ to {
383
+ opacity: 1;
384
+ transform: translateY(0);
385
+ }
386
+ }
387
+ @media (prefers-reduced-motion: reduce) {
388
+ .fb-reveal-text {
389
+ animation: none !important;
390
+ }
391
+ }
392
+
393
+ /* src/text/BlurReveal.css */
394
+ .fb-blur-reveal {
395
+ display: inline-block;
396
+ font-weight: 650;
397
+ line-height: 0.92;
398
+ letter-spacing: -0.045em;
399
+ animation: fbBlurReveal var( --fb-blur-reveal-duration, 0.8s ) cubic-bezier(0.16, 1, 0.3, 1) both;
400
+ }
401
+ .fb-blur-reveal--repeat {
402
+ animation: fbBlurRevealRepeat calc(var( --fb-blur-reveal-duration, 0.8s ) * 3) cubic-bezier(0.16, 1, 0.3, 1) infinite;
403
+ }
404
+ @keyframes fbBlurReveal {
405
+ from {
406
+ opacity: 0;
407
+ filter: blur(var( --fb-blur-reveal-blur, 14px ));
408
+ transform: translateY(var( --fb-blur-reveal-distance, 24px ));
409
+ }
410
+ to {
411
+ opacity: 1;
412
+ filter: blur(0);
413
+ transform: translateY(0);
414
+ }
415
+ }
416
+ @keyframes fbBlurRevealRepeat {
417
+ 0% {
418
+ opacity: 0;
419
+ filter: blur(var( --fb-blur-reveal-blur, 14px ));
420
+ transform: translateY(var( --fb-blur-reveal-distance, 24px ));
421
+ }
422
+ 28%, 72% {
423
+ opacity: 1;
424
+ filter: blur(0);
425
+ transform: translateY(0);
426
+ }
427
+ 100% {
428
+ opacity: 0;
429
+ filter: blur(calc(var( --fb-blur-reveal-blur, 14px ) * 0.5));
430
+ transform: translateY(calc(var( --fb-blur-reveal-distance, 24px ) * -0.35));
431
+ }
432
+ }
433
+ @media (prefers-reduced-motion: reduce) {
434
+ .fb-blur-reveal {
435
+ animation: none !important;
436
+ opacity: 1;
437
+ filter: none;
438
+ transform: none;
439
+ }
440
+ }
441
+
442
+ /* src/ui/SpotlightCard.css */
443
+ .fb-spotlight-card {
444
+ position: relative;
445
+ overflow: hidden;
446
+ min-height: 280px;
447
+ padding: 32px;
448
+ border: 1px solid;
449
+ transition: transform 0.25s ease;
450
+ }
451
+ .fb-spotlight-card:hover {
452
+ transform: translateY(-4px);
453
+ }
454
+ .fb-spotlight-card > span {
455
+ display: block;
456
+ color: #b99cff;
457
+ font-size: 10px;
458
+ }
459
+ .fb-spotlight-card > strong {
460
+ display: block;
461
+ margin-top: 100px;
462
+ font-size: 34px;
463
+ }
464
+ .fb-spotlight-card > p {
465
+ color: rgba(255, 255, 255, 0.55);
466
+ }
467
+
468
+ /* src/ui/GlassCard.css */
469
+ .fb-glass-card {
470
+ position: relative;
471
+ isolation: isolate;
472
+ overflow: hidden;
473
+ width: min(100%, 390px);
474
+ min-height: 300px;
475
+ padding: 30px;
476
+ border: 1px solid;
477
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
478
+ transition: transform 0.3s ease, border-color 0.3s ease;
479
+ }
480
+ .fb-glass-card:hover {
481
+ transform: translateY(-5px);
482
+ }
483
+ .fb-glass-card__glow {
484
+ position: absolute;
485
+ z-index: -1;
486
+ left: -10%;
487
+ top: -15%;
488
+ width: 70%;
489
+ aspect-ratio: 1;
490
+ border-radius: 50%;
491
+ opacity: 0.2;
492
+ pointer-events: none;
493
+ transition: transform 0.5s ease, opacity 0.5s ease;
494
+ }
495
+ .fb-glass-card:hover .fb-glass-card__glow {
496
+ opacity: 0.32;
497
+ transform: translate3d(30px, 20px, 0) scale(1.1);
498
+ }
499
+ .fb-glass-card__inner {
500
+ position: relative;
501
+ z-index: 1;
502
+ min-height: 240px;
503
+ display: flex;
504
+ flex-direction: column;
505
+ }
506
+ .fb-glass-card__eyebrow {
507
+ color: #bba8ff;
508
+ font-family: "DM Mono", monospace;
509
+ font-size: 9px;
510
+ letter-spacing: 1.4px;
511
+ }
512
+ .fb-glass-card__content {
513
+ margin-top: auto;
514
+ }
515
+ .fb-glass-card__content strong {
516
+ display: block;
517
+ color: white;
518
+ font-size: clamp(32px, 5vw, 48px);
519
+ font-weight: 550;
520
+ line-height: 0.92;
521
+ letter-spacing: -0.045em;
522
+ }
523
+ .fb-glass-card__content p {
524
+ max-width: 260px;
525
+ margin: 18px 0 0;
526
+ color: rgba(255, 255, 255, 0.55);
527
+ font-size: 12px;
528
+ line-height: 1.65;
529
+ }
530
+ @media (prefers-reduced-motion: reduce) {
531
+ .fb-glass-card,
532
+ .fb-glass-card__glow {
533
+ transition: none !important;
534
+ }
535
+ }
536
+
537
+ /* src/motion/GlowCursor.css */
538
+ .fb-glow-cursor {
539
+ position: relative;
540
+ overflow: hidden;
541
+ }
542
+ .fb-glow-cursor__glow {
543
+ position: absolute;
544
+ border-radius: 50%;
545
+ transform: translate(-50%, -50%);
546
+ pointer-events: none;
547
+ transition-property: left, top;
548
+ transition-timing-function: ease-out;
549
+ }
550
+ .fb-glow-cursor__content {
551
+ position: relative;
552
+ z-index: 2;
553
+ }
554
+
555
+ /* src/motion/MagneticCursor.css */
556
+ .fb-magnetic-cursor {
557
+ position: relative;
558
+ width: 100%;
559
+ height: 100%;
560
+ overflow: hidden;
561
+ }
562
+ .fb-magnetic-cursor__content {
563
+ position: relative;
564
+ z-index: 1;
565
+ width: 100%;
566
+ height: 100%;
567
+ }
568
+ .fb-magnetic-cursor__ring,
569
+ .fb-magnetic-cursor__dot {
570
+ position: absolute;
571
+ z-index: 5;
572
+ left: 0;
573
+ top: 0;
574
+ pointer-events: none;
575
+ opacity: 0;
576
+ border-radius: 50%;
577
+ transform: translate(-50%, -50%);
578
+ }
579
+ .fb-magnetic-cursor__ring {
580
+ border: 1px solid;
581
+ transition:
582
+ left 0.14s ease-out,
583
+ top 0.14s ease-out,
584
+ width 0.2s ease,
585
+ height 0.2s ease,
586
+ opacity 0.15s ease,
587
+ transform 0.2s ease;
588
+ }
589
+ .fb-magnetic-cursor__dot {
590
+ transition: opacity 0.12s ease;
591
+ }
592
+ .fb-magnetic-cursor__ring.is-visible,
593
+ .fb-magnetic-cursor__dot.is-visible {
594
+ opacity: 1;
595
+ }
596
+ .fb-magnetic-cursor__ring.is-targeting {
597
+ transform: translate(-50%, -50%) scale(1.35);
598
+ background: rgba(185, 156, 255, 0.08);
599
+ }
600
+ @media (pointer: coarse) {
601
+ .fb-magnetic-cursor {
602
+ cursor: auto !important;
603
+ }
604
+ .fb-magnetic-cursor__ring,
605
+ .fb-magnetic-cursor__dot {
606
+ display: none;
607
+ }
608
+ }
609
+ @media (prefers-reduced-motion: reduce) {
610
+ .fb-magnetic-cursor__ring,
611
+ .fb-magnetic-cursor__dot {
612
+ transition: none !important;
613
+ }
614
+ }
615
+
616
+ /* src/ai/AiPromptBox.css */
617
+ .fb-ai-prompt-box {
618
+ position: relative;
619
+ width: min(100%, 680px);
620
+ overflow: hidden;
621
+ border: 1px solid rgba(255, 255, 255, 0.11);
622
+ box-shadow: 0 25px 90px rgba(0, 0, 0, 0.35);
623
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
624
+ }
625
+ .fb-ai-prompt-box:focus-within {
626
+ border-color: color-mix(in srgb, var( --fb-ai-prompt-accent, #9b7cff ) 55%, transparent);
627
+ box-shadow: 0 25px 90px rgba(0, 0, 0, 0.35), 0 0 0 1px color-mix(in srgb, var( --fb-ai-prompt-accent, #9b7cff ) 25%, transparent);
628
+ }
629
+ .fb-ai-prompt-box__form {
630
+ min-height: inherit;
631
+ padding: 18px;
632
+ display: flex;
633
+ flex-direction: column;
634
+ }
635
+ .fb-ai-prompt-box__field {
636
+ position: relative;
637
+ flex: 1;
638
+ display: grid;
639
+ grid-template-columns: auto minmax(0, 1fr);
640
+ align-items: start;
641
+ gap: 11px;
642
+ }
643
+ .fb-ai-prompt-box__spark {
644
+ margin-top: 5px;
645
+ color: var( --fb-ai-prompt-accent, #9b7cff );
646
+ }
647
+ .fb-ai-prompt-box textarea {
648
+ width: 100%;
649
+ min-height: 85px;
650
+ resize: none;
651
+ border: 0;
652
+ outline: 0;
653
+ background: transparent;
654
+ color: inherit;
655
+ font: inherit;
656
+ font-size: 14px;
657
+ line-height: 1.6;
658
+ }
659
+ .fb-ai-prompt-box textarea::placeholder {
660
+ color: rgba(255, 255, 255, 0.36);
661
+ }
662
+ .fb-ai-prompt-box__footer {
663
+ margin-top: 16px;
664
+ display: flex;
665
+ align-items: center;
666
+ justify-content: space-between;
667
+ gap: 15px;
668
+ }
669
+ .fb-ai-prompt-box__actions {
670
+ display: flex;
671
+ align-items: center;
672
+ gap: 10px;
673
+ }
674
+ .fb-ai-prompt-box__secondary,
675
+ .fb-ai-prompt-box__submit {
676
+ display: inline-flex;
677
+ align-items: center;
678
+ justify-content: center;
679
+ border: 0;
680
+ cursor: pointer;
681
+ }
682
+ .fb-ai-prompt-box__secondary {
683
+ width: 32px;
684
+ height: 32px;
685
+ border: 1px solid rgba(255, 255, 255, 0.1);
686
+ border-radius: 9px;
687
+ background: rgba(255, 255, 255, 0.035);
688
+ color: rgba(255, 255, 255, 0.64);
689
+ }
690
+ .fb-ai-prompt-box__secondary:hover {
691
+ background: rgba(255, 255, 255, 0.08);
692
+ color: white;
693
+ }
694
+ .fb-ai-prompt-box__model {
695
+ color: rgba(255, 255, 255, 0.42);
696
+ font-family: "DM Mono", monospace;
697
+ font-size: 8px;
698
+ }
699
+ .fb-ai-prompt-box__submit {
700
+ width: 34px;
701
+ height: 34px;
702
+ border-radius: 10px;
703
+ background: var( --fb-ai-prompt-accent, #9b7cff );
704
+ color: white;
705
+ transition:
706
+ transform 0.18s ease,
707
+ opacity 0.18s ease,
708
+ box-shadow 0.18s ease;
709
+ }
710
+ .fb-ai-prompt-box__submit:not(:disabled):hover {
711
+ transform: translateY(-2px);
712
+ box-shadow: 0 0 25px color-mix(in srgb, var( --fb-ai-prompt-accent, #9b7cff ) 45%, transparent);
713
+ }
714
+ .fb-ai-prompt-box__submit:disabled {
715
+ opacity: 0.32;
716
+ cursor: not-allowed;
717
+ }
718
+ .fb-ai-prompt-box button:focus-visible,
719
+ .fb-ai-prompt-box textarea:focus-visible {
720
+ outline: 2px solid var( --fb-ai-prompt-accent, #9b7cff );
721
+ outline-offset: 3px;
722
+ }
723
+ @media (prefers-reduced-motion: reduce) {
724
+ .fb-ai-prompt-box,
725
+ .fb-ai-prompt-box__submit {
726
+ transition: none !important;
727
+ }
728
+ }
729
+
730
+ /* src/ai/StreamingResponse.css */
731
+ .fb-streaming-response {
732
+ width: min(100%, 680px);
733
+ padding: clamp(20px, 4vw, 32px);
734
+ border: 1px solid rgba(255, 255, 255, 0.09);
735
+ border-radius: 18px;
736
+ background: rgba(255, 255, 255, 0.025);
737
+ }
738
+ .fb-streaming-response__status {
739
+ display: flex;
740
+ align-items: center;
741
+ gap: 8px;
742
+ color: var( --fb-streaming-accent );
743
+ font-family: "DM Mono", monospace;
744
+ font-size: 8px;
745
+ letter-spacing: 1.4px;
746
+ }
747
+ .fb-streaming-response__status > span {
748
+ width: 7px;
749
+ height: 7px;
750
+ border-radius: 50%;
751
+ background: var( --fb-streaming-accent );
752
+ box-shadow: 0 0 14px var( --fb-streaming-accent );
753
+ animation: fbStreamingPulse 0.9s ease-in-out infinite alternate;
754
+ }
755
+ .fb-streaming-response__status > span.is-complete {
756
+ background: #69db9e;
757
+ box-shadow: none;
758
+ animation: none;
759
+ }
760
+ .fb-streaming-response p {
761
+ margin: 20px 0 0;
762
+ color: inherit;
763
+ font-size: clamp(14px, 2vw, 18px);
764
+ line-height: 1.8;
765
+ }
766
+ .fb-streaming-response__cursor {
767
+ display: inline-block;
768
+ width: 2px;
769
+ height: 1em;
770
+ margin-left: 4px;
771
+ vertical-align: -2px;
772
+ background: var( --fb-streaming-accent );
773
+ animation: fbStreamingCursor 0.7s steps(1) infinite;
774
+ }
775
+ @keyframes fbStreamingPulse {
776
+ to {
777
+ opacity: 0.35;
778
+ transform: scale(0.75);
779
+ }
780
+ }
781
+ @keyframes fbStreamingCursor {
782
+ 50% {
783
+ opacity: 0;
784
+ }
785
+ }
786
+ @media (prefers-reduced-motion: reduce) {
787
+ .fb-streaming-response * {
788
+ animation: none !important;
789
+ }
790
+ }
791
+
792
+ /* src/heroes/SaasLaunchHero.css */
793
+ .fb-saas-launch-hero {
794
+ position: relative;
795
+ width: 100%;
796
+ min-height: 100%;
797
+ overflow: hidden;
798
+ display: grid;
799
+ grid-template-columns: minmax(0, 1.05fr) minmax(260px, 0.95fr);
800
+ align-items: center;
801
+ gap: 50px;
802
+ padding: clamp(35px, 7vw, 90px);
803
+ color: white;
804
+ }
805
+ .fb-saas-launch-hero__glow {
806
+ position: absolute;
807
+ right: -8%;
808
+ top: -25%;
809
+ width: 55%;
810
+ aspect-ratio: 1;
811
+ border-radius: 50%;
812
+ background: var( --fb-saas-accent );
813
+ opacity: 0.16;
814
+ filter: blur(85px);
815
+ animation: fbSaasGlow 7s ease-in-out infinite alternate;
816
+ }
817
+ .fb-saas-launch-hero__content {
818
+ position: relative;
819
+ z-index: 2;
820
+ }
821
+ .fb-saas-launch-hero__eyebrow {
822
+ display: block;
823
+ color: var( --fb-saas-accent );
824
+ font-family: "DM Mono", monospace;
825
+ font-size: 9px;
826
+ letter-spacing: 1.8px;
827
+ }
828
+ .fb-saas-launch-hero h2 {
829
+ margin: 20px 0 0;
830
+ font-size: clamp(42px, 7vw, var( --fb-saas-headline-size ));
831
+ font-weight: 550;
832
+ line-height: 0.89;
833
+ letter-spacing: -0.06em;
834
+ }
835
+ .fb-saas-launch-hero h2 span {
836
+ display: block;
837
+ }
838
+ .fb-saas-launch-hero__content > p {
839
+ max-width: 580px;
840
+ margin: 24px 0 0;
841
+ color: rgba(255, 255, 255, 0.55);
842
+ font-size: 14px;
843
+ line-height: 1.7;
844
+ }
845
+ .fb-saas-launch-hero__actions {
846
+ margin-top: 30px;
847
+ display: flex;
848
+ flex-wrap: wrap;
849
+ gap: 10px;
850
+ }
851
+ .fb-saas-launch-hero__actions button {
852
+ padding: 13px 20px;
853
+ border-radius: 999px;
854
+ font: inherit;
855
+ font-size: 12px;
856
+ cursor: pointer;
857
+ transition: transform 0.2s ease;
858
+ }
859
+ .fb-saas-launch-hero__actions button:hover {
860
+ transform: translateY(-2px);
861
+ }
862
+ .fb-saas-launch-hero__primary {
863
+ border: 0;
864
+ background: white;
865
+ color: #08080b;
866
+ }
867
+ .fb-saas-launch-hero__secondary {
868
+ border: 1px solid rgba(255, 255, 255, 0.14);
869
+ background: rgba(255, 255, 255, 0.035);
870
+ color: white;
871
+ }
872
+ .fb-saas-launch-hero__proof {
873
+ margin-top: 32px;
874
+ display: flex;
875
+ align-items: center;
876
+ gap: 12px;
877
+ }
878
+ .fb-saas-launch-hero__proof > div {
879
+ display: flex;
880
+ }
881
+ .fb-saas-launch-hero__proof > div span {
882
+ width: 25px;
883
+ height: 25px;
884
+ margin-left: -6px;
885
+ border: 2px solid #09090d;
886
+ border-radius: 50%;
887
+ background:
888
+ linear-gradient(
889
+ 135deg,
890
+ var( --fb-saas-accent ),
891
+ #d6cbff);
892
+ }
893
+ .fb-saas-launch-hero__proof > div span:first-child {
894
+ margin-left: 0;
895
+ }
896
+ .fb-saas-launch-hero__proof p {
897
+ margin: 0;
898
+ max-width: 220px;
899
+ color: rgba(255, 255, 255, 0.38);
900
+ font-size: 9px;
901
+ line-height: 1.5;
902
+ }
903
+ .fb-saas-launch-hero__visual {
904
+ position: relative;
905
+ z-index: 2;
906
+ min-height: 330px;
907
+ padding: 28px;
908
+ display: flex;
909
+ flex-direction: column;
910
+ justify-content: space-between;
911
+ border: 1px solid rgba(255, 255, 255, 0.1);
912
+ border-radius: 24px;
913
+ background:
914
+ linear-gradient(
915
+ 145deg,
916
+ rgba(255, 255, 255, 0.055),
917
+ rgba(255, 255, 255, 0.015));
918
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
919
+ }
920
+ .fb-saas-launch-hero__visual-card span {
921
+ color: rgba(255, 255, 255, 0.35);
922
+ font-family: "DM Mono", monospace;
923
+ font-size: 8px;
924
+ }
925
+ .fb-saas-launch-hero__visual-card strong {
926
+ display: block;
927
+ margin-top: 8px;
928
+ font-size: 38px;
929
+ letter-spacing: -0.05em;
930
+ }
931
+ .fb-saas-launch-hero__visual-card small {
932
+ display: inline-block;
933
+ margin-top: 6px;
934
+ color: #79e3a9;
935
+ }
936
+ .fb-saas-launch-hero__bars {
937
+ height: 120px;
938
+ display: flex;
939
+ align-items: flex-end;
940
+ gap: 8px;
941
+ }
942
+ .fb-saas-launch-hero__bars span {
943
+ flex: 1;
944
+ border-radius: 5px 5px 2px 2px;
945
+ background:
946
+ linear-gradient(
947
+ 180deg,
948
+ var( --fb-saas-accent ),
949
+ rgba(143, 115, 255, 0.14));
950
+ animation: fbSaasBar 2.8s ease-in-out infinite alternate;
951
+ }
952
+ .fb-saas-launch-hero__bars span:nth-child(even) {
953
+ animation-delay: -1.2s;
954
+ }
955
+ @keyframes fbSaasGlow {
956
+ to {
957
+ transform: translate3d(-35px, 30px, 0) scale(1.15);
958
+ }
959
+ }
960
+ @keyframes fbSaasBar {
961
+ from {
962
+ opacity: 0.55;
963
+ transform: scaleY(0.82);
964
+ transform-origin: bottom;
965
+ }
966
+ to {
967
+ opacity: 1;
968
+ transform: scaleY(1);
969
+ }
970
+ }
971
+ @media (max-width: 760px) {
972
+ .fb-saas-launch-hero {
973
+ grid-template-columns: 1fr;
974
+ }
975
+ }
976
+ @media (prefers-reduced-motion: reduce) {
977
+ .fb-saas-launch-hero * {
978
+ animation: none !important;
979
+ }
980
+ }
981
+
982
+ /* src/landing/StartupLanding.css */
983
+ .fb-startup-landing {
984
+ position: relative;
985
+ width: 100%;
986
+ min-height: 100%;
987
+ overflow: hidden;
988
+ padding: clamp(24px, 5vw, 65px);
989
+ color: white;
990
+ background-image:
991
+ radial-gradient(
992
+ circle at 50% 12%,
993
+ color-mix(in srgb, var( --fb-startup-accent ) 18%, transparent),
994
+ transparent 40%);
995
+ }
996
+ .fb-startup-landing__nav {
997
+ display: grid;
998
+ grid-template-columns: 1fr auto 1fr;
999
+ align-items: center;
1000
+ gap: 30px;
1001
+ }
1002
+ .fb-startup-landing__nav strong {
1003
+ font-size: 17px;
1004
+ }
1005
+ .fb-startup-landing__nav > div {
1006
+ display: flex;
1007
+ gap: 22px;
1008
+ }
1009
+ .fb-startup-landing__nav a {
1010
+ color: rgba(255, 255, 255, 0.48);
1011
+ font-size: 11px;
1012
+ text-decoration: none;
1013
+ }
1014
+ .fb-startup-landing__nav button {
1015
+ justify-self: end;
1016
+ padding: 10px 15px;
1017
+ border: 0;
1018
+ border-radius: 999px;
1019
+ background: white;
1020
+ color: #08080c;
1021
+ cursor: pointer;
1022
+ }
1023
+ .fb-startup-landing__hero {
1024
+ max-width: 820px;
1025
+ margin: clamp(65px, 10vw, 130px) auto 0;
1026
+ text-align: center;
1027
+ }
1028
+ .fb-startup-landing__hero > span {
1029
+ color: var( --fb-startup-accent );
1030
+ font-family: "DM Mono", monospace;
1031
+ font-size: 9px;
1032
+ letter-spacing: 1.8px;
1033
+ }
1034
+ .fb-startup-landing__hero h2 {
1035
+ margin: 20px 0 0;
1036
+ font-size: clamp(54px, 9vw, 110px);
1037
+ font-weight: 500;
1038
+ line-height: 0.84;
1039
+ letter-spacing: -0.07em;
1040
+ }
1041
+ .fb-startup-landing__hero p {
1042
+ max-width: 520px;
1043
+ margin: 28px auto 0;
1044
+ color: rgba(255, 255, 255, 0.5);
1045
+ line-height: 1.7;
1046
+ }
1047
+ .fb-startup-landing__hero button {
1048
+ margin-top: 28px;
1049
+ padding: 13px 20px;
1050
+ border: 0;
1051
+ border-radius: 999px;
1052
+ background: var( --fb-startup-accent );
1053
+ color: white;
1054
+ cursor: pointer;
1055
+ }
1056
+ .fb-startup-landing__metrics {
1057
+ margin-top: 80px;
1058
+ display: grid;
1059
+ grid-template-columns: repeat(3, 1fr);
1060
+ gap: 12px;
1061
+ }
1062
+ .fb-startup-landing__metrics article,
1063
+ .fb-startup-landing__features article {
1064
+ border: 1px solid rgba(255, 255, 255, 0.08);
1065
+ border-radius: var( --fb-startup-radius );
1066
+ background: rgba(255, 255, 255, 0.022);
1067
+ }
1068
+ .fb-startup-landing__metrics article {
1069
+ padding: 25px;
1070
+ }
1071
+ .fb-startup-landing__metrics strong {
1072
+ display: block;
1073
+ font-size: 30px;
1074
+ }
1075
+ .fb-startup-landing__metrics span {
1076
+ color: rgba(255, 255, 255, 0.38);
1077
+ font-size: 10px;
1078
+ }
1079
+ .fb-startup-landing__features {
1080
+ margin-top: 12px;
1081
+ display: grid;
1082
+ grid-template-columns: repeat(3, 1fr);
1083
+ gap: 12px;
1084
+ }
1085
+ .fb-startup-landing__features article {
1086
+ min-height: 220px;
1087
+ padding: 25px;
1088
+ display: flex;
1089
+ flex-direction: column;
1090
+ }
1091
+ .fb-startup-landing__features article > span {
1092
+ color: var( --fb-startup-accent );
1093
+ font-family: "DM Mono", monospace;
1094
+ font-size: 8px;
1095
+ }
1096
+ .fb-startup-landing__features h3 {
1097
+ margin-top: auto;
1098
+ margin-bottom: 0;
1099
+ font-size: 27px;
1100
+ }
1101
+ .fb-startup-landing__features p {
1102
+ color: rgba(255, 255, 255, 0.4);
1103
+ font-size: 11px;
1104
+ line-height: 1.5;
1105
+ }
1106
+ @media (max-width: 700px) {
1107
+ .fb-startup-landing__nav {
1108
+ grid-template-columns: 1fr auto;
1109
+ }
1110
+ .fb-startup-landing__nav > div {
1111
+ display: none;
1112
+ }
1113
+ .fb-startup-landing__metrics,
1114
+ .fb-startup-landing__features {
1115
+ grid-template-columns: 1fr;
1116
+ }
1117
+ }
1118
+
1119
+ /* src/data/AnimatedCounter.css */
1120
+ .fb-animated-counter {
1121
+ display: flex;
1122
+ flex-direction: column;
1123
+ align-items: center;
1124
+ text-align: center;
1125
+ }
1126
+ .fb-animated-counter__label {
1127
+ color: rgba(255, 255, 255, 0.38);
1128
+ font-family: "DM Mono", monospace;
1129
+ font-size: 9px;
1130
+ letter-spacing: 1.7px;
1131
+ }
1132
+ .fb-animated-counter strong {
1133
+ margin-top: 10px;
1134
+ color: inherit;
1135
+ font-size: var( --fb-counter-size, 72px );
1136
+ font-weight: 550;
1137
+ line-height: 1;
1138
+ letter-spacing: -0.065em;
1139
+ }
1140
+ .fb-animated-counter small {
1141
+ margin-top: 12px;
1142
+ padding: 5px 9px;
1143
+ border-radius: 999px;
1144
+ background: color-mix(in srgb, var( --fb-counter-accent ) 12%, transparent);
1145
+ color: var( --fb-counter-accent );
1146
+ font-size: 9px;
1147
+ }
1148
+
1149
+ /* src/data/RadialProgress.css */
1150
+ .fb-radial-progress {
1151
+ position: relative;
1152
+ display: inline-flex;
1153
+ align-items: center;
1154
+ justify-content: center;
1155
+ }
1156
+ .fb-radial-progress svg {
1157
+ position: absolute;
1158
+ inset: 0;
1159
+ width: 100%;
1160
+ height: 100%;
1161
+ transform: rotate(-90deg);
1162
+ }
1163
+ .fb-radial-progress__value {
1164
+ filter: drop-shadow(0 0 7px color-mix(in srgb, var( --fb-radial-color ) 55%, transparent));
1165
+ transition: stroke-dashoffset 0.7s cubic-bezier(0.16, 1, 0.3, 1);
1166
+ }
1167
+ .fb-radial-progress__value--animated {
1168
+ animation: fbRadialAppear 0.65s ease-out both;
1169
+ }
1170
+ @keyframes fbRadialAppear {
1171
+ from {
1172
+ opacity: 0;
1173
+ }
1174
+ to {
1175
+ opacity: 1;
1176
+ }
1177
+ }
1178
+ .fb-radial-progress__content {
1179
+ position: relative;
1180
+ z-index: 1;
1181
+ text-align: center;
1182
+ }
1183
+ .fb-radial-progress__content strong {
1184
+ display: block;
1185
+ color: white;
1186
+ font-size: 38px;
1187
+ line-height: 1;
1188
+ letter-spacing: -0.06em;
1189
+ }
1190
+ .fb-radial-progress__content strong small {
1191
+ font-size: 14px;
1192
+ color: rgba(255, 255, 255, 0.42);
1193
+ }
1194
+ .fb-radial-progress__content > span {
1195
+ display: block;
1196
+ margin-top: 6px;
1197
+ color: rgba(255, 255, 255, 0.32);
1198
+ font-family: "DM Mono", monospace;
1199
+ font-size: 7px;
1200
+ letter-spacing: 1.3px;
1201
+ }
1202
+ @keyframes fbRadialAppear {
1203
+ from {
1204
+ opacity: 0;
1205
+ stroke-dashoffset: 999;
1206
+ }
1207
+ to {
1208
+ opacity: 1;
1209
+ }
1210
+ }
1211
+ @media (prefers-reduced-motion: reduce) {
1212
+ .fb-radial-progress__value {
1213
+ animation: none !important;
1214
+ transition: none !important;
1215
+ }
1216
+ }
1217
+
1218
+ /* src/data/MetricGrid.css */
1219
+ .fb-metric-grid {
1220
+ width: 100%;
1221
+ display: grid;
1222
+ gap: 12px;
1223
+ }
1224
+ .fb-metric-grid article {
1225
+ min-width: 0;
1226
+ padding: clamp(18px, 3vw, 28px);
1227
+ border: 1px solid rgba(255, 255, 255, 0.08);
1228
+ border-radius: var( --fb-metric-radius );
1229
+ background: var( --fb-metric-background );
1230
+ transition: transform 0.22s ease, border-color 0.22s ease;
1231
+ }
1232
+ .fb-metric-grid article:hover {
1233
+ transform: translateY(-4px);
1234
+ border-color: color-mix(in srgb, var( --fb-metric-accent ) 35%, transparent);
1235
+ }
1236
+ .fb-metric-grid article > span {
1237
+ color: rgba(255, 255, 255, 0.36);
1238
+ font-size: 10px;
1239
+ }
1240
+ .fb-metric-grid strong {
1241
+ display: block;
1242
+ margin-top: 10px;
1243
+ color: white;
1244
+ font-size: clamp(24px, 4vw, 38px);
1245
+ letter-spacing: -0.045em;
1246
+ }
1247
+ .fb-metric-grid small {
1248
+ display: inline-block;
1249
+ margin-top: 10px;
1250
+ padding: 4px 7px;
1251
+ border-radius: 999px;
1252
+ background: rgba(86, 217, 151, 0.08);
1253
+ color: #75dfa7;
1254
+ }
1255
+ .fb-metric-grid small.is-negative {
1256
+ background: rgba(255, 100, 115, 0.08);
1257
+ color: #ff7c89;
1258
+ }
1259
+ @media (max-width: 650px) {
1260
+ .fb-metric-grid {
1261
+ grid-template-columns: 1fr !important;
1262
+ }
1263
+ }
1264
+ @media (prefers-reduced-motion: reduce) {
1265
+ .fb-metric-grid article {
1266
+ transition: none !important;
1267
+ }
1268
+ }
1269
+ /*# sourceMappingURL=index.css.map */