codexmate 0.0.28 → 0.0.30

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 (50) hide show
  1. package/cli/builtin-proxy.js +107 -2
  2. package/cli/config-bootstrap.js +30 -12
  3. package/cli/config-health.js +117 -1
  4. package/cli/local-bridge.js +324 -0
  5. package/cli/openai-bridge.js +195 -31
  6. package/cli.js +245 -28
  7. package/lib/cli-webhook.js +126 -0
  8. package/package.json +1 -1
  9. package/web-ui/app.js +28 -8
  10. package/web-ui/index.html +1 -0
  11. package/web-ui/logic.codex.mjs +13 -0
  12. package/web-ui/modules/app.computed.dashboard.mjs +25 -2
  13. package/web-ui/modules/app.computed.session.mjs +22 -17
  14. package/web-ui/modules/app.methods.claude-config.mjs +12 -2
  15. package/web-ui/modules/app.methods.codex-config.mjs +25 -0
  16. package/web-ui/modules/app.methods.index.mjs +2 -0
  17. package/web-ui/modules/app.methods.navigation.mjs +39 -8
  18. package/web-ui/modules/app.methods.providers.mjs +125 -8
  19. package/web-ui/modules/app.methods.session-actions.mjs +1 -1
  20. package/web-ui/modules/app.methods.session-browser.mjs +1 -1
  21. package/web-ui/modules/app.methods.session-trash.mjs +3 -4
  22. package/web-ui/modules/app.methods.startup-claude.mjs +1 -0
  23. package/web-ui/modules/app.methods.webhook.mjs +79 -0
  24. package/web-ui/modules/i18n.dict.mjs +1109 -72
  25. package/web-ui/modules/i18n.mjs +9 -3
  26. package/web-ui/modules/skills.methods.mjs +1 -0
  27. package/web-ui/partials/index/layout-header.html +25 -0
  28. package/web-ui/partials/index/modals-basic.html +0 -3
  29. package/web-ui/partials/index/panel-config-claude.html +8 -2
  30. package/web-ui/partials/index/panel-config-codex.html +28 -3
  31. package/web-ui/partials/index/panel-dashboard.html +33 -0
  32. package/web-ui/partials/index/panel-market.html +3 -3
  33. package/web-ui/partials/index/panel-plugins.html +2 -2
  34. package/web-ui/partials/index/panel-sessions.html +1 -9
  35. package/web-ui/partials/index/panel-settings.html +71 -134
  36. package/web-ui/partials/index/panel-trash.html +88 -0
  37. package/web-ui/session-helpers.mjs +20 -2
  38. package/web-ui/styles/dashboard.css +132 -0
  39. package/web-ui/styles/docs-panel.css +63 -39
  40. package/web-ui/styles/layout-shell.css +54 -34
  41. package/web-ui/styles/plugins-panel.css +121 -80
  42. package/web-ui/styles/sessions-list.css +41 -43
  43. package/web-ui/styles/sessions-preview.css +34 -38
  44. package/web-ui/styles/sessions-toolbar-trash.css +31 -27
  45. package/web-ui/styles/settings-panel.css +197 -33
  46. package/web-ui/styles/skills-list.css +12 -10
  47. package/web-ui/styles/skills-market.css +67 -44
  48. package/web-ui/styles/trash-panel.css +90 -0
  49. package/web-ui/styles/webhook.css +81 -0
  50. package/web-ui/styles.css +2 -0
@@ -1,14 +1,14 @@
1
1
  .plugins-layout {
2
2
  display: grid;
3
- grid-template-columns: minmax(220px, 320px) minmax(0, 1fr);
3
+ grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
4
4
  gap: var(--spacing-sm);
5
5
  align-items: start;
6
6
  }
7
7
 
8
8
  .plugins-sidebar {
9
- border: 1px solid rgba(160, 145, 130, 0.22);
10
- border-radius: var(--radius-md);
11
- background: linear-gradient(to bottom, rgba(255, 255, 255, 0.86) 0%, rgba(255, 255, 255, 0.7) 100%);
9
+ border: 1px solid var(--color-border);
10
+ border-radius: var(--radius-lg);
11
+ background: linear-gradient(to bottom, rgba(255,255,255,0.92) 0%, rgba(255,248,241,0.72) 100%);
12
12
  box-shadow: var(--shadow-subtle);
13
13
  padding: var(--spacing-sm);
14
14
  min-width: 0;
@@ -24,12 +24,12 @@
24
24
  margin-top: 4px;
25
25
  font-size: var(--font-size-caption);
26
26
  color: var(--color-text-tertiary);
27
- line-height: 1.45;
27
+ line-height: 1.5;
28
28
  }
29
29
 
30
30
  .plugins-list {
31
31
  display: grid;
32
- gap: 10px;
32
+ gap: 8px;
33
33
  }
34
34
 
35
35
  .plugins-item {
@@ -37,24 +37,36 @@
37
37
  text-align: left;
38
38
  display: flex;
39
39
  justify-content: space-between;
40
- align-items: flex-start;
40
+ align-items: center;
41
41
  gap: var(--spacing-xs);
42
- padding: 12px 12px;
42
+ padding: 10px 12px;
43
43
  border-radius: var(--radius-sm);
44
- border: 1px solid rgba(160, 145, 130, 0.18);
45
- background: rgba(255, 255, 255, 0.6);
44
+ border: 1px solid transparent;
45
+ background: transparent;
46
46
  cursor: pointer;
47
- transition: border-color var(--transition-fast) var(--ease-spring), background var(--transition-fast) var(--ease-spring), transform var(--transition-fast) var(--ease-spring);
47
+ position: relative;
48
+ transition: all var(--transition-fast) var(--ease-spring);
48
49
  }
49
50
 
50
51
  .plugins-item:hover {
51
- transform: translateY(-1px);
52
- border-color: rgba(208, 88, 58, 0.28);
52
+ background: rgba(255,255,255,0.7);
53
+ transform: translateX(2px);
53
54
  }
54
55
 
55
56
  .plugins-item.active {
56
- border-color: rgba(208, 88, 58, 0.45);
57
- background: linear-gradient(to bottom, rgba(255, 243, 236, 0.96) 0%, rgba(255, 232, 220, 0.78) 100%);
57
+ border-color: rgba(208,88,58,0.2);
58
+ background: linear-gradient(to right, rgba(255,243,236,0.96) 0%, rgba(255,255,255,0.86) 100%);
59
+ box-shadow: 0 2px 8px rgba(200,121,99,0.1);
60
+ }
61
+ .plugins-item.active::before {
62
+ content: '';
63
+ position: absolute;
64
+ left: 0;
65
+ top: 8px;
66
+ bottom: 8px;
67
+ width: 3px;
68
+ border-radius: 0 3px 3px 0;
69
+ background: var(--color-brand);
58
70
  }
59
71
 
60
72
  .plugins-item-main {
@@ -64,11 +76,11 @@
64
76
  .plugins-item-title {
65
77
  font-size: var(--font-size-body);
66
78
  font-weight: var(--font-weight-secondary);
67
- color: var(--color-text-secondary);
79
+ color: var(--color-text-primary);
68
80
  }
69
81
 
70
82
  .plugins-item-meta {
71
- margin-top: 4px;
83
+ margin-top: 3px;
72
84
  font-size: var(--font-size-caption);
73
85
  color: var(--color-text-tertiary);
74
86
  line-height: 1.45;
@@ -80,11 +92,11 @@
80
92
  }
81
93
 
82
94
  .plugins-panel {
83
- border: 1px solid rgba(160, 145, 130, 0.22);
84
- border-radius: var(--radius-md);
85
- background: linear-gradient(to bottom, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0.76) 100%);
86
- box-shadow: var(--shadow-subtle);
87
- padding: var(--spacing-sm);
95
+ border: 1px solid var(--color-border);
96
+ border-radius: var(--radius-lg);
97
+ background: linear-gradient(to bottom, rgba(255,255,255,0.95) 0%, rgba(255,248,241,0.72) 100%);
98
+ box-shadow: var(--shadow-card);
99
+ padding: var(--spacing-md);
88
100
  }
89
101
 
90
102
  .plugins-panel-head {
@@ -95,7 +107,7 @@
95
107
  font-size: var(--font-size-title);
96
108
  font-weight: var(--font-weight-title);
97
109
  color: var(--color-text-primary);
98
- letter-spacing: -0.01em;
110
+ letter-spacing: -0.02em;
99
111
  }
100
112
 
101
113
  .plugins-panel-subtitle {
@@ -107,44 +119,51 @@
107
119
 
108
120
  .plugins-panel-subtitle code {
109
121
  font-family: var(--font-family-mono);
110
- font-size: 0.95em;
122
+ font-size: 0.92em;
123
+ background: var(--color-brand-light);
124
+ padding: 2px 6px;
125
+ border-radius: 6px;
111
126
  }
112
127
 
113
- /* Prompt templates */
128
+ /* Prompt templates modebar */
114
129
  .prompt-templates-modebar {
115
130
  display: inline-flex;
116
- gap: 8px;
117
- padding: 6px;
118
- border: 1px solid rgba(160, 145, 130, 0.18);
119
- border-radius: 999px;
120
- background: rgba(255, 255, 255, 0.62);
121
- margin-bottom: var(--spacing-sm);
131
+ gap: 4px;
132
+ padding: 4px;
133
+ border: 1px solid var(--color-border);
134
+ border-radius: var(--radius-full);
135
+ background: linear-gradient(to bottom, rgba(255,255,255,0.82) 0%, rgba(255,248,241,0.58) 100%);
136
+ backdrop-filter: blur(12px);
137
+ margin-bottom: var(--spacing-md);
122
138
  }
123
139
 
124
140
  .mode-pill {
125
141
  border: 0;
126
- border-radius: 999px;
127
- padding: 8px 12px;
142
+ border-radius: var(--radius-full);
143
+ padding: 9px 18px;
128
144
  font-size: var(--font-size-caption);
129
- letter-spacing: 0.01em;
145
+ font-weight: var(--font-weight-caption);
146
+ letter-spacing: 0.03em;
130
147
  cursor: pointer;
131
148
  background: transparent;
132
149
  color: var(--color-text-tertiary);
133
- transition: background var(--transition-fast) var(--ease-spring), color var(--transition-fast) var(--ease-spring), transform var(--transition-fast) var(--ease-spring);
150
+ transition: all var(--transition-fast) var(--ease-spring);
134
151
  }
135
152
 
136
153
  .mode-pill.active {
137
- background: linear-gradient(to bottom, rgba(201, 94, 75, 0.18) 0%, rgba(201, 94, 75, 0.08) 100%);
138
- color: var(--color-text-secondary);
154
+ background: var(--color-surface-elevated);
155
+ color: var(--color-text-primary);
156
+ box-shadow: 0 1px 4px rgba(92,68,52,0.1), inset 0 0 0 1px rgba(200,121,99,0.2);
139
157
  }
140
158
 
141
- .mode-pill:hover {
142
- transform: translateY(-1px);
159
+ .mode-pill:hover:not(.active) {
160
+ color: var(--color-text-secondary);
161
+ background: rgba(255,255,255,0.5);
143
162
  }
144
163
 
145
164
  .prompt-compose {
146
165
  display: grid;
147
- gap: var(--spacing-sm);
166
+ gap: var(--spacing-md);
148
167
  }
149
168
 
150
169
  .prompt-compose-command-row {
@@ -158,17 +177,17 @@
158
177
  flex: 1;
159
178
  min-width: 240px;
160
179
  background-color: var(--color-surface);
161
- border-color: rgba(163, 146, 134, 0.18);
180
+ border-color: var(--color-border);
162
181
  box-shadow: inset 0 1px 2px rgba(31, 26, 23, 0.03);
163
182
  }
164
183
 
165
184
  .prompt-compose-form {
166
- padding: 12px;
185
+ padding: var(--spacing-sm);
167
186
  border-radius: var(--radius-md);
168
- border: 1px solid rgba(160, 145, 130, 0.18);
169
- background: rgba(255, 255, 255, 0.62);
187
+ border: 1px solid var(--color-border-soft);
188
+ background: rgba(255,255,255,0.6);
170
189
  display: grid;
171
- gap: 10px;
190
+ gap: 12px;
172
191
  }
173
192
 
174
193
  .prompt-compose-template-select {
@@ -246,20 +265,21 @@
246
265
  .prompt-compose-picker-item {
247
266
  width: 100%;
248
267
  text-align: left;
249
- border: 1px dashed var(--color-border-soft);
268
+ border: 1px solid var(--color-border-soft);
250
269
  border-radius: var(--radius-sm);
251
- background: rgba(255, 255, 255, 0.58);
270
+ background: rgba(255,255,255,0.5);
252
271
  padding: 12px;
253
272
  display: flex;
254
273
  justify-content: space-between;
255
- align-items: flex-start;
274
+ align-items: center;
256
275
  gap: 10px;
257
276
  cursor: pointer;
258
- transition: border-color var(--transition-fast) var(--ease-spring), background var(--transition-fast) var(--ease-spring);
277
+ transition: all var(--transition-fast) var(--ease-spring);
259
278
  }
260
279
 
261
280
  .prompt-compose-picker-item:hover {
262
- border-color: rgba(201, 94, 75, 0.55);
281
+ border-color: rgba(200,121,99,0.4);
282
+ background: rgba(255,243,236,0.4);
263
283
  }
264
284
 
265
285
  .prompt-compose-picker-item-title {
@@ -287,16 +307,16 @@
287
307
  }
288
308
 
289
309
  .prompt-compose-selected {
290
- padding: 12px;
310
+ padding: var(--spacing-sm);
291
311
  border-radius: var(--radius-md);
292
- border: 1px solid rgba(160, 145, 130, 0.18);
293
- background: rgba(255, 255, 255, 0.62);
312
+ border: 1px solid var(--color-border-soft);
313
+ background: linear-gradient(to bottom, rgba(255,243,236,0.5) 0%, rgba(255,255,255,0.6) 100%);
294
314
  }
295
315
 
296
316
  .prompt-compose-selected-title {
297
317
  font-size: var(--font-size-body);
298
- font-weight: var(--font-weight-secondary);
299
- color: var(--color-text-secondary);
318
+ font-weight: var(--font-weight-primary);
319
+ color: var(--color-text-primary);
300
320
  }
301
321
 
302
322
  .prompt-compose-selected-meta {
@@ -307,13 +327,13 @@
307
327
  }
308
328
 
309
329
  .prompt-compose-canvas {
310
- padding: 12px;
330
+ padding: var(--spacing-sm);
311
331
  border-radius: var(--radius-md);
312
- border: 1px solid rgba(160, 145, 130, 0.18);
313
- background: rgba(255, 255, 255, 0.62);
332
+ border: 1px solid var(--color-border-soft);
333
+ background: rgba(255,255,255,0.6);
314
334
  font-family: var(--font-family-mono);
315
335
  font-size: var(--font-size-caption);
316
- line-height: 1.6;
336
+ line-height: 1.7;
317
337
  white-space: pre-wrap;
318
338
  overflow-wrap: anywhere;
319
339
  }
@@ -327,21 +347,23 @@
327
347
  vertical-align: baseline;
328
348
  min-width: 120px;
329
349
  max-width: 100%;
330
- padding: 6px 8px;
331
- margin: 0 4px;
332
- border-radius: 10px;
333
- border: 1px solid rgba(201, 94, 75, 0.38);
334
- background: linear-gradient(to bottom, rgba(255, 255, 255, 0.98) 0%, rgba(255, 255, 255, 0.78) 100%);
350
+ padding: 6px 10px;
351
+ margin: 2px 3px;
352
+ border-radius: var(--radius-sm);
353
+ border: 1px solid rgba(200,121,99,0.35);
354
+ background: linear-gradient(to bottom, rgba(255,255,255,0.98) 0%, rgba(255,243,236,0.7) 100%);
335
355
  color: var(--color-text-primary);
336
356
  font-family: var(--font-family-mono);
337
357
  font-size: var(--font-size-caption);
338
358
  line-height: 1.4;
339
359
  resize: vertical;
360
+ transition: border-color var(--transition-fast) var(--ease-spring), box-shadow var(--transition-fast) var(--ease-spring);
340
361
  }
341
362
 
342
363
  .prompt-fragment-var:focus {
343
364
  outline: none;
344
- box-shadow: 0 0 0 3px rgba(201, 94, 75, 0.16);
365
+ border-color: var(--color-brand);
366
+ box-shadow: 0 0 0 3px var(--color-brand-light);
345
367
  }
346
368
 
347
369
  .prompt-templates-grid {
@@ -377,21 +399,37 @@
377
399
  }
378
400
 
379
401
  .prompt-template-item {
380
- border: 1px dashed var(--color-border-soft);
402
+ border: 1px solid var(--color-border-soft);
381
403
  border-radius: var(--radius-sm);
382
- background: rgba(255, 255, 255, 0.58);
383
- padding: 12px;
404
+ background: rgba(255,255,255,0.5);
405
+ padding: 10px 12px;
384
406
  display: flex;
385
407
  justify-content: space-between;
386
- align-items: flex-start;
408
+ align-items: center;
387
409
  gap: 10px;
388
410
  cursor: pointer;
389
- transition: border-color var(--transition-fast) var(--ease-spring), background var(--transition-fast) var(--ease-spring);
411
+ position: relative;
412
+ transition: all var(--transition-fast) var(--ease-spring);
413
+ }
414
+
415
+ .prompt-template-item:hover {
416
+ background: rgba(255,255,255,0.75);
417
+ border-color: var(--color-border);
390
418
  }
391
419
 
392
420
  .prompt-template-item.active {
393
- border-color: rgba(201, 94, 75, 0.55);
394
- background: linear-gradient(to bottom, rgba(201, 94, 75, 0.09) 0%, rgba(201, 94, 75, 0.03) 100%);
421
+ border-color: rgba(200,121,99,0.4);
422
+ background: linear-gradient(to right, rgba(255,243,236,0.8) 0%, rgba(255,255,255,0.7) 100%);
423
+ }
424
+ .prompt-template-item.active::before {
425
+ content: '';
426
+ position: absolute;
427
+ left: 0;
428
+ top: 8px;
429
+ bottom: 8px;
430
+ width: 3px;
431
+ border-radius: 0 3px 3px 0;
432
+ background: var(--color-brand);
395
433
  }
396
434
 
397
435
  .prompt-template-item-title {
@@ -417,10 +455,10 @@
417
455
  display: flex;
418
456
  flex-direction: column;
419
457
  gap: 10px;
420
- padding: 12px;
458
+ padding: var(--spacing-sm);
421
459
  border-radius: var(--radius-md);
422
- border: 1px solid rgba(160, 145, 130, 0.18);
423
- background: rgba(255, 255, 255, 0.62);
460
+ border: 1px solid var(--color-border);
461
+ background: linear-gradient(to bottom, rgba(255,255,255,0.88) 0%, rgba(255,248,241,0.6) 100%);
424
462
  margin-bottom: var(--spacing-sm);
425
463
  }
426
464
 
@@ -454,10 +492,10 @@
454
492
  .prompt-vars-block,
455
493
  .prompt-preview-block {
456
494
  margin-top: var(--spacing-sm);
457
- padding: 12px;
495
+ padding: var(--spacing-sm);
458
496
  border-radius: var(--radius-md);
459
- border: 1px solid rgba(160, 145, 130, 0.18);
460
- background: rgba(255, 255, 255, 0.62);
497
+ border: 1px solid var(--color-border-soft);
498
+ background: rgba(255,255,255,0.6);
461
499
  }
462
500
 
463
501
  .prompt-vars-head {
@@ -494,8 +532,10 @@
494
532
  }
495
533
 
496
534
  .prompt-var-label {
497
- color: var(--color-text-tertiary);
535
+ color: var(--color-brand-dark);
536
+ font-family: var(--font-family-mono);
498
537
  font-size: var(--font-size-caption);
538
+ font-weight: var(--font-weight-caption);
499
539
  }
500
540
 
501
541
  .prompt-var-input {
@@ -504,7 +544,8 @@
504
544
 
505
545
  .prompt-var-input.is-missing {
506
546
  border-color: var(--color-error);
507
- box-shadow: 0 0 0 1px rgba(196, 69, 54, 0.18);
547
+ box-shadow: 0 0 0 2px rgba(196,69,54,0.12);
548
+ animation: var(--transition-normal) ease-in-out;
508
549
  }
509
550
 
510
551
  @media (max-width: 980px) {
@@ -1,23 +1,22 @@
1
1
  .session-empty {
2
- padding: 28px var(--spacing-sm);
2
+ padding: 40px var(--spacing-md);
3
3
  text-align: center;
4
- border: 1px dashed var(--color-border-soft);
4
+ border: 1px solid var(--color-border-soft);
5
5
  border-radius: var(--radius-lg);
6
6
  color: var(--color-text-tertiary);
7
7
  background: var(--bg-warm-gradient);
8
- position: relative;
9
8
  box-shadow: var(--shadow-subtle);
10
9
  }
11
10
 
12
11
  .session-empty::before {
13
12
  content: "";
14
13
  display: block;
15
- width: 36px;
16
- height: 36px;
14
+ width: 40px;
15
+ height: 40px;
17
16
  border-radius: 50%;
18
- margin: 0 auto 10px;
19
- background: rgba(210, 107, 90, 0.12);
20
- box-shadow: inset 0 0 0 6px rgba(255, 255, 255, 0.7);
17
+ margin: 0 auto 14px;
18
+ background: linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-dark) 100%);
19
+ opacity: 0.18;
21
20
  }
22
21
 
23
22
  .trash-list {
@@ -43,7 +42,7 @@
43
42
  }
44
43
 
45
44
  .trash-item.session-item::before {
46
- background: linear-gradient(180deg, rgba(70, 86, 110, 0.26), rgba(70, 86, 110, 0.08));
45
+ background: var(--color-border-soft);
47
46
  }
48
47
 
49
48
  .trash-item-main {
@@ -139,7 +138,7 @@
139
138
  .session-layout {
140
139
  display: grid;
141
140
  grid-template-columns: minmax(260px, 360px) minmax(0, 1fr);
142
- gap: var(--spacing-sm);
141
+ gap: var(--spacing-md);
143
142
  align-items: start;
144
143
  height: min(72vh, 760px);
145
144
  min-height: 360px;
@@ -196,9 +195,9 @@
196
195
 
197
196
  .session-item {
198
197
  border: 1px solid var(--color-border-soft);
199
- border-radius: var(--radius-sm);
200
- background: linear-gradient(to bottom, var(--color-surface) 0%, rgba(255, 255, 255, 0.92) 100%);
201
- padding: 16px;
198
+ border-radius: var(--radius-md);
199
+ background: var(--color-surface);
200
+ padding: 14px 16px;
202
201
  cursor: pointer;
203
202
  transition: all var(--transition-fast) var(--ease-spring);
204
203
  user-select: none;
@@ -233,10 +232,10 @@
233
232
  }
234
233
 
235
234
  .session-item:focus-visible {
236
- outline: 3px solid rgba(201, 94, 75, 0.25);
235
+ outline: 3px solid rgba(210, 107, 90, 0.2);
237
236
  outline-offset: 2px;
238
237
  border-color: var(--color-brand);
239
- background: linear-gradient(to bottom, rgba(210, 107, 90, 0.08) 0%, rgba(255, 255, 255, 0.98) 100%);
238
+ background: linear-gradient(to bottom, rgba(210, 107, 90, 0.06) 0%, rgba(255, 255, 255, 0.98) 100%);
240
239
  }
241
240
 
242
241
  .session-item::before {
@@ -247,7 +246,7 @@
247
246
  bottom: 10px;
248
247
  width: 3px;
249
248
  border-radius: 999px;
250
- background: rgba(210, 107, 90, 0.15);
249
+ background: var(--color-border-soft);
251
250
  transition: background var(--transition-fast) var(--ease-spring);
252
251
  }
253
252
 
@@ -257,22 +256,23 @@
257
256
 
258
257
  .session-item.active {
259
258
  border-color: var(--color-brand);
260
- background: linear-gradient(to bottom, rgba(210, 107, 90, 0.1) 0%, rgba(255, 255, 255, 0.98) 100%);
261
- box-shadow: 0 6px 16px rgba(210, 107, 90, 0.12);
259
+ background: linear-gradient(to bottom, rgba(210, 107, 90, 0.06) 0%, rgba(255, 255, 255, 0.98) 100%);
260
+ box-shadow: var(--shadow-float);
262
261
  }
263
262
 
264
263
  .session-item.pinned {
265
- border-color: rgba(208, 88, 58, 0.42);
266
- background: linear-gradient(to bottom, rgba(210, 107, 90, 0.12) 0%, rgba(255, 251, 247, 0.98) 100%);
267
- box-shadow: 0 8px 18px rgba(210, 107, 90, 0.10);
264
+ border-color: var(--color-brand);
265
+ background: linear-gradient(to bottom, rgba(210, 107, 90, 0.08) 0%, rgba(255, 251, 247, 0.98) 100%);
266
+ box-shadow: 0 4px 12px rgba(210, 107, 90, 0.08);
268
267
  }
269
268
 
270
269
  .session-item.pinned::before {
271
- background: linear-gradient(180deg, rgba(201, 94, 75, 0.8), rgba(201, 94, 75, 0.32));
270
+ background: linear-gradient(180deg, var(--color-brand), var(--color-brand-dark));
271
+ opacity: 0.7;
272
272
  }
273
273
 
274
274
  .session-item.active::before {
275
- background: linear-gradient(180deg, rgba(201, 94, 75, 0.9), rgba(201, 94, 75, 0.4));
275
+ background: linear-gradient(180deg, var(--color-brand), var(--color-brand-dark));
276
276
  }
277
277
 
278
278
  .session-item-title {
@@ -295,11 +295,11 @@
295
295
  }
296
296
 
297
297
  .session-item-copy {
298
- border: 1px solid rgba(70, 86, 110, 0.35);
299
- background: rgba(70, 86, 110, 0.08);
298
+ border: 1px solid var(--color-border-soft);
299
+ background: var(--color-surface-alt);
300
300
  color: var(--color-text-secondary);
301
- width: 22px;
302
- height: 22px;
301
+ width: 24px;
302
+ height: 24px;
303
303
  border-radius: 8px;
304
304
  display: inline-flex;
305
305
  align-items: center;
@@ -310,9 +310,9 @@
310
310
  }
311
311
 
312
312
  .session-item-copy:hover {
313
- border-color: rgba(70, 86, 110, 0.7);
314
- background: rgba(70, 86, 110, 0.16);
315
- color: var(--color-text-primary);
313
+ border-color: var(--color-brand);
314
+ background: var(--color-surface);
315
+ color: var(--color-brand);
316
316
  transform: translateY(-1px);
317
317
  }
318
318
 
@@ -328,25 +328,25 @@
328
328
  }
329
329
 
330
330
  .session-item-pin {
331
- border-color: rgba(208, 88, 58, 0.24);
331
+ border-color: var(--color-border-soft);
332
332
  }
333
333
 
334
334
  .session-item-pin .pin-icon,
335
335
  .session-item-pin svg {
336
336
  width: 9px;
337
337
  height: 9px;
338
- color: rgba(208, 88, 58, 0.78);
338
+ color: var(--color-text-tertiary);
339
339
  }
340
340
 
341
341
  .session-item.pinned .session-item-pin {
342
- background: rgba(208, 88, 58, 0.16);
343
- border-color: rgba(208, 88, 58, 0.46);
344
- box-shadow: inset 0 0 0 1px rgba(208, 88, 58, 0.08);
342
+ background: var(--color-brand);
343
+ border-color: var(--color-brand);
344
+ opacity: 0.85;
345
345
  }
346
346
 
347
347
  .session-item.pinned .session-item-pin .pin-icon,
348
348
  .session-item.pinned .session-item-pin svg {
349
- color: var(--color-brand-dark);
349
+ color: #fff;
350
350
  }
351
351
 
352
352
  .session-item-sub.session-item-snippet {
@@ -383,11 +383,10 @@
383
383
 
384
384
  .session-item-hot {
385
385
  font-size: var(--font-size-caption);
386
- padding: 2px 6px;
386
+ padding: 2px 8px;
387
387
  border-radius: 999px;
388
- background: rgba(208, 88, 58, 0.14);
389
- border: 1px solid rgba(208, 88, 58, 0.26);
390
- color: rgba(140, 46, 24, 0.9);
388
+ background: linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-dark) 100%);
389
+ color: #fff;
391
390
  line-height: 1;
392
391
  white-space: nowrap;
393
392
  }
@@ -405,7 +404,7 @@
405
404
  .session-preview {
406
405
  border: 1px solid var(--color-border-soft);
407
406
  border-radius: var(--radius-xl);
408
- background: linear-gradient(to bottom, var(--color-surface-elevated) 0%, rgba(255, 255, 255, 0.96) 100%);
407
+ background: var(--color-surface-elevated);
409
408
  box-shadow: var(--shadow-card);
410
409
  min-height: 0;
411
410
  max-height: none;
@@ -414,6 +413,5 @@
414
413
  flex-direction: column;
415
414
  overflow: hidden;
416
415
  position: relative;
417
- transform: translateX(4px);
418
- transition: transform var(--transition-normal) var(--ease-spring-soft), box-shadow var(--transition-normal) var(--ease-spring-soft);
416
+ transition: box-shadow var(--transition-normal) var(--ease-spring-soft);
419
417
  }