@trieb.work/payload-plugin-backup-mongodb 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/README.md +319 -0
  2. package/dist/backup-dashboard.css +1132 -0
  3. package/dist/client.d.ts +3 -0
  4. package/dist/client.js +3 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/collections/BackupSettings.d.ts +6 -0
  7. package/dist/collections/BackupSettings.js +91 -0
  8. package/dist/collections/BackupSettings.js.map +1 -0
  9. package/dist/collections/BackupTasks.d.ts +2 -0
  10. package/dist/collections/BackupTasks.js +56 -0
  11. package/dist/collections/BackupTasks.js.map +1 -0
  12. package/dist/components/BackupDashboard/BackupItemActions.client.d.ts +7 -0
  13. package/dist/components/BackupDashboard/BackupItemActions.client.js +90 -0
  14. package/dist/components/BackupDashboard/BackupItemActions.client.js.map +1 -0
  15. package/dist/components/BackupDashboard/BackupListCollapsible.client.d.ts +16 -0
  16. package/dist/components/BackupDashboard/BackupListCollapsible.client.js +597 -0
  17. package/dist/components/BackupDashboard/BackupListCollapsible.client.js.map +1 -0
  18. package/dist/components/BackupDashboard/BackupSettingsModal.client.d.ts +2 -0
  19. package/dist/components/BackupDashboard/BackupSettingsModal.client.js +939 -0
  20. package/dist/components/BackupDashboard/BackupSettingsModal.client.js.map +1 -0
  21. package/dist/components/BackupDashboard/CollectionBackupPreviewBody.client.d.ts +18 -0
  22. package/dist/components/BackupDashboard/CollectionBackupPreviewBody.client.js +267 -0
  23. package/dist/components/BackupDashboard/CollectionBackupPreviewBody.client.js.map +1 -0
  24. package/dist/components/BackupDashboard/ManualBackupDialog.client.d.ts +1 -0
  25. package/dist/components/BackupDashboard/ManualBackupDialog.client.js +276 -0
  26. package/dist/components/BackupDashboard/ManualBackupDialog.client.js.map +1 -0
  27. package/dist/components/BackupDashboard/RestoreBackupDialog.client.d.ts +6 -0
  28. package/dist/components/BackupDashboard/RestoreBackupDialog.client.js +551 -0
  29. package/dist/components/BackupDashboard/RestoreBackupDialog.client.js.map +1 -0
  30. package/dist/components/BackupDashboard/TaskActionButton.client.d.ts +29 -0
  31. package/dist/components/BackupDashboard/TaskActionButton.client.js +240 -0
  32. package/dist/components/BackupDashboard/TaskActionButton.client.js.map +1 -0
  33. package/dist/components/BackupDashboard/backupDashboardInlineCss.d.ts +1 -0
  34. package/dist/components/BackupDashboard/backupDashboardInlineCss.js +3 -0
  35. package/dist/components/BackupDashboard/backupDashboardInlineCss.js.map +1 -0
  36. package/dist/components/BackupDashboard/index.client.d.ts +8 -0
  37. package/dist/components/BackupDashboard/index.client.js +9 -0
  38. package/dist/components/BackupDashboard/index.client.js.map +1 -0
  39. package/dist/components/BackupDashboard/index.d.ts +8 -0
  40. package/dist/components/BackupDashboard/index.js +196 -0
  41. package/dist/components/BackupDashboard/index.js.map +1 -0
  42. package/dist/core/archive.d.ts +8 -0
  43. package/dist/core/archive.js +47 -0
  44. package/dist/core/archive.js.map +1 -0
  45. package/dist/core/backup.d.ts +41 -0
  46. package/dist/core/backup.js +188 -0
  47. package/dist/core/backup.js.map +1 -0
  48. package/dist/core/backupBlobIO.d.ts +54 -0
  49. package/dist/core/backupBlobIO.js +179 -0
  50. package/dist/core/backupBlobIO.js.map +1 -0
  51. package/dist/core/backupBlobTransfer.d.ts +29 -0
  52. package/dist/core/backupBlobTransfer.js +85 -0
  53. package/dist/core/backupBlobTransfer.js.map +1 -0
  54. package/dist/core/backupSettings.d.ts +35 -0
  55. package/dist/core/backupSettings.js +95 -0
  56. package/dist/core/backupSettings.js.map +1 -0
  57. package/dist/core/backupSourcePreview.d.ts +10 -0
  58. package/dist/core/backupSourcePreview.js +33 -0
  59. package/dist/core/backupSourcePreview.js.map +1 -0
  60. package/dist/core/blobTokenValidate.d.ts +14 -0
  61. package/dist/core/blobTokenValidate.js +75 -0
  62. package/dist/core/blobTokenValidate.js.map +1 -0
  63. package/dist/core/db.d.ts +24 -0
  64. package/dist/core/db.js +12 -0
  65. package/dist/core/db.js.map +1 -0
  66. package/dist/core/restore.d.ts +27 -0
  67. package/dist/core/restore.js +199 -0
  68. package/dist/core/restore.js.map +1 -0
  69. package/dist/core/restorePreview.d.ts +64 -0
  70. package/dist/core/restorePreview.js +266 -0
  71. package/dist/core/restorePreview.js.map +1 -0
  72. package/dist/core/taskProgress.d.ts +26 -0
  73. package/dist/core/taskProgress.js +73 -0
  74. package/dist/core/taskProgress.js.map +1 -0
  75. package/dist/core/vercelBackupCron.d.ts +8 -0
  76. package/dist/core/vercelBackupCron.js +38 -0
  77. package/dist/core/vercelBackupCron.js.map +1 -0
  78. package/dist/endpoints/createBackupEndpoints.d.ts +1 -0
  79. package/dist/endpoints/createBackupEndpoints.js +3 -0
  80. package/dist/endpoints/createBackupEndpoints.js.map +1 -0
  81. package/dist/endpoints/index.d.ts +3 -0
  82. package/dist/endpoints/index.js +34 -0
  83. package/dist/endpoints/index.js.map +1 -0
  84. package/dist/endpoints/paths/admin-backup-download.d.ts +8 -0
  85. package/dist/endpoints/paths/admin-backup-download.js +72 -0
  86. package/dist/endpoints/paths/admin-backup-download.js.map +1 -0
  87. package/dist/endpoints/paths/admin-delete.d.ts +3 -0
  88. package/dist/endpoints/paths/admin-delete.js +55 -0
  89. package/dist/endpoints/paths/admin-delete.js.map +1 -0
  90. package/dist/endpoints/paths/admin-manual.d.ts +3 -0
  91. package/dist/endpoints/paths/admin-manual.js +61 -0
  92. package/dist/endpoints/paths/admin-manual.js.map +1 -0
  93. package/dist/endpoints/paths/admin-preview.d.ts +6 -0
  94. package/dist/endpoints/paths/admin-preview.js +102 -0
  95. package/dist/endpoints/paths/admin-preview.js.map +1 -0
  96. package/dist/endpoints/paths/admin-restore.d.ts +3 -0
  97. package/dist/endpoints/paths/admin-restore.js +74 -0
  98. package/dist/endpoints/paths/admin-restore.js.map +1 -0
  99. package/dist/endpoints/paths/admin-seed.d.ts +3 -0
  100. package/dist/endpoints/paths/admin-seed.js +47 -0
  101. package/dist/endpoints/paths/admin-seed.js.map +1 -0
  102. package/dist/endpoints/paths/admin-settings.d.ts +3 -0
  103. package/dist/endpoints/paths/admin-settings.js +230 -0
  104. package/dist/endpoints/paths/admin-settings.js.map +1 -0
  105. package/dist/endpoints/paths/admin-task.d.ts +3 -0
  106. package/dist/endpoints/paths/admin-task.js +34 -0
  107. package/dist/endpoints/paths/admin-task.js.map +1 -0
  108. package/dist/endpoints/paths/admin-validate-blob-token.d.ts +8 -0
  109. package/dist/endpoints/paths/admin-validate-blob-token.js +26 -0
  110. package/dist/endpoints/paths/admin-validate-blob-token.js.map +1 -0
  111. package/dist/endpoints/paths/cron-list.d.ts +2 -0
  112. package/dist/endpoints/paths/cron-list.js +33 -0
  113. package/dist/endpoints/paths/cron-list.js.map +1 -0
  114. package/dist/endpoints/paths/cron-restore.d.ts +2 -0
  115. package/dist/endpoints/paths/cron-restore.js +61 -0
  116. package/dist/endpoints/paths/cron-restore.js.map +1 -0
  117. package/dist/endpoints/paths/cron-run.d.ts +3 -0
  118. package/dist/endpoints/paths/cron-run.js +45 -0
  119. package/dist/endpoints/paths/cron-run.js.map +1 -0
  120. package/dist/endpoints/shared.d.ts +13 -0
  121. package/dist/endpoints/shared.js +58 -0
  122. package/dist/endpoints/shared.js.map +1 -0
  123. package/dist/exports/client.d.ts +1 -0
  124. package/dist/exports/client.js +3 -0
  125. package/dist/exports/client.js.map +1 -0
  126. package/dist/exports/rsc.d.ts +1 -0
  127. package/dist/exports/rsc.js +3 -0
  128. package/dist/exports/rsc.js.map +1 -0
  129. package/dist/index.d.ts +18 -0
  130. package/dist/index.js +14 -0
  131. package/dist/index.js.map +1 -0
  132. package/dist/plugin.d.ts +3 -0
  133. package/dist/plugin.js +82 -0
  134. package/dist/plugin.js.map +1 -0
  135. package/dist/publicApiPaths.d.ts +19 -0
  136. package/dist/publicApiPaths.js +20 -0
  137. package/dist/publicApiPaths.js.map +1 -0
  138. package/dist/types.d.ts +21 -0
  139. package/dist/types.js +3 -0
  140. package/dist/types.js.map +1 -0
  141. package/dist/utils/backupSelection.d.ts +6 -0
  142. package/dist/utils/backupSelection.js +16 -0
  143. package/dist/utils/backupSelection.js.map +1 -0
  144. package/dist/utils/blobName.d.ts +32 -0
  145. package/dist/utils/blobName.js +99 -0
  146. package/dist/utils/blobName.js.map +1 -0
  147. package/dist/utils/dashboardRoleAccess.d.ts +23 -0
  148. package/dist/utils/dashboardRoleAccess.js +64 -0
  149. package/dist/utils/dashboardRoleAccess.js.map +1 -0
  150. package/dist/utils/dialogBackdrop.d.ts +9 -0
  151. package/dist/utils/dialogBackdrop.js +17 -0
  152. package/dist/utils/dialogBackdrop.js.map +1 -0
  153. package/dist/utils/formatBytes.d.ts +2 -0
  154. package/dist/utils/formatBytes.js +20 -0
  155. package/dist/utils/formatBytes.js.map +1 -0
  156. package/dist/utils/hostname.d.ts +2 -0
  157. package/dist/utils/hostname.js +17 -0
  158. package/dist/utils/hostname.js.map +1 -0
  159. package/dist/utils/index.d.ts +5 -0
  160. package/dist/utils/index.js +7 -0
  161. package/dist/utils/index.js.map +1 -0
  162. package/dist/utils/maskBlobToken.d.ts +11 -0
  163. package/dist/utils/maskBlobToken.js +42 -0
  164. package/dist/utils/maskBlobToken.js.map +1 -0
  165. package/package.json +140 -0
@@ -0,0 +1,1132 @@
1
+ @charset "UTF-8";
2
+ @layer payload-default {}
3
+ @layer payload-default {}
4
+ .backup-dashboard {
5
+ box-sizing: border-box;
6
+ width: 100%;
7
+ max-width: 100%;
8
+ margin-top: 60px;
9
+ margin-inline: 5px;
10
+ padding-inline: 0;
11
+ }
12
+ .backup-dashboard h2 {
13
+ margin-bottom: 20px;
14
+ }
15
+ .backup-dashboard .experimental {
16
+ color: #909090;
17
+ font-size: 12px;
18
+ }
19
+ .backup-dashboard {
20
+ margin-bottom: 30px;
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: 4px;
24
+ }
25
+ .backup-dashboard__collapsible-title {
26
+ font-size: 13px;
27
+ font-weight: 600;
28
+ line-height: 1.3;
29
+ color: var(--theme-elevation-900);
30
+ letter-spacing: -0.01em;
31
+ pointer-events: none;
32
+ }
33
+ .backup-dashboard__backup-list-toolbar {
34
+ display: flex;
35
+ justify-content: flex-start;
36
+ align-items: center;
37
+ margin: 2px 0 7px;
38
+ /* Payload `.btn` often adds vertical margin — tighten only this toolbar */
39
+ }
40
+ .backup-dashboard__backup-list-toolbar > .btn {
41
+ margin-block: 0;
42
+ }
43
+ .backup-dashboard__filter-btn {
44
+ margin-block: 0;
45
+ }
46
+ .backup-dashboard__collapsible-checkbox {
47
+ display: flex;
48
+ /* center would vertically center the box against multi-line labels — looks misaligned */
49
+ align-items: flex-start;
50
+ gap: 7px;
51
+ }
52
+ .backup-dashboard__collapsible-checkbox .checkbox-input__input {
53
+ appearance: none;
54
+ width: 14px;
55
+ height: 14px;
56
+ border: 1px solid var(--theme-elevation-300);
57
+ background: var(--theme-input-bg);
58
+ border-radius: 3px;
59
+ flex-shrink: 0;
60
+ /* Nudge into the first line’s cap-height vs. 12px / ~1.35–1.45 line box */
61
+ margin: 2px 0 0;
62
+ cursor: pointer;
63
+ position: relative;
64
+ }
65
+ .backup-dashboard__collapsible-checkbox .checkbox-input__input:checked {
66
+ border-color: var(--theme-elevation-800);
67
+ background-image: url("data:image/svg+xml,%3Csvg width='10' height='8' viewBox='0 0 10 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.58333 7.5L0 3.91667L0.7 3.21667L3.58333 6.1L9.3 0.383333L10 1.08333L3.58333 7.5Z' fill='%23333333'/%3E%3C/svg%3E");
68
+ background-repeat: no-repeat;
69
+ background-position: center;
70
+ background-size: 10px 8px;
71
+ }
72
+ .backup-dashboard__collapsible-checkbox .checkbox-input__input:hover {
73
+ border-color: var(--theme-elevation-400);
74
+ }
75
+ .backup-dashboard__collapsible-checkbox .checkbox-input__input:focus {
76
+ outline: none;
77
+ border-color: var(--theme-elevation-400);
78
+ }
79
+ .backup-dashboard__collapsible-checkbox .field-label {
80
+ font-size: 12px;
81
+ line-height: 1.45;
82
+ color: var(--theme-elevation-800);
83
+ cursor: pointer;
84
+ white-space: nowrap;
85
+ }
86
+ .backup-dashboard__filter-btn--active {
87
+ box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.35);
88
+ }
89
+ .backup-dashboard__list-empty {
90
+ margin: 0 0 15px;
91
+ font-size: 13px;
92
+ color: var(--theme-elevation-600);
93
+ }
94
+ .backup-dashboard__setup-hint {
95
+ margin: 0 0 18px;
96
+ padding: 13px 18px;
97
+ font-size: 13px;
98
+ line-height: 1.45;
99
+ color: var(--theme-elevation-800);
100
+ background: var(--theme-warning-50, rgba(255, 193, 7, 0.12));
101
+ border: 1px solid var(--theme-warning-200, rgba(255, 152, 0, 0.35));
102
+ border-radius: 4px;
103
+ }
104
+ .backup-dashboard__setup-hint-code {
105
+ font-family: var(--font-mono, ui-monospace, monospace);
106
+ font-size: 12px;
107
+ font-weight: 500;
108
+ }
109
+ .backup-dashboard__toolbar {
110
+ margin: 0 0 15px;
111
+ padding: 2px 24px;
112
+ border: 1px solid var(--theme-elevation-100);
113
+ border-radius: 4px;
114
+ background: var(--theme-elevation-25, #fafafa);
115
+ display: flex;
116
+ justify-content: space-between;
117
+ align-items: center;
118
+ gap: 14px;
119
+ flex-wrap: wrap;
120
+ }
121
+ .backup-dashboard__toolbar-meta {
122
+ display: flex;
123
+ flex-direction: row;
124
+ flex-wrap: wrap;
125
+ gap: 7px;
126
+ align-items: center;
127
+ }
128
+ .backup-dashboard__toolbar-pill {
129
+ display: inline-flex;
130
+ align-items: center;
131
+ gap: 6px;
132
+ font-size: 12px;
133
+ padding: 4px 9px;
134
+ border-radius: 999px;
135
+ border: 1px solid var(--theme-elevation-150);
136
+ background: var(--theme-elevation-0);
137
+ color: var(--theme-elevation-800);
138
+ }
139
+ .backup-dashboard__toolbar-key {
140
+ font-size: 10px;
141
+ text-transform: uppercase;
142
+ letter-spacing: 0.04em;
143
+ color: var(--theme-elevation-500);
144
+ font-weight: 600;
145
+ }
146
+ .backup-dashboard .backup-item {
147
+ margin-bottom: 20px;
148
+ display: flex;
149
+ flex-direction: row;
150
+ gap: 15px;
151
+ justify-content: space-between;
152
+ align-items: flex-start;
153
+ background-color: var(--theme-elevation-50, #f5f5f5);
154
+ padding: 13px 20px;
155
+ border-radius: 5px;
156
+ border: 1px solid var(--theme-elevation-100);
157
+ }
158
+ @media (max-width: 768px) {
159
+ .backup-dashboard .backup-item {
160
+ flex-direction: column;
161
+ align-items: stretch;
162
+ }
163
+ }
164
+ .backup-dashboard .backup-item__main {
165
+ flex: 1;
166
+ min-width: 0;
167
+ display: flex;
168
+ flex-direction: column;
169
+ gap: 9px;
170
+ }
171
+ .backup-dashboard .backup-item__primary {
172
+ display: flex;
173
+ flex-direction: row;
174
+ flex-wrap: wrap;
175
+ align-items: baseline;
176
+ gap: 8px;
177
+ }
178
+ .backup-dashboard .backup-item__time {
179
+ font-size: 14px;
180
+ font-weight: 600;
181
+ color: var(--theme-elevation-900);
182
+ letter-spacing: -0.01em;
183
+ }
184
+ .backup-dashboard .backup-item__meta {
185
+ display: flex;
186
+ flex-direction: row;
187
+ flex-wrap: wrap;
188
+ align-items: center;
189
+ gap: 6px;
190
+ }
191
+ .backup-dashboard .backup-item__pill {
192
+ display: inline-flex;
193
+ flex-direction: row;
194
+ align-items: center;
195
+ gap: 5px;
196
+ font-size: 12px;
197
+ line-height: 1.25;
198
+ padding: 3px 9px;
199
+ border-radius: 999px;
200
+ background: var(--theme-elevation-100, #ebebeb);
201
+ color: var(--theme-elevation-800);
202
+ border: 1px solid transparent;
203
+ max-width: 100%;
204
+ }
205
+ .backup-dashboard .backup-item__pill-key {
206
+ font-weight: 500;
207
+ font-size: 10px;
208
+ text-transform: uppercase;
209
+ letter-spacing: 0.04em;
210
+ color: var(--theme-elevation-500);
211
+ }
212
+ .backup-dashboard .backup-item__pill--kind {
213
+ font-weight: 600;
214
+ font-size: 11px;
215
+ text-transform: uppercase;
216
+ letter-spacing: 0.03em;
217
+ }
218
+ .backup-dashboard .backup-item__pill--cron {
219
+ background: rgba(46, 125, 50, 0.12);
220
+ color: var(--theme-success-800, #1b5e20);
221
+ border-color: rgba(46, 125, 50, 0.22);
222
+ }
223
+ .backup-dashboard .backup-item__pill--manual {
224
+ background: rgba(25, 118, 210, 0.1);
225
+ color: var(--theme-elevation-900);
226
+ border-color: rgba(25, 118, 210, 0.2);
227
+ }
228
+ .backup-dashboard .backup-item__pill--media {
229
+ font-weight: 600;
230
+ font-size: 11px;
231
+ background: var(--theme-elevation-0, #fff);
232
+ border-color: var(--theme-elevation-150);
233
+ }
234
+ .backup-dashboard .backup-item__pill--collections {
235
+ background: var(--theme-elevation-0, #fff);
236
+ border-color: var(--theme-elevation-150);
237
+ font-variant-numeric: tabular-nums;
238
+ }
239
+ .backup-dashboard .backup-item__pill--label {
240
+ background: rgba(124, 58, 237, 0.1);
241
+ color: var(--theme-elevation-900);
242
+ border-color: rgba(124, 58, 237, 0.25);
243
+ font-weight: 600;
244
+ max-width: 24ch;
245
+ overflow: hidden;
246
+ text-overflow: ellipsis;
247
+ white-space: nowrap;
248
+ }
249
+ .backup-dashboard .backup-item__pill--label .backup-item__pill-key {
250
+ color: rgba(124, 58, 237, 0.9);
251
+ }
252
+ .backup-dashboard .backup-item__pill--size {
253
+ background: var(--theme-elevation-0, #fff);
254
+ border-color: var(--theme-elevation-150);
255
+ }
256
+ .backup-dashboard .backup-item__pill--warn {
257
+ background: var(--theme-warning-50, rgba(255, 193, 7, 0.12));
258
+ border-color: var(--theme-warning-200, rgba(255, 152, 0, 0.35));
259
+ color: var(--theme-warning-800, #8a5a00);
260
+ }
261
+ .backup-dashboard .backup-item__pill--warn .backup-item__pill-key {
262
+ color: var(--theme-warning-700, #a26a00);
263
+ font-weight: 700;
264
+ }
265
+ .backup-dashboard .backup-item__pill--danger {
266
+ background: var(--theme-error-50, rgba(220, 38, 38, 0.1));
267
+ border-color: var(--theme-error-200, rgba(220, 38, 38, 0.35));
268
+ color: var(--theme-error-800, #991b1b);
269
+ font-weight: 600;
270
+ }
271
+ .backup-dashboard .backup-item__pill--neutral {
272
+ background: var(--theme-elevation-50, #f4f4f4);
273
+ border-color: var(--theme-elevation-150);
274
+ color: var(--theme-elevation-700);
275
+ }
276
+ .backup-dashboard .backup-item__size-value {
277
+ font-weight: 600;
278
+ font-variant-numeric: tabular-nums;
279
+ color: var(--theme-elevation-900);
280
+ }
281
+ .backup-dashboard .make-backup-container {
282
+ padding-top: 7px;
283
+ }
284
+ .backup-dashboard .make-backup-actions {
285
+ display: flex;
286
+ flex-direction: row;
287
+ flex-wrap: wrap;
288
+ align-items: center;
289
+ gap: 10px;
290
+ }
291
+ .backup-dashboard {
292
+ /* Filter modal: checkbox row uses shared checkbox styles; allow label wrap in dialog */
293
+ }
294
+ .backup-dashboard .backup-list-filters__scope-row .field-label {
295
+ white-space: normal;
296
+ line-height: 1.35;
297
+ }
298
+
299
+ .backup-item-actions {
300
+ flex-shrink: 0;
301
+ }
302
+ .backup-item-actions__buttons {
303
+ display: flex;
304
+ flex-direction: row;
305
+ gap: 8px;
306
+ align-items: center;
307
+ }
308
+
309
+ .backup-confirm-dialog {
310
+ padding: 0;
311
+ border: 1px solid var(--theme-elevation-200);
312
+ border-radius: 6px;
313
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
314
+ min-width: 320px;
315
+ max-width: 440px;
316
+ background: var(--theme-elevation-0);
317
+ }
318
+ .backup-confirm-dialog--restore, .backup-confirm-dialog--manual, .backup-confirm-dialog--settings, .backup-confirm-dialog--backup-list-filters {
319
+ min-width: 360px;
320
+ max-width: min(560px, 96vw);
321
+ }
322
+ .backup-confirm-dialog--settings .backup-confirm-dialog__body.restore-preview {
323
+ /* ~120px taller than default; cap keeps full dialog under the viewport */
324
+ max-height: min(100dvh - 10rem, 660px);
325
+ }
326
+ .backup-confirm-dialog--settings .backup-confirm-dialog__subtitle--with-help {
327
+ display: flex;
328
+ flex-wrap: wrap;
329
+ align-items: flex-start;
330
+ gap: 7px;
331
+ padding-bottom: 7px;
332
+ }
333
+ .backup-confirm-dialog--settings .backup-confirm-dialog__subtitle-text {
334
+ flex: 1;
335
+ min-width: 0;
336
+ }
337
+ .backup-confirm-dialog--settings .restore-preview__sticky-heading--with-help {
338
+ display: flex;
339
+ align-items: center;
340
+ justify-content: space-between;
341
+ gap: 7px;
342
+ margin-top: 4px;
343
+ margin-bottom: 6px;
344
+ padding-top: 7px;
345
+ padding-bottom: 5px;
346
+ }
347
+ .backup-confirm-dialog--settings .restore-preview__sticky-heading--with-help > span:first-child {
348
+ flex: 1;
349
+ min-width: 0;
350
+ }
351
+ .backup-confirm-dialog--settings .restore-preview__intro {
352
+ margin-bottom: 7px;
353
+ }
354
+ .backup-confirm-dialog--settings .restore-preview__settings-fields {
355
+ margin-bottom: 10px;
356
+ }
357
+ .backup-confirm-dialog--settings .restore-preview__settings-block {
358
+ margin-bottom: 11px;
359
+ }
360
+ .backup-confirm-dialog--danger-confirm {
361
+ border-color: var(--theme-error-500, #c0392b);
362
+ box-shadow: 0 8px 28px rgba(192, 57, 43, 0.18);
363
+ }
364
+ .backup-confirm-dialog--danger-confirm .backup-confirm-dialog__actions .btn:first-of-type {
365
+ background-color: var(--theme-error-600, #c0392b);
366
+ border-color: var(--theme-error-600, #c0392b);
367
+ color: #fff;
368
+ }
369
+ .backup-confirm-dialog--danger-confirm .backup-confirm-dialog__actions .btn:first-of-type:hover:not([disabled]) {
370
+ background-color: var(--theme-error-700, #a93226);
371
+ border-color: var(--theme-error-700, #a93226);
372
+ }
373
+ .backup-confirm-dialog::backdrop {
374
+ background: rgba(0, 0, 0, 0.35);
375
+ }
376
+ .backup-confirm-dialog__title {
377
+ margin: 0;
378
+ padding: 16px 20px 6px;
379
+ font-size: 15px;
380
+ font-weight: 600;
381
+ color: var(--theme-elevation-1000);
382
+ }
383
+ .backup-confirm-dialog__subtitle {
384
+ margin: 0;
385
+ padding: 0 20px 10px;
386
+ font-size: 12px;
387
+ line-height: 1.45;
388
+ color: var(--theme-elevation-600);
389
+ }
390
+ .backup-confirm-dialog__subtitle code {
391
+ font-size: 11px;
392
+ }
393
+ .backup-confirm-dialog__body {
394
+ margin: 0;
395
+ padding: 0 20px 16px;
396
+ font-size: 13px;
397
+ color: var(--theme-elevation-600);
398
+ }
399
+ .backup-confirm-dialog__body.restore-preview {
400
+ max-height: min(70vh, 520px);
401
+ overflow-y: auto;
402
+ }
403
+ .backup-confirm-dialog__actions {
404
+ display: flex;
405
+ flex-direction: row;
406
+ align-items: center;
407
+ gap: 8px;
408
+ padding: 12px 20px 16px;
409
+ border-top: 1px solid var(--theme-elevation-100);
410
+ }
411
+
412
+ .backup-list-filters__body {
413
+ display: flex;
414
+ flex-direction: column;
415
+ gap: 15px;
416
+ }
417
+ .backup-list-filters__fieldset {
418
+ margin: 0;
419
+ padding: 0;
420
+ border: 0;
421
+ min-width: 0;
422
+ }
423
+ .backup-list-filters__legend {
424
+ font-size: 11px;
425
+ font-weight: 600;
426
+ text-transform: uppercase;
427
+ letter-spacing: 0.04em;
428
+ color: var(--theme-elevation-600);
429
+ margin: 0 0 7px;
430
+ padding: 0;
431
+ }
432
+ .backup-list-filters__row {
433
+ display: grid;
434
+ grid-template-columns: 56px 1fr;
435
+ gap: 8px;
436
+ align-items: center;
437
+ margin-bottom: 7px;
438
+ }
439
+ .backup-list-filters__row:last-child {
440
+ margin-bottom: 0;
441
+ }
442
+ .backup-list-filters__label {
443
+ font-size: 12px;
444
+ color: var(--theme-elevation-700);
445
+ }
446
+ .backup-list-filters__date {
447
+ font-size: 13px;
448
+ padding: 6px 8px;
449
+ border-radius: 3px;
450
+ border: 1px solid var(--theme-elevation-200);
451
+ background: var(--theme-input-bg);
452
+ color: var(--theme-elevation-900);
453
+ }
454
+ .backup-list-filters__text {
455
+ font-size: 13px;
456
+ padding: 6px 8px;
457
+ border-radius: 3px;
458
+ border: 1px solid var(--theme-elevation-200);
459
+ background: var(--theme-input-bg);
460
+ color: var(--theme-elevation-900);
461
+ min-width: 0;
462
+ width: 100%;
463
+ }
464
+ .backup-list-filters__text::placeholder {
465
+ color: var(--theme-elevation-400);
466
+ }
467
+ .backup-list-filters__row--label {
468
+ grid-template-columns: 56px 1fr;
469
+ }
470
+ .backup-list-filters {
471
+ /* Payload-style radios (match checkbox-input sizing / borders, circular + dot) */
472
+ }
473
+ .backup-list-filters__radio-row {
474
+ display: flex;
475
+ align-items: center;
476
+ gap: 7px;
477
+ margin-bottom: 5.6px;
478
+ cursor: pointer;
479
+ }
480
+ .backup-list-filters__radio-row:last-child {
481
+ margin-bottom: 0;
482
+ }
483
+ .backup-list-filters__radio-row .radio-input__input {
484
+ appearance: none;
485
+ width: 14px;
486
+ height: 14px;
487
+ border: 1px solid var(--theme-elevation-300);
488
+ background: var(--theme-input-bg);
489
+ border-radius: 50%;
490
+ margin: 0;
491
+ cursor: pointer;
492
+ flex-shrink: 0;
493
+ position: relative;
494
+ }
495
+ .backup-list-filters__radio-row .radio-input__input:checked {
496
+ border-color: var(--theme-elevation-800);
497
+ background-color: var(--theme-input-bg);
498
+ background-image: radial-gradient(circle at center, var(--theme-elevation-800) 0, var(--theme-elevation-800) 32%, transparent 33%);
499
+ }
500
+ .backup-list-filters__radio-row .radio-input__input:hover {
501
+ border-color: var(--theme-elevation-400);
502
+ }
503
+ .backup-list-filters__radio-row .radio-input__input:focus {
504
+ outline: none;
505
+ border-color: var(--theme-elevation-400);
506
+ }
507
+ .backup-list-filters__radio-row .radio-input__input:focus-visible {
508
+ outline: 2px solid var(--theme-elevation-400);
509
+ outline-offset: 2px;
510
+ }
511
+ .backup-list-filters__radio-row .field-label {
512
+ font-size: 12px;
513
+ color: var(--theme-elevation-800);
514
+ cursor: pointer;
515
+ line-height: 1.35;
516
+ }
517
+ .backup-list-filters__scope-row {
518
+ margin-bottom: 8px;
519
+ }
520
+ .backup-list-filters__scope-row:last-child {
521
+ margin-bottom: 0;
522
+ }
523
+ .backup-list-filters__hint {
524
+ font-weight: 400;
525
+ color: var(--theme-elevation-500);
526
+ }
527
+
528
+ .manual-backup-label {
529
+ display: flex;
530
+ flex-direction: column;
531
+ gap: 4px;
532
+ padding: 0 20px;
533
+ margin: 5px 0 11px;
534
+ }
535
+ .manual-backup-label__label {
536
+ font-size: 12px;
537
+ font-weight: 600;
538
+ color: var(--theme-elevation-800);
539
+ text-transform: uppercase;
540
+ letter-spacing: 0.04em;
541
+ }
542
+ .manual-backup-label__hint {
543
+ font-weight: 400;
544
+ text-transform: none;
545
+ letter-spacing: 0;
546
+ color: var(--theme-elevation-500);
547
+ }
548
+ .manual-backup-label__input {
549
+ font-size: 13px;
550
+ padding: 7px 10px;
551
+ border-radius: 3px;
552
+ border: 1px solid var(--theme-elevation-200);
553
+ background: var(--theme-input-bg);
554
+ color: var(--theme-elevation-900);
555
+ }
556
+ .manual-backup-label__input::placeholder {
557
+ color: var(--theme-elevation-400);
558
+ }
559
+ .manual-backup-label__input:focus {
560
+ outline: none;
561
+ border-color: var(--theme-elevation-400);
562
+ }
563
+ .manual-backup-label__input:focus-visible {
564
+ outline: 2px solid var(--theme-elevation-400);
565
+ outline-offset: 1px;
566
+ }
567
+ .manual-backup-label__help {
568
+ margin: 0;
569
+ font-size: 11px;
570
+ line-height: 1.35;
571
+ color: var(--theme-elevation-500);
572
+ }
573
+
574
+ .backup-task-action {
575
+ display: flex;
576
+ flex-direction: row;
577
+ align-items: center;
578
+ gap: 8px;
579
+ flex-wrap: wrap;
580
+ }
581
+ .backup-task-action .btn[disabled] {
582
+ opacity: 0.7;
583
+ cursor: wait;
584
+ }
585
+ .backup-task-action .btn--style-error {
586
+ background-color: var(--theme-error-600, #c0392b);
587
+ color: #fff;
588
+ border-color: var(--theme-error-600, #c0392b);
589
+ }
590
+ .backup-task-action .btn--style-error:hover:not([disabled]) {
591
+ background-color: var(--theme-error-700, #a93226);
592
+ border-color: var(--theme-error-700, #a93226);
593
+ }
594
+
595
+ .backup-task-status-slot {
596
+ display: flex;
597
+ flex-direction: row;
598
+ align-items: center;
599
+ gap: 6px;
600
+ }
601
+ .backup-task-status-slot .backup-task-status__message {
602
+ font-size: 12px;
603
+ line-height: 1.4;
604
+ color: var(--theme-elevation-700);
605
+ }
606
+
607
+ .restore-preview__blob-token-row {
608
+ display: flex;
609
+ gap: 6px;
610
+ align-items: center;
611
+ width: 100%;
612
+ align-self: stretch;
613
+ }
614
+ .restore-preview__blob-token-row .restore-preview__settings-input {
615
+ flex: 1 1 auto;
616
+ min-width: 0;
617
+ }
618
+ .restore-preview__blob-token-row .backup-item__pill {
619
+ flex: 0 0 auto;
620
+ white-space: nowrap;
621
+ }
622
+ .restore-preview__blob-token-pill-slot {
623
+ flex: 0 0 86px;
624
+ display: flex;
625
+ justify-content: flex-end;
626
+ align-items: center;
627
+ min-height: 18px;
628
+ }
629
+ .restore-preview__blob-token-error {
630
+ margin: 4px 0 0;
631
+ font-size: 12px;
632
+ line-height: 1.35;
633
+ color: var(--theme-error-700, #b91c1c);
634
+ }
635
+ .restore-preview__loading-block {
636
+ padding: 10px 11px;
637
+ border-radius: 3px;
638
+ background: var(--theme-elevation-25, #fafafa);
639
+ border: 1px solid var(--theme-elevation-100);
640
+ margin-bottom: 12px;
641
+ }
642
+ .restore-preview__loading-block--section {
643
+ min-height: 132px;
644
+ display: flex;
645
+ flex-direction: column;
646
+ justify-content: center;
647
+ }
648
+ .restore-preview__loading-line {
649
+ height: 10px;
650
+ border-radius: 999px;
651
+ background: linear-gradient(90deg, var(--theme-elevation-100) 0%, var(--theme-elevation-150) 40%, var(--theme-elevation-100) 100%);
652
+ background-size: 240px 100%;
653
+ animation: backup-shimmer 1.2s linear infinite;
654
+ margin-bottom: 6px;
655
+ }
656
+ .restore-preview__loading-line--short {
657
+ width: 65%;
658
+ }
659
+ .restore-preview__sticky-heading {
660
+ position: sticky;
661
+ /* Must stay >= 0: negative top clips under overflow-y:auto on the dialog body */
662
+ top: 0;
663
+ z-index: 2;
664
+ margin: 7px 0 9px;
665
+ padding: 10px 0 7px;
666
+ font-size: 12px;
667
+ font-weight: 700;
668
+ letter-spacing: 0.02em;
669
+ text-transform: uppercase;
670
+ color: var(--theme-elevation-700);
671
+ background: var(--theme-elevation-0);
672
+ border-bottom: 1px solid var(--theme-elevation-100);
673
+ }
674
+ .restore-preview__sticky-heading-hint {
675
+ margin-left: 4px;
676
+ font-size: 11px;
677
+ font-weight: 500;
678
+ letter-spacing: 0.01em;
679
+ text-transform: none;
680
+ color: var(--theme-elevation-500);
681
+ }
682
+ .restore-preview__status {
683
+ margin: 0 0 10px;
684
+ color: var(--theme-elevation-700);
685
+ }
686
+ .restore-preview__status--footer {
687
+ margin: 10px 0 0;
688
+ }
689
+ .restore-preview__settings-block {
690
+ margin: 0 0 15px;
691
+ padding: 9px 10px;
692
+ border-radius: 3px;
693
+ background: var(--theme-elevation-50, #fafafa);
694
+ border: 1px solid var(--theme-elevation-100);
695
+ font-size: 12px;
696
+ line-height: 1.45;
697
+ color: var(--theme-elevation-800);
698
+ }
699
+ .restore-preview__settings-block code {
700
+ font-size: 11px;
701
+ }
702
+ .restore-preview__settings-row {
703
+ margin: 0 0 5px;
704
+ word-break: break-all;
705
+ }
706
+ .restore-preview__settings-row:last-child {
707
+ margin-bottom: 0;
708
+ }
709
+ .restore-preview__settings-k {
710
+ font-weight: 600;
711
+ color: var(--theme-elevation-700);
712
+ margin-right: 4px;
713
+ }
714
+ .restore-preview__settings-human {
715
+ margin: 7px 0 0;
716
+ font-size: 13px;
717
+ color: var(--theme-elevation-900);
718
+ }
719
+ .restore-preview__settings-human--muted {
720
+ color: var(--theme-elevation-600);
721
+ font-size: 12px;
722
+ }
723
+ .restore-preview__settings-hint {
724
+ margin: 0 0 5px;
725
+ font-size: 11px;
726
+ line-height: 1.45;
727
+ color: var(--theme-elevation-600);
728
+ }
729
+ .restore-preview__settings-snippet {
730
+ margin: 3px 0 9px;
731
+ padding: 9px 11px;
732
+ border-radius: 3px;
733
+ background: var(--theme-elevation-900);
734
+ color: var(--theme-elevation-0);
735
+ font-size: 11px;
736
+ line-height: 1.45;
737
+ overflow-x: auto;
738
+ white-space: pre;
739
+ }
740
+ .restore-preview__settings-fields {
741
+ display: flex;
742
+ flex-direction: column;
743
+ align-items: flex-start;
744
+ gap: 7px;
745
+ margin: 0 0 17px;
746
+ }
747
+ .restore-preview__settings-label {
748
+ font-size: 13px;
749
+ font-weight: 600;
750
+ color: var(--theme-elevation-900);
751
+ }
752
+ .restore-preview__settings-input {
753
+ width: 5.5rem;
754
+ padding: 7px 9px;
755
+ border: 1px solid var(--theme-elevation-200);
756
+ border-radius: 3px;
757
+ font-size: 14px;
758
+ background: var(--theme-input-bg);
759
+ color: var(--theme-elevation-900);
760
+ }
761
+ .restore-preview__settings-input--wide {
762
+ width: 100%;
763
+ min-width: 0;
764
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
765
+ font-size: 12px;
766
+ letter-spacing: 0.01em;
767
+ }
768
+ .restore-preview__settings-note {
769
+ margin: 0;
770
+ font-size: 12px;
771
+ line-height: 1.45;
772
+ color: var(--theme-elevation-600);
773
+ max-width: 48ch;
774
+ }
775
+ .restore-preview__settings-note code {
776
+ font-size: 11px;
777
+ }
778
+ .restore-preview__settings-note--warn {
779
+ color: var(--theme-warning-700, #a26a00);
780
+ }
781
+ .restore-preview__blob-transfer-row {
782
+ margin-top: 4px;
783
+ margin-bottom: 0;
784
+ max-width: min(48ch, 100%);
785
+ }
786
+ .restore-preview__blob-transfer-row .field-label {
787
+ white-space: normal;
788
+ line-height: 1.45;
789
+ }
790
+ .restore-preview__blob-transfer-row--with-help-tip .field-label {
791
+ flex: 1;
792
+ min-width: 0;
793
+ }
794
+ .restore-preview__blob-transfer-row--with-help-tip .backup-help-icon {
795
+ margin-top: 2px;
796
+ }
797
+ .restore-preview__transfer-panel {
798
+ width: 100%;
799
+ margin-top: 5px;
800
+ padding: 9px 10px;
801
+ border-radius: 3px;
802
+ background: var(--theme-elevation-50, #fafafa);
803
+ border: 1px solid var(--theme-elevation-100);
804
+ }
805
+ .restore-preview__transfer-bar-track {
806
+ height: 8px;
807
+ border-radius: 999px;
808
+ background: var(--theme-elevation-100);
809
+ overflow: hidden;
810
+ }
811
+ .restore-preview__transfer-bar-fill {
812
+ height: 100%;
813
+ min-width: 0;
814
+ border-radius: 999px;
815
+ background: var(--theme-success-600, #2e7d32);
816
+ transition: width 0.22s ease-out;
817
+ }
818
+ .restore-preview__transfer-meta {
819
+ margin: 8px 0 0;
820
+ font-size: 12px;
821
+ line-height: 1.45;
822
+ color: var(--theme-elevation-800);
823
+ word-break: break-all;
824
+ }
825
+ .restore-preview__transfer-path {
826
+ font-size: 11px;
827
+ color: var(--theme-elevation-600);
828
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
829
+ }
830
+ .restore-preview__intro, .restore-preview__note, .restore-preview__warn {
831
+ margin: 0 0 12px;
832
+ line-height: 1.45;
833
+ }
834
+ .restore-preview__media-block {
835
+ display: flex;
836
+ flex-direction: row;
837
+ align-items: flex-start;
838
+ gap: 9px;
839
+ margin: 0 0 13px;
840
+ padding: 9px 10px;
841
+ border-radius: 3px;
842
+ background: var(--theme-elevation-50, #fafafa);
843
+ border: 1px solid var(--theme-elevation-100);
844
+ cursor: pointer;
845
+ }
846
+ .restore-preview__media-label {
847
+ font-size: 13px;
848
+ font-weight: 500;
849
+ color: var(--theme-elevation-800);
850
+ line-height: 1.4;
851
+ }
852
+ .restore-preview__media-block--nested {
853
+ margin-top: 7px;
854
+ cursor: pointer;
855
+ }
856
+ .restore-preview__all-block {
857
+ display: flex;
858
+ flex-direction: column;
859
+ gap: 8px;
860
+ margin: 0 0 13px;
861
+ padding: 11px 12px 10px;
862
+ border-radius: 3px;
863
+ background: var(--theme-elevation-50, #fafafa);
864
+ border: 1px solid var(--theme-elevation-100);
865
+ }
866
+ .restore-preview__all-block-head {
867
+ display: flex;
868
+ flex-direction: row;
869
+ align-items: center;
870
+ gap: 9px;
871
+ cursor: pointer;
872
+ margin: 0;
873
+ }
874
+ .restore-preview__all-list {
875
+ list-style: none;
876
+ margin: 0;
877
+ padding: 7px 0 0;
878
+ display: flex;
879
+ flex-direction: column;
880
+ gap: 2px;
881
+ border-top: 1px dashed var(--theme-elevation-150, #e5e5e5);
882
+ }
883
+ .restore-preview__all-item {
884
+ display: flex;
885
+ flex-direction: row;
886
+ flex-wrap: wrap;
887
+ align-items: baseline;
888
+ justify-content: space-between;
889
+ gap: 7px 12px;
890
+ padding: 3px 2px 3px 32px;
891
+ font-size: 12px;
892
+ line-height: 1.4;
893
+ color: var(--theme-elevation-800);
894
+ }
895
+ .restore-preview__all-name {
896
+ flex: 1 1 12rem;
897
+ min-width: 0;
898
+ font-weight: 500;
899
+ color: var(--theme-elevation-900);
900
+ line-height: 1.45;
901
+ }
902
+ .restore-preview__all-count {
903
+ flex-shrink: 0;
904
+ font-variant-numeric: tabular-nums;
905
+ color: var(--theme-elevation-600);
906
+ }
907
+ .restore-preview__all-count-sub {
908
+ color: var(--theme-elevation-500);
909
+ }
910
+ .restore-preview__note--media {
911
+ margin-top: 0;
912
+ }
913
+ .restore-preview__warn {
914
+ padding: 10px 12px;
915
+ border-radius: 4px;
916
+ background: var(--theme-warning-50, rgba(255, 193, 7, 0.12));
917
+ border: 1px solid var(--theme-warning-200, rgba(255, 152, 0, 0.35));
918
+ color: var(--theme-elevation-800);
919
+ }
920
+ .restore-preview__warn--auth {
921
+ background: var(--theme-error-50, rgba(192, 57, 43, 0.08));
922
+ border-color: var(--theme-error-200, rgba(192, 57, 43, 0.25));
923
+ }
924
+ .restore-preview__note code {
925
+ font-size: 12px;
926
+ }
927
+ .restore-preview__error {
928
+ margin-bottom: 12px;
929
+ }
930
+ .restore-preview__error p {
931
+ margin: 0 0 8px;
932
+ }
933
+ .restore-preview__error--inline {
934
+ margin: 7px 20px 10px;
935
+ color: var(--theme-error-700, #c0392b);
936
+ font-size: 13px;
937
+ }
938
+ .restore-preview__error-hint {
939
+ font-size: 12px;
940
+ color: var(--theme-elevation-600);
941
+ }
942
+ .restore-preview__empty {
943
+ margin: 0 0 10px;
944
+ font-size: 13px;
945
+ color: var(--theme-elevation-600);
946
+ }
947
+ .restore-preview__list {
948
+ list-style: none;
949
+ margin: 0;
950
+ padding: 0;
951
+ display: flex;
952
+ flex-direction: column;
953
+ gap: 10px;
954
+ }
955
+ .restore-preview__group {
956
+ padding: 9px 10px;
957
+ border-radius: 3px;
958
+ background: var(--theme-elevation-50, #fafafa);
959
+ border: 1px solid var(--theme-elevation-100);
960
+ }
961
+ .restore-preview__group--empty {
962
+ background: var(--theme-elevation-50, #fafafa);
963
+ border-color: var(--theme-elevation-100);
964
+ }
965
+ .restore-preview__group--empty .restore-preview__group-title {
966
+ color: var(--theme-elevation-500);
967
+ }
968
+ .restore-preview__group--empty .restore-preview__subline--empty {
969
+ color: var(--theme-elevation-500);
970
+ font-style: italic;
971
+ }
972
+ .restore-preview__group--disabled {
973
+ opacity: 0.55;
974
+ filter: saturate(0.7);
975
+ }
976
+ .restore-preview__group-head {
977
+ display: flex;
978
+ flex-direction: row;
979
+ flex-wrap: wrap;
980
+ align-items: center;
981
+ gap: 7px;
982
+ width: 100%;
983
+ margin: 0 0 2px;
984
+ }
985
+ .restore-preview__group-label {
986
+ display: flex;
987
+ flex-direction: row;
988
+ align-items: flex-start;
989
+ gap: 9px;
990
+ cursor: pointer;
991
+ margin: 0;
992
+ flex: 1;
993
+ min-width: 0;
994
+ }
995
+ .restore-preview__group-check {
996
+ appearance: none;
997
+ width: 14px;
998
+ height: 14px;
999
+ flex-shrink: 0;
1000
+ margin-top: 3px;
1001
+ border: 1px solid var(--theme-elevation-300);
1002
+ background: var(--theme-input-bg);
1003
+ border-radius: 3px;
1004
+ cursor: pointer;
1005
+ position: relative;
1006
+ }
1007
+ .restore-preview__group-check:checked {
1008
+ border-color: var(--theme-elevation-800);
1009
+ background-image: url("data:image/svg+xml,%3Csvg width='10' height='8' viewBox='0 0 10 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.58333 7.5L0 3.91667L0.7 3.21667L3.58333 6.1L9.3 0.383333L10 1.08333L3.58333 7.5Z' fill='%23333333'/%3E%3C/svg%3E");
1010
+ background-repeat: no-repeat;
1011
+ background-position: center;
1012
+ background-size: 10px 8px;
1013
+ }
1014
+ .restore-preview__group-check:hover {
1015
+ border-color: var(--theme-elevation-400);
1016
+ }
1017
+ .restore-preview__group-check:focus {
1018
+ outline: none;
1019
+ border-color: var(--theme-elevation-400);
1020
+ }
1021
+ .restore-preview__group-title {
1022
+ font-size: 14px;
1023
+ font-weight: 600;
1024
+ color: var(--theme-elevation-900);
1025
+ line-height: 1.35;
1026
+ }
1027
+ .restore-preview__sublines {
1028
+ margin: 6px 0 0 32px;
1029
+ display: flex;
1030
+ flex-direction: column;
1031
+ gap: 3px;
1032
+ }
1033
+ .restore-preview__subline {
1034
+ font-size: 12px;
1035
+ color: var(--theme-elevation-600);
1036
+ line-height: 1.4;
1037
+ }
1038
+ .restore-preview__pills {
1039
+ display: flex;
1040
+ flex-wrap: wrap;
1041
+ gap: 5px;
1042
+ margin-top: 4px;
1043
+ }
1044
+ .restore-preview__pill {
1045
+ font-size: 11px;
1046
+ line-height: 1.2;
1047
+ padding: 2px 6px;
1048
+ border-radius: 999px;
1049
+ background: var(--theme-elevation-150, #ececec);
1050
+ color: var(--theme-elevation-700);
1051
+ flex-shrink: 0;
1052
+ }
1053
+ .restore-preview__pill--signin {
1054
+ background: var(--theme-warning-50, rgba(255, 193, 7, 0.28));
1055
+ border: 1px solid var(--theme-warning-400, rgba(255, 152, 0, 0.55));
1056
+ color: var(--theme-elevation-900);
1057
+ font-weight: 500;
1058
+ }
1059
+
1060
+ @keyframes backup-shimmer {
1061
+ 0% {
1062
+ background-position: -220px 0;
1063
+ }
1064
+ 100% {
1065
+ background-position: 220px 0;
1066
+ }
1067
+ }
1068
+ button.backup-help-icon {
1069
+ margin: 0;
1070
+ padding: 0;
1071
+ border: none;
1072
+ font: inherit;
1073
+ appearance: none;
1074
+ }
1075
+
1076
+ .backup-help-icon {
1077
+ position: relative;
1078
+ display: inline-flex;
1079
+ align-items: center;
1080
+ justify-content: center;
1081
+ width: 16px;
1082
+ height: 16px;
1083
+ border-radius: 50%;
1084
+ background-color: var(--theme-elevation-200);
1085
+ color: var(--theme-elevation-600);
1086
+ font-size: 11px;
1087
+ font-style: normal;
1088
+ cursor: help;
1089
+ flex-shrink: 0;
1090
+ user-select: none;
1091
+ }
1092
+ .backup-help-icon::after {
1093
+ content: attr(data-tip);
1094
+ position: absolute;
1095
+ bottom: calc(100% + 6px);
1096
+ left: 50%;
1097
+ transform: translateX(-50%);
1098
+ background: var(--theme-elevation-900);
1099
+ color: var(--theme-elevation-0);
1100
+ font-size: 11px;
1101
+ line-height: 1.4;
1102
+ white-space: nowrap;
1103
+ padding: 4px 8px;
1104
+ border-radius: 4px;
1105
+ pointer-events: none;
1106
+ opacity: 0;
1107
+ transition: opacity 0.15s ease;
1108
+ z-index: 100;
1109
+ }
1110
+ .backup-help-icon:hover::after {
1111
+ opacity: 1;
1112
+ }
1113
+ .backup-help-icon {
1114
+ /* Longer copy in settings / footers — wrap instead of one endless line */
1115
+ }
1116
+ .backup-help-icon--multiline::after {
1117
+ white-space: normal;
1118
+ text-align: left;
1119
+ width: max-content;
1120
+ max-width: min(280px, 85vw);
1121
+ }
1122
+ .backup-help-icon {
1123
+ /* Settings modal body scrolls — absolute ::after gets clipped; anchor to viewport instead */
1124
+ }
1125
+ .backup-help-icon--settings-tooltip::after {
1126
+ position: fixed;
1127
+ left: var(--backup-tip-x, 50%);
1128
+ top: var(--backup-tip-y, 0);
1129
+ bottom: auto;
1130
+ transform: translate(-50%, calc(-100% - 6px));
1131
+ z-index: 2147483000;
1132
+ }