@rhinestone/deposit-modal 0.2.5-alpha.0 → 0.3.0-alpha.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 (49) hide show
  1. package/README.md +40 -211
  2. package/dist/{DepositModalReown-GIODYNOK.mjs → DepositModalReown-GXY65HZP.mjs} +3 -5
  3. package/dist/{DepositModalReown-SVVA3OZ6.cjs → DepositModalReown-HVIEA6YA.cjs} +4 -6
  4. package/dist/QRCode-SMMYPUQC.cjs +58 -0
  5. package/dist/QRCode-YMQTKSSK.mjs +58 -0
  6. package/dist/{WithdrawModalReown-VNTKGALT.cjs → WithdrawModalReown-4M3PBY2T.cjs} +4 -5
  7. package/dist/{WithdrawModalReown-HTEB4XGU.mjs → WithdrawModalReown-O6V6KRH6.mjs} +3 -4
  8. package/dist/{chunk-AHQY2O3U.cjs → chunk-7SYZG47X.cjs} +1731 -2161
  9. package/dist/{chunk-WHW3ZMOT.mjs → chunk-EEHUOFIW.mjs} +107 -90
  10. package/dist/{chunk-WA4RA4HB.mjs → chunk-FKPTIHU7.mjs} +916 -424
  11. package/dist/{chunk-RQ2VCKLS.mjs → chunk-U5QIFNG4.mjs} +1815 -2245
  12. package/dist/{chunk-DUGDAMAF.mjs → chunk-UIHAYD7J.mjs} +1089 -796
  13. package/dist/{chunk-R2HP743T.cjs → chunk-XCAF6B3D.cjs} +51 -34
  14. package/dist/{chunk-KE6CJVOV.cjs → chunk-Y3RA3YGA.cjs} +1110 -817
  15. package/dist/{chunk-4S262VLP.cjs → chunk-Z2SIC2TH.cjs} +965 -473
  16. package/dist/constants.cjs +2 -2
  17. package/dist/constants.d.cts +3 -2
  18. package/dist/constants.d.ts +3 -2
  19. package/dist/constants.mjs +1 -1
  20. package/dist/deposit.cjs +4 -6
  21. package/dist/deposit.d.cts +2 -3
  22. package/dist/deposit.d.ts +2 -3
  23. package/dist/deposit.mjs +3 -5
  24. package/dist/index.cjs +5 -7
  25. package/dist/index.d.cts +5 -3
  26. package/dist/index.d.ts +5 -3
  27. package/dist/index.mjs +4 -6
  28. package/dist/styles.css +1068 -752
  29. package/dist/{types-D0NawmZ8.d.cts → types-DRou84ZM.d.cts} +147 -40
  30. package/dist/{types-CeFbJ-MW.d.ts → types-DRou84ZM.d.ts} +147 -40
  31. package/dist/withdraw.cjs +4 -5
  32. package/dist/withdraw.d.cts +2 -3
  33. package/dist/withdraw.d.ts +2 -3
  34. package/dist/withdraw.mjs +3 -4
  35. package/package.json +13 -12
  36. package/dist/chunk-J2SWZSXL.mjs +0 -295
  37. package/dist/chunk-LHOHM67Z.mjs +0 -234
  38. package/dist/chunk-YKGL66EF.cjs +0 -295
  39. package/dist/chunk-ZHLQMSQM.cjs +0 -234
  40. package/dist/reown.cjs +0 -18
  41. package/dist/reown.d.cts +0 -10
  42. package/dist/reown.d.ts +0 -10
  43. package/dist/reown.mjs +0 -18
  44. package/dist/safe-CB7TvRCc.d.cts +0 -62
  45. package/dist/safe-CB7TvRCc.d.ts +0 -62
  46. package/dist/safe.cjs +0 -22
  47. package/dist/safe.d.cts +0 -14
  48. package/dist/safe.d.ts +0 -14
  49. package/dist/safe.mjs +0 -22
package/dist/styles.css CHANGED
@@ -6,19 +6,19 @@
6
6
  ============================================================================= */
7
7
 
8
8
  .rs-modal {
9
- /* Radix gray scale */
10
- --color-gray1: #fcfcfc;
11
- --color-gray2: #f9f9f9;
12
- --color-gray3: #f0f0f0;
13
- --color-gray4: #e8e8e8;
14
- --color-gray5: #e0e0e0;
15
- --color-gray6: #d9d9d9;
16
- --color-gray7: #cecece;
17
- --color-gray8: #bbbbbb;
18
- --color-gray9: #8d8d8d;
19
- --color-gray10: #838383;
20
- --color-gray11: #646464;
21
- --color-gray12: #202020;
9
+ /* Tailwind zinc scale (matches Figma design tokens) */
10
+ --color-gray1: #fafafa;
11
+ --color-gray2: #f4f4f5;
12
+ --color-gray3: #f4f4f5;
13
+ --color-gray4: #e4e4e7;
14
+ --color-gray5: #d4d4d8;
15
+ --color-gray6: #d4d4d8;
16
+ --color-gray7: #a1a1aa;
17
+ --color-gray8: #9f9fa9;
18
+ --color-gray9: #9f9fa9;
19
+ --color-gray10: #71717b;
20
+ --color-gray11: #52525c;
21
+ --color-gray12: #27272a;
22
22
 
23
23
  /* Blue (info) */
24
24
  --color-blue3: #e6f4fe;
@@ -27,11 +27,12 @@
27
27
  --color-blue10: #0588f0;
28
28
  --color-blue11: #0d74ce;
29
29
 
30
- /* Neutral accent (primary action) */
30
+ /* Neutral accent (primary action) — zinc */
31
31
  --color-neutral3: #f4f4f5;
32
32
  --color-neutral4: #e4e4e7;
33
- --color-neutral9: #18181b;
34
- --color-neutral10: #27272a;
33
+ --color-neutral9: #27272a;
34
+ --color-neutral10: #18181b;
35
+ --color-neutral11: #09090b;
35
36
 
36
37
  /* Green (success) */
37
38
  --color-green3: #e6f6eb;
@@ -50,14 +51,24 @@
50
51
  --color-amber8: #e2a336;
51
52
 
52
53
  /* Semantic colors */
53
- --rs-background: var(--color-gray1);
54
- --rs-background-secondary: var(--color-gray2);
54
+ --rs-background: #ffffff;
55
+ --rs-background-secondary: var(--color-gray1);
56
+ --rs-surface-subtle: #fafafa;
55
57
  --rs-surface: var(--color-gray3);
56
58
  --rs-surface-hover: var(--color-gray4);
59
+
60
+ /* Primary (CTA). Default theme uses the dark-on-light pair.
61
+ A custom theme overrides these directly via inline CSS vars,
62
+ which short-circuits the [data-theme="dark"] block below so
63
+ a custom color stays consistent across modes. */
57
64
  --rs-primary: var(--color-neutral9);
58
65
  --rs-primary-hover: var(--color-neutral10);
66
+ --rs-primary-active: var(--color-neutral11);
67
+ --rs-primary-disabled-bg: var(--color-gray4);
68
+ --rs-primary-disabled-fg: var(--color-gray11);
59
69
  --rs-primary-tint: var(--color-neutral3);
60
- --rs-primary-foreground: #ffffff;
70
+ --rs-primary-foreground: #fafafa;
71
+
61
72
  --rs-success: var(--color-green9);
62
73
  --rs-success-tint: var(--color-green3);
63
74
  --rs-error: var(--color-red9);
@@ -67,9 +78,9 @@
67
78
  --rs-foreground: var(--color-gray12);
68
79
  --rs-muted: var(--color-gray10);
69
80
  --rs-muted-foreground: var(--color-gray9);
70
- --rs-icon: var(--color-gray10);
81
+ --rs-icon: var(--color-gray11);
71
82
 
72
- --rs-border: var(--color-gray5);
83
+ --rs-border: var(--color-gray2);
73
84
  --rs-border-surface: var(--color-gray4);
74
85
  --rs-border-accent: var(--color-neutral9);
75
86
 
@@ -103,6 +114,13 @@
103
114
  -webkit-font-smoothing: antialiased;
104
115
  -moz-osx-font-smoothing: grayscale;
105
116
  position: relative;
117
+ /* Flex column so children (header + body) can split available height with
118
+ the body region scrolling when it overflows. */
119
+ display: flex;
120
+ flex-direction: column;
121
+ flex: 1;
122
+ min-height: 0;
123
+ overflow: hidden;
106
124
  }
107
125
 
108
126
  /* =============================================================================
@@ -110,18 +128,19 @@
110
128
  ============================================================================= */
111
129
 
112
130
  .rs-modal[data-theme="dark"] {
113
- --color-gray1: #141414;
114
- --color-gray2: #1a1a1a;
115
- --color-gray3: #212121;
116
- --color-gray4: #282828;
117
- --color-gray5: #303030;
118
- --color-gray6: #393939;
119
- --color-gray7: #474747;
120
- --color-gray8: #5e5e5e;
121
- --color-gray9: #7a7a7a;
122
- --color-gray10: #a0a0a0;
123
- --color-gray11: #b8b8b8;
124
- --color-gray12: #eeeeee;
131
+ /* Zinc dark scale (matches Figma) */
132
+ --color-gray1: #0c0c0c;
133
+ --color-gray2: #18181b;
134
+ --color-gray3: #18181b;
135
+ --color-gray4: #27272a;
136
+ --color-gray5: #3f3f46;
137
+ --color-gray6: #3f3f46;
138
+ --color-gray7: #52525c;
139
+ --color-gray8: #71717b;
140
+ --color-gray9: #71717b;
141
+ --color-gray10: #9f9fa9;
142
+ --color-gray11: #d4d4d8;
143
+ --color-gray12: #e4e4e7;
125
144
 
126
145
  /* Dark mode tints: translucent overlays instead of light pastels */
127
146
  --color-blue3: rgba(0, 144, 255, 0.1);
@@ -135,12 +154,24 @@
135
154
  --color-red10: #f16a6e;
136
155
  --color-amber3: rgba(226, 163, 54, 0.1);
137
156
 
157
+ /* Inverted neutral pair: light-on-dark CTA */
138
158
  --color-neutral3: rgba(244, 244, 245, 0.08);
139
159
  --color-neutral4: rgba(244, 244, 245, 0.14);
140
- --color-neutral9: #f4f4f5;
160
+ --color-neutral9: #fafafa;
141
161
  --color-neutral10: #e4e4e7;
142
-
162
+ --color-neutral11: #d4d4d8;
163
+
164
+ --rs-background: #0c0c0c;
165
+ /* Well / dropdown / QR-card surface in dark mode. Used by anything that
166
+ renders an elevated container (asset rows, QR well, select inputs). */
167
+ --rs-background-secondary: #18181b;
168
+ --rs-surface-subtle: #18181b;
169
+ --rs-surface: #27272a;
170
+ --rs-surface-hover: #3f3f46;
143
171
  --rs-primary-foreground: #18181b;
172
+ --rs-primary-disabled-bg: #27272a;
173
+ --rs-primary-disabled-fg: #71717b;
174
+ --rs-icon: var(--color-gray10);
144
175
 
145
176
  --rs-shadow-dropdown:
146
177
  0 4px 20px rgba(0, 0, 0, 0.6), 0 1px 4px rgba(0, 0, 0, 0.4);
@@ -171,13 +202,17 @@
171
202
 
172
203
  .rs-modal-content {
173
204
  --rs-radius-lg: 14px;
174
- --rs-background: #fcfcfc;
175
- --rs-border: #e0e0e0;
205
+ --rs-background: #ffffff;
206
+ --rs-border: #f4f4f5;
176
207
 
177
208
  position: relative;
178
209
  width: 100%;
179
210
  max-width: var(--rs-width-dialog, 400px);
180
- max-height: calc(100vh - 40px);
211
+ /* Cap the modal at 600px (or viewport-40 on tiny screens) so long lists
212
+ scroll inside instead of growing the modal. */
213
+ max-height: min(600px, calc(100vh - 40px));
214
+ display: flex;
215
+ flex-direction: column;
181
216
  margin: 20px;
182
217
  overflow: hidden;
183
218
  background-color: var(--rs-background);
@@ -187,6 +222,11 @@
187
222
  transition: transform 0.2s ease;
188
223
  }
189
224
 
225
+ .rs-modal-content[data-theme="dark"] {
226
+ --rs-background: #0c0c0c;
227
+ --rs-border: #18181b;
228
+ }
229
+
190
230
  .rs-modal-overlay--open .rs-modal-content {
191
231
  transform: scale(1);
192
232
  }
@@ -219,69 +259,28 @@
219
259
  gap: 8px;
220
260
  }
221
261
 
222
- .rs-modal-logo {
223
- width: 16px;
224
- height: 16px;
225
- border-radius: 4px;
226
- object-fit: contain;
227
- }
228
-
229
- .rs-modal-title {
230
- font-size: 13px;
231
- font-weight: 500;
232
- color: var(--rs-foreground);
233
- }
234
-
235
262
  .rs-modal-close {
236
263
  display: flex;
237
264
  align-items: center;
238
265
  justify-content: center;
239
- width: 28px;
240
- height: 28px;
266
+ width: 24px;
267
+ height: 24px;
241
268
  padding: 0;
242
269
  background: transparent;
243
270
  border: none;
244
- border-radius: var(--rs-radius-sm);
245
- color: var(--rs-icon);
271
+ border-radius: 4px;
272
+ color: var(--rs-foreground);
246
273
  cursor: pointer;
247
- transition:
248
- background-color 0.15s,
249
- color 0.15s;
274
+ transition: opacity 0.15s;
250
275
  }
251
276
 
252
277
  .rs-modal-close:hover {
253
- background-color: var(--rs-surface);
254
- color: var(--rs-foreground);
278
+ opacity: 0.65;
255
279
  }
256
280
 
257
281
  .rs-modal-close svg {
258
- width: 18px;
259
- height: 18px;
260
- }
261
-
262
- /* Progress indicator */
263
- .rs-modal-progress {
264
- display: flex;
265
- align-items: center;
266
- gap: 6px;
267
- }
268
-
269
- .rs-modal-progress-dot {
270
- height: 6px;
271
- border-radius: 3px;
272
- transition:
273
- width 0.2s,
274
- background-color 0.2s;
275
- }
276
-
277
- .rs-modal-progress-dot--active {
278
- width: 16px;
279
- background-color: var(--rs-primary);
280
- }
281
-
282
- .rs-modal-progress-dot--inactive {
283
- width: 6px;
284
- background-color: var(--rs-surface);
282
+ width: 24px;
283
+ height: 24px;
285
284
  }
286
285
 
287
286
  /* =============================================================================
@@ -326,7 +325,7 @@
326
325
  font-weight: 500;
327
326
  white-space: nowrap;
328
327
  border: 1px solid transparent;
329
- border-radius: var(--rs-radius-full);
328
+ border-radius: var(--rs-radius-sm);
330
329
  cursor: pointer;
331
330
  transition:
332
331
  background-color 0.15s,
@@ -334,6 +333,11 @@
334
333
  color 0.15s;
335
334
  }
336
335
 
336
+ /* Pill variant — opt-in for places that still want a fully rounded button. */
337
+ .rs-button--pill {
338
+ border-radius: var(--rs-radius-full);
339
+ }
340
+
337
341
  .rs-button:focus-visible {
338
342
  outline: none;
339
343
  box-shadow:
@@ -343,14 +347,13 @@
343
347
 
344
348
  .rs-button:disabled {
345
349
  pointer-events: none;
346
- opacity: 0.5;
347
350
  }
348
351
 
349
352
  /* Sizes */
350
353
  .rs-button--size-default {
351
354
  height: var(--rs-height-button);
352
- padding: 0 20px;
353
- font-size: 15px;
355
+ padding: 0 16px;
356
+ font-size: 14px;
354
357
  }
355
358
 
356
359
  .rs-button--size-small {
@@ -371,6 +374,17 @@
371
374
  border-color: var(--rs-primary-hover);
372
375
  }
373
376
 
377
+ .rs-button--accent:active:not(:disabled) {
378
+ background-color: var(--rs-primary-active);
379
+ border-color: var(--rs-primary-active);
380
+ }
381
+
382
+ .rs-button--accent:disabled {
383
+ background-color: var(--rs-primary-disabled-bg);
384
+ border-color: var(--rs-primary-disabled-bg);
385
+ color: var(--rs-primary-disabled-fg);
386
+ }
387
+
374
388
  .rs-button--default {
375
389
  background-color: var(--rs-surface);
376
390
  border-color: var(--rs-surface);
@@ -391,13 +405,13 @@
391
405
  }
392
406
 
393
407
  .rs-button--outline {
394
- background-color: var(--rs-surface);
395
- border-color: var(--rs-border);
396
- color: var(--rs-foreground);
408
+ background-color: transparent;
409
+ border-color: var(--rs-primary);
410
+ color: var(--rs-primary);
397
411
  }
398
412
 
399
413
  .rs-button--outline:hover:not(:disabled) {
400
- background-color: var(--rs-surface-hover);
414
+ background-color: var(--rs-surface);
401
415
  }
402
416
 
403
417
  .rs-button--full-width {
@@ -416,6 +430,12 @@
416
430
  justify-content: center;
417
431
  }
418
432
 
433
+ .rs-button__loading-row {
434
+ display: inline-flex;
435
+ align-items: center;
436
+ gap: 8px;
437
+ }
438
+
419
439
  /* =============================================================================
420
440
  Input Styles
421
441
  ============================================================================= */
@@ -849,42 +869,54 @@
849
869
  ============================================================================= */
850
870
 
851
871
  .rs-asset-row {
872
+ width: 100%;
852
873
  display: flex;
853
874
  align-items: center;
854
- justify-content: space-between;
855
- padding: 10px 12px;
856
- background-color: var(--rs-background);
857
- border-radius: var(--rs-radius-sm);
858
- box-shadow: inset 0 0 0 1px var(--rs-border-surface);
875
+ gap: 12px;
876
+ padding: 10px 8px;
877
+ background-color: var(--rs-surface-subtle);
878
+ border: none;
879
+ border-radius: 8px;
859
880
  cursor: pointer;
860
- transition:
861
- background-color 0.15s,
862
- box-shadow 0.15s;
881
+ text-align: left;
882
+ font-family: inherit;
883
+ transition: background-color 0.15s;
863
884
  }
864
885
 
865
- .rs-asset-row:hover {
866
- background-color: var(--rs-background-secondary);
886
+ .rs-asset-row:hover:not(:disabled) {
887
+ background-color: var(--rs-surface);
888
+ }
889
+
890
+ .rs-asset-row:focus-visible {
891
+ outline: 2px solid var(--rs-border-accent);
892
+ outline-offset: 2px;
867
893
  }
868
894
 
869
895
  .rs-asset-row--selected {
870
- box-shadow:
871
- inset 0 0 0 2px var(--rs-border-accent),
872
- 0 1px 2px rgba(0, 0, 0, 0.05);
896
+ background-color: var(--rs-surface);
873
897
  }
874
898
 
875
899
  .rs-asset-info {
876
900
  display: flex;
901
+ flex: 1;
902
+ min-width: 0;
877
903
  align-items: center;
878
904
  gap: 12px;
879
905
  }
880
906
 
907
+ /* Icon group — token glyph (32px) with the chain glyph (14px) overlapping
908
+ the bottom-right corner via flex `items-end` + negative right margin
909
+ on the token icon (matches Figma's `mr-[-10px]` layout). */
881
910
  .rs-asset-icon-wrapper {
882
- position: relative;
911
+ display: flex;
912
+ align-items: flex-end;
913
+ flex-shrink: 0;
883
914
  }
884
915
 
885
916
  .rs-asset-icon {
886
- width: 36px;
887
- height: 36px;
917
+ width: 32px;
918
+ height: 32px;
919
+ margin-right: -10px;
888
920
  border-radius: 50%;
889
921
  background-color: var(--rs-surface);
890
922
  display: flex;
@@ -893,6 +925,7 @@
893
925
  font-size: 11px;
894
926
  font-weight: 600;
895
927
  color: var(--rs-muted);
928
+ overflow: hidden;
896
929
  }
897
930
 
898
931
  .rs-asset-icon img {
@@ -903,59 +936,98 @@
903
936
  }
904
937
 
905
938
  .rs-asset-chain-badge {
906
- position: absolute;
907
- bottom: -2px;
908
- right: -2px;
909
- width: 16px;
910
- height: 16px;
911
- border-radius: 3px;
912
- border: 2px solid var(--rs-background);
939
+ width: 14px;
940
+ height: 14px;
941
+ border-radius: 50%;
913
942
  background-color: var(--rs-background);
914
943
  display: flex;
915
944
  align-items: center;
916
945
  justify-content: center;
917
- font-size: 8px;
946
+ font-size: 7px;
918
947
  font-weight: 700;
948
+ overflow: hidden;
919
949
  }
920
950
 
921
951
  .rs-asset-chain-badge img {
922
952
  width: 100%;
923
953
  height: 100%;
924
- border-radius: 3px;
954
+ border-radius: 50%;
925
955
  object-fit: cover;
926
956
  }
927
957
 
958
+ .rs-asset-text {
959
+ display: flex;
960
+ flex: 1;
961
+ min-width: 0;
962
+ flex-direction: column;
963
+ gap: 4px;
964
+ }
965
+
966
+ .rs-asset-name-row {
967
+ display: flex;
968
+ align-items: center;
969
+ gap: 4px;
970
+ white-space: nowrap;
971
+ }
972
+
928
973
  .rs-asset-name {
929
- font-size: 14px;
930
- font-weight: 500;
974
+ font-size: 16px;
975
+ font-weight: 700;
931
976
  color: var(--rs-foreground);
932
- line-height: 1.3;
977
+ line-height: normal;
933
978
  }
934
979
 
935
980
  .rs-asset-chain {
936
- color: var(--rs-muted-foreground);
937
- font-weight: 400;
981
+ font-size: 14px;
982
+ font-weight: 500;
983
+ color: var(--rs-muted);
984
+ line-height: normal;
938
985
  }
939
986
 
940
987
  .rs-asset-balance-small {
941
988
  font-size: 12px;
942
- color: var(--rs-muted-foreground);
943
- margin-top: 2px;
944
- line-height: 1.3;
989
+ font-weight: 500;
990
+ color: var(--rs-muted);
991
+ line-height: normal;
945
992
  }
946
993
 
947
994
  .rs-asset-balance {
948
- font-size: 14px;
995
+ flex-shrink: 0;
996
+ font-size: 18px;
949
997
  font-weight: 500;
950
998
  color: var(--rs-foreground);
951
999
  text-align: right;
952
1000
  font-feature-settings: "tnum";
1001
+ line-height: normal;
953
1002
  }
954
1003
 
955
1004
  .rs-asset-list {
956
1005
  display: flex;
957
1006
  flex-direction: column;
958
- gap: 6px;
1007
+ gap: 4px;
1008
+ max-height: 320px;
1009
+ overflow-y: auto;
1010
+ overscroll-behavior: contain;
1011
+ /* Pull rows back to the row's natural left edge inside a scrollable
1012
+ container so the scrollbar gutter doesn't visually shift content. */
1013
+ scrollbar-gutter: stable;
1014
+ }
1015
+
1016
+ .rs-asset-list::-webkit-scrollbar {
1017
+ width: 6px;
1018
+ }
1019
+
1020
+ .rs-asset-list::-webkit-scrollbar-track {
1021
+ background: transparent;
1022
+ }
1023
+
1024
+ .rs-asset-list::-webkit-scrollbar-thumb {
1025
+ background-color: var(--rs-surface-hover);
1026
+ border-radius: var(--rs-radius-full);
1027
+ }
1028
+
1029
+ .rs-asset-list::-webkit-scrollbar-thumb:hover {
1030
+ background-color: var(--rs-muted-foreground);
959
1031
  }
960
1032
 
961
1033
  /* =============================================================================
@@ -1135,23 +1207,29 @@
1135
1207
  display: flex;
1136
1208
  align-items: center;
1137
1209
  justify-content: center;
1138
- gap: 6px;
1139
- padding: 10px 12px;
1210
+ gap: 4px;
1211
+ width: 100%;
1212
+ padding: 0 16px 16px;
1140
1213
  font-size: 11px;
1141
- color: var(--rs-muted-foreground);
1142
- }
1143
-
1144
- .rs-powered-by svg {
1145
- width: 12px;
1146
- height: 12px;
1214
+ font-weight: 500;
1215
+ line-height: normal;
1216
+ color: var(--rs-muted);
1147
1217
  }
1148
1218
 
1149
- .rs-powered-by a {
1150
- font-weight: 500;
1219
+ .rs-powered-by-link {
1220
+ display: inline-flex;
1221
+ align-items: center;
1151
1222
  color: inherit;
1152
1223
  text-decoration: none;
1153
1224
  }
1154
1225
 
1226
+ .rs-powered-by-logo {
1227
+ display: block;
1228
+ width: 72px;
1229
+ height: 16px;
1230
+ color: currentColor;
1231
+ }
1232
+
1155
1233
  /* =============================================================================
1156
1234
  Loading State
1157
1235
  ============================================================================= */
@@ -1478,6 +1556,54 @@
1478
1556
  color: var(--rs-muted);
1479
1557
  }
1480
1558
 
1559
+ /* Modal screen container — shared layout primitive. 12px padding all
1560
+ around, 16px gap between the body slot and the powered-by footer,
1561
+ footer anchored to the modal bottom edge. Used by every screen
1562
+ (deposit method, asset select, amount, confirm, …) so the vertical
1563
+ rhythm stays consistent. */
1564
+ .rs-screen {
1565
+ display: flex;
1566
+ flex-direction: column;
1567
+ flex-grow: 1;
1568
+ padding: 12px;
1569
+ gap: 16px;
1570
+ }
1571
+
1572
+ /* Body slot — direct child of .rs-screen. Always uses a 16px internal
1573
+ gap (per the compact sizing pass). */
1574
+ .rs-screen-body {
1575
+ display: flex;
1576
+ flex-direction: column;
1577
+ gap: 16px;
1578
+ }
1579
+
1580
+ /* Retained as a no-op alias for callers that still pass the legacy
1581
+ modifier; the gap matches the default now. */
1582
+ .rs-screen-body--gap-32 {
1583
+ gap: 16px;
1584
+ }
1585
+
1586
+ /* Tiny utility row for things like the "Disconnect wallet" link that
1587
+ live between the body slot and powered-by. The negative margin
1588
+ shrinks the parent's gap to a tight visual gap above the link. */
1589
+ .rs-screen-tight-row {
1590
+ display: flex;
1591
+ justify-content: center;
1592
+ margin-top: -4px;
1593
+ }
1594
+
1595
+ .rs-screen-tight-row .rs-connect-wallet-manage {
1596
+ margin-top: 0;
1597
+ }
1598
+
1599
+ /* Powered-by sits inside the screen container, so its own padding would
1600
+ double up on the 16px container padding — reset it, and use
1601
+ `margin-top: auto` so it anchors to the bottom edge. */
1602
+ .rs-screen > .rs-powered-by {
1603
+ padding: 0;
1604
+ margin-top: auto;
1605
+ }
1606
+
1481
1607
  .rs-connect-wallet-manage {
1482
1608
  margin-top: 10px;
1483
1609
  padding: 0;
@@ -1719,18 +1845,20 @@
1719
1845
  .rs-modal-header--redesigned {
1720
1846
  display: flex;
1721
1847
  align-items: center;
1722
- height: auto;
1723
- padding: 8px 12px;
1724
- background-color: var(--rs-background);
1725
- border-bottom: 1px solid var(--rs-border-surface);
1848
+ justify-content: space-between;
1849
+ min-height: 24px;
1850
+ padding: 12px 12px 0;
1851
+ background-color: transparent;
1852
+ border-bottom: none;
1726
1853
  }
1727
1854
 
1728
1855
  .rs-modal-header-nav-left {
1729
- width: 28px;
1730
1856
  display: flex;
1731
1857
  align-items: center;
1732
1858
  justify-content: flex-start;
1733
1859
  flex-shrink: 0;
1860
+ min-width: 24px;
1861
+ min-height: 24px;
1734
1862
  }
1735
1863
 
1736
1864
  .rs-modal-header-nav-center {
@@ -1739,13 +1867,7 @@
1739
1867
  flex-direction: column;
1740
1868
  align-items: center;
1741
1869
  gap: 2px;
1742
- }
1743
-
1744
- .rs-modal-header-title-row {
1745
- display: flex;
1746
- align-items: center;
1747
- justify-content: center;
1748
- gap: 6px;
1870
+ min-width: 0;
1749
1871
  }
1750
1872
 
1751
1873
  .rs-modal-header-nav-right {
@@ -1753,256 +1875,234 @@
1753
1875
  align-items: center;
1754
1876
  justify-content: flex-end;
1755
1877
  flex-shrink: 0;
1756
- gap: 2px;
1757
- }
1758
-
1759
- .rs-modal-header-title {
1760
- font-size: 14px;
1761
- font-weight: 500;
1762
- color: var(--rs-foreground);
1878
+ gap: 12px;
1763
1879
  }
1764
1880
 
1765
1881
  .rs-modal-header-back {
1766
1882
  display: flex;
1767
1883
  align-items: center;
1768
1884
  justify-content: center;
1769
- width: 28px;
1770
- height: 28px;
1885
+ width: 24px;
1886
+ height: 24px;
1771
1887
  padding: 0;
1772
1888
  background: transparent;
1773
1889
  border: none;
1774
- border-radius: var(--rs-radius-sm);
1775
- color: var(--rs-icon);
1890
+ border-radius: 4px;
1891
+ color: var(--rs-foreground);
1776
1892
  cursor: pointer;
1777
- transition:
1778
- background-color 0.15s,
1779
- color 0.15s;
1893
+ transition: opacity 0.15s;
1780
1894
  }
1781
1895
 
1782
- .rs-modal-header-back:hover {
1783
- background-color: var(--rs-surface);
1784
- color: var(--rs-foreground);
1896
+ .rs-modal-header-back:hover:not(:disabled) {
1897
+ opacity: 0.65;
1785
1898
  }
1786
1899
 
1787
1900
  .rs-modal-header-back svg {
1788
- width: 18px;
1789
- height: 18px;
1901
+ width: 24px;
1902
+ height: 24px;
1790
1903
  }
1791
1904
 
1792
- .rs-modal-header-balance {
1905
+ /* =============================================================================
1906
+ Amount Step Redesign
1907
+ ============================================================================= */
1908
+
1909
+ /* Amount screen — matches Figma "Wallet deposit" (Enter amount) frame.
1910
+ Composed of: big $amount input + balance/min row, quick-select buttons,
1911
+ transfer detail rows, Continue button. */
1912
+
1913
+ .rs-amount-section {
1793
1914
  display: flex;
1794
- align-items: center;
1795
- justify-content: center;
1796
- gap: 4px;
1797
- margin-top: 2px;
1798
- font-size: 12px;
1799
- color: var(--rs-muted-foreground);
1800
- }
1801
-
1802
- .rs-modal-header-balance-value {
1803
- font-weight: 500;
1804
- color: var(--rs-muted);
1915
+ flex-direction: column;
1916
+ gap: 12px;
1805
1917
  }
1806
1918
 
1807
- /* =============================================================================
1808
- Amount Step Redesign
1809
- ============================================================================= */
1810
-
1811
1919
  .rs-amount-display {
1812
1920
  display: flex;
1813
1921
  flex-direction: column;
1814
- align-items: center;
1815
- padding: 20px 16px 12px;
1922
+ gap: 4px;
1816
1923
  }
1817
1924
 
1818
- .rs-amount-input-wrapper {
1925
+ .rs-amount-input-row {
1926
+ display: flex;
1927
+ align-items: baseline;
1928
+ gap: 4px;
1819
1929
  width: 100%;
1930
+ font-size: 64px;
1931
+ font-weight: 700;
1932
+ line-height: 1;
1933
+ color: var(--rs-foreground);
1934
+ font-feature-settings: "tnum";
1820
1935
  }
1821
1936
 
1822
- .rs-amount-input-large {
1937
+ .rs-amount-input-row > input {
1938
+ flex: 1;
1939
+ min-width: 0;
1823
1940
  width: 100%;
1824
- font-size: 48px;
1825
- font-weight: 600;
1826
- text-align: center;
1827
- border: none;
1828
1941
  background: transparent;
1829
- color: var(--rs-foreground);
1942
+ border: none;
1830
1943
  outline: none;
1831
- font-family: inherit;
1944
+ font: inherit;
1945
+ color: inherit;
1832
1946
  font-feature-settings: "tnum";
1947
+ padding: 0;
1948
+ caret-color: var(--rs-foreground);
1833
1949
  }
1834
1950
 
1835
- .rs-amount-input-large::placeholder {
1836
- color: var(--rs-muted-foreground);
1951
+ .rs-amount-input-row > input::placeholder {
1952
+ color: var(--rs-muted);
1837
1953
  }
1838
1954
 
1839
- .rs-amount-input-large::-webkit-outer-spin-button,
1840
- .rs-amount-input-large::-webkit-inner-spin-button {
1955
+ .rs-amount-input-row > input::-webkit-outer-spin-button,
1956
+ .rs-amount-input-row > input::-webkit-inner-spin-button {
1841
1957
  -webkit-appearance: none;
1842
1958
  margin: 0;
1843
1959
  }
1844
1960
 
1845
- .rs-amount-input-large[type="number"] {
1846
- -moz-appearance: textfield;
1961
+ .rs-amount-meta {
1962
+ display: flex;
1963
+ align-items: center;
1964
+ justify-content: space-between;
1965
+ gap: 12px;
1966
+ font-size: 12px;
1967
+ font-weight: 500;
1968
+ color: var(--rs-muted);
1847
1969
  }
1848
1970
 
1849
- .rs-amount-token-value {
1850
- width: 100%;
1851
- text-align: center;
1852
- font-size: 14px;
1853
- color: var(--rs-muted);
1854
- margin-top: 2px;
1971
+ .rs-amount-meta-balance,
1972
+ .rs-amount-meta-minimum {
1855
1973
  font-feature-settings: "tnum";
1856
1974
  }
1857
1975
 
1858
- .rs-flow-pill {
1859
- display: inline-flex;
1860
- align-items: center;
1861
- justify-content: center;
1862
- gap: 12px;
1863
- padding: 8px 16px;
1976
+ .rs-amount-presets {
1977
+ display: flex;
1978
+ gap: 4px;
1979
+ width: 100%;
1980
+ }
1981
+
1982
+ .rs-amount-preset-btn {
1983
+ flex: 1 0 0;
1984
+ min-width: 0;
1985
+ padding: 12px 16px;
1864
1986
  background: var(--rs-surface);
1865
- border-radius: var(--rs-radius-full);
1987
+ border: none;
1988
+ border-radius: 8px;
1989
+ font-family: inherit;
1990
+ font-size: 14px;
1991
+ font-weight: 500;
1992
+ color: var(--rs-foreground);
1993
+ cursor: pointer;
1994
+ transition: background-color 0.15s;
1866
1995
  }
1867
1996
 
1868
- .rs-flow-pill-side {
1869
- display: flex;
1870
- flex-direction: column;
1871
- align-items: center;
1872
- gap: 2px;
1997
+ .rs-amount-preset-btn:hover:not(:disabled) {
1998
+ background: var(--rs-surface-hover);
1873
1999
  }
1874
2000
 
1875
- .rs-flow-pill-label {
1876
- font-size: 10px;
1877
- color: var(--rs-muted-foreground);
1878
- text-transform: uppercase;
1879
- letter-spacing: 0.4px;
2001
+ .rs-amount-preset-btn:focus-visible {
2002
+ outline: 2px solid var(--rs-border-accent);
2003
+ outline-offset: 2px;
1880
2004
  }
1881
2005
 
1882
- .rs-flow-pill-token {
1883
- display: flex;
1884
- align-items: center;
1885
- gap: 6px;
2006
+ .rs-amount-preset-btn:disabled {
2007
+ opacity: 0.5;
2008
+ cursor: not-allowed;
1886
2009
  }
1887
2010
 
1888
- .rs-flow-pill-token-icon-wrapper {
1889
- position: relative;
1890
- flex-shrink: 0;
2011
+ .rs-amount-details {
2012
+ display: flex;
2013
+ flex-direction: column;
2014
+ gap: 12px;
1891
2015
  }
1892
2016
 
1893
- .rs-flow-pill-token-icon {
1894
- width: 20px;
1895
- height: 20px;
1896
- border-radius: 50%;
2017
+ .rs-amount-detail-row {
1897
2018
  display: flex;
1898
2019
  align-items: center;
1899
- justify-content: center;
1900
- background: var(--rs-background);
1901
- font-size: 10px;
1902
- font-weight: 600;
2020
+ justify-content: space-between;
2021
+ gap: 12px;
2022
+ font-size: 14px;
2023
+ font-weight: 500;
1903
2024
  color: var(--rs-muted);
1904
- overflow: hidden;
1905
- flex-shrink: 0;
2025
+ line-height: normal;
1906
2026
  }
1907
2027
 
1908
- .rs-flow-pill-token-icon img {
1909
- width: 20px;
1910
- height: 20px;
1911
- border-radius: 50%;
1912
- object-fit: contain;
1913
- }
1914
-
1915
- .rs-flow-pill-chain-badge {
1916
- position: absolute;
1917
- bottom: -2px;
1918
- right: -2px;
1919
- width: 12px;
1920
- height: 12px;
1921
- border-radius: 3px;
1922
- border: 1.5px solid var(--rs-surface);
1923
- background-color: var(--rs-background);
2028
+ .rs-amount-detail-value {
1924
2029
  display: flex;
1925
2030
  align-items: center;
1926
- justify-content: center;
1927
- font-size: 6px;
1928
- font-weight: 700;
2031
+ gap: 4px;
2032
+ color: var(--rs-muted);
2033
+ font-feature-settings: "tnum";
2034
+ }
2035
+
2036
+ .rs-amount-detail-icon {
2037
+ width: 16px;
2038
+ height: 16px;
2039
+ border-radius: 50%;
1929
2040
  overflow: hidden;
2041
+ flex-shrink: 0;
2042
+ background: var(--rs-background);
1930
2043
  }
1931
2044
 
1932
- .rs-flow-pill-chain-badge img {
2045
+ .rs-amount-detail-icon img {
1933
2046
  width: 100%;
1934
2047
  height: 100%;
1935
- border-radius: 3px;
1936
2048
  object-fit: cover;
1937
2049
  }
1938
2050
 
1939
- .rs-flow-pill-token-symbol {
1940
- font-size: 13px;
1941
- font-weight: 500;
1942
- color: var(--rs-foreground);
1943
- }
1944
-
1945
- .rs-flow-pill-arrow {
1946
- display: flex;
2051
+ .rs-amount-detail-info {
2052
+ display: inline-flex;
2053
+ width: 16px;
2054
+ height: 16px;
1947
2055
  align-items: center;
1948
- color: var(--rs-muted-foreground);
2056
+ justify-content: center;
2057
+ color: var(--rs-muted);
2058
+ cursor: help;
1949
2059
  }
1950
2060
 
1951
- .rs-flow-pill-arrow svg {
2061
+ .rs-amount-detail-info svg {
1952
2062
  width: 16px;
1953
2063
  height: 16px;
1954
2064
  }
1955
2065
 
1956
- .rs-amount-presets {
1957
- display: flex;
1958
- gap: 6px;
2066
+ .rs-amount-detail-link {
2067
+ display: inline-flex;
2068
+ width: 16px;
2069
+ height: 16px;
2070
+ align-items: center;
1959
2071
  justify-content: center;
1960
- margin: 16px 0 0;
2072
+ color: var(--rs-muted);
2073
+ text-decoration: none;
2074
+ transition: color 0.15s;
1961
2075
  }
1962
2076
 
1963
- .rs-amount-preset-btn {
1964
- padding: 6px 14px;
1965
- background: var(--rs-secondary);
1966
- border: none;
1967
- border-radius: var(--rs-radius-full);
1968
- font-size: 12px;
1969
- font-weight: 500;
2077
+ .rs-amount-detail-link:hover {
1970
2078
  color: var(--rs-foreground);
1971
- cursor: pointer;
1972
- transition: background-color 0.15s;
1973
- }
1974
-
1975
- .rs-amount-preset-btn:hover {
1976
- background: var(--rs-secondary-hover);
1977
2079
  }
1978
2080
 
1979
- .rs-amount-preset-btn:disabled {
1980
- opacity: 0.5;
1981
- cursor: not-allowed;
2081
+ .rs-amount-detail-link svg {
2082
+ width: 14px;
2083
+ height: 14px;
1982
2084
  }
1983
2085
 
1984
- .rs-amount-available {
2086
+ /* Side-by-side button row used by success / failure footers
2087
+ ("New deposit" + "Done", "Cancel" + "Try again"). */
2088
+ .rs-screen-button-row {
1985
2089
  display: flex;
1986
- align-items: center;
1987
- justify-content: center;
1988
- font-size: 12px;
1989
- color: var(--rs-muted-foreground);
1990
- margin-top: 4px;
2090
+ gap: 8px;
2091
+ width: 100%;
1991
2092
  }
1992
2093
 
1993
- .rs-amount-available-value {
1994
- font-feature-settings: "tnum";
2094
+ .rs-screen-button-row > * {
2095
+ flex: 1 0 0;
2096
+ min-width: 0;
1995
2097
  }
1996
2098
 
1997
2099
  .rs-amount-error {
1998
2100
  display: flex;
1999
2101
  align-items: center;
2000
- justify-content: center;
2001
- gap: 6px;
2002
- margin-top: 12px;
2003
- padding: 8px 12px;
2102
+ gap: 8px;
2103
+ padding: 10px 12px;
2004
2104
  background: var(--rs-error-tint);
2005
- border-radius: var(--rs-radius-md);
2105
+ border-radius: var(--rs-radius-sm);
2006
2106
  font-size: 13px;
2007
2107
  color: var(--rs-error);
2008
2108
  }
@@ -2126,10 +2226,10 @@
2126
2226
  ============================================================================= */
2127
2227
 
2128
2228
  .rs-withdraw-form {
2129
- padding: 14px;
2229
+ padding: 16px;
2130
2230
  display: flex;
2131
2231
  flex-direction: column;
2132
- gap: 12px;
2232
+ gap: 16px;
2133
2233
  }
2134
2234
 
2135
2235
  .rs-step-body.rs-withdraw-loading {
@@ -2164,23 +2264,22 @@
2164
2264
 
2165
2265
  .rs-withdraw-label {
2166
2266
  font-size: 14px;
2167
- font-weight: 600;
2168
- color: var(--rs-foreground);
2267
+ font-weight: 500;
2268
+ color: var(--rs-muted);
2269
+ }
2270
+
2271
+ .rs-withdraw-label--sm {
2272
+ font-size: 12px;
2169
2273
  }
2170
2274
 
2171
2275
  .rs-withdraw-input-row {
2172
2276
  display: flex;
2173
2277
  align-items: center;
2174
2278
  gap: 8px;
2175
- padding: 12px 14px;
2176
- background: var(--rs-background);
2279
+ padding: 12px;
2280
+ background: var(--rs-surface-subtle);
2177
2281
  border-radius: var(--rs-radius-md);
2178
- border: 1px solid var(--rs-border-surface);
2179
- transition: border-color 0.15s;
2180
- }
2181
-
2182
- .rs-withdraw-input-row:focus-within {
2183
- border-color: var(--rs-border-accent);
2282
+ border: 1px solid var(--rs-surface-subtle);
2184
2283
  }
2185
2284
 
2186
2285
  .rs-withdraw-input {
@@ -2201,12 +2300,12 @@
2201
2300
  .rs-withdraw-input--address {
2202
2301
  font-family:
2203
2302
  ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace;
2204
- font-size: 13px;
2303
+ font-size: 14px;
2205
2304
  }
2206
2305
 
2207
2306
  .rs-withdraw-input--amount {
2208
- font-size: 18px;
2209
- font-weight: 600;
2307
+ font-size: 14px;
2308
+ font-weight: 400;
2210
2309
  font-feature-settings: "tnum";
2211
2310
  }
2212
2311
 
@@ -2244,16 +2343,23 @@
2244
2343
  border-color: var(--rs-border);
2245
2344
  }
2246
2345
 
2346
+ /* Active state: address matches the connected wallet. Collapses to a small
2347
+ circular badge (icon-only), matching the Figma. */
2247
2348
  .rs-withdraw-use-connected--active {
2248
- padding: 6px 10px;
2249
- background: var(--rs-primary-tint);
2250
- border-color: var(--rs-border-accent);
2251
- color: var(--rs-primary);
2349
+ width: 24px;
2350
+ height: 24px;
2351
+ padding: 0;
2352
+ border-radius: 999px;
2353
+ background: var(--rs-surface);
2354
+ border-color: var(--rs-surface);
2355
+ color: var(--rs-foreground);
2356
+ flex-shrink: 0;
2357
+ justify-content: center;
2252
2358
  }
2253
2359
 
2254
2360
  .rs-withdraw-use-connected--active:hover {
2255
- background: var(--rs-primary-tint);
2256
- border-color: var(--rs-border-accent);
2361
+ background: var(--rs-surface);
2362
+ border-color: var(--rs-surface);
2257
2363
  }
2258
2364
 
2259
2365
  .rs-withdraw-use-connected-icon {
@@ -2261,6 +2367,12 @@
2261
2367
  height: 18px;
2262
2368
  }
2263
2369
 
2370
+ .rs-withdraw-use-connected--active .rs-withdraw-use-connected-icon {
2371
+ width: 16px;
2372
+ height: 16px;
2373
+ border-radius: 999px;
2374
+ }
2375
+
2264
2376
  .rs-withdraw-amount-right {
2265
2377
  display: flex;
2266
2378
  align-items: center;
@@ -2275,14 +2387,15 @@
2275
2387
  }
2276
2388
 
2277
2389
  .rs-withdraw-max-btn {
2278
- padding: 4px 10px;
2390
+ padding: 8px 16px;
2279
2391
  background: transparent;
2280
- border: 1px solid var(--rs-border);
2281
- border-radius: var(--rs-radius-full);
2282
- font-size: 12px;
2283
- font-weight: 600;
2392
+ border: 1.19px solid var(--rs-foreground);
2393
+ border-radius: 8px;
2394
+ font-size: 14px;
2395
+ font-weight: 500;
2284
2396
  color: var(--rs-foreground);
2285
2397
  cursor: pointer;
2398
+ white-space: nowrap;
2286
2399
  transition:
2287
2400
  background-color 0.15s,
2288
2401
  border-color 0.15s;
@@ -2290,7 +2403,6 @@
2290
2403
 
2291
2404
  .rs-withdraw-max-btn:hover:not(:disabled) {
2292
2405
  background: var(--rs-surface);
2293
- border-color: var(--rs-border-accent);
2294
2406
  }
2295
2407
 
2296
2408
  .rs-withdraw-max-btn:disabled {
@@ -2303,27 +2415,29 @@
2303
2415
  align-items: center;
2304
2416
  justify-content: space-between;
2305
2417
  font-size: 13px;
2306
- padding: 2px 2px 0;
2418
+ font-weight: 500;
2419
+ padding: 0;
2307
2420
  }
2308
2421
 
2309
2422
  .rs-withdraw-usd {
2310
- color: var(--rs-muted-foreground);
2423
+ color: var(--rs-muted);
2311
2424
  font-feature-settings: "tnum";
2312
2425
  }
2313
2426
 
2314
2427
  .rs-withdraw-balance {
2315
- color: var(--rs-muted-foreground);
2428
+ color: var(--rs-muted);
2316
2429
  font-feature-settings: "tnum";
2317
2430
  }
2318
2431
 
2319
2432
  /* Receive row - inline selects side by side */
2320
2433
  .rs-withdraw-receive-row {
2321
2434
  display: flex;
2322
- gap: 8px;
2435
+ gap: 16px;
2323
2436
  }
2324
2437
 
2325
2438
  .rs-withdraw-receive-col {
2326
2439
  flex: 1;
2440
+ min-width: 0;
2327
2441
  display: flex;
2328
2442
  flex-direction: column;
2329
2443
  gap: 8px;
@@ -2333,21 +2447,21 @@
2333
2447
  display: flex;
2334
2448
  align-items: center;
2335
2449
  justify-content: space-between;
2336
- padding: 10px 12px;
2337
- background: var(--rs-background);
2450
+ padding: 12px;
2451
+ background: var(--rs-surface-subtle);
2338
2452
  border-radius: var(--rs-radius-md);
2339
- border: 1px solid var(--rs-border-surface);
2453
+ border: 1px solid var(--rs-surface-subtle);
2340
2454
  cursor: pointer;
2341
2455
  transition:
2342
2456
  border-color 0.15s,
2343
2457
  background-color 0.15s;
2344
2458
  width: 100%;
2345
- font-size: 14px;
2459
+ font-size: 16px;
2346
2460
  }
2347
2461
 
2348
2462
  .rs-withdraw-dropdown:hover {
2349
- border-color: var(--rs-border);
2350
- background: var(--rs-background-secondary);
2463
+ background: var(--rs-surface);
2464
+ border-color: var(--rs-surface);
2351
2465
  }
2352
2466
 
2353
2467
  .rs-withdraw-dropdown-value {
@@ -2356,13 +2470,21 @@
2356
2470
  gap: 8px;
2357
2471
  font-weight: 500;
2358
2472
  color: var(--rs-foreground);
2473
+ min-width: 0;
2474
+ }
2475
+
2476
+ .rs-withdraw-dropdown-value > span {
2477
+ white-space: nowrap;
2478
+ overflow: hidden;
2479
+ text-overflow: ellipsis;
2359
2480
  }
2360
2481
 
2361
2482
  .rs-withdraw-dropdown-icon {
2362
- width: 20px;
2363
- height: 20px;
2483
+ width: 24px;
2484
+ height: 24px;
2364
2485
  border-radius: 50%;
2365
2486
  object-fit: contain;
2487
+ flex-shrink: 0;
2366
2488
  }
2367
2489
 
2368
2490
  .rs-withdraw-dropdown-arrow {
@@ -2513,32 +2635,39 @@
2513
2635
  Deposit Address Step
2514
2636
  ============================================================================= */
2515
2637
 
2638
+ /* Transfer crypto screen — matches Figma 1855:119996. Layout:
2639
+ chain/token select row → QR well (280px QR + truncated mono address) →
2640
+ text-only "Copy address" button → "Price impact" accordion. */
2641
+
2516
2642
  .rs-deposit-address {
2517
2643
  display: flex;
2518
2644
  flex-direction: column;
2519
- align-items: center;
2520
- gap: 12px;
2645
+ align-items: stretch;
2646
+ gap: 16px;
2647
+ width: 100%;
2521
2648
  }
2522
2649
 
2523
2650
  .rs-deposit-address-selectors {
2524
2651
  display: flex;
2525
- align-items: flex-end;
2526
- gap: 8px;
2652
+ align-items: flex-start;
2653
+ gap: 16px;
2527
2654
  width: 100%;
2528
2655
  }
2529
2656
 
2530
2657
  .rs-deposit-address-dropdown {
2531
2658
  position: relative;
2532
- flex: 1;
2659
+ flex: 1 0 0;
2533
2660
  min-width: 0;
2661
+ display: flex;
2662
+ flex-direction: column;
2663
+ gap: 8px;
2534
2664
  }
2535
2665
 
2536
2666
  .rs-deposit-address-dropdown-label {
2537
- font-size: 11px;
2538
- color: var(--rs-foreground);
2539
- margin-bottom: 4px;
2667
+ font-size: 12px;
2540
2668
  font-weight: 500;
2541
- opacity: 0.65;
2669
+ color: var(--rs-muted-foreground);
2670
+ margin: 0;
2542
2671
  }
2543
2672
 
2544
2673
  .rs-deposit-address-dropdown-label--with-min {
@@ -2551,83 +2680,89 @@
2551
2680
  .rs-deposit-address-min {
2552
2681
  display: inline-flex;
2553
2682
  align-items: center;
2554
- gap: 3px;
2683
+ gap: 4px;
2684
+ color: var(--rs-muted-foreground);
2555
2685
  }
2556
2686
 
2557
2687
  .rs-deposit-address-min-icon {
2558
- width: 12px;
2559
- height: 12px;
2688
+ width: 16px;
2689
+ height: 16px;
2560
2690
  flex-shrink: 0;
2691
+ color: inherit;
2561
2692
  }
2562
2693
 
2694
+ /* Price impact accordion — sits at the bottom of the transfer-crypto
2695
+ screen. Header is a thin row with the value + info tooltip + chevron. */
2563
2696
  .rs-price-impact {
2564
2697
  width: 100%;
2565
- margin-top: 10px;
2566
- border-radius: var(--rs-radius-md);
2567
- background: var(--color-gray2);
2568
- overflow: hidden;
2698
+ display: flex;
2699
+ flex-direction: column;
2569
2700
  }
2570
2701
 
2571
2702
  .rs-price-impact-header {
2572
2703
  display: flex;
2573
2704
  align-items: center;
2705
+ justify-content: space-between;
2574
2706
  gap: 8px;
2575
2707
  width: 100%;
2576
- padding: 10px 14px;
2708
+ padding: 0;
2577
2709
  background: transparent;
2578
2710
  border: none;
2579
2711
  cursor: pointer;
2580
2712
  font-family: inherit;
2581
- color: var(--rs-foreground);
2713
+ color: var(--rs-muted);
2582
2714
  text-align: left;
2583
- transition: background-color 0.15s;
2584
2715
  }
2585
2716
 
2586
- .rs-price-impact-header:hover {
2587
- background: var(--rs-surface);
2717
+ .rs-price-impact-header-left {
2718
+ display: inline-flex;
2719
+ align-items: center;
2720
+ gap: 8px;
2588
2721
  }
2589
2722
 
2590
2723
  .rs-price-impact-row-icon {
2591
2724
  display: inline-flex;
2592
2725
  align-items: center;
2593
2726
  justify-content: center;
2594
- width: 14px;
2595
- height: 14px;
2596
- color: var(--rs-muted-foreground);
2727
+ width: 16px;
2728
+ height: 16px;
2729
+ color: var(--rs-muted);
2597
2730
  flex-shrink: 0;
2598
2731
  }
2599
2732
 
2600
2733
  .rs-price-impact-row-icon svg {
2601
- width: 14px;
2602
- height: 14px;
2734
+ width: 16px;
2735
+ height: 16px;
2603
2736
  }
2604
2737
 
2605
2738
  .rs-price-impact-label {
2606
- font-size: 11px;
2607
- color: var(--rs-muted-foreground);
2739
+ font-size: 14px;
2608
2740
  font-weight: 500;
2741
+ color: var(--rs-muted);
2609
2742
  }
2610
2743
 
2611
2744
  .rs-price-impact-label strong {
2612
- color: var(--rs-foreground);
2613
- font-weight: 600;
2745
+ color: var(--rs-muted);
2746
+ font-weight: 500;
2614
2747
  }
2615
2748
 
2616
2749
  .rs-price-impact-info {
2617
- color: var(--rs-muted-foreground);
2750
+ display: inline-flex;
2751
+ align-items: center;
2752
+ justify-content: center;
2753
+ color: var(--rs-muted);
2618
2754
  }
2619
2755
 
2620
2756
  .rs-price-impact-info .rs-tooltip-trigger svg {
2621
- width: 13px;
2622
- height: 13px;
2757
+ width: 16px;
2758
+ height: 16px;
2623
2759
  display: block;
2624
2760
  }
2625
2761
 
2626
2762
  .rs-price-impact-chevron {
2627
- width: 14px;
2628
- height: 14px;
2629
- margin-left: auto;
2630
- color: var(--rs-muted-foreground);
2763
+ width: 16px;
2764
+ height: 16px;
2765
+ color: var(--rs-muted);
2631
2766
  flex-shrink: 0;
2632
2767
  transition: transform 0.2s ease;
2633
2768
  }
@@ -2655,12 +2790,9 @@
2655
2790
  display: flex;
2656
2791
  align-items: center;
2657
2792
  gap: 8px;
2658
- padding: 6px 14px 10px;
2659
- font-size: 13px;
2660
- }
2661
-
2662
- .rs-price-impact-row:last-child {
2663
- padding-bottom: 12px;
2793
+ padding-top: 12px;
2794
+ font-size: 14px;
2795
+ color: var(--rs-muted);
2664
2796
  }
2665
2797
 
2666
2798
  /* =============================================================================
@@ -2737,39 +2869,39 @@
2737
2869
  .rs-deposit-address-dropdown-trigger {
2738
2870
  display: flex;
2739
2871
  align-items: center;
2740
- gap: 6px;
2872
+ gap: 8px;
2741
2873
  width: 100%;
2742
- padding: 8px 10px;
2743
- background: var(--rs-surface);
2744
- border-radius: var(--rs-radius-sm);
2745
- border: 1px solid var(--rs-border-surface);
2874
+ padding: 8px 12px;
2875
+ background: var(--rs-surface-subtle);
2876
+ border-radius: 8px;
2877
+ border: 1px solid var(--rs-surface-subtle);
2746
2878
  cursor: pointer;
2747
2879
  transition:
2748
2880
  border-color 0.15s,
2749
2881
  background-color 0.15s;
2750
- font-size: 13px;
2882
+ font-size: 14px;
2751
2883
  font-weight: 500;
2752
2884
  color: var(--rs-foreground);
2753
2885
  font-family: inherit;
2754
2886
  }
2755
2887
 
2756
2888
  .rs-deposit-address-dropdown-trigger:hover {
2757
- border-color: var(--rs-border);
2758
- background: var(--rs-surface-hover);
2889
+ background: var(--rs-surface);
2890
+ border-color: var(--rs-surface);
2759
2891
  }
2760
2892
 
2761
2893
  .rs-deposit-address-dropdown-icon {
2762
- width: 18px;
2763
- height: 18px;
2894
+ width: 24px;
2895
+ height: 24px;
2764
2896
  border-radius: 50%;
2765
- object-fit: contain;
2897
+ object-fit: cover;
2766
2898
  flex-shrink: 0;
2767
2899
  }
2768
2900
 
2769
2901
  .rs-deposit-address-dropdown-chevron {
2770
- width: 14px;
2771
- height: 14px;
2772
- color: var(--rs-muted-foreground);
2902
+ width: 24px;
2903
+ height: 24px;
2904
+ color: var(--rs-muted);
2773
2905
  margin-left: auto;
2774
2906
  flex-shrink: 0;
2775
2907
  }
@@ -2821,82 +2953,69 @@
2821
2953
  color: var(--rs-primary);
2822
2954
  }
2823
2955
 
2824
- .rs-deposit-address-qr {
2956
+ /* Well-card containing the 280px QR + truncated mono address. */
2957
+ .rs-deposit-address-well {
2825
2958
  display: flex;
2959
+ flex-direction: column;
2826
2960
  align-items: center;
2827
2961
  justify-content: center;
2828
- padding: 4px;
2829
- background: var(--rs-surface);
2830
- border-radius: var(--rs-radius-md);
2831
- margin: 4px 0;
2832
- }
2833
-
2834
- .rs-deposit-address-qr canvas,
2835
- .rs-deposit-address-qr svg {
2836
- display: block;
2837
- border-radius: var(--rs-radius-md);
2838
- }
2839
-
2840
- .rs-deposit-address-info {
2841
- display: flex;
2842
- flex-direction: column;
2843
- gap: 0;
2844
2962
  width: 100%;
2963
+ background: var(--rs-surface-subtle);
2964
+ border-radius: 8px;
2845
2965
  }
2846
2966
 
2847
- .rs-deposit-address-label {
2967
+ .rs-deposit-address-qr {
2848
2968
  display: flex;
2849
2969
  align-items: center;
2850
- gap: 5px;
2851
- font-size: 13px;
2852
- font-weight: 600;
2853
- color: var(--rs-muted);
2854
- margin-bottom: 8px;
2970
+ justify-content: center;
2971
+ padding: 20px;
2855
2972
  }
2856
2973
 
2857
- .rs-deposit-address-label-icon {
2858
- width: 13px;
2859
- height: 13px;
2974
+ .rs-deposit-address-qr canvas,
2975
+ .rs-deposit-address-qr svg {
2860
2976
  display: block;
2861
- color: var(--rs-muted-foreground);
2977
+ width: 220px;
2978
+ height: 220px;
2862
2979
  }
2863
2980
 
2864
2981
  .rs-deposit-address-value {
2865
- font-size: 12px;
2982
+ width: 100%;
2983
+ padding: 0 20px 12px;
2866
2984
  font-family:
2867
- ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono",
2868
- monospace;
2869
- color: var(--rs-foreground);
2985
+ "Geist Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
2986
+ "Liberation Mono", monospace;
2987
+ font-size: 13px;
2988
+ font-weight: 500;
2989
+ color: var(--rs-muted);
2990
+ text-align: center;
2870
2991
  word-break: break-all;
2871
- text-align: left;
2872
- padding: 8px 12px;
2873
- background: transparent;
2874
- border: 1px solid var(--rs-border-surface);
2875
- border-radius: var(--rs-radius-sm) var(--rs-radius-sm) 0 0;
2876
- border-bottom: none;
2877
- width: 100%;
2878
2992
  }
2879
2993
 
2880
2994
  .rs-deposit-address-copy {
2881
2995
  display: flex;
2882
2996
  align-items: center;
2883
2997
  justify-content: center;
2884
- gap: 6px;
2998
+ gap: 8px;
2885
2999
  width: 100%;
2886
- padding: 8px 16px;
2887
- border: 1px solid var(--rs-border-surface);
2888
- border-radius: 0 0 var(--rs-radius-sm) var(--rs-radius-sm);
2889
- background: var(--color-gray2);
3000
+ padding: 10px 12px;
3001
+ border: none;
3002
+ border-radius: 8px;
3003
+ background: transparent;
2890
3004
  color: var(--rs-foreground);
2891
- font-size: 13px;
3005
+ font-size: 14px;
2892
3006
  font-weight: 500;
2893
- cursor: pointer;
2894
- transition: background 0.15s;
2895
3007
  font-family: inherit;
3008
+ cursor: pointer;
3009
+ transition: background-color 0.15s;
2896
3010
  }
2897
3011
 
2898
3012
  .rs-deposit-address-copy:hover {
2899
- background: var(--rs-surface);
3013
+ background: var(--rs-surface-subtle);
3014
+ }
3015
+
3016
+ .rs-deposit-address-copy svg {
3017
+ width: 16px;
3018
+ height: 16px;
2900
3019
  }
2901
3020
 
2902
3021
  .rs-deposit-address-balance {
@@ -3178,66 +3297,6 @@
3178
3297
  color: var(--rs-foreground);
3179
3298
  }
3180
3299
 
3181
- /* =============================================================================
3182
- Step Indicator (numbered circles with dotted line)
3183
- ============================================================================= */
3184
-
3185
- .rs-step-indicator {
3186
- display: flex;
3187
- align-items: center;
3188
- }
3189
-
3190
- .rs-step-indicator-node {
3191
- width: 28px;
3192
- height: 28px;
3193
- border-radius: 50%;
3194
- display: flex;
3195
- align-items: center;
3196
- justify-content: center;
3197
- font-size: 12px;
3198
- font-weight: 600;
3199
- transition: background-color 0.2s, color 0.2s, border-color 0.2s;
3200
- border: 1.5px solid var(--rs-border);
3201
- background: transparent;
3202
- color: var(--rs-muted);
3203
- }
3204
-
3205
- .rs-step-indicator-node--active {
3206
- border-color: var(--rs-foreground);
3207
- background: var(--rs-foreground);
3208
- color: var(--rs-background);
3209
- }
3210
-
3211
- .rs-step-indicator-node--inactive {
3212
- border-color: var(--rs-border);
3213
- background: transparent;
3214
- color: var(--rs-muted);
3215
- }
3216
-
3217
- .rs-step-indicator-node--complete {
3218
- border-color: var(--rs-success);
3219
- background: var(--rs-success);
3220
- color: white;
3221
- }
3222
-
3223
- .rs-step-indicator-node--complete svg {
3224
- width: 14px;
3225
- height: 14px;
3226
- }
3227
-
3228
- .rs-step-indicator-line {
3229
- width: 40px;
3230
- height: 0;
3231
- border-top: 2px dashed var(--rs-border);
3232
- margin: 0 6px;
3233
- transition: border-color 0.3s;
3234
- }
3235
-
3236
- .rs-step-indicator-line--active {
3237
- border-color: var(--rs-success);
3238
- border-top-style: solid;
3239
- }
3240
-
3241
3300
  /* =============================================================================
3242
3301
  Processing Badges (centered icon badges)
3243
3302
  ============================================================================= */
@@ -3388,17 +3447,6 @@
3388
3447
  transform: rotate(180deg);
3389
3448
  }
3390
3449
 
3391
- /* =============================================================================
3392
- Minimum Deposit Text
3393
- ============================================================================= */
3394
-
3395
- .rs-amount-minimum {
3396
- text-align: center;
3397
- font-size: 13px;
3398
- color: var(--rs-muted-foreground);
3399
- margin-top: 8px;
3400
- }
3401
-
3402
3450
  /* =============================================================================
3403
3451
  History Button (Header)
3404
3452
  ============================================================================= */
@@ -3407,26 +3455,19 @@
3407
3455
  display: flex;
3408
3456
  align-items: center;
3409
3457
  justify-content: center;
3410
- width: 30px;
3411
- height: 30px;
3458
+ width: 24px;
3459
+ height: 24px;
3412
3460
  padding: 0;
3413
- margin-right: 2px;
3414
3461
  border: none;
3415
- border-radius: var(--rs-radius);
3462
+ border-radius: 4px;
3416
3463
  background: transparent;
3417
- color: var(--rs-muted-foreground);
3464
+ color: var(--rs-foreground);
3418
3465
  cursor: pointer;
3419
- transition: color 0.15s, background-color 0.15s;
3466
+ transition: opacity 0.15s;
3420
3467
  }
3421
3468
 
3422
3469
  .rs-modal-header-history:hover:not(:disabled) {
3423
- color: var(--rs-foreground);
3424
- background: var(--rs-surface);
3425
- }
3426
-
3427
- .rs-modal-header-history:active:not(:disabled) {
3428
- background: var(--rs-surface-hover);
3429
- transform: scale(0.96);
3470
+ opacity: 0.65;
3430
3471
  }
3431
3472
 
3432
3473
  .rs-modal-header-history:disabled {
@@ -3435,12 +3476,15 @@
3435
3476
  }
3436
3477
 
3437
3478
  .rs-modal-header-history svg {
3438
- width: 15px;
3439
- height: 15px;
3479
+ width: 24px;
3480
+ height: 24px;
3440
3481
  }
3441
3482
 
3442
3483
  /* =============================================================================
3443
- Deposit History Panel
3484
+ Deposit History Panel — matches Figma 1878:142660 / 1878:142727.
3485
+ The panel overlays the deposit flow inside .rs-modal-content; its own
3486
+ layout uses the .rs-screen pattern (padded container + scrollable body
3487
+ + powered-by anchored to the bottom).
3444
3488
  ============================================================================= */
3445
3489
 
3446
3490
  .rs-history-panel {
@@ -3465,374 +3509,646 @@
3465
3509
  }
3466
3510
  }
3467
3511
 
3468
- /* Header */
3469
-
3470
- .rs-history-header {
3512
+ /* The screen body inside the history panel scrolls when the list grows
3513
+ beyond the capped modal height. The BodyHeader stays pinned at the
3514
+ top of the screen body; only the list itself moves under scroll. */
3515
+ .rs-history-screen {
3516
+ flex: 1;
3471
3517
  display: flex;
3472
- align-items: center;
3473
- gap: 8px;
3474
- padding: 12px 16px;
3475
- border-bottom: 1px solid var(--rs-border-surface);
3476
- min-height: var(--rs-height-titlebar);
3518
+ flex-direction: column;
3519
+ flex-grow: 1;
3520
+ padding: 12px;
3521
+ gap: 16px;
3522
+ min-height: 0;
3477
3523
  }
3478
3524
 
3479
- .rs-history-back {
3525
+ .rs-history-screen-body {
3480
3526
  display: flex;
3481
- align-items: center;
3482
- justify-content: center;
3483
- width: 28px;
3484
- height: 28px;
3485
- padding: 0;
3486
- border: none;
3487
- border-radius: var(--rs-radius);
3488
- background: transparent;
3489
- color: var(--rs-muted-foreground);
3490
- cursor: pointer;
3491
- transition: color 0.15s, background-color 0.15s;
3492
- flex-shrink: 0;
3527
+ flex-direction: column;
3528
+ gap: 16px;
3529
+ flex: 1;
3530
+ min-height: 0;
3493
3531
  }
3494
3532
 
3495
- .rs-history-back:hover {
3496
- color: var(--rs-foreground);
3497
- background: var(--rs-surface);
3533
+ .rs-history-screen > .rs-powered-by {
3534
+ padding: 0;
3535
+ margin-top: auto;
3498
3536
  }
3499
3537
 
3500
- .rs-history-back svg {
3501
- width: 16px;
3502
- height: 16px;
3538
+ /* Empty / loading / error state with the big faint history glyph behind
3539
+ centered title + hint copy. */
3540
+ .rs-history-empty {
3541
+ position: relative;
3542
+ flex: 1;
3543
+ min-height: 300px;
3544
+ display: flex;
3545
+ flex-direction: column;
3546
+ align-items: center;
3547
+ justify-content: center;
3548
+ gap: 4px;
3503
3549
  }
3504
3550
 
3505
- .rs-history-header-title {
3506
- flex: 1;
3507
- font-size: 14px;
3508
- font-weight: 600;
3509
- color: var(--rs-foreground);
3510
- letter-spacing: -0.01em;
3551
+ .rs-history-empty-glyph {
3552
+ position: absolute;
3553
+ top: 50%;
3554
+ left: 50%;
3555
+ width: 256px;
3556
+ height: 256px;
3557
+ transform: translate(-50%, -50%);
3558
+ color: var(--rs-surface);
3559
+ pointer-events: none;
3560
+ display: flex;
3561
+ align-items: center;
3562
+ justify-content: center;
3511
3563
  }
3512
3564
 
3513
- .rs-history-header-spacer {
3514
- width: 28px;
3515
- flex-shrink: 0;
3565
+ .rs-history-empty-glyph svg {
3566
+ width: 100%;
3567
+ height: 100%;
3516
3568
  }
3517
3569
 
3518
- /* Scrollable body */
3570
+ .rs-history-empty-text {
3571
+ position: relative;
3572
+ z-index: 1;
3573
+ display: flex;
3574
+ flex-direction: column;
3575
+ align-items: center;
3576
+ gap: 4px;
3577
+ text-align: center;
3578
+ }
3579
+
3580
+ .rs-history-empty-title {
3581
+ font-size: 16px;
3582
+ font-weight: 500;
3583
+ color: var(--rs-foreground);
3584
+ }
3519
3585
 
3520
- .rs-history-body {
3586
+ .rs-history-empty-hint {
3587
+ font-size: 14px;
3588
+ font-weight: 500;
3589
+ color: var(--rs-muted);
3590
+ }
3591
+
3592
+ /* List of transaction cards. */
3593
+ .rs-history-list {
3594
+ display: flex;
3595
+ flex-direction: column;
3596
+ gap: 12px;
3521
3597
  flex: 1;
3522
3598
  overflow-y: auto;
3523
- min-height: 0;
3599
+ overscroll-behavior: contain;
3600
+ scrollbar-gutter: stable;
3601
+ padding-right: 2px;
3524
3602
  }
3525
3603
 
3526
- .rs-history-body::-webkit-scrollbar {
3527
- width: 4px;
3604
+ .rs-history-list::-webkit-scrollbar {
3605
+ width: 6px;
3528
3606
  }
3529
3607
 
3530
- .rs-history-body::-webkit-scrollbar-thumb {
3531
- background: var(--rs-border);
3532
- border-radius: 2px;
3608
+ .rs-history-list::-webkit-scrollbar-thumb {
3609
+ background-color: var(--rs-surface-hover);
3610
+ border-radius: var(--rs-radius-full);
3533
3611
  }
3534
3612
 
3535
- /* State screens (loading, empty, error) */
3613
+ .rs-history-list::-webkit-scrollbar-thumb:hover {
3614
+ background-color: var(--rs-muted-foreground);
3615
+ }
3616
+
3617
+ .rs-history-list::-webkit-scrollbar-track {
3618
+ background: transparent;
3619
+ }
3536
3620
 
3537
- .rs-history-state {
3621
+ /* Card */
3622
+ .rs-history-card {
3623
+ width: 100%;
3538
3624
  display: flex;
3539
3625
  flex-direction: column;
3540
- align-items: center;
3541
- justify-content: center;
3542
- gap: 10px;
3543
- padding: 56px 24px;
3544
- text-align: center;
3626
+ gap: 16px;
3627
+ padding: 16px 12px;
3628
+ background: var(--rs-surface-subtle);
3629
+ border: none;
3630
+ border-radius: 8px;
3631
+ cursor: pointer;
3632
+ text-align: left;
3633
+ font-family: inherit;
3634
+ color: var(--rs-foreground);
3635
+ transition: background-color 0.15s;
3545
3636
  }
3546
3637
 
3547
- .rs-history-spinner {
3548
- width: 24px;
3549
- height: 24px;
3550
- color: var(--rs-muted-foreground);
3551
- animation: rs-spinner 1s linear infinite;
3638
+ .rs-history-card:hover:not(:disabled) {
3639
+ background: var(--rs-surface);
3640
+ }
3641
+
3642
+ .rs-history-card:focus-visible {
3643
+ outline: 2px solid var(--rs-border-accent);
3644
+ outline-offset: 2px;
3552
3645
  }
3553
3646
 
3554
- .rs-history-spinner svg {
3647
+ .rs-history-card-row {
3648
+ display: flex;
3649
+ align-items: center;
3650
+ gap: 16px;
3555
3651
  width: 100%;
3556
- height: 100%;
3557
3652
  }
3558
3653
 
3559
- .rs-history-state-icon {
3654
+ .rs-history-card-icons {
3655
+ display: flex;
3656
+ align-items: flex-end;
3657
+ flex-shrink: 0;
3658
+ }
3659
+
3660
+ .rs-history-card-token {
3560
3661
  width: 32px;
3561
3662
  height: 32px;
3562
- color: var(--rs-muted-foreground);
3663
+ margin-right: -10px;
3664
+ border-radius: 50%;
3665
+ background: var(--rs-surface);
3666
+ display: flex;
3667
+ align-items: center;
3668
+ justify-content: center;
3669
+ overflow: hidden;
3670
+ font-size: 11px;
3671
+ font-weight: 600;
3672
+ color: var(--rs-muted);
3563
3673
  }
3564
3674
 
3565
- .rs-history-state-icon--error {
3566
- color: var(--rs-error);
3675
+ .rs-history-card-token img {
3676
+ width: 100%;
3677
+ height: 100%;
3678
+ object-fit: cover;
3679
+ border-radius: 50%;
3680
+ }
3681
+
3682
+ .rs-history-card-chain {
3683
+ width: 14px;
3684
+ height: 14px;
3685
+ border-radius: 50%;
3686
+ background: var(--rs-background);
3687
+ display: flex;
3688
+ align-items: center;
3689
+ justify-content: center;
3690
+ overflow: hidden;
3567
3691
  }
3568
3692
 
3569
- .rs-history-state-icon svg {
3693
+ .rs-history-card-chain img {
3570
3694
  width: 100%;
3571
3695
  height: 100%;
3696
+ object-fit: cover;
3697
+ border-radius: 50%;
3572
3698
  }
3573
3699
 
3574
- .rs-history-state-text {
3575
- font-size: 13px;
3700
+ .rs-history-card-text {
3701
+ flex: 1;
3702
+ min-width: 0;
3703
+ display: flex;
3704
+ flex-direction: column;
3705
+ gap: 4px;
3706
+ }
3707
+
3708
+ .rs-history-card-title {
3709
+ font-size: 16px;
3710
+ font-weight: 700;
3711
+ color: var(--rs-foreground);
3712
+ line-height: normal;
3713
+ white-space: nowrap;
3714
+ }
3715
+
3716
+ .rs-history-card-date {
3717
+ font-size: 12px;
3576
3718
  font-weight: 500;
3577
3719
  color: var(--rs-muted);
3720
+ line-height: normal;
3721
+ white-space: nowrap;
3578
3722
  }
3579
3723
 
3580
- .rs-history-state-hint {
3581
- font-size: 12px;
3582
- color: var(--rs-muted-foreground);
3583
- margin-top: -4px;
3724
+ .rs-history-card-side {
3725
+ display: flex;
3726
+ flex-direction: column;
3727
+ align-items: flex-end;
3728
+ justify-content: center;
3729
+ gap: 4px;
3730
+ flex-shrink: 0;
3584
3731
  }
3585
3732
 
3586
- /* List */
3733
+ .rs-history-card-amount {
3734
+ font-size: 18px;
3735
+ font-weight: 500;
3736
+ color: var(--rs-foreground);
3737
+ line-height: normal;
3738
+ font-feature-settings: "tnum";
3739
+ white-space: nowrap;
3740
+ }
3587
3741
 
3588
- .rs-history-list {
3742
+ /* Expanded detail block under the row. */
3743
+ .rs-history-card-details {
3589
3744
  display: flex;
3590
3745
  flex-direction: column;
3746
+ gap: 12px;
3747
+ width: 100%;
3748
+ }
3749
+
3750
+ .rs-history-card-link {
3751
+ display: inline-flex;
3752
+ align-items: center;
3753
+ gap: 4px;
3754
+ font-size: 12px;
3755
+ font-weight: 500;
3756
+ line-height: 18px;
3757
+ color: var(--color-blue9, #0084d1);
3758
+ text-decoration: none;
3759
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
3760
+ monospace;
3761
+ }
3762
+
3763
+ .rs-history-card-link svg {
3764
+ width: 14px;
3765
+ height: 14px;
3766
+ }
3767
+
3768
+ .rs-history-card-link:hover {
3769
+ text-decoration: underline;
3591
3770
  }
3592
3771
 
3593
- /* Row */
3772
+ /* Status badges */
3773
+ .rs-history-badge {
3774
+ display: inline-flex;
3775
+ align-items: center;
3776
+ padding: 2px 6px;
3777
+ border-radius: 20px;
3778
+ font-size: 12px;
3779
+ font-weight: 500;
3780
+ line-height: normal;
3781
+ white-space: nowrap;
3782
+ }
3783
+
3784
+ .rs-history-badge--completed {
3785
+ background: #a4f4cf;
3786
+ color: #004f3b;
3787
+ }
3594
3788
 
3595
- .rs-history-row {
3789
+ .rs-history-badge--processing {
3790
+ background: #bee3ff;
3791
+ color: #00407f;
3792
+ }
3793
+
3794
+ .rs-history-badge--pending {
3795
+ background: #fde68a;
3796
+ color: #78350f;
3797
+ }
3798
+
3799
+ .rs-history-badge--failed {
3800
+ background: #ffc9c9;
3801
+ color: #82181a;
3802
+ }
3803
+
3804
+ .rs-history-badge--spam {
3805
+ background: var(--rs-surface);
3806
+ color: var(--rs-muted);
3807
+ }
3808
+
3809
+ /* Load more button at the end of the list. */
3810
+ .rs-history-load-more {
3596
3811
  display: flex;
3597
- flex-direction: column;
3598
- gap: 6px;
3812
+ align-items: center;
3813
+ justify-content: center;
3599
3814
  padding: 12px 16px;
3600
- border-bottom: 1px solid var(--rs-border-surface);
3601
- transition: background-color 0.12s;
3815
+ border: 1px solid var(--rs-border-surface);
3816
+ border-radius: 8px;
3817
+ background: transparent;
3818
+ color: var(--rs-muted);
3819
+ font-size: 14px;
3820
+ font-weight: 500;
3821
+ font-family: inherit;
3822
+ cursor: pointer;
3823
+ transition: color 0.15s, background-color 0.15s, border-color 0.15s;
3602
3824
  }
3603
3825
 
3604
- .rs-history-row:last-child {
3605
- border-bottom: none;
3826
+ .rs-history-load-more:hover:not(:disabled) {
3827
+ color: var(--rs-foreground);
3828
+ background: var(--rs-surface);
3829
+ border-color: var(--rs-border);
3606
3830
  }
3607
3831
 
3608
- .rs-history-row:hover {
3609
- background: var(--rs-background-secondary);
3832
+ .rs-history-load-more:disabled {
3833
+ opacity: 0.5;
3834
+ cursor: not-allowed;
3610
3835
  }
3611
3836
 
3612
- /* Row primary: route + status */
3837
+ /* =============================================================================
3838
+ Shell — matches Figma "modal" frame (padded container, no fixed title bar)
3839
+ ============================================================================= */
3840
+
3841
+ .rs-shell {
3842
+ display: flex;
3843
+ flex-direction: column;
3844
+ padding: 16px;
3845
+ gap: 16px;
3846
+ }
3613
3847
 
3614
- .rs-history-row-primary {
3848
+ .rs-shell-nav {
3615
3849
  display: flex;
3616
3850
  align-items: center;
3617
3851
  justify-content: space-between;
3618
- gap: 8px;
3852
+ min-height: 24px;
3619
3853
  }
3620
3854
 
3621
- /* Chain route with icons */
3622
-
3623
- .rs-history-route {
3855
+ .rs-shell-nav-actions {
3624
3856
  display: flex;
3625
3857
  align-items: center;
3626
- gap: 6px;
3627
- min-width: 0;
3858
+ gap: 12px;
3628
3859
  }
3629
3860
 
3630
- .rs-history-chain {
3861
+ .rs-shell-icon-btn {
3631
3862
  display: inline-flex;
3632
3863
  align-items: center;
3633
- gap: 5px;
3634
- min-width: 0;
3864
+ justify-content: center;
3865
+ width: 24px;
3866
+ height: 24px;
3867
+ padding: 0;
3868
+ background: transparent;
3869
+ border: none;
3870
+ border-radius: 4px;
3871
+ color: var(--rs-foreground);
3872
+ cursor: pointer;
3873
+ transition: opacity 0.15s;
3874
+ font-family: inherit;
3635
3875
  }
3636
3876
 
3637
- .rs-history-chain-icon {
3638
- width: 18px;
3639
- height: 18px;
3640
- border-radius: 4px;
3641
- flex-shrink: 0;
3642
- object-fit: cover;
3877
+ .rs-shell-icon-btn:hover:not(:disabled) {
3878
+ opacity: 0.65;
3643
3879
  }
3644
3880
 
3645
- .rs-history-chain-name {
3646
- font-size: 13px;
3647
- font-weight: 500;
3648
- color: var(--rs-foreground);
3649
- white-space: nowrap;
3650
- overflow: hidden;
3651
- text-overflow: ellipsis;
3881
+ .rs-shell-icon-btn:disabled {
3882
+ opacity: 0.3;
3883
+ cursor: not-allowed;
3652
3884
  }
3653
3885
 
3654
- .rs-history-route-arrow {
3655
- width: 12px;
3656
- height: 12px;
3657
- color: var(--rs-muted-foreground);
3658
- flex-shrink: 0;
3886
+ .rs-shell-icon-btn:focus-visible {
3887
+ outline: 2px solid var(--rs-border-accent);
3888
+ outline-offset: 2px;
3659
3889
  }
3660
3890
 
3661
- /* Status with dot indicator */
3891
+ .rs-shell-icon-btn svg {
3892
+ width: 24px;
3893
+ height: 24px;
3894
+ }
3662
3895
 
3663
- .rs-history-status {
3896
+ .rs-shell-body {
3897
+ display: flex;
3898
+ flex-direction: column;
3899
+ gap: 32px;
3900
+ }
3901
+
3902
+ .rs-shell-section {
3903
+ display: flex;
3904
+ flex-direction: column;
3905
+ gap: 12px;
3906
+ }
3907
+
3908
+ /* Body header — icon wrapper + title + subtitle */
3909
+
3910
+ .rs-body-header {
3911
+ display: flex;
3912
+ flex-direction: column;
3913
+ gap: 8px;
3914
+ }
3915
+
3916
+ .rs-body-header-icon {
3664
3917
  display: inline-flex;
3665
3918
  align-items: center;
3666
- gap: 5px;
3667
- font-size: 11px;
3668
- font-weight: 500;
3669
- letter-spacing: 0.01em;
3670
- line-height: 1;
3671
- white-space: nowrap;
3672
- flex-shrink: 0;
3919
+ justify-content: center;
3920
+ width: 44px;
3921
+ height: 44px;
3922
+ padding: 10px;
3923
+ background: var(--rs-surface);
3924
+ border: 1px solid var(--rs-surface);
3925
+ border-radius: 8px;
3926
+ color: var(--rs-muted-foreground);
3927
+ box-sizing: border-box;
3673
3928
  }
3674
3929
 
3675
- .rs-history-dot {
3676
- width: 6px;
3677
- height: 6px;
3678
- border-radius: 50%;
3679
- flex-shrink: 0;
3930
+ .rs-body-header-icon svg {
3931
+ width: 24px;
3932
+ height: 24px;
3680
3933
  }
3681
3934
 
3682
- .rs-history-dot--pending {
3683
- background: var(--color-amber8);
3935
+ .rs-body-header-icon--success {
3936
+ background: var(--rs-success);
3937
+ border-color: var(--rs-success);
3938
+ color: #ffffff;
3684
3939
  }
3685
3940
 
3686
- .rs-history-dot--processing {
3687
- background: var(--color-blue9);
3688
- animation: rs-history-dot-pulse 1.5s ease-in-out infinite;
3941
+ .rs-body-header-icon--error {
3942
+ background: var(--rs-error);
3943
+ border-color: var(--rs-error);
3944
+ color: #ffffff;
3689
3945
  }
3690
3946
 
3691
- .rs-history-dot--completed {
3692
- background: var(--color-green9);
3947
+ .rs-body-header-text {
3948
+ display: flex;
3949
+ flex-direction: column;
3950
+ gap: 4px;
3693
3951
  }
3694
3952
 
3695
- .rs-history-dot--failed {
3696
- background: var(--color-red9);
3953
+ .rs-body-header-title {
3954
+ font-size: 20px;
3955
+ font-weight: 700;
3956
+ line-height: 1.2;
3957
+ letter-spacing: -0.01em;
3958
+ color: var(--rs-foreground);
3959
+ margin: 0;
3697
3960
  }
3698
3961
 
3699
- .rs-history-dot--spam {
3700
- background: var(--rs-muted-foreground);
3962
+ .rs-body-header-subtitle {
3963
+ font-size: 14px;
3964
+ font-weight: 500;
3965
+ line-height: 1.4;
3966
+ color: var(--rs-muted);
3967
+ margin: 0;
3701
3968
  }
3702
3969
 
3703
- @keyframes rs-history-dot-pulse {
3704
- 0%, 100% { opacity: 1; }
3705
- 50% { opacity: 0.4; }
3970
+ /* List row — Figma "oauth button" pattern */
3971
+
3972
+ .rs-list {
3973
+ display: flex;
3974
+ flex-direction: column;
3975
+ gap: 12px;
3706
3976
  }
3707
3977
 
3708
- .rs-history-status--completed {
3709
- color: var(--color-green10);
3978
+ .rs-list-row {
3979
+ display: flex;
3980
+ align-items: center;
3981
+ gap: 12px;
3982
+ width: 100%;
3983
+ padding: 12px;
3984
+ background: var(--rs-background-secondary);
3985
+ border: 1px solid var(--rs-background-secondary);
3986
+ border-radius: 8px;
3987
+ color: var(--rs-foreground);
3988
+ cursor: pointer;
3989
+ text-align: left;
3990
+ transition:
3991
+ background-color 0.15s,
3992
+ border-color 0.15s;
3993
+ font-family: inherit;
3994
+ font-size: inherit;
3710
3995
  }
3711
3996
 
3712
- .rs-history-status--failed {
3713
- color: var(--color-red10);
3997
+ .rs-list-row:hover:not(:disabled) {
3998
+ background: var(--rs-surface-hover);
3999
+ border-color: var(--rs-surface-hover);
3714
4000
  }
3715
4001
 
3716
- .rs-history-status--processing {
3717
- color: var(--color-blue11);
4002
+ .rs-list-row:disabled {
4003
+ cursor: not-allowed;
4004
+ opacity: 0.6;
3718
4005
  }
3719
4006
 
3720
- .rs-history-status--pending {
3721
- color: var(--color-amber8);
4007
+ .rs-list-row:focus-visible {
4008
+ outline: 2px solid var(--rs-border-accent);
4009
+ outline-offset: 2px;
3722
4010
  }
3723
4011
 
3724
- .rs-history-status--spam {
4012
+ .rs-list-row-leading {
4013
+ flex-shrink: 0;
4014
+ display: inline-flex;
4015
+ align-items: center;
4016
+ justify-content: center;
4017
+ width: 24px;
4018
+ height: 24px;
3725
4019
  color: var(--rs-muted-foreground);
3726
4020
  }
3727
4021
 
3728
- /* Row secondary: amount + time */
4022
+ .rs-list-row-leading svg {
4023
+ width: 24px;
4024
+ height: 24px;
4025
+ }
3729
4026
 
3730
- .rs-history-row-secondary {
4027
+ .rs-list-row-leading--media {
4028
+ width: 32px;
4029
+ height: 32px;
4030
+ border-radius: 6px;
4031
+ overflow: hidden;
4032
+ background: var(--rs-surface);
4033
+ }
4034
+
4035
+ .rs-list-row-leading--media img {
4036
+ width: 100%;
4037
+ height: 100%;
4038
+ object-fit: cover;
4039
+ }
4040
+
4041
+ .rs-list-row-body {
4042
+ flex: 1;
4043
+ min-width: 0;
3731
4044
  display: flex;
3732
- align-items: baseline;
4045
+ align-items: center;
3733
4046
  justify-content: space-between;
3734
4047
  gap: 8px;
3735
4048
  }
3736
4049
 
3737
- .rs-history-amount {
3738
- font-size: 12px;
3739
- color: var(--rs-muted);
3740
- white-space: nowrap;
3741
- overflow: hidden;
3742
- text-overflow: ellipsis;
4050
+ .rs-list-row-text {
4051
+ display: flex;
4052
+ flex-direction: column;
4053
+ gap: 2px;
3743
4054
  min-width: 0;
3744
4055
  }
3745
4056
 
3746
- .rs-history-token {
4057
+ .rs-list-row-title {
4058
+ font-size: 16px;
3747
4059
  font-weight: 500;
3748
4060
  color: var(--rs-foreground);
4061
+ line-height: 1.25;
4062
+ overflow: hidden;
4063
+ text-overflow: ellipsis;
4064
+ white-space: nowrap;
3749
4065
  }
3750
4066
 
3751
- .rs-history-token-target {
3752
- color: var(--rs-muted-foreground);
3753
- }
3754
-
3755
- .rs-history-no-amount {
3756
- color: var(--rs-muted-foreground);
4067
+ .rs-list-row-subtitle {
4068
+ font-size: 14px;
4069
+ font-weight: 500;
4070
+ color: var(--rs-muted);
4071
+ line-height: 1.25;
4072
+ overflow: hidden;
4073
+ text-overflow: ellipsis;
4074
+ white-space: nowrap;
3757
4075
  }
3758
4076
 
3759
- .rs-history-time {
3760
- font-size: 11px;
3761
- color: var(--rs-muted-foreground);
3762
- white-space: nowrap;
4077
+ .rs-list-row-meta {
4078
+ display: flex;
4079
+ align-items: center;
4080
+ gap: 4px;
3763
4081
  flex-shrink: 0;
4082
+ padding: 2px 6px;
4083
+ font-size: 12px;
4084
+ font-weight: 500;
4085
+ color: var(--rs-muted);
4086
+ border-radius: 20px;
3764
4087
  }
3765
4088
 
3766
- /* Tx hash links */
3767
-
3768
- .rs-history-row-links {
4089
+ .rs-list-row-meta-icons {
3769
4090
  display: flex;
3770
4091
  align-items: center;
3771
- gap: 6px;
3772
- margin-top: 1px;
4092
+ gap: -4px;
3773
4093
  }
3774
4094
 
3775
- .rs-history-tx-link {
4095
+ .rs-list-row-meta-icons > * {
4096
+ margin-left: -4px;
4097
+ width: 20px;
4098
+ height: 20px;
4099
+ border-radius: 50%;
4100
+ background: var(--rs-background);
4101
+ border: 1px solid var(--rs-background);
4102
+ overflow: hidden;
3776
4103
  display: inline-flex;
3777
4104
  align-items: center;
3778
- gap: 3px;
3779
- padding: 2px 6px;
3780
- border-radius: 4px;
3781
- background: var(--rs-surface);
3782
- color: var(--rs-muted-foreground);
3783
- text-decoration: none;
3784
- transition: color 0.12s, background-color 0.12s;
3785
- cursor: pointer;
4105
+ justify-content: center;
3786
4106
  }
3787
4107
 
3788
- .rs-history-tx-link:hover {
3789
- color: var(--rs-foreground);
3790
- background: var(--rs-surface-hover);
4108
+ .rs-list-row-meta-icons > *:first-child {
4109
+ margin-left: 0;
3791
4110
  }
3792
4111
 
3793
- .rs-history-tx-hash {
3794
- font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
3795
- font-size: 10px;
3796
- letter-spacing: 0.01em;
4112
+ .rs-list-row-meta-icons img,
4113
+ .rs-list-row-meta-icons svg {
4114
+ width: 100%;
4115
+ height: 100%;
4116
+ object-fit: cover;
4117
+ border-radius: 50%;
4118
+ display: block;
3797
4119
  }
3798
4120
 
3799
- .rs-history-ext-icon {
3800
- width: 10px;
3801
- height: 10px;
4121
+ .rs-list-row-chevron {
3802
4122
  flex-shrink: 0;
3803
- opacity: 0.5;
4123
+ width: 16px;
4124
+ height: 16px;
4125
+ color: var(--rs-muted-foreground);
4126
+ display: inline-flex;
4127
+ align-items: center;
4128
+ justify-content: center;
3804
4129
  }
3805
4130
 
3806
- .rs-history-tx-link:hover .rs-history-ext-icon {
3807
- opacity: 1;
4131
+ .rs-list-row-chevron svg {
4132
+ width: 16px;
4133
+ height: 16px;
3808
4134
  }
3809
4135
 
3810
- /* Load more */
4136
+ /* Powered-by footer in shell */
3811
4137
 
3812
- .rs-history-load-more {
4138
+ .rs-shell-footer {
3813
4139
  display: flex;
3814
4140
  align-items: center;
3815
4141
  justify-content: center;
3816
- margin: 4px 16px 12px;
3817
- padding: 8px 16px;
3818
- border: 1px solid var(--rs-border-surface);
3819
- border-radius: var(--rs-radius);
3820
- background: transparent;
3821
- color: var(--rs-muted);
3822
- font-size: 12px;
4142
+ gap: 4px;
4143
+ font-size: 11px;
3823
4144
  font-weight: 500;
3824
- font-family: inherit;
3825
- cursor: pointer;
3826
- transition: color 0.15s, background-color 0.15s, border-color 0.15s;
3827
- }
3828
-
3829
- .rs-history-load-more:hover:not(:disabled) {
3830
- color: var(--rs-foreground);
3831
- background: var(--rs-background-secondary);
3832
- border-color: var(--rs-border);
4145
+ color: var(--rs-muted);
3833
4146
  }
3834
4147
 
3835
- .rs-history-load-more:disabled {
3836
- opacity: 0.5;
3837
- cursor: not-allowed;
4148
+ /* When the shell is active the dialog content no longer needs a separate
4149
+ border or background — the shell paints everything inside the same padded
4150
+ container, matching Figma. */
4151
+ .rs-modal-content:has(.rs-shell) {
4152
+ border: 1px solid var(--rs-border);
4153
+ background-color: var(--rs-background);
3838
4154
  }