codexmate 0.0.20 → 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 -259
  2. package/README.md +284 -252
  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 -338
  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 +13101 -13497
  14. package/lib/cli-file-utils.js +151 -151
  15. package/lib/cli-models-utils.js +419 -311
  16. package/lib/cli-network-utils.js +164 -164
  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 -70
  27. package/res/json5.min.js +1 -1
  28. package/res/vue.global.prod.js +13 -0
  29. package/web-ui/app.js +530 -397
  30. package/web-ui/index.html +33 -30
  31. package/web-ui/logic.agents-diff.mjs +386 -386
  32. package/web-ui/logic.claude.mjs +168 -108
  33. package/web-ui/logic.mjs +5 -5
  34. package/web-ui/logic.runtime.mjs +124 -124
  35. package/web-ui/logic.sessions.mjs +581 -263
  36. package/web-ui/modules/api.mjs +90 -69
  37. package/web-ui/modules/app.computed.dashboard.mjs +113 -113
  38. package/web-ui/modules/app.computed.index.mjs +15 -13
  39. package/web-ui/modules/app.computed.main-tabs.mjs +195 -0
  40. package/web-ui/modules/app.computed.session.mjs +507 -141
  41. package/web-ui/modules/app.constants.mjs +15 -15
  42. package/web-ui/modules/app.methods.agents.mjs +493 -493
  43. package/web-ui/modules/app.methods.claude-config.mjs +174 -174
  44. package/web-ui/modules/app.methods.codex-config.mjs +640 -640
  45. package/web-ui/modules/app.methods.index.mjs +88 -86
  46. package/web-ui/modules/app.methods.install.mjs +149 -157
  47. package/web-ui/modules/app.methods.navigation.mjs +619 -478
  48. package/web-ui/modules/app.methods.openclaw-core.mjs +814 -514
  49. package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -337
  50. package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -251
  51. package/web-ui/modules/app.methods.providers.mjs +363 -265
  52. package/web-ui/modules/app.methods.runtime.mjs +323 -323
  53. package/web-ui/modules/app.methods.session-actions.mjs +520 -457
  54. package/web-ui/modules/app.methods.session-browser.mjs +626 -435
  55. package/web-ui/modules/app.methods.session-timeline.mjs +448 -441
  56. package/web-ui/modules/app.methods.session-trash.mjs +422 -419
  57. package/web-ui/modules/app.methods.startup-claude.mjs +412 -406
  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 -69
  63. package/web-ui/partials/index/layout-header.html +402 -337
  64. package/web-ui/partials/index/modal-config-template-agents.html +125 -125
  65. package/web-ui/partials/index/modal-confirm-toast.html +32 -32
  66. package/web-ui/partials/index/modal-health-check.html +72 -72
  67. package/web-ui/partials/index/modal-openclaw-config.html +280 -275
  68. package/web-ui/partials/index/modal-skills.html +184 -184
  69. package/web-ui/partials/index/modals-basic.html +156 -196
  70. package/web-ui/partials/index/panel-config-claude.html +126 -100
  71. package/web-ui/partials/index/panel-config-codex.html +237 -237
  72. package/web-ui/partials/index/panel-config-openclaw.html +78 -84
  73. package/web-ui/partials/index/panel-docs.html +130 -0
  74. package/web-ui/partials/index/panel-market.html +174 -174
  75. package/web-ui/partials/index/panel-orchestration.html +397 -0
  76. package/web-ui/partials/index/panel-sessions.html +292 -387
  77. package/web-ui/partials/index/panel-settings.html +190 -166
  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 -233
  81. package/web-ui/styles/base-theme.css +271 -373
  82. package/web-ui/styles/controls-forms.css +360 -354
  83. package/web-ui/styles/docs-panel.css +182 -0
  84. package/web-ui/styles/feedback.css +108 -108
  85. package/web-ui/styles/health-check-dialog.css +144 -144
  86. package/web-ui/styles/layout-shell.css +376 -330
  87. package/web-ui/styles/modals-core.css +464 -449
  88. package/web-ui/styles/navigation-panels.css +348 -381
  89. package/web-ui/styles/openclaw-structured.css +266 -266
  90. package/web-ui/styles/responsive.css +450 -416
  91. package/web-ui/styles/sessions-list.css +400 -414
  92. package/web-ui/styles/sessions-preview.css +411 -405
  93. package/web-ui/styles/sessions-toolbar-trash.css +243 -243
  94. package/web-ui/styles/sessions-usage.css +628 -276
  95. package/web-ui/styles/skills-list.css +296 -298
  96. package/web-ui/styles/skills-market.css +335 -335
  97. package/web-ui/styles/task-orchestration.css +776 -0
  98. package/web-ui/styles/titles-cards.css +408 -407
  99. package/web-ui/styles.css +18 -16
  100. package/web-ui.html +17 -17
  101. package/res/screenshot.png +0 -0
  102. package/res/vue.global.js +0 -18552
@@ -1,381 +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: 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
- }
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
+ }