codexmate 0.0.18 → 0.0.20

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 (73) hide show
  1. package/README.en.md +34 -17
  2. package/README.md +34 -25
  3. package/cli/config-health.js +338 -0
  4. package/cli.js +1570 -839
  5. package/lib/cli-models-utils.js +186 -27
  6. package/lib/cli-network-utils.js +117 -101
  7. package/package.json +8 -1
  8. package/web-ui/app.js +379 -5754
  9. package/web-ui/index.html +15 -2079
  10. package/web-ui/logic.agents-diff.mjs +386 -0
  11. package/web-ui/logic.claude.mjs +108 -0
  12. package/web-ui/logic.mjs +5 -793
  13. package/web-ui/logic.runtime.mjs +124 -0
  14. package/web-ui/logic.sessions.mjs +263 -0
  15. package/web-ui/modules/api.mjs +69 -0
  16. package/web-ui/modules/app.computed.dashboard.mjs +113 -0
  17. package/web-ui/modules/app.computed.index.mjs +13 -0
  18. package/web-ui/modules/app.computed.session.mjs +141 -0
  19. package/web-ui/modules/app.constants.mjs +15 -0
  20. package/web-ui/modules/app.methods.agents.mjs +493 -0
  21. package/web-ui/modules/app.methods.claude-config.mjs +174 -0
  22. package/web-ui/modules/app.methods.codex-config.mjs +640 -0
  23. package/web-ui/modules/app.methods.index.mjs +86 -0
  24. package/web-ui/modules/app.methods.install.mjs +157 -0
  25. package/web-ui/modules/app.methods.navigation.mjs +478 -0
  26. package/web-ui/modules/app.methods.openclaw-core.mjs +514 -0
  27. package/web-ui/modules/app.methods.openclaw-editing.mjs +337 -0
  28. package/web-ui/modules/app.methods.openclaw-persist.mjs +251 -0
  29. package/web-ui/modules/app.methods.providers.mjs +265 -0
  30. package/web-ui/modules/app.methods.runtime.mjs +323 -0
  31. package/web-ui/modules/app.methods.session-actions.mjs +457 -0
  32. package/web-ui/modules/app.methods.session-browser.mjs +435 -0
  33. package/web-ui/modules/app.methods.session-timeline.mjs +441 -0
  34. package/web-ui/modules/app.methods.session-trash.mjs +419 -0
  35. package/web-ui/modules/app.methods.startup-claude.mjs +406 -0
  36. package/web-ui/modules/config-mode.computed.mjs +1 -0
  37. package/web-ui/modules/skills.computed.mjs +26 -1
  38. package/web-ui/modules/skills.methods.mjs +154 -23
  39. package/web-ui/partials/index/layout-footer.html +69 -0
  40. package/web-ui/partials/index/layout-header.html +337 -0
  41. package/web-ui/partials/index/modal-config-template-agents.html +125 -0
  42. package/web-ui/partials/index/modal-confirm-toast.html +32 -0
  43. package/web-ui/partials/index/modal-health-check.html +72 -0
  44. package/web-ui/partials/index/modal-openclaw-config.html +275 -0
  45. package/web-ui/partials/index/modal-skills.html +184 -0
  46. package/web-ui/partials/index/modals-basic.html +196 -0
  47. package/web-ui/partials/index/panel-config-claude.html +100 -0
  48. package/web-ui/partials/index/panel-config-codex.html +237 -0
  49. package/web-ui/partials/index/panel-config-openclaw.html +84 -0
  50. package/web-ui/partials/index/panel-market.html +174 -0
  51. package/web-ui/partials/index/panel-sessions.html +387 -0
  52. package/web-ui/partials/index/panel-settings.html +166 -0
  53. package/web-ui/session-helpers.mjs +12 -0
  54. package/web-ui/source-bundle.cjs +233 -0
  55. package/web-ui/styles/base-theme.css +373 -0
  56. package/web-ui/styles/controls-forms.css +354 -0
  57. package/web-ui/styles/feedback.css +108 -0
  58. package/web-ui/styles/health-check-dialog.css +144 -0
  59. package/web-ui/styles/layout-shell.css +330 -0
  60. package/web-ui/styles/modals-core.css +449 -0
  61. package/web-ui/styles/navigation-panels.css +381 -0
  62. package/web-ui/styles/openclaw-structured.css +266 -0
  63. package/web-ui/styles/responsive.css +416 -0
  64. package/web-ui/styles/sessions-list.css +414 -0
  65. package/web-ui/styles/sessions-preview.css +405 -0
  66. package/web-ui/styles/sessions-toolbar-trash.css +243 -0
  67. package/web-ui/styles/sessions-usage.css +276 -0
  68. package/web-ui/styles/skills-list.css +298 -0
  69. package/web-ui/styles/skills-market.css +335 -0
  70. package/web-ui/styles/titles-cards.css +407 -0
  71. package/web-ui/styles.css +16 -4499
  72. package/doc/CHANGELOG.md +0 -32
  73. package/doc/CHANGELOG.zh-CN.md +0 -34
@@ -0,0 +1,381 @@
1
+ .main-tabs {
2
+ display: flex;
3
+ gap: 10px;
4
+ }
5
+
6
+ .main-tab-btn {
7
+ flex: 1;
8
+ text-align: center;
9
+ border: 1px solid rgba(216, 201, 184, 0.55);
10
+ background: rgba(255, 255, 255, 0.95);
11
+ border-radius: var(--radius-lg);
12
+ padding: 12px 14px;
13
+ cursor: pointer;
14
+ color: var(--color-text-secondary);
15
+ font-size: var(--font-size-body);
16
+ font-weight: var(--font-weight-secondary);
17
+ box-shadow: var(--shadow-subtle);
18
+ transition: all var(--transition-normal) var(--ease-spring);
19
+ }
20
+
21
+ .main-tab-btn:hover {
22
+ border-color: var(--color-brand);
23
+ color: var(--color-text-primary);
24
+ transform: translateY(-1px);
25
+ }
26
+
27
+ .main-tab-btn.active {
28
+ border-color: var(--color-brand);
29
+ box-shadow: 0 10px 24px rgba(27, 23, 20, 0.08);
30
+ color: var(--color-text-primary);
31
+ background: linear-gradient(135deg, rgba(201, 94, 75, 0.12), rgba(255, 255, 255, 0.95));
32
+ }
33
+
34
+ .status-strip {
35
+ display: flex;
36
+ flex-wrap: wrap;
37
+ gap: var(--spacing-xs);
38
+ margin-bottom: var(--spacing-sm);
39
+ margin-top: 6px;
40
+ }
41
+
42
+ .status-chip {
43
+ min-width: 200px;
44
+ padding: 10px 12px;
45
+ border-radius: var(--radius-lg);
46
+ border: 1px solid var(--color-border-soft);
47
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.99) 0%, rgba(255, 250, 245, 0.97) 100%);
48
+ box-shadow: var(--shadow-subtle);
49
+ }
50
+
51
+ .status-chip .label {
52
+ display: block;
53
+ font-size: var(--font-size-caption);
54
+ color: var(--color-text-tertiary);
55
+ margin-bottom: 4px;
56
+ }
57
+
58
+ .status-chip .value {
59
+ font-size: var(--font-size-body);
60
+ font-weight: var(--font-weight-secondary);
61
+ color: var(--color-text-primary);
62
+ letter-spacing: -0.01em;
63
+ white-space: normal;
64
+ overflow-wrap: anywhere;
65
+ word-break: break-word;
66
+ }
67
+
68
+ .provider-fast-switch {
69
+ margin: 0 0 var(--spacing-sm);
70
+ padding: 10px 12px;
71
+ border-radius: var(--radius-lg);
72
+ border: 1px solid rgba(216, 201, 184, 0.6);
73
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(255, 249, 243, 0.96) 100%);
74
+ box-shadow: var(--shadow-subtle);
75
+ display: grid;
76
+ gap: 6px;
77
+ }
78
+
79
+ .provider-fast-switch-label {
80
+ font-size: var(--font-size-caption);
81
+ color: var(--color-text-tertiary);
82
+ letter-spacing: 0.02em;
83
+ }
84
+
85
+ .provider-fast-switch-select {
86
+ width: 100%;
87
+ min-height: 40px;
88
+ padding: 8px 12px;
89
+ padding-right: 38px;
90
+ border: 1px solid var(--color-border-soft);
91
+ border-radius: var(--radius-sm);
92
+ font-size: var(--font-size-body);
93
+ color: var(--color-text-primary);
94
+ background-color: var(--color-surface-alt);
95
+ outline: none;
96
+ cursor: pointer;
97
+ appearance: none;
98
+ 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='%23505A66' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");
99
+ background-repeat: no-repeat;
100
+ background-position: right 12px center;
101
+ background-size: 12px;
102
+ }
103
+
104
+ .provider-fast-switch-select:focus {
105
+ border-color: var(--color-brand);
106
+ box-shadow: var(--shadow-input-focus);
107
+ }
108
+
109
+ .main-panel {
110
+ min-width: 0;
111
+ background: rgba(255, 255, 255, 0.95);
112
+ border: 1px solid rgba(216, 201, 184, 0.48);
113
+ border-radius: 18px;
114
+ box-shadow: var(--shadow-card);
115
+ padding: var(--spacing-md) var(--spacing-lg);
116
+ backdrop-filter: blur(8px);
117
+ position: relative;
118
+ overflow-x: hidden;
119
+ overflow-y: visible;
120
+ }
121
+
122
+ .status-inspector {
123
+ position: sticky;
124
+ top: 24px;
125
+ align-self: start;
126
+ height: calc(100vh - 48px);
127
+ overflow: auto;
128
+ padding: 16px;
129
+ border-radius: var(--radius-xl);
130
+ border: 1px solid var(--color-border-soft);
131
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 248, 241, 0.92) 100%);
132
+ box-shadow: var(--shadow-card);
133
+ display: flex;
134
+ flex-direction: column;
135
+ gap: 12px;
136
+ }
137
+
138
+ .inspector-head {
139
+ padding: 2px 2px 8px;
140
+ border-bottom: 1px solid rgba(216, 201, 184, 0.35);
141
+ }
142
+
143
+ .inspector-title {
144
+ font-size: 16px;
145
+ line-height: 1.25;
146
+ font-weight: 600;
147
+ color: var(--color-text-primary);
148
+ }
149
+
150
+ .inspector-subtitle {
151
+ margin-top: 4px;
152
+ font-size: 12px;
153
+ color: var(--color-text-tertiary);
154
+ }
155
+
156
+ .inspector-group {
157
+ padding: 12px;
158
+ border-radius: var(--radius-lg);
159
+ border: 1px solid rgba(216, 201, 184, 0.34);
160
+ background: rgba(255, 255, 255, 0.88);
161
+ box-shadow: var(--shadow-subtle);
162
+ }
163
+
164
+ .inspector-group-title {
165
+ font-size: 13px;
166
+ font-weight: 600;
167
+ color: var(--color-text-secondary);
168
+ margin-bottom: 10px;
169
+ }
170
+
171
+ .inspector-kv {
172
+ display: grid;
173
+ grid-template-columns: 92px minmax(0, 1fr);
174
+ gap: 8px 10px;
175
+ align-items: start;
176
+ }
177
+
178
+ .inspector-kv .key {
179
+ font-size: 11px;
180
+ line-height: 1.4;
181
+ color: var(--color-text-muted);
182
+ letter-spacing: 0.01em;
183
+ font-family: var(--font-family-mono);
184
+ }
185
+
186
+ .inspector-kv .value {
187
+ font-size: 14px;
188
+ line-height: 1.35;
189
+ font-weight: 500;
190
+ color: var(--color-text-primary);
191
+ overflow-wrap: anywhere;
192
+ word-break: break-word;
193
+ }
194
+
195
+ .inspector-kv .value.tone-ok {
196
+ color: var(--color-success);
197
+ }
198
+
199
+ .inspector-kv .value.tone-warn {
200
+ color: #8d5b31;
201
+ }
202
+
203
+ .inspector-kv .value.tone-error {
204
+ color: var(--color-error);
205
+ }
206
+
207
+ .panel-header {
208
+ margin-bottom: 12px;
209
+ text-align: left;
210
+ }
211
+
212
+ .hero {
213
+ display: flex;
214
+ align-items: center;
215
+ gap: var(--spacing-sm);
216
+ margin-bottom: var(--spacing-sm);
217
+ }
218
+
219
+ .hero-logo {
220
+ display: none;
221
+ width: 64px;
222
+ height: 64px;
223
+ border-radius: 18px;
224
+ padding: 8px;
225
+ background: var(--color-surface-elevated);
226
+ border: 1px solid var(--color-border-soft);
227
+ box-shadow: var(--shadow-card);
228
+ object-fit: contain;
229
+ }
230
+
231
+ .hero-title {
232
+ font-size: 48px;
233
+ line-height: 1.05;
234
+ font-family: var(--font-family-display);
235
+ color: var(--color-text-primary);
236
+ letter-spacing: -0.02em;
237
+ }
238
+
239
+ .hero-title .accent {
240
+ color: var(--color-brand);
241
+ }
242
+
243
+ .hero-subtitle {
244
+ margin-top: 8px;
245
+ font-size: var(--font-size-body);
246
+ color: var(--color-text-tertiary);
247
+ line-height: 1.5;
248
+ }
249
+
250
+ .hero-github {
251
+ display: none;
252
+ margin-bottom: var(--spacing-sm);
253
+ }
254
+
255
+ .top-tabs {
256
+ margin: 14px 0 18px;
257
+ background: rgba(255, 255, 255, 0.92);
258
+ border: 1px solid rgba(255, 255, 255, 0.7);
259
+ border-radius: 14px;
260
+ padding: 6px;
261
+ box-shadow: inset 0 1px 2px rgba(31, 26, 23, 0.06);
262
+ display: grid;
263
+ grid-template-columns: repeat(4, 1fr);
264
+ gap: 8px;
265
+ backdrop-filter: blur(6px);
266
+ }
267
+
268
+ .top-tab {
269
+ border: 1px solid rgba(216, 201, 184, 0.55);
270
+ border-radius: 12px;
271
+ background: rgba(255, 255, 255, 0.96);
272
+ padding: 11px 10px;
273
+ font-size: var(--font-size-body);
274
+ color: var(--color-text-secondary);
275
+ text-align: center;
276
+ cursor: pointer;
277
+ transition: none;
278
+ box-shadow: var(--shadow-subtle);
279
+ }
280
+
281
+ .top-tab:hover {
282
+ border-color: var(--color-brand);
283
+ color: var(--color-text-primary);
284
+ transform: translateY(-1px);
285
+ }
286
+
287
+ .top-tab.active {
288
+ border-color: var(--color-brand);
289
+ color: var(--color-text-primary);
290
+ background: linear-gradient(135deg, rgba(201, 94, 75, 0.12), rgba(255, 255, 255, 0.95));
291
+ box-shadow: 0 10px 24px rgba(27, 23, 20, 0.08);
292
+ }
293
+
294
+ .top-tab.nav-intent-active {
295
+ border-color: var(--color-brand);
296
+ color: var(--color-text-primary);
297
+ background: linear-gradient(135deg, rgba(201, 94, 75, 0.12), rgba(255, 255, 255, 0.95));
298
+ box-shadow: 0 10px 24px rgba(27, 23, 20, 0.08);
299
+ }
300
+
301
+ .top-tab.nav-intent-inactive,
302
+ .top-tab.active.nav-intent-inactive {
303
+ border-color: rgba(216, 201, 184, 0.55);
304
+ color: var(--color-text-secondary);
305
+ background: rgba(255, 255, 255, 0.96);
306
+ box-shadow: var(--shadow-subtle);
307
+ }
308
+
309
+ #panel-sessions.session-panel-fast-hidden {
310
+ display: none !important;
311
+ }
312
+
313
+ .config-subtabs {
314
+ display: flex;
315
+ gap: 8px;
316
+ margin-bottom: 16px;
317
+ padding: 6px;
318
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.85), rgba(255, 255, 255, 0.7));
319
+ border-radius: var(--radius-lg);
320
+ border: 1px solid rgba(255, 255, 255, 0.7);
321
+ box-shadow: inset 0 1px 2px rgba(31, 26, 23, 0.05);
322
+ }
323
+
324
+ .config-subtab {
325
+ border: 1px solid var(--color-border-soft);
326
+ border-radius: var(--radius-lg);
327
+ padding: 10px 14px;
328
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(255, 250, 245, 0.9));
329
+ color: var(--color-text-secondary);
330
+ cursor: pointer;
331
+ font-size: var(--font-size-body);
332
+ font-weight: var(--font-weight-secondary);
333
+ transition: all var(--transition-normal) var(--ease-spring);
334
+ box-shadow: var(--shadow-subtle);
335
+ }
336
+
337
+ .config-subtab:hover {
338
+ border-color: var(--color-border-strong);
339
+ color: var(--color-text-primary);
340
+ }
341
+
342
+ .config-subtab.active {
343
+ border-color: var(--color-brand);
344
+ color: var(--color-text-primary);
345
+ background: linear-gradient(135deg, rgba(201, 94, 75, 0.18), rgba(255, 255, 255, 0.95));
346
+ box-shadow: var(--shadow-card);
347
+ }
348
+
349
+ .settings-subtabs {
350
+ margin-bottom: var(--spacing-sm);
351
+ }
352
+
353
+ .settings-tab-badge {
354
+ display: inline-flex;
355
+ align-items: center;
356
+ justify-content: center;
357
+ min-width: 18px;
358
+ height: 18px;
359
+ margin-left: 6px;
360
+ padding: 0 6px;
361
+ border-radius: 999px;
362
+ background: rgba(210, 107, 90, 0.14);
363
+ color: var(--color-text-secondary);
364
+ font-size: 11px;
365
+ line-height: 1;
366
+ }
367
+
368
+ .content-wrapper {
369
+ background: rgba(255, 255, 255, 0.94);
370
+ border: 1px solid rgba(216, 201, 184, 0.35);
371
+ border-radius: var(--radius-lg);
372
+ box-shadow: var(--shadow-subtle);
373
+ padding: 0;
374
+ }
375
+
376
+ .mode-content {
377
+ border-radius: var(--radius-lg);
378
+ background: rgba(255, 255, 255, 0.9);
379
+ box-shadow: var(--shadow-subtle);
380
+ padding: 12px;
381
+ }
@@ -0,0 +1,266 @@
1
+ .quick-section {
2
+ margin-top: var(--spacing-md);
3
+ padding: var(--spacing-sm);
4
+ border-radius: var(--radius-lg);
5
+ border: 1px solid var(--color-border-soft);
6
+ background: linear-gradient(140deg, rgba(255, 252, 247, 0.95), rgba(255, 255, 255, 0.6));
7
+ }
8
+
9
+ .quick-header {
10
+ display: flex;
11
+ flex-wrap: wrap;
12
+ gap: var(--spacing-xs);
13
+ align-items: flex-start;
14
+ justify-content: space-between;
15
+ margin-bottom: var(--spacing-sm);
16
+ }
17
+
18
+ .quick-title {
19
+ font-size: var(--font-size-secondary);
20
+ font-weight: var(--font-weight-secondary);
21
+ color: var(--color-text-secondary);
22
+ }
23
+
24
+ .quick-actions {
25
+ display: flex;
26
+ flex-wrap: wrap;
27
+ gap: var(--spacing-xs);
28
+ }
29
+
30
+ .quick-steps {
31
+ display: flex;
32
+ flex-wrap: wrap;
33
+ gap: var(--spacing-xs);
34
+ margin-bottom: var(--spacing-sm);
35
+ }
36
+
37
+ .quick-step {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ gap: 6px;
41
+ padding: 4px 10px;
42
+ border-radius: 999px;
43
+ border: 1px dashed var(--color-border-soft);
44
+ background: var(--color-surface);
45
+ font-size: var(--font-size-caption);
46
+ color: var(--color-text-secondary);
47
+ }
48
+
49
+ .step-badge {
50
+ width: 20px;
51
+ height: 20px;
52
+ border-radius: 999px;
53
+ display: inline-flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ background: var(--color-brand);
57
+ color: #fff;
58
+ font-size: 12px;
59
+ font-weight: var(--font-weight-secondary);
60
+ }
61
+
62
+ .quick-grid {
63
+ display: grid;
64
+ gap: var(--spacing-sm);
65
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
66
+ }
67
+
68
+ .quick-card {
69
+ background: var(--color-surface);
70
+ border: 1px solid var(--color-border-soft);
71
+ border-radius: var(--radius-sm);
72
+ padding: var(--spacing-sm);
73
+ box-shadow: var(--shadow-subtle);
74
+ }
75
+
76
+ .quick-option {
77
+ display: flex;
78
+ align-items: center;
79
+ gap: 8px;
80
+ font-size: var(--font-size-caption);
81
+ color: var(--color-text-secondary);
82
+ margin-bottom: 6px;
83
+ }
84
+
85
+ .quick-option input {
86
+ accent-color: var(--color-brand);
87
+ }
88
+
89
+ .structured-section {
90
+ margin-top: var(--spacing-md);
91
+ padding: var(--spacing-sm);
92
+ border-radius: var(--radius-lg);
93
+ border: 1px solid var(--color-border-soft);
94
+ background: rgba(255, 255, 255, 0.6);
95
+ }
96
+
97
+ .structured-header {
98
+ display: flex;
99
+ flex-wrap: wrap;
100
+ gap: var(--spacing-xs);
101
+ align-items: baseline;
102
+ justify-content: space-between;
103
+ margin-bottom: var(--spacing-sm);
104
+ }
105
+
106
+ .structured-title {
107
+ font-size: var(--font-size-secondary);
108
+ font-weight: var(--font-weight-secondary);
109
+ color: var(--color-text-secondary);
110
+ }
111
+
112
+ .structured-grid {
113
+ display: grid;
114
+ gap: var(--spacing-sm);
115
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
116
+ }
117
+
118
+ .structured-card {
119
+ background: var(--color-surface);
120
+ border: 1px solid var(--color-border-soft);
121
+ border-radius: var(--radius-sm);
122
+ padding: var(--spacing-sm);
123
+ box-shadow: var(--shadow-subtle);
124
+ }
125
+
126
+ .structured-card-title {
127
+ font-size: var(--font-size-body);
128
+ font-weight: var(--font-weight-secondary);
129
+ color: var(--color-text-secondary);
130
+ margin-bottom: 8px;
131
+ }
132
+
133
+ .provider-list {
134
+ display: flex;
135
+ flex-direction: column;
136
+ gap: var(--spacing-xs);
137
+ }
138
+
139
+ .provider-item {
140
+ border: 1px dashed var(--color-border-soft);
141
+ border-radius: var(--radius-sm);
142
+ padding: var(--spacing-xs);
143
+ background: var(--color-surface-alt);
144
+ }
145
+
146
+ .provider-header {
147
+ display: flex;
148
+ flex-wrap: wrap;
149
+ gap: var(--spacing-xs);
150
+ align-items: center;
151
+ margin-bottom: 6px;
152
+ }
153
+
154
+ .provider-name {
155
+ font-weight: var(--font-weight-secondary);
156
+ color: var(--color-text-secondary);
157
+ }
158
+
159
+ .provider-source {
160
+ font-size: var(--font-size-caption);
161
+ color: var(--color-text-tertiary);
162
+ }
163
+
164
+ .provider-fields {
165
+ display: grid;
166
+ gap: 6px;
167
+ }
168
+
169
+ .provider-field {
170
+ display: flex;
171
+ flex-wrap: wrap;
172
+ gap: 6px;
173
+ align-items: baseline;
174
+ }
175
+
176
+ .provider-field-key {
177
+ font-family: var(--font-family-mono);
178
+ font-size: var(--font-size-caption);
179
+ color: var(--color-text-muted);
180
+ min-width: 110px;
181
+ }
182
+
183
+ .provider-field-value {
184
+ font-family: var(--font-family-mono);
185
+ font-size: var(--font-size-caption);
186
+ color: var(--color-text-secondary);
187
+ word-break: break-all;
188
+ }
189
+
190
+ .auth-profile-list {
191
+ display: flex;
192
+ flex-direction: column;
193
+ gap: var(--spacing-xs);
194
+ }
195
+
196
+ .auth-profile-item {
197
+ border: 1px dashed var(--color-border-soft);
198
+ border-radius: var(--radius-sm);
199
+ padding: var(--spacing-sm);
200
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.82) 0%, rgba(247, 241, 232, 0.4) 100%);
201
+ }
202
+
203
+ .auth-profile-header {
204
+ display: flex;
205
+ align-items: flex-start;
206
+ justify-content: space-between;
207
+ gap: var(--spacing-sm);
208
+ }
209
+
210
+ .auth-profile-main {
211
+ min-width: 0;
212
+ flex: 1;
213
+ display: flex;
214
+ flex-direction: column;
215
+ gap: 6px;
216
+ }
217
+
218
+ .auth-profile-title {
219
+ font-size: var(--font-size-body);
220
+ font-weight: var(--font-weight-secondary);
221
+ color: var(--color-text-secondary);
222
+ letter-spacing: -0.01em;
223
+ word-break: break-all;
224
+ }
225
+
226
+ .auth-profile-meta {
227
+ display: flex;
228
+ flex-wrap: wrap;
229
+ gap: 8px;
230
+ align-items: center;
231
+ }
232
+
233
+ .auth-profile-actions {
234
+ display: flex;
235
+ flex-wrap: wrap;
236
+ gap: 8px;
237
+ justify-content: flex-end;
238
+ }
239
+
240
+ .auth-profile-grid {
241
+ margin-top: 10px;
242
+ display: grid;
243
+ grid-template-columns: minmax(96px, 130px) minmax(0, 1fr);
244
+ gap: 8px 12px;
245
+ align-items: start;
246
+ }
247
+
248
+ .auth-profile-row {
249
+ display: contents;
250
+ }
251
+
252
+ .auth-profile-key {
253
+ font-family: var(--font-family-mono);
254
+ font-size: var(--font-size-caption);
255
+ color: var(--color-text-muted);
256
+ line-height: 1.4;
257
+ }
258
+
259
+ .auth-profile-value {
260
+ font-family: var(--font-family-mono);
261
+ font-size: var(--font-size-caption);
262
+ color: var(--color-text-secondary);
263
+ line-height: 1.4;
264
+ word-break: break-all;
265
+ }
266
+