@insforge/react 1.1.2 → 1.1.4-pkce.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.
package/dist/styles.css CHANGED
@@ -1,838 +1,838 @@
1
- /**
2
- * InsForge React Component Library Styles
3
- * Traditional CSS with scoped class names (no Tailwind)
4
- */
5
-
6
- /* ============================================
7
- FONTS
8
- ============================================ */
9
- @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');
10
- @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap');
11
-
12
- /* ============================================
13
- CSS VARIABLES
14
- ============================================ */
15
- :root {
16
- /* Colors */
17
- --if-color-primary: #000000;
18
- --if-color-primary-hover: #1f1f1f;
19
- --if-color-text: #000000;
20
- --if-color-text-secondary: #828282;
21
- --if-color-text-muted: #a3a3a3;
22
- --if-color-border: #d4d4d4;
23
- --if-color-border-focus: #000000;
24
- --if-color-bg-white: #ffffff;
25
- --if-color-bg-light: #fafafa;
26
- --if-color-bg-hover: #f9fafb;
27
- --if-color-error: #dc2626;
28
- --if-color-error-bg: #fee2e2;
29
- --if-color-success: #16a34a;
30
-
31
- /* Spacing */
32
- --if-space-1: 0.25rem; /* 4px */
33
- --if-space-2: 0.5rem; /* 8px */
34
- --if-space-3: 0.75rem; /* 12px */
35
- --if-space-4: 1rem; /* 16px */
36
- --if-space-6: 1.5rem; /* 24px */
37
- --if-space-8: 2rem; /* 32px */
38
-
39
- /* Border Radius */
40
- --if-radius-xs: 0.125rem; /* 2px */
41
- --if-radius-sm: 0.25rem; /* 4px */
42
- --if-radius-md: 0.375rem; /* 6px */
43
- --if-radius-lg: 0.5rem; /* 8px */
44
- --if-radius-xl: 0.75rem; /* 12px */
45
-
46
- /* Typography */
47
- --if-font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
48
- --if-font-family-manrope:
49
- 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
50
- --if-font-size-xs: 0.75rem; /* 12px */
51
- --if-font-size-sm: 0.875rem; /* 14px */
52
- --if-font-size-base: 1rem; /* 16px */
53
- --if-font-size-lg: 1.125rem; /* 18px */
54
- --if-font-size-xl: 1.25rem; /* 20px */
55
- --if-font-size-2xl: 1.5rem; /* 24px */
56
-
57
- /* Shadows */
58
- --if-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
59
- --if-shadow-md: 0 1px 2px 0 rgba(0, 0, 0, 0.1);
60
- --if-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
61
-
62
- /* Transitions */
63
- --if-transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
64
- --if-transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);
65
- }
66
-
67
- /* ============================================
68
- AUTH CONTAINER
69
- ============================================ */
70
- .if-authContainer {
71
- width: 100%;
72
- max-width: 400px;
73
- border-radius: var(--if-radius-xl);
74
- overflow: hidden;
75
- box-shadow: var(--if-shadow-lg);
76
- }
77
-
78
- .if-authCard {
79
- background-color: var(--if-color-bg-white);
80
- padding: var(--if-space-6);
81
- display: flex;
82
- flex-direction: column;
83
- justify-content: center;
84
- align-items: stretch;
85
- gap: var(--if-space-6);
86
- }
87
-
88
- /* ============================================
89
- AUTH HEADER
90
- ============================================ */
91
- .if-authHeader {
92
- display: flex;
93
- flex-direction: column;
94
- justify-content: flex-start;
95
- align-items: flex-start;
96
- gap: var(--if-space-2);
97
- }
98
-
99
- .if-authHeader-title {
100
- font-size: var(--if-font-size-2xl);
101
- font-weight: 600;
102
- color: var(--if-color-text);
103
- line-height: 2rem;
104
- margin: 0;
105
- font-family: var(--if-font-family);
106
- }
107
-
108
- .if-authHeader-subtitle {
109
- font-size: var(--if-font-size-sm);
110
- font-weight: 400;
111
- color: var(--if-color-text-secondary);
112
- line-height: 1.5rem;
113
- margin: 0;
114
- font-family: var(--if-font-family);
115
- }
116
-
117
- /* ============================================
118
- FORM FIELD
119
- ============================================ */
120
- .if-formField {
121
- display: flex;
122
- flex-direction: column;
123
- justify-content: center;
124
- align-items: stretch;
125
- gap: var(--if-space-1);
126
- }
127
-
128
- .if-formField-label {
129
- font-size: var(--if-font-size-sm);
130
- font-weight: 400;
131
- color: var(--if-color-text);
132
- line-height: 1.5rem;
133
- font-family: var(--if-font-family);
134
- }
135
-
136
- .if-formField-input {
137
- width: 100%;
138
- display: flex;
139
- align-items: center;
140
- gap: var(--if-space-2);
141
- align-self: stretch;
142
- padding: var(--if-space-2) var(--if-space-3);
143
- border-radius: var(--if-radius-sm);
144
- border: 1px solid var(--if-color-border);
145
- background-color: var(--if-color-bg-white);
146
- font-size: var(--if-font-size-sm);
147
- font-weight: 400;
148
- line-height: 1.25rem;
149
- color: var(--if-color-text);
150
- font-family: var(--if-font-family);
151
- transition: border-color var(--if-transition-base);
152
- }
153
-
154
- .if-formField-input::placeholder {
155
- color: var(--if-color-text-muted);
156
- font-size: var(--if-font-size-sm);
157
- font-weight: 400;
158
- }
159
-
160
- .if-formField-input:focus {
161
- outline: none;
162
- border-color: var(--if-color-border-focus);
163
- }
164
-
165
- /* ============================================
166
- PASSWORD FIELD
167
- ============================================ */
168
- .if-passwordField {
169
- display: flex;
170
- flex-direction: column;
171
- justify-content: center;
172
- align-items: stretch;
173
- gap: var(--if-space-1);
174
- }
175
-
176
- .if-passwordField-labelRow {
177
- display: flex;
178
- justify-content: space-between;
179
- align-items: center;
180
- }
181
-
182
- .if-passwordField-label {
183
- font-size: var(--if-font-size-sm);
184
- font-weight: 400;
185
- color: var(--if-color-text);
186
- line-height: 1.5rem;
187
- font-family: var(--if-font-family);
188
- }
189
-
190
- .if-passwordField-forgotLink {
191
- font-size: var(--if-font-size-sm);
192
- font-weight: 400;
193
- color: var(--if-color-text-secondary);
194
- text-decoration: none;
195
- transition: color var(--if-transition-fast);
196
- font-family: var(--if-font-family);
197
- }
198
-
199
- .if-passwordField-inputWrapper {
200
- position: relative;
201
- width: 100%;
202
- }
203
-
204
- .if-passwordField-input {
205
- width: 100%;
206
- display: flex;
207
- align-items: center;
208
- align-self: stretch;
209
- padding: var(--if-space-2) var(--if-space-3);
210
- padding-right: 2.5rem; /* Space for toggle button */
211
- border-radius: var(--if-radius-sm);
212
- border: 1px solid var(--if-color-border);
213
- background-color: var(--if-color-bg-white);
214
- font-size: var(--if-font-size-sm);
215
- font-weight: 400;
216
- line-height: 1.25rem;
217
- color: var(--if-color-text);
218
- font-family: var(--if-font-family);
219
- transition: border-color var(--if-transition-base);
220
- }
221
-
222
- .if-passwordField-input::placeholder {
223
- color: var(--if-color-text-muted);
224
- }
225
-
226
- .if-passwordField-input:focus {
227
- outline: none;
228
- border-color: var(--if-color-border-focus);
229
- }
230
-
231
- .if-passwordField-toggleButton {
232
- position: absolute;
233
- right: var(--if-space-1);
234
- top: 50%;
235
- transform: translateY(-50%);
236
- background: none;
237
- border: none;
238
- cursor: pointer;
239
- padding: var(--if-space-1);
240
- display: flex;
241
- align-items: center;
242
- justify-content: center;
243
- color: var(--if-color-text-secondary);
244
- transition: color var(--if-transition-fast);
245
- }
246
-
247
- /* ============================================
248
- SUBMIT BUTTON
249
- ============================================ */
250
- .if-submitButton {
251
- border-radius: var(--if-radius-sm);
252
- background-color: var(--if-color-primary);
253
- height: 2.5rem;
254
- width: 100%;
255
- display: flex;
256
- margin-top: var(--if-space-4);
257
- padding: var(--if-space-2) var(--if-space-4);
258
- justify-content: center;
259
- align-items: center;
260
- gap: 0.625rem;
261
- align-self: stretch;
262
- color: var(--if-color-bg-white);
263
- font-weight: 600;
264
- font-family: var(--if-font-family-manrope);
265
- font-size: var(--if-font-size-base);
266
- line-height: normal;
267
- border: none;
268
- cursor: pointer;
269
- transition: background-color var(--if-transition-base);
270
- }
271
-
272
- .if-submitButton:hover:not(:disabled) {
273
- background-color: var(--if-color-primary-hover);
274
- }
275
-
276
- .if-submitButton:disabled {
277
- opacity: 0.5;
278
- cursor: not-allowed;
279
- }
280
-
281
- .if-submitButton-icon {
282
- width: 1.25rem;
283
- height: 1.25rem;
284
- }
285
-
286
- /* Spinner animation */
287
- @keyframes if-spin {
288
- from {
289
- transform: rotate(0deg);
290
- }
291
- to {
292
- transform: rotate(360deg);
293
- }
294
- }
295
-
296
- .if-submitButton-spinner {
297
- animation: if-spin 1s linear infinite;
298
- }
299
-
300
- /* ============================================
301
- OAUTH BUTTON
302
- ============================================ */
303
- .if-oauthButton {
304
- display: flex;
305
- width: 100%;
306
- height: 2.25rem;
307
- padding: var(--if-space-2) var(--if-space-3);
308
- flex-direction: row;
309
- justify-content: center;
310
- align-items: center;
311
- gap: var(--if-space-3);
312
- border-radius: var(--if-radius-md);
313
- border: 1px solid #e4e4e7;
314
- background-color: var(--if-color-bg-white);
315
- box-shadow: var(--if-shadow-md);
316
- color: #09090b;
317
- text-align: center;
318
- font-size: var(--if-font-size-sm);
319
- font-weight: 500;
320
- line-height: 1.25rem;
321
- cursor: pointer;
322
- transition: all var(--if-transition-base);
323
- font-family: var(--if-font-family);
324
- }
325
-
326
- .if-oauthButton:hover:not(:disabled) {
327
- background-color: var(--if-color-bg-hover);
328
- border-color: #9ca3af;
329
- }
330
-
331
- .if-oauthButton:disabled {
332
- opacity: 0.6;
333
- cursor: not-allowed;
334
- }
335
-
336
- .if-oauthButton-icon {
337
- display: flex;
338
- align-items: center;
339
- justify-content: center;
340
- flex-shrink: 0;
341
- width: 1.125rem;
342
- height: 1.125rem;
343
- }
344
-
345
- .if-oauthButton-full {
346
- justify-content: center;
347
- }
348
-
349
- .if-oauthButton-short {
350
- justify-content: center;
351
- padding: var(--if-space-2);
352
- gap: var(--if-space-2);
353
- }
354
-
355
- .if-oauthButton-icon-only {
356
- justify-content: center;
357
- gap: 0;
358
- }
359
-
360
- /* ============================================
361
- OAUTH PROVIDERS CONTAINER
362
- ============================================ */
363
- .if-oauthProviders {
364
- display: flex;
365
- flex-direction: column;
366
- gap: var(--if-space-3);
367
- width: 100%;
368
- }
369
-
370
- /* ============================================
371
- AUTH LINK
372
- ============================================ */
373
- .if-authLink {
374
- display: flex;
375
- justify-content: center;
376
- align-items: center;
377
- gap: var(--if-space-1);
378
- font-size: var(--if-font-size-sm);
379
- color: var(--if-color-text-secondary);
380
- font-family: var(--if-font-family);
381
- }
382
-
383
- .if-authLink-text {
384
- font-weight: 400;
385
- }
386
-
387
- .if-authLink-link {
388
- font-weight: 600;
389
- color: var(--if-color-text);
390
- text-decoration: none;
391
- transition: opacity var(--if-transition-fast);
392
- }
393
-
394
- /* ============================================
395
- AUTH DIVIDER
396
- ============================================ */
397
- .if-authDivider {
398
- display: flex;
399
- align-items: center;
400
- text-align: center;
401
- width: 100%;
402
- gap: var(--if-space-3);
403
- }
404
-
405
- .if-authDivider-line {
406
- flex: 1;
407
- border-top: 1px solid var(--if-color-border);
408
- }
409
-
410
- .if-authDivider-text {
411
- font-size: var(--if-font-size-sm);
412
- color: var(--if-color-text-secondary);
413
- font-weight: 400;
414
- font-family: var(--if-font-family-manrope);
415
- }
416
-
417
- /* ============================================
418
- ERROR BANNER
419
- ============================================ */
420
- .if-errorBanner {
421
- padding: var(--if-space-3);
422
- background-color: var(--if-color-error-bg);
423
- border-radius: var(--if-radius-md);
424
- border: 1px solid var(--if-color-error);
425
- }
426
-
427
- .if-errorBanner-content {
428
- display: flex;
429
- align-items: center;
430
- gap: var(--if-space-2);
431
- }
432
-
433
- .if-errorBanner-icon {
434
- width: 1.5rem;
435
- height: 1.5rem;
436
- flex-shrink: 0;
437
- color: var(--if-color-error);
438
- }
439
-
440
- .if-errorBanner-text {
441
- font-size: var(--if-font-size-sm);
442
- color: var(--if-color-error);
443
- font-weight: 400;
444
- font-family: var(--if-font-family);
445
- margin: 0;
446
- }
447
-
448
- /* ============================================
449
- AUTH BRANDING
450
- ============================================ */
451
- .if-authBranding {
452
- background-color: var(--if-color-bg-light);
453
- padding: var(--if-space-4) var(--if-space-2);
454
- display: flex;
455
- flex-direction: row;
456
- justify-content: center;
457
- align-items: center;
458
- gap: var(--if-space-1);
459
- }
460
-
461
- .if-authBranding-text {
462
- font-size: var(--if-font-size-xs);
463
- font-weight: 500;
464
- color: var(--if-color-text);
465
- font-family: var(--if-font-family-manrope);
466
- margin: 0;
467
- }
468
-
469
- /* ============================================
470
- VERIFICATION CODE INPUT
471
- ============================================ */
472
- .if-verificationCode-inputContainer {
473
- display: flex;
474
- gap: var(--if-space-3);
475
- justify-content: center;
476
- }
477
-
478
- .if-verificationCode-input {
479
- width: 3rem;
480
- height: 3rem;
481
- text-align: center;
482
- font-size: var(--if-font-size-base);
483
- font-weight: 600;
484
- border: 1px solid var(--if-color-border);
485
- border-radius: var(--if-radius-sm);
486
- background-color: var(--if-color-bg-white);
487
- color: var(--if-color-text);
488
- transition: border-color var(--if-transition-base);
489
- font-family: var(--if-font-family-manrope);
490
- }
491
-
492
- .if-verificationCode-input:focus {
493
- outline: none;
494
- border-color: var(--if-color-border-focus);
495
- }
496
-
497
- /* ============================================
498
- VERIFICATION STEP
499
- ============================================ */
500
- .if-verificationStep {
501
- display: flex;
502
- flex-direction: column;
503
- gap: var(--if-space-6);
504
- align-items: stretch;
505
- }
506
-
507
- .if-verificationStep-descriptionContainer {
508
- width: 100%;
509
- background-color: #f5f5f5;
510
- border-radius: var(--if-radius-lg);
511
- padding: var(--if-space-3) var(--if-space-3) var(--if-space-6) var(--if-space-3);
512
- display: flex;
513
- flex-direction: column;
514
- gap: var(--if-space-3);
515
- }
516
-
517
- .if-verificationStep-descriptionTitle {
518
- color: var(--black, #000);
519
- font-family: var(--if-font-family);
520
- font-size: var(--if-font-size-base);
521
- font-style: normal;
522
- font-weight: 600;
523
- line-height: 24px;
524
- }
525
-
526
- .if-verificationStep-description,
527
- .if-verificationStep-codeDescription {
528
- font-size: var(--if-font-size-sm);
529
- color: #525252;
530
- text-align: left;
531
- font-family: var(--if-font-family);
532
- margin: 0;
533
- }
534
-
535
- .if-verificationLink-email,
536
- .if-verificationCode-email {
537
- font-weight: 500;
538
- color: var(--if-color-text);
539
- }
540
-
541
- .if-verificationStep-codeContainer {
542
- width: 100%;
543
- display: flex;
544
- flex-direction: column;
545
- gap: 40px;
546
- }
547
-
548
- .if-verificationStep-codeInputWrapper {
549
- display: flex;
550
- flex-direction: column;
551
- gap: var(--if-space-6);
552
- }
553
-
554
- .if-verificationStep-verifyingText {
555
- font-size: var(--if-font-size-sm);
556
- color: var(--if-color-text-secondary);
557
- text-align: center;
558
- font-family: var(--if-font-family);
559
- }
560
-
561
- .if-verificationStep-resendContainer {
562
- width: 100%;
563
- font-size: var(--if-font-size-sm);
564
- text-align: center;
565
- color: var(--if-color-text-secondary);
566
- font-family: var(--if-font-family);
567
- }
568
-
569
- .if-verificationStep-resendButton {
570
- color: var(--if-color-text);
571
- font-weight: 500;
572
- transition: all var(--if-transition-base);
573
- background: none;
574
- border: none;
575
- padding: 0;
576
- font-family: var(--if-font-family);
577
- font-size: var(--if-font-size-sm);
578
- }
579
-
580
- .if-verificationStep-resendButton:not(:disabled) {
581
- cursor: pointer;
582
- }
583
-
584
- .if-verificationStep-resendButton:disabled {
585
- cursor: not-allowed;
586
- opacity: 0.5;
587
- }
588
-
589
- /* ============================================
590
- PASSWORD STRENGTH INDICATOR
591
- ============================================ */
592
- .if-passwordStrength {
593
- margin-top: var(--if-space-2);
594
- }
595
-
596
- .if-passwordStrength-fill {
597
- height: 100%;
598
- transition:
599
- width var(--if-transition-base),
600
- background-color var(--if-transition-base);
601
- }
602
-
603
- .if-passwordStrength-text {
604
- font-size: var(--if-font-size-xs);
605
- color: var(--if-color-text-secondary);
606
- font-family: var(--if-font-family);
607
- }
608
-
609
- .if-passwordStrength-requirements {
610
- display: flex;
611
- flex-direction: column;
612
- gap: var(--if-space-2);
613
- font-size: var(--if-font-size-sm);
614
- color: #525252;
615
- font-family: var(--if-font-family);
616
- }
617
-
618
- .if-passwordStrength-requirement {
619
- display: flex;
620
- align-items: center;
621
- gap: var(--if-space-2);
622
- }
623
-
624
- /* ============================================
625
- FORM CONTAINER
626
- ============================================ */
627
- .if-form {
628
- display: flex;
629
- flex-direction: column;
630
- align-items: stretch;
631
- justify-content: center;
632
- gap: var(--if-space-6);
633
- }
634
-
635
- /* ============================================
636
- USER BUTTON
637
- ============================================ */
638
- .if-userButton-container {
639
- position: relative;
640
- display: inline-block;
641
- }
642
-
643
- .if-userButton {
644
- display: flex;
645
- align-items: center;
646
- justify-content: center;
647
- gap: var(--if-space-2);
648
- padding: var(--if-space-2);
649
- border-radius: 9999px;
650
- background-color: transparent;
651
- border: none;
652
- cursor: pointer;
653
- transition: all var(--if-transition-base);
654
- }
655
-
656
- .if-userButton:hover {
657
- opacity: 0.8;
658
- }
659
-
660
- .if-userButton-detailed {
661
- background-color: var(--if-color-bg-white);
662
- border: 1px solid var(--if-color-border);
663
- border-radius: var(--if-radius-sm);
664
- padding: var(--if-space-2);
665
- }
666
-
667
- .if-userButton-detailed:hover {
668
- background-color: var(--if-color-bg-light);
669
- opacity: 1;
670
- }
671
-
672
- .if-userButton-avatar {
673
- width: 2rem;
674
- height: 2rem;
675
- border-radius: 9999px;
676
- background-color: var(--if-color-primary);
677
- color: var(--if-color-bg-white);
678
- display: flex;
679
- align-items: center;
680
- justify-content: center;
681
- font-weight: 600;
682
- font-size: var(--if-font-size-sm);
683
- font-family: var(--if-font-family);
684
- overflow: hidden;
685
- }
686
-
687
- .if-userButton-avatarImage {
688
- border-radius: 9999px;
689
- object-fit: cover;
690
- width: 100%;
691
- height: 100%;
692
- }
693
-
694
- .if-userButton-avatarInitials {
695
- color: var(--if-color-bg-white);
696
- font-weight: 600;
697
- font-size: var(--if-font-size-sm);
698
- }
699
-
700
- .if-userButton-info {
701
- display: flex;
702
- flex-direction: column;
703
- align-items: flex-start;
704
- gap: 0.125rem;
705
- }
706
-
707
- .if-userButton-name {
708
- font-size: var(--if-font-size-sm);
709
- font-weight: 600;
710
- color: var(--if-color-text);
711
- line-height: 1.25rem;
712
- text-align: left;
713
- font-family: var(--if-font-family);
714
- }
715
-
716
- .if-userButton-email {
717
- font-size: var(--if-font-size-xs);
718
- color: var(--if-color-text-secondary);
719
- line-height: 1rem;
720
- text-align: left;
721
- font-family: var(--if-font-family);
722
- }
723
-
724
- .if-userButton-menu {
725
- position: absolute;
726
- margin-top: var(--if-space-2);
727
- background-color: var(--if-color-bg-white);
728
- border: 1px solid var(--if-color-border);
729
- border-radius: var(--if-radius-md);
730
- box-shadow: var(--if-shadow-lg);
731
- padding: var(--if-space-2);
732
- min-width: 200px;
733
- z-index: 50;
734
- }
735
-
736
- .if-userButton-menuItem {
737
- display: flex;
738
- align-items: center;
739
- gap: var(--if-space-2);
740
- padding: var(--if-space-2);
741
- border-radius: var(--if-radius-sm);
742
- cursor: pointer;
743
- transition: background-color var(--if-transition-fast);
744
- font-size: var(--if-font-size-sm);
745
- color: var(--if-color-text);
746
- font-family: var(--if-font-family);
747
- background: none;
748
- border: none;
749
- width: 100%;
750
- text-align: left;
751
- }
752
-
753
- .if-userButton-menuItem:hover {
754
- background-color: var(--if-color-bg-light);
755
- }
756
-
757
- .if-userButton-menuItem-signout {
758
- color: var(--if-color-error);
759
- }
760
-
761
- .if-userButton-menuItem-icon {
762
- width: 1.25rem;
763
- height: 1.25rem;
764
- }
765
-
766
- /* ============================================
767
- EMAIL VERIFICATION STATUS
768
- ============================================ */
769
- .if-verifyStatus-container {
770
- width: 100%;
771
- display: flex;
772
- flex-direction: column;
773
- align-items: center;
774
- justify-content: center;
775
- gap: var(--if-space-6);
776
- }
777
-
778
- .if-verifyStatus-container-stretch {
779
- width: 100%;
780
- display: flex;
781
- flex-direction: column;
782
- align-items: stretch;
783
- justify-content: center;
784
- gap: var(--if-space-6);
785
- }
786
-
787
- .if-verifyStatus-spinner {
788
- border-radius: 9999px;
789
- height: 3rem;
790
- width: 3rem;
791
- border-bottom: 2px solid var(--if-color-primary);
792
- }
793
-
794
- .if-verifyStatus-successContent {
795
- display: flex;
796
- flex-direction: column;
797
- align-items: center;
798
- gap: var(--if-space-4);
799
- }
800
-
801
- .if-verifyStatus-successIcon {
802
- width: 4rem;
803
- height: 4rem;
804
- border-radius: 9999px;
805
- background-color: #d1fae5;
806
- display: flex;
807
- align-items: center;
808
- justify-content: center;
809
- }
810
-
811
- .if-verifyStatus-successIconSvg {
812
- width: 2rem;
813
- height: 2rem;
814
- color: #059669;
815
- }
816
-
817
- .if-verifyStatus-textCenter {
818
- text-align: center;
819
- }
820
-
821
- /* ============================================
822
- UTILITY CLASSES
823
- ============================================ */
824
- .if-hidden {
825
- display: none;
826
- }
827
-
828
- .if-visuallyHidden {
829
- position: absolute;
830
- width: 1px;
831
- height: 1px;
832
- padding: 0;
833
- margin: -1px;
834
- overflow: hidden;
835
- clip: rect(0, 0, 0, 0);
836
- white-space: nowrap;
837
- border-width: 0;
838
- }
1
+ /**
2
+ * InsForge React Component Library Styles
3
+ * Traditional CSS with scoped class names (no Tailwind)
4
+ */
5
+
6
+ /* ============================================
7
+ FONTS
8
+ ============================================ */
9
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');
10
+ @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap');
11
+
12
+ /* ============================================
13
+ CSS VARIABLES
14
+ ============================================ */
15
+ :root {
16
+ /* Colors */
17
+ --if-color-primary: #000000;
18
+ --if-color-primary-hover: #1f1f1f;
19
+ --if-color-text: #000000;
20
+ --if-color-text-secondary: #828282;
21
+ --if-color-text-muted: #a3a3a3;
22
+ --if-color-border: #d4d4d4;
23
+ --if-color-border-focus: #000000;
24
+ --if-color-bg-white: #ffffff;
25
+ --if-color-bg-light: #fafafa;
26
+ --if-color-bg-hover: #f9fafb;
27
+ --if-color-error: #dc2626;
28
+ --if-color-error-bg: #fee2e2;
29
+ --if-color-success: #16a34a;
30
+
31
+ /* Spacing */
32
+ --if-space-1: 0.25rem; /* 4px */
33
+ --if-space-2: 0.5rem; /* 8px */
34
+ --if-space-3: 0.75rem; /* 12px */
35
+ --if-space-4: 1rem; /* 16px */
36
+ --if-space-6: 1.5rem; /* 24px */
37
+ --if-space-8: 2rem; /* 32px */
38
+
39
+ /* Border Radius */
40
+ --if-radius-xs: 0.125rem; /* 2px */
41
+ --if-radius-sm: 0.25rem; /* 4px */
42
+ --if-radius-md: 0.375rem; /* 6px */
43
+ --if-radius-lg: 0.5rem; /* 8px */
44
+ --if-radius-xl: 0.75rem; /* 12px */
45
+
46
+ /* Typography */
47
+ --if-font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
48
+ --if-font-family-manrope:
49
+ 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
50
+ --if-font-size-xs: 0.75rem; /* 12px */
51
+ --if-font-size-sm: 0.875rem; /* 14px */
52
+ --if-font-size-base: 1rem; /* 16px */
53
+ --if-font-size-lg: 1.125rem; /* 18px */
54
+ --if-font-size-xl: 1.25rem; /* 20px */
55
+ --if-font-size-2xl: 1.5rem; /* 24px */
56
+
57
+ /* Shadows */
58
+ --if-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
59
+ --if-shadow-md: 0 1px 2px 0 rgba(0, 0, 0, 0.1);
60
+ --if-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
61
+
62
+ /* Transitions */
63
+ --if-transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
64
+ --if-transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);
65
+ }
66
+
67
+ /* ============================================
68
+ AUTH CONTAINER
69
+ ============================================ */
70
+ .if-authContainer {
71
+ width: 100%;
72
+ max-width: 400px;
73
+ border-radius: var(--if-radius-xl);
74
+ overflow: hidden;
75
+ box-shadow: var(--if-shadow-lg);
76
+ }
77
+
78
+ .if-authCard {
79
+ background-color: var(--if-color-bg-white);
80
+ padding: var(--if-space-6);
81
+ display: flex;
82
+ flex-direction: column;
83
+ justify-content: center;
84
+ align-items: stretch;
85
+ gap: var(--if-space-6);
86
+ }
87
+
88
+ /* ============================================
89
+ AUTH HEADER
90
+ ============================================ */
91
+ .if-authHeader {
92
+ display: flex;
93
+ flex-direction: column;
94
+ justify-content: flex-start;
95
+ align-items: flex-start;
96
+ gap: var(--if-space-2);
97
+ }
98
+
99
+ .if-authHeader-title {
100
+ font-size: var(--if-font-size-2xl);
101
+ font-weight: 600;
102
+ color: var(--if-color-text);
103
+ line-height: 2rem;
104
+ margin: 0;
105
+ font-family: var(--if-font-family);
106
+ }
107
+
108
+ .if-authHeader-subtitle {
109
+ font-size: var(--if-font-size-sm);
110
+ font-weight: 400;
111
+ color: var(--if-color-text-secondary);
112
+ line-height: 1.5rem;
113
+ margin: 0;
114
+ font-family: var(--if-font-family);
115
+ }
116
+
117
+ /* ============================================
118
+ FORM FIELD
119
+ ============================================ */
120
+ .if-formField {
121
+ display: flex;
122
+ flex-direction: column;
123
+ justify-content: center;
124
+ align-items: stretch;
125
+ gap: var(--if-space-1);
126
+ }
127
+
128
+ .if-formField-label {
129
+ font-size: var(--if-font-size-sm);
130
+ font-weight: 400;
131
+ color: var(--if-color-text);
132
+ line-height: 1.5rem;
133
+ font-family: var(--if-font-family);
134
+ }
135
+
136
+ .if-formField-input {
137
+ width: 100%;
138
+ display: flex;
139
+ align-items: center;
140
+ gap: var(--if-space-2);
141
+ align-self: stretch;
142
+ padding: var(--if-space-2) var(--if-space-3);
143
+ border-radius: var(--if-radius-sm);
144
+ border: 1px solid var(--if-color-border);
145
+ background-color: var(--if-color-bg-white);
146
+ font-size: var(--if-font-size-sm);
147
+ font-weight: 400;
148
+ line-height: 1.25rem;
149
+ color: var(--if-color-text);
150
+ font-family: var(--if-font-family);
151
+ transition: border-color var(--if-transition-base);
152
+ }
153
+
154
+ .if-formField-input::placeholder {
155
+ color: var(--if-color-text-muted);
156
+ font-size: var(--if-font-size-sm);
157
+ font-weight: 400;
158
+ }
159
+
160
+ .if-formField-input:focus {
161
+ outline: none;
162
+ border-color: var(--if-color-border-focus);
163
+ }
164
+
165
+ /* ============================================
166
+ PASSWORD FIELD
167
+ ============================================ */
168
+ .if-passwordField {
169
+ display: flex;
170
+ flex-direction: column;
171
+ justify-content: center;
172
+ align-items: stretch;
173
+ gap: var(--if-space-1);
174
+ }
175
+
176
+ .if-passwordField-labelRow {
177
+ display: flex;
178
+ justify-content: space-between;
179
+ align-items: center;
180
+ }
181
+
182
+ .if-passwordField-label {
183
+ font-size: var(--if-font-size-sm);
184
+ font-weight: 400;
185
+ color: var(--if-color-text);
186
+ line-height: 1.5rem;
187
+ font-family: var(--if-font-family);
188
+ }
189
+
190
+ .if-passwordField-forgotLink {
191
+ font-size: var(--if-font-size-sm);
192
+ font-weight: 400;
193
+ color: var(--if-color-text-secondary);
194
+ text-decoration: none;
195
+ transition: color var(--if-transition-fast);
196
+ font-family: var(--if-font-family);
197
+ }
198
+
199
+ .if-passwordField-inputWrapper {
200
+ position: relative;
201
+ width: 100%;
202
+ }
203
+
204
+ .if-passwordField-input {
205
+ width: 100%;
206
+ display: flex;
207
+ align-items: center;
208
+ align-self: stretch;
209
+ padding: var(--if-space-2) var(--if-space-3);
210
+ padding-right: 2.5rem; /* Space for toggle button */
211
+ border-radius: var(--if-radius-sm);
212
+ border: 1px solid var(--if-color-border);
213
+ background-color: var(--if-color-bg-white);
214
+ font-size: var(--if-font-size-sm);
215
+ font-weight: 400;
216
+ line-height: 1.25rem;
217
+ color: var(--if-color-text);
218
+ font-family: var(--if-font-family);
219
+ transition: border-color var(--if-transition-base);
220
+ }
221
+
222
+ .if-passwordField-input::placeholder {
223
+ color: var(--if-color-text-muted);
224
+ }
225
+
226
+ .if-passwordField-input:focus {
227
+ outline: none;
228
+ border-color: var(--if-color-border-focus);
229
+ }
230
+
231
+ .if-passwordField-toggleButton {
232
+ position: absolute;
233
+ right: var(--if-space-1);
234
+ top: 50%;
235
+ transform: translateY(-50%);
236
+ background: none;
237
+ border: none;
238
+ cursor: pointer;
239
+ padding: var(--if-space-1);
240
+ display: flex;
241
+ align-items: center;
242
+ justify-content: center;
243
+ color: var(--if-color-text-secondary);
244
+ transition: color var(--if-transition-fast);
245
+ }
246
+
247
+ /* ============================================
248
+ SUBMIT BUTTON
249
+ ============================================ */
250
+ .if-submitButton {
251
+ border-radius: var(--if-radius-sm);
252
+ background-color: var(--if-color-primary);
253
+ height: 2.5rem;
254
+ width: 100%;
255
+ display: flex;
256
+ margin-top: var(--if-space-4);
257
+ padding: var(--if-space-2) var(--if-space-4);
258
+ justify-content: center;
259
+ align-items: center;
260
+ gap: 0.625rem;
261
+ align-self: stretch;
262
+ color: var(--if-color-bg-white);
263
+ font-weight: 600;
264
+ font-family: var(--if-font-family-manrope);
265
+ font-size: var(--if-font-size-base);
266
+ line-height: normal;
267
+ border: none;
268
+ cursor: pointer;
269
+ transition: background-color var(--if-transition-base);
270
+ }
271
+
272
+ .if-submitButton:hover:not(:disabled) {
273
+ background-color: var(--if-color-primary-hover);
274
+ }
275
+
276
+ .if-submitButton:disabled {
277
+ opacity: 0.5;
278
+ cursor: not-allowed;
279
+ }
280
+
281
+ .if-submitButton-icon {
282
+ width: 1.25rem;
283
+ height: 1.25rem;
284
+ }
285
+
286
+ /* Spinner animation */
287
+ @keyframes if-spin {
288
+ from {
289
+ transform: rotate(0deg);
290
+ }
291
+ to {
292
+ transform: rotate(360deg);
293
+ }
294
+ }
295
+
296
+ .if-submitButton-spinner {
297
+ animation: if-spin 1s linear infinite;
298
+ }
299
+
300
+ /* ============================================
301
+ OAUTH BUTTON
302
+ ============================================ */
303
+ .if-oauthButton {
304
+ display: flex;
305
+ width: 100%;
306
+ height: 2.25rem;
307
+ padding: var(--if-space-2) var(--if-space-3);
308
+ flex-direction: row;
309
+ justify-content: center;
310
+ align-items: center;
311
+ gap: var(--if-space-3);
312
+ border-radius: var(--if-radius-md);
313
+ border: 1px solid #e4e4e7;
314
+ background-color: var(--if-color-bg-white);
315
+ box-shadow: var(--if-shadow-md);
316
+ color: #09090b;
317
+ text-align: center;
318
+ font-size: var(--if-font-size-sm);
319
+ font-weight: 500;
320
+ line-height: 1.25rem;
321
+ cursor: pointer;
322
+ transition: all var(--if-transition-base);
323
+ font-family: var(--if-font-family);
324
+ }
325
+
326
+ .if-oauthButton:hover:not(:disabled) {
327
+ background-color: var(--if-color-bg-hover);
328
+ border-color: #9ca3af;
329
+ }
330
+
331
+ .if-oauthButton:disabled {
332
+ opacity: 0.6;
333
+ cursor: not-allowed;
334
+ }
335
+
336
+ .if-oauthButton-icon {
337
+ display: flex;
338
+ align-items: center;
339
+ justify-content: center;
340
+ flex-shrink: 0;
341
+ width: 1.125rem;
342
+ height: 1.125rem;
343
+ }
344
+
345
+ .if-oauthButton-full {
346
+ justify-content: center;
347
+ }
348
+
349
+ .if-oauthButton-short {
350
+ justify-content: center;
351
+ padding: var(--if-space-2);
352
+ gap: var(--if-space-2);
353
+ }
354
+
355
+ .if-oauthButton-icon-only {
356
+ justify-content: center;
357
+ gap: 0;
358
+ }
359
+
360
+ /* ============================================
361
+ OAUTH PROVIDERS CONTAINER
362
+ ============================================ */
363
+ .if-oauthProviders {
364
+ display: flex;
365
+ flex-direction: column;
366
+ gap: var(--if-space-3);
367
+ width: 100%;
368
+ }
369
+
370
+ /* ============================================
371
+ AUTH LINK
372
+ ============================================ */
373
+ .if-authLink {
374
+ display: flex;
375
+ justify-content: center;
376
+ align-items: center;
377
+ gap: var(--if-space-1);
378
+ font-size: var(--if-font-size-sm);
379
+ color: var(--if-color-text-secondary);
380
+ font-family: var(--if-font-family);
381
+ }
382
+
383
+ .if-authLink-text {
384
+ font-weight: 400;
385
+ }
386
+
387
+ .if-authLink-link {
388
+ font-weight: 600;
389
+ color: var(--if-color-text);
390
+ text-decoration: none;
391
+ transition: opacity var(--if-transition-fast);
392
+ }
393
+
394
+ /* ============================================
395
+ AUTH DIVIDER
396
+ ============================================ */
397
+ .if-authDivider {
398
+ display: flex;
399
+ align-items: center;
400
+ text-align: center;
401
+ width: 100%;
402
+ gap: var(--if-space-3);
403
+ }
404
+
405
+ .if-authDivider-line {
406
+ flex: 1;
407
+ border-top: 1px solid var(--if-color-border);
408
+ }
409
+
410
+ .if-authDivider-text {
411
+ font-size: var(--if-font-size-sm);
412
+ color: var(--if-color-text-secondary);
413
+ font-weight: 400;
414
+ font-family: var(--if-font-family-manrope);
415
+ }
416
+
417
+ /* ============================================
418
+ ERROR BANNER
419
+ ============================================ */
420
+ .if-errorBanner {
421
+ padding: var(--if-space-3);
422
+ background-color: var(--if-color-error-bg);
423
+ border-radius: var(--if-radius-md);
424
+ border: 1px solid var(--if-color-error);
425
+ }
426
+
427
+ .if-errorBanner-content {
428
+ display: flex;
429
+ align-items: center;
430
+ gap: var(--if-space-2);
431
+ }
432
+
433
+ .if-errorBanner-icon {
434
+ width: 1.5rem;
435
+ height: 1.5rem;
436
+ flex-shrink: 0;
437
+ color: var(--if-color-error);
438
+ }
439
+
440
+ .if-errorBanner-text {
441
+ font-size: var(--if-font-size-sm);
442
+ color: var(--if-color-error);
443
+ font-weight: 400;
444
+ font-family: var(--if-font-family);
445
+ margin: 0;
446
+ }
447
+
448
+ /* ============================================
449
+ AUTH BRANDING
450
+ ============================================ */
451
+ .if-authBranding {
452
+ background-color: var(--if-color-bg-light);
453
+ padding: var(--if-space-4) var(--if-space-2);
454
+ display: flex;
455
+ flex-direction: row;
456
+ justify-content: center;
457
+ align-items: center;
458
+ gap: var(--if-space-1);
459
+ }
460
+
461
+ .if-authBranding-text {
462
+ font-size: var(--if-font-size-xs);
463
+ font-weight: 500;
464
+ color: var(--if-color-text);
465
+ font-family: var(--if-font-family-manrope);
466
+ margin: 0;
467
+ }
468
+
469
+ /* ============================================
470
+ VERIFICATION CODE INPUT
471
+ ============================================ */
472
+ .if-verificationCode-inputContainer {
473
+ display: flex;
474
+ gap: var(--if-space-3);
475
+ justify-content: center;
476
+ }
477
+
478
+ .if-verificationCode-input {
479
+ width: 3rem;
480
+ height: 3rem;
481
+ text-align: center;
482
+ font-size: var(--if-font-size-base);
483
+ font-weight: 600;
484
+ border: 1px solid var(--if-color-border);
485
+ border-radius: var(--if-radius-sm);
486
+ background-color: var(--if-color-bg-white);
487
+ color: var(--if-color-text);
488
+ transition: border-color var(--if-transition-base);
489
+ font-family: var(--if-font-family-manrope);
490
+ }
491
+
492
+ .if-verificationCode-input:focus {
493
+ outline: none;
494
+ border-color: var(--if-color-border-focus);
495
+ }
496
+
497
+ /* ============================================
498
+ VERIFICATION STEP
499
+ ============================================ */
500
+ .if-verificationStep {
501
+ display: flex;
502
+ flex-direction: column;
503
+ gap: var(--if-space-6);
504
+ align-items: stretch;
505
+ }
506
+
507
+ .if-verificationStep-descriptionContainer {
508
+ width: 100%;
509
+ background-color: #f5f5f5;
510
+ border-radius: var(--if-radius-lg);
511
+ padding: var(--if-space-3) var(--if-space-3) var(--if-space-6) var(--if-space-3);
512
+ display: flex;
513
+ flex-direction: column;
514
+ gap: var(--if-space-3);
515
+ }
516
+
517
+ .if-verificationStep-descriptionTitle {
518
+ color: var(--black, #000);
519
+ font-family: var(--if-font-family);
520
+ font-size: var(--if-font-size-base);
521
+ font-style: normal;
522
+ font-weight: 600;
523
+ line-height: 24px;
524
+ }
525
+
526
+ .if-verificationStep-description,
527
+ .if-verificationStep-codeDescription {
528
+ font-size: var(--if-font-size-sm);
529
+ color: #525252;
530
+ text-align: left;
531
+ font-family: var(--if-font-family);
532
+ margin: 0;
533
+ }
534
+
535
+ .if-verificationLink-email,
536
+ .if-verificationCode-email {
537
+ font-weight: 500;
538
+ color: var(--if-color-text);
539
+ }
540
+
541
+ .if-verificationStep-codeContainer {
542
+ width: 100%;
543
+ display: flex;
544
+ flex-direction: column;
545
+ gap: 40px;
546
+ }
547
+
548
+ .if-verificationStep-codeInputWrapper {
549
+ display: flex;
550
+ flex-direction: column;
551
+ gap: var(--if-space-6);
552
+ }
553
+
554
+ .if-verificationStep-verifyingText {
555
+ font-size: var(--if-font-size-sm);
556
+ color: var(--if-color-text-secondary);
557
+ text-align: center;
558
+ font-family: var(--if-font-family);
559
+ }
560
+
561
+ .if-verificationStep-resendContainer {
562
+ width: 100%;
563
+ font-size: var(--if-font-size-sm);
564
+ text-align: center;
565
+ color: var(--if-color-text-secondary);
566
+ font-family: var(--if-font-family);
567
+ }
568
+
569
+ .if-verificationStep-resendButton {
570
+ color: var(--if-color-text);
571
+ font-weight: 500;
572
+ transition: all var(--if-transition-base);
573
+ background: none;
574
+ border: none;
575
+ padding: 0;
576
+ font-family: var(--if-font-family);
577
+ font-size: var(--if-font-size-sm);
578
+ }
579
+
580
+ .if-verificationStep-resendButton:not(:disabled) {
581
+ cursor: pointer;
582
+ }
583
+
584
+ .if-verificationStep-resendButton:disabled {
585
+ cursor: not-allowed;
586
+ opacity: 0.5;
587
+ }
588
+
589
+ /* ============================================
590
+ PASSWORD STRENGTH INDICATOR
591
+ ============================================ */
592
+ .if-passwordStrength {
593
+ margin-top: var(--if-space-2);
594
+ }
595
+
596
+ .if-passwordStrength-fill {
597
+ height: 100%;
598
+ transition:
599
+ width var(--if-transition-base),
600
+ background-color var(--if-transition-base);
601
+ }
602
+
603
+ .if-passwordStrength-text {
604
+ font-size: var(--if-font-size-xs);
605
+ color: var(--if-color-text-secondary);
606
+ font-family: var(--if-font-family);
607
+ }
608
+
609
+ .if-passwordStrength-requirements {
610
+ display: flex;
611
+ flex-direction: column;
612
+ gap: var(--if-space-2);
613
+ font-size: var(--if-font-size-sm);
614
+ color: #525252;
615
+ font-family: var(--if-font-family);
616
+ }
617
+
618
+ .if-passwordStrength-requirement {
619
+ display: flex;
620
+ align-items: center;
621
+ gap: var(--if-space-2);
622
+ }
623
+
624
+ /* ============================================
625
+ FORM CONTAINER
626
+ ============================================ */
627
+ .if-form {
628
+ display: flex;
629
+ flex-direction: column;
630
+ align-items: stretch;
631
+ justify-content: center;
632
+ gap: var(--if-space-6);
633
+ }
634
+
635
+ /* ============================================
636
+ USER BUTTON
637
+ ============================================ */
638
+ .if-userButton-container {
639
+ position: relative;
640
+ display: inline-block;
641
+ }
642
+
643
+ .if-userButton {
644
+ display: flex;
645
+ align-items: center;
646
+ justify-content: center;
647
+ gap: var(--if-space-2);
648
+ padding: var(--if-space-2);
649
+ border-radius: 9999px;
650
+ background-color: transparent;
651
+ border: none;
652
+ cursor: pointer;
653
+ transition: all var(--if-transition-base);
654
+ }
655
+
656
+ .if-userButton:hover {
657
+ opacity: 0.8;
658
+ }
659
+
660
+ .if-userButton-detailed {
661
+ background-color: var(--if-color-bg-white);
662
+ border: 1px solid var(--if-color-border);
663
+ border-radius: var(--if-radius-sm);
664
+ padding: var(--if-space-2);
665
+ }
666
+
667
+ .if-userButton-detailed:hover {
668
+ background-color: var(--if-color-bg-light);
669
+ opacity: 1;
670
+ }
671
+
672
+ .if-userButton-avatar {
673
+ width: 2rem;
674
+ height: 2rem;
675
+ border-radius: 9999px;
676
+ background-color: var(--if-color-primary);
677
+ color: var(--if-color-bg-white);
678
+ display: flex;
679
+ align-items: center;
680
+ justify-content: center;
681
+ font-weight: 600;
682
+ font-size: var(--if-font-size-sm);
683
+ font-family: var(--if-font-family);
684
+ overflow: hidden;
685
+ }
686
+
687
+ .if-userButton-avatarImage {
688
+ border-radius: 9999px;
689
+ object-fit: cover;
690
+ width: 100%;
691
+ height: 100%;
692
+ }
693
+
694
+ .if-userButton-avatarInitials {
695
+ color: var(--if-color-bg-white);
696
+ font-weight: 600;
697
+ font-size: var(--if-font-size-sm);
698
+ }
699
+
700
+ .if-userButton-info {
701
+ display: flex;
702
+ flex-direction: column;
703
+ align-items: flex-start;
704
+ gap: 0.125rem;
705
+ }
706
+
707
+ .if-userButton-name {
708
+ font-size: var(--if-font-size-sm);
709
+ font-weight: 600;
710
+ color: var(--if-color-text);
711
+ line-height: 1.25rem;
712
+ text-align: left;
713
+ font-family: var(--if-font-family);
714
+ }
715
+
716
+ .if-userButton-email {
717
+ font-size: var(--if-font-size-xs);
718
+ color: var(--if-color-text-secondary);
719
+ line-height: 1rem;
720
+ text-align: left;
721
+ font-family: var(--if-font-family);
722
+ }
723
+
724
+ .if-userButton-menu {
725
+ position: absolute;
726
+ margin-top: var(--if-space-2);
727
+ background-color: var(--if-color-bg-white);
728
+ border: 1px solid var(--if-color-border);
729
+ border-radius: var(--if-radius-md);
730
+ box-shadow: var(--if-shadow-lg);
731
+ padding: var(--if-space-2);
732
+ min-width: 200px;
733
+ z-index: 50;
734
+ }
735
+
736
+ .if-userButton-menuItem {
737
+ display: flex;
738
+ align-items: center;
739
+ gap: var(--if-space-2);
740
+ padding: var(--if-space-2);
741
+ border-radius: var(--if-radius-sm);
742
+ cursor: pointer;
743
+ transition: background-color var(--if-transition-fast);
744
+ font-size: var(--if-font-size-sm);
745
+ color: var(--if-color-text);
746
+ font-family: var(--if-font-family);
747
+ background: none;
748
+ border: none;
749
+ width: 100%;
750
+ text-align: left;
751
+ }
752
+
753
+ .if-userButton-menuItem:hover {
754
+ background-color: var(--if-color-bg-light);
755
+ }
756
+
757
+ .if-userButton-menuItem-signout {
758
+ color: var(--if-color-error);
759
+ }
760
+
761
+ .if-userButton-menuItem-icon {
762
+ width: 1.25rem;
763
+ height: 1.25rem;
764
+ }
765
+
766
+ /* ============================================
767
+ EMAIL VERIFICATION STATUS
768
+ ============================================ */
769
+ .if-verifyStatus-container {
770
+ width: 100%;
771
+ display: flex;
772
+ flex-direction: column;
773
+ align-items: center;
774
+ justify-content: center;
775
+ gap: var(--if-space-6);
776
+ }
777
+
778
+ .if-verifyStatus-container-stretch {
779
+ width: 100%;
780
+ display: flex;
781
+ flex-direction: column;
782
+ align-items: stretch;
783
+ justify-content: center;
784
+ gap: var(--if-space-6);
785
+ }
786
+
787
+ .if-verifyStatus-spinner {
788
+ border-radius: 9999px;
789
+ height: 3rem;
790
+ width: 3rem;
791
+ border-bottom: 2px solid var(--if-color-primary);
792
+ }
793
+
794
+ .if-verifyStatus-successContent {
795
+ display: flex;
796
+ flex-direction: column;
797
+ align-items: center;
798
+ gap: var(--if-space-4);
799
+ }
800
+
801
+ .if-verifyStatus-successIcon {
802
+ width: 4rem;
803
+ height: 4rem;
804
+ border-radius: 9999px;
805
+ background-color: #d1fae5;
806
+ display: flex;
807
+ align-items: center;
808
+ justify-content: center;
809
+ }
810
+
811
+ .if-verifyStatus-successIconSvg {
812
+ width: 2rem;
813
+ height: 2rem;
814
+ color: #059669;
815
+ }
816
+
817
+ .if-verifyStatus-textCenter {
818
+ text-align: center;
819
+ }
820
+
821
+ /* ============================================
822
+ UTILITY CLASSES
823
+ ============================================ */
824
+ .if-hidden {
825
+ display: none;
826
+ }
827
+
828
+ .if-visuallyHidden {
829
+ position: absolute;
830
+ width: 1px;
831
+ height: 1px;
832
+ padding: 0;
833
+ margin: -1px;
834
+ overflow: hidden;
835
+ clip: rect(0, 0, 0, 0);
836
+ white-space: nowrap;
837
+ border-width: 0;
838
+ }