@memori.ai/memori-react 8.6.7 → 8.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/components/Header/Header.css +24 -0
  3. package/dist/components/Header/Header.d.ts +4 -0
  4. package/dist/components/Header/Header.js +52 -2
  5. package/dist/components/Header/Header.js.map +1 -1
  6. package/dist/components/LoginDrawer/LoginDrawer.css +1372 -238
  7. package/dist/components/MemoriWidget/MemoriWidget.js +25 -13
  8. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  9. package/dist/components/icons/Logout.d.ts +6 -0
  10. package/dist/components/icons/Logout.js +6 -0
  11. package/dist/components/icons/Logout.js.map +1 -0
  12. package/dist/components/layouts/HiddenChat.js +3 -1
  13. package/dist/components/layouts/HiddenChat.js.map +1 -1
  14. package/dist/components/layouts/hidden-chat.css +4 -0
  15. package/dist/components/ui/Dropdown.css +173 -0
  16. package/dist/components/ui/Dropdown.d.ts +11 -0
  17. package/dist/components/ui/Dropdown.js +33 -0
  18. package/dist/components/ui/Dropdown.js.map +1 -0
  19. package/dist/helpers/error.js +3 -0
  20. package/dist/helpers/error.js.map +1 -1
  21. package/dist/helpers/tts/useTTS.js +3 -0
  22. package/dist/helpers/tts/useTTS.js.map +1 -1
  23. package/dist/locales/en.json +48 -1
  24. package/dist/locales/es.json +30 -0
  25. package/dist/locales/fr.json +30 -0
  26. package/dist/locales/it.json +44 -0
  27. package/esm/components/Header/Header.css +24 -0
  28. package/esm/components/Header/Header.d.ts +4 -0
  29. package/esm/components/Header/Header.js +53 -3
  30. package/esm/components/Header/Header.js.map +1 -1
  31. package/esm/components/LoginDrawer/LoginDrawer.css +1372 -238
  32. package/esm/components/MemoriWidget/MemoriWidget.js +25 -13
  33. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  34. package/esm/components/icons/Logout.d.ts +6 -0
  35. package/esm/components/icons/Logout.js +4 -0
  36. package/esm/components/icons/Logout.js.map +1 -0
  37. package/esm/components/layouts/HiddenChat.js +3 -1
  38. package/esm/components/layouts/HiddenChat.js.map +1 -1
  39. package/esm/components/layouts/hidden-chat.css +4 -0
  40. package/esm/components/ui/Dropdown.css +173 -0
  41. package/esm/components/ui/Dropdown.d.ts +11 -0
  42. package/esm/components/ui/Dropdown.js +30 -0
  43. package/esm/components/ui/Dropdown.js.map +1 -0
  44. package/esm/helpers/error.js +3 -0
  45. package/esm/helpers/error.js.map +1 -1
  46. package/esm/helpers/tts/useTTS.js +3 -0
  47. package/esm/helpers/tts/useTTS.js.map +1 -1
  48. package/esm/locales/en.json +48 -1
  49. package/esm/locales/es.json +30 -0
  50. package/esm/locales/fr.json +30 -0
  51. package/esm/locales/it.json +44 -0
  52. package/package.json +2 -2
  53. package/src/__snapshots__/index.test.tsx.snap +19 -0
  54. package/src/components/Header/Header.css +24 -0
  55. package/src/components/Header/Header.test.tsx +15 -1
  56. package/src/components/Header/Header.tsx +147 -10
  57. package/src/components/Header/__snapshots__/Header.test.tsx.snap +53 -37
  58. package/src/components/LoginDrawer/LoginDrawer.css +1372 -238
  59. package/src/components/LoginDrawer/LoginDrawer.test.tsx +12 -1
  60. package/src/components/MemoriWidget/MemoriWidget.tsx +83 -44
  61. package/src/components/icons/Logout.tsx +27 -0
  62. package/src/components/layouts/HiddenChat.tsx +3 -1
  63. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +1 -1
  64. package/src/components/layouts/hidden-chat.css +4 -0
  65. package/src/components/ui/Dropdown.css +173 -0
  66. package/src/components/ui/Dropdown.tsx +63 -0
  67. package/src/helpers/error.ts +3 -0
  68. package/src/helpers/tts/useTTS.ts +9 -4
  69. package/src/index.stories.tsx +1 -0
  70. package/src/index.test.tsx +17 -0
  71. package/src/locales/en.json +48 -1
  72. package/src/locales/es.json +30 -0
  73. package/src/locales/fr.json +30 -0
  74. package/src/locales/it.json +44 -0
  75. package/src/components/AccountForm/AccountForm.test.tsx +0 -27
  76. package/src/components/AccountForm/__snapshots__/AccountForm.test.tsx.snap +0 -202
@@ -1,11 +1,16 @@
1
+ /* ===== LOGIN DRAWER BASE STYLES ===== */
1
2
  .memori--login-drawer {
2
3
  z-index: 10000;
4
+ padding-top: 36px;
3
5
  }
4
6
 
5
7
  .memori--login-drawer .memori-drawer--panel {
6
8
  --memori-drawer--width: 100%;
7
9
  --memori-drawer--width--md: 60%;
8
10
  --memori-drawer--width--lg: 40%;
11
+ border-radius: 16px 0 0 16px;
12
+ background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
13
+ box-shadow: -8px 0 32px rgba(0, 0, 0, 0.1);
9
14
  }
10
15
 
11
16
  .memori--login-drawer.memori--login-drawer--logged .memori-drawer--panel {
@@ -21,45 +26,25 @@
21
26
  line-height: inherit;
22
27
  }
23
28
 
24
- form.memori--login-drawer--form {
25
- display: flex;
26
- flex-direction: column;
27
- padding: 1rem 0.5rem;
28
- }
29
-
30
- p.memori--login-drawer--error {
31
- margin: 0.5rem 0;
32
- color: var(--memori-error-color);
33
- text-align: center;
34
- }
35
29
 
36
- p.memori--login-drawer--inline-error {
37
- margin: 0 0 0.5rem;
38
- color: var(--memori-error-color);
39
- font-size: 0.875rem;
40
- text-align: center;
41
- }
42
30
 
43
- .memori--login-drawer--otp-form {
31
+ /* ===== FORM STYLES ===== */
32
+ form.memori--login-drawer--form {
44
33
  display: flex;
45
34
  flex-direction: column;
46
- padding: 0 1rem;
47
- margin: 0 0 2rem;
48
- gap: 1.5rem;
35
+ padding: 1.5rem 1rem;
36
+ gap: 1rem;
49
37
  }
50
38
 
51
- .memori--login-drawer--otp-form label {
39
+ .memori--login-drawer--form label:not(.memori-checkbox) {
52
40
  display: flex;
53
41
  flex-direction: column;
42
+ margin: 0.5rem 0;
54
43
  gap: 0.5rem;
55
- text-align: left;
56
44
  }
57
45
 
58
-
59
- .memori--login-drawer--form label:not(.memori-checkbox) {
60
- display: flex;
61
- flex-direction: column;
62
- margin: 0.5rem 0;
46
+ .memori-checkbox--text {
47
+ width: 100%;
63
48
  }
64
49
 
65
50
  .memori--login-drawer--form label.memori-checkbox {
@@ -69,378 +54,1527 @@ p.memori--login-drawer--inline-error {
69
54
 
70
55
  .memori--login-drawer--form input {
71
56
  flex: 1 1 auto;
72
- padding: 10px;
73
- border: 1px solid var(--memori-button-border-color, #ccc);
74
- border-radius: 5px;
57
+ padding: 12px 16px;
58
+ border: 2px solid var(--memori-border-color, #e2e8f0);
59
+ border-radius: 12px;
75
60
  margin: 0.5rem 0;
61
+ background: white;
62
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
76
63
  font-size: 16px;
77
64
  line-height: 1.5;
78
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
65
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
79
66
  }
80
67
 
81
- .memori--login-drawer--form button:focus,
82
- .memori--login-drawer--form input:focus,
83
- .memori--login-drawer--form input[type="checkbox"]:focus+.memori-checkbox--inner {
68
+ .memori--login-drawer--form input:focus {
84
69
  border-color: var(--memori-primary);
85
- box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2);
70
+ box-shadow: 0 0 0 4px rgba(var(--memori-primary-rgb, 59, 130, 246), 0.1);
86
71
  outline: none;
72
+ transform: translateY(-1px);
87
73
  }
88
74
 
89
- .memori--login-drawer--form input[aria-invalid="true"] {
75
+ .memori--login-drawer--form input[aria-invalid='true'] {
90
76
  border-color: var(--memori-error-color);
77
+ box-shadow: 0 0 0 4px rgba(var(--memori-error-color-rgb, 239, 68, 68), 0.1);
91
78
  }
92
79
 
93
- .memori--login-drawer--form a {
94
- color: var(--memori-primary);
95
- text-decoration: underline;
96
- }
97
-
98
- .memori--login-drawer--form a:hover,
99
- .memori--login-drawer--form a:focus,
100
- .memori--login-drawer--form a:active {
101
- opacity: 0.8;
102
- outline-color: var(--memori-primary);
103
- }
104
-
105
- .memori--login-drawer--form button[type="submit"] {
80
+ .memori--login-drawer--form button[type='submit'] {
106
81
  margin-top: 1rem;
107
82
  }
108
83
 
109
84
  .memori--login-drawer--form small {
110
- color: #666;
111
- font-size: 0.8rem;
112
- }
113
-
114
- p.memori--login-drawer--signup {
115
- margin-top: 1.5rem;
116
- }
117
-
118
- .memori--login-drawer--signup p:not(:last-of-type) {
119
- margin-bottom: 0.5rem;
85
+ margin-top: 0.25rem;
86
+ color: #64748b;
87
+ font-size: 0.875rem;
120
88
  }
121
89
 
122
- .memori--login-drawer--password-meter {
123
- margin: 0;
90
+ /* ===== ERROR STYLES ===== */
91
+ p.memori--login-drawer--error {
92
+ margin: 0.5rem 0;
93
+ color: var(--memori-error-color);
124
94
  text-align: center;
125
95
  }
126
96
 
127
- meter.memori--login-drawer--password-meter {
128
- width: 100%;
97
+ p.memori--login-drawer--inline-error {
98
+ margin: 0 0 0.5rem;
99
+ color: var(--memori-error-color);
100
+ font-size: 0.875rem;
101
+ text-align: center;
129
102
  }
130
103
 
131
- meter.memori--login-drawer--password-meter+small {
132
- display: inline-block;
104
+ /* ===== WELCOME SECTION ===== */
105
+ .memori--login-drawer--welcome {
106
+ position: relative;
107
+ overflow: hidden;
108
+ padding: 2rem 1.5rem;
109
+ margin: 1rem;
133
110
  text-align: center;
134
111
  }
135
112
 
136
- figure.memori--login-drawer--avatar {
137
- display: flex;
138
- overflow: hidden;
139
- width: 60px;
140
- height: 60px;
141
- align-items: center;
142
- justify-content: center;
143
- border-radius: 50%;
144
- margin: 0 0 1rem 1rem;
145
- float: right;
113
+ .memori--login-drawer--welcome::before {
114
+ position: absolute;
115
+ top: 0;
116
+ right: 0;
117
+ bottom: 0;
118
+ left: 0;
119
+ background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="25" cy="25" r="1" fill="white" opacity="0.1"/><circle cx="75" cy="75" r="1" fill="white" opacity="0.1"/><circle cx="50" cy="10" r="0.5" fill="white" opacity="0.1"/><circle cx="10" cy="60" r="0.5" fill="white" opacity="0.1"/><circle cx="90" cy="40" r="0.5" fill="white" opacity="0.1"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');
120
+ content: '';
121
+ opacity: 0.3;
146
122
  }
147
123
 
148
- figure.memori--login-drawer--avatar img {
149
- width: 100%;
150
- height: 100%;
151
- object-fit: cover;
152
- object-position: center;
124
+ .memori--login-drawer--welcome-header {
125
+ position: relative;
126
+ z-index: 1;
153
127
  }
154
128
 
155
- h3.memori--login-drawer--edit-account-title {
156
- margin: 2.5rem 0 0.5rem;
157
- font-size: 1.33rem;
158
- font-weight: 400;
159
- line-height: 1.2;
129
+ .memori--login-drawer--welcome-icon {
130
+ display: block;
131
+ margin-bottom: 1rem;
132
+ animation: float 3s ease-in-out infinite;
133
+ font-size: 3rem;
160
134
  }
161
135
 
162
- /* OTP Login Styles */
163
- .memori--login-drawer--welcome {
164
- padding: 1rem 0.5rem;
165
- text-align: center;
136
+ @keyframes float {
137
+ 0%,
138
+ 100% {
139
+ transform: translateY(0px);
140
+ }
141
+ 50% {
142
+ transform: translateY(-10px);
143
+ }
166
144
  }
167
145
 
168
146
  .memori--login-drawer--welcome h3 {
169
147
  margin: 0 0 1rem;
170
- color: var(--memori-text-color, #333);
171
- font-size: 1.5rem;
172
- font-weight: 600;
148
+ font-size: 2rem;
149
+ font-weight: 700;
150
+ -webkit-text-fill-color: #0000;
151
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
173
152
  }
174
153
 
175
154
  .memori--login-drawer--welcome-description {
176
155
  margin: 0 0 2rem;
177
- color: var(--memori-text-secondary, #666);
178
- font-size: 1rem;
179
- line-height: 1.5;
156
+ color: #374151;
157
+ font-size: 1.1rem;
158
+ line-height: 1.6;
159
+ opacity: 0.9;
180
160
  }
181
161
 
162
+ /* ===== OTP INFO STEPS ===== */
182
163
  .memori--login-drawer--otp-info {
164
+ position: relative;
165
+ z-index: 1;
183
166
  display: flex;
184
167
  flex-direction: column;
185
- margin: 0 0 2rem;
186
- gap: 1rem;
187
- text-align: left;
168
+ margin: 2rem 0;
169
+ gap: 1.5rem;
188
170
  }
189
171
 
190
172
  .memori--login-drawer--otp-info-item {
173
+ position: relative;
191
174
  display: flex;
192
- align-items: center;
193
- padding: 1rem;
194
- border: 1px solid var(--memori-border-color, #e9ecef);
195
- border-radius: 8px;
196
- background: var(--memori-background-light, #f8f9fa);
175
+ overflow: hidden;
176
+ align-items: flex-start;
177
+ padding: 1.5rem;
178
+ border: 1px solid var(--memori-border-color);
179
+ border-radius: 16px;
180
+ backdrop-filter: blur(10px);
181
+ background: white;
197
182
  gap: 1rem;
183
+ transition: all 0.3s ease;
184
+ }
185
+
186
+ .memori--login-drawer--otp-info-item::before {
187
+ position: absolute;
188
+ top: 0;
189
+ right: 0;
190
+ bottom: 0;
191
+ left: 0;
192
+ background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.1) 50%, transparent 70%);
193
+ content: '';
194
+ transform: translateX(-100%);
195
+ transition: transform 0.6s ease;
196
+ }
197
+
198
+ .memori--login-drawer--otp-info-item:hover::before {
199
+ transform: translateX(100%);
200
+ }
201
+
202
+ .memori--login-drawer--otp-info-item:hover {
203
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
204
+ transform: translateY(-2px);
198
205
  }
199
206
 
200
207
  .memori--login-drawer--otp-info-number {
201
208
  display: flex;
202
- width: 32px;
203
- height: 32px;
209
+ width: 40px;
210
+ height: 40px;
204
211
  flex-shrink: 0;
205
212
  align-items: center;
206
213
  justify-content: center;
207
214
  border-radius: 50%;
208
215
  background: var(--memori-primary);
209
216
  color: white;
210
- font-size: 0.875rem;
217
+ font-size: 1.1rem;
218
+ font-weight: 700;
219
+ }
220
+
221
+ @keyframes pulse {
222
+ 0%,
223
+ 100% {
224
+ transform: scale(1);
225
+ }
226
+ 50% {
227
+ transform: scale(1.05);
228
+ }
229
+ }
230
+
231
+ .memori--login-drawer--otp-info-content {
232
+ flex: 1;
233
+ }
234
+
235
+ .memori--login-drawer--otp-info-content h4 {
236
+ margin: 0 0 0.5rem;
237
+ color: #374151;
238
+ font-size: 1.1rem;
211
239
  font-weight: 600;
212
240
  }
213
241
 
242
+ .memori--login-drawer--otp-info-content p {
243
+ margin: 0;
244
+ color: #374151;
245
+ font-size: 0.95rem;
246
+ line-height: 1.5;
247
+ opacity: 0.9;
248
+ }
249
+
250
+ /* ===== FEATURES ===== */
251
+ .memori--login-drawer--welcome-features {
252
+ position: relative;
253
+ z-index: 1;
254
+ display: flex;
255
+ justify-content: center;
256
+ margin: 2rem 0;
257
+ gap: 2rem;
258
+ }
259
+
260
+ .memori--login-drawer--feature {
261
+ display: flex;
262
+ min-width: 80px;
263
+ flex-direction: column;
264
+ align-items: center;
265
+ padding: 1rem;
266
+ border: 1px solid rgba(255, 255, 255, 0.2);
267
+ border-radius: 12px;
268
+ backdrop-filter: blur(10px);
269
+ background: rgba(255, 255, 255, 0.1);
270
+ gap: 0.5rem;
271
+ transition: all 0.3s ease;
272
+ }
273
+
274
+ .memori--login-drawer--feature:hover {
275
+ background: rgba(255, 255, 255, 0.2);
276
+ transform: translateY(-3px);
277
+ }
278
+
279
+ .memori--login-drawer--feature-icon {
280
+ display: block;
281
+ font-size: 1.5rem;
282
+ }
283
+
284
+ .memori--login-drawer--feature span:last-child {
285
+ font-size: 0.85rem;
286
+ font-weight: 500;
287
+ text-align: center;
288
+ }
289
+
290
+ /* ===== START BUTTON ===== */
214
291
  .memori--login-drawer--start-otp-button {
292
+ position: relative;
293
+ z-index: 1;
294
+ overflow: hidden;
215
295
  width: 100%;
216
- margin-bottom: 1rem;
296
+ padding: 1rem 2rem;
297
+ border: none;
298
+ border-radius: 16px;
299
+ margin-top: 2rem;
300
+ background: var(--memori-primary);
301
+ color: white;
302
+ font-size: 1.1rem;
303
+ font-weight: 600;
304
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
217
305
  }
218
306
 
307
+ .memori--login-drawer--start-otp-button::before {
308
+ position: absolute;
309
+ top: 0;
310
+ left: -100%;
311
+ width: 100%;
312
+ height: 100%;
313
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
314
+ content: '';
315
+ transition: left 0.5s ease;
316
+ }
317
+
318
+ .memori--login-drawer--start-otp-button:hover::before {
319
+ left: 100%;
320
+ }
321
+
322
+ .memori--login-drawer--start-otp-button:active {
323
+ transform: translateY(0);
324
+ }
325
+
326
+ .memori--login-drawer--button-content {
327
+ display: flex;
328
+ align-items: center;
329
+ justify-content: center;
330
+ gap: 0.75rem;
331
+ }
332
+
333
+ .memori--login-drawer--button-icon {
334
+ animation: rocket 2s ease-in-out infinite;
335
+ font-size: 1.2rem;
336
+ }
337
+
338
+ @keyframes rocket {
339
+ 0%,
340
+ 100% {
341
+ transform: translateY(0) rotate(0deg);
342
+ }
343
+ 50% {
344
+ transform: translateY(-3px) rotate(5deg);
345
+ }
346
+ }
347
+
348
+ /* ===== OTP CONTAINER ===== */
219
349
  .memori--login-drawer--otp-container {
220
- padding: 1rem 0.5rem;
350
+ position: relative;
351
+ overflow: hidden;
352
+ padding: 2rem 1.5rem;
353
+ border-radius: 16px;
354
+ margin: 1rem;
355
+ background: white;
356
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
357
+ }
358
+
359
+ .memori--login-drawer--otp-container::before {
360
+ position: absolute;
361
+ top: 0;
362
+ right: 0;
363
+ left: 0;
364
+ height: 4px;
365
+ animation: gradientShift 3s ease infinite;
366
+ background: linear-gradient(90deg, var(--memori-primary), var(--memori-primary));
367
+ background-size: 300% 100%;
368
+ content: '';
369
+ }
370
+
371
+ @keyframes gradientShift {
372
+ 0% {
373
+ background-position: 0% 50%;
374
+ }
375
+ 50% {
376
+ background-position: 100% 50%;
377
+ }
378
+ 100% {
379
+ background-position: 0% 50%;
380
+ }
381
+ }
382
+
383
+ .memori--login-drawer--otp-header {
384
+ margin-bottom: 2rem;
221
385
  text-align: center;
222
386
  }
223
387
 
388
+ .memori--login-drawer--otp-icon {
389
+ display: block;
390
+ margin-bottom: 1rem;
391
+ animation: bounce 2s ease-in-out infinite;
392
+ font-size: 3rem;
393
+ }
394
+
395
+ @keyframes bounce {
396
+ 0%,
397
+ 20%,
398
+ 50%,
399
+ 80%,
400
+ 100% {
401
+ transform: translateY(0);
402
+ }
403
+ 40% {
404
+ transform: translateY(-10px);
405
+ }
406
+ 60% {
407
+ transform: translateY(-5px);
408
+ }
409
+ }
410
+
224
411
  .memori--login-drawer--otp-container h3 {
225
412
  margin: 0 0 1rem;
226
- color: var(--memori-text-color, #333);
227
- font-size: 1.5rem;
228
- font-weight: 600;
413
+ color: #1e293b;
414
+ font-size: 1.75rem;
415
+ font-weight: 700;
416
+ text-align: center;
229
417
  }
230
418
 
231
419
  .memori--login-drawer--otp-description {
232
420
  margin: 0 0 2rem;
233
- color: var(--memori-text-secondary, #666);
421
+ color: #64748b;
234
422
  font-size: 1rem;
235
- line-height: 1.5;
423
+ line-height: 1.6;
424
+ text-align: center;
236
425
  }
237
- .memori--login-drawer--otp-form label span {
238
- color: var(--memori-text-color, #333);
239
- font-size: 0.875rem;
240
- font-weight: 600;
241
- letter-spacing: 0.05em;
242
- text-transform: uppercase;
426
+
427
+ /* ===== OTP FORM ===== */
428
+ .memori--login-drawer--otp-form {
429
+ display: flex;
430
+ flex-direction: column;
431
+ margin: 0 0 2rem;
432
+ gap: 1.5rem;
243
433
  }
244
434
 
245
- .memori--login-drawer--otp-username-input {
246
- width: 95%;
247
- height: 50px;
248
- padding: 0 1rem;
249
- border: 2px solid var(--memori-border-color, #e9ecef);
250
- border-radius: 8px;
251
- background: var(--memori-background, #fff);
252
- font-size: 1rem;
253
- font-weight: 500;
254
- outline: none;
255
- text-align: left;
256
- transition: all 0.2s ease;
435
+ .memori--login-drawer--otp-form.loading {
436
+ opacity: 0.7;
437
+ pointer-events: none;
257
438
  }
258
439
 
259
- .memori--login-drawer--otp-username-input:focus {
260
- border-color: var(--memori-primary);
261
- box-shadow: 0 0 0 3px rgba(var(--memori-primary-rgb, 0, 123, 255), 0.1);
262
- transform: translateY(-1px);
440
+ .memori--login-drawer--otp-label {
441
+ display: flex;
442
+ min-width: 500px;
443
+ flex-direction: column;
444
+ align-self: center;
445
+ gap: 0.75rem;
263
446
  }
264
447
 
265
- .memori--login-drawer--otp-username-input::placeholder {
266
- color: var(--memori-text-muted, #999);
267
- font-weight: 400;
448
+ .memori--login-drawer--otp-label-text {
449
+ color: #374151;
450
+ font-size: 0.95rem;
451
+ font-weight: 600;
452
+ letter-spacing: 0.05em;
453
+ text-transform: uppercase;
454
+ /* text-align: center; */
455
+ }
456
+
457
+ .memori--login-drawer--otp-input-container {
458
+ position: relative;
459
+ display: flex;
460
+ align-items: center;
268
461
  }
269
462
 
270
463
  .memori--login-drawer--otp-input {
271
464
  width: 200px;
272
465
  height: 60px;
273
- border: 2px solid var(--memori-border-color, #e9ecef);
274
- border-radius: 12px;
466
+ border: 3px solid #e2e8f0;
467
+ border-radius: 16px;
275
468
  margin: 0 auto;
276
- background: var(--memori-background, #fff);
469
+ background: #f8fafc;
470
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
277
471
  font-size: 2rem;
278
- font-weight: 600;
472
+ font-weight: 700;
279
473
  letter-spacing: 0.5rem;
280
474
  outline: none;
281
475
  text-align: center;
282
- transition: all 0.2s ease;
476
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
283
477
  }
284
478
 
285
479
  .memori--login-drawer--otp-input:focus {
286
480
  border-color: var(--memori-primary);
287
- box-shadow: 0 0 0 3px rgba(var(--memori-primary-rgb, 0, 123, 255), 0.1);
481
+ background: white;
482
+ box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1);
288
483
  transform: scale(1.02);
289
484
  }
290
485
 
291
- .memori--login-drawer--otp-input::placeholder {
292
- color: var(--memori-text-muted, #999);
293
- letter-spacing: 0.5rem;
486
+ .memori--login-drawer--otp-input.success {
487
+ border-color: #10b981;
488
+ animation: successPulse 0.6s ease-in-out;
489
+ background: linear-gradient(135deg, #d1fae5, #a7f3d0);
294
490
  }
295
491
 
296
- .memori--login-drawer--otp-input:invalid {
297
- border-color: var(--memori-error-color);
492
+ .memori--login-drawer--otp-input.error {
493
+ border-color: #ef4444;
298
494
  animation: shake 0.5s ease-in-out;
495
+ background: linear-gradient(135deg, #fee2e2, #fecaca);
299
496
  }
300
497
 
301
- @keyframes shake {
302
- 0%, 100% { transform: translateX(0); }
303
- 25% { transform: translateX(-5px); }
304
- 75% { transform: translateX(5px); }
498
+ .memori--login-drawer--otp-email-input {
499
+ width: 100%;
500
+ height: 56px;
501
+ padding: 0 1rem;
502
+ border: 2px solid #e2e8f0;
503
+ border-radius: 12px;
504
+ background: #f8fafc;
505
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
506
+ font-size: 1rem;
507
+ font-weight: 500;
508
+ outline: none;
509
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
305
510
  }
306
511
 
307
- .memori--login-drawer--otp-username-input:invalid {
308
- border-color: var(--memori-error-color);
309
- animation: shake 0.5s ease-in-out;
512
+ .memori--login-drawer--otp-email-input:focus {
513
+ border-color: var(--memori-primary);
514
+ background: white;
515
+ box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1);
516
+ transform: translateY(-1px);
310
517
  }
311
518
 
312
- .memori--login-drawer--otp-timer {
313
- display: flex;
314
- align-items: center;
315
- justify-content: center;
316
- padding: 0.75rem 1rem;
317
- border: 1px solid var(--memori-warning-color, #ffc107);
318
- border-radius: 8px;
319
- margin: 0 0 1.5rem;
320
- background: rgba(var(--memori-warning-color-rgb, 255, 193, 7), 0.1);
321
- color: var(--memori-warning-color, #ffc107);
322
- font-size: 0.875rem;
323
- font-weight: 600;
324
- gap: 0.5rem;
519
+ .memori--login-drawer--otp-email-input.valid {
520
+ border-color: #10b981;
521
+ background: linear-gradient(135deg, #d1fae5, #a7f3d0);
325
522
  }
326
523
 
327
- .memori--login-drawer--otp-timer::before {
328
- content: "⏱️";
329
- font-size: 1rem;
524
+ .memori--login-drawer--otp-email-input.error {
525
+ border-color: #ef4444;
526
+ animation: shake 0.5s ease-in-out;
527
+ background: linear-gradient(135deg, #fee2e2, #fecaca);
330
528
  }
331
529
 
332
- .memori--login-drawer--otp-actions {
333
- display: flex;
334
- flex-wrap: wrap;
335
- justify-content: center;
336
- gap: 1rem;
530
+ .memori--login-drawer--otp-valid-icon {
531
+ position: absolute;
532
+ right: 1rem;
533
+ animation: checkmark 0.5s ease-in-out;
534
+ color: #10b981;
535
+ font-size: 1.2rem;
536
+ font-weight: bold;
337
537
  }
338
538
 
339
- .memori--login-drawer--otp-actions .memori-button {
340
- min-width: 120px;
539
+ @keyframes checkmark {
540
+ 0% {
541
+ transform: scale(0) rotate(0deg);
542
+ }
543
+ 50% {
544
+ transform: scale(1.2) rotate(180deg);
545
+ }
546
+ 100% {
547
+ transform: scale(1) rotate(360deg);
548
+ }
341
549
  }
342
550
 
343
- .memori--login-drawer--otp-error {
551
+ .memori--login-drawer--otp-loading {
552
+ position: absolute;
553
+ right: 1rem;
344
554
  display: flex;
345
555
  align-items: center;
346
556
  justify-content: center;
347
- padding: 0.75rem 1rem;
348
- border: 1px solid var(--memori-error-color);
349
- border-radius: 8px;
350
- margin: 1rem 0 0;
351
- animation: slideIn 0.3s ease-out;
352
- background: rgba(var(--memori-error-color-rgb, 220, 53, 69), 0.1);
353
- color: var(--memori-error-color);
354
- font-size: 0.875rem;
355
- font-weight: 500;
356
- gap: 0.5rem;
357
- text-align: center;
358
557
  }
359
558
 
360
- .memori--login-drawer--otp-error::before {
361
- content: "⚠️";
362
- font-size: 1rem;
559
+ .memori--login-drawer--otp-spinner {
560
+ width: 20px;
561
+ height: 20px;
562
+ border: 2px solid #e2e8f0;
563
+ border-radius: 50%;
564
+ border-top: 2px solid var(--memori-primary);
565
+ animation: spin 1s linear infinite;
363
566
  }
364
567
 
365
- @keyframes slideIn {
366
- from {
367
- opacity: 0;
368
- transform: translateY(-10px);
568
+ @keyframes spin {
569
+ 0% {
570
+ transform: rotate(0deg);
369
571
  }
370
- to {
371
- opacity: 1;
372
- transform: translateY(0);
572
+ 100% {
573
+ transform: rotate(360deg);
373
574
  }
374
575
  }
375
576
 
376
- /* Loading state for OTP form */
377
- .memori--login-drawer--otp-form.loading {
378
- opacity: 0.7;
379
- pointer-events: none;
577
+ .memori--login-drawer--otp-help {
578
+ margin-top: 0.5rem;
579
+ color: #64748b;
580
+ font-size: 0.875rem;
581
+ text-align: center;
582
+ }
583
+
584
+ /* ===== SUCCESS STATE ===== */
585
+ .memori--login-drawer--otp-success {
586
+ padding: 2rem;
587
+ border: 2px solid #10b981;
588
+ border-radius: 16px;
589
+ margin: 1rem 0;
590
+ animation: successSlide 0.5s ease-out;
591
+ background: linear-gradient(135deg, #d1fae5, #a7f3d0);
592
+ text-align: center;
593
+ }
594
+
595
+ @keyframes successSlide {
596
+ from {
597
+ opacity: 0;
598
+ transform: translateY(20px);
599
+ }
600
+ to {
601
+ opacity: 1;
602
+ transform: translateY(0);
603
+ }
604
+ }
605
+
606
+ .memori--login-drawer--otp-success-icon {
607
+ display: block;
608
+ margin-bottom: 1rem;
609
+ animation: celebration 1s ease-in-out;
610
+ font-size: 3rem;
611
+ }
612
+
613
+ @keyframes celebration {
614
+ 0%,
615
+ 100% {
616
+ transform: scale(1) rotate(0deg);
617
+ }
618
+ 25% {
619
+ transform: scale(1.1) rotate(-5deg);
620
+ }
621
+ 75% {
622
+ transform: scale(1.1) rotate(5deg);
623
+ }
624
+ }
625
+
626
+ .memori--login-drawer--otp-success p {
627
+ margin: 0;
628
+ color: #065f46;
629
+ font-size: 1.1rem;
630
+ font-weight: 600;
631
+ }
632
+
633
+ /* ===== TIMER ===== */
634
+ .memori--login-drawer--otp-timer {
635
+ display: flex;
636
+ align-items: center;
637
+ justify-content: center;
638
+ padding: 1rem 1.5rem;
639
+ border: 2px solid #f59e0b;
640
+ border-radius: 12px;
641
+ margin: 1rem 0;
642
+ background: linear-gradient(135deg, #fef3c7, #fde68a);
643
+ color: #92400e;
644
+ font-size: 0.95rem;
645
+ font-weight: 600;
646
+ gap: 0.75rem;
647
+ /* animation: timerPulse 2s ease-in-out infinite; */
648
+ }
649
+
650
+ @keyframes timerPulse {
651
+ 0%,
652
+ 100% {
653
+ transform: scale(1);
654
+ }
655
+ 50% {
656
+ transform: scale(1.02);
657
+ }
658
+ }
659
+
660
+ .memori--login-drawer--otp-timer-icon {
661
+ animation: tick 1s ease-in-out infinite;
662
+ font-size: 1.2rem;
663
+ }
664
+
665
+ @keyframes tick {
666
+ 0%,
667
+ 100% {
668
+ transform: rotate(0deg);
669
+ }
670
+ 25% {
671
+ transform: rotate(-10deg);
672
+ }
673
+ 75% {
674
+ transform: rotate(10deg);
675
+ }
380
676
  }
381
677
 
382
- .memori--login-drawer--otp-form.loading .memori--login-drawer--otp-username-input,
383
- .memori--login-drawer--otp-form.loading .memori--login-drawer--otp-input {
384
- background: var(--memori-background-light, #f8f9fa);
385
- cursor: not-allowed;
678
+ /* ===== ACTIONS ===== */
679
+ .memori--login-drawer--otp-actions {
680
+ display: flex;
681
+ flex-wrap: wrap;
682
+ justify-content: center;
683
+ margin-top: 2rem;
684
+ gap: 1rem;
386
685
  }
387
686
 
388
- /* Success state animation */
687
+ .memori--login-drawer--otp-actions .memori-button {
688
+ position: relative;
689
+ overflow: hidden;
690
+ min-width: 140px;
691
+ min-height: 42px;
692
+ border-radius: 8px;
693
+ font-weight: 600;
694
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
695
+ }
696
+
697
+ .memori--login-drawer--otp-actions .memori-button:hover {
698
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
699
+ transform: translateY(-2px);
700
+ }
701
+
702
+ /* ===== ERROR STATES ===== */
703
+ .memori--login-drawer--otp-error {
704
+ display: flex;
705
+ align-items: center;
706
+ justify-content: center;
707
+ padding: 1rem 1.5rem;
708
+ border: 2px solid #ef4444;
709
+ border-radius: 12px;
710
+ margin: 1rem 0;
711
+ animation: errorSlide 0.3s ease-out;
712
+ background: linear-gradient(135deg, #fee2e2, #fecaca);
713
+ color: #dc2626;
714
+ font-size: 0.95rem;
715
+ font-weight: 500;
716
+ gap: 0.75rem;
717
+ }
718
+
719
+ @keyframes errorSlide {
720
+ from {
721
+ opacity: 0;
722
+ transform: translateY(-10px);
723
+ }
724
+ to {
725
+ opacity: 1;
726
+ transform: translateY(0);
727
+ }
728
+ }
729
+
730
+ .memori--login-drawer--otp-error-icon {
731
+ animation: warning 1s ease-in-out infinite;
732
+ font-size: 1.2rem;
733
+ }
734
+
735
+ @keyframes warning {
736
+ 0%,
737
+ 100% {
738
+ transform: scale(1);
739
+ }
740
+ 50% {
741
+ transform: scale(1.1);
742
+ }
743
+ }
744
+
745
+ .memori--login-drawer--error {
746
+ display: flex;
747
+ align-items: center;
748
+ justify-content: center;
749
+ padding: 1rem 1.5rem;
750
+ border: 2px solid #ef4444;
751
+ border-radius: 12px;
752
+ margin: 1rem;
753
+ animation: errorSlide 0.3s ease-out;
754
+ background: linear-gradient(135deg, #fee2e2, #fecaca);
755
+ color: #dc2626;
756
+ font-size: 0.95rem;
757
+ font-weight: 500;
758
+ gap: 0.75rem;
759
+ }
760
+
761
+ .memori--login-drawer--error-icon {
762
+ animation: warning 1s ease-in-out infinite;
763
+ font-size: 1.2rem;
764
+ }
765
+
766
+ /* ===== ANIMATIONS ===== */
389
767
  @keyframes successPulse {
390
- 0% { transform: scale(1); }
391
- 50% { transform: scale(1.05); }
392
- 100% { transform: scale(1); }
768
+ 0% {
769
+ transform: scale(1);
770
+ }
771
+ 50% {
772
+ transform: scale(1.05);
773
+ }
774
+ 100% {
775
+ transform: scale(1);
776
+ }
393
777
  }
394
778
 
395
- .memori--login-drawer--otp-input.success {
396
- border-color: var(--memori-success-color, #28a745);
397
- animation: successPulse 0.6s ease-in-out;
398
- background: rgba(var(--memori-success-color-rgb, 40, 167, 69), 0.1);
779
+ @keyframes shake {
780
+ 0%,
781
+ 100% {
782
+ transform: translateX(0);
783
+ }
784
+ 25% {
785
+ transform: translateX(-5px);
786
+ }
787
+ 75% {
788
+ transform: translateX(5px);
789
+ }
399
790
  }
400
791
 
401
- /* Responsive adjustments */
792
+ /* ===== RESPONSIVE DESIGN ===== */
402
793
  @media (max-width: 768px) {
403
- .memori--login-drawer--otp-form {
404
- padding: 0 0.5rem;
405
- gap: 1rem;
794
+ .memori--login-drawer--welcome {
795
+ padding: 1.5rem 1rem;
796
+ margin: 0.5rem;
406
797
  }
407
-
798
+
799
+ .memori--login-drawer--welcome h3 {
800
+ font-size: 1.5rem;
801
+ }
802
+
803
+ .memori--login-drawer--welcome-description {
804
+ font-size: 1rem;
805
+ }
806
+
408
807
  .memori--login-drawer--otp-info {
409
- gap: 0.75rem;
808
+ gap: 1rem;
410
809
  }
411
-
810
+
412
811
  .memori--login-drawer--otp-info-item {
812
+ padding: 1rem;
813
+ }
814
+
815
+ .memori--login-drawer--welcome-features {
816
+ flex-wrap: wrap;
817
+ gap: 1rem;
818
+ }
819
+
820
+ .memori--login-drawer--feature {
821
+ min-width: 70px;
413
822
  padding: 0.75rem;
414
823
  }
415
- }
416
824
 
417
- @media (max-width: 480px) {
825
+ .memori--login-drawer--otp-container {
826
+ padding: 1.5rem 1rem;
827
+ margin: 0.5rem;
828
+ }
829
+
418
830
  .memori--login-drawer--otp-input {
419
831
  width: 160px;
420
832
  height: 50px;
421
833
  font-size: 1.5rem;
422
834
  letter-spacing: 0.3rem;
423
835
  }
424
-
425
- .memori--login-drawer--otp-username-input {
426
- height: 45px;
427
- font-size: 0.9rem;
428
- }
429
-
836
+
430
837
  .memori--login-drawer--otp-actions {
431
838
  flex-direction: column;
432
839
  align-items: center;
433
- gap: 0.75rem;
434
840
  }
435
-
841
+
436
842
  .memori--login-drawer--otp-actions .memori-button {
437
843
  width: 100%;
438
844
  max-width: 200px;
439
845
  }
440
-
846
+ }
847
+
848
+ @media (max-width: 480px) {
849
+ .memori--login-drawer--welcome {
850
+ padding: 1rem 0.75rem;
851
+ margin: 0.25rem;
852
+ }
853
+
854
+ .memori--login-drawer--welcome h3 {
855
+ font-size: 1.25rem;
856
+ }
857
+
858
+ .memori--login-drawer--welcome-description {
859
+ font-size: 0.9rem;
860
+ }
861
+
862
+ .memori--login-drawer--otp-info-item {
863
+ padding: 0.75rem;
864
+ gap: 0.75rem;
865
+ }
866
+
867
+ .memori--login-drawer--otp-info-number {
868
+ width: 32px;
869
+ height: 32px;
870
+ font-size: 1rem;
871
+ }
872
+
873
+ .memori--login-drawer--otp-info-content h4 {
874
+ font-size: 1rem;
875
+ }
876
+
877
+ .memori--login-drawer--otp-info-content p {
878
+ font-size: 0.85rem;
879
+ }
880
+
881
+ .memori--login-drawer--feature {
882
+ min-width: 60px;
883
+ padding: 0.5rem;
884
+ }
885
+
886
+ .memori--login-drawer--feature-icon {
887
+ font-size: 1.25rem;
888
+ }
889
+
890
+ .memori--login-drawer--feature span:last-child {
891
+ font-size: 0.75rem;
892
+ }
893
+
894
+ .memori--login-drawer--otp-container {
895
+ padding: 1rem 0.75rem;
896
+ margin: 0.25rem;
897
+ }
898
+
899
+ .memori--login-drawer--otp-container h3 {
900
+ font-size: 1.5rem;
901
+ }
902
+
903
+ .memori--login-drawer--otp-input {
904
+ width: 140px;
905
+ height: 45px;
906
+ font-size: 1.25rem;
907
+ letter-spacing: 0.2rem;
908
+ }
909
+
910
+ .memori--login-drawer--otp-email-input {
911
+ height: 48px;
912
+ font-size: 0.95rem;
913
+ }
914
+
441
915
  .memori--login-drawer--otp-timer,
442
916
  .memori--login-drawer--otp-error {
443
- padding: 0.5rem 0.75rem;
917
+ padding: 0.75rem 1rem;
918
+ font-size: 0.85rem;
919
+ }
920
+ }
921
+
922
+ /* ===== LOGGED USER LAYOUT ENHANCEMENTS ===== */
923
+ .memori--login-drawer--logged {
924
+ min-height: 100vh;
925
+ padding: 0;
926
+ background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
927
+ overflow-y: auto;
928
+ }
929
+
930
+ /* ===== USER PROFILE HEADER ===== */
931
+ .memori--login-drawer--user-header {
932
+ position: relative;
933
+ overflow: hidden;
934
+ padding: 2rem 1.5rem;
935
+ background: var(--memori-primary);
936
+ color: white;
937
+ }
938
+
939
+ .memori--login-drawer--user-header::before {
940
+ position: absolute;
941
+ top: 0;
942
+ right: 0;
943
+ bottom: 0;
944
+ left: 0;
945
+ background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse"><circle cx="10" cy="10" r="1" fill="white" opacity="0.1"/></pattern></defs><rect width="100" height="100" fill="url(%23dots)"/></svg>');
946
+ content: '';
947
+ opacity: 0.3;
948
+ }
949
+
950
+ .memori--login-drawer--user-profile {
951
+ position: relative;
952
+ z-index: 1;
953
+ display: flex;
954
+ align-items: center;
955
+ gap: 1.5rem;
956
+ }
957
+
958
+ .memori--login-drawer--avatar-container {
959
+ position: relative;
960
+ flex-shrink: 0;
961
+ }
962
+
963
+ .memori--login-drawer--avatar {
964
+ width: 80px;
965
+ height: 80px;
966
+ border: 4px solid rgba(255, 255, 255, 0.3);
967
+ border-radius: 50%;
968
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
969
+ object-fit: cover;
970
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
971
+ }
972
+
973
+ .memori--login-drawer--avatar:hover {
974
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
975
+ transform: scale(1.05);
976
+ }
977
+
978
+ .memori--login-drawer--avatar-placeholder {
979
+ display: flex;
980
+ width: 80px;
981
+ height: 80px;
982
+ align-items: center;
983
+ justify-content: center;
984
+ border: 4px solid rgba(255, 255, 255, 0.3);
985
+ border-radius: 50%;
986
+ background: var(--memori-primary);
987
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
988
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
989
+ }
990
+
991
+ .memori--login-drawer--avatar-placeholder:hover {
992
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
993
+ transform: scale(1.05);
994
+ }
995
+
996
+ .memori--login-drawer--avatar-initial {
997
+ color: white;
998
+ font-size: 2rem;
999
+ font-weight: 700;
1000
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
1001
+ }
1002
+
1003
+ .memori--login-drawer--user-info {
1004
+ min-width: 0;
1005
+ flex: 1;
1006
+ }
1007
+
1008
+ .memori--login-drawer--user-name {
1009
+ overflow: hidden;
1010
+ margin: 0 0 0.5rem;
1011
+ font-size: 1.5rem;
1012
+ font-weight: 700;
1013
+ text-overflow: ellipsis;
1014
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
1015
+ white-space: nowrap;
1016
+ }
1017
+
1018
+ .memori--login-drawer--user-email {
1019
+ overflow: hidden;
1020
+ margin: 0 0 1rem;
1021
+ font-size: 0.95rem;
1022
+ opacity: 0.9;
1023
+ text-overflow: ellipsis;
1024
+ white-space: nowrap;
1025
+ }
1026
+
1027
+ .memori--login-drawer--user-badges {
1028
+ display: flex;
1029
+ flex-wrap: wrap;
1030
+ gap: 0.5rem;
1031
+ }
1032
+
1033
+ .memori--login-drawer--badge {
1034
+ display: inline-flex;
1035
+ align-items: center;
1036
+ padding: 0.25rem 0.75rem;
1037
+ border: 1px solid rgba(255, 255, 255, 0.2);
1038
+ border-radius: 20px;
1039
+ backdrop-filter: blur(10px);
1040
+ font-size: 0.8rem;
1041
+ font-weight: 600;
1042
+ gap: 0.25rem;
1043
+ letter-spacing: 0.025em;
1044
+ text-transform: uppercase;
1045
+ transition: all 0.3s ease;
1046
+ }
1047
+
1048
+ .memori--login-drawer--badge--verified {
1049
+ border-color: rgba(16, 185, 129, 0.3);
1050
+ background: rgba(16, 185, 129, 0.2);
1051
+ color: #d1fae5;
1052
+ }
1053
+
1054
+ .memori--login-drawer--badge--premium {
1055
+ border-color: rgba(245, 158, 11, 0.3);
1056
+ background: rgba(245, 158, 11, 0.2);
1057
+ color: #fef3c7;
1058
+ }
1059
+
1060
+ .memori--login-drawer--badge:hover {
1061
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
1062
+ transform: translateY(-1px);
1063
+ }
1064
+
1065
+ /* ===== QUICK ACTIONS SECTION ===== */
1066
+ .memori--login-drawer--quick-actions {
1067
+ padding: 2rem 1.5rem 1rem;
1068
+ background: white;
1069
+ }
1070
+
1071
+ .memori--login-drawer--section-title {
1072
+ display: flex;
1073
+ align-items: center;
1074
+ margin: 0 0 1.5rem;
1075
+ color: #374151;
1076
+ font-size: 1.1rem;
1077
+ font-weight: 600;
1078
+ gap: 0.5rem;
1079
+ letter-spacing: 0.05em;
1080
+ text-transform: uppercase;
1081
+ }
1082
+
1083
+ .memori--login-drawer--section-title::before {
1084
+ width: 4px;
1085
+ height: 20px;
1086
+ border-radius: 2px;
1087
+ background: var(--memori-primary);
1088
+ content: '';
1089
+ }
1090
+
1091
+ .memori--login-drawer--chevron-button {
1092
+ padding: 0;
1093
+ border: none;
1094
+ margin: 0;
1095
+ margin-left: auto;
1096
+ background: none;
1097
+ cursor: pointer;
1098
+ }
1099
+
1100
+ .memori--login-drawer--chevron {
1101
+ width: 1.5rem;
1102
+ height: 1.5rem;
1103
+ transition: transform 0.3s ease;
1104
+ }
1105
+
1106
+ .memori--login-drawer--chevron--open {
1107
+ transform: rotate(180deg);
1108
+ }
1109
+
1110
+ .memori--login-drawer--checkbox-text {
1111
+ display: flex;
1112
+ align-items: center;
1113
+ gap: 0.5rem;
1114
+ }
1115
+
1116
+ .memori--login-drawer--deep-thought-details {
1117
+ margin: 0;
1118
+ color: #6b7280;
1119
+ font-size: 0.8rem;
1120
+ }
1121
+
1122
+ .memori--login-drawer--deep-thought-details p {
1123
+ margin: 0;
1124
+ color: #6b7280;
1125
+ font-size: 0.8rem;
1126
+ }
1127
+
1128
+ .memori--login-drawer--actions-grid {
1129
+ display: grid;
1130
+ gap: 1rem;
1131
+ grid-template-columns: repeat(2, 1fr);
1132
+ }
1133
+
1134
+ .memori--login-drawer--action-card {
1135
+ position: relative;
1136
+ display: flex;
1137
+ overflow: hidden;
1138
+ flex-direction: column;
1139
+ align-items: center;
1140
+ padding: 1.5rem 1rem;
1141
+ border: 2px solid transparent;
1142
+ border-radius: 16px;
1143
+ background: linear-gradient(135deg, #f8fafc, #e2e8f0);
1144
+ cursor: pointer;
1145
+ gap: 0.75rem;
1146
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1147
+ }
1148
+
1149
+ .memori--login-drawer--action-card::before {
1150
+ position: absolute;
1151
+ top: 0;
1152
+ right: 0;
1153
+ bottom: 0;
1154
+ left: 0;
1155
+ background: var(--memori-primary);
1156
+ content: '';
1157
+ opacity: 0;
1158
+ transition: opacity 0.3s ease;
1159
+ }
1160
+
1161
+ .memori--login-drawer--action-card:hover::before {
1162
+ opacity: 0.1;
1163
+ }
1164
+
1165
+ .memori--login-drawer--action-card:hover {
1166
+ border-color: var(--memori-primary);
1167
+ box-shadow: 0 12px 32px rgba(0, 0, 0, 0.15);
1168
+ transform: translateY(-4px);
1169
+ }
1170
+
1171
+ .memori--login-drawer--action-card--logout:hover {
1172
+ border-color: #ef4444;
1173
+ background: linear-gradient(135deg, #fee2e2, #fecaca);
1174
+ }
1175
+
1176
+ .memori--login-drawer--action-card--logout::before {
1177
+ background: linear-gradient(135deg, #ef4444, #dc2626);
1178
+ }
1179
+
1180
+ .memori--login-drawer--action-icon {
1181
+ position: relative;
1182
+ z-index: 1;
1183
+ font-size: 2rem;
1184
+ transition: transform 0.3s ease;
1185
+ }
1186
+
1187
+ .memori--login-drawer--action-card:hover .memori--login-drawer--action-icon {
1188
+ transform: scale(1.1);
1189
+ }
1190
+
1191
+ .memori--login-drawer--action-text {
1192
+ position: relative;
1193
+ z-index: 1;
1194
+ color: #374151;
1195
+ font-size: 0.9rem;
1196
+ font-weight: 600;
1197
+ text-align: center;
1198
+ transition: color 0.3s ease;
1199
+ }
1200
+
1201
+ .memori--login-drawer--action-card:hover .memori--login-drawer--action-text {
1202
+ color: #1f2937;
1203
+ }
1204
+
1205
+ .memori--login-drawer--action-card--logout:hover .memori--login-drawer--action-text {
1206
+ color: #dc2626;
1207
+ }
1208
+
1209
+ /* ===== USER STATISTICS DASHBOARD ===== */
1210
+ .memori--login-drawer--user-stats {
1211
+ padding: 1rem 1.5rem 2rem;
1212
+ border-top: 1px solid #e5e7eb;
1213
+ background: white;
1214
+ }
1215
+
1216
+ .memori--login-drawer--stats-grid {
1217
+ display: grid;
1218
+ gap: 1rem;
1219
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1220
+ }
1221
+
1222
+ .memori--login-drawer--stat-card {
1223
+ position: relative;
1224
+ display: flex;
1225
+ overflow: hidden;
1226
+ align-items: center;
1227
+ padding: 1.25rem;
1228
+ border: 1px solid #e5e7eb;
1229
+ border-radius: 12px;
1230
+ background: linear-gradient(135deg, #f8fafc, #e2e8f0);
1231
+ gap: 1rem;
1232
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1233
+ }
1234
+
1235
+ .memori--login-drawer--stat-card::before {
1236
+ position: absolute;
1237
+ top: 0;
1238
+ right: 0;
1239
+ left: 0;
1240
+ height: 3px;
1241
+ content: '';
1242
+ /* background: linear-gradient(90deg, #8246af, #00aec7); */
1243
+ transform: scaleX(0);
1244
+ transition: transform 0.3s ease;
1245
+ }
1246
+
1247
+ .memori--login-drawer--action-icon-setting {
1248
+ width: 1.5rem;
1249
+ height: 1.5rem;
1250
+ }
1251
+
1252
+ .memori--login-drawer--action-icon-question-help {
1253
+ width: 1.5rem;
1254
+ height: 1.5rem;
1255
+ }
1256
+ /* .memori--login-drawer--stat-card:hover::before {
1257
+ transform: scaleX(1);
1258
+ } */
1259
+
1260
+ /* .memori--login-drawer--stat-card:hover {
1261
+ transform: translateY(-2px);
1262
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
1263
+ border-color: #8246af;
1264
+ } */
1265
+
1266
+ .memori--login-drawer--stat-icon {
1267
+ display: flex;
1268
+ width: 40px;
1269
+ height: 40px;
1270
+ flex-shrink: 0;
1271
+ align-items: center;
1272
+ justify-content: center;
1273
+ /* background: var(--memori-primary); */
1274
+ border-radius: 10px;
1275
+ color: white;
1276
+ font-size: 1.5rem;
1277
+ }
1278
+
1279
+ .memori--login-drawer--stat-content {
1280
+ min-width: 0;
1281
+ flex: 1;
1282
+ }
1283
+
1284
+ .memori--login-drawer--stat-value {
1285
+ display: block;
1286
+ overflow: hidden;
1287
+ margin-bottom: 0.25rem;
1288
+ color: #1f2937;
1289
+ font-size: 1rem;
1290
+ font-weight: 700;
1291
+ text-overflow: ellipsis;
1292
+ white-space: nowrap;
1293
+ }
1294
+
1295
+ .memori--login-drawer--stat-label {
1296
+ display: block;
1297
+ color: #6b7280;
1298
+ font-size: 0.8rem;
1299
+ font-weight: 500;
1300
+ letter-spacing: 0.025em;
1301
+ text-transform: uppercase;
1302
+ }
1303
+
1304
+ /* ===== ACCOUNT SECTION ===== */
1305
+ .memori--login-drawer--account-section {
1306
+ padding: 2rem 1.5rem;
1307
+ border-top: 1px solid #e5e7eb;
1308
+ background: white;
1309
+ }
1310
+
1311
+ .memori--login-drawer--edit-account-title {
1312
+ display: flex;
1313
+ align-items: center;
1314
+ margin: 0 0 1.5rem;
1315
+ color: #1f2937;
1316
+ font-size: 1.25rem;
1317
+ font-weight: 700;
1318
+ gap: 0.5rem;
1319
+ }
1320
+
1321
+ .memori--login-drawer--account-form {
1322
+ padding: 1.5rem;
1323
+ border: 1px solid #e5e7eb;
1324
+ border-radius: 16px;
1325
+ background: linear-gradient(135deg, #f8fafc, #e2e8f0);
1326
+ }
1327
+
1328
+ .memori--login-drawer--account-form .memori--details {
1329
+ overflow: hidden;
1330
+ border: 1px solid #e5e7eb;
1331
+ border-radius: 12px;
1332
+ margin-bottom: 1.5rem;
1333
+ background: white;
1334
+ transition: all 0.3s ease;
1335
+ }
1336
+
1337
+ .memori--login-drawer--account-form .memori--details:hover {
1338
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
1339
+ }
1340
+
1341
+ .memori--login-drawer--account-form .memori--details summary {
1342
+ position: relative;
1343
+ padding: 1rem 1.5rem;
1344
+ border-bottom: 1px solid #e5e7eb;
1345
+ background: linear-gradient(135deg, #f8fafc, #e2e8f0);
1346
+ color: #374151;
1347
+ cursor: pointer;
1348
+ font-weight: 600;
1349
+ transition: all 0.3s ease;
1350
+ }
1351
+
1352
+ .memori--login-drawer--account-form .memori--details summary:hover {
1353
+ background: linear-gradient(135deg, #e2e8f0, #cbd5e1);
1354
+ color: #1f2937;
1355
+ }
1356
+
1357
+ .memori--login-drawer--account-form .memori--details summary::after {
1358
+ position: absolute;
1359
+ top: 50%;
1360
+ right: 1.5rem;
1361
+ color: #6b7280;
1362
+ content: '▼';
1363
+ transform: translateY(-50%);
1364
+ transition: transform 0.3s ease;
1365
+ }
1366
+
1367
+ .memori--login-drawer--account-form .memori--details[open] summary::after {
1368
+ transform: translateY(-50%) rotate(180deg);
1369
+ }
1370
+
1371
+ .memori--login-drawer--account-form .memori--details > *:not(summary) {
1372
+ padding: 1.5rem;
1373
+ }
1374
+
1375
+ .memori--login-drawer--account-form label:not(.memori-checkbox) {
1376
+ display: flex;
1377
+ flex-direction: column;
1378
+ margin-bottom: 1rem;
1379
+ gap: 0.5rem;
1380
+ }
1381
+
1382
+ .memori--login-drawer--account-form input[type='email'],
1383
+ .memori--login-drawer--account-form input[type='file'] {
1384
+ padding: 0.75rem 1rem;
1385
+ border: 2px solid #e5e7eb;
1386
+ border-radius: 8px;
1387
+ background: white;
1388
+ font-size: 0.95rem;
1389
+ transition: all 0.3s ease;
1390
+ }
1391
+
1392
+ .memori--login-drawer--account-form input[type='email']:focus,
1393
+ .memori--login-drawer--account-form input[type='file']:focus {
1394
+ border-color: var(--memori-primary);
1395
+ box-shadow: 0 0 0 3px rgba(130, 70, 175, 0.1);
1396
+ outline: none;
1397
+ }
1398
+
1399
+ .memori--login-drawer--account-form .memori-checkbox {
1400
+ padding: 1rem;
1401
+ border: 1px solid #e5e7eb;
1402
+ border-radius: 8px;
1403
+ margin-bottom: 1rem;
1404
+ background: white;
1405
+ transition: all 0.3s ease;
1406
+ }
1407
+
1408
+ .memori--login-drawer--account-form .memori-checkbox:hover {
1409
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
1410
+ }
1411
+
1412
+ .memori--login-drawer--account-form .memori-checkbox--disabled {
1413
+ background: #f9fafb;
1414
+ opacity: 0.7;
1415
+ }
1416
+
1417
+ .memori--login-drawer--account-form button[type='submit'] {
1418
+ position: relative;
1419
+ overflow: hidden;
1420
+ width: 100%;
1421
+ padding: 1rem 2rem;
1422
+ border: none;
1423
+ border-radius: 12px;
1424
+ margin-top: 1rem;
1425
+ background: var(--memori-primary);
1426
+ color: white;
1427
+ cursor: pointer;
1428
+ font-size: 1rem;
1429
+ font-weight: 600;
1430
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1431
+ }
1432
+
1433
+ .memori--login-drawer--account-form button[type='submit']::before {
1434
+ position: absolute;
1435
+ top: 0;
1436
+ left: -100%;
1437
+ width: 100%;
1438
+ height: 100%;
1439
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
1440
+ content: '';
1441
+ transition: left 0.5s ease;
1442
+ }
1443
+
1444
+ .memori--login-drawer--account-form button[type='submit']:hover::before {
1445
+ left: 100%;
1446
+ }
1447
+
1448
+ .memori--login-drawer--account-form button[type='submit']:hover {
1449
+ box-shadow: 0 8px 25px rgba(130, 70, 175, 0.3);
1450
+ transform: translateY(-2px);
1451
+ }
1452
+
1453
+ .memori--login-drawer--account-form button[type='submit']:active {
1454
+ transform: translateY(0);
1455
+ }
1456
+
1457
+ /* ===== RESPONSIVE DESIGN FOR LOGGED USER ===== */
1458
+ @media (max-width: 768px) {
1459
+ .memori--login-drawer--user-profile {
1460
+ flex-direction: column;
1461
+ gap: 1rem;
1462
+ text-align: center;
1463
+ }
1464
+
1465
+ .memori--login-drawer--user-header {
1466
+ padding: 1.5rem 1rem;
1467
+ }
1468
+
1469
+ .memori--login-drawer--avatar,
1470
+ .memori--login-drawer--avatar-placeholder {
1471
+ width: 60px;
1472
+ height: 60px;
1473
+ }
1474
+
1475
+ .memori--login-drawer--avatar-initial {
1476
+ font-size: 1.5rem;
1477
+ }
1478
+
1479
+ .memori--login-drawer--user-name {
1480
+ font-size: 1.25rem;
1481
+ }
1482
+
1483
+ .memori--login-drawer--actions-grid {
1484
+ gap: 0.75rem;
1485
+ grid-template-columns: 1fr;
1486
+ }
1487
+
1488
+ .memori--login-drawer--action-card {
1489
+ flex-direction: row;
1490
+ padding: 1rem;
1491
+ text-align: left;
1492
+ }
1493
+
1494
+ .memori--login-drawer--action-icon {
1495
+ font-size: 1.5rem;
1496
+ }
1497
+
1498
+ .memori--login-drawer--stats-grid {
1499
+ grid-template-columns: 1fr;
1500
+ }
1501
+
1502
+ .memori--login-drawer--stat-card {
1503
+ padding: 1rem;
1504
+ }
1505
+
1506
+ .memori--login-drawer--quick-actions,
1507
+ .memori--login-drawer--user-stats,
1508
+ .memori--login-drawer--account-section {
1509
+ padding: 1rem;
1510
+ }
1511
+ }
1512
+
1513
+ @media (max-width: 480px) {
1514
+ .memori--login-drawer--user-header {
1515
+ padding: 1rem 0.75rem;
1516
+ }
1517
+
1518
+ .memori--login-drawer--avatar,
1519
+ .memori--login-drawer--avatar-placeholder {
1520
+ width: 50px;
1521
+ height: 50px;
1522
+ }
1523
+
1524
+ .memori--login-drawer--avatar-initial {
1525
+ font-size: 1.25rem;
1526
+ }
1527
+
1528
+ .memori--login-drawer--user-name {
1529
+ font-size: 1.1rem;
1530
+ }
1531
+
1532
+ .memori--login-drawer--user-email {
1533
+ font-size: 0.85rem;
1534
+ }
1535
+
1536
+ .memori--login-drawer--badge {
1537
+ padding: 0.2rem 0.5rem;
1538
+ font-size: 0.7rem;
1539
+ }
1540
+
1541
+ .memori--login-drawer--action-card {
1542
+ padding: 0.75rem;
1543
+ }
1544
+
1545
+ .memori--login-drawer--action-icon {
1546
+ font-size: 1.25rem;
1547
+ }
1548
+
1549
+ .memori--login-drawer--action-text {
444
1550
  font-size: 0.8rem;
445
1551
  }
446
- }
1552
+
1553
+ .memori--login-drawer--stat-card {
1554
+ padding: 0.75rem;
1555
+ gap: 0.75rem;
1556
+ }
1557
+
1558
+ .memori--login-drawer--stat-icon {
1559
+ width: 32px;
1560
+ height: 32px;
1561
+ font-size: 1.25rem;
1562
+ }
1563
+
1564
+ .memori--login-drawer--stat-value {
1565
+ font-size: 0.9rem;
1566
+ }
1567
+
1568
+ .memori--login-drawer--stat-label {
1569
+ font-size: 0.7rem;
1570
+ }
1571
+ }
1572
+
1573
+ /* ===== ACCESSIBILITY ===== */
1574
+ @media (prefers-reduced-motion: reduce) {
1575
+ * {
1576
+ animation-duration: 0.01ms !important;
1577
+ animation-iteration-count: 1 !important;
1578
+ transition-duration: 0.01ms !important;
1579
+ }
1580
+ }