fiboui 2.2.4 → 2.4.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.
@@ -0,0 +1,4160 @@
1
+ "use client";
2
+ var ko = Object.defineProperty;
3
+ var yo = (t, o, i) => o in t ? ko(t, o, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[o] = i;
4
+ var a = (t, o, i) => yo(t, typeof o != "symbol" ? o + "" : o, i);
5
+ import g, { useRef as _, createContext as F, useContext as A, useCallback as N, useSyncExternalStore as j, useEffect as M, useState as oo, cloneElement as _o } from "react";
6
+ import { jsx as S, Fragment as V } from "react/jsx-runtime";
7
+ import { r as zo, f as $o, b as So } from "./themeData-CmTJt3dU.js";
8
+ class io {
9
+ constructor() {
10
+ a(this, "activeEffect", null);
11
+ }
12
+ }
13
+ const to = new io(), X = [to];
14
+ function eo() {
15
+ return new io();
16
+ }
17
+ function fo() {
18
+ return X[X.length - 1] ?? to;
19
+ }
20
+ function Y() {
21
+ return fo().activeEffect;
22
+ }
23
+ function Co(t, o) {
24
+ X.push(t);
25
+ try {
26
+ return o();
27
+ } finally {
28
+ X.pop();
29
+ }
30
+ }
31
+ function T(t) {
32
+ const o = fo(), i = o.activeEffect;
33
+ return o.activeEffect = t, i;
34
+ }
35
+ class Eo {
36
+ constructor(o) {
37
+ a(this, "dependencies", /* @__PURE__ */ new Set());
38
+ a(this, "_onDispose");
39
+ this.fn = o, this.run();
40
+ }
41
+ run() {
42
+ const o = T(this);
43
+ try {
44
+ this.cleanup(), this.fn();
45
+ } finally {
46
+ T(o);
47
+ }
48
+ }
49
+ track(o) {
50
+ this.dependencies.add(o), o.subscribeEffect(this);
51
+ }
52
+ trigger() {
53
+ this.run();
54
+ }
55
+ cleanup() {
56
+ this.dependencies.forEach((o) => o.unsubscribeEffect(this)), this.dependencies.clear();
57
+ }
58
+ dispose() {
59
+ var o;
60
+ this.cleanup(), (o = this._onDispose) == null || o.call(this);
61
+ }
62
+ }
63
+ class No {
64
+ constructor(o) {
65
+ a(this, "dependencies", /* @__PURE__ */ new Set());
66
+ this._onInvalidate = o;
67
+ }
68
+ execute(o) {
69
+ const i = T(this);
70
+ try {
71
+ return this.cleanup(), o();
72
+ } finally {
73
+ T(i);
74
+ }
75
+ }
76
+ track(o) {
77
+ this.dependencies.add(o), o.subscribeEffect(this);
78
+ }
79
+ trigger() {
80
+ this._onInvalidate();
81
+ }
82
+ cleanup() {
83
+ this.dependencies.forEach((o) => o.unsubscribeEffect(this)), this.dependencies.clear();
84
+ }
85
+ dispose() {
86
+ this.cleanup();
87
+ }
88
+ }
89
+ class R {
90
+ constructor(o) {
91
+ a(this, "listeners", /* @__PURE__ */ new Set());
92
+ a(this, "effects", /* @__PURE__ */ new Set());
93
+ this._value = o;
94
+ }
95
+ get value() {
96
+ const o = Y();
97
+ return o && o.track(this), this._value;
98
+ }
99
+ set value(o) {
100
+ this._value !== o && (this._value = o, this.notify());
101
+ }
102
+ subscribe(o) {
103
+ return this.listeners.add(o), () => this.listeners.delete(o);
104
+ }
105
+ subscribeEffect(o) {
106
+ this.effects.add(o);
107
+ }
108
+ unsubscribeEffect(o) {
109
+ this.effects.delete(o);
110
+ }
111
+ notify() {
112
+ const o = Array.from(this.effects), i = Array.from(this.listeners);
113
+ o.forEach((e) => e.trigger()), i.forEach((e) => e(this._value));
114
+ }
115
+ }
116
+ function Ii(t) {
117
+ return new R(t);
118
+ }
119
+ class To {
120
+ constructor(o) {
121
+ a(this, "listeners", /* @__PURE__ */ new Set());
122
+ a(this, "effects", /* @__PURE__ */ new Set());
123
+ a(this, "_value");
124
+ a(this, "_dirty", !0);
125
+ a(this, "internalEffect");
126
+ this.fn = o, this.internalEffect = new Eo(() => {
127
+ this._dirty || (this._dirty = !0, this.notify());
128
+ });
129
+ }
130
+ get value() {
131
+ const o = Y();
132
+ if (o && o.track(this), this._dirty) {
133
+ const i = T(this.internalEffect);
134
+ try {
135
+ this.internalEffect.cleanup(), this._value = this.fn(), this._dirty = !1;
136
+ } finally {
137
+ T(i);
138
+ }
139
+ }
140
+ return this._value;
141
+ }
142
+ subscribe(o) {
143
+ return this.listeners.add(o), () => this.listeners.delete(o);
144
+ }
145
+ subscribeEffect(o) {
146
+ this.effects.add(o);
147
+ }
148
+ unsubscribeEffect(o) {
149
+ this.effects.delete(o);
150
+ }
151
+ notify() {
152
+ const o = Array.from(this.effects), i = Array.from(this.listeners);
153
+ o.forEach((e) => e.trigger()), i.forEach((e) => e(this._value));
154
+ }
155
+ }
156
+ function Ri(t) {
157
+ return new To(t);
158
+ }
159
+ class Io {
160
+ constructor(o) {
161
+ a(this, "listeners", /* @__PURE__ */ new Set());
162
+ a(this, "effects", /* @__PURE__ */ new Set());
163
+ this._value = o;
164
+ }
165
+ get() {
166
+ const o = Y();
167
+ return o && o.track(this), this._value;
168
+ }
169
+ set(o) {
170
+ this._value !== o && (this._value = o, this.notify());
171
+ }
172
+ subscribe(o) {
173
+ return this.listeners.add(o), () => this.listeners.delete(o);
174
+ }
175
+ subscribeEffect(o) {
176
+ this.effects.add(o);
177
+ }
178
+ unsubscribeEffect(o) {
179
+ this.effects.delete(o);
180
+ }
181
+ notify() {
182
+ Array.from(this.effects).forEach((o) => o.trigger()), Array.from(this.listeners).forEach((o) => o(this._value));
183
+ }
184
+ }
185
+ function Xi(t) {
186
+ return new Io(t);
187
+ }
188
+ class Ro {
189
+ constructor(o) {
190
+ a(this, "listeners", /* @__PURE__ */ new Set());
191
+ a(this, "effects", /* @__PURE__ */ new Set());
192
+ this.state = o;
193
+ }
194
+ getState() {
195
+ const o = Y();
196
+ return o && o.track(this), this.state;
197
+ }
198
+ setState(o) {
199
+ const i = typeof o == "function" ? o(this.state) : o, e = { ...this.state, ...i }, r = Object.keys(this.state), f = Object.keys(e);
200
+ r.length === f.length && f.every((s) => Object.is(e[s], this.state[s])) || (this.state = e, this.notify());
201
+ }
202
+ subscribe(o) {
203
+ return this.listeners.add(o), () => this.listeners.delete(o);
204
+ }
205
+ subscribeEffect(o) {
206
+ this.effects.add(o);
207
+ }
208
+ unsubscribeEffect(o) {
209
+ this.effects.delete(o);
210
+ }
211
+ notify() {
212
+ Array.from(this.effects).forEach((o) => o.trigger()), Array.from(this.listeners).forEach((o) => o(this.state));
213
+ }
214
+ }
215
+ function Fi(t) {
216
+ return new Ro(t);
217
+ }
218
+ const Xo = eo(), ro = F(Xo);
219
+ function Fo() {
220
+ return A(ro);
221
+ }
222
+ function Mi({ children: t, scope: o }) {
223
+ const i = _(o ?? eo()).current;
224
+ return /* @__PURE__ */ S(ro.Provider, { value: i, children: t });
225
+ }
226
+ function Mo({ children: t }) {
227
+ const o = _(0), i = _(/* @__PURE__ */ new Set()), e = _(null);
228
+ e.current || (e.current = new No(() => {
229
+ o.current += 1, i.current.forEach((c) => c());
230
+ }));
231
+ const r = N((c) => (i.current.add(c), () => {
232
+ i.current.delete(c);
233
+ }), []), f = N(() => o.current, []);
234
+ j(r, f, f), M(() => () => {
235
+ var c;
236
+ (c = e.current) == null || c.dispose();
237
+ }, []);
238
+ const n = Fo();
239
+ let s = null;
240
+ try {
241
+ s = Co(n, () => e.current.execute(t));
242
+ } catch {
243
+ s = null;
244
+ }
245
+ return /* @__PURE__ */ S(V, { children: s });
246
+ }
247
+ const Yo = F(/* @__PURE__ */ new Map()), no = F(null);
248
+ function Yi(t) {
249
+ const o = A(no);
250
+ if (!o)
251
+ throw new Error("useBuilderState must be used under a builder that called .state()");
252
+ return [o.get(t), (i) => o.set(t, i)];
253
+ }
254
+ function Bo({ stateMap: t = /* @__PURE__ */ new Map(), children: o }) {
255
+ const [i, e] = oo(() => new Map(t)), r = {
256
+ map: i,
257
+ get: (f) => i.get(f),
258
+ set: (f, n) => {
259
+ e((s) => {
260
+ if (Object.is(s.get(f), n))
261
+ return s;
262
+ const c = new Map(s);
263
+ return c.set(f, n), c;
264
+ });
265
+ }
266
+ };
267
+ return /* @__PURE__ */ S(no.Provider, { value: r, children: /* @__PURE__ */ S(Yo.Provider, { value: i, children: o }) });
268
+ }
269
+ function Lo({ observables: t, children: o }) {
270
+ const i = _(0), e = N((f) => {
271
+ const n = Array.from(t).map(
272
+ (s) => s.subscribe(() => {
273
+ i.current += 1, f();
274
+ })
275
+ );
276
+ return () => n.forEach((s) => s());
277
+ }, [t]), r = N(() => i.current, []);
278
+ return j(e, r, r), /* @__PURE__ */ S(V, { children: typeof o == "function" ? o() : o });
279
+ }
280
+ function Oo({ signals: t, children: o }) {
281
+ const i = _(0), e = N((f) => {
282
+ const n = Array.from(t).map(
283
+ (s) => s.subscribe(() => {
284
+ i.current += 1, f();
285
+ })
286
+ );
287
+ return () => n.forEach((s) => s());
288
+ }, [t]), r = N(() => i.current, []);
289
+ return j(e, r, r), /* @__PURE__ */ S(V, { children: typeof o == "function" ? o() : o });
290
+ }
291
+ const so = F(/* @__PURE__ */ new Map());
292
+ function Bi(t) {
293
+ const o = A(so);
294
+ return o == null ? void 0 : o.get(t);
295
+ }
296
+ function Po({ providers: t = /* @__PURE__ */ new Map(), children: o }) {
297
+ return /* @__PURE__ */ S(so.Provider, { value: t, children: o });
298
+ }
299
+ function Ao(t) {
300
+ return !!t && typeof t == "object" && "build" in t && typeof t.build == "function";
301
+ }
302
+ function jo(t) {
303
+ return g.isValidElement(t) ? t : Ao(t) ? t.build() : t;
304
+ }
305
+ function D(t) {
306
+ return typeof t == "string" || typeof t == "number";
307
+ }
308
+ function Vo(t, o) {
309
+ return g.isValidElement(t) && D(t.key) && t.key !== "" ? t.key : `.$fibo-${o}`;
310
+ }
311
+ function Do(t, o) {
312
+ return !g.isValidElement(t) || D(t.key) && t.key !== "" ? t : g.cloneElement(t, { key: Vo(t, o) });
313
+ }
314
+ function H(t) {
315
+ if (t == null)
316
+ return [];
317
+ const o = typeof t == "function" ? t() : t;
318
+ return (Array.isArray(o) ? o : [o]).map((e, r) => Do(jo(e), r));
319
+ }
320
+ const U = /* @__PURE__ */ new Map(), Wo = {
321
+ easeIn: "ease-in",
322
+ easeOut: "ease-out",
323
+ easeInOut: "ease-in-out",
324
+ linear: "linear",
325
+ ease: "ease"
326
+ };
327
+ function ao(t = {}) {
328
+ const o = t.stiffness ?? 170, i = t.damping ?? 26, e = t.mass ?? 1, r = `${o}:${i}:${e}`, f = U.get(r);
329
+ if (f) return f;
330
+ const n = 1 / 60, s = 1;
331
+ let c = 0, h = 0;
332
+ const b = [0];
333
+ for (let d = 0; d < 180; d += 1) {
334
+ const k = -o * (c - s) - i * h;
335
+ if (h += k / e * n, c += h * n, b.push(c), d > 8 && Math.abs(c - s) < 2e-3 && Math.abs(h) < 2e-3) break;
336
+ }
337
+ b[b.length - 1] !== 1 && b.push(1);
338
+ const x = Math.max(1, Math.floor((b.length - 1) / 24)), p = [];
339
+ for (let d = 0; d < b.length; d += x) {
340
+ const k = d / (b.length - 1), z = Math.round(b[d] * 1e4) / 1e4;
341
+ p.push(d === 0 ? `${z}` : `${z} ${Math.round(k * 1e4) / 100}%`);
342
+ }
343
+ const m = `linear(${p.join(", ")})`;
344
+ return U.set(r, m), m;
345
+ }
346
+ function $(t, o) {
347
+ return t === "spring" ? ao(o) : Wo[t] ?? t;
348
+ }
349
+ const G = [
350
+ "fadeIn",
351
+ "fadeOut",
352
+ "fade",
353
+ "slideUp",
354
+ "slideDown",
355
+ "slideLeft",
356
+ "slideRight",
357
+ "scaleIn",
358
+ "scaleOut",
359
+ "scale",
360
+ "blurIn",
361
+ "blurOut",
362
+ "blur",
363
+ "pop",
364
+ "bounce"
365
+ ], Ho = {
366
+ fade: "fadeIn",
367
+ scale: "scaleIn",
368
+ blur: "blurIn"
369
+ };
370
+ function Uo(t) {
371
+ if (!t || typeof t != "object") return !1;
372
+ const o = t;
373
+ return typeof o.from == "object" && o.from !== null && typeof o.to == "object" && o.to !== null;
374
+ }
375
+ function K(t) {
376
+ const o = /* @__PURE__ */ new Set(["opacity", "zIndex", "z-index", "flex", "fontWeight", "lineHeight"]);
377
+ return Object.entries(t).map(([i, e]) => {
378
+ const r = i.replace(/[A-Z]/g, (n) => `-${n.toLowerCase()}`), f = typeof e == "number" && !o.has(i) ? `${e}px` : String(e);
379
+ return `${r}: ${f}`;
380
+ }).join("; ");
381
+ }
382
+ function Go(t) {
383
+ let o = 5381;
384
+ for (let i = 0; i < t.length; i += 1) o = (o << 5) + o ^ t.charCodeAt(i);
385
+ return (o >>> 0).toString(36);
386
+ }
387
+ function Ko(t) {
388
+ const o = Ho[t] ?? t;
389
+ if (!G.includes(o))
390
+ throw new Error(`Unknown motion preset "${t}". Use: ${G.join(", ")}`);
391
+ return o;
392
+ }
393
+ const P = `
394
+ .fibo-anim {
395
+ animation-duration: var(--fibo-dur, 300ms);
396
+ animation-timing-function: var(--fibo-ease, ease);
397
+ animation-delay: calc(var(--fibo-i, 0) * var(--fibo-stagger, 0ms) + var(--fibo-delay, 0ms));
398
+ animation-fill-mode: both;
399
+ animation-iteration-count: 1;
400
+ }
401
+ .fibo-anim-fadeIn, .fibo-anim-fade { animation-name: fibo-fadeIn; }
402
+ .fibo-anim-fadeOut { animation-name: fibo-fadeOut; }
403
+ .fibo-anim-slideUp { animation-name: fibo-slideUp; }
404
+ .fibo-anim-slideDown { animation-name: fibo-slideDown; }
405
+ .fibo-anim-slideLeft { animation-name: fibo-slideLeft; }
406
+ .fibo-anim-slideRight { animation-name: fibo-slideRight; }
407
+ .fibo-anim-scaleIn, .fibo-anim-scale { animation-name: fibo-scaleIn; }
408
+ .fibo-anim-scaleOut { animation-name: fibo-scaleOut; }
409
+ .fibo-anim-blurIn, .fibo-anim-blur { animation-name: fibo-blurIn; }
410
+ .fibo-anim-blurOut { animation-name: fibo-blurOut; }
411
+ .fibo-anim-pop { animation-name: fibo-pop; }
412
+ .fibo-anim-bounce { animation-name: fibo-bounce; }
413
+
414
+ @keyframes fibo-fadeIn { from { opacity: 0; } to { opacity: 1; } }
415
+ @keyframes fibo-fadeOut { from { opacity: 1; } to { opacity: 0; } }
416
+ @keyframes fibo-slideUp {
417
+ from { opacity: 0; transform: translate3d(0, var(--fibo-from, 16px), 0); }
418
+ to { opacity: 1; transform: none; }
419
+ }
420
+ @keyframes fibo-slideDown {
421
+ from { opacity: 0; transform: translate3d(0, calc(var(--fibo-from, 16px) * -1), 0); }
422
+ to { opacity: 1; transform: none; }
423
+ }
424
+ @keyframes fibo-slideLeft {
425
+ from { opacity: 0; transform: translate3d(var(--fibo-from, 16px), 0, 0); }
426
+ to { opacity: 1; transform: none; }
427
+ }
428
+ @keyframes fibo-slideRight {
429
+ from { opacity: 0; transform: translate3d(calc(var(--fibo-from, 16px) * -1), 0, 0); }
430
+ to { opacity: 1; transform: none; }
431
+ }
432
+ @keyframes fibo-scaleIn {
433
+ from { opacity: 0; transform: scale(0.94); }
434
+ to { opacity: 1; transform: none; }
435
+ }
436
+ @keyframes fibo-scaleOut {
437
+ from { opacity: 1; transform: none; }
438
+ to { opacity: 0; transform: scale(0.94); }
439
+ }
440
+ @keyframes fibo-blurIn {
441
+ from { opacity: 0; filter: blur(var(--fibo-from, 8px)); }
442
+ to { opacity: 1; filter: none; }
443
+ }
444
+ @keyframes fibo-blurOut {
445
+ from { opacity: 1; filter: none; }
446
+ to { opacity: 0; filter: blur(var(--fibo-from, 8px)); }
447
+ }
448
+ @keyframes fibo-pop {
449
+ from { opacity: 0; transform: scale(0.92); }
450
+ to { opacity: 1; transform: none; }
451
+ }
452
+ @keyframes fibo-bounce {
453
+ 0% { opacity: 0; transform: translate3d(0, var(--fibo-from, 16px), 0); }
454
+ 60% { opacity: 1; transform: translate3d(0, -6px, 0); }
455
+ 80% { transform: translate3d(0, 2px, 0); }
456
+ 100% { opacity: 1; transform: none; }
457
+ }
458
+
459
+ @keyframes stripes {
460
+ from { background-position: 0 0; }
461
+ to { background-position: 40px 0; }
462
+ }
463
+
464
+ .fibo-stagger-item { display: contents; }
465
+
466
+ .fibo-reveal {
467
+ min-width: 0;
468
+ max-width: 100%;
469
+ opacity: 0;
470
+ transform: translate3d(0, 12px, 0);
471
+ transition-property: opacity, transform, filter;
472
+ transition-duration: var(--fibo-dur, 500ms);
473
+ transition-timing-function: var(--fibo-ease, ease);
474
+ transition-delay: calc(var(--fibo-i, 0) * var(--fibo-stagger, 0ms) + var(--fibo-delay, 0ms));
475
+ }
476
+ .fibo-reveal-fade { transform: none; }
477
+ .fibo-reveal-fadeUp, .fibo-reveal-fadeIn, .fibo-reveal-slideUp { transform: translate3d(0, 16px, 0); }
478
+ .fibo-reveal-slideDown { transform: translate3d(0, -16px, 0); }
479
+ .fibo-reveal-slideLeft { transform: translate3d(16px, 0, 0); }
480
+ .fibo-reveal-slideRight { transform: translate3d(-16px, 0, 0); }
481
+ .fibo-reveal-scale, .fibo-reveal-scaleIn { transform: scale(0.96); }
482
+ .fibo-reveal-blur { filter: blur(8px); transform: none; }
483
+ .fibo-reveal.fibo-inview {
484
+ opacity: 1;
485
+ transform: none;
486
+ filter: none;
487
+ }
488
+
489
+ .fibo-view-timeline {
490
+ animation-timeline: view();
491
+ animation-range: entry 0% cover 35%;
492
+ }
493
+ .fibo-scroll-timeline {
494
+ animation-timeline: scroll();
495
+ }
496
+ .fibo-scroll-progress {
497
+ transform: scaleX(var(--fibo-progress, 0));
498
+ transform-origin: left center;
499
+ animation-name: fibo-progress-grow;
500
+ animation-duration: 1s;
501
+ animation-timing-function: linear;
502
+ animation-fill-mode: both;
503
+ animation-timeline: scroll();
504
+ }
505
+ @keyframes fibo-progress-grow {
506
+ from { transform: scaleX(0); }
507
+ to { transform: scaleX(1); }
508
+ }
509
+ @supports not (animation-timeline: scroll()) {
510
+ .fibo-scroll-progress {
511
+ animation: none;
512
+ transform: scaleX(var(--fibo-progress, 0));
513
+ }
514
+ }
515
+
516
+ .fibo-snap-y { scroll-snap-type: y mandatory; }
517
+ .fibo-snap-x { scroll-snap-type: x mandatory; }
518
+ .fibo-snap-both { scroll-snap-type: both mandatory; }
519
+ .fibo-snap-start { scroll-snap-align: start; }
520
+ .fibo-snap-center { scroll-snap-align: center; }
521
+ .fibo-snap-end { scroll-snap-align: end; }
522
+
523
+ @media (prefers-reduced-motion: reduce) {
524
+ .fibo-anim:not(.fibo-motion-force),
525
+ .fibo-reveal:not(.fibo-motion-force),
526
+ .fibo-scroll-progress:not(.fibo-motion-force) {
527
+ animation: none !important;
528
+ transition: none !important;
529
+ opacity: 1 !important;
530
+ transform: none !important;
531
+ filter: none !important;
532
+ }
533
+ }
534
+ `.trim();
535
+ function Z(t) {
536
+ let o = 5381;
537
+ for (let i = 0; i < t.length; i += 1)
538
+ o = (o << 5) + o ^ t.charCodeAt(i);
539
+ return (o >>> 0).toString(36);
540
+ }
541
+ const y = class y {
542
+ constructor() {
543
+ a(this, "sheet", null);
544
+ a(this, "cache", /* @__PURE__ */ new Map());
545
+ a(this, "extras", []);
546
+ a(this, "defaultsReady", !1);
547
+ this.attachSheet(), this.ensureDefaults();
548
+ }
549
+ static getInstance() {
550
+ return y.instance || (y.instance = new y()), y.instance;
551
+ }
552
+ /** Test-only: empty cache/sheet so a simulated client starts cold. */
553
+ reset() {
554
+ this.cache.clear(), this.extras = [], this.defaultsReady = !1, this.sheet = null, this.attachSheet(), this.ensureDefaults();
555
+ }
556
+ static resetForTests() {
557
+ y.getInstance().reset();
558
+ }
559
+ attachSheet() {
560
+ if (typeof document > "u") return;
561
+ const o = document.getElementById("fibo-dynamic-styles");
562
+ if (o) {
563
+ this.sheet = o, this.defaultsReady = !0;
564
+ return;
565
+ }
566
+ this.sheet = document.createElement("style"), this.sheet.id = "fibo-dynamic-styles", this.sheet.setAttribute("data-fibo", "1"), document.head.appendChild(this.sheet);
567
+ }
568
+ /**
569
+ * CSS `@media` rule, deduped. Used by `.media()` / `.md()` / `.responsive()` — not JS resize.
570
+ */
571
+ registerMedia(o, i, e) {
572
+ const r = `@media ${o}|${i}:${e}`;
573
+ if (this.cache.has(r))
574
+ return this.cache.get(r);
575
+ const f = `fibo-mq-${Z(r)}`, n = `@media ${o} { .${f} { ${i}: ${e} !important; } }`;
576
+ return this.insert(n), this.cache.set(r, f), f;
577
+ }
578
+ ensureDefaults() {
579
+ var o;
580
+ this.defaultsReady || (this.defaultsReady = !0, this.sheet && !((o = this.sheet.textContent) != null && o.includes("fibo-fadeIn")) && this.sheet.appendChild(document.createTextNode(P)));
581
+ }
582
+ /**
583
+ * Append a large static CSS blob once (keyed). Used by interaction-effect presets.
584
+ * Tracked in `extras` so `getCss()` / SSR style tags include it after first use.
585
+ */
586
+ injectExtra(o, i) {
587
+ const e = `extra:${i}`;
588
+ this.cache.has(e) || (this.cache.set(e, i), this.insert(o, !0));
589
+ }
590
+ getCss() {
591
+ this.ensureDefaults();
592
+ const o = [...this.extras].sort();
593
+ return [P, ...o].filter(Boolean).join(`
594
+ `);
595
+ }
596
+ registerKeyframes(o, i, e) {
597
+ const r = `kf:${i}=>${e}`;
598
+ if (this.cache.has(r)) return this.cache.get(r);
599
+ const f = `fibo-c-${o}`;
600
+ return this.insert(`@keyframes ${f} { from { ${i} } to { ${e} } }`), this.insert(`.${f} { animation-name: ${f}; }`), this.cache.set(r, f), f;
601
+ }
602
+ insert(o, i = !0) {
603
+ var e;
604
+ if (!(i && this.extras.includes(o)) && (i && this.extras.push(o), !(this.sheet && ((e = this.sheet.textContent) != null && e.includes(o)))))
605
+ if (this.sheet && this.sheet.sheet)
606
+ try {
607
+ this.sheet.sheet.insertRule(o, this.sheet.sheet.cssRules.length);
608
+ } catch {
609
+ this.sheet && this.sheet.appendChild(document.createTextNode(o));
610
+ }
611
+ else this.sheet && this.sheet.appendChild(document.createTextNode(o));
612
+ }
613
+ /** Set a `:root` custom property (e.g. `--fibo-sticky-offset`). */
614
+ registerRoot(o, i) {
615
+ const e = `:root:${o}:${i}`;
616
+ this.cache.has(e) || (this.insert(`:root { ${o}: ${i}; }`), this.cache.set(e, ":root"));
617
+ }
618
+ /** Once: `html { scroll-padding-top: var(--fibo-sticky-offset, 0px) }`. */
619
+ ensureScrollPadding() {
620
+ const o = "html:scroll-padding-top";
621
+ this.cache.has(o) || (this.insert("html { scroll-padding-top: var(--fibo-sticky-offset, 0px); }"), this.cache.set(o, "html"));
622
+ }
623
+ register(o, i) {
624
+ const e = `${o}:${i}`;
625
+ if (this.cache.has(e))
626
+ return this.cache.get(e);
627
+ const r = i.replace(/[^a-zA-Z0-9-]/g, "_"), f = `fibo-${o}-${r}`, n = `.${f} { ${o}: ${i} !important; }`;
628
+ return this.insert(n), this.cache.set(e, f), f;
629
+ }
630
+ /**
631
+ * One class per (pseudo, property, value). Same rules → same class on server and client.
632
+ * Order-independent: each declaration hashes on its own.
633
+ */
634
+ registerPseudo(o, i, e, r = !1) {
635
+ const f = `${r ? "group:" : ""}${o}:${i}:${e}`;
636
+ if (this.cache.has(f))
637
+ return this.cache.get(f);
638
+ const n = `fibo-ps-${Z(f)}`, s = r ? `.group:${o} .${n} { ${i}: ${e} !important; }` : `.${n}:${o} { ${i}: ${e} !important; }`;
639
+ return this.insert(s), this.cache.set(f, n), n;
640
+ }
641
+ registerGroupPseudo(o, i, e, r) {
642
+ return this.registerPseudo(i, e, r, !0);
643
+ }
644
+ };
645
+ a(y, "instance");
646
+ let C = y;
647
+ const u = C.getInstance();
648
+ function w() {
649
+ C.getInstance().ensureDefaults();
650
+ }
651
+ function Li() {
652
+ return C.getInstance().getCss();
653
+ }
654
+ function co() {
655
+ return C.getInstance().getCss();
656
+ }
657
+ function Oi() {
658
+ return `<style id="fibo-dynamic-styles" data-fibo="1">${co().replace(/<\/style/gi, "<\\/style")}</style>`;
659
+ }
660
+ function Pi() {
661
+ return w(), g.createElement("style", {
662
+ id: "fibo-dynamic-styles",
663
+ "data-fibo": "1",
664
+ suppressHydrationWarning: !0,
665
+ dangerouslySetInnerHTML: { __html: co() }
666
+ });
667
+ }
668
+ function Zo() {
669
+ return w(), g.createElement("style", {
670
+ id: "fibo-motion-presets",
671
+ "data-fibo-motion": "1",
672
+ dangerouslySetInnerHTML: { __html: P }
673
+ });
674
+ }
675
+ const bo = {
676
+ sm: 640,
677
+ md: 768,
678
+ lg: 1024,
679
+ xl: 1280
680
+ };
681
+ function qo(t) {
682
+ return t in bo;
683
+ }
684
+ function Qo(t) {
685
+ if (qo(t))
686
+ return `(min-width: ${bo[t]}px)`;
687
+ const o = t.trim();
688
+ return o.startsWith("@media") ? o.replace(/^@media\s+/, "") : o;
689
+ }
690
+ function uo(t) {
691
+ var o, i, e = "";
692
+ if (typeof t == "string" || typeof t == "number") e += t;
693
+ else if (typeof t == "object") if (Array.isArray(t)) {
694
+ var r = t.length;
695
+ for (o = 0; o < r; o++) t[o] && (i = uo(t[o])) && (e && (e += " "), e += i);
696
+ } else for (i in t) t[i] && (e && (e += " "), e += i);
697
+ return e;
698
+ }
699
+ function Jo() {
700
+ for (var t, o, i = 0, e = "", r = arguments.length; i < r; i++) (t = arguments[i]) && (o = uo(t)) && (e && (e += " "), e += o);
701
+ return e;
702
+ }
703
+ function oi(t) {
704
+ const o = t.match(/oklch\(\s*([\d.]+)\s+([\d.]+)\s+([\d.]+)\s*\)/);
705
+ if (!o)
706
+ return t;
707
+ const [, i, e, r] = o, f = parseFloat(i), n = parseFloat(e), s = parseFloat(r), c = n * Math.cos(s * Math.PI / 180), h = n * Math.sin(s * Math.PI / 180), b = f + 0.3963377774 * c + 0.2158037573 * h, l = f - 0.1055613458 * c - 0.0638541728 * h, x = f - 0.0894841775 * c - 1.291485548 * h, p = b * b * b, m = l * l * l, d = x * x * x, k = 4.0767416621 * p - 3.3077115913 * m + 0.2309699292 * d, z = -1.2684380046 * p + 2.6097574011 * m - 0.3413193965 * d, go = -0.0041960863 * p - 0.7034186147 * m + 1.707614701 * d, B = (I) => I >= 31308e-7 ? 1.055 * I ** (1 / 2.4) - 0.055 : 12.92 * I, mo = Math.max(0, Math.min(1, B(k))), vo = Math.max(0, Math.min(1, B(z))), wo = Math.max(0, Math.min(1, B(go))), L = (I) => {
708
+ var W;
709
+ const O = (W = Math.round(I * 255).toString(16)) == null ? void 0 : W.toUpperCase();
710
+ return O.length === 1 ? `0${O}` : O;
711
+ };
712
+ return `#${L(mo)}${L(vo)}${L(wo)}`;
713
+ }
714
+ function ii(t) {
715
+ const o = {}, i = {}, e = t.split(`
716
+ `);
717
+ for (const r of e) {
718
+ const f = r.trim();
719
+ if (!f || f.startsWith("//") || f.startsWith("*") || f === "@theme {" || f === "}")
720
+ continue;
721
+ const n = f.match(/^--color-([a-z0-9\-]+): (oklch\([^)]+\));?$/), s = f.match(/^--color-([a-z0-9\-]+): (#[a-fA-F0-9]{3,6});?$/);
722
+ if (n) {
723
+ const [, c, h] = n, b = oi(h);
724
+ o[b.toLowerCase()] = `bg-${c}`, i[b.toLowerCase()] = `text-${c}`;
725
+ } else if (s) {
726
+ const [, c, h] = s;
727
+ o[h.toLowerCase()] = `bg-${c}`, i[h.toLowerCase()] = `text-${c}`;
728
+ }
729
+ }
730
+ return { background: o, text: i };
731
+ }
732
+ const ti = (t) => {
733
+ if (t !== void 0)
734
+ return typeof t == "number" ? `${t}px` : t.toString();
735
+ }, E = (t, o) => {
736
+ const i = ti(o);
737
+ return i === void 0 ? "" : `${t}-[${i}]`;
738
+ }, ei = `
739
+ --color-red-50: oklch(0.971 0.013 17.38);
740
+ --color-red-100: oklch(0.936 0.032 17.717);
741
+ --color-red-200: oklch(0.885 0.062 18.334);
742
+ --color-red-300: oklch(0.808 0.114 19.571);
743
+ --color-red-400: oklch(0.704 0.191 22.216);
744
+ --color-red-500: oklch(0.637 0.237 25.331);
745
+ --color-red-600: oklch(0.577 0.245 27.325);
746
+ --color-red-700: oklch(0.505 0.213 27.518);
747
+ --color-red-800: oklch(0.444 0.177 26.899);
748
+ --color-red-900: oklch(0.396 0.141 25.723);
749
+ --color-red-950: oklch(0.258 0.092 26.042);
750
+ --color-orange-50: oklch(0.98 0.016 73.684);
751
+ --color-orange-100: oklch(0.954 0.038 75.164);
752
+ --color-orange-200: oklch(0.901 0.076 70.697);
753
+ --color-orange-300: oklch(0.837 0.128 66.29);
754
+ --color-orange-400: oklch(0.75 0.183 55.934);
755
+ --color-orange-500: oklch(0.705 0.213 47.604);
756
+ --color-orange-600: oklch(0.646 0.222 41.116);
757
+ --color-orange-700: oklch(0.553 0.195 38.402);
758
+ --color-orange-800: oklch(0.47 0.157 37.304);
759
+ --color-orange-900: oklch(0.408 0.123 38.172);
760
+ --color-orange-950: oklch(0.266 0.079 36.259);
761
+ --color-amber-50: oklch(0.987 0.022 95.277);
762
+ --color-amber-100: oklch(0.962 0.059 95.617);
763
+ --color-amber-200: oklch(0.924 0.12 95.746);
764
+ --color-amber-300: oklch(0.879 0.169 91.605);
765
+ --color-amber-400: oklch(0.828 0.189 84.429);
766
+ --color-amber-500: oklch(0.769 0.188 70.08);
767
+ --color-amber-600: oklch(0.666 0.179 58.318);
768
+ --color-amber-700: oklch(0.555 0.163 48.998);
769
+ --color-amber-800: oklch(0.473 0.137 46.201);
770
+ --color-amber-900: oklch(0.414 0.112 45.904);
771
+ --color-amber-950: oklch(0.279 0.077 45.635);
772
+ --color-yellow-50: oklch(0.987 0.026 102.212);
773
+ --color-yellow-100: oklch(0.973 0.071 103.193);
774
+ --color-yellow-200: oklch(0.945 0.129 101.54);
775
+ --color-yellow-300: oklch(0.905 0.182 98.111);
776
+ --color-yellow-400: oklch(0.852 0.199 91.936);
777
+ --color-yellow-500: oklch(0.795 0.184 86.047);
778
+ --color-yellow-600: oklch(0.681 0.162 75.834);
779
+ --color-yellow-700: oklch(0.554 0.135 66.442);
780
+ --color-yellow-800: oklch(0.476 0.114 61.907);
781
+ --color-yellow-900: oklch(0.421 0.095 57.708);
782
+ --color-yellow-950: oklch(0.286 0.066 53.813);
783
+ --color-lime-50: oklch(0.986 0.031 120.757);
784
+ --color-lime-100: oklch(0.967 0.067 122.328);
785
+ --color-lime-200: oklch(0.938 0.127 124.321);
786
+ --color-lime-300: oklch(0.897 0.196 126.665);
787
+ --color-lime-400: oklch(0.841 0.238 128.85);
788
+ --color-lime-500: oklch(0.768 0.233 130.85);
789
+ --color-lime-600: oklch(0.648 0.2 131.684);
790
+ --color-lime-700: oklch(0.532 0.157 131.589);
791
+ --color-lime-800: oklch(0.453 0.124 130.933);
792
+ --color-lime-900: oklch(0.405 0.101 131.063);
793
+ --color-lime-950: oklch(0.274 0.072 132.109);
794
+ --color-green-50: oklch(0.982 0.018 155.826);
795
+ --color-green-100: oklch(0.962 0.044 156.743);
796
+ --color-green-200: oklch(0.925 0.084 155.995);
797
+ --color-green-300: oklch(0.871 0.15 154.449);
798
+ --color-green-400: oklch(0.792 0.209 151.711);
799
+ --color-green-500: oklch(0.723 0.219 149.579);
800
+ --color-green-600: oklch(0.627 0.194 149.214);
801
+ --color-green-700: oklch(0.527 0.154 150.069);
802
+ --color-green-800: oklch(0.448 0.119 151.328);
803
+ --color-green-900: oklch(0.393 0.095 152.535);
804
+ --color-green-950: oklch(0.266 0.065 152.934);
805
+ --color-emerald-50: oklch(0.979 0.021 166.113);
806
+ --color-emerald-100: oklch(0.95 0.052 163.051);
807
+ --color-emerald-200: oklch(0.905 0.093 164.15);
808
+ --color-emerald-300: oklch(0.845 0.143 164.978);
809
+ --color-emerald-400: oklch(0.765 0.177 163.223);
810
+ --color-emerald-500: oklch(0.696 0.17 162.48);
811
+ --color-emerald-600: oklch(0.596 0.145 163.225);
812
+ --color-emerald-700: oklch(0.508 0.118 165.612);
813
+ --color-emerald-800: oklch(0.432 0.095 166.913);
814
+ --color-emerald-900: oklch(0.378 0.077 168.94);
815
+ --color-emerald-950: oklch(0.262 0.051 172.552);
816
+ --color-teal-50: oklch(0.984 0.014 180.72);
817
+ --color-teal-100: oklch(0.953 0.051 180.801);
818
+ --color-teal-200: oklch(0.91 0.096 180.426);
819
+ --color-teal-300: oklch(0.855 0.138 181.071);
820
+ --color-teal-400: oklch(0.777 0.152 181.912);
821
+ --color-teal-500: oklch(0.704 0.14 182.503);
822
+ --color-teal-600: oklch(0.6 0.118 184.704);
823
+ --color-teal-700: oklch(0.511 0.096 186.391);
824
+ --color-teal-800: oklch(0.437 0.078 188.216);
825
+ --color-teal-900: oklch(0.386 0.063 188.416);
826
+ --color-teal-950: oklch(0.277 0.046 192.524);
827
+ --color-cyan-50: oklch(0.984 0.019 200.873);
828
+ --color-cyan-100: oklch(0.956 0.045 203.388);
829
+ --color-cyan-200: oklch(0.917 0.08 205.041);
830
+ --color-cyan-300: oklch(0.865 0.127 207.078);
831
+ --color-cyan-400: oklch(0.789 0.154 211.53);
832
+ --color-cyan-500: oklch(0.715 0.143 215.221);
833
+ --color-cyan-600: oklch(0.609 0.126 221.723);
834
+ --color-cyan-700: oklch(0.52 0.105 223.128);
835
+ --color-cyan-800: oklch(0.45 0.085 224.283);
836
+ --color-cyan-900: oklch(0.398 0.07 227.392);
837
+ --color-cyan-950: oklch(0.302 0.056 229.695);
838
+ --color-sky-50: oklch(0.977 0.013 236.62);
839
+ --color-sky-100: oklch(0.951 0.026 236.824);
840
+ --color-sky-200: oklch(0.901 0.058 230.902);
841
+ --color-sky-300: oklch(0.828 0.111 230.318);
842
+ --color-sky-400: oklch(0.746 0.16 232.661);
843
+ --color-sky-500: oklch(0.685 0.169 237.323);
844
+ --color-sky-600: oklch(0.588 0.158 241.966);
845
+ --color-sky-700: oklch(0.5 0.134 242.749);
846
+ --color-sky-800: oklch(0.443 0.11 240.79);
847
+ --color-sky-900: oklch(0.391 0.09 240.876);
848
+ --color-sky-950: oklch(0.293 0.066 243.157);
849
+ --color-blue-50: oklch(0.97 0.014 254.604);
850
+ --color-blue-100: oklch(0.932 0.032 255.585);
851
+ --color-blue-200: oklch(0.882 0.059 254.128);
852
+ --color-blue-300: oklch(0.809 0.105 251.813);
853
+ --color-blue-400: oklch(0.707 0.165 254.624);
854
+ --color-blue-500: oklch(0.623 0.214 259.815);
855
+ --color-blue-600: oklch(0.546 0.245 262.881);
856
+ --color-blue-700: oklch(0.488 0.243 264.376);
857
+ --color-blue-800: oklch(0.424 0.199 265.638);
858
+ --color-blue-900: oklch(0.379 0.146 265.522);
859
+ --color-blue-950: oklch(0.282 0.091 267.935);
860
+ --color-indigo-50: oklch(0.962 0.018 272.314);
861
+ --color-indigo-100: oklch(0.93 0.034 272.788);
862
+ --color-indigo-200: oklch(0.87 0.065 274.039);
863
+ --color-indigo-300: oklch(0.785 0.115 274.713);
864
+ --color-indigo-400: oklch(0.673 0.182 276.935);
865
+ --color-indigo-500: oklch(0.585 0.233 277.117);
866
+ --color-indigo-600: oklch(0.511 0.262 276.966);
867
+ --color-indigo-700: oklch(0.457 0.24 277.023);
868
+ --color-indigo-800: oklch(0.398 0.195 277.366);
869
+ --color-indigo-900: oklch(0.359 0.144 278.697);
870
+ --color-indigo-950: oklch(0.257 0.09 281.288);
871
+ --color-violet-50: oklch(0.969 0.016 293.756);
872
+ --color-violet-100: oklch(0.943 0.029 294.588);
873
+ --color-violet-200: oklch(0.894 0.057 293.283);
874
+ --color-violet-300: oklch(0.811 0.111 293.571);
875
+ --color-violet-400: oklch(0.702 0.183 293.541);
876
+ --color-violet-500: oklch(0.606 0.25 292.717);
877
+ --color-violet-600: oklch(0.541 0.281 293.009);
878
+ --color-violet-700: oklch(0.491 0.27 292.581);
879
+ --color-violet-800: oklch(0.432 0.232 292.759);
880
+ --color-violet-900: oklch(0.38 0.189 293.745);
881
+ --color-violet-950: oklch(0.283 0.141 291.089);
882
+ --color-purple-50: oklch(0.977 0.014 308.299);
883
+ --color-purple-100: oklch(0.946 0.033 307.174);
884
+ --color-purple-200: oklch(0.902 0.063 306.703);
885
+ --color-purple-300: oklch(0.827 0.119 306.383);
886
+ --color-purple-400: oklch(0.714 0.203 305.504);
887
+ --color-purple-500: oklch(0.627 0.265 303.9);
888
+ --color-purple-600: oklch(0.558 0.288 302.321);
889
+ --color-purple-700: oklch(0.496 0.265 301.924);
890
+ --color-purple-800: oklch(0.438 0.218 303.724);
891
+ --color-purple-900: oklch(0.381 0.176 304.987);
892
+ --color-purple-950: oklch(0.291 0.149 302.717);
893
+ --color-fuchsia-50: oklch(0.977 0.017 320.058);
894
+ --color-fuchsia-100: oklch(0.952 0.037 318.852);
895
+ --color-fuchsia-200: oklch(0.903 0.076 319.62);
896
+ --color-fuchsia-300: oklch(0.833 0.145 321.434);
897
+ --color-fuchsia-400: oklch(0.74 0.238 322.16);
898
+ --color-fuchsia-500: oklch(0.667 0.295 322.15);
899
+ --color-fuchsia-600: oklch(0.591 0.293 322.896);
900
+ --color-fuchsia-700: oklch(0.518 0.253 323.949);
901
+ --color-fuchsia-800: oklch(0.452 0.211 324.591);
902
+ --color-fuchsia-900: oklch(0.401 0.17 325.612);
903
+ --color-fuchsia-950: oklch(0.293 0.136 325.661);
904
+ --color-pink-50: oklch(0.971 0.014 343.198);
905
+ --color-pink-100: oklch(0.948 0.028 342.258);
906
+ --color-pink-200: oklch(0.899 0.061 343.231);
907
+ --color-pink-300: oklch(0.823 0.12 346.018);
908
+ --color-pink-400: oklch(0.718 0.202 349.761);
909
+ --color-pink-500: oklch(0.656 0.241 354.308);
910
+ --color-pink-600: oklch(0.592 0.249 0.584);
911
+ --color-pink-700: oklch(0.525 0.223 3.958);
912
+ --color-pink-800: oklch(0.459 0.187 3.815);
913
+ --color-pink-900: oklch(0.408 0.153 2.432);
914
+ --color-pink-950: oklch(0.284 0.109 3.907);
915
+ --color-rose-50: oklch(0.969 0.015 12.422);
916
+ --color-rose-100: oklch(0.941 0.03 12.58);
917
+ --color-rose-200: oklch(0.892 0.058 10.001);
918
+ --color-rose-300: oklch(0.81 0.117 11.638);
919
+ --color-rose-400: oklch(0.712 0.194 13.428);
920
+ --color-rose-500: oklch(0.645 0.246 16.439);
921
+ --color-rose-600: oklch(0.586 0.253 17.585);
922
+ --color-rose-700: oklch(0.514 0.222 16.935);
923
+ --color-rose-800: oklch(0.455 0.188 13.697);
924
+ --color-rose-900: oklch(0.41 0.159 10.272);
925
+ --color-rose-950: oklch(0.271 0.105 12.094);
926
+ --color-slate-50: oklch(0.984 0.003 247.858);
927
+ --color-slate-100: oklch(0.968 0.007 247.896);
928
+ --color-slate-200: oklch(0.929 0.013 255.508);
929
+ --color-slate-300: oklch(0.869 0.022 252.894);
930
+ --color-slate-400: oklch(0.704 0.04 256.788);
931
+ --color-slate-500: oklch(0.554 0.046 257.417);
932
+ --color-slate-600: oklch(0.446 0.043 257.281);
933
+ --color-slate-700: oklch(0.372 0.044 257.287);
934
+ --color-slate-800: oklch(0.279 0.041 260.031);
935
+ --color-slate-900: oklch(0.208 0.042 265.755);
936
+ --color-slate-950: oklch(0.129 0.042 264.695);
937
+ --color-gray-50: oklch(0.985 0.002 247.839);
938
+ --color-gray-100: oklch(0.967 0.003 264.542);
939
+ --color-gray-200: oklch(0.928 0.006 264.531);
940
+ --color-gray-300: oklch(0.872 0.01 258.338);
941
+ --color-gray-400: oklch(0.707 0.022 261.325);
942
+ --color-gray-500: oklch(0.551 0.027 264.364);
943
+ --color-gray-600: oklch(0.446 0.03 256.802);
944
+ --color-gray-700: oklch(0.373 0.034 259.733);
945
+ --color-gray-800: oklch(0.278 0.033 256.848);
946
+ --color-gray-900: oklch(0.21 0.034 264.665);
947
+ --color-gray-950: oklch(0.13 0.028 261.692);
948
+ --color-zinc-50: oklch(0.985 0 0);
949
+ --color-zinc-100: oklch(0.967 0.001 286.375);
950
+ --color-zinc-200: oklch(0.92 0.004 286.32);
951
+ --color-zinc-300: oklch(0.871 0.006 286.286);
952
+ --color-zinc-400: oklch(0.705 0.015 286.067);
953
+ --color-zinc-500: oklch(0.552 0.016 285.938);
954
+ --color-zinc-600: oklch(0.442 0.017 285.786);
955
+ --color-zinc-700: oklch(0.37 0.013 285.805);
956
+ --color-zinc-800: oklch(0.274 0.006 286.033);
957
+ --color-zinc-900: oklch(0.21 0.006 285.885);
958
+ --color-zinc-950: oklch(0.141 0.005 285.823);
959
+ --color-neutral-50: oklch(0.985 0 0);
960
+ --color-neutral-100: oklch(0.97 0 0);
961
+ --color-neutral-200: oklch(0.922 0 0);
962
+ --color-neutral-300: oklch(0.87 0 0);
963
+ --color-neutral-400: oklch(0.708 0 0);
964
+ --color-neutral-500: oklch(0.556 0 0);
965
+ --color-neutral-600: oklch(0.439 0 0);
966
+ --color-neutral-700: oklch(0.371 0 0);
967
+ --color-neutral-800: oklch(0.269 0 0);
968
+ --color-neutral-900: oklch(0.205 0 0);
969
+ --color-neutral-950: oklch(0.145 0 0);
970
+ --color-stone-50: oklch(0.985 0.001 106.423);
971
+ --color-stone-100: oklch(0.97 0.001 106.424);
972
+ --color-stone-200: oklch(0.923 0.003 48.717);
973
+ --color-stone-300: oklch(0.869 0.005 56.366);
974
+ --color-stone-400: oklch(0.709 0.01 56.259);
975
+ --color-stone-500: oklch(0.553 0.013 58.071);
976
+ --color-stone-600: oklch(0.444 0.011 73.639);
977
+ --color-stone-700: oklch(0.374 0.01 67.558);
978
+ --color-stone-800: oklch(0.268 0.007 34.298);
979
+ --color-stone-900: oklch(0.216 0.006 56.043);
980
+ --color-stone-950: oklch(0.147 0.004 49.25);
981
+ --color-black: #000;
982
+ --color-white: #fff;
983
+ `, fi = ii(ei), lo = {
984
+ borderRadius: {
985
+ 0: "rounded-none",
986
+ "0px": "rounded-none",
987
+ "1px": "rounded-sm",
988
+ "2px": "rounded-sm",
989
+ "3px": "rounded",
990
+ "4px": "rounded",
991
+ "5px": "rounded-md",
992
+ "6px": "rounded-md",
993
+ "7px": "rounded-lg",
994
+ "8px": "rounded-lg",
995
+ "9px": "rounded-lg",
996
+ "10px": "rounded-lg",
997
+ "11px": "rounded-xl",
998
+ "12px": "rounded-xl",
999
+ "14px": "rounded-2xl",
1000
+ "16px": "rounded-2xl",
1001
+ "20px": "rounded-3xl",
1002
+ "50%": "rounded-full",
1003
+ "9999px": "rounded-full"
1004
+ },
1005
+ fontSize: {
1006
+ "0.75rem": "text-xs",
1007
+ "0.875rem": "text-sm",
1008
+ "1rem": "text-base",
1009
+ "1.125rem": "text-lg",
1010
+ "1.25rem": "text-xl",
1011
+ "1.5rem": "text-2xl",
1012
+ "1.875rem": "text-3xl",
1013
+ "2.25rem": "text-4xl",
1014
+ "3rem": "text-5xl",
1015
+ "3.75rem": "text-6xl",
1016
+ "4.5rem": "text-7xl",
1017
+ "6rem": "text-8xl",
1018
+ "8rem": "text-9xl"
1019
+ },
1020
+ fontWeight: {
1021
+ 100: "font-thin",
1022
+ 200: "font-extralight",
1023
+ 300: "font-light",
1024
+ 400: "font-normal",
1025
+ 500: "font-medium",
1026
+ 600: "font-semibold",
1027
+ 700: "font-bold",
1028
+ 800: "font-extrabold",
1029
+ 900: "font-black"
1030
+ },
1031
+ fontFamily: {
1032
+ "ui-serif": "font-serif",
1033
+ "ui-monospace": "font-mono",
1034
+ "ui-sans-serif": "font-sans",
1035
+ default: "font-sans"
1036
+ },
1037
+ textAlign: {
1038
+ left: "text-left",
1039
+ center: "text-center",
1040
+ right: "text-right",
1041
+ justify: "text-justify"
1042
+ },
1043
+ textDecoration: {
1044
+ underline: "underline",
1045
+ overline: "overline",
1046
+ "line-through": "line-through",
1047
+ none: "no-underline"
1048
+ },
1049
+ fontVariantNumeric: {
1050
+ "tabular-nums": "tabular-nums",
1051
+ "oldstyle-nums": "oldstyle-nums",
1052
+ "lining-nums": "lining-nums",
1053
+ "proportional-nums": "proportional-nums",
1054
+ "diagonal-fractions": "diagonal-fractions",
1055
+ "stacked-fractions": "stacked-fractions",
1056
+ ordinal: "ordinal",
1057
+ "slashed-zero": "slashed-zero",
1058
+ normal: "normal-nums"
1059
+ },
1060
+ fontStyle: {
1061
+ normal: "normal",
1062
+ italic: "italic",
1063
+ oblique: "oblique"
1064
+ },
1065
+ display: {
1066
+ block: "block",
1067
+ flex: "flex",
1068
+ "inline-flex": "inline-flex",
1069
+ grid: "grid",
1070
+ hidden: "hidden",
1071
+ none: "hidden"
1072
+ },
1073
+ position: {
1074
+ static: "static",
1075
+ relative: "relative",
1076
+ absolute: "absolute",
1077
+ fixed: "fixed",
1078
+ sticky: "sticky"
1079
+ }
1080
+ }, ri = (t, o) => ({
1081
+ // 背景色
1082
+ backgroundColor: (i) => i.backgroundColor ? [t.background[i.backgroundColor.toLowerCase()] || `bg-[${i.backgroundColor}]`] : [],
1083
+ // 文字色
1084
+ color: (i) => i.color ? [t.text[i.color.toLowerCase()] || `text-[${i.color}]`] : [],
1085
+ // 圆角
1086
+ borderRadius: (i) => {
1087
+ if (!i.borderRadius)
1088
+ return [];
1089
+ const e = lo.borderRadius[i.borderRadius] || E("rounded", i.borderRadius);
1090
+ return e ? [e] : [];
1091
+ },
1092
+ // 外边距
1093
+ margin: (i) => {
1094
+ const e = [];
1095
+ if (i.margin !== void 0) {
1096
+ const f = E("m", i.margin);
1097
+ return f ? [f] : [];
1098
+ }
1099
+ return [
1100
+ { prop: i.marginTop, dir: "mt" },
1101
+ { prop: i.marginRight, dir: "mr" },
1102
+ { prop: i.marginBottom, dir: "mb" },
1103
+ { prop: i.marginLeft, dir: "ml" },
1104
+ { prop: i.marginX, dir: "mx" },
1105
+ { prop: i.marginY, dir: "my" }
1106
+ ].forEach(({ prop: f, dir: n }) => {
1107
+ if (f !== void 0) {
1108
+ const s = E(n, f);
1109
+ s && e.push(s);
1110
+ }
1111
+ }), e;
1112
+ },
1113
+ // 内边距
1114
+ padding: (i) => {
1115
+ const e = [];
1116
+ if (i.padding !== void 0) {
1117
+ const f = E("p", i.padding);
1118
+ return f ? [f] : [];
1119
+ }
1120
+ return [
1121
+ { prop: i.paddingTop, dir: "pt" },
1122
+ { prop: i.paddingRight, dir: "pr" },
1123
+ { prop: i.paddingBottom, dir: "pb" },
1124
+ { prop: i.paddingLeft, dir: "pl" },
1125
+ { prop: i.paddingX, dir: "px" },
1126
+ { prop: i.paddingY, dir: "py" }
1127
+ ].forEach(({ prop: f, dir: n }) => {
1128
+ if (f !== void 0) {
1129
+ const s = E(n, f);
1130
+ s && e.push(s);
1131
+ }
1132
+ }), e;
1133
+ },
1134
+ // 字体
1135
+ font: (i) => {
1136
+ const e = [];
1137
+ if (i.fontSize && e.push(o.fontSize[i.fontSize.toString()] || `text-[${i.fontSize}]`), i.fontWeight) {
1138
+ const r = o.fontWeight[i.fontWeight.toString()];
1139
+ r && e.push(r);
1140
+ }
1141
+ if (i.textAlign) {
1142
+ const r = o.textAlign[i.textAlign];
1143
+ r && e.push(r);
1144
+ }
1145
+ if (i.fontFamily) {
1146
+ const r = o.fontFamily[i.fontFamily];
1147
+ r && e.push(r);
1148
+ }
1149
+ if (i.textDecoration) {
1150
+ const r = o.textDecoration[i.textDecoration];
1151
+ r && e.push(r);
1152
+ }
1153
+ if (i.fontVariantNumeric) {
1154
+ const r = o.fontVariantNumeric[i.fontVariantNumeric];
1155
+ r && e.push(r);
1156
+ }
1157
+ if (i.fontStyle) {
1158
+ const r = o.fontStyle[i.fontStyle];
1159
+ r && e.push(r);
1160
+ }
1161
+ return e;
1162
+ },
1163
+ // 尺寸
1164
+ size: (i) => {
1165
+ const e = [];
1166
+ if (i.width) {
1167
+ const r = i.width.toString();
1168
+ e.push(`w-[${r}]`);
1169
+ }
1170
+ if (i.height) {
1171
+ const r = i.height.toString();
1172
+ e.push(`h-[${r}]`);
1173
+ }
1174
+ return e;
1175
+ },
1176
+ // 布局
1177
+ layout: (i) => {
1178
+ const e = [];
1179
+ if (i.display) {
1180
+ const r = o.display[i.display];
1181
+ r && e.push(r);
1182
+ }
1183
+ if (i.flexDirection) {
1184
+ const f = {
1185
+ row: "flex-row",
1186
+ column: "flex-col",
1187
+ "row-reverse": "flex-row-reverse",
1188
+ "column-reverse": "flex-col-reverse"
1189
+ }[i.flexDirection];
1190
+ f && e.push(f);
1191
+ }
1192
+ if (i.justifyContent) {
1193
+ const f = {
1194
+ "flex-start": "justify-start",
1195
+ "flex-end": "justify-end",
1196
+ center: "justify-center",
1197
+ "space-between": "justify-between",
1198
+ "space-around": "justify-around",
1199
+ "space-evenly": "justify-evenly"
1200
+ }[i.justifyContent];
1201
+ f && e.push(f);
1202
+ }
1203
+ if (i.alignItems) {
1204
+ const f = {
1205
+ "flex-start": "items-start",
1206
+ "flex-end": "items-end",
1207
+ center: "items-center",
1208
+ baseline: "items-baseline",
1209
+ stretch: "items-stretch"
1210
+ }[i.alignItems];
1211
+ f && e.push(f);
1212
+ }
1213
+ if (i.gap) {
1214
+ const r = E("gap", i.gap);
1215
+ r && e.push(r);
1216
+ }
1217
+ return e;
1218
+ },
1219
+ // 定位
1220
+ position: (i) => i.position ? [o.position[i.position] || ""].filter(Boolean) : [],
1221
+ // 透明度
1222
+ opacity: (i) => {
1223
+ if (i.opacity === void 0)
1224
+ return [];
1225
+ const e = typeof i.opacity == "string" ? parseFloat(i.opacity) : i.opacity;
1226
+ return [`opacity-${{
1227
+ 0: "0",
1228
+ 0.25: "25",
1229
+ 0.5: "50",
1230
+ 0.75: "75",
1231
+ 1: "100"
1232
+ }[e] || Math.round(e * 100)}`];
1233
+ },
1234
+ // 自定义类名
1235
+ className: (i) => i.className ? [i.className] : []
1236
+ }), ni = {
1237
+ backgroundColor: "backgroundColor",
1238
+ color: "color",
1239
+ borderRadius: "borderRadius",
1240
+ margin: "margin",
1241
+ marginTop: "margin",
1242
+ marginRight: "margin",
1243
+ marginBottom: "margin",
1244
+ marginLeft: "margin",
1245
+ marginX: "margin",
1246
+ marginY: "margin",
1247
+ padding: "padding",
1248
+ paddingTop: "padding",
1249
+ paddingRight: "padding",
1250
+ paddingBottom: "padding",
1251
+ paddingLeft: "padding",
1252
+ paddingX: "padding",
1253
+ paddingY: "padding",
1254
+ fontSize: "font",
1255
+ fontWeight: "font",
1256
+ textAlign: "font",
1257
+ textDecoration: "font",
1258
+ fontVariantNumeric: "font",
1259
+ fontStyle: "font",
1260
+ width: "size",
1261
+ height: "size",
1262
+ display: "layout",
1263
+ flexDirection: "layout",
1264
+ justifyContent: "layout",
1265
+ alignItems: "layout",
1266
+ gap: "layout",
1267
+ position: "position",
1268
+ opacity: "opacity",
1269
+ className: "className"
1270
+ }, si = (t, o) => {
1271
+ const i = (o == null ? void 0 : o.colorMaps) || fi, e = (o == null ? void 0 : o.styleMaps) || lo, r = ri(i, e), f = [], n = /* @__PURE__ */ new Set();
1272
+ return Object.keys(t).forEach((s) => {
1273
+ const c = ni[s];
1274
+ if (c && !n.has(c)) {
1275
+ const h = r[c];
1276
+ if (h) {
1277
+ const b = h(t);
1278
+ f.push(...b), n.add(c);
1279
+ }
1280
+ }
1281
+ }), f.filter(Boolean).join(" ");
1282
+ };
1283
+ function ai(t) {
1284
+ const o = {};
1285
+ return t.forEach((i, e) => {
1286
+ o[e] = i.value;
1287
+ }), o;
1288
+ }
1289
+ function ci({ animatedProps: t, animationConfig: o, children: i }) {
1290
+ const [e, r] = oo(
1291
+ () => ai(t)
1292
+ );
1293
+ M(() => {
1294
+ const c = [];
1295
+ return t.forEach((h, b) => {
1296
+ const l = (x) => {
1297
+ r((p) => ({
1298
+ ...p,
1299
+ [b]: x
1300
+ }));
1301
+ };
1302
+ c.push(h.subscribe(l)), l(h.value);
1303
+ }), () => {
1304
+ c.forEach((h) => h());
1305
+ };
1306
+ }, [t]);
1307
+ const f = [];
1308
+ e.translateX !== void 0 && f.push(`translateX(${e.translateX}px)`), e.translateY !== void 0 && f.push(`translateY(${e.translateY}px)`), e.scale !== void 0 && f.push(`scale(${e.scale})`), e.rotate !== void 0 && f.push(`rotate(${e.rotate}deg)`);
1309
+ const n = {};
1310
+ if (f.length > 0 && (n.transform = f.join(" ")), o) {
1311
+ const { duration: c = 300, curve: h = "easeOut", stiffness: b, damping: l } = o, x = $(h, { stiffness: b, damping: l });
1312
+ n.transition = `transform ${c}ms ${x}`;
1313
+ }
1314
+ const s = {
1315
+ ...i.props.style,
1316
+ ...n
1317
+ };
1318
+ return _o(i, { style: s });
1319
+ }
1320
+ const ho = [
1321
+ // —— 2D Transitions ——
1322
+ "grow",
1323
+ "shrink",
1324
+ "pulse",
1325
+ "pulseGrow",
1326
+ "pulseShrink",
1327
+ "push",
1328
+ "pop",
1329
+ "bounceIn",
1330
+ "bounceOut",
1331
+ "rotate",
1332
+ "growRotate",
1333
+ "float",
1334
+ "sink",
1335
+ "bob",
1336
+ "hang",
1337
+ "skew",
1338
+ "skewForward",
1339
+ "skewBackward",
1340
+ "wobbleHorizontal",
1341
+ "wobbleVertical",
1342
+ "wobbleToBottomRight",
1343
+ "wobbleToTopRight",
1344
+ "wobbleTop",
1345
+ "wobbleBottom",
1346
+ "wobbleSkew",
1347
+ "buzz",
1348
+ "buzzOut",
1349
+ "forward",
1350
+ "backward",
1351
+ "nudge",
1352
+ // —— Background Transitions ——
1353
+ "fade",
1354
+ "backPulse",
1355
+ "sweepToRight",
1356
+ "sweepToLeft",
1357
+ "sweepToBottom",
1358
+ "sweepToTop",
1359
+ "bounceToRight",
1360
+ "bounceToLeft",
1361
+ "bounceToBottom",
1362
+ "bounceToTop",
1363
+ "radialOut",
1364
+ "radialIn",
1365
+ "rectangleIn",
1366
+ "rectangleOut",
1367
+ "shutterInHorizontal",
1368
+ "shutterOutHorizontal",
1369
+ "shutterInVertical",
1370
+ "shutterOutVertical",
1371
+ // —— Icon (same motion; names for discoverability) ——
1372
+ "iconBack",
1373
+ "iconForward",
1374
+ "iconDown",
1375
+ "iconUp",
1376
+ "iconSpin",
1377
+ "iconDrop",
1378
+ "iconFade",
1379
+ "iconFloatAway",
1380
+ "iconSinkAway",
1381
+ "iconGrow",
1382
+ "iconShrink",
1383
+ "iconPulse",
1384
+ "iconPulseGrow",
1385
+ "iconPulseShrink",
1386
+ "iconPush",
1387
+ "iconPop",
1388
+ "iconBounce",
1389
+ "iconRotate",
1390
+ "iconGrowRotate",
1391
+ "iconFloat",
1392
+ "iconSink",
1393
+ "iconBob",
1394
+ "iconHang",
1395
+ "iconWobbleHorizontal",
1396
+ "iconWobbleVertical",
1397
+ "iconBuzz",
1398
+ "iconBuzzOut",
1399
+ // —— Border Transitions ——
1400
+ "borderFade",
1401
+ "hollow",
1402
+ "trim",
1403
+ "rippleOut",
1404
+ "rippleIn",
1405
+ "outlineOut",
1406
+ "outlineIn",
1407
+ "roundCorners",
1408
+ "underlineFromLeft",
1409
+ "underlineFromCenter",
1410
+ "underlineFromRight",
1411
+ "reveal",
1412
+ "underlineReveal",
1413
+ "overlineFromLeft",
1414
+ "overlineFromCenter",
1415
+ "overlineFromRight",
1416
+ "overlineReveal",
1417
+ // —— Shadow and Glow ——
1418
+ "shadowGrow",
1419
+ "shadowFloat",
1420
+ "shadowGlow",
1421
+ "shadowRadial",
1422
+ "boxShadowOutset",
1423
+ "boxShadowInset",
1424
+ "lift",
1425
+ "glow",
1426
+ // —— Speech Bubbles ——
1427
+ "bubbleTop",
1428
+ "bubbleRight",
1429
+ "bubbleBottom",
1430
+ "bubbleLeft",
1431
+ "bubbleFloatTop",
1432
+ "bubbleFloatRight",
1433
+ "bubbleFloatBottom",
1434
+ "bubbleFloatLeft",
1435
+ // —— Curls ——
1436
+ "curlTopLeft",
1437
+ "curlTopRight",
1438
+ "curlBottomRight",
1439
+ "curlBottomLeft"
1440
+ ], q = {
1441
+ "pulse-grow": "pulseGrow",
1442
+ "pulse-shrink": "pulseShrink",
1443
+ "bounce-in": "bounceIn",
1444
+ "bounce-out": "bounceOut",
1445
+ "grow-rotate": "growRotate",
1446
+ "skew-forward": "skewForward",
1447
+ "skew-backward": "skewBackward",
1448
+ "wobble-horizontal": "wobbleHorizontal",
1449
+ "wobble-vertical": "wobbleVertical",
1450
+ "wobble-to-bottom-right": "wobbleToBottomRight",
1451
+ "wobble-to-top-right": "wobbleToTopRight",
1452
+ "wobble-top": "wobbleTop",
1453
+ "wobble-bottom": "wobbleBottom",
1454
+ "wobble-skew": "wobbleSkew",
1455
+ "buzz-out": "buzzOut",
1456
+ "back-pulse": "backPulse",
1457
+ "sweep-to-right": "sweepToRight",
1458
+ "sweep-to-left": "sweepToLeft",
1459
+ "sweep-to-bottom": "sweepToBottom",
1460
+ "sweep-to-top": "sweepToTop",
1461
+ "bounce-to-right": "bounceToRight",
1462
+ "bounce-to-left": "bounceToLeft",
1463
+ "bounce-to-bottom": "bounceToBottom",
1464
+ "bounce-to-top": "bounceToTop",
1465
+ "radial-out": "radialOut",
1466
+ "radial-in": "radialIn",
1467
+ "rectangle-in": "rectangleIn",
1468
+ "rectangle-out": "rectangleOut",
1469
+ "shutter-in-horizontal": "shutterInHorizontal",
1470
+ "shutter-out-horizontal": "shutterOutHorizontal",
1471
+ "shutter-in-vertical": "shutterInVertical",
1472
+ "shutter-out-vertical": "shutterOutVertical",
1473
+ "icon-back": "iconBack",
1474
+ "icon-forward": "iconForward",
1475
+ "icon-down": "iconDown",
1476
+ "icon-up": "iconUp",
1477
+ "icon-spin": "iconSpin",
1478
+ "icon-drop": "iconDrop",
1479
+ "icon-fade": "iconFade",
1480
+ "icon-float-away": "iconFloatAway",
1481
+ "icon-sink-away": "iconSinkAway",
1482
+ "icon-grow": "iconGrow",
1483
+ "icon-shrink": "iconShrink",
1484
+ "icon-pulse": "iconPulse",
1485
+ "icon-pulse-grow": "iconPulseGrow",
1486
+ "icon-pulse-shrink": "iconPulseShrink",
1487
+ "icon-push": "iconPush",
1488
+ "icon-pop": "iconPop",
1489
+ "icon-bounce": "iconBounce",
1490
+ "icon-rotate": "iconRotate",
1491
+ "icon-grow-rotate": "iconGrowRotate",
1492
+ "icon-float": "iconFloat",
1493
+ "icon-sink": "iconSink",
1494
+ "icon-bob": "iconBob",
1495
+ "icon-hang": "iconHang",
1496
+ "icon-wobble-horizontal": "iconWobbleHorizontal",
1497
+ "icon-wobble-vertical": "iconWobbleVertical",
1498
+ "icon-buzz": "iconBuzz",
1499
+ "icon-buzz-out": "iconBuzzOut",
1500
+ "border-fade": "borderFade",
1501
+ "ripple-out": "rippleOut",
1502
+ "ripple-in": "rippleIn",
1503
+ "outline-out": "outlineOut",
1504
+ "outline-in": "outlineIn",
1505
+ "round-corners": "roundCorners",
1506
+ "underline-from-left": "underlineFromLeft",
1507
+ "underline-from-center": "underlineFromCenter",
1508
+ "underline-from-right": "underlineFromRight",
1509
+ "underline-reveal": "underlineReveal",
1510
+ "overline-from-left": "overlineFromLeft",
1511
+ "overline-from-center": "overlineFromCenter",
1512
+ "overline-from-right": "overlineFromRight",
1513
+ "overline-reveal": "overlineReveal",
1514
+ "shadow-grow": "shadowGrow",
1515
+ "shadow-float": "shadowFloat",
1516
+ "shadow-glow": "shadowGlow",
1517
+ "shadow-radial": "shadowRadial",
1518
+ "box-shadow-outset": "boxShadowOutset",
1519
+ "box-shadow-inset": "boxShadowInset",
1520
+ "bubble-top": "bubbleTop",
1521
+ "bubble-right": "bubbleRight",
1522
+ "bubble-bottom": "bubbleBottom",
1523
+ "bubble-left": "bubbleLeft",
1524
+ "bubble-float-top": "bubbleFloatTop",
1525
+ "bubble-float-right": "bubbleFloatRight",
1526
+ "bubble-float-bottom": "bubbleFloatBottom",
1527
+ "bubble-float-left": "bubbleFloatLeft",
1528
+ "curl-top-left": "curlTopLeft",
1529
+ "curl-top-right": "curlTopRight",
1530
+ "curl-bottom-right": "curlBottomRight",
1531
+ "curl-bottom-left": "curlBottomLeft",
1532
+ // hvr-* prefix from Hover.css class names
1533
+ "hvr-grow": "grow",
1534
+ "hvr-float": "float",
1535
+ "hvr-sweep-to-right": "sweepToRight"
1536
+ };
1537
+ function bi(t) {
1538
+ return t.replace(/[A-Z]/g, (o) => `-${o.toLowerCase()}`);
1539
+ }
1540
+ function Q(t) {
1541
+ return ho.includes(t);
1542
+ }
1543
+ function ui(t) {
1544
+ const o = t.trim(), i = q[o] ?? q[o.toLowerCase()];
1545
+ if (i) return i;
1546
+ if (Q(o)) return o;
1547
+ const e = o.replace(/-([a-z])/g, (r, f) => f.toUpperCase());
1548
+ if (Q(e)) return e;
1549
+ throw new Error(
1550
+ `Unknown interaction effect "${t}". Use one of ${ho.length} presets — see INTERACTION_EFFECTS.`
1551
+ );
1552
+ }
1553
+ function li(t, o = !1) {
1554
+ return o ? `fibo-fx-on-group-${t}` : `fibo-fx-on-${t}`;
1555
+ }
1556
+ function hi(t) {
1557
+ return `fibo-fx-${bi(t)}`;
1558
+ }
1559
+ const xi = `
1560
+ @keyframes fibo-fx-pulse { 25% { transform: scale(1.1); } 75% { transform: scale(0.9); } }
1561
+ @keyframes fibo-fx-pulse-grow { to { transform: scale(1.1); } }
1562
+ @keyframes fibo-fx-pulse-shrink { to { transform: scale(0.9); } }
1563
+ @keyframes fibo-fx-push { 50% { transform: scale(0.8); } 100% { transform: scale(1); } }
1564
+ @keyframes fibo-fx-pop { 50% { transform: scale(1.2); } 100% { transform: scale(1); } }
1565
+ @keyframes fibo-fx-bounce-in {
1566
+ 0% { transform: scale(0); } 40% { transform: scale(1.15); } 60% { transform: scale(0.95); }
1567
+ 80% { transform: scale(1.05); } 100% { transform: scale(1); }
1568
+ }
1569
+ @keyframes fibo-fx-bounce-out {
1570
+ 0% { transform: scale(1); } 25% { transform: scale(0.95); } 50% { transform: scale(1.08); }
1571
+ 100% { transform: scale(0); opacity: 0; }
1572
+ }
1573
+ @keyframes fibo-fx-bob {
1574
+ 0% { transform: translateY(-8px); } 50% { transform: translateY(-4px); } 100% { transform: translateY(-8px); }
1575
+ }
1576
+ @keyframes fibo-fx-hang {
1577
+ 0% { transform: translateY(8px); } 50% { transform: translateY(4px); } 100% { transform: translateY(8px); }
1578
+ }
1579
+ @keyframes fibo-fx-wobble-h {
1580
+ 16.65% { transform: translateX(8px); } 33.3% { transform: translateX(-6px); }
1581
+ 49.95% { transform: translateX(4px); } 66.6% { transform: translateX(-2px); }
1582
+ 83.25% { transform: translateX(1px); } 100% { transform: translateX(0); }
1583
+ }
1584
+ @keyframes fibo-fx-wobble-v {
1585
+ 16.65% { transform: translateY(8px); } 33.3% { transform: translateY(-6px); }
1586
+ 49.95% { transform: translateY(4px); } 66.6% { transform: translateY(-2px); }
1587
+ 83.25% { transform: translateY(1px); } 100% { transform: translateY(0); }
1588
+ }
1589
+ @keyframes fibo-fx-wobble-br {
1590
+ 16.65% { transform: translate(8px,8px); } 33.3% { transform: translate(-6px,-6px); }
1591
+ 49.95% { transform: translate(4px,4px); } 66.6% { transform: translate(-2px,-2px); }
1592
+ 83.25% { transform: translate(1px,1px); } 100% { transform: translate(0,0); }
1593
+ }
1594
+ @keyframes fibo-fx-wobble-tr {
1595
+ 16.65% { transform: translate(8px,-8px); } 33.3% { transform: translate(-6px,6px); }
1596
+ 49.95% { transform: translate(4px,-4px); } 66.6% { transform: translate(-2px,2px); }
1597
+ 83.25% { transform: translate(1px,-1px); } 100% { transform: translate(0,0); }
1598
+ }
1599
+ @keyframes fibo-fx-wobble-top {
1600
+ 16.65% { transform: skew(-12deg); } 33.3% { transform: skew(10deg); }
1601
+ 49.95% { transform: skew(-6deg); } 66.6% { transform: skew(4deg); }
1602
+ 83.25% { transform: skew(-2deg); } 100% { transform: skew(0); }
1603
+ /* origin top */
1604
+ }
1605
+ @keyframes fibo-fx-wobble-bottom {
1606
+ 16.65% { transform: skew(-12deg); } 33.3% { transform: skew(10deg); }
1607
+ 49.95% { transform: skew(-6deg); } 66.6% { transform: skew(4deg); }
1608
+ 83.25% { transform: skew(-2deg); } 100% { transform: skew(0); }
1609
+ }
1610
+ @keyframes fibo-fx-wobble-skew {
1611
+ 16.65% { transform: skew(-12deg); } 33.3% { transform: skew(10deg); }
1612
+ 49.95% { transform: skew(-6deg); } 66.6% { transform: skew(4deg); }
1613
+ 83.25% { transform: skew(-2deg); } 100% { transform: skew(0); }
1614
+ }
1615
+ @keyframes fibo-fx-buzz {
1616
+ 50% { transform: translateX(3px) rotate(2deg); }
1617
+ 100% { transform: translateX(-3px) rotate(-2deg); }
1618
+ }
1619
+ @keyframes fibo-fx-buzz-out {
1620
+ 10% { transform: translateX(3px) rotate(2deg); }
1621
+ 20% { transform: translateX(-3px) rotate(-2deg); }
1622
+ 30% { transform: translateX(3px) rotate(2deg); }
1623
+ 40% { transform: translateX(-3px) rotate(-2deg); }
1624
+ 50%,100% { transform: translateX(0) rotate(0); }
1625
+ }
1626
+ @keyframes fibo-fx-icon-drop {
1627
+ 0% { opacity: 0; transform: translateY(-20px); }
1628
+ 50% { opacity: 1; transform: translateY(0); }
1629
+ 100% { opacity: 1; transform: translateY(0); }
1630
+ }
1631
+ @keyframes fibo-fx-icon-bob {
1632
+ 0%,100% { transform: translateY(-6px); } 50% { transform: translateY(-2px); }
1633
+ }
1634
+ @keyframes fibo-fx-icon-hang {
1635
+ 0%,100% { transform: translateY(6px); } 50% { transform: translateY(2px); }
1636
+ }
1637
+ @keyframes fibo-fx-icon-buzz {
1638
+ 50% { transform: translateX(3px) rotate(2deg); }
1639
+ 100% { transform: translateX(-3px) rotate(-2deg); }
1640
+ }
1641
+ @keyframes fibo-fx-back-pulse {
1642
+ 50% { background-color: rgba(127,127,127,0.25); }
1643
+ }
1644
+ @keyframes fibo-fx-ripple-out {
1645
+ 100% { top: -12px; right: -12px; bottom: -12px; left: -12px; opacity: 0; }
1646
+ }
1647
+ @keyframes fibo-fx-ripple-in {
1648
+ 100% { top: 0; right: 0; bottom: 0; left: 0; opacity: 1; }
1649
+ }
1650
+
1651
+ .fibo-fx {
1652
+ -webkit-tap-highlight-color: transparent;
1653
+ transform: perspective(1px) translateZ(0);
1654
+ box-shadow: 0 0 1px rgba(0,0,0,0);
1655
+ }
1656
+ .fibo-fx[class*="fibo-fx-sweep"],
1657
+ .fibo-fx[class*="fibo-fx-bounce-to"],
1658
+ .fibo-fx[class*="fibo-fx-radial"],
1659
+ .fibo-fx[class*="fibo-fx-rectangle"],
1660
+ .fibo-fx[class*="fibo-fx-shutter"],
1661
+ .fibo-fx[class*="fibo-fx-curl"],
1662
+ .fibo-fx[class*="fibo-fx-bubble"] {
1663
+ position: relative;
1664
+ }
1665
+ .fibo-fx[class*="fibo-fx-sweep"],
1666
+ .fibo-fx[class*="fibo-fx-bounce-to"],
1667
+ .fibo-fx[class*="fibo-fx-radial"],
1668
+ .fibo-fx[class*="fibo-fx-rectangle"],
1669
+ .fibo-fx[class*="fibo-fx-shutter"],
1670
+ .fibo-fx[class*="fibo-fx-curl"] {
1671
+ overflow: hidden;
1672
+ }
1673
+
1674
+ .fibo-fx-grow { transition-duration:.3s;transition-property:transform; }
1675
+ .fibo-fx-grow.fibo-fx-on-hover:hover,
1676
+ .fibo-fx-grow.fibo-fx-on-active:active,
1677
+ .fibo-fx-grow.fibo-fx-on-focus:focus,
1678
+ .fibo-fx-grow.fibo-fx-on-focus-visible:focus-visible,
1679
+ .fibo-fx-grow.fibo-fx-on-focus-within:focus-within,
1680
+ .group:hover .fibo-fx-grow.fibo-fx-on-group-hover,
1681
+ .group:active .fibo-fx-grow.fibo-fx-on-group-active,
1682
+ .group:focus-within .fibo-fx-grow.fibo-fx-on-group-focus-within { transform:scale(1.1); }
1683
+
1684
+ .fibo-fx-shrink { transition-duration:.3s;transition-property:transform; }
1685
+ .fibo-fx-shrink.fibo-fx-on-hover:hover,
1686
+ .fibo-fx-shrink.fibo-fx-on-active:active,
1687
+ .fibo-fx-shrink.fibo-fx-on-focus:focus,
1688
+ .fibo-fx-shrink.fibo-fx-on-focus-visible:focus-visible,
1689
+ .fibo-fx-shrink.fibo-fx-on-focus-within:focus-within,
1690
+ .group:hover .fibo-fx-shrink.fibo-fx-on-group-hover,
1691
+ .group:active .fibo-fx-shrink.fibo-fx-on-group-active,
1692
+ .group:focus-within .fibo-fx-shrink.fibo-fx-on-group-focus-within { transform:scale(0.9); }
1693
+
1694
+ .fibo-fx-pulse.fibo-fx-on-hover:hover,
1695
+ .fibo-fx-pulse.fibo-fx-on-active:active,
1696
+ .fibo-fx-pulse.fibo-fx-on-focus:focus,
1697
+ .fibo-fx-pulse.fibo-fx-on-focus-visible:focus-visible,
1698
+ .fibo-fx-pulse.fibo-fx-on-focus-within:focus-within,
1699
+ .group:hover .fibo-fx-pulse.fibo-fx-on-group-hover,
1700
+ .group:active .fibo-fx-pulse.fibo-fx-on-group-active,
1701
+ .group:focus-within .fibo-fx-pulse.fibo-fx-on-group-focus-within { animation-name:fibo-fx-pulse;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite; }
1702
+
1703
+ .fibo-fx-pulse-grow.fibo-fx-on-hover:hover,
1704
+ .fibo-fx-pulse-grow.fibo-fx-on-active:active,
1705
+ .fibo-fx-pulse-grow.fibo-fx-on-focus:focus,
1706
+ .fibo-fx-pulse-grow.fibo-fx-on-focus-visible:focus-visible,
1707
+ .fibo-fx-pulse-grow.fibo-fx-on-focus-within:focus-within,
1708
+ .group:hover .fibo-fx-pulse-grow.fibo-fx-on-group-hover,
1709
+ .group:active .fibo-fx-pulse-grow.fibo-fx-on-group-active,
1710
+ .group:focus-within .fibo-fx-pulse-grow.fibo-fx-on-group-focus-within { animation-name:fibo-fx-pulse-grow;animation-duration:.3s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate; }
1711
+
1712
+ .fibo-fx-pulse-shrink.fibo-fx-on-hover:hover,
1713
+ .fibo-fx-pulse-shrink.fibo-fx-on-active:active,
1714
+ .fibo-fx-pulse-shrink.fibo-fx-on-focus:focus,
1715
+ .fibo-fx-pulse-shrink.fibo-fx-on-focus-visible:focus-visible,
1716
+ .fibo-fx-pulse-shrink.fibo-fx-on-focus-within:focus-within,
1717
+ .group:hover .fibo-fx-pulse-shrink.fibo-fx-on-group-hover,
1718
+ .group:active .fibo-fx-pulse-shrink.fibo-fx-on-group-active,
1719
+ .group:focus-within .fibo-fx-pulse-shrink.fibo-fx-on-group-focus-within { animation-name:fibo-fx-pulse-shrink;animation-duration:.3s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate; }
1720
+
1721
+ .fibo-fx-push.fibo-fx-on-hover:hover,
1722
+ .fibo-fx-push.fibo-fx-on-active:active,
1723
+ .fibo-fx-push.fibo-fx-on-focus:focus,
1724
+ .fibo-fx-push.fibo-fx-on-focus-visible:focus-visible,
1725
+ .fibo-fx-push.fibo-fx-on-focus-within:focus-within,
1726
+ .group:hover .fibo-fx-push.fibo-fx-on-group-hover,
1727
+ .group:active .fibo-fx-push.fibo-fx-on-group-active,
1728
+ .group:focus-within .fibo-fx-push.fibo-fx-on-group-focus-within { animation-name:fibo-fx-push;animation-duration:.3s;animation-timing-function:linear;animation-iteration-count:1; }
1729
+
1730
+ .fibo-fx-pop.fibo-fx-on-hover:hover,
1731
+ .fibo-fx-pop.fibo-fx-on-active:active,
1732
+ .fibo-fx-pop.fibo-fx-on-focus:focus,
1733
+ .fibo-fx-pop.fibo-fx-on-focus-visible:focus-visible,
1734
+ .fibo-fx-pop.fibo-fx-on-focus-within:focus-within,
1735
+ .group:hover .fibo-fx-pop.fibo-fx-on-group-hover,
1736
+ .group:active .fibo-fx-pop.fibo-fx-on-group-active,
1737
+ .group:focus-within .fibo-fx-pop.fibo-fx-on-group-focus-within { animation-name:fibo-fx-pop;animation-duration:.3s;animation-timing-function:linear;animation-iteration-count:1; }
1738
+
1739
+ .fibo-fx-bounce-in.fibo-fx-on-hover:hover,
1740
+ .fibo-fx-bounce-in.fibo-fx-on-active:active,
1741
+ .fibo-fx-bounce-in.fibo-fx-on-focus:focus,
1742
+ .fibo-fx-bounce-in.fibo-fx-on-focus-visible:focus-visible,
1743
+ .fibo-fx-bounce-in.fibo-fx-on-focus-within:focus-within,
1744
+ .group:hover .fibo-fx-bounce-in.fibo-fx-on-group-hover,
1745
+ .group:active .fibo-fx-bounce-in.fibo-fx-on-group-active,
1746
+ .group:focus-within .fibo-fx-bounce-in.fibo-fx-on-group-focus-within { animation-name:fibo-fx-bounce-in;animation-duration:.5s;animation-timing-function:cubic-bezier(0.47,2.02,.31,-.36);animation-iteration-count:1; }
1747
+
1748
+ .fibo-fx-bounce-out.fibo-fx-on-hover:hover,
1749
+ .fibo-fx-bounce-out.fibo-fx-on-active:active,
1750
+ .fibo-fx-bounce-out.fibo-fx-on-focus:focus,
1751
+ .fibo-fx-bounce-out.fibo-fx-on-focus-visible:focus-visible,
1752
+ .fibo-fx-bounce-out.fibo-fx-on-focus-within:focus-within,
1753
+ .group:hover .fibo-fx-bounce-out.fibo-fx-on-group-hover,
1754
+ .group:active .fibo-fx-bounce-out.fibo-fx-on-group-active,
1755
+ .group:focus-within .fibo-fx-bounce-out.fibo-fx-on-group-focus-within { animation-name:fibo-fx-bounce-out;animation-duration:.5s;animation-timing-function:cubic-bezier(.47,-.36,.31,2.02);animation-iteration-count:1; }
1756
+
1757
+ .fibo-fx-rotate { transition-duration:.3s;transition-property:transform; }
1758
+ .fibo-fx-rotate.fibo-fx-on-hover:hover,
1759
+ .fibo-fx-rotate.fibo-fx-on-active:active,
1760
+ .fibo-fx-rotate.fibo-fx-on-focus:focus,
1761
+ .fibo-fx-rotate.fibo-fx-on-focus-visible:focus-visible,
1762
+ .fibo-fx-rotate.fibo-fx-on-focus-within:focus-within,
1763
+ .group:hover .fibo-fx-rotate.fibo-fx-on-group-hover,
1764
+ .group:active .fibo-fx-rotate.fibo-fx-on-group-active,
1765
+ .group:focus-within .fibo-fx-rotate.fibo-fx-on-group-focus-within { transform:rotate(4deg); }
1766
+
1767
+ .fibo-fx-grow-rotate { transition-duration:.3s;transition-property:transform; }
1768
+ .fibo-fx-grow-rotate.fibo-fx-on-hover:hover,
1769
+ .fibo-fx-grow-rotate.fibo-fx-on-active:active,
1770
+ .fibo-fx-grow-rotate.fibo-fx-on-focus:focus,
1771
+ .fibo-fx-grow-rotate.fibo-fx-on-focus-visible:focus-visible,
1772
+ .fibo-fx-grow-rotate.fibo-fx-on-focus-within:focus-within,
1773
+ .group:hover .fibo-fx-grow-rotate.fibo-fx-on-group-hover,
1774
+ .group:active .fibo-fx-grow-rotate.fibo-fx-on-group-active,
1775
+ .group:focus-within .fibo-fx-grow-rotate.fibo-fx-on-group-focus-within { transform:scale(1.1) rotate(4deg); }
1776
+
1777
+ .fibo-fx-float { transition-duration:.3s;transition-property:transform;transition-timing-function:ease-out; }
1778
+ .fibo-fx-float.fibo-fx-on-hover:hover,
1779
+ .fibo-fx-float.fibo-fx-on-active:active,
1780
+ .fibo-fx-float.fibo-fx-on-focus:focus,
1781
+ .fibo-fx-float.fibo-fx-on-focus-visible:focus-visible,
1782
+ .fibo-fx-float.fibo-fx-on-focus-within:focus-within,
1783
+ .group:hover .fibo-fx-float.fibo-fx-on-group-hover,
1784
+ .group:active .fibo-fx-float.fibo-fx-on-group-active,
1785
+ .group:focus-within .fibo-fx-float.fibo-fx-on-group-focus-within { transform:translateY(-8px); }
1786
+
1787
+ .fibo-fx-sink { transition-duration:.3s;transition-property:transform;transition-timing-function:ease-out; }
1788
+ .fibo-fx-sink.fibo-fx-on-hover:hover,
1789
+ .fibo-fx-sink.fibo-fx-on-active:active,
1790
+ .fibo-fx-sink.fibo-fx-on-focus:focus,
1791
+ .fibo-fx-sink.fibo-fx-on-focus-visible:focus-visible,
1792
+ .fibo-fx-sink.fibo-fx-on-focus-within:focus-within,
1793
+ .group:hover .fibo-fx-sink.fibo-fx-on-group-hover,
1794
+ .group:active .fibo-fx-sink.fibo-fx-on-group-active,
1795
+ .group:focus-within .fibo-fx-sink.fibo-fx-on-group-focus-within { transform:translateY(8px); }
1796
+
1797
+ .fibo-fx-bob.fibo-fx-on-hover:hover,
1798
+ .fibo-fx-bob.fibo-fx-on-active:active,
1799
+ .fibo-fx-bob.fibo-fx-on-focus:focus,
1800
+ .fibo-fx-bob.fibo-fx-on-focus-visible:focus-visible,
1801
+ .fibo-fx-bob.fibo-fx-on-focus-within:focus-within,
1802
+ .group:hover .fibo-fx-bob.fibo-fx-on-group-hover,
1803
+ .group:active .fibo-fx-bob.fibo-fx-on-group-active,
1804
+ .group:focus-within .fibo-fx-bob.fibo-fx-on-group-focus-within { animation-name:fibo-fx-bob;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:infinite; }
1805
+
1806
+ .fibo-fx-hang.fibo-fx-on-hover:hover,
1807
+ .fibo-fx-hang.fibo-fx-on-active:active,
1808
+ .fibo-fx-hang.fibo-fx-on-focus:focus,
1809
+ .fibo-fx-hang.fibo-fx-on-focus-visible:focus-visible,
1810
+ .fibo-fx-hang.fibo-fx-on-focus-within:focus-within,
1811
+ .group:hover .fibo-fx-hang.fibo-fx-on-group-hover,
1812
+ .group:active .fibo-fx-hang.fibo-fx-on-group-active,
1813
+ .group:focus-within .fibo-fx-hang.fibo-fx-on-group-focus-within { animation-name:fibo-fx-hang;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:infinite; }
1814
+
1815
+ .fibo-fx-skew { transition-duration:.3s;transition-property:transform; }
1816
+ .fibo-fx-skew.fibo-fx-on-hover:hover,
1817
+ .fibo-fx-skew.fibo-fx-on-active:active,
1818
+ .fibo-fx-skew.fibo-fx-on-focus:focus,
1819
+ .fibo-fx-skew.fibo-fx-on-focus-visible:focus-visible,
1820
+ .fibo-fx-skew.fibo-fx-on-focus-within:focus-within,
1821
+ .group:hover .fibo-fx-skew.fibo-fx-on-group-hover,
1822
+ .group:active .fibo-fx-skew.fibo-fx-on-group-active,
1823
+ .group:focus-within .fibo-fx-skew.fibo-fx-on-group-focus-within { transform:skew(-10deg); }
1824
+
1825
+ .fibo-fx-skew-forward { transition-duration:.3s;transition-property:transform;transform-origin:0 100%; }
1826
+ .fibo-fx-skew-forward.fibo-fx-on-hover:hover,
1827
+ .fibo-fx-skew-forward.fibo-fx-on-active:active,
1828
+ .fibo-fx-skew-forward.fibo-fx-on-focus:focus,
1829
+ .fibo-fx-skew-forward.fibo-fx-on-focus-visible:focus-visible,
1830
+ .fibo-fx-skew-forward.fibo-fx-on-focus-within:focus-within,
1831
+ .group:hover .fibo-fx-skew-forward.fibo-fx-on-group-hover,
1832
+ .group:active .fibo-fx-skew-forward.fibo-fx-on-group-active,
1833
+ .group:focus-within .fibo-fx-skew-forward.fibo-fx-on-group-focus-within { transform:skew(-10deg); }
1834
+
1835
+ .fibo-fx-skew-backward { transition-duration:.3s;transition-property:transform;transform-origin:100% 0; }
1836
+ .fibo-fx-skew-backward.fibo-fx-on-hover:hover,
1837
+ .fibo-fx-skew-backward.fibo-fx-on-active:active,
1838
+ .fibo-fx-skew-backward.fibo-fx-on-focus:focus,
1839
+ .fibo-fx-skew-backward.fibo-fx-on-focus-visible:focus-visible,
1840
+ .fibo-fx-skew-backward.fibo-fx-on-focus-within:focus-within,
1841
+ .group:hover .fibo-fx-skew-backward.fibo-fx-on-group-hover,
1842
+ .group:active .fibo-fx-skew-backward.fibo-fx-on-group-active,
1843
+ .group:focus-within .fibo-fx-skew-backward.fibo-fx-on-group-focus-within { transform:skew(10deg); }
1844
+
1845
+ .fibo-fx-wobble-horizontal.fibo-fx-on-hover:hover,
1846
+ .fibo-fx-wobble-horizontal.fibo-fx-on-active:active,
1847
+ .fibo-fx-wobble-horizontal.fibo-fx-on-focus:focus,
1848
+ .fibo-fx-wobble-horizontal.fibo-fx-on-focus-visible:focus-visible,
1849
+ .fibo-fx-wobble-horizontal.fibo-fx-on-focus-within:focus-within,
1850
+ .group:hover .fibo-fx-wobble-horizontal.fibo-fx-on-group-hover,
1851
+ .group:active .fibo-fx-wobble-horizontal.fibo-fx-on-group-active,
1852
+ .group:focus-within .fibo-fx-wobble-horizontal.fibo-fx-on-group-focus-within { animation-name:fibo-fx-wobble-h;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:1; }
1853
+
1854
+ .fibo-fx-wobble-vertical.fibo-fx-on-hover:hover,
1855
+ .fibo-fx-wobble-vertical.fibo-fx-on-active:active,
1856
+ .fibo-fx-wobble-vertical.fibo-fx-on-focus:focus,
1857
+ .fibo-fx-wobble-vertical.fibo-fx-on-focus-visible:focus-visible,
1858
+ .fibo-fx-wobble-vertical.fibo-fx-on-focus-within:focus-within,
1859
+ .group:hover .fibo-fx-wobble-vertical.fibo-fx-on-group-hover,
1860
+ .group:active .fibo-fx-wobble-vertical.fibo-fx-on-group-active,
1861
+ .group:focus-within .fibo-fx-wobble-vertical.fibo-fx-on-group-focus-within { animation-name:fibo-fx-wobble-v;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:1; }
1862
+
1863
+ .fibo-fx-wobble-to-bottom-right.fibo-fx-on-hover:hover,
1864
+ .fibo-fx-wobble-to-bottom-right.fibo-fx-on-active:active,
1865
+ .fibo-fx-wobble-to-bottom-right.fibo-fx-on-focus:focus,
1866
+ .fibo-fx-wobble-to-bottom-right.fibo-fx-on-focus-visible:focus-visible,
1867
+ .fibo-fx-wobble-to-bottom-right.fibo-fx-on-focus-within:focus-within,
1868
+ .group:hover .fibo-fx-wobble-to-bottom-right.fibo-fx-on-group-hover,
1869
+ .group:active .fibo-fx-wobble-to-bottom-right.fibo-fx-on-group-active,
1870
+ .group:focus-within .fibo-fx-wobble-to-bottom-right.fibo-fx-on-group-focus-within { animation-name:fibo-fx-wobble-br;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:1; }
1871
+
1872
+ .fibo-fx-wobble-to-top-right.fibo-fx-on-hover:hover,
1873
+ .fibo-fx-wobble-to-top-right.fibo-fx-on-active:active,
1874
+ .fibo-fx-wobble-to-top-right.fibo-fx-on-focus:focus,
1875
+ .fibo-fx-wobble-to-top-right.fibo-fx-on-focus-visible:focus-visible,
1876
+ .fibo-fx-wobble-to-top-right.fibo-fx-on-focus-within:focus-within,
1877
+ .group:hover .fibo-fx-wobble-to-top-right.fibo-fx-on-group-hover,
1878
+ .group:active .fibo-fx-wobble-to-top-right.fibo-fx-on-group-active,
1879
+ .group:focus-within .fibo-fx-wobble-to-top-right.fibo-fx-on-group-focus-within { animation-name:fibo-fx-wobble-tr;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:1; }
1880
+
1881
+ .fibo-fx-wobble-top { transform-origin:0 0; }
1882
+ .fibo-fx-wobble-top.fibo-fx-on-hover:hover,
1883
+ .fibo-fx-wobble-top.fibo-fx-on-active:active,
1884
+ .fibo-fx-wobble-top.fibo-fx-on-focus:focus,
1885
+ .fibo-fx-wobble-top.fibo-fx-on-focus-visible:focus-visible,
1886
+ .fibo-fx-wobble-top.fibo-fx-on-focus-within:focus-within,
1887
+ .group:hover .fibo-fx-wobble-top.fibo-fx-on-group-hover,
1888
+ .group:active .fibo-fx-wobble-top.fibo-fx-on-group-active,
1889
+ .group:focus-within .fibo-fx-wobble-top.fibo-fx-on-group-focus-within { animation-name:fibo-fx-wobble-top;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:1; }
1890
+
1891
+ .fibo-fx-wobble-bottom { transform-origin:100% 100%; }
1892
+ .fibo-fx-wobble-bottom.fibo-fx-on-hover:hover,
1893
+ .fibo-fx-wobble-bottom.fibo-fx-on-active:active,
1894
+ .fibo-fx-wobble-bottom.fibo-fx-on-focus:focus,
1895
+ .fibo-fx-wobble-bottom.fibo-fx-on-focus-visible:focus-visible,
1896
+ .fibo-fx-wobble-bottom.fibo-fx-on-focus-within:focus-within,
1897
+ .group:hover .fibo-fx-wobble-bottom.fibo-fx-on-group-hover,
1898
+ .group:active .fibo-fx-wobble-bottom.fibo-fx-on-group-active,
1899
+ .group:focus-within .fibo-fx-wobble-bottom.fibo-fx-on-group-focus-within { animation-name:fibo-fx-wobble-bottom;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:1; }
1900
+
1901
+ .fibo-fx-wobble-skew.fibo-fx-on-hover:hover,
1902
+ .fibo-fx-wobble-skew.fibo-fx-on-active:active,
1903
+ .fibo-fx-wobble-skew.fibo-fx-on-focus:focus,
1904
+ .fibo-fx-wobble-skew.fibo-fx-on-focus-visible:focus-visible,
1905
+ .fibo-fx-wobble-skew.fibo-fx-on-focus-within:focus-within,
1906
+ .group:hover .fibo-fx-wobble-skew.fibo-fx-on-group-hover,
1907
+ .group:active .fibo-fx-wobble-skew.fibo-fx-on-group-active,
1908
+ .group:focus-within .fibo-fx-wobble-skew.fibo-fx-on-group-focus-within { animation-name:fibo-fx-wobble-skew;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:1; }
1909
+
1910
+ .fibo-fx-buzz.fibo-fx-on-hover:hover,
1911
+ .fibo-fx-buzz.fibo-fx-on-active:active,
1912
+ .fibo-fx-buzz.fibo-fx-on-focus:focus,
1913
+ .fibo-fx-buzz.fibo-fx-on-focus-visible:focus-visible,
1914
+ .fibo-fx-buzz.fibo-fx-on-focus-within:focus-within,
1915
+ .group:hover .fibo-fx-buzz.fibo-fx-on-group-hover,
1916
+ .group:active .fibo-fx-buzz.fibo-fx-on-group-active,
1917
+ .group:focus-within .fibo-fx-buzz.fibo-fx-on-group-focus-within { animation-name:fibo-fx-buzz;animation-duration:.15s;animation-timing-function:linear;animation-iteration-count:infinite; }
1918
+
1919
+ .fibo-fx-buzz-out.fibo-fx-on-hover:hover,
1920
+ .fibo-fx-buzz-out.fibo-fx-on-active:active,
1921
+ .fibo-fx-buzz-out.fibo-fx-on-focus:focus,
1922
+ .fibo-fx-buzz-out.fibo-fx-on-focus-visible:focus-visible,
1923
+ .fibo-fx-buzz-out.fibo-fx-on-focus-within:focus-within,
1924
+ .group:hover .fibo-fx-buzz-out.fibo-fx-on-group-hover,
1925
+ .group:active .fibo-fx-buzz-out.fibo-fx-on-group-active,
1926
+ .group:focus-within .fibo-fx-buzz-out.fibo-fx-on-group-focus-within { animation-name:fibo-fx-buzz-out;animation-duration:.75s;animation-timing-function:linear;animation-iteration-count:1; }
1927
+
1928
+ .fibo-fx-forward { transition-duration:.3s;transition-property:transform; }
1929
+ .fibo-fx-forward.fibo-fx-on-hover:hover,
1930
+ .fibo-fx-forward.fibo-fx-on-active:active,
1931
+ .fibo-fx-forward.fibo-fx-on-focus:focus,
1932
+ .fibo-fx-forward.fibo-fx-on-focus-visible:focus-visible,
1933
+ .fibo-fx-forward.fibo-fx-on-focus-within:focus-within,
1934
+ .group:hover .fibo-fx-forward.fibo-fx-on-group-hover,
1935
+ .group:active .fibo-fx-forward.fibo-fx-on-group-active,
1936
+ .group:focus-within .fibo-fx-forward.fibo-fx-on-group-focus-within { transform:translateX(8px); }
1937
+
1938
+ .fibo-fx-backward { transition-duration:.3s;transition-property:transform; }
1939
+ .fibo-fx-backward.fibo-fx-on-hover:hover,
1940
+ .fibo-fx-backward.fibo-fx-on-active:active,
1941
+ .fibo-fx-backward.fibo-fx-on-focus:focus,
1942
+ .fibo-fx-backward.fibo-fx-on-focus-visible:focus-visible,
1943
+ .fibo-fx-backward.fibo-fx-on-focus-within:focus-within,
1944
+ .group:hover .fibo-fx-backward.fibo-fx-on-group-hover,
1945
+ .group:active .fibo-fx-backward.fibo-fx-on-group-active,
1946
+ .group:focus-within .fibo-fx-backward.fibo-fx-on-group-focus-within { transform:translateX(-8px); }
1947
+
1948
+ .fibo-fx-nudge { transition-duration:.2s;transition-property:transform;transition-timing-function:ease-out; }
1949
+ .fibo-fx-nudge.fibo-fx-on-hover:hover,
1950
+ .fibo-fx-nudge.fibo-fx-on-active:active,
1951
+ .fibo-fx-nudge.fibo-fx-on-focus:focus,
1952
+ .fibo-fx-nudge.fibo-fx-on-focus-visible:focus-visible,
1953
+ .fibo-fx-nudge.fibo-fx-on-focus-within:focus-within,
1954
+ .group:hover .fibo-fx-nudge.fibo-fx-on-group-hover,
1955
+ .group:active .fibo-fx-nudge.fibo-fx-on-group-active,
1956
+ .group:focus-within .fibo-fx-nudge.fibo-fx-on-group-focus-within { transform:translateX(3px); }
1957
+
1958
+ .fibo-fx-fade { transition-duration:.3s;transition-property:background-color,color,opacity; }
1959
+ .fibo-fx-fade.fibo-fx-on-hover:hover,
1960
+ .fibo-fx-fade.fibo-fx-on-active:active,
1961
+ .fibo-fx-fade.fibo-fx-on-focus:focus,
1962
+ .fibo-fx-fade.fibo-fx-on-focus-visible:focus-visible,
1963
+ .fibo-fx-fade.fibo-fx-on-focus-within:focus-within,
1964
+ .group:hover .fibo-fx-fade.fibo-fx-on-group-hover,
1965
+ .group:active .fibo-fx-fade.fibo-fx-on-group-active,
1966
+ .group:focus-within .fibo-fx-fade.fibo-fx-on-group-focus-within { background-color:var(--fibo-fx-fill,rgba(127,127,127,.15)); }
1967
+
1968
+ .fibo-fx-back-pulse.fibo-fx-on-hover:hover,
1969
+ .fibo-fx-back-pulse.fibo-fx-on-active:active,
1970
+ .fibo-fx-back-pulse.fibo-fx-on-focus:focus,
1971
+ .fibo-fx-back-pulse.fibo-fx-on-focus-visible:focus-visible,
1972
+ .fibo-fx-back-pulse.fibo-fx-on-focus-within:focus-within,
1973
+ .group:hover .fibo-fx-back-pulse.fibo-fx-on-group-hover,
1974
+ .group:active .fibo-fx-back-pulse.fibo-fx-on-group-active,
1975
+ .group:focus-within .fibo-fx-back-pulse.fibo-fx-on-group-focus-within { animation-name:fibo-fx-back-pulse;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite; }
1976
+
1977
+ .fibo-fx-sweep-to-right { transition-duration:.3s; }
1978
+ .fibo-fx-sweep-to-right::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleX(0); transform-origin:0 50%; }
1979
+ .fibo-fx-sweep-to-right.fibo-fx-on-hover:hover::before,
1980
+ .fibo-fx-sweep-to-right.fibo-fx-on-active:active::before,
1981
+ .fibo-fx-sweep-to-right.fibo-fx-on-focus:focus::before,
1982
+ .fibo-fx-sweep-to-right.fibo-fx-on-focus-visible:focus-visible::before,
1983
+ .fibo-fx-sweep-to-right.fibo-fx-on-focus-within:focus-within::before,
1984
+ .group:hover .fibo-fx-sweep-to-right.fibo-fx-on-group-hover::before,
1985
+ .group:active .fibo-fx-sweep-to-right.fibo-fx-on-group-active::before,
1986
+ .group:focus-within .fibo-fx-sweep-to-right.fibo-fx-on-group-focus-within::before { transform:scaleX(1); }
1987
+
1988
+ .fibo-fx-sweep-to-left { transition-duration:.3s; }
1989
+ .fibo-fx-sweep-to-left::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleX(0); transform-origin:100% 50%; }
1990
+ .fibo-fx-sweep-to-left.fibo-fx-on-hover:hover::before,
1991
+ .fibo-fx-sweep-to-left.fibo-fx-on-active:active::before,
1992
+ .fibo-fx-sweep-to-left.fibo-fx-on-focus:focus::before,
1993
+ .fibo-fx-sweep-to-left.fibo-fx-on-focus-visible:focus-visible::before,
1994
+ .fibo-fx-sweep-to-left.fibo-fx-on-focus-within:focus-within::before,
1995
+ .group:hover .fibo-fx-sweep-to-left.fibo-fx-on-group-hover::before,
1996
+ .group:active .fibo-fx-sweep-to-left.fibo-fx-on-group-active::before,
1997
+ .group:focus-within .fibo-fx-sweep-to-left.fibo-fx-on-group-focus-within::before { transform:scaleX(1); }
1998
+
1999
+ .fibo-fx-sweep-to-bottom { transition-duration:.3s; }
2000
+ .fibo-fx-sweep-to-bottom::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleY(0); transform-origin:50% 0; }
2001
+ .fibo-fx-sweep-to-bottom.fibo-fx-on-hover:hover::before,
2002
+ .fibo-fx-sweep-to-bottom.fibo-fx-on-active:active::before,
2003
+ .fibo-fx-sweep-to-bottom.fibo-fx-on-focus:focus::before,
2004
+ .fibo-fx-sweep-to-bottom.fibo-fx-on-focus-visible:focus-visible::before,
2005
+ .fibo-fx-sweep-to-bottom.fibo-fx-on-focus-within:focus-within::before,
2006
+ .group:hover .fibo-fx-sweep-to-bottom.fibo-fx-on-group-hover::before,
2007
+ .group:active .fibo-fx-sweep-to-bottom.fibo-fx-on-group-active::before,
2008
+ .group:focus-within .fibo-fx-sweep-to-bottom.fibo-fx-on-group-focus-within::before { transform:scaleY(1); }
2009
+
2010
+ .fibo-fx-sweep-to-top { transition-duration:.3s; }
2011
+ .fibo-fx-sweep-to-top::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleY(0); transform-origin:50% 100%; }
2012
+ .fibo-fx-sweep-to-top.fibo-fx-on-hover:hover::before,
2013
+ .fibo-fx-sweep-to-top.fibo-fx-on-active:active::before,
2014
+ .fibo-fx-sweep-to-top.fibo-fx-on-focus:focus::before,
2015
+ .fibo-fx-sweep-to-top.fibo-fx-on-focus-visible:focus-visible::before,
2016
+ .fibo-fx-sweep-to-top.fibo-fx-on-focus-within:focus-within::before,
2017
+ .group:hover .fibo-fx-sweep-to-top.fibo-fx-on-group-hover::before,
2018
+ .group:active .fibo-fx-sweep-to-top.fibo-fx-on-group-active::before,
2019
+ .group:focus-within .fibo-fx-sweep-to-top.fibo-fx-on-group-focus-within::before { transform:scaleY(1); }
2020
+
2021
+ .fibo-fx-bounce-to-right::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleX(0); transform-origin:0 50%; transition-timing-function:cubic-bezier(.47,2.02,.31,-.36); }
2022
+ .fibo-fx-bounce-to-right.fibo-fx-on-hover:hover::before,
2023
+ .fibo-fx-bounce-to-right.fibo-fx-on-active:active::before,
2024
+ .fibo-fx-bounce-to-right.fibo-fx-on-focus:focus::before,
2025
+ .fibo-fx-bounce-to-right.fibo-fx-on-focus-visible:focus-visible::before,
2026
+ .fibo-fx-bounce-to-right.fibo-fx-on-focus-within:focus-within::before,
2027
+ .group:hover .fibo-fx-bounce-to-right.fibo-fx-on-group-hover::before,
2028
+ .group:active .fibo-fx-bounce-to-right.fibo-fx-on-group-active::before,
2029
+ .group:focus-within .fibo-fx-bounce-to-right.fibo-fx-on-group-focus-within::before { transform:scaleX(1); }
2030
+
2031
+ .fibo-fx-bounce-to-left::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleX(0); transform-origin:100% 50%; transition-timing-function:cubic-bezier(.47,2.02,.31,-.36); }
2032
+ .fibo-fx-bounce-to-left.fibo-fx-on-hover:hover::before,
2033
+ .fibo-fx-bounce-to-left.fibo-fx-on-active:active::before,
2034
+ .fibo-fx-bounce-to-left.fibo-fx-on-focus:focus::before,
2035
+ .fibo-fx-bounce-to-left.fibo-fx-on-focus-visible:focus-visible::before,
2036
+ .fibo-fx-bounce-to-left.fibo-fx-on-focus-within:focus-within::before,
2037
+ .group:hover .fibo-fx-bounce-to-left.fibo-fx-on-group-hover::before,
2038
+ .group:active .fibo-fx-bounce-to-left.fibo-fx-on-group-active::before,
2039
+ .group:focus-within .fibo-fx-bounce-to-left.fibo-fx-on-group-focus-within::before { transform:scaleX(1); }
2040
+
2041
+ .fibo-fx-bounce-to-bottom::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleY(0); transform-origin:50% 0; transition-timing-function:cubic-bezier(.47,2.02,.31,-.36); }
2042
+ .fibo-fx-bounce-to-bottom.fibo-fx-on-hover:hover::before,
2043
+ .fibo-fx-bounce-to-bottom.fibo-fx-on-active:active::before,
2044
+ .fibo-fx-bounce-to-bottom.fibo-fx-on-focus:focus::before,
2045
+ .fibo-fx-bounce-to-bottom.fibo-fx-on-focus-visible:focus-visible::before,
2046
+ .fibo-fx-bounce-to-bottom.fibo-fx-on-focus-within:focus-within::before,
2047
+ .group:hover .fibo-fx-bounce-to-bottom.fibo-fx-on-group-hover::before,
2048
+ .group:active .fibo-fx-bounce-to-bottom.fibo-fx-on-group-active::before,
2049
+ .group:focus-within .fibo-fx-bounce-to-bottom.fibo-fx-on-group-focus-within::before { transform:scaleY(1); }
2050
+
2051
+ .fibo-fx-bounce-to-top::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleY(0); transform-origin:50% 100%; transition-timing-function:cubic-bezier(.47,2.02,.31,-.36); }
2052
+ .fibo-fx-bounce-to-top.fibo-fx-on-hover:hover::before,
2053
+ .fibo-fx-bounce-to-top.fibo-fx-on-active:active::before,
2054
+ .fibo-fx-bounce-to-top.fibo-fx-on-focus:focus::before,
2055
+ .fibo-fx-bounce-to-top.fibo-fx-on-focus-visible:focus-visible::before,
2056
+ .fibo-fx-bounce-to-top.fibo-fx-on-focus-within:focus-within::before,
2057
+ .group:hover .fibo-fx-bounce-to-top.fibo-fx-on-group-hover::before,
2058
+ .group:active .fibo-fx-bounce-to-top.fibo-fx-on-group-active::before,
2059
+ .group:focus-within .fibo-fx-bounce-to-top.fibo-fx-on-group-focus-within::before { transform:scaleY(1); }
2060
+
2061
+ .fibo-fx-radial-out::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; border-radius:100%; transform:scale(0); }
2062
+ .fibo-fx-radial-out.fibo-fx-on-hover:hover::before,
2063
+ .fibo-fx-radial-out.fibo-fx-on-active:active::before,
2064
+ .fibo-fx-radial-out.fibo-fx-on-focus:focus::before,
2065
+ .fibo-fx-radial-out.fibo-fx-on-focus-visible:focus-visible::before,
2066
+ .fibo-fx-radial-out.fibo-fx-on-focus-within:focus-within::before,
2067
+ .group:hover .fibo-fx-radial-out.fibo-fx-on-group-hover::before,
2068
+ .group:active .fibo-fx-radial-out.fibo-fx-on-group-active::before,
2069
+ .group:focus-within .fibo-fx-radial-out.fibo-fx-on-group-focus-within::before { transform:scale(2); }
2070
+
2071
+ .fibo-fx-radial-in::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; border-radius:100%; transform:scale(2); opacity:0; }
2072
+ .fibo-fx-radial-in.fibo-fx-on-hover:hover,
2073
+ .fibo-fx-radial-in.fibo-fx-on-active:active,
2074
+ .fibo-fx-radial-in.fibo-fx-on-focus:focus,
2075
+ .fibo-fx-radial-in.fibo-fx-on-focus-visible:focus-visible,
2076
+ .fibo-fx-radial-in.fibo-fx-on-focus-within:focus-within,
2077
+ .group:hover .fibo-fx-radial-in.fibo-fx-on-group-hover,
2078
+ .group:active .fibo-fx-radial-in.fibo-fx-on-group-active,
2079
+ .group:focus-within .fibo-fx-radial-in.fibo-fx-on-group-focus-within { color:var(--fibo-fx-ink, inherit); }
2080
+ .fibo-fx-radial-in.fibo-fx-on-hover:hover::before,
2081
+ .fibo-fx-radial-in.fibo-fx-on-active:active::before,
2082
+ .fibo-fx-radial-in.fibo-fx-on-focus:focus::before,
2083
+ .fibo-fx-radial-in.fibo-fx-on-focus-visible:focus-visible::before,
2084
+ .fibo-fx-radial-in.fibo-fx-on-focus-within:focus-within::before,
2085
+ .group:hover .fibo-fx-radial-in.fibo-fx-on-group-hover::before,
2086
+ .group:active .fibo-fx-radial-in.fibo-fx-on-group-active::before,
2087
+ .group:focus-within .fibo-fx-radial-in.fibo-fx-on-group-focus-within::before { transform:scale(0); opacity:1; }
2088
+
2089
+ .fibo-fx-rectangle-in::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scale(1); }
2090
+ .fibo-fx-rectangle-in.fibo-fx-on-hover:hover::before,
2091
+ .fibo-fx-rectangle-in.fibo-fx-on-active:active::before,
2092
+ .fibo-fx-rectangle-in.fibo-fx-on-focus:focus::before,
2093
+ .fibo-fx-rectangle-in.fibo-fx-on-focus-visible:focus-visible::before,
2094
+ .fibo-fx-rectangle-in.fibo-fx-on-focus-within:focus-within::before,
2095
+ .group:hover .fibo-fx-rectangle-in.fibo-fx-on-group-hover::before,
2096
+ .group:active .fibo-fx-rectangle-in.fibo-fx-on-group-active::before,
2097
+ .group:focus-within .fibo-fx-rectangle-in.fibo-fx-on-group-focus-within::before { transform:scale(0); }
2098
+
2099
+ .fibo-fx-rectangle-out::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scale(0); }
2100
+ .fibo-fx-rectangle-out.fibo-fx-on-hover:hover::before,
2101
+ .fibo-fx-rectangle-out.fibo-fx-on-active:active::before,
2102
+ .fibo-fx-rectangle-out.fibo-fx-on-focus:focus::before,
2103
+ .fibo-fx-rectangle-out.fibo-fx-on-focus-visible:focus-visible::before,
2104
+ .fibo-fx-rectangle-out.fibo-fx-on-focus-within:focus-within::before,
2105
+ .group:hover .fibo-fx-rectangle-out.fibo-fx-on-group-hover::before,
2106
+ .group:active .fibo-fx-rectangle-out.fibo-fx-on-group-active::before,
2107
+ .group:focus-within .fibo-fx-rectangle-out.fibo-fx-on-group-focus-within::before { transform:scale(1); }
2108
+
2109
+ .fibo-fx-shutter-in-horizontal::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleX(1);transform-origin:100% 50%; }
2110
+ .fibo-fx-shutter-in-horizontal::after { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleX(1);transform-origin:0 50%;left:50%; }
2111
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-hover:hover::before,
2112
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-active:active::before,
2113
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-focus:focus::before,
2114
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-focus-visible:focus-visible::before,
2115
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-focus-within:focus-within::before,
2116
+ .group:hover .fibo-fx-shutter-in-horizontal.fibo-fx-on-group-hover::before,
2117
+ .group:active .fibo-fx-shutter-in-horizontal.fibo-fx-on-group-active::before,
2118
+ .group:focus-within .fibo-fx-shutter-in-horizontal.fibo-fx-on-group-focus-within::before { transform:scaleX(0); }
2119
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-hover:hover::after,
2120
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-active:active::after,
2121
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-focus:focus::after,
2122
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-focus-visible:focus-visible::after,
2123
+ .fibo-fx-shutter-in-horizontal.fibo-fx-on-focus-within:focus-within::after,
2124
+ .group:hover .fibo-fx-shutter-in-horizontal.fibo-fx-on-group-hover::after,
2125
+ .group:active .fibo-fx-shutter-in-horizontal.fibo-fx-on-group-active::after,
2126
+ .group:focus-within .fibo-fx-shutter-in-horizontal.fibo-fx-on-group-focus-within::after { transform:scaleX(0); }
2127
+
2128
+ .fibo-fx-shutter-out-horizontal::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleX(0);transform-origin:100% 50%; }
2129
+ .fibo-fx-shutter-out-horizontal::after { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleX(0);transform-origin:0 50%;left:50%; }
2130
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-hover:hover::before,
2131
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-active:active::before,
2132
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-focus:focus::before,
2133
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-focus-visible:focus-visible::before,
2134
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-focus-within:focus-within::before,
2135
+ .group:hover .fibo-fx-shutter-out-horizontal.fibo-fx-on-group-hover::before,
2136
+ .group:active .fibo-fx-shutter-out-horizontal.fibo-fx-on-group-active::before,
2137
+ .group:focus-within .fibo-fx-shutter-out-horizontal.fibo-fx-on-group-focus-within::before { transform:scaleX(1); }
2138
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-hover:hover::after,
2139
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-active:active::after,
2140
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-focus:focus::after,
2141
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-focus-visible:focus-visible::after,
2142
+ .fibo-fx-shutter-out-horizontal.fibo-fx-on-focus-within:focus-within::after,
2143
+ .group:hover .fibo-fx-shutter-out-horizontal.fibo-fx-on-group-hover::after,
2144
+ .group:active .fibo-fx-shutter-out-horizontal.fibo-fx-on-group-active::after,
2145
+ .group:focus-within .fibo-fx-shutter-out-horizontal.fibo-fx-on-group-focus-within::after { transform:scaleX(1); }
2146
+
2147
+ .fibo-fx-shutter-in-vertical::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleY(1);transform-origin:50% 100%; }
2148
+ .fibo-fx-shutter-in-vertical::after { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleY(1);transform-origin:50% 0;top:50%; }
2149
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-hover:hover::before,
2150
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-active:active::before,
2151
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-focus:focus::before,
2152
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-focus-visible:focus-visible::before,
2153
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-focus-within:focus-within::before,
2154
+ .group:hover .fibo-fx-shutter-in-vertical.fibo-fx-on-group-hover::before,
2155
+ .group:active .fibo-fx-shutter-in-vertical.fibo-fx-on-group-active::before,
2156
+ .group:focus-within .fibo-fx-shutter-in-vertical.fibo-fx-on-group-focus-within::before { transform:scaleY(0); }
2157
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-hover:hover::after,
2158
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-active:active::after,
2159
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-focus:focus::after,
2160
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-focus-visible:focus-visible::after,
2161
+ .fibo-fx-shutter-in-vertical.fibo-fx-on-focus-within:focus-within::after,
2162
+ .group:hover .fibo-fx-shutter-in-vertical.fibo-fx-on-group-hover::after,
2163
+ .group:active .fibo-fx-shutter-in-vertical.fibo-fx-on-group-active::after,
2164
+ .group:focus-within .fibo-fx-shutter-in-vertical.fibo-fx-on-group-focus-within::after { transform:scaleY(0); }
2165
+
2166
+ .fibo-fx-shutter-out-vertical::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleY(0);transform-origin:50% 100%; }
2167
+ .fibo-fx-shutter-out-vertical::after { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--fibo-fx-fill, currentColor); transition-property: transform, opacity, border-radius, box-shadow, top, right, bottom, left; transition-duration: 0.3s; transition-timing-function: ease-out; transform:scaleY(0);transform-origin:50% 0;top:50%; }
2168
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-hover:hover::before,
2169
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-active:active::before,
2170
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-focus:focus::before,
2171
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-focus-visible:focus-visible::before,
2172
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-focus-within:focus-within::before,
2173
+ .group:hover .fibo-fx-shutter-out-vertical.fibo-fx-on-group-hover::before,
2174
+ .group:active .fibo-fx-shutter-out-vertical.fibo-fx-on-group-active::before,
2175
+ .group:focus-within .fibo-fx-shutter-out-vertical.fibo-fx-on-group-focus-within::before { transform:scaleY(1); }
2176
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-hover:hover::after,
2177
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-active:active::after,
2178
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-focus:focus::after,
2179
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-focus-visible:focus-visible::after,
2180
+ .fibo-fx-shutter-out-vertical.fibo-fx-on-focus-within:focus-within::after,
2181
+ .group:hover .fibo-fx-shutter-out-vertical.fibo-fx-on-group-hover::after,
2182
+ .group:active .fibo-fx-shutter-out-vertical.fibo-fx-on-group-active::after,
2183
+ .group:focus-within .fibo-fx-shutter-out-vertical.fibo-fx-on-group-focus-within::after { transform:scaleY(1); }
2184
+
2185
+ .fibo-fx-icon-back { transition-duration:.3s;transition-property:transform; }
2186
+ .fibo-fx-icon-back.fibo-fx-on-hover:hover,
2187
+ .fibo-fx-icon-back.fibo-fx-on-active:active,
2188
+ .fibo-fx-icon-back.fibo-fx-on-focus:focus,
2189
+ .fibo-fx-icon-back.fibo-fx-on-focus-visible:focus-visible,
2190
+ .fibo-fx-icon-back.fibo-fx-on-focus-within:focus-within,
2191
+ .group:hover .fibo-fx-icon-back.fibo-fx-on-group-hover,
2192
+ .group:active .fibo-fx-icon-back.fibo-fx-on-group-active,
2193
+ .group:focus-within .fibo-fx-icon-back.fibo-fx-on-group-focus-within { transform:translateX(-6px); }
2194
+
2195
+ .fibo-fx-icon-forward { transition-duration:.3s;transition-property:transform; }
2196
+ .fibo-fx-icon-forward.fibo-fx-on-hover:hover,
2197
+ .fibo-fx-icon-forward.fibo-fx-on-active:active,
2198
+ .fibo-fx-icon-forward.fibo-fx-on-focus:focus,
2199
+ .fibo-fx-icon-forward.fibo-fx-on-focus-visible:focus-visible,
2200
+ .fibo-fx-icon-forward.fibo-fx-on-focus-within:focus-within,
2201
+ .group:hover .fibo-fx-icon-forward.fibo-fx-on-group-hover,
2202
+ .group:active .fibo-fx-icon-forward.fibo-fx-on-group-active,
2203
+ .group:focus-within .fibo-fx-icon-forward.fibo-fx-on-group-focus-within { transform:translateX(6px); }
2204
+
2205
+ .fibo-fx-icon-down { transition-duration:.3s;transition-property:transform; }
2206
+ .fibo-fx-icon-down.fibo-fx-on-hover:hover,
2207
+ .fibo-fx-icon-down.fibo-fx-on-active:active,
2208
+ .fibo-fx-icon-down.fibo-fx-on-focus:focus,
2209
+ .fibo-fx-icon-down.fibo-fx-on-focus-visible:focus-visible,
2210
+ .fibo-fx-icon-down.fibo-fx-on-focus-within:focus-within,
2211
+ .group:hover .fibo-fx-icon-down.fibo-fx-on-group-hover,
2212
+ .group:active .fibo-fx-icon-down.fibo-fx-on-group-active,
2213
+ .group:focus-within .fibo-fx-icon-down.fibo-fx-on-group-focus-within { transform:translateY(6px); }
2214
+
2215
+ .fibo-fx-icon-up { transition-duration:.3s;transition-property:transform; }
2216
+ .fibo-fx-icon-up.fibo-fx-on-hover:hover,
2217
+ .fibo-fx-icon-up.fibo-fx-on-active:active,
2218
+ .fibo-fx-icon-up.fibo-fx-on-focus:focus,
2219
+ .fibo-fx-icon-up.fibo-fx-on-focus-visible:focus-visible,
2220
+ .fibo-fx-icon-up.fibo-fx-on-focus-within:focus-within,
2221
+ .group:hover .fibo-fx-icon-up.fibo-fx-on-group-hover,
2222
+ .group:active .fibo-fx-icon-up.fibo-fx-on-group-active,
2223
+ .group:focus-within .fibo-fx-icon-up.fibo-fx-on-group-focus-within { transform:translateY(-6px); }
2224
+
2225
+ .fibo-fx-icon-grow { transition-duration:.3s;transition-property:transform; }
2226
+ .fibo-fx-icon-grow.fibo-fx-on-hover:hover,
2227
+ .fibo-fx-icon-grow.fibo-fx-on-active:active,
2228
+ .fibo-fx-icon-grow.fibo-fx-on-focus:focus,
2229
+ .fibo-fx-icon-grow.fibo-fx-on-focus-visible:focus-visible,
2230
+ .fibo-fx-icon-grow.fibo-fx-on-focus-within:focus-within,
2231
+ .group:hover .fibo-fx-icon-grow.fibo-fx-on-group-hover,
2232
+ .group:active .fibo-fx-icon-grow.fibo-fx-on-group-active,
2233
+ .group:focus-within .fibo-fx-icon-grow.fibo-fx-on-group-focus-within { transform:scale(1.3); }
2234
+
2235
+ .fibo-fx-icon-shrink { transition-duration:.3s;transition-property:transform; }
2236
+ .fibo-fx-icon-shrink.fibo-fx-on-hover:hover,
2237
+ .fibo-fx-icon-shrink.fibo-fx-on-active:active,
2238
+ .fibo-fx-icon-shrink.fibo-fx-on-focus:focus,
2239
+ .fibo-fx-icon-shrink.fibo-fx-on-focus-visible:focus-visible,
2240
+ .fibo-fx-icon-shrink.fibo-fx-on-focus-within:focus-within,
2241
+ .group:hover .fibo-fx-icon-shrink.fibo-fx-on-group-hover,
2242
+ .group:active .fibo-fx-icon-shrink.fibo-fx-on-group-active,
2243
+ .group:focus-within .fibo-fx-icon-shrink.fibo-fx-on-group-focus-within { transform:scale(0.8); }
2244
+
2245
+ .fibo-fx-icon-float { transition-duration:.3s;transition-property:transform; }
2246
+ .fibo-fx-icon-float.fibo-fx-on-hover:hover,
2247
+ .fibo-fx-icon-float.fibo-fx-on-active:active,
2248
+ .fibo-fx-icon-float.fibo-fx-on-focus:focus,
2249
+ .fibo-fx-icon-float.fibo-fx-on-focus-visible:focus-visible,
2250
+ .fibo-fx-icon-float.fibo-fx-on-focus-within:focus-within,
2251
+ .group:hover .fibo-fx-icon-float.fibo-fx-on-group-hover,
2252
+ .group:active .fibo-fx-icon-float.fibo-fx-on-group-active,
2253
+ .group:focus-within .fibo-fx-icon-float.fibo-fx-on-group-focus-within { transform:translateY(-6px); }
2254
+
2255
+ .fibo-fx-icon-sink { transition-duration:.3s;transition-property:transform; }
2256
+ .fibo-fx-icon-sink.fibo-fx-on-hover:hover,
2257
+ .fibo-fx-icon-sink.fibo-fx-on-active:active,
2258
+ .fibo-fx-icon-sink.fibo-fx-on-focus:focus,
2259
+ .fibo-fx-icon-sink.fibo-fx-on-focus-visible:focus-visible,
2260
+ .fibo-fx-icon-sink.fibo-fx-on-focus-within:focus-within,
2261
+ .group:hover .fibo-fx-icon-sink.fibo-fx-on-group-hover,
2262
+ .group:active .fibo-fx-icon-sink.fibo-fx-on-group-active,
2263
+ .group:focus-within .fibo-fx-icon-sink.fibo-fx-on-group-focus-within { transform:translateY(6px); }
2264
+
2265
+ .fibo-fx-icon-rotate { transition-duration:.3s;transition-property:transform; }
2266
+ .fibo-fx-icon-rotate.fibo-fx-on-hover:hover,
2267
+ .fibo-fx-icon-rotate.fibo-fx-on-active:active,
2268
+ .fibo-fx-icon-rotate.fibo-fx-on-focus:focus,
2269
+ .fibo-fx-icon-rotate.fibo-fx-on-focus-visible:focus-visible,
2270
+ .fibo-fx-icon-rotate.fibo-fx-on-focus-within:focus-within,
2271
+ .group:hover .fibo-fx-icon-rotate.fibo-fx-on-group-hover,
2272
+ .group:active .fibo-fx-icon-rotate.fibo-fx-on-group-active,
2273
+ .group:focus-within .fibo-fx-icon-rotate.fibo-fx-on-group-focus-within { transform:rotate(90deg); }
2274
+
2275
+ .fibo-fx-icon-grow-rotate { transition-duration:.3s;transition-property:transform; }
2276
+ .fibo-fx-icon-grow-rotate.fibo-fx-on-hover:hover,
2277
+ .fibo-fx-icon-grow-rotate.fibo-fx-on-active:active,
2278
+ .fibo-fx-icon-grow-rotate.fibo-fx-on-focus:focus,
2279
+ .fibo-fx-icon-grow-rotate.fibo-fx-on-focus-visible:focus-visible,
2280
+ .fibo-fx-icon-grow-rotate.fibo-fx-on-focus-within:focus-within,
2281
+ .group:hover .fibo-fx-icon-grow-rotate.fibo-fx-on-group-hover,
2282
+ .group:active .fibo-fx-icon-grow-rotate.fibo-fx-on-group-active,
2283
+ .group:focus-within .fibo-fx-icon-grow-rotate.fibo-fx-on-group-focus-within { transform:scale(1.3) rotate(90deg); }
2284
+
2285
+ .fibo-fx-icon-fade { transition-duration:.3s;transition-property:opacity; }
2286
+ .fibo-fx-icon-fade.fibo-fx-on-hover:hover,
2287
+ .fibo-fx-icon-fade.fibo-fx-on-active:active,
2288
+ .fibo-fx-icon-fade.fibo-fx-on-focus:focus,
2289
+ .fibo-fx-icon-fade.fibo-fx-on-focus-visible:focus-visible,
2290
+ .fibo-fx-icon-fade.fibo-fx-on-focus-within:focus-within,
2291
+ .group:hover .fibo-fx-icon-fade.fibo-fx-on-group-hover,
2292
+ .group:active .fibo-fx-icon-fade.fibo-fx-on-group-active,
2293
+ .group:focus-within .fibo-fx-icon-fade.fibo-fx-on-group-focus-within { opacity:0; }
2294
+
2295
+ .fibo-fx-icon-spin.fibo-fx-on-hover:hover,
2296
+ .fibo-fx-icon-spin.fibo-fx-on-active:active,
2297
+ .fibo-fx-icon-spin.fibo-fx-on-focus:focus,
2298
+ .fibo-fx-icon-spin.fibo-fx-on-focus-visible:focus-visible,
2299
+ .fibo-fx-icon-spin.fibo-fx-on-focus-within:focus-within,
2300
+ .group:hover .fibo-fx-icon-spin.fibo-fx-on-group-hover,
2301
+ .group:active .fibo-fx-icon-spin.fibo-fx-on-group-active,
2302
+ .group:focus-within .fibo-fx-icon-spin.fibo-fx-on-group-focus-within { transition-duration:1s;transform:rotate(360deg); }
2303
+
2304
+ .fibo-fx-icon-drop.fibo-fx-on-hover:hover,
2305
+ .fibo-fx-icon-drop.fibo-fx-on-active:active,
2306
+ .fibo-fx-icon-drop.fibo-fx-on-focus:focus,
2307
+ .fibo-fx-icon-drop.fibo-fx-on-focus-visible:focus-visible,
2308
+ .fibo-fx-icon-drop.fibo-fx-on-focus-within:focus-within,
2309
+ .group:hover .fibo-fx-icon-drop.fibo-fx-on-group-hover,
2310
+ .group:active .fibo-fx-icon-drop.fibo-fx-on-group-active,
2311
+ .group:focus-within .fibo-fx-icon-drop.fibo-fx-on-group-focus-within { animation-name:fibo-fx-icon-drop;animation-duration:.5s;animation-timing-function:ease-out;animation-iteration-count:1;animation-fill-mode:forwards; }
2312
+
2313
+ .fibo-fx-icon-float-away { transition-duration:.3s;transition-property:transform,opacity; }
2314
+ .fibo-fx-icon-float-away.fibo-fx-on-hover:hover,
2315
+ .fibo-fx-icon-float-away.fibo-fx-on-active:active,
2316
+ .fibo-fx-icon-float-away.fibo-fx-on-focus:focus,
2317
+ .fibo-fx-icon-float-away.fibo-fx-on-focus-visible:focus-visible,
2318
+ .fibo-fx-icon-float-away.fibo-fx-on-focus-within:focus-within,
2319
+ .group:hover .fibo-fx-icon-float-away.fibo-fx-on-group-hover,
2320
+ .group:active .fibo-fx-icon-float-away.fibo-fx-on-group-active,
2321
+ .group:focus-within .fibo-fx-icon-float-away.fibo-fx-on-group-focus-within { transform:translateY(-12px);opacity:0; }
2322
+
2323
+ .fibo-fx-icon-sink-away { transition-duration:.3s;transition-property:transform,opacity; }
2324
+ .fibo-fx-icon-sink-away.fibo-fx-on-hover:hover,
2325
+ .fibo-fx-icon-sink-away.fibo-fx-on-active:active,
2326
+ .fibo-fx-icon-sink-away.fibo-fx-on-focus:focus,
2327
+ .fibo-fx-icon-sink-away.fibo-fx-on-focus-visible:focus-visible,
2328
+ .fibo-fx-icon-sink-away.fibo-fx-on-focus-within:focus-within,
2329
+ .group:hover .fibo-fx-icon-sink-away.fibo-fx-on-group-hover,
2330
+ .group:active .fibo-fx-icon-sink-away.fibo-fx-on-group-active,
2331
+ .group:focus-within .fibo-fx-icon-sink-away.fibo-fx-on-group-focus-within { transform:translateY(12px);opacity:0; }
2332
+
2333
+ .fibo-fx-icon-pulse.fibo-fx-on-hover:hover,
2334
+ .fibo-fx-icon-pulse.fibo-fx-on-active:active,
2335
+ .fibo-fx-icon-pulse.fibo-fx-on-focus:focus,
2336
+ .fibo-fx-icon-pulse.fibo-fx-on-focus-visible:focus-visible,
2337
+ .fibo-fx-icon-pulse.fibo-fx-on-focus-within:focus-within,
2338
+ .group:hover .fibo-fx-icon-pulse.fibo-fx-on-group-hover,
2339
+ .group:active .fibo-fx-icon-pulse.fibo-fx-on-group-active,
2340
+ .group:focus-within .fibo-fx-icon-pulse.fibo-fx-on-group-focus-within { animation-name:fibo-fx-pulse;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite; }
2341
+
2342
+ .fibo-fx-icon-pulse-grow.fibo-fx-on-hover:hover,
2343
+ .fibo-fx-icon-pulse-grow.fibo-fx-on-active:active,
2344
+ .fibo-fx-icon-pulse-grow.fibo-fx-on-focus:focus,
2345
+ .fibo-fx-icon-pulse-grow.fibo-fx-on-focus-visible:focus-visible,
2346
+ .fibo-fx-icon-pulse-grow.fibo-fx-on-focus-within:focus-within,
2347
+ .group:hover .fibo-fx-icon-pulse-grow.fibo-fx-on-group-hover,
2348
+ .group:active .fibo-fx-icon-pulse-grow.fibo-fx-on-group-active,
2349
+ .group:focus-within .fibo-fx-icon-pulse-grow.fibo-fx-on-group-focus-within { animation-name:fibo-fx-pulse-grow;animation-duration:.3s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate; }
2350
+
2351
+ .fibo-fx-icon-pulse-shrink.fibo-fx-on-hover:hover,
2352
+ .fibo-fx-icon-pulse-shrink.fibo-fx-on-active:active,
2353
+ .fibo-fx-icon-pulse-shrink.fibo-fx-on-focus:focus,
2354
+ .fibo-fx-icon-pulse-shrink.fibo-fx-on-focus-visible:focus-visible,
2355
+ .fibo-fx-icon-pulse-shrink.fibo-fx-on-focus-within:focus-within,
2356
+ .group:hover .fibo-fx-icon-pulse-shrink.fibo-fx-on-group-hover,
2357
+ .group:active .fibo-fx-icon-pulse-shrink.fibo-fx-on-group-active,
2358
+ .group:focus-within .fibo-fx-icon-pulse-shrink.fibo-fx-on-group-focus-within { animation-name:fibo-fx-pulse-shrink;animation-duration:.3s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate; }
2359
+
2360
+ .fibo-fx-icon-push.fibo-fx-on-hover:hover,
2361
+ .fibo-fx-icon-push.fibo-fx-on-active:active,
2362
+ .fibo-fx-icon-push.fibo-fx-on-focus:focus,
2363
+ .fibo-fx-icon-push.fibo-fx-on-focus-visible:focus-visible,
2364
+ .fibo-fx-icon-push.fibo-fx-on-focus-within:focus-within,
2365
+ .group:hover .fibo-fx-icon-push.fibo-fx-on-group-hover,
2366
+ .group:active .fibo-fx-icon-push.fibo-fx-on-group-active,
2367
+ .group:focus-within .fibo-fx-icon-push.fibo-fx-on-group-focus-within { animation-name:fibo-fx-push;animation-duration:.3s;animation-iteration-count:1; }
2368
+
2369
+ .fibo-fx-icon-pop.fibo-fx-on-hover:hover,
2370
+ .fibo-fx-icon-pop.fibo-fx-on-active:active,
2371
+ .fibo-fx-icon-pop.fibo-fx-on-focus:focus,
2372
+ .fibo-fx-icon-pop.fibo-fx-on-focus-visible:focus-visible,
2373
+ .fibo-fx-icon-pop.fibo-fx-on-focus-within:focus-within,
2374
+ .group:hover .fibo-fx-icon-pop.fibo-fx-on-group-hover,
2375
+ .group:active .fibo-fx-icon-pop.fibo-fx-on-group-active,
2376
+ .group:focus-within .fibo-fx-icon-pop.fibo-fx-on-group-focus-within { animation-name:fibo-fx-pop;animation-duration:.3s;animation-iteration-count:1; }
2377
+
2378
+ .fibo-fx-icon-bounce.fibo-fx-on-hover:hover,
2379
+ .fibo-fx-icon-bounce.fibo-fx-on-active:active,
2380
+ .fibo-fx-icon-bounce.fibo-fx-on-focus:focus,
2381
+ .fibo-fx-icon-bounce.fibo-fx-on-focus-visible:focus-visible,
2382
+ .fibo-fx-icon-bounce.fibo-fx-on-focus-within:focus-within,
2383
+ .group:hover .fibo-fx-icon-bounce.fibo-fx-on-group-hover,
2384
+ .group:active .fibo-fx-icon-bounce.fibo-fx-on-group-active,
2385
+ .group:focus-within .fibo-fx-icon-bounce.fibo-fx-on-group-focus-within { animation-name:fibo-fx-bounce-in;animation-duration:.5s;animation-iteration-count:1; }
2386
+
2387
+ .fibo-fx-icon-bob.fibo-fx-on-hover:hover,
2388
+ .fibo-fx-icon-bob.fibo-fx-on-active:active,
2389
+ .fibo-fx-icon-bob.fibo-fx-on-focus:focus,
2390
+ .fibo-fx-icon-bob.fibo-fx-on-focus-visible:focus-visible,
2391
+ .fibo-fx-icon-bob.fibo-fx-on-focus-within:focus-within,
2392
+ .group:hover .fibo-fx-icon-bob.fibo-fx-on-group-hover,
2393
+ .group:active .fibo-fx-icon-bob.fibo-fx-on-group-active,
2394
+ .group:focus-within .fibo-fx-icon-bob.fibo-fx-on-group-focus-within { animation-name:fibo-fx-icon-bob;animation-duration:.75s;animation-timing-function:ease-in-out;animation-iteration-count:infinite; }
2395
+
2396
+ .fibo-fx-icon-hang.fibo-fx-on-hover:hover,
2397
+ .fibo-fx-icon-hang.fibo-fx-on-active:active,
2398
+ .fibo-fx-icon-hang.fibo-fx-on-focus:focus,
2399
+ .fibo-fx-icon-hang.fibo-fx-on-focus-visible:focus-visible,
2400
+ .fibo-fx-icon-hang.fibo-fx-on-focus-within:focus-within,
2401
+ .group:hover .fibo-fx-icon-hang.fibo-fx-on-group-hover,
2402
+ .group:active .fibo-fx-icon-hang.fibo-fx-on-group-active,
2403
+ .group:focus-within .fibo-fx-icon-hang.fibo-fx-on-group-focus-within { animation-name:fibo-fx-icon-hang;animation-duration:.75s;animation-timing-function:ease-in-out;animation-iteration-count:infinite; }
2404
+
2405
+ .fibo-fx-icon-wobble-horizontal.fibo-fx-on-hover:hover,
2406
+ .fibo-fx-icon-wobble-horizontal.fibo-fx-on-active:active,
2407
+ .fibo-fx-icon-wobble-horizontal.fibo-fx-on-focus:focus,
2408
+ .fibo-fx-icon-wobble-horizontal.fibo-fx-on-focus-visible:focus-visible,
2409
+ .fibo-fx-icon-wobble-horizontal.fibo-fx-on-focus-within:focus-within,
2410
+ .group:hover .fibo-fx-icon-wobble-horizontal.fibo-fx-on-group-hover,
2411
+ .group:active .fibo-fx-icon-wobble-horizontal.fibo-fx-on-group-active,
2412
+ .group:focus-within .fibo-fx-icon-wobble-horizontal.fibo-fx-on-group-focus-within { animation-name:fibo-fx-wobble-h;animation-duration:1s;animation-iteration-count:1; }
2413
+
2414
+ .fibo-fx-icon-wobble-vertical.fibo-fx-on-hover:hover,
2415
+ .fibo-fx-icon-wobble-vertical.fibo-fx-on-active:active,
2416
+ .fibo-fx-icon-wobble-vertical.fibo-fx-on-focus:focus,
2417
+ .fibo-fx-icon-wobble-vertical.fibo-fx-on-focus-visible:focus-visible,
2418
+ .fibo-fx-icon-wobble-vertical.fibo-fx-on-focus-within:focus-within,
2419
+ .group:hover .fibo-fx-icon-wobble-vertical.fibo-fx-on-group-hover,
2420
+ .group:active .fibo-fx-icon-wobble-vertical.fibo-fx-on-group-active,
2421
+ .group:focus-within .fibo-fx-icon-wobble-vertical.fibo-fx-on-group-focus-within { animation-name:fibo-fx-wobble-v;animation-duration:1s;animation-iteration-count:1; }
2422
+
2423
+ .fibo-fx-icon-buzz.fibo-fx-on-hover:hover,
2424
+ .fibo-fx-icon-buzz.fibo-fx-on-active:active,
2425
+ .fibo-fx-icon-buzz.fibo-fx-on-focus:focus,
2426
+ .fibo-fx-icon-buzz.fibo-fx-on-focus-visible:focus-visible,
2427
+ .fibo-fx-icon-buzz.fibo-fx-on-focus-within:focus-within,
2428
+ .group:hover .fibo-fx-icon-buzz.fibo-fx-on-group-hover,
2429
+ .group:active .fibo-fx-icon-buzz.fibo-fx-on-group-active,
2430
+ .group:focus-within .fibo-fx-icon-buzz.fibo-fx-on-group-focus-within { animation-name:fibo-fx-icon-buzz;animation-duration:.15s;animation-iteration-count:infinite; }
2431
+
2432
+ .fibo-fx-icon-buzz-out.fibo-fx-on-hover:hover,
2433
+ .fibo-fx-icon-buzz-out.fibo-fx-on-active:active,
2434
+ .fibo-fx-icon-buzz-out.fibo-fx-on-focus:focus,
2435
+ .fibo-fx-icon-buzz-out.fibo-fx-on-focus-visible:focus-visible,
2436
+ .fibo-fx-icon-buzz-out.fibo-fx-on-focus-within:focus-within,
2437
+ .group:hover .fibo-fx-icon-buzz-out.fibo-fx-on-group-hover,
2438
+ .group:active .fibo-fx-icon-buzz-out.fibo-fx-on-group-active,
2439
+ .group:focus-within .fibo-fx-icon-buzz-out.fibo-fx-on-group-focus-within { animation-name:fibo-fx-buzz-out;animation-duration:.75s;animation-iteration-count:1; }
2440
+
2441
+ .fibo-fx-border-fade { transition-duration:.3s;transition-property:box-shadow;box-shadow:inset 0 0 0 4px var(--fibo-fx-fill,currentColor); }
2442
+ .fibo-fx-border-fade.fibo-fx-on-hover:hover,
2443
+ .fibo-fx-border-fade.fibo-fx-on-active:active,
2444
+ .fibo-fx-border-fade.fibo-fx-on-focus:focus,
2445
+ .fibo-fx-border-fade.fibo-fx-on-focus-visible:focus-visible,
2446
+ .fibo-fx-border-fade.fibo-fx-on-focus-within:focus-within,
2447
+ .group:hover .fibo-fx-border-fade.fibo-fx-on-group-hover,
2448
+ .group:active .fibo-fx-border-fade.fibo-fx-on-group-active,
2449
+ .group:focus-within .fibo-fx-border-fade.fibo-fx-on-group-focus-within { box-shadow:inset 0 0 0 4px transparent; }
2450
+
2451
+ .fibo-fx-hollow { transition-duration:.3s;transition-property:background,box-shadow;box-shadow:inset 0 0 0 4px var(--fibo-fx-fill,currentColor); }
2452
+ .fibo-fx-hollow.fibo-fx-on-hover:hover,
2453
+ .fibo-fx-hollow.fibo-fx-on-active:active,
2454
+ .fibo-fx-hollow.fibo-fx-on-focus:focus,
2455
+ .fibo-fx-hollow.fibo-fx-on-focus-visible:focus-visible,
2456
+ .fibo-fx-hollow.fibo-fx-on-focus-within:focus-within,
2457
+ .group:hover .fibo-fx-hollow.fibo-fx-on-group-hover,
2458
+ .group:active .fibo-fx-hollow.fibo-fx-on-group-active,
2459
+ .group:focus-within .fibo-fx-hollow.fibo-fx-on-group-focus-within { background:transparent;box-shadow:inset 0 0 0 4px var(--fibo-fx-fill,currentColor); }
2460
+
2461
+ .fibo-fx-trim { position:relative; }
2462
+ .fibo-fx-trim::before { content:"";position:absolute;inset:4px;border:2px solid transparent;transition-duration:.3s; }
2463
+ .fibo-fx-trim.fibo-fx-on-hover:hover::before,
2464
+ .fibo-fx-trim.fibo-fx-on-active:active::before,
2465
+ .fibo-fx-trim.fibo-fx-on-focus:focus::before,
2466
+ .fibo-fx-trim.fibo-fx-on-focus-visible:focus-visible::before,
2467
+ .fibo-fx-trim.fibo-fx-on-focus-within:focus-within::before,
2468
+ .group:hover .fibo-fx-trim.fibo-fx-on-group-hover::before,
2469
+ .group:active .fibo-fx-trim.fibo-fx-on-group-active::before,
2470
+ .group:focus-within .fibo-fx-trim.fibo-fx-on-group-focus-within::before { border-color:var(--fibo-fx-fill,currentColor); }
2471
+
2472
+ .fibo-fx-ripple-out { position:relative; }
2473
+ .fibo-fx-ripple-out::before { content:"";position:absolute;border:var(--fibo-fx-fill,currentColor) solid 4px;top:0;right:0;bottom:0;left:0;opacity:1; }
2474
+ .fibo-fx-ripple-out.fibo-fx-on-hover:hover::before,
2475
+ .fibo-fx-ripple-out.fibo-fx-on-active:active::before,
2476
+ .fibo-fx-ripple-out.fibo-fx-on-focus:focus::before,
2477
+ .fibo-fx-ripple-out.fibo-fx-on-focus-visible:focus-visible::before,
2478
+ .fibo-fx-ripple-out.fibo-fx-on-focus-within:focus-within::before,
2479
+ .group:hover .fibo-fx-ripple-out.fibo-fx-on-group-hover::before,
2480
+ .group:active .fibo-fx-ripple-out.fibo-fx-on-group-active::before,
2481
+ .group:focus-within .fibo-fx-ripple-out.fibo-fx-on-group-focus-within::before { animation-name:fibo-fx-ripple-out;animation-duration:1s;animation-iteration-count:1; }
2482
+
2483
+ .fibo-fx-ripple-in { position:relative; }
2484
+ .fibo-fx-ripple-in::before { content:"";position:absolute;border:var(--fibo-fx-fill,currentColor) solid 4px;top:-12px;right:-12px;bottom:-12px;left:-12px;opacity:0; }
2485
+ .fibo-fx-ripple-in.fibo-fx-on-hover:hover::before,
2486
+ .fibo-fx-ripple-in.fibo-fx-on-active:active::before,
2487
+ .fibo-fx-ripple-in.fibo-fx-on-focus:focus::before,
2488
+ .fibo-fx-ripple-in.fibo-fx-on-focus-visible:focus-visible::before,
2489
+ .fibo-fx-ripple-in.fibo-fx-on-focus-within:focus-within::before,
2490
+ .group:hover .fibo-fx-ripple-in.fibo-fx-on-group-hover::before,
2491
+ .group:active .fibo-fx-ripple-in.fibo-fx-on-group-active::before,
2492
+ .group:focus-within .fibo-fx-ripple-in.fibo-fx-on-group-focus-within::before { animation-name:fibo-fx-ripple-in;animation-duration:1s;animation-iteration-count:1; }
2493
+
2494
+ .fibo-fx-outline-out { position:relative; }
2495
+ .fibo-fx-outline-out::before { content:"";position:absolute;inset:0;border:2px solid transparent;transition-duration:.3s; }
2496
+ .fibo-fx-outline-out.fibo-fx-on-hover:hover::before,
2497
+ .fibo-fx-outline-out.fibo-fx-on-active:active::before,
2498
+ .fibo-fx-outline-out.fibo-fx-on-focus:focus::before,
2499
+ .fibo-fx-outline-out.fibo-fx-on-focus-visible:focus-visible::before,
2500
+ .fibo-fx-outline-out.fibo-fx-on-focus-within:focus-within::before,
2501
+ .group:hover .fibo-fx-outline-out.fibo-fx-on-group-hover::before,
2502
+ .group:active .fibo-fx-outline-out.fibo-fx-on-group-active::before,
2503
+ .group:focus-within .fibo-fx-outline-out.fibo-fx-on-group-focus-within::before { inset:-8px;border-color:var(--fibo-fx-fill,currentColor); }
2504
+
2505
+ .fibo-fx-outline-in { position:relative; }
2506
+ .fibo-fx-outline-in::before { content:"";position:absolute;inset:-8px;border:2px solid transparent;transition-duration:.3s; }
2507
+ .fibo-fx-outline-in.fibo-fx-on-hover:hover::before,
2508
+ .fibo-fx-outline-in.fibo-fx-on-active:active::before,
2509
+ .fibo-fx-outline-in.fibo-fx-on-focus:focus::before,
2510
+ .fibo-fx-outline-in.fibo-fx-on-focus-visible:focus-visible::before,
2511
+ .fibo-fx-outline-in.fibo-fx-on-focus-within:focus-within::before,
2512
+ .group:hover .fibo-fx-outline-in.fibo-fx-on-group-hover::before,
2513
+ .group:active .fibo-fx-outline-in.fibo-fx-on-group-active::before,
2514
+ .group:focus-within .fibo-fx-outline-in.fibo-fx-on-group-focus-within::before { inset:0;border-color:var(--fibo-fx-fill,currentColor); }
2515
+
2516
+ .fibo-fx-round-corners { transition-duration:.3s;transition-property:border-radius; }
2517
+ .fibo-fx-round-corners.fibo-fx-on-hover:hover,
2518
+ .fibo-fx-round-corners.fibo-fx-on-active:active,
2519
+ .fibo-fx-round-corners.fibo-fx-on-focus:focus,
2520
+ .fibo-fx-round-corners.fibo-fx-on-focus-visible:focus-visible,
2521
+ .fibo-fx-round-corners.fibo-fx-on-focus-within:focus-within,
2522
+ .group:hover .fibo-fx-round-corners.fibo-fx-on-group-hover,
2523
+ .group:active .fibo-fx-round-corners.fibo-fx-on-group-active,
2524
+ .group:focus-within .fibo-fx-round-corners.fibo-fx-on-group-focus-within { border-radius:1em; }
2525
+
2526
+ .fibo-fx-underline-from-left { position:relative; }
2527
+ .fibo-fx-underline-from-left::before { content:"";position:absolute;left:0;right:0;bottom:0;height:2px;top:auto;background:var(--fibo-fx-fill,currentColor);transform:scaleX(0);transform-origin:0 50%;transition-duration:.3s; }
2528
+ .fibo-fx-underline-from-left.fibo-fx-on-hover:hover::before,
2529
+ .fibo-fx-underline-from-left.fibo-fx-on-active:active::before,
2530
+ .fibo-fx-underline-from-left.fibo-fx-on-focus:focus::before,
2531
+ .fibo-fx-underline-from-left.fibo-fx-on-focus-visible:focus-visible::before,
2532
+ .fibo-fx-underline-from-left.fibo-fx-on-focus-within:focus-within::before,
2533
+ .group:hover .fibo-fx-underline-from-left.fibo-fx-on-group-hover::before,
2534
+ .group:active .fibo-fx-underline-from-left.fibo-fx-on-group-active::before,
2535
+ .group:focus-within .fibo-fx-underline-from-left.fibo-fx-on-group-focus-within::before { transform:scaleX(1) scaleY(1); }
2536
+
2537
+ .fibo-fx-underline-from-center { position:relative; }
2538
+ .fibo-fx-underline-from-center::before { content:"";position:absolute;left:0;right:0;bottom:0;height:2px;top:auto;background:var(--fibo-fx-fill,currentColor);transform:scaleX(0);transform-origin:50% 50%;transition-duration:.3s; }
2539
+ .fibo-fx-underline-from-center.fibo-fx-on-hover:hover::before,
2540
+ .fibo-fx-underline-from-center.fibo-fx-on-active:active::before,
2541
+ .fibo-fx-underline-from-center.fibo-fx-on-focus:focus::before,
2542
+ .fibo-fx-underline-from-center.fibo-fx-on-focus-visible:focus-visible::before,
2543
+ .fibo-fx-underline-from-center.fibo-fx-on-focus-within:focus-within::before,
2544
+ .group:hover .fibo-fx-underline-from-center.fibo-fx-on-group-hover::before,
2545
+ .group:active .fibo-fx-underline-from-center.fibo-fx-on-group-active::before,
2546
+ .group:focus-within .fibo-fx-underline-from-center.fibo-fx-on-group-focus-within::before { transform:scaleX(1) scaleY(1); }
2547
+
2548
+ .fibo-fx-underline-from-right { position:relative; }
2549
+ .fibo-fx-underline-from-right::before { content:"";position:absolute;left:0;right:0;bottom:0;height:2px;top:auto;background:var(--fibo-fx-fill,currentColor);transform:scaleX(0);transform-origin:100% 50%;transition-duration:.3s; }
2550
+ .fibo-fx-underline-from-right.fibo-fx-on-hover:hover::before,
2551
+ .fibo-fx-underline-from-right.fibo-fx-on-active:active::before,
2552
+ .fibo-fx-underline-from-right.fibo-fx-on-focus:focus::before,
2553
+ .fibo-fx-underline-from-right.fibo-fx-on-focus-visible:focus-visible::before,
2554
+ .fibo-fx-underline-from-right.fibo-fx-on-focus-within:focus-within::before,
2555
+ .group:hover .fibo-fx-underline-from-right.fibo-fx-on-group-hover::before,
2556
+ .group:active .fibo-fx-underline-from-right.fibo-fx-on-group-active::before,
2557
+ .group:focus-within .fibo-fx-underline-from-right.fibo-fx-on-group-focus-within::before { transform:scaleX(1) scaleY(1); }
2558
+
2559
+ .fibo-fx-overline-from-left { position:relative; }
2560
+ .fibo-fx-overline-from-left::before { content:"";position:absolute;left:0;right:0;top:0;height:2px;bottom:auto;background:var(--fibo-fx-fill,currentColor);transform:scaleX(0);transform-origin:0 50%;transition-duration:.3s; }
2561
+ .fibo-fx-overline-from-left.fibo-fx-on-hover:hover::before,
2562
+ .fibo-fx-overline-from-left.fibo-fx-on-active:active::before,
2563
+ .fibo-fx-overline-from-left.fibo-fx-on-focus:focus::before,
2564
+ .fibo-fx-overline-from-left.fibo-fx-on-focus-visible:focus-visible::before,
2565
+ .fibo-fx-overline-from-left.fibo-fx-on-focus-within:focus-within::before,
2566
+ .group:hover .fibo-fx-overline-from-left.fibo-fx-on-group-hover::before,
2567
+ .group:active .fibo-fx-overline-from-left.fibo-fx-on-group-active::before,
2568
+ .group:focus-within .fibo-fx-overline-from-left.fibo-fx-on-group-focus-within::before { transform:scaleX(1) scaleY(1); }
2569
+
2570
+ .fibo-fx-overline-from-center { position:relative; }
2571
+ .fibo-fx-overline-from-center::before { content:"";position:absolute;left:0;right:0;top:0;height:2px;bottom:auto;background:var(--fibo-fx-fill,currentColor);transform:scaleX(0);transform-origin:50% 50%;transition-duration:.3s; }
2572
+ .fibo-fx-overline-from-center.fibo-fx-on-hover:hover::before,
2573
+ .fibo-fx-overline-from-center.fibo-fx-on-active:active::before,
2574
+ .fibo-fx-overline-from-center.fibo-fx-on-focus:focus::before,
2575
+ .fibo-fx-overline-from-center.fibo-fx-on-focus-visible:focus-visible::before,
2576
+ .fibo-fx-overline-from-center.fibo-fx-on-focus-within:focus-within::before,
2577
+ .group:hover .fibo-fx-overline-from-center.fibo-fx-on-group-hover::before,
2578
+ .group:active .fibo-fx-overline-from-center.fibo-fx-on-group-active::before,
2579
+ .group:focus-within .fibo-fx-overline-from-center.fibo-fx-on-group-focus-within::before { transform:scaleX(1) scaleY(1); }
2580
+
2581
+ .fibo-fx-overline-from-right { position:relative; }
2582
+ .fibo-fx-overline-from-right::before { content:"";position:absolute;left:0;right:0;top:0;height:2px;bottom:auto;background:var(--fibo-fx-fill,currentColor);transform:scaleX(0);transform-origin:100% 50%;transition-duration:.3s; }
2583
+ .fibo-fx-overline-from-right.fibo-fx-on-hover:hover::before,
2584
+ .fibo-fx-overline-from-right.fibo-fx-on-active:active::before,
2585
+ .fibo-fx-overline-from-right.fibo-fx-on-focus:focus::before,
2586
+ .fibo-fx-overline-from-right.fibo-fx-on-focus-visible:focus-visible::before,
2587
+ .fibo-fx-overline-from-right.fibo-fx-on-focus-within:focus-within::before,
2588
+ .group:hover .fibo-fx-overline-from-right.fibo-fx-on-group-hover::before,
2589
+ .group:active .fibo-fx-overline-from-right.fibo-fx-on-group-active::before,
2590
+ .group:focus-within .fibo-fx-overline-from-right.fibo-fx-on-group-focus-within::before { transform:scaleX(1) scaleY(1); }
2591
+
2592
+ .fibo-fx-reveal { position:relative; }
2593
+ .fibo-fx-reveal::before { content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--fibo-fx-fill,currentColor);transform:scaleX(0);transform-origin:100% 50%;transition-duration:.3s; }
2594
+ .fibo-fx-reveal.fibo-fx-on-hover:hover::before,
2595
+ .fibo-fx-reveal.fibo-fx-on-active:active::before,
2596
+ .fibo-fx-reveal.fibo-fx-on-focus:focus::before,
2597
+ .fibo-fx-reveal.fibo-fx-on-focus-visible:focus-visible::before,
2598
+ .fibo-fx-reveal.fibo-fx-on-focus-within:focus-within::before,
2599
+ .group:hover .fibo-fx-reveal.fibo-fx-on-group-hover::before,
2600
+ .group:active .fibo-fx-reveal.fibo-fx-on-group-active::before,
2601
+ .group:focus-within .fibo-fx-reveal.fibo-fx-on-group-focus-within::before { transform:scaleX(1);transform-origin:0 50%; }
2602
+
2603
+ .fibo-fx-underline-reveal { position:relative; }
2604
+ .fibo-fx-underline-reveal::before { content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--fibo-fx-fill,currentColor);transform:scaleX(0);transform-origin:100% 50%;transition-duration:.3s; }
2605
+ .fibo-fx-underline-reveal.fibo-fx-on-hover:hover::before,
2606
+ .fibo-fx-underline-reveal.fibo-fx-on-active:active::before,
2607
+ .fibo-fx-underline-reveal.fibo-fx-on-focus:focus::before,
2608
+ .fibo-fx-underline-reveal.fibo-fx-on-focus-visible:focus-visible::before,
2609
+ .fibo-fx-underline-reveal.fibo-fx-on-focus-within:focus-within::before,
2610
+ .group:hover .fibo-fx-underline-reveal.fibo-fx-on-group-hover::before,
2611
+ .group:active .fibo-fx-underline-reveal.fibo-fx-on-group-active::before,
2612
+ .group:focus-within .fibo-fx-underline-reveal.fibo-fx-on-group-focus-within::before { transform:scaleX(1);transform-origin:0 50%; }
2613
+
2614
+ .fibo-fx-overline-reveal { position:relative; }
2615
+ .fibo-fx-overline-reveal::before { content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--fibo-fx-fill,currentColor);transform:scaleX(0);transform-origin:100% 50%;transition-duration:.3s; }
2616
+ .fibo-fx-overline-reveal.fibo-fx-on-hover:hover::before,
2617
+ .fibo-fx-overline-reveal.fibo-fx-on-active:active::before,
2618
+ .fibo-fx-overline-reveal.fibo-fx-on-focus:focus::before,
2619
+ .fibo-fx-overline-reveal.fibo-fx-on-focus-visible:focus-visible::before,
2620
+ .fibo-fx-overline-reveal.fibo-fx-on-focus-within:focus-within::before,
2621
+ .group:hover .fibo-fx-overline-reveal.fibo-fx-on-group-hover::before,
2622
+ .group:active .fibo-fx-overline-reveal.fibo-fx-on-group-active::before,
2623
+ .group:focus-within .fibo-fx-overline-reveal.fibo-fx-on-group-focus-within::before { transform:scaleX(1);transform-origin:0 50%; }
2624
+
2625
+ .fibo-fx-shadow-grow { transition-duration:.3s;transition-property:box-shadow; }
2626
+ .fibo-fx-shadow-grow.fibo-fx-on-hover:hover,
2627
+ .fibo-fx-shadow-grow.fibo-fx-on-active:active,
2628
+ .fibo-fx-shadow-grow.fibo-fx-on-focus:focus,
2629
+ .fibo-fx-shadow-grow.fibo-fx-on-focus-visible:focus-visible,
2630
+ .fibo-fx-shadow-grow.fibo-fx-on-focus-within:focus-within,
2631
+ .group:hover .fibo-fx-shadow-grow.fibo-fx-on-group-hover,
2632
+ .group:active .fibo-fx-shadow-grow.fibo-fx-on-group-active,
2633
+ .group:focus-within .fibo-fx-shadow-grow.fibo-fx-on-group-focus-within { box-shadow:0 10px 10px -10px rgba(0,0,0,.5); }
2634
+
2635
+ .fibo-fx-shadow-float { transition-duration:.3s;transition-property:transform,box-shadow; }
2636
+ .fibo-fx-shadow-float.fibo-fx-on-hover:hover,
2637
+ .fibo-fx-shadow-float.fibo-fx-on-active:active,
2638
+ .fibo-fx-shadow-float.fibo-fx-on-focus:focus,
2639
+ .fibo-fx-shadow-float.fibo-fx-on-focus-visible:focus-visible,
2640
+ .fibo-fx-shadow-float.fibo-fx-on-focus-within:focus-within,
2641
+ .group:hover .fibo-fx-shadow-float.fibo-fx-on-group-hover,
2642
+ .group:active .fibo-fx-shadow-float.fibo-fx-on-group-active,
2643
+ .group:focus-within .fibo-fx-shadow-float.fibo-fx-on-group-focus-within { transform:translateY(-6px);box-shadow:0 12px 16px -8px rgba(0,0,0,.4); }
2644
+
2645
+ .fibo-fx-shadow-glow { transition-duration:.3s;transition-property:box-shadow; }
2646
+ .fibo-fx-shadow-glow.fibo-fx-on-hover:hover,
2647
+ .fibo-fx-shadow-glow.fibo-fx-on-active:active,
2648
+ .fibo-fx-shadow-glow.fibo-fx-on-focus:focus,
2649
+ .fibo-fx-shadow-glow.fibo-fx-on-focus-visible:focus-visible,
2650
+ .fibo-fx-shadow-glow.fibo-fx-on-focus-within:focus-within,
2651
+ .group:hover .fibo-fx-shadow-glow.fibo-fx-on-group-hover,
2652
+ .group:active .fibo-fx-shadow-glow.fibo-fx-on-group-active,
2653
+ .group:focus-within .fibo-fx-shadow-glow.fibo-fx-on-group-focus-within { box-shadow:0 0 12px 4px rgba(255,255,255,.25); }
2654
+
2655
+ .fibo-fx-shadow-radial { position:relative; }
2656
+ .fibo-fx-shadow-radial::after { content:"";position:absolute;z-index:-1;inset:0;border-radius:inherit;opacity:0;box-shadow:0 0 0 12px transparent;transition-duration:.3s; }
2657
+ .fibo-fx-shadow-radial.fibo-fx-on-hover:hover::after,
2658
+ .fibo-fx-shadow-radial.fibo-fx-on-active:active::after,
2659
+ .fibo-fx-shadow-radial.fibo-fx-on-focus:focus::after,
2660
+ .fibo-fx-shadow-radial.fibo-fx-on-focus-visible:focus-visible::after,
2661
+ .fibo-fx-shadow-radial.fibo-fx-on-focus-within:focus-within::after,
2662
+ .group:hover .fibo-fx-shadow-radial.fibo-fx-on-group-hover::after,
2663
+ .group:active .fibo-fx-shadow-radial.fibo-fx-on-group-active::after,
2664
+ .group:focus-within .fibo-fx-shadow-radial.fibo-fx-on-group-focus-within::after { opacity:1;box-shadow:0 0 0 12px rgba(127,127,127,.15); }
2665
+
2666
+ .fibo-fx-box-shadow-outset { transition-duration:.3s;transition-property:box-shadow; }
2667
+ .fibo-fx-box-shadow-outset.fibo-fx-on-hover:hover,
2668
+ .fibo-fx-box-shadow-outset.fibo-fx-on-active:active,
2669
+ .fibo-fx-box-shadow-outset.fibo-fx-on-focus:focus,
2670
+ .fibo-fx-box-shadow-outset.fibo-fx-on-focus-visible:focus-visible,
2671
+ .fibo-fx-box-shadow-outset.fibo-fx-on-focus-within:focus-within,
2672
+ .group:hover .fibo-fx-box-shadow-outset.fibo-fx-on-group-hover,
2673
+ .group:active .fibo-fx-box-shadow-outset.fibo-fx-on-group-active,
2674
+ .group:focus-within .fibo-fx-box-shadow-outset.fibo-fx-on-group-focus-within { box-shadow:2px 2px 4px rgba(0,0,0,.4); }
2675
+
2676
+ .fibo-fx-box-shadow-inset { transition-duration:.3s;transition-property:box-shadow; }
2677
+ .fibo-fx-box-shadow-inset.fibo-fx-on-hover:hover,
2678
+ .fibo-fx-box-shadow-inset.fibo-fx-on-active:active,
2679
+ .fibo-fx-box-shadow-inset.fibo-fx-on-focus:focus,
2680
+ .fibo-fx-box-shadow-inset.fibo-fx-on-focus-visible:focus-visible,
2681
+ .fibo-fx-box-shadow-inset.fibo-fx-on-focus-within:focus-within,
2682
+ .group:hover .fibo-fx-box-shadow-inset.fibo-fx-on-group-hover,
2683
+ .group:active .fibo-fx-box-shadow-inset.fibo-fx-on-group-active,
2684
+ .group:focus-within .fibo-fx-box-shadow-inset.fibo-fx-on-group-focus-within { box-shadow:inset 2px 2px 4px rgba(0,0,0,.4); }
2685
+
2686
+ .fibo-fx-lift { transition-duration:.25s;transition-property:transform,box-shadow;transition-timing-function:ease-out; }
2687
+ .fibo-fx-lift.fibo-fx-on-hover:hover,
2688
+ .fibo-fx-lift.fibo-fx-on-active:active,
2689
+ .fibo-fx-lift.fibo-fx-on-focus:focus,
2690
+ .fibo-fx-lift.fibo-fx-on-focus-visible:focus-visible,
2691
+ .fibo-fx-lift.fibo-fx-on-focus-within:focus-within,
2692
+ .group:hover .fibo-fx-lift.fibo-fx-on-group-hover,
2693
+ .group:active .fibo-fx-lift.fibo-fx-on-group-active,
2694
+ .group:focus-within .fibo-fx-lift.fibo-fx-on-group-focus-within { transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.18); }
2695
+
2696
+ .fibo-fx-glow { transition-duration:.25s;transition-property:box-shadow; }
2697
+ .fibo-fx-glow.fibo-fx-on-hover:hover,
2698
+ .fibo-fx-glow.fibo-fx-on-active:active,
2699
+ .fibo-fx-glow.fibo-fx-on-focus:focus,
2700
+ .fibo-fx-glow.fibo-fx-on-focus-visible:focus-visible,
2701
+ .fibo-fx-glow.fibo-fx-on-focus-within:focus-within,
2702
+ .group:hover .fibo-fx-glow.fibo-fx-on-group-hover,
2703
+ .group:active .fibo-fx-glow.fibo-fx-on-group-active,
2704
+ .group:focus-within .fibo-fx-glow.fibo-fx-on-group-focus-within { box-shadow:0 0 0 3px rgba(255,255,255,.16); }
2705
+
2706
+ .fibo-fx-bubble-top { position:relative; }
2707
+ .fibo-fx-bubble-top::after { content:attr(data-fibo-bubble);position:absolute;bottom:100%;left:50%;transform:translateX(-50%) translateY(-8px);padding:0.5em 1em;background:var(--fibo-fx-fill,#333);color:var(--fibo-fx-ink,#fff);border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition-duration:.3s;font-size:12px;z-index:2; }
2708
+ .fibo-fx-bubble-top.fibo-fx-on-hover:hover::after,
2709
+ .fibo-fx-bubble-top.fibo-fx-on-active:active::after,
2710
+ .fibo-fx-bubble-top.fibo-fx-on-focus:focus::after,
2711
+ .fibo-fx-bubble-top.fibo-fx-on-focus-visible:focus-visible::after,
2712
+ .fibo-fx-bubble-top.fibo-fx-on-focus-within:focus-within::after,
2713
+ .group:hover .fibo-fx-bubble-top.fibo-fx-on-group-hover::after,
2714
+ .group:active .fibo-fx-bubble-top.fibo-fx-on-group-active::after,
2715
+ .group:focus-within .fibo-fx-bubble-top.fibo-fx-on-group-focus-within::after { opacity:1; }
2716
+
2717
+ .fibo-fx-bubble-right { position:relative; }
2718
+ .fibo-fx-bubble-right::after { content:attr(data-fibo-bubble);position:absolute;left:100%;top:50%;transform:translateY(-50%) translateX(8px);padding:0.5em 1em;background:var(--fibo-fx-fill,#333);color:var(--fibo-fx-ink,#fff);border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition-duration:.3s;font-size:12px;z-index:2; }
2719
+ .fibo-fx-bubble-right.fibo-fx-on-hover:hover::after,
2720
+ .fibo-fx-bubble-right.fibo-fx-on-active:active::after,
2721
+ .fibo-fx-bubble-right.fibo-fx-on-focus:focus::after,
2722
+ .fibo-fx-bubble-right.fibo-fx-on-focus-visible:focus-visible::after,
2723
+ .fibo-fx-bubble-right.fibo-fx-on-focus-within:focus-within::after,
2724
+ .group:hover .fibo-fx-bubble-right.fibo-fx-on-group-hover::after,
2725
+ .group:active .fibo-fx-bubble-right.fibo-fx-on-group-active::after,
2726
+ .group:focus-within .fibo-fx-bubble-right.fibo-fx-on-group-focus-within::after { opacity:1; }
2727
+
2728
+ .fibo-fx-bubble-bottom { position:relative; }
2729
+ .fibo-fx-bubble-bottom::after { content:attr(data-fibo-bubble);position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(8px);padding:0.5em 1em;background:var(--fibo-fx-fill,#333);color:var(--fibo-fx-ink,#fff);border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition-duration:.3s;font-size:12px;z-index:2; }
2730
+ .fibo-fx-bubble-bottom.fibo-fx-on-hover:hover::after,
2731
+ .fibo-fx-bubble-bottom.fibo-fx-on-active:active::after,
2732
+ .fibo-fx-bubble-bottom.fibo-fx-on-focus:focus::after,
2733
+ .fibo-fx-bubble-bottom.fibo-fx-on-focus-visible:focus-visible::after,
2734
+ .fibo-fx-bubble-bottom.fibo-fx-on-focus-within:focus-within::after,
2735
+ .group:hover .fibo-fx-bubble-bottom.fibo-fx-on-group-hover::after,
2736
+ .group:active .fibo-fx-bubble-bottom.fibo-fx-on-group-active::after,
2737
+ .group:focus-within .fibo-fx-bubble-bottom.fibo-fx-on-group-focus-within::after { opacity:1; }
2738
+
2739
+ .fibo-fx-bubble-left { position:relative; }
2740
+ .fibo-fx-bubble-left::after { content:attr(data-fibo-bubble);position:absolute;right:100%;top:50%;transform:translateY(-50%) translateX(-8px);padding:0.5em 1em;background:var(--fibo-fx-fill,#333);color:var(--fibo-fx-ink,#fff);border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition-duration:.3s;font-size:12px;z-index:2; }
2741
+ .fibo-fx-bubble-left.fibo-fx-on-hover:hover::after,
2742
+ .fibo-fx-bubble-left.fibo-fx-on-active:active::after,
2743
+ .fibo-fx-bubble-left.fibo-fx-on-focus:focus::after,
2744
+ .fibo-fx-bubble-left.fibo-fx-on-focus-visible:focus-visible::after,
2745
+ .fibo-fx-bubble-left.fibo-fx-on-focus-within:focus-within::after,
2746
+ .group:hover .fibo-fx-bubble-left.fibo-fx-on-group-hover::after,
2747
+ .group:active .fibo-fx-bubble-left.fibo-fx-on-group-active::after,
2748
+ .group:focus-within .fibo-fx-bubble-left.fibo-fx-on-group-focus-within::after { opacity:1; }
2749
+
2750
+ .fibo-fx-bubble-float-top { position:relative; }
2751
+ .fibo-fx-bubble-float-top::after { content:attr(data-fibo-bubble);position:absolute;bottom:100%;left:50%;transform:translateX(-50%) translateY(0);padding:0.5em 1em;background:var(--fibo-fx-fill,#333);color:var(--fibo-fx-ink,#fff);border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition-duration:.3s;font-size:12px;z-index:2; }
2752
+ .fibo-fx-bubble-float-top.fibo-fx-on-hover:hover::after,
2753
+ .fibo-fx-bubble-float-top.fibo-fx-on-active:active::after,
2754
+ .fibo-fx-bubble-float-top.fibo-fx-on-focus:focus::after,
2755
+ .fibo-fx-bubble-float-top.fibo-fx-on-focus-visible:focus-visible::after,
2756
+ .fibo-fx-bubble-float-top.fibo-fx-on-focus-within:focus-within::after,
2757
+ .group:hover .fibo-fx-bubble-float-top.fibo-fx-on-group-hover::after,
2758
+ .group:active .fibo-fx-bubble-float-top.fibo-fx-on-group-active::after,
2759
+ .group:focus-within .fibo-fx-bubble-float-top.fibo-fx-on-group-focus-within::after { opacity:1;transform:translateX(-50%) translateY(-10px); }
2760
+
2761
+ .fibo-fx-bubble-float-right { position:relative; }
2762
+ .fibo-fx-bubble-float-right::after { content:attr(data-fibo-bubble);position:absolute;left:100%;top:50%;transform:translateY(-50%) translateX(0);padding:0.5em 1em;background:var(--fibo-fx-fill,#333);color:var(--fibo-fx-ink,#fff);border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition-duration:.3s;font-size:12px;z-index:2; }
2763
+ .fibo-fx-bubble-float-right.fibo-fx-on-hover:hover::after,
2764
+ .fibo-fx-bubble-float-right.fibo-fx-on-active:active::after,
2765
+ .fibo-fx-bubble-float-right.fibo-fx-on-focus:focus::after,
2766
+ .fibo-fx-bubble-float-right.fibo-fx-on-focus-visible:focus-visible::after,
2767
+ .fibo-fx-bubble-float-right.fibo-fx-on-focus-within:focus-within::after,
2768
+ .group:hover .fibo-fx-bubble-float-right.fibo-fx-on-group-hover::after,
2769
+ .group:active .fibo-fx-bubble-float-right.fibo-fx-on-group-active::after,
2770
+ .group:focus-within .fibo-fx-bubble-float-right.fibo-fx-on-group-focus-within::after { opacity:1;transform:translateY(-50%) translateX(10px); }
2771
+
2772
+ .fibo-fx-bubble-float-bottom { position:relative; }
2773
+ .fibo-fx-bubble-float-bottom::after { content:attr(data-fibo-bubble);position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(0);padding:0.5em 1em;background:var(--fibo-fx-fill,#333);color:var(--fibo-fx-ink,#fff);border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition-duration:.3s;font-size:12px;z-index:2; }
2774
+ .fibo-fx-bubble-float-bottom.fibo-fx-on-hover:hover::after,
2775
+ .fibo-fx-bubble-float-bottom.fibo-fx-on-active:active::after,
2776
+ .fibo-fx-bubble-float-bottom.fibo-fx-on-focus:focus::after,
2777
+ .fibo-fx-bubble-float-bottom.fibo-fx-on-focus-visible:focus-visible::after,
2778
+ .fibo-fx-bubble-float-bottom.fibo-fx-on-focus-within:focus-within::after,
2779
+ .group:hover .fibo-fx-bubble-float-bottom.fibo-fx-on-group-hover::after,
2780
+ .group:active .fibo-fx-bubble-float-bottom.fibo-fx-on-group-active::after,
2781
+ .group:focus-within .fibo-fx-bubble-float-bottom.fibo-fx-on-group-focus-within::after { opacity:1;transform:translateX(-50%) translateY(10px); }
2782
+
2783
+ .fibo-fx-bubble-float-left { position:relative; }
2784
+ .fibo-fx-bubble-float-left::after { content:attr(data-fibo-bubble);position:absolute;right:100%;top:50%;transform:translateY(-50%) translateX(0);padding:0.5em 1em;background:var(--fibo-fx-fill,#333);color:var(--fibo-fx-ink,#fff);border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition-duration:.3s;font-size:12px;z-index:2; }
2785
+ .fibo-fx-bubble-float-left.fibo-fx-on-hover:hover::after,
2786
+ .fibo-fx-bubble-float-left.fibo-fx-on-active:active::after,
2787
+ .fibo-fx-bubble-float-left.fibo-fx-on-focus:focus::after,
2788
+ .fibo-fx-bubble-float-left.fibo-fx-on-focus-visible:focus-visible::after,
2789
+ .fibo-fx-bubble-float-left.fibo-fx-on-focus-within:focus-within::after,
2790
+ .group:hover .fibo-fx-bubble-float-left.fibo-fx-on-group-hover::after,
2791
+ .group:active .fibo-fx-bubble-float-left.fibo-fx-on-group-active::after,
2792
+ .group:focus-within .fibo-fx-bubble-float-left.fibo-fx-on-group-focus-within::after { opacity:1;transform:translateY(-50%) translateX(-10px); }
2793
+
2794
+ .fibo-fx-curl-top-left { position:relative;transform-style:preserve-3d; }
2795
+ .fibo-fx-curl-top-left::after { content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(135deg,transparent 50%,rgba(0,0,0,.08) 50%);transform-origin:0 0;transition-duration:.3s;pointer-events:none;box-shadow:0 0 0 transparent; }
2796
+ .fibo-fx-curl-top-left.fibo-fx-on-hover:hover::after,
2797
+ .fibo-fx-curl-top-left.fibo-fx-on-active:active::after,
2798
+ .fibo-fx-curl-top-left.fibo-fx-on-focus:focus::after,
2799
+ .fibo-fx-curl-top-left.fibo-fx-on-focus-visible:focus-visible::after,
2800
+ .fibo-fx-curl-top-left.fibo-fx-on-focus-within:focus-within::after,
2801
+ .group:hover .fibo-fx-curl-top-left.fibo-fx-on-group-hover::after,
2802
+ .group:active .fibo-fx-curl-top-left.fibo-fx-on-group-active::after,
2803
+ .group:focus-within .fibo-fx-curl-top-left.fibo-fx-on-group-focus-within::after { transform:rotateX(20deg);box-shadow:-2px -2px 4px rgba(0,0,0,.15); }
2804
+
2805
+ .fibo-fx-curl-top-right { position:relative;transform-style:preserve-3d; }
2806
+ .fibo-fx-curl-top-right::after { content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(135deg,transparent 50%,rgba(0,0,0,.08) 50%);transform-origin:100% 0;transition-duration:.3s;pointer-events:none;box-shadow:0 0 0 transparent; }
2807
+ .fibo-fx-curl-top-right.fibo-fx-on-hover:hover::after,
2808
+ .fibo-fx-curl-top-right.fibo-fx-on-active:active::after,
2809
+ .fibo-fx-curl-top-right.fibo-fx-on-focus:focus::after,
2810
+ .fibo-fx-curl-top-right.fibo-fx-on-focus-visible:focus-visible::after,
2811
+ .fibo-fx-curl-top-right.fibo-fx-on-focus-within:focus-within::after,
2812
+ .group:hover .fibo-fx-curl-top-right.fibo-fx-on-group-hover::after,
2813
+ .group:active .fibo-fx-curl-top-right.fibo-fx-on-group-active::after,
2814
+ .group:focus-within .fibo-fx-curl-top-right.fibo-fx-on-group-focus-within::after { transform:rotateY(-20deg);box-shadow:-2px -2px 4px rgba(0,0,0,.15); }
2815
+
2816
+ .fibo-fx-curl-bottom-right { position:relative;transform-style:preserve-3d; }
2817
+ .fibo-fx-curl-bottom-right::after { content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(135deg,transparent 50%,rgba(0,0,0,.08) 50%);transform-origin:100% 100%;transition-duration:.3s;pointer-events:none;box-shadow:0 0 0 transparent; }
2818
+ .fibo-fx-curl-bottom-right.fibo-fx-on-hover:hover::after,
2819
+ .fibo-fx-curl-bottom-right.fibo-fx-on-active:active::after,
2820
+ .fibo-fx-curl-bottom-right.fibo-fx-on-focus:focus::after,
2821
+ .fibo-fx-curl-bottom-right.fibo-fx-on-focus-visible:focus-visible::after,
2822
+ .fibo-fx-curl-bottom-right.fibo-fx-on-focus-within:focus-within::after,
2823
+ .group:hover .fibo-fx-curl-bottom-right.fibo-fx-on-group-hover::after,
2824
+ .group:active .fibo-fx-curl-bottom-right.fibo-fx-on-group-active::after,
2825
+ .group:focus-within .fibo-fx-curl-bottom-right.fibo-fx-on-group-focus-within::after { transform:rotateX(-20deg);box-shadow:-2px -2px 4px rgba(0,0,0,.15); }
2826
+
2827
+ .fibo-fx-curl-bottom-left { position:relative;transform-style:preserve-3d; }
2828
+ .fibo-fx-curl-bottom-left::after { content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(135deg,transparent 50%,rgba(0,0,0,.08) 50%);transform-origin:0 100%;transition-duration:.3s;pointer-events:none;box-shadow:0 0 0 transparent; }
2829
+ .fibo-fx-curl-bottom-left.fibo-fx-on-hover:hover::after,
2830
+ .fibo-fx-curl-bottom-left.fibo-fx-on-active:active::after,
2831
+ .fibo-fx-curl-bottom-left.fibo-fx-on-focus:focus::after,
2832
+ .fibo-fx-curl-bottom-left.fibo-fx-on-focus-visible:focus-visible::after,
2833
+ .fibo-fx-curl-bottom-left.fibo-fx-on-focus-within:focus-within::after,
2834
+ .group:hover .fibo-fx-curl-bottom-left.fibo-fx-on-group-hover::after,
2835
+ .group:active .fibo-fx-curl-bottom-left.fibo-fx-on-group-active::after,
2836
+ .group:focus-within .fibo-fx-curl-bottom-left.fibo-fx-on-group-focus-within::after { transform:rotateY(20deg);box-shadow:-2px -2px 4px rgba(0,0,0,.15); }
2837
+
2838
+ @media (prefers-reduced-motion: reduce) {
2839
+ .fibo-fx:not(.fibo-motion-force) {
2840
+ animation: none !important;
2841
+ }
2842
+ .fibo-fx:not(.fibo-motion-force)::before,
2843
+ .fibo-fx:not(.fibo-motion-force)::after {
2844
+ transition: none !important;
2845
+ animation: none !important;
2846
+ }
2847
+ }
2848
+ `.trim();
2849
+ let J = !1;
2850
+ function pi() {
2851
+ if (J) return;
2852
+ J = !0;
2853
+ const t = C.getInstance();
2854
+ t.ensureDefaults(), t.injectExtra(xi, "fibo-interaction-fx");
2855
+ }
2856
+ class v {
2857
+ constructor(o, i, e = !1) {
2858
+ a(this, "pseudoState");
2859
+ a(this, "parentBuilder");
2860
+ a(this, "isGroup");
2861
+ a(this, "transitionDuration", 200);
2862
+ a(this, "transitionEasing", "ease-in-out");
2863
+ a(this, "transitionDelay", 0);
2864
+ a(this, "transitionProperties", ["all"]);
2865
+ a(this, "transforms", /* @__PURE__ */ new Map());
2866
+ this.pseudoState = o, this.parentBuilder = i, this.isGroup = e;
2867
+ }
2868
+ /**
2869
+ * Apply a named interaction effect (full Hover.css–inspired catalog).
2870
+ * Works on any pseudo trigger — hover, press/active, focus, groupHover, etc.
2871
+ * Stamps CSS classes; sheet is fiboui-owned (not a Hover.css vendor).
2872
+ */
2873
+ effect(o) {
2874
+ const i = ui(o);
2875
+ return pi(), this.parentBuilder.addClassName("fibo-fx"), this.parentBuilder.addClassName(hi(i)), this.parentBuilder.addClassName(
2876
+ li(this.pseudoState, this.isGroup)
2877
+ ), this.parentBuilder.ensureEffectTransition([
2878
+ "transform",
2879
+ "opacity",
2880
+ "box-shadow",
2881
+ "background-color",
2882
+ "border-color",
2883
+ "color",
2884
+ "border-radius"
2885
+ ]), this;
2886
+ }
2887
+ bg(o) {
2888
+ return this.set("background-color", o);
2889
+ }
2890
+ color(o) {
2891
+ return this.set("color", o);
2892
+ }
2893
+ text(o) {
2894
+ return this.color(o);
2895
+ }
2896
+ opacity(o) {
2897
+ return this.set("opacity", String(o));
2898
+ }
2899
+ borderColor(o) {
2900
+ return this.set("border-color", o);
2901
+ }
2902
+ transform(o) {
2903
+ return this.transforms.set("raw", o), this.flushTransform();
2904
+ }
2905
+ scale(o) {
2906
+ return this.transforms.set("scale", `scale(${o})`), this.flushTransform();
2907
+ }
2908
+ translateX(o) {
2909
+ const i = typeof o == "number" ? `${o}px` : o;
2910
+ return this.transforms.set("translateX", `translateX(${i})`), this.flushTransform();
2911
+ }
2912
+ translateY(o) {
2913
+ const i = typeof o == "number" ? `${o}px` : o;
2914
+ return this.transforms.set("translateY", `translateY(${i})`), this.flushTransform();
2915
+ }
2916
+ rotate(o) {
2917
+ return this.transforms.set("rotate", `rotate(${o}deg)`), this.flushTransform();
2918
+ }
2919
+ shadow(o) {
2920
+ return this.set("box-shadow", o);
2921
+ }
2922
+ css(o, i) {
2923
+ return this.set(o, i);
2924
+ }
2925
+ transition(o, i, e, r) {
2926
+ if (typeof o == "string" && i === void 0)
2927
+ return this.set("transition", o);
2928
+ const f = Array.isArray(o) ? o.join(", ") : o, n = `${i || this.transitionDuration}ms`, s = $(e || this.transitionEasing), c = r ? `${r}ms` : "0ms";
2929
+ return this.set("transition", `${f} ${n} ${s} ${c}`);
2930
+ }
2931
+ duration(o) {
2932
+ return this.transitionDuration = o, this.applyTransition(), this;
2933
+ }
2934
+ easing(o) {
2935
+ return this.transitionEasing = $(o), this.applyTransition(), this;
2936
+ }
2937
+ ease(o) {
2938
+ return this.easing(o);
2939
+ }
2940
+ delay(o) {
2941
+ return this.transitionDelay = o, this.applyTransition(), this;
2942
+ }
2943
+ properties(o) {
2944
+ return this.transitionProperties = o, this.applyTransition(), this;
2945
+ }
2946
+ applyTransition() {
2947
+ const o = this.transitionProperties.join(", "), i = `${this.transitionDuration}ms`, e = this.transitionEasing, r = this.transitionDelay > 0 ? `${this.transitionDelay}ms` : "0ms";
2948
+ this.set("transition", `${o} ${i} ${e} ${r}`);
2949
+ }
2950
+ flushTransform() {
2951
+ return this.set("transform", [...this.transforms.values()].join(" "));
2952
+ }
2953
+ set(o, i) {
2954
+ const e = u.registerPseudo(this.pseudoState, o, i, this.isGroup);
2955
+ return this.parentBuilder.addClassName(e), this;
2956
+ }
2957
+ end() {
2958
+ return this.parentBuilder;
2959
+ }
2960
+ }
2961
+ function Ai(t, o) {
2962
+ if (typeof document > "u") return;
2963
+ const i = typeof t == "string" ? t : null, e = (i == null ? void 0 : i.replace(/^#/, "")) ?? null;
2964
+ o != null && o.hash && e && typeof window < "u" && (window.location.hash = e);
2965
+ const r = typeof t == "string" ? document.getElementById(t.replace(/^#/, "")) ?? document.querySelector(t.startsWith("#") ? t : `#${t}`) ?? document.querySelector(t) : t;
2966
+ r && r.scrollIntoView({
2967
+ behavior: (o == null ? void 0 : o.behavior) ?? "smooth",
2968
+ block: (o == null ? void 0 : o.block) ?? "start"
2969
+ });
2970
+ }
2971
+ function ji(t) {
2972
+ const o = typeof document < "u" ? document : void 0, i = o == null ? void 0 : o.startViewTransition;
2973
+ if (typeof i == "function") {
2974
+ i.call(o, t);
2975
+ return;
2976
+ }
2977
+ t();
2978
+ }
2979
+ function gi() {
2980
+ return typeof CSS > "u" || typeof CSS.supports != "function" ? !1 : CSS.supports("animation-timeline", "view()");
2981
+ }
2982
+ function di() {
2983
+ return typeof CSS > "u" || typeof CSS.supports != "function" ? !1 : CSS.supports("animation-timeline", "scroll()");
2984
+ }
2985
+ function mi({
2986
+ preset: t = "fadeUp",
2987
+ once: o = !0,
2988
+ rootMargin: i = "0px 0px -8% 0px",
2989
+ threshold: e = 0.12,
2990
+ forceMotion: r = !1,
2991
+ preferTimeline: f = !1,
2992
+ children: n
2993
+ }) {
2994
+ const s = _(null);
2995
+ M(() => {
2996
+ w();
2997
+ const h = s.current;
2998
+ if (!h) return;
2999
+ if (f && gi()) {
3000
+ h.classList.add("fibo-inview");
3001
+ return;
3002
+ }
3003
+ if (typeof IntersectionObserver > "u") {
3004
+ h.classList.add("fibo-inview");
3005
+ return;
3006
+ }
3007
+ const b = new IntersectionObserver(
3008
+ (l) => {
3009
+ for (const x of l)
3010
+ x.isIntersecting ? (x.target.classList.add("fibo-inview"), o && b.unobserve(x.target)) : o || x.target.classList.remove("fibo-inview");
3011
+ },
3012
+ { rootMargin: i, threshold: e }
3013
+ );
3014
+ return b.observe(h), () => b.disconnect();
3015
+ }, [o, i, e, f]);
3016
+ const c = [
3017
+ "fibo-reveal",
3018
+ `fibo-reveal-${t}`,
3019
+ // min-w-0 only — do NOT force w-full (breaks horizontal ScrollView / carousel slides)
3020
+ "min-w-0",
3021
+ r ? "fibo-motion-force" : ""
3022
+ ].filter(Boolean).join(" ");
3023
+ return g.createElement("div", { ref: s, className: c, "data-fibo-reveal": t }, n);
3024
+ }
3025
+ function vi({ children: t }) {
3026
+ const o = _(null);
3027
+ return M(() => {
3028
+ if (w(), di()) return;
3029
+ const i = () => {
3030
+ var f, n;
3031
+ return ((f = o.current) == null ? void 0 : f.querySelector(".fibo-scroll-progress")) ?? ((n = o.current) == null ? void 0 : n.firstElementChild);
3032
+ }, e = () => {
3033
+ const r = i();
3034
+ if (!r) return;
3035
+ const f = document.documentElement.scrollHeight - window.innerHeight, n = f > 0 ? Math.min(1, Math.max(0, window.scrollY / f)) : 0;
3036
+ r.style.setProperty("--fibo-progress", String(n));
3037
+ };
3038
+ return e(), window.addEventListener("scroll", e, { passive: !0 }), window.addEventListener("resize", e), () => {
3039
+ window.removeEventListener("scroll", e), window.removeEventListener("resize", e);
3040
+ };
3041
+ }, []), g.createElement(
3042
+ "div",
3043
+ { ref: o, "data-fibo-scroll-progress": "1", style: { display: "contents" } },
3044
+ t
3045
+ );
3046
+ }
3047
+ const xo = 64, wi = `${xo}px`;
3048
+ class Vi {
3049
+ constructor() {
3050
+ /** @internal Extra DOM props forwarded to the host element. */
3051
+ a(this, "_props", {});
3052
+ a(this, "_style", {});
3053
+ a(this, "_cssStyles", {});
3054
+ a(this, "_classNames", []);
3055
+ a(this, "_children", []);
3056
+ /** Resolved theme for this subtree (SwiftUI Environment / Flutter Theme). */
3057
+ a(this, "_theme");
3058
+ a(this, "_state", /* @__PURE__ */ new Map());
3059
+ a(this, "_providers", /* @__PURE__ */ new Map());
3060
+ a(this, "_observers", /* @__PURE__ */ new Set());
3061
+ a(this, "_signals", /* @__PURE__ */ new Set());
3062
+ a(this, "_isObserver", !1);
3063
+ a(this, "_gesture");
3064
+ a(this, "_animationConfig");
3065
+ a(this, "_animatedProps", /* @__PURE__ */ new Map());
3066
+ a(this, "_transforms", []);
3067
+ a(this, "_transitionClass");
3068
+ /** True while transition class was auto-managed for hover/effect presets (expandable). */
3069
+ a(this, "_autoEffectTransition", !1);
3070
+ a(this, "_effectTransitionProps", []);
3071
+ a(this, "_motionClass");
3072
+ a(this, "_staggerMs");
3073
+ a(this, "_reveal");
3074
+ a(this, "_scrollProgress", !1);
3075
+ a(this, "_viewTransition");
3076
+ a(this, "_reducedMotion", "reduce");
3077
+ a(this, "_usesCssMotion", !1);
3078
+ a(this, "_explicitScrollMargin", !1);
3079
+ /** Shrink-wrap: skip the default `w-full` / `self-stretch` on Row and Column. */
3080
+ a(this, "_hug", !1);
3081
+ // Transition properties
3082
+ a(this, "_transitionDuration", 200);
3083
+ // ms
3084
+ a(this, "_transitionEasing", "ease-in-out");
3085
+ a(this, "_transitionDelay", 0);
3086
+ // ms
3087
+ a(this, "_transitionProperties", ["all"]);
3088
+ a(this, "_childFunction");
3089
+ }
3090
+ hug() {
3091
+ return this._hug = !0, this;
3092
+ }
3093
+ isHug() {
3094
+ return this._hug;
3095
+ }
3096
+ id(o) {
3097
+ return this._props.id = o, this;
3098
+ }
3099
+ /**
3100
+ * Scroll target. Same as `.id()`, plus `scroll-margin-top` so the section
3101
+ * is not hidden under a sticky header. Pair with `scrollTo('#name')`.
3102
+ */
3103
+ anchor(o) {
3104
+ return this.id(o), this._explicitScrollMargin || this._classNames.push(
3105
+ u.register("scroll-margin-top", "var(--fibo-sticky-offset, 0px)")
3106
+ ), this;
3107
+ }
3108
+ /**
3109
+ * Explicit `scroll-margin-top` on this node (overrides the sticky CSS variable
3110
+ * that `.anchor()` applies).
3111
+ */
3112
+ scrollMargin(o) {
3113
+ this._explicitScrollMargin = !0;
3114
+ const i = typeof o == "number" ? `${o}px` : o;
3115
+ return this._classNames.push(u.register("scroll-margin-top", i)), this;
3116
+ }
3117
+ /** Stamp a class onto the host. Used by PseudoStateBuilder (hashed `:hover` etc.). */
3118
+ addClassName(o) {
3119
+ return o && !this._classNames.includes(o) && this._classNames.push(o), this;
3120
+ }
3121
+ /**
3122
+ * React list key. After this is called, React reads the key as a string
3123
+ * on both the builder element and the inner host wrapper.
3124
+ * Builders are valid elements — you do not need `.build()`.
3125
+ */
3126
+ key(o) {
3127
+ this._props.key = o;
3128
+ const i = this.__fiboElementProps;
3129
+ return i && typeof i == "object" && (this.__fiboElementProps = { ...i, key: String(o) }), this;
3130
+ }
3131
+ paddingHorizontal(o) {
3132
+ const i = typeof o == "number" ? `${o}px` : o, e = u.register("padding-left", i), r = u.register("padding-right", i);
3133
+ return this._classNames.push(e, r), this;
3134
+ }
3135
+ paddingVertical(o) {
3136
+ const i = typeof o == "number" ? `${o}px` : o, e = u.register("padding-top", i), r = u.register("padding-bottom", i);
3137
+ return this._classNames.push(e, r), this;
3138
+ }
3139
+ marginHorizontal(o) {
3140
+ const i = typeof o == "number" ? `${o}px` : o, e = u.register("margin-left", i), r = u.register("margin-right", i);
3141
+ return this._classNames.push(e, r), this;
3142
+ }
3143
+ marginVertical(o) {
3144
+ const i = typeof o == "number" ? `${o}px` : o, e = u.register("margin-top", i), r = u.register("margin-bottom", i);
3145
+ return this._classNames.push(e, r), this;
3146
+ }
3147
+ flexDirection(o) {
3148
+ return this._classNames.push(`flex-${o}`), this;
3149
+ }
3150
+ alignItems(o) {
3151
+ return this._classNames.push(`items-${o}`), this;
3152
+ }
3153
+ justifyContent(o) {
3154
+ return this._classNames.push(`justify-${o}`), this;
3155
+ }
3156
+ flex(o) {
3157
+ if (this._classNames.push("flex"), o !== void 0)
3158
+ if (typeof o == "number") {
3159
+ const i = u.register("flex", String(o));
3160
+ this._classNames.push(i);
3161
+ } else typeof o == "string" && this._classNames.push(`flex-${o}`);
3162
+ return this;
3163
+ }
3164
+ grid() {
3165
+ return this._classNames.push("grid"), this;
3166
+ }
3167
+ inlineFlex() {
3168
+ return this._classNames.push("inline-flex"), this;
3169
+ }
3170
+ inlineGrid() {
3171
+ return this._classNames.push("inline-grid"), this;
3172
+ }
3173
+ block() {
3174
+ return this._classNames.push("block"), this;
3175
+ }
3176
+ inlineBlock() {
3177
+ return this._classNames.push("inline-block"), this;
3178
+ }
3179
+ hidden() {
3180
+ return this._classNames.push("hidden"), this;
3181
+ }
3182
+ center() {
3183
+ return this._classNames.push("flex", "items-center", "justify-center"), this;
3184
+ }
3185
+ centerX() {
3186
+ return this._classNames.push("flex", "justify-center"), this;
3187
+ }
3188
+ centerY() {
3189
+ return this._classNames.push("flex", "items-center"), this;
3190
+ }
3191
+ spaceBetween() {
3192
+ return this._classNames.push("justify-between"), this;
3193
+ }
3194
+ spaceAround() {
3195
+ return this._classNames.push("justify-around"), this;
3196
+ }
3197
+ spaceEvenly() {
3198
+ return this._classNames.push("justify-evenly"), this;
3199
+ }
3200
+ fill() {
3201
+ return this._classNames.push("w-full", "h-full"), this;
3202
+ }
3203
+ fillWidth() {
3204
+ return this._classNames.push("w-full"), this;
3205
+ }
3206
+ fillHeight() {
3207
+ return this._classNames.push("h-full"), this;
3208
+ }
3209
+ square(o) {
3210
+ const i = typeof o == "number" ? `${o}px` : o, e = u.register("width", i), r = u.register("height", i);
3211
+ return this._classNames.push(e, r), this;
3212
+ }
3213
+ circle() {
3214
+ return this._classNames.push("rounded-full"), this;
3215
+ }
3216
+ opacity(o) {
3217
+ const i = u.register("opacity", String(o));
3218
+ return this._classNames.push(i), this;
3219
+ }
3220
+ p(o) {
3221
+ const i = typeof o == "number" ? `${o}px` : o, e = u.register("padding", i);
3222
+ return this._classNames.push(e), this;
3223
+ }
3224
+ px(o) {
3225
+ return this.paddingHorizontal(o);
3226
+ }
3227
+ py(o) {
3228
+ return this.paddingVertical(o);
3229
+ }
3230
+ paddingX(o) {
3231
+ return this.paddingHorizontal(o);
3232
+ }
3233
+ paddingY(o) {
3234
+ return this.paddingVertical(o);
3235
+ }
3236
+ m(o) {
3237
+ const i = typeof o == "number" ? `${o}px` : o, e = u.register("margin", i);
3238
+ return this._classNames.push(e), this;
3239
+ }
3240
+ mx(o) {
3241
+ return this.marginHorizontal(o);
3242
+ }
3243
+ my(o) {
3244
+ return this.marginVertical(o);
3245
+ }
3246
+ marginX(o) {
3247
+ return this.marginHorizontal(o);
3248
+ }
3249
+ marginY(o) {
3250
+ return this.marginVertical(o);
3251
+ }
3252
+ bg(o) {
3253
+ const i = typeof o == "string" && !o.startsWith("#") && !o.startsWith("rgb") ? this.resolveSemanticColor(o) : o, e = u.register("background-color", i);
3254
+ return this._classNames.push(e), this;
3255
+ }
3256
+ text(o) {
3257
+ const i = typeof o == "string" && !o.startsWith("#") && !o.startsWith("rgb") ? this.resolveSemanticColor(o) : o, e = u.register("color", i);
3258
+ return this._classNames.push(e), this;
3259
+ }
3260
+ color(o) {
3261
+ const i = typeof o == "string" && !o.startsWith("#") && !o.startsWith("rgb") ? this.resolveSemanticColor(o) : o, e = u.register("color", i);
3262
+ return this._classNames.push(e), this;
3263
+ }
3264
+ resolveSemanticColor(o) {
3265
+ return [
3266
+ "primary",
3267
+ "on-primary",
3268
+ "primary-container",
3269
+ "on-primary-container",
3270
+ "secondary",
3271
+ "on-secondary",
3272
+ "secondary-container",
3273
+ "on-secondary-container",
3274
+ "tertiary",
3275
+ "on-tertiary",
3276
+ "tertiary-container",
3277
+ "on-tertiary-container",
3278
+ "error",
3279
+ "on-error",
3280
+ "background",
3281
+ "on-background",
3282
+ "surface",
3283
+ "on-surface",
3284
+ "surface-variant",
3285
+ "on-surface-variant",
3286
+ "outline"
3287
+ ].includes(o) ? `var(--fibo-${o})` : o;
3288
+ }
3289
+ shadow(o) {
3290
+ if (o === null || o === "none") {
3291
+ const f = u.register("box-shadow", "none");
3292
+ return this._classNames.push(f), this;
3293
+ }
3294
+ const i = {
3295
+ sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)",
3296
+ md: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
3297
+ lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",
3298
+ xl: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",
3299
+ "2xl": "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
3300
+ card: "0 2px 8px rgba(0, 0, 0, 0.1)",
3301
+ button: "0 2px 4px rgba(0, 0, 0, 0.12)",
3302
+ modal: "0 10px 40px rgba(0, 0, 0, 0.2)",
3303
+ float: "0 8px 16px rgba(0, 0, 0, 0.15)",
3304
+ inner: "inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)"
3305
+ }, e = (f) => f.startsWith("#") || f.startsWith("rgb") || f.startsWith("hsl") || ["red", "blue", "green", "yellow", "purple", "pink", "orange", "white", "black", "gray"].some((n) => f.includes(n)), r = (f, n, s, c) => {
3306
+ let l = s || "rgba(0, 0, 0, " + (c ?? 0.1) + ")";
3307
+ if (s && s.startsWith("#") && c !== void 0) {
3308
+ const m = parseInt(s.slice(1, 3), 16), d = parseInt(s.slice(3, 5), 16), k = parseInt(s.slice(5, 7), 16);
3309
+ l = `rgba(${m}, ${d}, ${k}, ${c})`;
3310
+ }
3311
+ const p = {
3312
+ sm: "2px",
3313
+ md: "4px",
3314
+ lg: "8px",
3315
+ xl: "12px",
3316
+ "2xl": "16px"
3317
+ }[n] || "4px";
3318
+ switch (f) {
3319
+ case "top":
3320
+ return `0 -${p} ${p} -1px ${l}`;
3321
+ case "bottom":
3322
+ return `0 ${p} ${p} -1px ${l}`;
3323
+ case "left":
3324
+ return `-${p} 0 ${p} -1px ${l}`;
3325
+ case "right":
3326
+ return `${p} 0 ${p} -1px ${l}`;
3327
+ case "top-bottom":
3328
+ case "vertical":
3329
+ return `0 -${p} ${p} -1px ${l}, 0 ${p} ${p} -1px ${l}`;
3330
+ case "left-right":
3331
+ case "horizontal":
3332
+ return `-${p} 0 ${p} -1px ${l}, ${p} 0 ${p} -1px ${l}`;
3333
+ case "all":
3334
+ default:
3335
+ return i[n] || i.md;
3336
+ }
3337
+ };
3338
+ if (!o) {
3339
+ const f = u.register("box-shadow", i.md);
3340
+ return this._classNames.push(f), this;
3341
+ }
3342
+ if (typeof o == "string") {
3343
+ if (e(o)) {
3344
+ const s = r("all", "md", o), c = u.register("box-shadow", s);
3345
+ return this._classNames.push(c), this;
3346
+ }
3347
+ const f = i[o] || i.md, n = u.register("box-shadow", f);
3348
+ return this._classNames.push(n), this;
3349
+ }
3350
+ if (Array.isArray(o)) {
3351
+ const [f, n, s, c] = o;
3352
+ if (typeof f == "string" && e(f)) {
3353
+ const l = r("all", "md", f, n), x = u.register("box-shadow", l);
3354
+ return this._classNames.push(x), this;
3355
+ }
3356
+ const h = f;
3357
+ if (typeof n == "string" && e(n)) {
3358
+ const l = r(h, "md", n, s), x = u.register("box-shadow", l);
3359
+ return this._classNames.push(x), this;
3360
+ } else {
3361
+ const x = r(h, n, s, c), p = u.register("box-shadow", x);
3362
+ return this._classNames.push(p), this;
3363
+ }
3364
+ }
3365
+ return this;
3366
+ }
3367
+ /**
3368
+ * Breakpoint styles compiled to CSS `@media` (same engine as `.md()`).
3369
+ * Tiers stay mutually exclusive: mobile `<768`, tablet `768–1023`, desktop `≥1024`.
3370
+ * No `window.innerWidth` — hydrate-safe.
3371
+ */
3372
+ responsive(o) {
3373
+ return this.registerMediaStyles("(max-width: 767px)", o.mobile), this.registerMediaStyles("(min-width: 768px) and (max-width: 1023px)", o.tablet), this.registerMediaStyles("(min-width: 1024px)", o.desktop), this;
3374
+ }
3375
+ /**
3376
+ * CSS `@media` (min-width or a raw query). Compiles to a class — no resize JS.
3377
+ *
3378
+ * @example Box().padding(8).media('md', { padding: 16 }).media('(prefers-color-scheme: dark)', { backgroundColor: '#111' })
3379
+ */
3380
+ media(o, i) {
3381
+ return this.registerMediaStyles(Qo(o), i), this;
3382
+ }
3383
+ registerMediaStyles(o, i) {
3384
+ if (!i) return;
3385
+ const e = /* @__PURE__ */ new Set([
3386
+ "opacity",
3387
+ "zIndex",
3388
+ "z-index",
3389
+ "flex",
3390
+ "flexGrow",
3391
+ "flexShrink",
3392
+ "order",
3393
+ "fontWeight",
3394
+ "lineHeight"
3395
+ ]);
3396
+ for (const [r, f] of Object.entries(i)) {
3397
+ if (f == null) continue;
3398
+ const n = r.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`), s = typeof f == "number" && !e.has(r) && !e.has(n) ? `${f}px` : String(f);
3399
+ this._classNames.push(u.registerMedia(o, n, s));
3400
+ }
3401
+ }
3402
+ sm(o) {
3403
+ return this.media("sm", o);
3404
+ }
3405
+ md(o) {
3406
+ return this.media("md", o);
3407
+ }
3408
+ lg(o) {
3409
+ return this.media("lg", o);
3410
+ }
3411
+ xl(o) {
3412
+ return this.media("xl", o);
3413
+ }
3414
+ rounded(o) {
3415
+ if (typeof o == "number") {
3416
+ const i = u.register("border-radius", `${o}px`);
3417
+ this._classNames.push(i);
3418
+ } else if (typeof o == "string" && (o.startsWith("rounded-") || ["sm", "md", "lg", "xl", "2xl", "3xl", "full", "none"].includes(o))) {
3419
+ const i = o.startsWith("rounded-") ? o : `rounded-${o}`;
3420
+ this._classNames.push(i);
3421
+ } else {
3422
+ const i = u.register("border-radius", o);
3423
+ this._classNames.push(i);
3424
+ }
3425
+ return this;
3426
+ }
3427
+ borderRadius(o) {
3428
+ if (typeof o == "number") {
3429
+ const i = u.register("border-radius", `${o}px`);
3430
+ this._classNames.push(i);
3431
+ } else {
3432
+ const i = u.register("border-radius", o);
3433
+ this._classNames.push(i);
3434
+ }
3435
+ return this;
3436
+ }
3437
+ borderColor(o) {
3438
+ if (o.startsWith("border-"))
3439
+ this._classNames.push(o);
3440
+ else if (["red", "blue", "green", "gray", "white", "black", "transparent"].some((i) => o.includes(i)))
3441
+ this._classNames.push(`border-${o}`);
3442
+ else {
3443
+ const i = u.register("border-color", o);
3444
+ this._classNames.push(i);
3445
+ }
3446
+ return this;
3447
+ }
3448
+ width(o) {
3449
+ if (typeof o == "number") {
3450
+ const i = u.register("width", `${o}px`);
3451
+ this._classNames.push(i);
3452
+ } else if (typeof o == "string" && (o.startsWith("w-") || o === "full" || o === "screen" || o === "min" || o === "max" || o === "fit")) {
3453
+ const i = o.startsWith("w-") ? o : `w-${o}`;
3454
+ this._classNames.push(i);
3455
+ } else {
3456
+ const i = u.register("width", o);
3457
+ this._classNames.push(i);
3458
+ }
3459
+ return this;
3460
+ }
3461
+ height(o) {
3462
+ if (typeof o == "number") {
3463
+ const i = u.register("height", `${o}px`);
3464
+ this._classNames.push(i);
3465
+ } else if (typeof o == "string" && (o.startsWith("h-") || o === "full" || o === "screen" || o === "min" || o === "max" || o === "fit")) {
3466
+ const i = o.startsWith("h-") ? o : `h-${o}`;
3467
+ this._classNames.push(i);
3468
+ } else {
3469
+ const i = u.register("height", o);
3470
+ this._classNames.push(i);
3471
+ }
3472
+ return this;
3473
+ }
3474
+ gap(o) {
3475
+ if (typeof o == "number") {
3476
+ const i = u.register("gap", `${o}px`);
3477
+ this._classNames.push(i);
3478
+ } else if (typeof o == "string" && o.startsWith("gap-"))
3479
+ this._classNames.push(o);
3480
+ else {
3481
+ const i = u.register("gap", o);
3482
+ this._classNames.push(i);
3483
+ }
3484
+ return this;
3485
+ }
3486
+ clean() {
3487
+ return this._classNames.push(
3488
+ "[&_input]:outline-none",
3489
+ "[&_input]:ring-0",
3490
+ "[&_input]:border-none",
3491
+ "[&_input]:!shadow-none",
3492
+ "[&_input]:bg-transparent",
3493
+ "[&_input]:h-full",
3494
+ "[&_input]:w-full",
3495
+ "[&_input]:p-0",
3496
+ "[&_textarea]:outline-none",
3497
+ "[&_textarea]:ring-0",
3498
+ "[&_textarea]:border-none",
3499
+ "[&_textarea]:!shadow-none",
3500
+ "[&_textarea]:bg-transparent",
3501
+ "[&_textarea]:h-full",
3502
+ "[&_textarea]:w-full",
3503
+ "[&_textarea]:p-0",
3504
+ "[&_select]:outline-none",
3505
+ "[&_select]:ring-0",
3506
+ "[&_select]:border-none",
3507
+ "[&_select]:!shadow-none",
3508
+ "[&_select]:bg-transparent",
3509
+ "[&_select]:h-full",
3510
+ "[&_select]:w-full",
3511
+ "[&_select]:p-0",
3512
+ "[&_.fibo-textfield-input]:outline-none",
3513
+ "[&_.fibo-textfield-input]:ring-0",
3514
+ "[&_.fibo-textfield-input]:border-none",
3515
+ "[&_.fibo-textfield-input]:!shadow-none",
3516
+ "[&_.fibo-textfield-input]:bg-transparent",
3517
+ "[&_.fibo-textfield-input]:h-full",
3518
+ "[&_.fibo-textfield-input]:w-full",
3519
+ "[&_.fibo-textfield-input]:p-0",
3520
+ "[&_.fibo-textarea-input]:outline-none",
3521
+ "[&_.fibo-textarea-input]:ring-0",
3522
+ "[&_.fibo-textarea-input]:border-none",
3523
+ "[&_.fibo-textarea-input]:!shadow-none",
3524
+ "[&_.fibo-textarea-input]:bg-transparent",
3525
+ "[&_.fibo-textarea-input]:h-full",
3526
+ "[&_.fibo-textarea-input]:w-full",
3527
+ "[&_.fibo-textarea-input]:p-0",
3528
+ "[&>div]:h-full"
3529
+ ), this;
3530
+ }
3531
+ borderInput(o = "gray-300", i = "blue-500") {
3532
+ const e = (n) => ["red", "blue", "green", "yellow", "purple", "pink", "indigo", "gray", "orange", "teal", "cyan", "emerald", "lime", "amber", "fuchsia", "rose", "violet", "sky", "slate", "zinc", "neutral", "stone"].includes(n) ? `${n}-500` : n, r = e(o), f = e(i);
3533
+ return this._classNames.push(
3534
+ "border",
3535
+ `border-${r}`,
3536
+ "focus-within:ring-2",
3537
+ `focus-within:ring-${f}`,
3538
+ `focus-within:border-${f}`
3539
+ ), this.clean();
3540
+ }
3541
+ weight(o) {
3542
+ if (typeof o == "number") {
3543
+ const i = u.register("font-weight", String(o));
3544
+ this._classNames.push(i);
3545
+ } else {
3546
+ const i = {
3547
+ thin: "font-thin",
3548
+ extralight: "font-extralight",
3549
+ light: "font-light",
3550
+ normal: "font-normal",
3551
+ medium: "font-medium",
3552
+ semibold: "font-semibold",
3553
+ bold: "font-bold",
3554
+ extrabold: "font-extrabold",
3555
+ black: "font-black"
3556
+ };
3557
+ if (i[o])
3558
+ this._classNames.push(i[o]);
3559
+ else {
3560
+ const e = u.register("font-weight", o);
3561
+ this._classNames.push(e);
3562
+ }
3563
+ }
3564
+ return this;
3565
+ }
3566
+ onClick(o) {
3567
+ return this._props.onClick = o, this;
3568
+ }
3569
+ state(o, i) {
3570
+ return this._state.set(o, i), this;
3571
+ }
3572
+ getState(o) {
3573
+ return this._state.get(o);
3574
+ }
3575
+ setState(o, i) {
3576
+ return this._state.set(o, i), this;
3577
+ }
3578
+ provide(o, i) {
3579
+ return this._providers.set(o, i), this;
3580
+ }
3581
+ consume(o) {
3582
+ return this._providers.get(o);
3583
+ }
3584
+ observer(o) {
3585
+ return this._isObserver = !0, typeof o == "object" && o !== null ? o.key !== void 0 && this.key(o.key) : o !== void 0 && this.key(o), this;
3586
+ }
3587
+ observe(o) {
3588
+ return this._observers.add(o), this;
3589
+ }
3590
+ bindSignal(o) {
3591
+ return this._signals.add(o), this;
3592
+ }
3593
+ translateX(o) {
3594
+ return o instanceof R ? this._animatedProps.set("translateX", o) : this._transforms.push(`translateX(${o}px)`), this;
3595
+ }
3596
+ translateY(o) {
3597
+ return o instanceof R ? this._animatedProps.set("translateY", o) : this._transforms.push(`translateY(${o}px)`), this;
3598
+ }
3599
+ scale(o) {
3600
+ return o instanceof R ? this._animatedProps.set("scale", o) : this._transforms.push(`scale(${o})`), this;
3601
+ }
3602
+ rotate(o) {
3603
+ return o instanceof R ? this._animatedProps.set("rotate", o) : this._transforms.push(`rotate(${o}deg)`), this;
3604
+ }
3605
+ gesture(o) {
3606
+ return this._gesture = o, this;
3607
+ }
3608
+ animation(o) {
3609
+ return this._animationConfig = o, this;
3610
+ }
3611
+ hasStateManagement() {
3612
+ return this._state.size > 0 || this._providers.size > 0 || this._observers.size > 0 || this._signals.size > 0 || this._isObserver || this._animatedProps.size > 0;
3613
+ }
3614
+ className(o) {
3615
+ return this._classNames.push(o), this;
3616
+ }
3617
+ classNames(o) {
3618
+ return this._classNames.push(...o), this;
3619
+ }
3620
+ css(o) {
3621
+ return this._cssStyles = { ...this._cssStyles, ...o }, this;
3622
+ }
3623
+ style(o) {
3624
+ return this._style = { ...this._style, ...o }, this;
3625
+ }
3626
+ props(o) {
3627
+ return this._props = { ...this._props, ...o }, this;
3628
+ }
3629
+ transition(o, i, e, r) {
3630
+ if (this._autoEffectTransition = !1, this._effectTransitionProps = [], typeof o == "string" && i === void 0)
3631
+ return this.replaceTransitionClass(u.register("transition", o)), this;
3632
+ const f = Array.isArray(o) ? o.join(", ") : o, n = `${i || this._transitionDuration}ms`, s = $(e || this._transitionEasing), c = r ? `${r}ms` : "0ms";
3633
+ return this.replaceTransitionClass(u.register("transition", `${f} ${n} ${s} ${c}`)), this;
3634
+ }
3635
+ /**
3636
+ * Set transition duration in milliseconds
3637
+ * Example: .duration(200) → 200ms
3638
+ */
3639
+ duration(o) {
3640
+ return this._transitionDuration = o, this._motionClass ? (this._style["--fibo-dur"] = `${o}ms`, this) : (this._applyTransition(), this);
3641
+ }
3642
+ /**
3643
+ * Set transition easing function
3644
+ * Example: .easing('ease-in-out')
3645
+ */
3646
+ easing(o) {
3647
+ return this._transitionEasing = $(o), this._motionClass ? (this._style["--fibo-ease"] = this._transitionEasing, this) : (this._applyTransition(), this);
3648
+ }
3649
+ /** Alias of `.easing()`. `'spring'` becomes CSS `linear()`. */
3650
+ ease(o) {
3651
+ return this.easing(o);
3652
+ }
3653
+ /**
3654
+ * Set transition delay in milliseconds
3655
+ * Example: .delay(100) → 100ms delay
3656
+ */
3657
+ delay(o) {
3658
+ return this._transitionDelay = o, this._motionClass ? (this._style["--fibo-delay"] = `${o}ms`, this) : (this._applyTransition(), this);
3659
+ }
3660
+ /**
3661
+ * Set which properties to transition
3662
+ * Example: .properties(['color', 'transform'])
3663
+ */
3664
+ properties(o) {
3665
+ return this._transitionProperties = o, this._applyTransition(), this;
3666
+ }
3667
+ /**
3668
+ * Apply the built transition to the element
3669
+ */
3670
+ _applyTransition() {
3671
+ this._autoEffectTransition = !1, this._effectTransitionProps = [];
3672
+ const o = this._transitionProperties.join(", "), i = `${this._transitionDuration}ms`, e = this._transitionEasing, r = this._transitionDelay > 0 ? `${this._transitionDelay}ms` : "0ms";
3673
+ this.replaceTransitionClass(u.register("transition", `${o} ${i} ${e} ${r}`));
3674
+ }
3675
+ replaceTransitionClass(o) {
3676
+ this._transitionClass && (this._classNames = this._classNames.filter((i) => i !== this._transitionClass)), this._transitionClass = o, this._classNames.push(o);
3677
+ }
3678
+ animate(o, i) {
3679
+ w(), this._usesCssMotion = !0, this._motionClass && (this._classNames = this._classNames.filter((b) => b !== this._motionClass));
3680
+ const e = Uo(o), r = (e ? o.duration : i == null ? void 0 : i.duration) ?? this._transitionDuration, f = (e ? o.delay : i == null ? void 0 : i.delay) ?? this._transitionDelay;
3681
+ let n = e ? o.ease : i == null ? void 0 : i.ease;
3682
+ const s = {
3683
+ stiffness: (e ? o.stiffness : i == null ? void 0 : i.stiffness) ?? void 0,
3684
+ damping: (e ? o.damping : i == null ? void 0 : i.damping) ?? void 0,
3685
+ mass: (e ? o.mass : i == null ? void 0 : i.mass) ?? void 0
3686
+ };
3687
+ if (e) {
3688
+ const b = K(o.from), l = K(o.to), x = u.registerKeyframes(Go(`${b}=>${l}`), b, l);
3689
+ this._motionClass = `fibo-anim ${x}`, this._props["data-fibo-anim"] = "custom";
3690
+ } else {
3691
+ const b = Ko(o);
3692
+ this._motionClass = `fibo-anim fibo-anim-${b}`, this._props["data-fibo-anim"] = b, (i == null ? void 0 : i.from) !== void 0 && (this._style["--fibo-from"] = typeof i.from == "number" ? `${i.from}px` : i.from), !n && b === "pop" && (n = "spring");
3693
+ }
3694
+ const c = $(n ?? "ease", s);
3695
+ this._classNames.push(this._motionClass);
3696
+ const h = this._style;
3697
+ return h["--fibo-dur"] = `${r}ms`, h["--fibo-ease"] = c, h["--fibo-delay"] = `${f}ms`, this._reducedMotion === "never" && !this._classNames.includes("fibo-motion-force") && this._classNames.push("fibo-motion-force"), this;
3698
+ }
3699
+ /** CSS `linear()` spring. Works on `.animate()` and `.transition()` / `.hover()`. */
3700
+ spring(o) {
3701
+ const i = ao(o);
3702
+ return this._transitionEasing = i, this._motionClass ? (this._style["--fibo-ease"] = i, this) : (this._applyTransition(), this);
3703
+ }
3704
+ reducedMotion(o = "reduce") {
3705
+ return this._reducedMotion = o, o === "never" && !this._classNames.includes("fibo-motion-force") && this._classNames.push("fibo-motion-force"), this;
3706
+ }
3707
+ press(o) {
3708
+ return this.ensureInteractiveTransition(), o ? (this.active(o), this) : (this.active((i) => {
3709
+ i.scale(0.97);
3710
+ }), this);
3711
+ }
3712
+ /**
3713
+ * Shortcut: `.hover(h => h.effect(name))`.
3714
+ * Named interaction effect on `:hover` (forward, float, grow, nudge, …).
3715
+ */
3716
+ hoverEffect(o) {
3717
+ return this.hover((i) => {
3718
+ i.effect(o);
3719
+ });
3720
+ }
3721
+ /**
3722
+ * Shortcut: `.press(p => p.effect(name))` (maps to `:active`).
3723
+ */
3724
+ pressEffect(o) {
3725
+ return this.press((i) => {
3726
+ i.effect(o);
3727
+ });
3728
+ }
3729
+ /**
3730
+ * Shortcut: `.focus(f => f.effect(name))`.
3731
+ */
3732
+ focusEffect(o) {
3733
+ return this.focus((i) => {
3734
+ i.effect(o);
3735
+ });
3736
+ }
3737
+ /**
3738
+ * Shortcut: `.active(a => a.effect(name))`.
3739
+ */
3740
+ activeEffect(o) {
3741
+ return this.active((i) => {
3742
+ i.effect(o);
3743
+ });
3744
+ }
3745
+ /**
3746
+ * Shortcut: `.groupHover(h => h.effect(name))`.
3747
+ */
3748
+ groupHoverEffect(o) {
3749
+ return this.groupHover((i) => {
3750
+ i.effect(o);
3751
+ });
3752
+ }
3753
+ focusVisible(o) {
3754
+ const i = new v("focus-visible", this);
3755
+ return o ? (o(i), this) : i;
3756
+ }
3757
+ stagger(o) {
3758
+ return this._staggerMs = o, this._usesCssMotion = !0, this._style["--fibo-stagger"] = `${o}ms`, w(), this;
3759
+ }
3760
+ /** Scroll-reveal: IntersectionObserver toggles `.fibo-inview`. */
3761
+ reveal(o = "fadeUp") {
3762
+ return this._reveal = typeof o == "string" ? { preset: o, once: !0 } : { preset: "fadeUp", once: !0, ...o }, this._usesCssMotion = !0, w(), this;
3763
+ }
3764
+ /** Alias of `.reveal()` for scroll-triggered presets. */
3765
+ onScroll(o = "fadeIn") {
3766
+ return this.reveal(o);
3767
+ }
3768
+ /** CSS `animation-timeline: view()` / `scroll()`; IntersectionObserver reveal is the fallback. */
3769
+ scrollTimeline(o = "view") {
3770
+ return w(), this._classNames.push(o === "scroll" ? "fibo-scroll-timeline" : "fibo-view-timeline"), this._usesCssMotion = !0, o === "view" && !this._reveal && (this._reveal = { preset: "fadeUp", once: !0 }), this;
3771
+ }
3772
+ scrollProgress() {
3773
+ return w(), this._scrollProgress = !0, this._classNames.push("fibo-scroll-progress"), this._usesCssMotion = !0, this;
3774
+ }
3775
+ smoothScroll() {
3776
+ return this._classNames.push(u.register("scroll-behavior", "smooth")), this;
3777
+ }
3778
+ scrollSnap(o = "y") {
3779
+ return w(), this._classNames.push(`fibo-snap-${o}`), this;
3780
+ }
3781
+ scrollSnapAlign(o = "start") {
3782
+ return w(), this._classNames.push(`fibo-snap-${o}`), this;
3783
+ }
3784
+ sticky(o = 0) {
3785
+ if (o === !1) return this;
3786
+ this._classNames.push(u.register("position", "sticky"));
3787
+ const i = o === !0 ? "0px" : typeof o == "number" ? `${o}px` : o;
3788
+ this._classNames.push(u.register("top", i));
3789
+ const e = o === !0 || o === 0 ? wi : typeof o == "number" ? `${Math.max(o, xo)}px` : o;
3790
+ return this.publishStickyOffset(e), this;
3791
+ }
3792
+ /**
3793
+ * Publish `--fibo-sticky-offset` on `:root` so `.anchor()` / `html` scroll-padding
3794
+ * clear this bar. Header uses the real bar height.
3795
+ */
3796
+ publishStickyOffset(o) {
3797
+ const i = typeof o == "number" ? `${o}px` : o;
3798
+ u.registerRoot("--fibo-sticky-offset", i), u.ensureScrollPadding();
3799
+ }
3800
+ viewTransition(o) {
3801
+ return this._viewTransition = o, this._style.viewTransitionName = o, this;
3802
+ }
3803
+ /** Default `:focus-visible` ring. Pass a callback to customize. */
3804
+ focusRing(o = "var(--fibo-primary)") {
3805
+ return this.focusVisible((i) => {
3806
+ i.css("outline", `2px solid ${o}`), i.css("outline-offset", "2px");
3807
+ }), this;
3808
+ }
3809
+ ensureInteractiveTransition() {
3810
+ this.ensureEffectTransition([
3811
+ "transform",
3812
+ "opacity",
3813
+ "box-shadow",
3814
+ "background-color",
3815
+ "border-color"
3816
+ ]);
3817
+ }
3818
+ /**
3819
+ * Ensure the base element transitions the properties an interaction effect needs.
3820
+ * Expands an auto-managed transition; no-ops if the caller set `.transition(...)`
3821
+ * explicitly or a motion animation class is present.
3822
+ * @internal Used by PseudoStateBuilder.effect() and hover/press shortcuts.
3823
+ */
3824
+ ensureEffectTransition(o) {
3825
+ if (this._motionClass || this._transitionClass && !this._autoEffectTransition) return;
3826
+ const i = new Set(this._effectTransitionProps);
3827
+ for (const e of o) i.add(e);
3828
+ i.add("transform"), i.add("opacity"), this._effectTransitionProps = [...i], this._autoEffectTransition = !0, this.replaceTransitionClass(
3829
+ u.register(
3830
+ "transition",
3831
+ `${this._effectTransitionProps.join(", ")} ${this._transitionDuration}ms ${this._transitionEasing}`
3832
+ )
3833
+ );
3834
+ }
3835
+ /**
3836
+ * Apply a theme to this node and descendants (CSS vars inherit).
3837
+ * Fluent: `.theme("noir")` | `.theme(noirTheme)` | `.theme(extendTheme(webTheme, {…}))`.
3838
+ * SSR-safe: class + inline vars on first paint (no useEffect).
3839
+ */
3840
+ theme(o) {
3841
+ const i = zo(o);
3842
+ return this._theme = i, this.addClassName($o(i)), this;
3843
+ }
3844
+ /** Prefer dark/light system chrome for native controls under this subtree. */
3845
+ colorScheme(o) {
3846
+ return this._style = { ...this._style, colorScheme: o }, this;
3847
+ }
3848
+ hover(o) {
3849
+ this.ensureInteractiveTransition();
3850
+ const i = new v("hover", this);
3851
+ return o ? (o(i), this) : i;
3852
+ }
3853
+ focus(o) {
3854
+ const i = new v("focus", this);
3855
+ return o ? (o(i), this) : i;
3856
+ }
3857
+ active(o) {
3858
+ const i = new v("active", this);
3859
+ return o ? (o(i), this) : i;
3860
+ }
3861
+ visited(o) {
3862
+ const i = new v("visited", this);
3863
+ return o ? (o(i), this) : i;
3864
+ }
3865
+ disabledState(o) {
3866
+ const i = new v("disabled", this);
3867
+ return o ? (o(i), this) : i;
3868
+ }
3869
+ focusWithin(o) {
3870
+ const i = new v("focus-within", this);
3871
+ return o ? (o(i), this) : i;
3872
+ }
3873
+ firstChild(o) {
3874
+ const i = new v("first-child", this);
3875
+ return o ? (o(i), this) : i;
3876
+ }
3877
+ lastChild(o) {
3878
+ const i = new v("last-child", this);
3879
+ return o ? (o(i), this) : i;
3880
+ }
3881
+ groupHover(o) {
3882
+ const i = new v("hover", this, !0);
3883
+ return o ? (o(i), this) : i;
3884
+ }
3885
+ groupFocus(o) {
3886
+ const i = new v("focus", this, !0);
3887
+ return o ? (o(i), this) : i;
3888
+ }
3889
+ groupActive(o) {
3890
+ const i = new v("active", this, !0);
3891
+ return o ? (o(i), this) : i;
3892
+ }
3893
+ groupFocusWithin(o) {
3894
+ const i = new v("focus-within", this, !0);
3895
+ return o ? (o(i), this) : i;
3896
+ }
3897
+ group() {
3898
+ return this._classNames.push("group"), this;
3899
+ }
3900
+ children(o) {
3901
+ return typeof o == "function" ? (this._childFunction = o, this._children = []) : (this._children = H(o), this._childFunction = void 0), this;
3902
+ }
3903
+ getClassName() {
3904
+ let o;
3905
+ return Object.keys(this._cssStyles).length > 0 && (o = si(this._cssStyles) || void 0), Jo(this._classNames, o);
3906
+ }
3907
+ getStyle() {
3908
+ let o = { ...this._style, ...this._cssStyles };
3909
+ if (this._theme && (o = {
3910
+ ...So(this._theme),
3911
+ ...o,
3912
+ backgroundColor: o.backgroundColor ?? this._theme.colors.background,
3913
+ color: o.color ?? this._theme.colors.onBackground,
3914
+ fontFamily: o.fontFamily ?? this._theme.fontFamily
3915
+ }), this._transforms.length > 0) {
3916
+ const i = o.transform || "";
3917
+ o.transform = i ? `${i} ${this._transforms.join(" ")}` : this._transforms.join(" ");
3918
+ }
3919
+ if (this._animationConfig && this._animatedProps.size === 0) {
3920
+ const { duration: i = 300, curve: e = "easeOut", stiffness: r, damping: f } = this._animationConfig, n = $(e, { stiffness: r, damping: f });
3921
+ o.transition = `all ${i}ms ${n}`;
3922
+ }
3923
+ return o;
3924
+ }
3925
+ processChildren() {
3926
+ const o = this._childFunction ? H(this._childFunction) : this._children;
3927
+ return this._staggerMs == null ? o : o.map(
3928
+ (i, e) => g.createElement(
3929
+ "span",
3930
+ {
3931
+ key: g.isValidElement(i) && D(i.key) ? i.key : `fibo-stagger-${e}`,
3932
+ className: "fibo-stagger-item",
3933
+ style: { "--fibo-i": String(e) }
3934
+ },
3935
+ i
3936
+ )
3937
+ );
3938
+ }
3939
+ getChildFunction() {
3940
+ return this._childFunction;
3941
+ }
3942
+ }
3943
+ const ki = /* @__PURE__ */ new Set([
3944
+ "$$typeof",
3945
+ "type",
3946
+ "props",
3947
+ "ref",
3948
+ "_owner",
3949
+ "_store",
3950
+ "_self",
3951
+ "_source",
3952
+ "_debugStack",
3953
+ "_debugTask",
3954
+ "_debugInfo"
3955
+ ]);
3956
+ function yi(t) {
3957
+ var i;
3958
+ const o = (i = t._props) == null ? void 0 : i.key;
3959
+ if (!(o == null || o === ""))
3960
+ return o;
3961
+ }
3962
+ function _i(t) {
3963
+ const o = t._isObserver, i = t._signals, e = t._observers, r = t._state, f = t._providers, n = yi(t), s = () => {
3964
+ var z;
3965
+ let x = t.build();
3966
+ const p = t._animatedProps, m = t._animationConfig;
3967
+ p && p.size > 0 && (x = g.createElement(ci, {
3968
+ key: n,
3969
+ animatedProps: p,
3970
+ animationConfig: m,
3971
+ children: x
3972
+ }));
3973
+ const d = t._reveal;
3974
+ d && (x = g.createElement(mi, {
3975
+ key: n,
3976
+ preset: d.preset,
3977
+ once: d.once,
3978
+ rootMargin: d.rootMargin,
3979
+ threshold: d.threshold,
3980
+ forceMotion: t._reducedMotion === "never",
3981
+ preferTimeline: (z = t._classNames) == null ? void 0 : z.includes("fibo-view-timeline"),
3982
+ children: x
3983
+ })), t._scrollProgress && (x = g.createElement(vi, { key: n, children: x })), t._usesCssMotion && (x = g.createElement(
3984
+ g.Fragment,
3985
+ { key: n },
3986
+ g.createElement(Zo),
3987
+ x
3988
+ ));
3989
+ const k = t._gesture;
3990
+ return k && (x = k.wrap(x)), x;
3991
+ }, c = typeof t.hasStateManagement == "function" ? t.hasStateManagement() : !!(o || i && i.size || e && e.size || r && r.size || f && f.size), h = o ? g.createElement(Mo, {
3992
+ key: n,
3993
+ children: s
3994
+ }) : null, b = () => h ?? s();
3995
+ let l = b();
3996
+ return c && i && i.size > 0 ? l = g.createElement(Oo, {
3997
+ key: n,
3998
+ signals: i,
3999
+ children: b
4000
+ }) : c && e && e.size > 0 && (l = g.createElement(Lo, {
4001
+ key: n,
4002
+ observables: e,
4003
+ children: b
4004
+ })), c && r && r.size > 0 && (l = g.createElement(Bo, {
4005
+ key: n,
4006
+ stateMap: r,
4007
+ children: l
4008
+ })), c && f && f.size > 0 && (l = g.createElement(Po, {
4009
+ key: n,
4010
+ providers: f,
4011
+ children: l
4012
+ })), l;
4013
+ }
4014
+ function po(t, o, i) {
4015
+ const e = function() {
4016
+ return o();
4017
+ };
4018
+ e.displayName = i;
4019
+ const r = g.createElement(e);
4020
+ Object.defineProperty(t, "$$typeof", {
4021
+ value: r.$$typeof,
4022
+ enumerable: !0,
4023
+ configurable: !0
4024
+ }), Object.defineProperty(t, "type", {
4025
+ value: e,
4026
+ enumerable: !0,
4027
+ configurable: !0,
4028
+ writable: !0
4029
+ }), t.ref = r.ref ?? null, t.__fiboElementProps = r.props ?? {}, r._owner !== void 0 && (t._owner = r._owner), t._store = { validated: 1 };
4030
+ }
4031
+ function Di(t) {
4032
+ return (...o) => {
4033
+ const i = new t(...o), e = t.name.replace(/Builder$/, "") || "Fibo", r = () => _i(i);
4034
+ return po(i, r, e), new Proxy(i, {
4035
+ get(f, n, s) {
4036
+ var c, h;
4037
+ if (n === "build")
4038
+ return r;
4039
+ if (n === "key") {
4040
+ const b = (c = f._props) == null ? void 0 : c.key;
4041
+ if (b != null && b !== "")
4042
+ return String(b);
4043
+ if (!f.__fiboKeyFn) {
4044
+ const l = (x) => (f.key(x), s);
4045
+ f.__fiboKeyFn = l;
4046
+ }
4047
+ return f.__fiboKeyFn;
4048
+ }
4049
+ if (n === "props") {
4050
+ const b = (h = f._props) == null ? void 0 : h.key, l = {
4051
+ ...f.__fiboElementProps ?? {},
4052
+ ...b != null && b !== "" ? { key: String(b) } : {}
4053
+ }, x = Object.getPrototypeOf(f).props;
4054
+ return typeof x == "function" ? Object.assign((m) => (x.call(f, m), s), l) : l;
4055
+ }
4056
+ return ki.has(n) || Reflect.has(f, n) ? Reflect.get(f, n, s) : (b) => {
4057
+ const l = n.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase(), p = ["opacity", "z-index", "flex", "flex-grow", "flex-shrink", "order", "font-weight", "line-height"].includes(l), m = typeof b == "number" && !p ? `${b}px` : String(b), d = u.register(l, m);
4058
+ return f.className(d), s;
4059
+ };
4060
+ }
4061
+ });
4062
+ };
4063
+ }
4064
+ const zi = ({
4065
+ signal: t,
4066
+ builder: o,
4067
+ loading: i,
4068
+ error: e
4069
+ }) => {
4070
+ const r = g.useSyncExternalStore(
4071
+ g.useCallback((s) => t.subscribe ? t.subscribe(s) : () => {
4072
+ }, [t]),
4073
+ () => t.value
4074
+ ), f = r == null ? void 0 : r.error;
4075
+ return f && e ? e(f) : ((r == null ? void 0 : r.isLoading) || (r == null ? void 0 : r.loading)) === !0 && i ? i() : o ? o(r) : null;
4076
+ }, $i = g.memo(zi);
4077
+ class Si {
4078
+ constructor(o) {
4079
+ a(this, "_loading");
4080
+ a(this, "_error");
4081
+ a(this, "_builder");
4082
+ this._signal = o, po(this, () => this.build(), "ValueBuilder");
4083
+ }
4084
+ loading(o) {
4085
+ return this._loading = typeof o == "function" ? o : () => o, this;
4086
+ }
4087
+ error(o) {
4088
+ return this._error = o, this;
4089
+ }
4090
+ builder(o) {
4091
+ return this._builder = o, this;
4092
+ }
4093
+ children(o) {
4094
+ return this._builder = o, this;
4095
+ }
4096
+ build() {
4097
+ return g.createElement($i, {
4098
+ signal: this._signal,
4099
+ builder: this._builder,
4100
+ loading: this._loading,
4101
+ error: this._error
4102
+ });
4103
+ }
4104
+ }
4105
+ function Wi(t) {
4106
+ return new Si(t);
4107
+ }
4108
+ export {
4109
+ Oi as A,
4110
+ Di as B,
4111
+ To as C,
4112
+ Vi as D,
4113
+ Fo as E,
4114
+ xi as F,
4115
+ Eo as G,
4116
+ w as H,
4117
+ ho as I,
4118
+ Ko as J,
4119
+ Bo as K,
4120
+ Ao as L,
4121
+ G as M,
4122
+ jo as N,
4123
+ Io as O,
4124
+ Po as P,
4125
+ Vo as Q,
4126
+ Mi as R,
4127
+ R as S,
4128
+ H as T,
4129
+ Z as U,
4130
+ Wi as V,
4131
+ P as W,
4132
+ bo as X,
4133
+ Qo as Y,
4134
+ Fi as a,
4135
+ eo as b,
4136
+ Ri as c,
4137
+ Mo as d,
4138
+ Bi as e,
4139
+ mi as f,
4140
+ fo as g,
4141
+ vi as h,
4142
+ Ai as i,
4143
+ ji as j,
4144
+ gi as k,
4145
+ di as l,
4146
+ ao as m,
4147
+ $ as n,
4148
+ Xi as o,
4149
+ ui as p,
4150
+ hi as q,
4151
+ Co as r,
4152
+ Ii as s,
4153
+ bi as t,
4154
+ Yi as u,
4155
+ pi as v,
4156
+ Zo as w,
4157
+ Pi as x,
4158
+ Li as y,
4159
+ co as z
4160
+ };