codexmate 0.0.19 → 0.0.21

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 (102) hide show
  1. package/README.en.md +349 -255
  2. package/README.md +284 -248
  3. package/cli/agents-files.js +162 -0
  4. package/cli/archive-helpers.js +446 -0
  5. package/cli/auth-profiles.js +359 -0
  6. package/cli/builtin-proxy.js +580 -0
  7. package/cli/claude-proxy.js +998 -0
  8. package/cli/config-bootstrap.js +384 -0
  9. package/cli/config-health.js +338 -0
  10. package/cli/openclaw-config.js +629 -0
  11. package/cli/skills.js +1141 -0
  12. package/cli/zip-commands.js +510 -0
  13. package/cli.js +13129 -12973
  14. package/lib/cli-file-utils.js +151 -151
  15. package/lib/cli-models-utils.js +419 -152
  16. package/lib/cli-network-utils.js +164 -148
  17. package/lib/cli-path-utils.js +69 -0
  18. package/lib/cli-session-utils.js +121 -121
  19. package/lib/cli-sessions.js +386 -0
  20. package/lib/cli-utils.js +155 -155
  21. package/lib/download-artifacts.js +77 -0
  22. package/lib/mcp-stdio.js +440 -440
  23. package/lib/task-orchestrator.js +869 -0
  24. package/lib/text-diff.js +303 -303
  25. package/lib/workflow-engine.js +340 -340
  26. package/package.json +74 -63
  27. package/res/json5.min.js +1 -1
  28. package/res/vue.global.prod.js +13 -0
  29. package/web-ui/app.js +530 -5548
  30. package/web-ui/index.html +33 -2246
  31. package/web-ui/logic.agents-diff.mjs +386 -0
  32. package/web-ui/logic.claude.mjs +168 -0
  33. package/web-ui/logic.mjs +5 -793
  34. package/web-ui/logic.runtime.mjs +124 -0
  35. package/web-ui/logic.sessions.mjs +581 -0
  36. package/web-ui/modules/api.mjs +90 -0
  37. package/web-ui/modules/app.computed.dashboard.mjs +113 -0
  38. package/web-ui/modules/app.computed.index.mjs +15 -0
  39. package/web-ui/modules/app.computed.main-tabs.mjs +195 -0
  40. package/web-ui/modules/app.computed.session.mjs +507 -0
  41. package/web-ui/modules/app.constants.mjs +15 -0
  42. package/web-ui/modules/app.methods.agents.mjs +493 -0
  43. package/web-ui/modules/app.methods.claude-config.mjs +174 -0
  44. package/web-ui/modules/app.methods.codex-config.mjs +640 -0
  45. package/web-ui/modules/app.methods.index.mjs +88 -0
  46. package/web-ui/modules/app.methods.install.mjs +149 -0
  47. package/web-ui/modules/app.methods.navigation.mjs +619 -0
  48. package/web-ui/modules/app.methods.openclaw-core.mjs +814 -0
  49. package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -0
  50. package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -0
  51. package/web-ui/modules/app.methods.providers.mjs +363 -0
  52. package/web-ui/modules/app.methods.runtime.mjs +323 -0
  53. package/web-ui/modules/app.methods.session-actions.mjs +520 -0
  54. package/web-ui/modules/app.methods.session-browser.mjs +626 -0
  55. package/web-ui/modules/app.methods.session-timeline.mjs +448 -0
  56. package/web-ui/modules/app.methods.session-trash.mjs +422 -0
  57. package/web-ui/modules/app.methods.startup-claude.mjs +412 -0
  58. package/web-ui/modules/app.methods.task-orchestration.mjs +471 -0
  59. package/web-ui/modules/config-mode.computed.mjs +126 -124
  60. package/web-ui/modules/skills.computed.mjs +107 -107
  61. package/web-ui/modules/skills.methods.mjs +481 -481
  62. package/web-ui/partials/index/layout-footer.html +13 -0
  63. package/web-ui/partials/index/layout-header.html +402 -0
  64. package/web-ui/partials/index/modal-config-template-agents.html +125 -0
  65. package/web-ui/partials/index/modal-confirm-toast.html +32 -0
  66. package/web-ui/partials/index/modal-health-check.html +72 -0
  67. package/web-ui/partials/index/modal-openclaw-config.html +280 -0
  68. package/web-ui/partials/index/modal-skills.html +184 -0
  69. package/web-ui/partials/index/modals-basic.html +156 -0
  70. package/web-ui/partials/index/panel-config-claude.html +126 -0
  71. package/web-ui/partials/index/panel-config-codex.html +237 -0
  72. package/web-ui/partials/index/panel-config-openclaw.html +78 -0
  73. package/web-ui/partials/index/panel-docs.html +130 -0
  74. package/web-ui/partials/index/panel-market.html +174 -0
  75. package/web-ui/partials/index/panel-orchestration.html +397 -0
  76. package/web-ui/partials/index/panel-sessions.html +292 -0
  77. package/web-ui/partials/index/panel-settings.html +190 -0
  78. package/web-ui/partials/index/panel-usage.html +213 -0
  79. package/web-ui/session-helpers.mjs +559 -362
  80. package/web-ui/source-bundle.cjs +233 -0
  81. package/web-ui/styles/base-theme.css +271 -0
  82. package/web-ui/styles/controls-forms.css +360 -0
  83. package/web-ui/styles/docs-panel.css +182 -0
  84. package/web-ui/styles/feedback.css +108 -0
  85. package/web-ui/styles/health-check-dialog.css +144 -0
  86. package/web-ui/styles/layout-shell.css +376 -0
  87. package/web-ui/styles/modals-core.css +464 -0
  88. package/web-ui/styles/navigation-panels.css +348 -0
  89. package/web-ui/styles/openclaw-structured.css +266 -0
  90. package/web-ui/styles/responsive.css +450 -0
  91. package/web-ui/styles/sessions-list.css +400 -0
  92. package/web-ui/styles/sessions-preview.css +411 -0
  93. package/web-ui/styles/sessions-toolbar-trash.css +243 -0
  94. package/web-ui/styles/sessions-usage.css +628 -0
  95. package/web-ui/styles/skills-list.css +296 -0
  96. package/web-ui/styles/skills-market.css +335 -0
  97. package/web-ui/styles/task-orchestration.css +776 -0
  98. package/web-ui/styles/titles-cards.css +408 -0
  99. package/web-ui/styles.css +18 -4668
  100. package/web-ui.html +17 -17
  101. package/res/screenshot.png +0 -0
  102. package/res/vue.global.js +0 -18552
@@ -0,0 +1,348 @@
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: 8px;
38
+ margin: 0 0 12px;
39
+ }
40
+
41
+ .status-chip {
42
+ min-width: 0;
43
+ max-width: 100%;
44
+ padding: 6px 10px;
45
+ border: 1px solid var(--color-border);
46
+ background: rgba(255, 253, 252, 0.82);
47
+ box-shadow: none;
48
+ display: inline-flex;
49
+ flex-direction: row;
50
+ align-items: center;
51
+ gap: 8px;
52
+ border-radius: 999px;
53
+ }
54
+
55
+ .status-chip .label {
56
+ display: inline;
57
+ font-size: 10px;
58
+ color: var(--color-text-muted);
59
+ margin-bottom: 0;
60
+ letter-spacing: 0.06em;
61
+ text-transform: uppercase;
62
+ flex-shrink: 0;
63
+ }
64
+
65
+ .status-chip .value {
66
+ font-size: 12px;
67
+ font-weight: 600;
68
+ color: var(--color-text-primary);
69
+ letter-spacing: -0.01em;
70
+ white-space: nowrap;
71
+ overflow-wrap: normal;
72
+ word-break: normal;
73
+ }
74
+
75
+ .provider-fast-switch {
76
+ margin: 0 0 14px;
77
+ padding: 10px 12px;
78
+ border-radius: 10px;
79
+ border: 1px solid var(--color-border);
80
+ background: rgba(255, 253, 252, 0.88);
81
+ box-shadow: none;
82
+ display: grid;
83
+ gap: 6px;
84
+ }
85
+
86
+ .provider-fast-switch-label {
87
+ font-size: 11px;
88
+ color: var(--color-text-tertiary);
89
+ letter-spacing: 0.02em;
90
+ font-weight: 600;
91
+ }
92
+
93
+ .provider-fast-switch-select {
94
+ width: 100%;
95
+ min-height: 36px;
96
+ padding: 7px 10px;
97
+ padding-right: 38px;
98
+ border: 1px solid var(--color-border-soft);
99
+ border-radius: var(--radius-sm);
100
+ font-size: var(--font-size-body);
101
+ color: var(--color-text-primary);
102
+ background-color: var(--color-surface-alt);
103
+ outline: none;
104
+ cursor: pointer;
105
+ appearance: none;
106
+ 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");
107
+ background-repeat: no-repeat;
108
+ background-position: right 12px center;
109
+ background-size: 12px;
110
+ }
111
+
112
+ .provider-fast-switch-select:focus {
113
+ border-color: var(--color-brand);
114
+ box-shadow: var(--shadow-input-focus);
115
+ }
116
+
117
+ .main-panel {
118
+ min-width: 0;
119
+ background: var(--color-bg);
120
+ border: none;
121
+ border-radius: 0;
122
+ box-shadow: none;
123
+ padding: 0 28px 28px;
124
+ backdrop-filter: none;
125
+ position: relative;
126
+ overflow-x: hidden;
127
+ overflow-y: auto;
128
+ min-height: 0;
129
+ height: 100vh;
130
+ scrollbar-width: none;
131
+ -ms-overflow-style: none;
132
+ }
133
+
134
+ .main-panel::-webkit-scrollbar {
135
+ display: none;
136
+ }
137
+
138
+ .main-panel-topbar {
139
+ position: sticky;
140
+ top: 0;
141
+ z-index: 12;
142
+ margin: 0 -28px 14px;
143
+ padding: 0 28px 12px;
144
+ background: linear-gradient(180deg, rgba(247, 243, 239, 0.96) 0%, rgba(247, 243, 239, 0.92) 78%, rgba(247, 243, 239, 0) 100%);
145
+ backdrop-filter: blur(8px);
146
+ }
147
+
148
+ .panel-header {
149
+ margin-bottom: 14px;
150
+ text-align: left;
151
+ }
152
+
153
+ .panel-header-refined {
154
+ display: flex;
155
+ align-items: center;
156
+ justify-content: space-between;
157
+ gap: 14px;
158
+ margin: 0 0 14px;
159
+ padding: 18px 0 14px;
160
+ border-bottom: 1px solid var(--color-border);
161
+ background: transparent;
162
+ }
163
+
164
+ .panel-header-copy {
165
+ display: flex;
166
+ flex-direction: column;
167
+ gap: 4px;
168
+ max-width: none;
169
+ }
170
+
171
+ .panel-kicker {
172
+ font-size: 10px;
173
+ letter-spacing: 0.08em;
174
+ text-transform: uppercase;
175
+ color: var(--color-brand-dark);
176
+ font-weight: 700;
177
+ }
178
+
179
+ .hero {
180
+ display: flex;
181
+ align-items: center;
182
+ gap: var(--spacing-sm);
183
+ margin-bottom: var(--spacing-sm);
184
+ }
185
+
186
+ .hero-logo {
187
+ display: none;
188
+ }
189
+
190
+ .hero-title {
191
+ font-size: clamp(22px, 2.4vw, 30px);
192
+ line-height: 1.08;
193
+ font-family: var(--font-family-display);
194
+ color: var(--color-text-primary);
195
+ letter-spacing: -0.025em;
196
+ }
197
+
198
+ .hero-title .accent {
199
+ color: var(--color-brand);
200
+ }
201
+
202
+ .hero-subtitle {
203
+ margin-top: 0;
204
+ font-size: 13px;
205
+ color: var(--color-text-tertiary);
206
+ line-height: 1.5;
207
+ max-width: 54ch;
208
+ }
209
+
210
+ .hero-github {
211
+ display: none;
212
+ margin-bottom: var(--spacing-sm);
213
+ }
214
+
215
+ .top-tabs {
216
+ margin: 10px 12px 12px;
217
+ background: transparent;
218
+ border: none;
219
+ border-radius: 0;
220
+ padding: 0 8px 2px 2px;
221
+ box-shadow: none;
222
+ display: flex;
223
+ flex-wrap: nowrap;
224
+ gap: 6px;
225
+ backdrop-filter: none;
226
+ overflow-x: auto;
227
+ overflow-y: hidden;
228
+ -webkit-overflow-scrolling: touch;
229
+ scrollbar-width: none;
230
+ scroll-snap-type: x proximity;
231
+ }
232
+
233
+ .top-tabs::-webkit-scrollbar {
234
+ display: none;
235
+ }
236
+
237
+ .top-tab {
238
+ border: 1px solid var(--color-border);
239
+ border-radius: 999px;
240
+ background: var(--color-surface);
241
+ padding: 6px 10px;
242
+ font-size: 11px;
243
+ color: var(--color-text-secondary);
244
+ text-align: center;
245
+ cursor: pointer;
246
+ transition: border-color var(--transition-fast) var(--ease-smooth), background-color var(--transition-fast) var(--ease-smooth), color var(--transition-fast) var(--ease-smooth);
247
+ box-shadow: none;
248
+ flex: 0 0 auto;
249
+ scroll-snap-align: start;
250
+ }
251
+
252
+ .top-tab:hover {
253
+ border-color: var(--color-border-strong);
254
+ color: var(--color-text-primary);
255
+ }
256
+
257
+ .top-tab.active,
258
+ .top-tab.nav-intent-active {
259
+ border-color: rgba(199, 116, 98, 0.18);
260
+ color: var(--color-brand-dark);
261
+ background: var(--color-brand-light);
262
+ box-shadow: none;
263
+ }
264
+
265
+ .top-tab.nav-intent-inactive,
266
+ .top-tab.active.nav-intent-inactive {
267
+ border-color: var(--color-border);
268
+ color: var(--color-text-secondary);
269
+ background: var(--color-surface);
270
+ box-shadow: none;
271
+ }
272
+
273
+ #panel-sessions.session-panel-fast-hidden {
274
+ display: none !important;
275
+ }
276
+
277
+ .config-subtabs {
278
+ display: flex;
279
+ gap: 6px;
280
+ margin-bottom: 12px;
281
+ padding: 4px;
282
+ background: rgba(246, 241, 235, 0.72);
283
+ border-radius: 12px;
284
+ border: 1px solid rgba(216, 201, 184, 0.26);
285
+ box-shadow: none;
286
+ }
287
+
288
+ .config-subtab {
289
+ border: 1px solid rgba(216, 201, 184, 0.3);
290
+ border-radius: 10px;
291
+ padding: 8px 10px;
292
+ background: rgba(255, 255, 255, 0.82);
293
+ color: var(--color-text-secondary);
294
+ cursor: pointer;
295
+ font-size: 13px;
296
+ font-weight: var(--font-weight-secondary);
297
+ transition: all var(--transition-fast) var(--ease-smooth);
298
+ box-shadow: none;
299
+ }
300
+
301
+ .config-subtab:hover {
302
+ border-color: var(--color-border-strong);
303
+ color: var(--color-text-primary);
304
+ }
305
+
306
+ .config-subtab.active {
307
+ border-color: rgba(201, 94, 75, 0.34);
308
+ color: var(--color-text-primary);
309
+ background: rgba(255, 255, 255, 0.98);
310
+ box-shadow: 0 1px 4px rgba(31, 26, 23, 0.025);
311
+ }
312
+
313
+ .settings-subtabs {
314
+ margin-bottom: var(--spacing-sm);
315
+ }
316
+
317
+ .settings-tab-badge {
318
+ display: inline-flex;
319
+ align-items: center;
320
+ justify-content: center;
321
+ min-width: 18px;
322
+ height: 18px;
323
+ margin-left: 6px;
324
+ padding: 0 6px;
325
+ border-radius: 999px;
326
+ background: rgba(210, 107, 90, 0.14);
327
+ color: var(--color-text-secondary);
328
+ font-size: 11px;
329
+ line-height: 1;
330
+ }
331
+
332
+ .content-wrapper {
333
+ background: transparent;
334
+ border: none;
335
+ border-radius: 0;
336
+ box-shadow: none;
337
+ padding: 0 0 40px;
338
+ width: min(100%, 1480px);
339
+ max-width: none;
340
+ }
341
+
342
+ .mode-content {
343
+ width: 100%;
344
+ border-radius: 0;
345
+ background: transparent;
346
+ box-shadow: none;
347
+ padding: 0;
348
+ }
@@ -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
+