@striae-org/striae 5.3.2 → 5.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/app/components/auth/auth.module.css +531 -0
  2. package/app/components/auth/mfa-enrollment.tsx +132 -79
  3. package/app/components/auth/mfa-totp-enrollment.tsx +231 -0
  4. package/app/components/auth/mfa-verification.tsx +162 -33
  5. package/app/components/{sidebar/cases/cases-modal.tsx → navbar/case-modals/all-cases-modal.tsx} +4 -4
  6. package/app/components/navbar/case-modals/archive-case-modal.tsx +9 -10
  7. package/app/components/navbar/case-modals/case-modal-shared.module.css +88 -0
  8. package/app/components/navbar/case-modals/delete-case-modal.tsx +9 -10
  9. package/app/components/navbar/case-modals/export-case-modal.tsx +9 -10
  10. package/app/components/navbar/case-modals/export-confirmations-modal.tsx +9 -10
  11. package/app/components/navbar/case-modals/open-case-modal.tsx +4 -4
  12. package/app/components/navbar/case-modals/rename-case-modal.tsx +9 -10
  13. package/app/components/navbar/navbar.tsx +1 -1
  14. package/app/components/sidebar/files/delete-files-modal.tsx +3 -3
  15. package/app/components/sidebar/files/files-modal.module.css +29 -0
  16. package/app/components/sidebar/notes/{class-details-fields.tsx → class-details/class-details-fields.tsx} +1 -1
  17. package/app/components/sidebar/notes/{class-details-modal.tsx → class-details/class-details-modal.tsx} +1 -1
  18. package/app/components/sidebar/notes/{class-details-sections.tsx → class-details/class-details-sections.tsx} +1 -1
  19. package/app/components/sidebar/notes/notes-editor-form.tsx +2 -2
  20. package/app/components/sidebar/notes/notes-editor-modal.tsx +6 -6
  21. package/app/components/sidebar/notes/notes.module.css +52 -0
  22. package/app/components/toolbar/toolbar-color-selector.tsx +8 -8
  23. package/app/components/toolbar/toolbar.module.css +181 -2
  24. package/app/components/user/delete-account.tsx +7 -7
  25. package/app/components/user/inactivity-warning.tsx +6 -6
  26. package/app/components/user/manage-profile.tsx +18 -1
  27. package/app/components/user/mfa-enrolled-factors.tsx +117 -0
  28. package/app/components/user/mfa-phone-update.tsx +8 -4
  29. package/app/components/user/mfa-totp-section.tsx +446 -0
  30. package/app/components/user/user.module.css +665 -0
  31. package/app/routes/striae/striae.tsx +1 -1
  32. package/app/services/audit/audit.service.ts +1 -1
  33. package/app/services/audit/builders/audit-event-builders-user-security.ts +4 -2
  34. package/app/services/firebase/errors.ts +2 -0
  35. package/app/utils/auth/mfa.ts +35 -1
  36. package/package.json +23 -28
  37. package/scripts/deploy-all.sh +166 -0
  38. package/scripts/deploy-config/modules/env-utils.sh +322 -0
  39. package/scripts/deploy-config/modules/keys.sh +404 -0
  40. package/scripts/deploy-config/modules/prompt.sh +375 -0
  41. package/scripts/deploy-config/modules/scaffolding.sh +310 -0
  42. package/scripts/deploy-config/modules/validation.sh +354 -0
  43. package/scripts/deploy-config.sh +236 -0
  44. package/scripts/deploy-pages-secrets.sh +231 -0
  45. package/scripts/deploy-pages.sh +34 -0
  46. package/scripts/deploy-primershear-emails.sh +167 -0
  47. package/scripts/deploy-worker-secrets.sh +385 -0
  48. package/scripts/dev.cjs +23 -0
  49. package/scripts/enable-totp-mfa.mjs +57 -0
  50. package/scripts/install-workers.sh +87 -0
  51. package/scripts/run-eslint.cjs +43 -0
  52. package/scripts/unenroll-totp-mfa.mjs +82 -0
  53. package/scripts/update-compatibility-dates.cjs +124 -0
  54. package/scripts/update-markdown-versions.cjs +43 -0
  55. package/workers/audit-worker/.editorconfig +12 -0
  56. package/workers/audit-worker/.prettierrc +6 -0
  57. package/workers/audit-worker/package.json +1 -1
  58. package/workers/audit-worker/wrangler.jsonc.example +1 -1
  59. package/workers/data-worker/.editorconfig +12 -0
  60. package/workers/data-worker/.prettierrc +6 -0
  61. package/workers/data-worker/package.json +1 -1
  62. package/workers/data-worker/wrangler.jsonc.example +1 -1
  63. package/workers/image-worker/.editorconfig +12 -0
  64. package/workers/image-worker/.prettierrc +6 -0
  65. package/workers/image-worker/package.json +1 -1
  66. package/workers/image-worker/wrangler.jsonc.example +1 -1
  67. package/workers/pdf-worker/.editorconfig +12 -0
  68. package/workers/pdf-worker/.prettierrc +6 -0
  69. package/workers/pdf-worker/package.json +1 -1
  70. package/workers/pdf-worker/wrangler.jsonc.example +1 -1
  71. package/workers/user-worker/.editorconfig +12 -0
  72. package/workers/user-worker/.prettierrc +6 -0
  73. package/workers/user-worker/package.json +1 -1
  74. package/workers/user-worker/wrangler.jsonc.example +1 -1
  75. package/wrangler.toml.example +1 -1
  76. package/app/components/auth/mfa-enrollment.module.css +0 -276
  77. package/app/components/auth/mfa-verification.module.css +0 -259
  78. package/app/components/navbar/case-modals/archive-case-modal.module.css +0 -34
  79. package/app/components/navbar/case-modals/delete-case-modal.module.css +0 -9
  80. package/app/components/navbar/case-modals/export-case-modal.module.css +0 -27
  81. package/app/components/navbar/case-modals/export-confirmations-modal.module.css +0 -24
  82. package/app/components/navbar/case-modals/open-case-modal.module.css +0 -82
  83. package/app/components/navbar/case-modals/rename-case-modal.module.css +0 -9
  84. package/app/components/sidebar/files/delete-files-modal.module.css +0 -26
  85. package/app/components/sidebar/notes/notes-editor-modal.module.css +0 -49
  86. package/app/components/toolbar/toolbar-color-selector.module.css +0 -171
  87. package/app/components/user/delete-account.module.css +0 -277
  88. package/app/components/user/inactivity-warning.module.css +0 -148
  89. package/app/components/user/manage-profile.module.css +0 -192
  90. package/app/routes/auth/login.module.css +0 -523
  91. package/app/routes/auth/login.tsx +0 -705
  92. package/workers/audit-worker/worker-configuration.d.ts +0 -7448
  93. package/workers/data-worker/worker-configuration.d.ts +0 -7448
  94. package/workers/image-worker/worker-configuration.d.ts +0 -7448
  95. package/workers/pdf-worker/worker-configuration.d.ts +0 -7447
  96. package/workers/user-worker/worker-configuration.d.ts +0 -7450
  97. /package/app/components/{sidebar → navbar}/case-import/case-import.module.css +0 -0
  98. /package/app/components/{sidebar → navbar}/case-import/case-import.tsx +0 -0
  99. /package/app/components/{sidebar → navbar}/case-import/components/CasePreviewSection.tsx +0 -0
  100. /package/app/components/{sidebar → navbar}/case-import/components/ConfirmationDialog.tsx +0 -0
  101. /package/app/components/{sidebar → navbar}/case-import/components/ConfirmationPreviewSection.tsx +0 -0
  102. /package/app/components/{sidebar → navbar}/case-import/components/ExistingCaseSection.tsx +0 -0
  103. /package/app/components/{sidebar → navbar}/case-import/components/FileSelector.tsx +0 -0
  104. /package/app/components/{sidebar → navbar}/case-import/components/ProgressSection.tsx +0 -0
  105. /package/app/components/{sidebar → navbar}/case-import/hooks/useFilePreview.ts +0 -0
  106. /package/app/components/{sidebar → navbar}/case-import/hooks/useImportExecution.ts +0 -0
  107. /package/app/components/{sidebar → navbar}/case-import/hooks/useImportState.ts +0 -0
  108. /package/app/components/{sidebar → navbar}/case-import/index.ts +0 -0
  109. /package/app/components/{sidebar → navbar}/case-import/utils/file-validation.ts +0 -0
  110. /package/app/components/{sidebar/cases/cases-modal.module.css → navbar/case-modals/all-cases-modal.module.css} +0 -0
  111. /package/app/components/sidebar/notes/{class-details-shared.ts → class-details/class-details-shared.ts} +0 -0
  112. /package/app/components/sidebar/notes/{use-class-details-state.ts → class-details/use-class-details-state.ts} +0 -0
@@ -1,277 +0,0 @@
1
- /* Modal Overlay */
2
- .modalOverlay {
3
- position: fixed;
4
- inset: 0;
5
- background-color: color-mix(in lab, var(--background) 50%, transparent);
6
- display: flex;
7
- justify-content: center;
8
- align-items: center;
9
- z-index: var(--zIndex5);
10
- cursor: default;
11
- transition: background-color var(--durationM) var(--bezierFastoutSlowin);
12
- }
13
-
14
- /* Modal Container */
15
- .modal {
16
- background: var(--backgroundLight);
17
- border-radius: var(--spaceXS);
18
- width: 90%;
19
- max-width: 600px;
20
- box-shadow: 0 var(--spaceXS) var(--spaceL)
21
- color-mix(in lab, var(--black) 10%, transparent);
22
- transition: background-color var(--durationM) var(--bezierFastoutSlowin);
23
- overflow: hidden;
24
- max-height: 90vh;
25
- overflow-y: auto;
26
- cursor: default;
27
- }
28
-
29
- /* Modal Header */
30
- .modalHeader {
31
- display: flex;
32
- justify-content: space-between;
33
- align-items: center;
34
- padding: var(--spaceL);
35
- border-bottom: 2px solid var(--error);
36
- background-color: color-mix(in lab, var(--error) 5%, transparent);
37
- }
38
-
39
- .dangerTitle {
40
- font-size: var(--fontSizeBodyL);
41
- margin: 0;
42
- font-weight: var(--fontWeightMedium);
43
- color: var(--error);
44
- }
45
-
46
- .closeButton {
47
- background: none;
48
- border: none;
49
- font-size: var(--fontSizeH5);
50
- cursor: pointer;
51
- padding: var(--spaceS);
52
- color: var(--textLight);
53
- transition: color var(--durationS) var(--bezierFastoutSlowin);
54
- }
55
-
56
- .closeButton:hover {
57
- color: var(--error);
58
- }
59
-
60
- /* Modal Content */
61
- .modalContent {
62
- padding: var(--spaceL);
63
- }
64
-
65
- /* Dividers */
66
- .divider {
67
- height: 1px;
68
- background-color: color-mix(in lab, var(--text) 15%, transparent);
69
- margin: var(--spaceL) 0;
70
- }
71
-
72
- /* User Information Section */
73
- .userInfo {
74
- display: flex;
75
- flex-direction: column;
76
- gap: var(--spaceM);
77
- }
78
-
79
- .infoRow {
80
- display: flex;
81
- flex-direction: column;
82
- gap: var(--spaceXS);
83
- }
84
-
85
- .label {
86
- font-weight: var(--fontWeightMedium);
87
- color: var(--textTitle);
88
- font-size: var(--fontSizeBodyS);
89
- }
90
-
91
- .value {
92
- color: var(--textBody);
93
- font-size: var(--fontSizeBodyS);
94
- padding: var(--spaceS);
95
- background-color: color-mix(in lab, var(--text) 5%, transparent);
96
- border-radius: var(--spaceXS);
97
- border: 1px solid color-mix(in lab, var(--text) 10%, transparent);
98
- font-family: monospace;
99
- word-break: break-all;
100
- }
101
-
102
- /* Warning Section */
103
- .warningSection {
104
- text-align: center;
105
- }
106
-
107
- .warningText {
108
- color: var(--error);
109
- font-weight: var(--fontWeightMedium);
110
- font-size: var(--fontSizeBodyM);
111
- line-height: 1.5;
112
- margin: 0;
113
- padding: var(--spaceL);
114
- background-color: color-mix(in lab, var(--error) 8%, transparent);
115
- border: 1px solid color-mix(in lab, var(--error) 25%, transparent);
116
- border-radius: var(--spaceXS);
117
- }
118
-
119
- .progressSection {
120
- margin: var(--spaceL) 0;
121
- padding: var(--spaceM);
122
- border-radius: var(--spaceXS);
123
- border: 1px solid color-mix(in lab, var(--error) 25%, transparent);
124
- background-color: color-mix(in lab, var(--error) 8%, transparent);
125
- }
126
-
127
- .progressHeader {
128
- display: flex;
129
- justify-content: space-between;
130
- gap: var(--spaceM);
131
- margin-bottom: var(--spaceS);
132
- }
133
-
134
- .progressTitle {
135
- margin: 0;
136
- color: var(--error);
137
- font-weight: var(--fontWeightMedium);
138
- font-size: var(--fontSizeBodyS);
139
- }
140
-
141
- .progressMeta {
142
- margin: 0;
143
- color: var(--textBody);
144
- font-size: var(--fontSizeBodyS);
145
- }
146
-
147
- .progressTrack {
148
- width: 100%;
149
- height: var(--spaceM);
150
- border-radius: var(--spaceXL);
151
- overflow: hidden;
152
- background-color: color-mix(in lab, var(--error) 18%, transparent);
153
- border: 1px solid color-mix(in lab, var(--error) 25%, transparent);
154
- }
155
-
156
- .progressFill {
157
- height: 100%;
158
- width: 0;
159
- background-color: var(--error);
160
- transition: width var(--durationS) var(--bezierFastoutSlowin);
161
- }
162
-
163
- .progressStatus {
164
- margin: var(--spaceS) 0 0;
165
- color: var(--error);
166
- font-size: var(--fontSizeBodyS);
167
- font-weight: var(--fontWeightMedium);
168
- word-break: break-word;
169
- }
170
-
171
- /* Success and Error Messages */
172
- .errorMessage {
173
- background-color: color-mix(in lab, var(--error) 10%, transparent);
174
- color: var(--error);
175
- border: 1px solid color-mix(in lab, var(--error) 25%, transparent);
176
- padding: var(--spaceM);
177
- border-radius: var(--spaceXS);
178
- margin: var(--spaceL) 0;
179
- text-align: center;
180
- }
181
-
182
- .errorMessage p {
183
- margin: 0;
184
- font-weight: var(--fontWeightMedium);
185
- }
186
-
187
- .successMessage {
188
- background-color: color-mix(in lab, var(--accent) 10%, transparent);
189
- color: var(--accent);
190
- border: 1px solid color-mix(in lab, var(--accent) 25%, transparent);
191
- padding: var(--spaceM);
192
- border-radius: var(--spaceXS);
193
- margin: var(--spaceL) 0;
194
- text-align: center;
195
- }
196
-
197
- .successMessage p {
198
- margin: 0;
199
- font-weight: var(--fontWeightMedium);
200
- }
201
-
202
- .successMessage p:first-child {
203
- margin-bottom: var(--spaceS);
204
- }
205
-
206
- /* Confirmation Form */
207
- .confirmationForm {
208
- display: flex;
209
- flex-direction: column;
210
- gap: var(--spaceL);
211
- }
212
-
213
- .formGroup {
214
- display: flex;
215
- flex-direction: column;
216
- gap: var(--spaceS);
217
- }
218
-
219
- .formLabel {
220
- font-weight: var(--fontWeightMedium);
221
- color: var(--textTitle);
222
- font-size: var(--fontSizeBodyS);
223
- }
224
-
225
- .confirmationInput {
226
- width: 100%;
227
- padding: var(--spaceM);
228
- border: 2px solid color-mix(in lab, var(--error) 30%, transparent);
229
- border-radius: var(--spaceXS);
230
- font-size: var(--fontSizeBodyS);
231
- background: var(--backgroundLight);
232
- color: var(--textBody);
233
- transition: all var(--durationS) var(--bezierFastoutSlowin);
234
- box-sizing: border-box;
235
- font-family: monospace;
236
- }
237
-
238
- .confirmationInput:focus {
239
- outline: none;
240
- border-color: var(--error);
241
- box-shadow: 0 0 0 2px color-mix(in lab, var(--error) 25%, transparent);
242
- }
243
-
244
- .confirmationInput::placeholder {
245
- color: var(--textLight);
246
- font-family: inherit;
247
- }
248
-
249
- /* Delete Button */
250
- .deleteButton {
251
- background-color: var(--error);
252
- color: var(--white);
253
- border: none;
254
- padding: var(--spaceL) var(--spaceXL);
255
- border-radius: var(--spaceXS);
256
- font-weight: var(--fontWeightMedium);
257
- font-size: var(--fontSizeBodyM);
258
- cursor: pointer;
259
- transition: all var(--durationS) var(--bezierFastoutSlowin);
260
- margin-top: var(--spaceL);
261
- width: 100%;
262
- }
263
-
264
- .deleteButton:hover:not(:disabled) {
265
- background-color: color-mix(in lab, var(--error) 85%, var(--black));
266
- }
267
-
268
- .deleteButton:focus:not(:disabled) {
269
- outline: 2px solid var(--error);
270
- outline-offset: 2px;
271
- }
272
-
273
- .deleteButton:disabled {
274
- background-color: color-mix(in lab, var(--text) 20%, transparent);
275
- color: var(--textLight);
276
- cursor: not-allowed;
277
- }
@@ -1,148 +0,0 @@
1
- .overlay {
2
- position: fixed;
3
- top: 0;
4
- left: 0;
5
- right: 0;
6
- bottom: 0;
7
- background-color: rgba(0, 0, 0, 0.8);
8
- display: flex;
9
- justify-content: center;
10
- align-items: center;
11
- z-index: 9999;
12
- backdrop-filter: blur(2px);
13
- cursor: default;
14
- }
15
-
16
- .modal {
17
- position: relative;
18
- background: #ffffff;
19
- border-radius: 12px;
20
- padding: 2rem;
21
- max-width: 400px;
22
- width: 90%;
23
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4);
24
- border: 1px solid #e0e0e0;
25
- animation: slideIn 0.3s ease-out;
26
- cursor: default;
27
- }
28
-
29
- @keyframes slideIn {
30
- from {
31
- opacity: 0;
32
- transform: translateY(-20px) scale(0.95);
33
- }
34
- to {
35
- opacity: 1;
36
- transform: translateY(0) scale(1);
37
- }
38
- }
39
-
40
- .header {
41
- text-align: center;
42
- margin-bottom: 1.5rem;
43
- }
44
-
45
- .header h3 {
46
- color: #1a1a1a;
47
- font-size: 1.25rem;
48
- font-weight: 600;
49
- margin: 0;
50
- }
51
-
52
- .content {
53
- text-align: center;
54
- margin-bottom: 2rem;
55
- }
56
-
57
- .content p {
58
- color: #4a4a4a;
59
- margin: 0 0 1rem 0;
60
- line-height: 1.5;
61
- font-size: 1rem;
62
- }
63
-
64
- .countdown {
65
- font-size: 2rem;
66
- font-weight: bold;
67
- color: #dc3545;
68
- font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
69
- background: rgba(220, 53, 69, 0.1);
70
- padding: 1rem;
71
- border-radius: 8px;
72
- margin: 1rem 0;
73
- border: 2px solid rgba(220, 53, 69, 0.2);
74
- }
75
-
76
- .actions {
77
- display: flex;
78
- gap: 1rem;
79
- justify-content: center;
80
- }
81
-
82
- .extendButton,
83
- .signOutButton {
84
- padding: 0.75rem 1.5rem;
85
- border-radius: 6px;
86
- border: none;
87
- font-weight: 500;
88
- cursor: pointer;
89
- transition: all 0.2s ease;
90
- font-size: 0.9rem;
91
- }
92
-
93
- .extendButton {
94
- background: #007bff;
95
- color: white;
96
- }
97
-
98
- .extendButton:hover {
99
- background: #0056b3;
100
- }
101
-
102
- .signOutButton {
103
- background: transparent;
104
- color: #6c757d;
105
- border: 1px solid #dee2e6;
106
- }
107
-
108
- .signOutButton:hover {
109
- background: #f8f9fa;
110
- color: #495057;
111
- border-color: #adb5bd;
112
- }
113
-
114
- .extendButton:focus,
115
- .signOutButton:focus {
116
- outline: 2px solid #007bff;
117
- outline-offset: 2px;
118
- }
119
-
120
- @media (prefers-color-scheme: dark) {
121
- .overlay {
122
- background-color: rgba(0, 0, 0, 0.9);
123
- }
124
-
125
- .modal {
126
- background: #2d2d2d;
127
- border-color: #404040;
128
- }
129
-
130
- .header h3 {
131
- color: #ffffff;
132
- }
133
-
134
- .content p {
135
- color: #cccccc;
136
- }
137
-
138
- .signOutButton {
139
- color: #adb5bd;
140
- border-color: #6c757d;
141
- }
142
-
143
- .signOutButton:hover {
144
- background: #404040;
145
- color: #ffffff;
146
- border-color: #adb5bd;
147
- }
148
- }
@@ -1,192 +0,0 @@
1
- /* Modal Overlay & Container */
2
- .modalOverlay {
3
- position: fixed;
4
- inset: 0;
5
- background-color: color-mix(in lab, var(--background) 50%, transparent);
6
- display: flex;
7
- justify-content: center;
8
- align-items: center;
9
- z-index: var(--zIndex5);
10
- cursor: default;
11
- transition: background-color var(--durationM) var(--bezierFastoutSlowin);
12
- }
13
-
14
- .modal {
15
- background: var(--backgroundLight);
16
- border-radius: var(--spaceXS);
17
- width: 90%;
18
- max-width: 500px;
19
- max-height: min(90vh, 90vw);
20
- box-shadow: 0 var(--spaceXS) var(--spaceL)
21
- color-mix(in lab, var(--black) 10%, transparent);
22
- display: flex;
23
- flex-direction: column;
24
- transition: background-color var(--durationM) var(--bezierFastoutSlowin);
25
- overflow: hidden;
26
- cursor: default;
27
- }
28
-
29
- /* Modal Header */
30
- .modalHeader {
31
- display: flex;
32
- justify-content: space-between;
33
- align-items: center;
34
- padding: var(--spaceL);
35
- font-size: var(--fontSizeBodyL);
36
- border-bottom: 1px solid color-mix(in lab, var(--text) 10%, transparent);
37
- color: var(--textTitle);
38
- }
39
-
40
- .modalHeader h1 {
41
- font-size: var(--fontSizeBodyM);
42
- margin: 0;
43
- font-weight: var(--fontWeightMedium);
44
- }
45
-
46
- /* Close Button */
47
- .closeButton {
48
- background: none;
49
- border: none;
50
- font-size: var(--fontSizeH5);
51
- cursor: pointer;
52
- padding: var(--spaceS);
53
- color: var(--textLight);
54
- transition: color var(--durationS) var(--bezierFastoutSlowin);
55
- }
56
-
57
- .closeButton:hover {
58
- color: var(--text);
59
- }
60
-
61
- /* Form & Form Groups */
62
- .form {
63
- display: flex;
64
- flex-direction: column;
65
- flex: 1 1 auto;
66
- min-height: 0;
67
- gap: var(--spaceL);
68
- width: 100%;
69
- max-width: 100%;
70
- padding: var(--spaceL);
71
- margin: 0 auto;
72
- box-sizing: border-box;
73
- overflow-y: auto;
74
- }
75
-
76
- .formGroup {
77
- margin-bottom: var(--spaceXS);
78
- }
79
-
80
- .formGroup label {
81
- display: block;
82
- margin-bottom: var(--spaceS);
83
- color: var(--textBody);
84
- }
85
-
86
- /* Readonly Input Styling (for company/email fields) */
87
- .input {
88
- width: 100%;
89
- padding: var(--spaceM);
90
- border: 1.5px solid color-mix(in lab, var(--text) 20%, transparent);
91
- border-radius: var(--spaceXS);
92
- font-size: var(--fontSizeBodyS);
93
- background: var(--backgroundLight);
94
- color: var(--textBody);
95
- box-sizing: border-box;
96
- }
97
-
98
- .input:disabled {
99
- background-color: color-mix(in lab, var(--background) 95%, transparent);
100
- cursor: not-allowed;
101
- }
102
-
103
- /* Helper Text */
104
- .helpText {
105
- font-size: var(--fontSizeBodyXS);
106
- color: var(--textLight);
107
- margin-top: var(--spaceXS);
108
- line-height: 1.4;
109
- }
110
-
111
- /* Button Group */
112
- .buttonGroup {
113
- display: flex;
114
- gap: var(--spaceS);
115
- margin-top: var(--spaceL);
116
- }
117
-
118
- .mfaVerificationSection {
119
- margin-top: var(--spaceM);
120
- }
121
-
122
- .mfaReauthSection {
123
- margin-top: var(--spaceM);
124
- display: flex;
125
- flex-direction: column;
126
- gap: var(--spaceS);
127
- }
128
-
129
- .mfaReauthSection label {
130
- color: var(--textBody);
131
- }
132
-
133
- .mfaButtonGroup {
134
- display: flex;
135
- gap: var(--spaceS);
136
- flex-wrap: wrap;
137
- margin-top: var(--spaceS);
138
- }
139
-
140
- .resendTimer {
141
- margin: 0;
142
- font-size: var(--fontSizeBodyXS);
143
- color: var(--textLight);
144
- display: inline-flex;
145
- align-items: center;
146
- }
147
-
148
- .recaptchaContainer {
149
- height: 0;
150
- overflow: hidden;
151
- }
152
-
153
- /* Delete Button (error variant) */
154
- .deleteButton {
155
- background-color: var(--error);
156
- color: var(--white);
157
- border: none;
158
- padding: var(--spaceM) var(--spaceL);
159
- border-radius: var(--spaceXS);
160
- font-weight: var(--fontWeightMedium);
161
- cursor: pointer;
162
- transition: all var(--durationS) var(--bezierFastoutSlowin);
163
- margin-top: var(--spaceXL);
164
- width: 100%;
165
- font-size: var(--fontSizeBodyS);
166
- }
167
-
168
- .deleteButton:hover:not(:disabled) {
169
- background-color: color-mix(in lab, var(--error) 85%, var(--black));
170
- }
171
-
172
- .deleteButton:focus {
173
- outline: 2px solid var(--error);
174
- outline-offset: 2px;
175
- }
176
-
177
- .deleteNotice {
178
- margin-top: var(--spaceXL);
179
- font-size: var(--fontSizeBodyXS);
180
- text-align: center;
181
- color: var(--textLight);
182
- }
183
-
184
- .deleteLink {
185
- color: var(--error);
186
- text-decoration: underline;
187
- transition: color var(--durationS) var(--bezierFastoutSlowin);
188
- }
189
-
190
- .deleteLink:hover {
191
- color: color-mix(in lab, var(--error) 85%, var(--black));
192
- }