codexmate 0.0.33 → 0.0.36

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 (47) hide show
  1. package/cli/agents-files.js +6 -0
  2. package/cli/archive-helpers.js +11 -4
  3. package/cli/local-bridge.js +9 -4
  4. package/cli/openai-bridge.js +1 -1
  5. package/cli/update.js +11 -2
  6. package/cli.js +133 -64
  7. package/lib/cli-webhook.js +29 -1
  8. package/package.json +2 -1
  9. package/web-ui/app.js +37 -2
  10. package/web-ui/index.html +2 -1
  11. package/web-ui/logic.claude.mjs +4 -0
  12. package/web-ui/logic.sessions.mjs +6 -5
  13. package/web-ui/modules/app.computed.dashboard.mjs +4 -0
  14. package/web-ui/modules/app.computed.session.mjs +147 -6
  15. package/web-ui/modules/app.methods.claude-config.mjs +41 -0
  16. package/web-ui/modules/app.methods.codex-config.mjs +11 -3
  17. package/web-ui/modules/app.methods.navigation.mjs +32 -2
  18. package/web-ui/modules/app.methods.session-browser.mjs +12 -6
  19. package/web-ui/modules/app.methods.session-trash.mjs +30 -0
  20. package/web-ui/modules/app.methods.startup-claude.mjs +9 -0
  21. package/web-ui/modules/app.methods.webhook.mjs +8 -0
  22. package/web-ui/modules/i18n.dict.mjs +8 -0
  23. package/web-ui/modules/sessions-filters-url.mjs +65 -12
  24. package/web-ui/modules/skills.methods.mjs +31 -0
  25. package/web-ui/partials/index/layout-header.html +17 -12
  26. package/web-ui/partials/index/modal-webhook.html +42 -0
  27. package/web-ui/partials/index/modals-basic.html +50 -0
  28. package/web-ui/partials/index/panel-config-claude.html +13 -22
  29. package/web-ui/partials/index/panel-config-codex.html +8 -22
  30. package/web-ui/partials/index/panel-market.html +76 -149
  31. package/web-ui/partials/index/panel-sessions.html +2 -2
  32. package/web-ui/partials/index/panel-settings.html +119 -149
  33. package/web-ui/partials/index/panel-usage.html +115 -68
  34. package/web-ui/res/vue.runtime.global.prod.js +7 -0
  35. package/web-ui/res/web-ui-render.precompiled.js +7274 -0
  36. package/web-ui/session-helpers.mjs +15 -4
  37. package/web-ui/source-bundle.cjs +73 -1
  38. package/web-ui/styles/base-theme.css +10 -0
  39. package/web-ui/styles/bridge-pool.css +69 -0
  40. package/web-ui/styles/layout-shell.css +66 -27
  41. package/web-ui/styles/navigation-panels.css +8 -0
  42. package/web-ui/styles/responsive.css +50 -9
  43. package/web-ui/styles/sessions-usage.css +336 -319
  44. package/web-ui/styles/settings-panel.css +300 -234
  45. package/web-ui/styles/skills-market.css +294 -0
  46. package/web-ui/styles/titles-cards.css +14 -0
  47. package/web-ui/styles/webhook.css +38 -4
@@ -1,349 +1,415 @@
1
1
  /* ============================================
2
- Settings Panel — refined visual layer
2
+ Settings Panel — 乔布斯式极简设计
3
+ 原则:删除一切非必要元素,每个像素服务于功能
3
4
  ============================================ */
4
5
 
6
+ /* ---- 容器与布局 —— 呼吸感优先 ---- */
5
7
  .settings-layout {
6
- padding: 4px 0 0;
8
+ padding: 0;
7
9
  }
8
10
 
9
11
  .settings-grid {
10
- display: grid;
11
- grid-template-columns: repeat(12, minmax(0, 1fr));
12
- gap: 18px;
13
- }
14
-
15
- /* ---- Card shell ---- */
16
- .settings-card {
17
- grid-column: span 6;
18
- border-radius: var(--radius-xl);
19
- border: 1px solid rgba(216, 201, 184, 0.42);
20
- background:
21
- linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 253, 252, 0.9) 100%);
22
- box-shadow: var(--shadow-card);
23
- padding: 16px 16px 14px;
24
12
  display: flex;
25
13
  flex-direction: column;
26
- min-width: 0;
27
- position: relative;
28
- overflow: hidden;
29
- transition: box-shadow var(--transition-normal) var(--ease-smooth),
30
- transform var(--transition-normal) var(--ease-smooth);
31
- }
32
-
33
- .settings-card:hover {
34
- box-shadow: var(--shadow-card-hover);
35
- transform: translateY(-1px);
36
- }
37
-
38
-
39
- .settings-card > * {
40
- position: relative;
41
- z-index: 1;
14
+ gap: 8px;
42
15
  }
43
16
 
44
- .settings-card--wide {
45
- grid-column: 1 / -1;
17
+ /* ---- 分段控制器:苹果风格 ---- */
18
+ .settings-tab-header {
19
+ margin: 0 0 24px;
20
+ padding: 0;
46
21
  }
47
22
 
48
- .settings-card--danger {
49
- border-color: rgba(196, 69, 54, 0.22);
23
+ .settings-tab-header .segmented-control {
24
+ display: inline-flex;
25
+ background: rgba(137, 111, 94, 0.08);
26
+ border-radius: 12px;
27
+ padding: 4px;
28
+ gap: 2px;
50
29
  }
51
30
 
52
- /* ---- Card header ---- */
53
- .settings-card-header {
54
- display: flex;
55
- flex-direction: column;
56
- gap: 3px;
57
- padding-bottom: 0;
31
+ .settings-tab-header .segmented-option {
32
+ padding: 8px 18px;
33
+ font-size: 13px;
34
+ font-weight: 500;
35
+ color: var(--color-text-secondary);
36
+ background: transparent;
37
+ border: none;
38
+ border-radius: 8px;
39
+ cursor: pointer;
40
+ transition: all 0.2s cubic-bezier(0.25, 1, 0.5, 1);
41
+ white-space: nowrap;
58
42
  }
59
43
 
60
- .settings-card-header-row {
61
- flex-direction: row;
62
- justify-content: space-between;
63
- align-items: flex-start;
64
- gap: 16px;
44
+ .settings-tab-header .segmented-option:hover {
45
+ color: var(--color-text-primary);
65
46
  }
66
47
 
67
- .settings-card-title {
68
- font-size: 13px;
69
- font-weight: 700;
70
- letter-spacing: -0.01em;
48
+ .settings-tab-header .segmented-option.active {
49
+ background: white;
71
50
  color: var(--color-text-primary);
72
- display: flex;
73
- align-items: center;
74
- gap: 7px;
51
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
75
52
  }
76
53
 
77
- .settings-card-title-icon {
78
- display: inline-flex;
54
+ /* ---- 卡片系统:本质呈现 ---- */
55
+ .settings-card {
56
+ display: flex;
79
57
  align-items: center;
80
- justify-content: center;
81
- width: 22px;
82
- height: 22px;
83
- border-radius: 6px;
84
- background: var(--color-brand-light);
85
- color: var(--color-brand-dark);
86
- font-size: 12px;
87
- flex-shrink: 0;
58
+ justify-content: space-between;
59
+ gap: 20px;
60
+ padding: 20px 24px;
61
+ background: white;
62
+ border-radius: 16px;
63
+ border: 1px solid rgba(137, 111, 94, 0.1);
64
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
65
+ transition: all 0.25s cubic-bezier(0.25, 1, 0.5, 1);
66
+ position: relative;
88
67
  }
89
68
 
90
- .settings-card-meta {
91
- font-size: 11px;
92
- color: var(--color-text-tertiary);
93
- line-height: 1.35;
69
+ .settings-card:hover {
70
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
71
+ border-color: rgba(137, 111, 94, 0.15);
94
72
  }
95
73
 
96
- /* ---- Card body ---- */
97
- .settings-card-body {
74
+ .settings-card-main {
98
75
  display: flex;
99
- flex-direction: column;
100
- gap: 10px;
76
+ align-items: center;
77
+ gap: 16px;
78
+ flex: 1;
101
79
  min-width: 0;
102
80
  }
103
81
 
104
- .settings-card-hint {
105
- font-size: 12px;
106
- color: var(--color-text-tertiary);
107
- line-height: 1.45;
82
+ .settings-card-content {
83
+ flex: 1;
84
+ min-width: 0;
108
85
  }
109
86
 
110
- .settings-card-hint code {
111
- font-family: var(--font-family-mono);
112
- font-size: 11px;
113
- padding: 1px 6px;
114
- border-radius: 999px;
115
- border: 1px solid var(--color-border);
116
- background: rgba(248, 243, 238, 0.7);
117
- color: var(--color-text-secondary);
87
+ .settings-card-title {
88
+ font-size: 15px;
89
+ font-weight: 600;
90
+ color: var(--color-text-primary);
91
+ margin: 0 0 4px 0;
92
+ letter-spacing: -0.01em;
118
93
  }
119
94
 
120
- /* ---- Field row ---- */
121
- .settings-field-row {
122
- display: grid;
123
- grid-template-columns: 88px minmax(0, 1fr);
124
- align-items: center;
125
- gap: 10px;
95
+ .settings-card-desc {
96
+ font-size: 13px;
97
+ color: var(--color-text-tertiary);
98
+ margin: 0 0 8px 0;
99
+ line-height: 1.4;
126
100
  }
127
101
 
128
- .settings-field-label {
129
- font-size: 11px;
102
+ .selector-label {
103
+ display: block;
104
+ font-size: 12px;
105
+ font-weight: 500;
130
106
  color: var(--color-text-muted);
131
- font-weight: 600;
107
+ margin: 12px 0 6px;
132
108
  letter-spacing: 0.02em;
133
109
  }
134
110
 
135
- /* ---- Actions ---- */
136
- .settings-actions {
137
- display: flex;
138
- flex-wrap: wrap;
139
- gap: 10px;
140
- align-items: center;
141
- justify-content: flex-start;
111
+ /* ---- 选择器:极简精确 ---- */
112
+ .model-select {
113
+ width: 100%;
114
+ max-width: 200px;
115
+ padding: 10px 36px 10px 14px;
116
+ font-size: 14px;
117
+ font-weight: 500;
118
+ color: var(--color-text-primary);
119
+ background: rgba(247, 240, 233, 0.5);
120
+ border: 1px solid rgba(137, 111, 94, 0.15);
121
+ border-radius: 10px;
122
+ appearance: none;
123
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%2382746A' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");
124
+ background-repeat: no-repeat;
125
+ background-position: right 14px center;
126
+ background-size: 12px;
127
+ cursor: pointer;
128
+ transition: all 0.15s ease;
142
129
  }
143
130
 
144
- .settings-card-actions {
145
- display: flex;
146
- flex-wrap: wrap;
147
- gap: 10px;
148
- align-items: center;
149
- justify-content: flex-end;
150
- margin-top: 2px;
131
+ .model-select:hover {
132
+ border-color: rgba(137, 111, 94, 0.25);
133
+ background-color: rgba(247, 240, 233, 0.7);
151
134
  }
152
135
 
153
- /* ---- Toggle switch (replaces checkbox) ---- */
154
- .settings-toggle {
155
- display: inline-flex;
136
+ .model-select:focus {
137
+ outline: none;
138
+ border-color: var(--color-brand);
139
+ background-color: white;
140
+ box-shadow: 0 0 0 3px rgba(200, 121, 99, 0.12);
141
+ }
142
+
143
+ /* ---- 开关:iOS 风格 ---- */
144
+ .settings-toggle-row {
145
+ display: flex;
156
146
  align-items: center;
157
- gap: 10px;
147
+ gap: 12px;
158
148
  cursor: pointer;
159
- padding: 0;
160
- border: none;
161
- background: none;
162
- border-radius: 0;
163
149
  user-select: none;
150
+ margin: 12px 0;
164
151
  }
165
152
 
166
- .settings-toggle input[type="checkbox"] {
167
- appearance: none;
168
- -webkit-appearance: none;
169
- width: 40px;
170
- height: 22px;
171
- border-radius: 11px;
172
- background: rgba(137, 111, 94, 0.22);
173
- border: 1px solid rgba(137, 111, 94, 0.16);
174
- cursor: pointer;
153
+ .settings-toggle-row input[type="checkbox"] {
154
+ display: none;
155
+ }
156
+
157
+ .settings-toggle-row .toggle-track {
175
158
  position: relative;
176
- transition: background var(--transition-fast) var(--ease-smooth),
177
- border-color var(--transition-fast) var(--ease-smooth);
159
+ width: 44px;
160
+ height: 26px;
161
+ background: rgba(137, 111, 94, 0.2);
162
+ border-radius: 13px;
163
+ transition: all 0.25s cubic-bezier(0.25, 1, 0.5, 1);
178
164
  flex-shrink: 0;
179
- margin: 0;
180
165
  }
181
166
 
182
- .settings-toggle input[type="checkbox"]::after {
167
+ .settings-toggle-row .toggle-track::after {
183
168
  content: '';
184
169
  position: absolute;
185
- top: 2px;
186
- left: 2px;
187
- width: 16px;
188
- height: 16px;
170
+ top: 3px;
171
+ left: 3px;
172
+ width: 20px;
173
+ height: 20px;
174
+ background: white;
189
175
  border-radius: 50%;
190
- background: #fff;
191
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
192
- transition: transform var(--transition-fast) var(--ease-spring);
176
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
177
+ transition: all 0.25s cubic-bezier(0.25, 1, 0.5, 1);
193
178
  }
194
179
 
195
- .settings-toggle input[type="checkbox"]:checked {
180
+ .settings-toggle-row input:checked + .toggle-track {
196
181
  background: var(--color-brand);
197
- border-color: var(--color-brand);
198
182
  }
199
183
 
200
- .settings-toggle input[type="checkbox"]:checked::after {
184
+ .settings-toggle-row input:checked + .toggle-track::after {
201
185
  transform: translateX(18px);
202
186
  }
203
187
 
204
- .settings-toggle input[type="checkbox"]:focus-visible {
205
- outline: 2px solid var(--color-brand);
206
- outline-offset: 2px;
207
- }
208
-
209
- .settings-toggle span {
210
- font-size: var(--font-size-secondary);
188
+ .settings-toggle-row span:not(.toggle-track) {
189
+ font-size: 14px;
190
+ font-weight: 500;
211
191
  color: var(--color-text-secondary);
212
- font-weight: var(--font-weight-body);
213
192
  }
214
193
 
215
- /* ---- Retention row ---- */
216
- .settings-retention-row {
217
- display: flex;
194
+ /* ---- 保留天数输入 ---- */
195
+ .settings-retention {
196
+ display: inline-flex;
218
197
  align-items: center;
219
- gap: 10px;
198
+ gap: 8px;
220
199
  padding: 8px 12px;
221
- border-radius: 12px;
222
- border: 1px solid rgba(216, 201, 184, 0.4);
223
- background: rgba(248, 243, 238, 0.6);
200
+ background: rgba(247, 240, 233, 0.5);
201
+ border-radius: 10px;
202
+ border: 1px solid rgba(137, 111, 94, 0.1);
203
+ margin: 12px 0;
204
+ }
205
+
206
+ .settings-retention label {
207
+ font-size: 12px;
208
+ color: var(--color-text-muted);
209
+ font-weight: 500;
224
210
  }
225
211
 
226
212
  .settings-retention-input {
227
- width: 64px;
228
- padding: 4px 8px;
229
- border: 1px solid rgba(216, 201, 184, 0.6);
230
- border-radius: 8px;
231
- font-size: 14px;
232
- text-align: center;
213
+ width: 48px;
214
+ padding: 0;
215
+ font-size: 15px;
233
216
  font-weight: 600;
234
217
  color: var(--color-text-primary);
235
- background: var(--color-surface);
236
- transition: border-color var(--transition-fast) var(--ease-smooth);
218
+ background: transparent;
219
+ border: none;
220
+ text-align: center;
221
+ -moz-appearance: textfield;
222
+ }
223
+
224
+ .settings-retention-input::-webkit-outer-spin-button,
225
+ .settings-retention-input::-webkit-inner-spin-button {
226
+ -webkit-appearance: none;
227
+ margin: 0;
237
228
  }
238
229
 
239
230
  .settings-retention-input:focus {
240
- border-color: var(--color-brand);
241
231
  outline: none;
242
- box-shadow: 0 0 0 3px var(--color-brand-light);
243
232
  }
244
233
 
245
- /* ---- Backup grid ---- */
246
- .settings-backup-grid {
247
- display: grid;
248
- grid-template-columns: 1fr 1fr;
249
- gap: 16px;
234
+ .settings-retention span {
235
+ font-size: 13px;
236
+ color: var(--color-text-tertiary);
250
237
  }
251
238
 
252
- .settings-backup-slot {
239
+ /* ---- 提示文本 ---- */
240
+ .settings-card-hint {
241
+ font-size: 12px;
242
+ color: var(--color-text-muted);
243
+ margin: 8px 0 0;
244
+ line-height: 1.4;
245
+ }
246
+
247
+ /* ---- 操作按钮 ---- */
248
+ .settings-card-action,
249
+ .settings-card-actions {
253
250
  display: flex;
254
- flex-direction: column;
251
+ align-items: center;
255
252
  gap: 8px;
256
- padding: 12px 14px;
257
- border-radius: var(--radius-md);
258
- background: rgba(247, 240, 233, 0.45);
259
- border: 1px solid var(--color-border-soft);
260
- transition: border-color var(--transition-fast) var(--ease-smooth);
253
+ flex-shrink: 0;
261
254
  }
262
255
 
263
- .settings-backup-slot:hover {
264
- border-color: var(--color-border);
256
+ .settings-card-action {
257
+ padding: 10px 18px;
258
+ font-size: 13px;
259
+ font-weight: 500;
260
+ color: var(--color-text-secondary);
261
+ background: white;
262
+ border: 1px solid rgba(137, 111, 94, 0.2);
263
+ border-radius: 10px;
264
+ cursor: pointer;
265
+ transition: all 0.15s cubic-bezier(0.25, 1, 0.5, 1);
266
+ white-space: nowrap;
265
267
  }
266
268
 
267
- .settings-backup-slot-label {
268
- font-size: var(--font-size-caption);
269
- font-weight: var(--font-weight-secondary);
270
- color: var(--color-text-muted);
271
- letter-spacing: 0.03em;
269
+ .settings-card-action:hover:not(:disabled) {
270
+ color: var(--color-brand);
271
+ border-color: var(--color-brand);
272
+ background: white;
273
+ transform: translateY(-1px);
274
+ box-shadow: 0 4px 12px rgba(200, 121, 99, 0.15);
275
+ }
276
+
277
+ .settings-card-action:active:not(:disabled) {
278
+ transform: translateY(0);
279
+ }
280
+
281
+ .settings-card-action:disabled {
282
+ opacity: 0.5;
283
+ cursor: not-allowed;
284
+ }
285
+
286
+ .settings-card-action--active {
287
+ background: var(--color-brand);
288
+ color: white;
289
+ border-color: var(--color-brand);
290
+ }
291
+
292
+ .settings-card-action--active:hover {
293
+ background: var(--color-brand-dark);
294
+ border-color: var(--color-brand-dark);
295
+ color: white;
272
296
  }
273
297
 
274
- /* ---- Trash config grid ---- */
275
- .settings-trash-config-grid {
298
+ .settings-card-actions {
276
299
  display: flex;
277
- align-items: center;
278
- gap: 16px;
279
- flex-wrap: wrap;
280
300
  }
281
301
 
282
- /* ---- Subtab bar ---- */
283
- .settings-subtabs-bar {
302
+ .settings-card-actions .settings-card-action {
303
+ padding: 10px 16px;
304
+ }
305
+
306
+ /* ---- 危险操作 ---- */
307
+ .settings-card--destructive {
308
+ background: linear-gradient(135deg, rgba(250, 112, 154, 0.04) 0%, rgba(254, 225, 64, 0.04) 100%);
309
+ border-color: rgba(250, 112, 154, 0.12);
310
+ }
311
+
312
+ .settings-card--destructive:hover {
313
+ background: linear-gradient(135deg, rgba(250, 112, 154, 0.08) 0%, rgba(254, 225, 64, 0.08) 100%);
314
+ border-color: rgba(250, 112, 154, 0.2);
315
+ }
316
+
317
+ .settings-card-action--danger {
318
+ color: #e85d75;
319
+ border-color: rgba(232, 93, 117, 0.25);
320
+ background: white;
321
+ }
322
+
323
+ .settings-card-action--danger:hover:not(:disabled) {
324
+ color: #d63353;
325
+ border-color: #d63353;
326
+ background: white;
327
+ box-shadow: 0 4px 12px rgba(214, 51, 83, 0.15);
328
+ }
329
+
330
+ /* ---- Webhook 状态 ---- */
331
+ .webhook-status {
284
332
  display: flex;
285
333
  align-items: center;
286
- gap: 4px;
287
- margin-bottom: 22px;
288
- padding: 4px;
289
- background: rgba(247, 240, 233, 0.4);
290
- border-radius: var(--radius-md);
291
- border: 1px solid var(--color-border-soft);
334
+ gap: 8px;
335
+ margin-top: 8px;
292
336
  }
293
337
 
294
- .settings-subtab {
295
- position: relative;
296
- padding: 8px 18px;
297
- border: none;
298
- border-radius: var(--radius-sm);
299
- background: transparent;
300
- color: var(--color-text-muted);
301
- cursor: pointer;
302
- font-size: 13px;
303
- font-weight: var(--font-weight-secondary);
304
- transition: all var(--transition-fast) var(--ease-smooth);
305
- letter-spacing: 0.01em;
338
+ .webhook-status-dot {
339
+ width: 8px;
340
+ height: 8px;
341
+ border-radius: 50%;
342
+ background: rgba(137, 111, 94, 0.25);
343
+ transition: all 0.2s ease;
306
344
  }
307
345
 
308
- .settings-subtab:hover {
309
- color: var(--color-text-primary);
310
- background: rgba(255, 255, 255, 0.6);
346
+ .webhook-status-dot.active {
347
+ background: var(--color-success);
348
+ box-shadow: 0 0 0 3px rgba(75, 139, 106, 0.2);
311
349
  }
312
350
 
313
- .settings-subtab.active {
314
- color: var(--color-brand-dark);
315
- font-weight: 700;
316
- background: var(--color-surface);
317
- box-shadow: var(--shadow-subtle);
351
+ .webhook-status-label {
352
+ font-size: 12px;
353
+ color: var(--color-text-tertiary);
318
354
  }
319
355
 
320
- /* ---- Buttons inside cards ---- */
321
- .settings-card .btn-tool {
322
- width: auto;
323
- max-width: 100%;
356
+ .webhook-url {
357
+ font-family: var(--font-family-mono);
358
+ font-size: 11px;
359
+ color: var(--color-text-muted);
360
+ background: rgba(137, 111, 94, 0.08);
361
+ padding: 3px 8px;
362
+ border-radius: 6px;
363
+ max-width: 200px;
364
+ overflow: hidden;
365
+ text-overflow: ellipsis;
366
+ white-space: nowrap;
324
367
  }
325
368
 
326
- /* ---- Mobile ---- */
327
- @media (max-width: 860px) {
328
- .settings-card {
329
- grid-column: 1 / -1;
369
+ /* ---- 移动端适配 ---- */
370
+ @media (max-width: 640px) {
371
+ .settings-tab-header {
372
+ margin: 0 0 20px;
330
373
  }
331
- .settings-field-row {
332
- grid-template-columns: 1fr;
333
- align-items: stretch;
374
+
375
+ .settings-tab-header .segmented-control {
376
+ width: 100%;
377
+ justify-content: stretch;
334
378
  }
335
- .settings-backup-grid {
336
- grid-template-columns: 1fr;
379
+
380
+ .settings-tab-header .segmented-option {
381
+ flex: 1;
382
+ justify-content: center;
383
+ padding: 10px 16px;
337
384
  }
338
- .settings-trash-config-grid {
385
+
386
+ .settings-card {
339
387
  flex-direction: column;
340
388
  align-items: stretch;
389
+ gap: 16px;
390
+ padding: 18px 20px;
391
+ }
392
+
393
+ .settings-card-main {
394
+ width: 100%;
341
395
  }
342
- .settings-subtabs-bar {
343
- gap: 2px;
396
+
397
+ .settings-card-action,
398
+ .settings-card-actions {
399
+ width: 100%;
400
+ justify-content: stretch;
344
401
  }
345
- .settings-subtab {
346
- padding: 8px 14px;
347
- font-size: 12px;
402
+
403
+ .settings-card-action {
404
+ flex: 1;
405
+ justify-content: center;
406
+ }
407
+
408
+ .settings-card-actions {
409
+ flex-direction: column;
410
+ }
411
+
412
+ .model-select {
413
+ max-width: none;
348
414
  }
349
415
  }