clay-server 3.6.0-beta.1 → 3.6.0

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 (58) hide show
  1. package/README.md +54 -196
  2. package/bin/cli.js +7 -42
  3. package/lib/builtin-mates.js +1 -1
  4. package/lib/cli-wordmark.js +32 -0
  5. package/lib/pages.js +47 -35
  6. package/lib/public/app.js +2 -10
  7. package/lib/public/apple-touch-icon.png +0 -0
  8. package/lib/public/clay-studio-favicon-32.png +0 -0
  9. package/lib/public/clay-studio-symbol.png +0 -0
  10. package/lib/public/clay-studio-wordmark.svg +20 -0
  11. package/lib/public/css/base.css +143 -61
  12. package/lib/public/css/filebrowser.css +54 -8
  13. package/lib/public/css/icon-strip.css +33 -19
  14. package/lib/public/css/input.css +15 -5
  15. package/lib/public/css/messages.css +17 -14
  16. package/lib/public/css/mobile-nav.css +5 -5
  17. package/lib/public/css/overlays.css +58 -6
  18. package/lib/public/css/pane.css +0 -1
  19. package/lib/public/css/session-actions.css +9 -3
  20. package/lib/public/css/sidebar.css +104 -161
  21. package/lib/public/css/title-bar.css +51 -18
  22. package/lib/public/css/user-settings.css +114 -8
  23. package/lib/public/icon-192.png +0 -0
  24. package/lib/public/icon-512.png +0 -0
  25. package/lib/public/index.html +32 -76
  26. package/lib/public/manifest.json +1 -6
  27. package/lib/public/modules/app-connection.js +0 -3
  28. package/lib/public/modules/app-favicon.js +22 -29
  29. package/lib/public/modules/app-messages.js +1 -2
  30. package/lib/public/modules/app-notifications.js +3 -3
  31. package/lib/public/modules/command-palette.js +1 -1
  32. package/lib/public/modules/server-settings.js +0 -77
  33. package/lib/public/modules/sidebar-projects.js +1 -1
  34. package/lib/public/modules/sidebar-sessions.js +18 -5
  35. package/lib/public/modules/sidebar.js +2 -2
  36. package/lib/public/modules/theme.js +88 -249
  37. package/lib/public/modules/user-settings.js +2 -3
  38. package/lib/public/style.css +10 -10
  39. package/lib/public/sw.js +4 -2
  40. package/lib/themes/clay-dark.json +11 -0
  41. package/lib/themes/clay-light.json +11 -0
  42. package/package.json +1 -1
  43. package/lib/public/apple-touch-icon-dark.png +0 -0
  44. package/lib/public/clay-logo.png +0 -0
  45. package/lib/public/favicon-banded-32.png +0 -0
  46. package/lib/public/favicon-banded.png +0 -0
  47. package/lib/public/favicon-dark.svg +0 -1
  48. package/lib/public/favicon.svg +0 -1
  49. package/lib/public/icon-192-dark.png +0 -0
  50. package/lib/public/icon-512-dark.png +0 -0
  51. package/lib/public/icon-banded-76.png +0 -0
  52. package/lib/public/icon-banded-96.png +0 -0
  53. package/lib/public/icon-mono.svg +0 -1
  54. package/lib/public/modules/ascii-logo.js +0 -442
  55. package/lib/public/wordmark-banded-20.png +0 -0
  56. package/lib/public/wordmark-banded-32.png +0 -0
  57. package/lib/public/wordmark-banded-64.png +0 -0
  58. package/lib/public/wordmark-banded-80.png +0 -0
@@ -177,8 +177,7 @@
177
177
  /* --- Delegated work-order card ------------------------------------- */
178
178
  /* Self-contained: the generic bubble avatar/name/time are hidden and the
179
179
  identity lives in the card's own header strip. The body stays on a
180
- NEUTRAL background -- accent only touches the header and the top rule,
181
- so long technical briefs read like a document, not a tinted bubble. */
180
+ neutral background, with a restrained routing color for metadata. */
182
181
  .msg-user-delegated .dm-bubble-avatar,
183
182
  .msg-user-delegated .dm-bubble-header {
184
183
  display: none;
@@ -189,7 +188,7 @@
189
188
  overflow: hidden;
190
189
  background: var(--bg);
191
190
  border: 1px solid var(--border);
192
- border-top: 2px solid var(--accent);
191
+ border-top: 1px solid color-mix(in srgb, var(--link) 55%, var(--border));
193
192
  border-radius: 12px;
194
193
  max-width: min(720px, 100%);
195
194
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.14), 0 4px 14px rgba(0, 0, 0, 0.08);
@@ -201,7 +200,7 @@
201
200
  gap: 10px;
202
201
  padding: 10px 14px;
203
202
  background: linear-gradient(to bottom,
204
- color-mix(in srgb, var(--accent) 7%, var(--bg-alt)),
203
+ color-mix(in srgb, var(--link) 3%, var(--bg-alt)),
205
204
  var(--bg-alt));
206
205
  border-bottom: 1px solid var(--border-subtle);
207
206
  }
@@ -225,7 +224,7 @@
225
224
  font-weight: 700;
226
225
  letter-spacing: 0.09em;
227
226
  text-transform: uppercase;
228
- color: var(--accent);
227
+ color: color-mix(in srgb, var(--link) 68%, var(--text-secondary));
229
228
  line-height: 1;
230
229
  }
231
230
 
@@ -277,8 +276,8 @@
277
276
  }
278
277
  .msg-user-delegated .delegated-brief li { margin: 3px 0; }
279
278
  .msg-user-delegated .delegated-brief li::marker {
280
- color: var(--accent);
281
- font-weight: 650;
279
+ color: color-mix(in srgb, var(--link) 52%, var(--text-muted));
280
+ font-weight: 600;
282
281
  }
283
282
 
284
283
  .msg-user-delegated .dm-bubble-avatar-other {
@@ -286,8 +285,8 @@
286
285
  }
287
286
 
288
287
  .msg-user-delegated .dm-bubble-name {
289
- color: var(--accent);
290
- font-weight: 650;
288
+ color: color-mix(in srgb, var(--link) 62%, var(--text-secondary));
289
+ font-weight: 600;
291
290
  }
292
291
 
293
292
  /* --- User message action bar --- */
@@ -393,6 +392,7 @@
393
392
 
394
393
  .md-content {
395
394
  font-size: 15px;
395
+ font-weight: var(--font-weight-body);
396
396
  line-height: 1.7;
397
397
  word-break: break-word;
398
398
  color: var(--text);
@@ -477,14 +477,17 @@ pre:hover .code-copy-btn { opacity: 1; }
477
477
  border-radius: 0;
478
478
  }
479
479
 
480
- .md-content strong { font-weight: 600; }
480
+ .md-content strong { font-weight: var(--font-weight-heading); }
481
481
  .md-content em { font-style: italic; font-synthesis: style; }
482
482
 
483
483
  .md-content a {
484
- color: var(--accent);
484
+ color: var(--link);
485
485
  text-decoration: none;
486
486
  }
487
- .md-content a:hover { text-decoration: underline; }
487
+ .md-content a:hover {
488
+ color: var(--link-hover);
489
+ text-decoration: underline;
490
+ }
488
491
 
489
492
  .md-content ul, .md-content ol {
490
493
  padding-left: 24px;
@@ -1725,7 +1728,7 @@ pre.mermaid-error {
1725
1728
  }
1726
1729
 
1727
1730
  .dm-msg-name {
1728
- font-weight: 700;
1731
+ font-weight: var(--font-weight-heading);
1729
1732
  font-size: 15px;
1730
1733
  color: var(--text);
1731
1734
  }
@@ -1856,7 +1859,7 @@ pre.mermaid-error {
1856
1859
 
1857
1860
  .dm-header-name {
1858
1861
  font-size: 15px;
1859
- font-weight: 700;
1862
+ font-weight: var(--font-weight-heading);
1860
1863
  color: #fff;
1861
1864
  white-space: nowrap;
1862
1865
  overflow: hidden;
@@ -113,9 +113,9 @@
113
113
  .mobile-home-icon {
114
114
  width: 28px;
115
115
  height: 28px;
116
- border-radius: 8px;
117
- transition: transform 0.1s, filter 0.2s;
118
- filter: grayscale(1) brightness(1.3) opacity(0.5);
116
+ object-fit: contain;
117
+ transition: transform 0.1s, opacity 0.2s;
118
+ opacity: 0.55;
119
119
  }
120
120
 
121
121
  /* Alerts badge (red) */
@@ -124,11 +124,11 @@
124
124
  }
125
125
 
126
126
  .mobile-tab-home.active .mobile-home-icon {
127
- filter: none;
127
+ opacity: 1;
128
128
  }
129
129
 
130
130
  .mobile-tab-home:active .mobile-home-icon {
131
- filter: none;
131
+ opacity: 1;
132
132
  transform: scale(0.92);
133
133
  }
134
134
 
@@ -1243,7 +1243,7 @@ button.top-bar-pill.pill-accent:hover { background: color-mix(in srgb, var(--acc
1243
1243
  flex-direction: column;
1244
1244
  align-items: center;
1245
1245
  justify-content: center;
1246
- background: #000;
1246
+ background: var(--bg);
1247
1247
  z-index: 999;
1248
1248
  transition: opacity 0.6s ease;
1249
1249
  }
@@ -1253,15 +1253,67 @@ button.top-bar-pill.pill-accent:hover { background: color-mix(in srgb, var(--acc
1253
1253
  pointer-events: none;
1254
1254
  }
1255
1255
 
1256
- #ascii-logo-canvas {
1257
- width: 800px;
1258
- height: 400px;
1256
+ .connect-brand {
1257
+ display: flex;
1258
+ flex-direction: column;
1259
+ align-items: center;
1260
+ gap: clamp(0.65rem, 1.2vw, 0.9rem);
1261
+ animation: connect-brand-breathe 3.8s ease-in-out infinite;
1262
+ }
1263
+
1264
+ .connect-symbol {
1265
+ width: clamp(58px, 6vw, 82px);
1266
+ height: auto;
1267
+ object-fit: contain;
1268
+ filter: drop-shadow(0 12px 28px rgb(88 87 252 / 0.12));
1269
+ }
1270
+
1271
+ .connect-wordmark {
1272
+ width: clamp(155px, 18vw, 238px);
1273
+ aspect-ratio: 4611 / 1531;
1274
+ background: linear-gradient(
1275
+ 105deg,
1276
+ var(--brand-indigo) 18%,
1277
+ var(--brand-indigo) 42%,
1278
+ var(--brand-green) 50%,
1279
+ var(--brand-indigo) 58%,
1280
+ var(--brand-indigo) 82%
1281
+ );
1282
+ background-size: 260% 100%;
1283
+ -webkit-mask: url("../clay-studio-wordmark.svg?v=400") center / contain no-repeat;
1284
+ mask: url("../clay-studio-wordmark.svg?v=400") center / contain no-repeat;
1285
+ animation: connect-wordmark-shimmer 6.4s ease-in-out infinite;
1259
1286
  }
1260
1287
 
1261
1288
  #connect-overlay-msg {
1262
- color: #555;
1289
+ color: var(--text-dimmer);
1263
1290
  font-family: var(--font-mono);
1264
1291
  font-size: 0.85rem;
1265
- margin-top: 1.2rem;
1292
+ margin-top: 1.35rem;
1266
1293
  letter-spacing: 0.03em;
1267
1294
  }
1295
+
1296
+ @keyframes connect-brand-breathe {
1297
+ 0%, 100% { opacity: 0.76; transform: scale(0.992); }
1298
+ 50% { opacity: 1; transform: scale(1); }
1299
+ }
1300
+
1301
+ @keyframes connect-wordmark-shimmer {
1302
+ 0%, 18% { background-position: 100% 50%; }
1303
+ 58%, 100% { background-position: -100% 50%; }
1304
+ }
1305
+
1306
+ @media (prefers-reduced-motion: reduce) {
1307
+ .connect-brand,
1308
+ .connect-wordmark {
1309
+ animation: none;
1310
+ }
1311
+
1312
+ .connect-brand {
1313
+ opacity: 0.92;
1314
+ }
1315
+
1316
+ .connect-wordmark {
1317
+ background-position: 50% 50%;
1318
+ }
1319
+ }
@@ -26,7 +26,6 @@ body.pane-mode #sticky-notes-container {
26
26
  body.pane-mode #file-viewer { display: none !important; }
27
27
 
28
28
  body.pane-mode #connect-overlay { background: var(--bg); }
29
- body.pane-mode #connect-overlay #ascii-logo-canvas { display: none; }
30
29
  body.pane-mode #connect-overlay-msg { color: var(--text-dimmer); }
31
30
 
32
31
  body.pane-mode .notif-banner-container {
@@ -21,6 +21,12 @@
21
21
  border-color: var(--border);
22
22
  }
23
23
 
24
+ #header-session-actions-btn:focus { outline: none; }
25
+ #header-session-actions-btn:focus-visible {
26
+ border-color: color-mix(in srgb, var(--link) 48%, var(--border));
27
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--link) 18%, transparent);
28
+ }
29
+
24
30
  #header-session-actions-btn.hidden { display: none; }
25
31
  #header-session-actions-btn .lucide { width: 16px; height: 16px; }
26
32
 
@@ -68,14 +74,14 @@
68
74
  border: 1px solid var(--border-subtle);
69
75
  border-radius: 8px;
70
76
  background: rgba(var(--overlay-rgb), 0.035);
71
- color: var(--accent2);
77
+ color: color-mix(in srgb, var(--accent2) 38%, var(--text-secondary));
72
78
  }
73
79
 
74
80
  .session-actions-row-icon .lucide { width: 15px; height: 15px; }
75
81
  .session-actions-row-copy { display: flex; min-width: 0; flex-direction: column; gap: 2px; }
76
82
  .session-actions-row-copy strong { font-size: 12px; font-weight: 750; }
77
- .session-actions-row-copy > span { color: var(--text-dimmer); font-size: 10px; line-height: 1.25; }
78
- .session-actions-row-chevron { color: var(--text-dimmer); }
83
+ .session-actions-row-copy > span { color: var(--text-muted); font-size: 11px; line-height: 1.35; }
84
+ .session-actions-row-chevron { color: var(--text-muted); }
79
85
  .session-actions-row-chevron .lucide { width: 13px; height: 13px; }
80
86
 
81
87
  .handoff-modal { width: min(420px, calc(100vw - 32px)); }
@@ -67,7 +67,7 @@
67
67
 
68
68
  .project-list-title {
69
69
  font-size: 11px;
70
- font-weight: 600;
70
+ font-weight: var(--font-weight-ui);
71
71
  color: var(--text-dimmer);
72
72
  text-transform: uppercase;
73
73
  letter-spacing: 0.5px;
@@ -129,7 +129,7 @@
129
129
  }
130
130
 
131
131
  .project-list-item.current .pd-name {
132
- font-weight: 600;
132
+ font-weight: var(--font-weight-ui);
133
133
  }
134
134
 
135
135
  .pd-name {
@@ -266,7 +266,7 @@
266
266
 
267
267
  .sidebar-section-title {
268
268
  font-size: 11px;
269
- font-weight: 600;
269
+ font-weight: var(--font-weight-ui);
270
270
  color: var(--text-dimmer);
271
271
  text-transform: uppercase;
272
272
  letter-spacing: 0.5px;
@@ -275,7 +275,7 @@
275
275
  /* --- Section labels --- */
276
276
  .sidebar-section-label {
277
277
  font-size: 11px;
278
- font-weight: 600;
278
+ font-weight: var(--font-weight-ui);
279
279
  color: var(--text-dimmer);
280
280
  text-transform: uppercase;
281
281
  letter-spacing: 0.5px;
@@ -300,6 +300,7 @@
300
300
  }
301
301
  .sidebar-tools-header .sidebar-section-label {
302
302
  padding: 0;
303
+ color: var(--text-muted);
303
304
  }
304
305
 
305
306
  /* Small shortcut-pill for the Cmd/Ctrl+O hotkey overlay. Mirrors the
@@ -398,33 +399,55 @@
398
399
  flex-direction: column;
399
400
  align-items: center;
400
401
  justify-content: center;
401
- gap: 4px;
402
- min-height: 58px;
403
- padding: 6px 2px;
402
+ gap: 5px;
403
+ min-height: 60px;
404
+ padding: 5px 2px;
404
405
  border-radius: 10px;
405
406
  border: none;
406
- background: rgba(var(--overlay-rgb), 0.025);
407
- color: var(--text-muted);
407
+ background: transparent;
408
+ color: var(--text-secondary);
408
409
  font-family: inherit;
409
410
  font-size: 10px;
410
411
  font-weight: 500;
411
412
  cursor: pointer;
412
- transition: background 0.15s, color 0.15s, box-shadow 0.15s;
413
+ transition: background 0.15s, color 0.15s;
414
+ }
415
+ .palette-tile > .lucide {
416
+ box-sizing: content-box;
417
+ width: 16px;
418
+ height: 16px;
419
+ padding: 6px;
420
+ border-radius: 9px;
421
+ background: var(--bg);
422
+ color: var(--text-muted);
423
+ box-shadow: 0 1px 3px rgba(var(--shadow-rgb), 0.1);
424
+ flex-shrink: 0;
425
+ transition: background 0.15s, color 0.15s, box-shadow 0.15s, transform 0.15s;
413
426
  }
414
- .palette-tile .lucide { width: 16px; height: 16px; flex-shrink: 0; }
415
427
  .palette-tile:hover {
416
- background: rgba(var(--overlay-rgb), 0.08);
428
+ background: rgba(var(--overlay-rgb), 0.035);
429
+ color: var(--text);
430
+ }
431
+ .palette-tile:hover > .lucide {
432
+ background: var(--bg-alt);
417
433
  color: var(--text-secondary);
418
- box-shadow: 0 2px 10px rgba(var(--shadow-rgb), 0.08);
434
+ box-shadow: 0 3px 8px rgba(var(--shadow-rgb), 0.14);
435
+ transform: translateY(-1px);
419
436
  }
420
437
  .palette-tile.active {
421
- background: rgba(var(--overlay-rgb), 0.08);
438
+ background: rgba(var(--overlay-rgb), 0.035);
439
+ color: var(--text);
440
+ }
441
+ .palette-tile.active > .lucide {
422
442
  color: var(--text);
443
+ box-shadow:
444
+ 0 0 0 1px color-mix(in srgb, var(--link) 52%, var(--border)),
445
+ 0 2px 6px rgba(var(--shadow-rgb), 0.12);
423
446
  }
424
447
  .palette-tile .tool-btn-label {
425
- font-size: 10px;
448
+ font-size: 10.5px;
426
449
  font-weight: 500;
427
- line-height: 1.15;
450
+ line-height: 1.2;
428
451
  text-align: center;
429
452
  max-width: 100%;
430
453
  overflow: hidden;
@@ -611,6 +634,7 @@
611
634
 
612
635
  .sidebar-sessions-header-row .sidebar-section-label {
613
636
  padding: 0;
637
+ color: var(--text-muted);
614
638
  }
615
639
 
616
640
  .session-filter-count {
@@ -715,12 +739,12 @@
715
739
  .sidebar-sessions-search-inline button:hover { color: var(--text); background: var(--sidebar-hover); }
716
740
 
717
741
  .session-item.search-match {
718
- background: var(--accent-12);
742
+ background: color-mix(in srgb, var(--link) 9%, transparent);
719
743
  color: var(--text);
720
744
  }
721
745
 
722
746
  .session-item.search-match .session-item-text {
723
- color: var(--accent);
747
+ color: var(--link);
724
748
  }
725
749
 
726
750
  .session-highlight {
@@ -738,18 +762,18 @@
738
762
  display: flex;
739
763
  align-items: center;
740
764
  justify-content: space-between;
741
- margin: 12px 8px 4px;
765
+ margin: 14px 8px 5px;
742
766
  padding: 0;
743
767
  min-height: 22px;
744
- font-size: 10px;
768
+ font-size: 10.5px;
745
769
  font-weight: 600;
746
- color: var(--text-dimmer);
770
+ color: var(--text-muted);
747
771
  letter-spacing: 0.2px;
748
772
  }
749
773
 
750
774
  .session-group-header-label {
751
775
  min-width: 0;
752
- color: var(--text-dimmer);
776
+ color: var(--text-muted);
753
777
  }
754
778
 
755
779
  .session-group-clear-btn {
@@ -822,16 +846,16 @@
822
846
  position: relative;
823
847
  display: flex;
824
848
  align-items: center;
825
- gap: 4px;
826
- padding: 0 12px;
827
- height: 34px;
828
- border-radius: 10px;
849
+ gap: 7px;
850
+ padding: 0 9px;
851
+ height: 36px;
852
+ border-radius: 9px;
829
853
  cursor: pointer;
830
854
  font-size: 13px;
831
- font-weight: 600;
832
- color: var(--text-muted);
855
+ font-weight: var(--font-weight-body);
856
+ color: var(--text-secondary);
833
857
  margin-bottom: 0;
834
- transition: background 0.35s ease, color 0.35s ease;
858
+ transition: background 0.15s ease, color 0.15s ease;
835
859
  contain: size layout;
836
860
  }
837
861
 
@@ -848,14 +872,34 @@
848
872
  filter: grayscale(0.9) brightness(0.9);
849
873
  transition: opacity 0.15s, filter 0.15s;
850
874
  }
875
+ .session-vendor-mark {
876
+ width: 16px;
877
+ height: 16px;
878
+ margin-right: 0;
879
+ border-radius: 4px;
880
+ background: transparent;
881
+ box-shadow: none;
882
+ opacity: 0.5;
883
+ filter: grayscale(0.72) saturate(0.6);
884
+ flex-shrink: 0;
885
+ }
851
886
  .session-item:hover .session-vendor-icon,
852
887
  .session-item.active .session-vendor-icon {
853
888
  opacity: 1;
854
889
  filter: none;
855
890
  }
891
+ .session-item:hover .session-vendor-mark {
892
+ opacity: 0.76;
893
+ filter: grayscale(0.28) saturate(0.82);
894
+ }
895
+ .session-item.active .session-vendor-mark {
896
+ opacity: 0.88;
897
+ filter: grayscale(0.12) saturate(0.9);
898
+ }
856
899
 
857
900
  .session-item-text {
858
901
  flex: 1;
902
+ line-height: 1.3;
859
903
  overflow: hidden;
860
904
  text-overflow: ellipsis;
861
905
  white-space: nowrap;
@@ -863,14 +907,23 @@
863
907
  }
864
908
 
865
909
  .session-item:hover {
866
- background: var(--sidebar-hover);
867
- color: var(--text-secondary);
910
+ background: rgba(var(--overlay-rgb), 0.035);
911
+ color: var(--text);
868
912
  }
869
913
 
870
914
  .session-item.active {
871
- background: var(--sidebar-active);
915
+ background: color-mix(in srgb, var(--link) 7%, transparent);
872
916
  color: var(--text);
873
- font-weight: 600;
917
+ font-weight: var(--font-weight-ui);
918
+ }
919
+
920
+ .session-item-age {
921
+ flex-shrink: 0;
922
+ color: var(--text-dimmer);
923
+ font-size: 9.5px;
924
+ font-variant-numeric: tabular-nums;
925
+ opacity: 0.8;
926
+ transition: opacity 0.15s;
874
927
  }
875
928
 
876
929
  .split-group-text {
@@ -960,7 +1013,7 @@
960
1013
  min-width: 18px;
961
1014
  height: 18px;
962
1015
  border-radius: 9px;
963
- background: #e74c3c;
1016
+ background: var(--link);
964
1017
  color: #fff;
965
1018
  font-size: 11px;
966
1019
  font-weight: 700;
@@ -974,13 +1027,20 @@
974
1027
  }
975
1028
 
976
1029
  .session-item .session-item-text {
977
- padding-right: 28px;
1030
+ padding-right: 0;
978
1031
  }
979
1032
 
980
1033
  .session-item:has(.session-presence) .session-item-text {
981
1034
  padding-right: 54px;
982
1035
  }
983
1036
 
1037
+ .session-item:has(.session-presence) .session-item-age,
1038
+ .session-item:has(.session-unread-badge.has-unread) .session-item-age,
1039
+ .session-item:hover .session-item-age,
1040
+ .session-item:focus-within .session-item-age {
1041
+ opacity: 0;
1042
+ }
1043
+
984
1044
  .session-close-btn {
985
1045
  position: absolute;
986
1046
  right: 8px;
@@ -1067,14 +1127,14 @@
1067
1127
  border: none;
1068
1128
  border-radius: 10px;
1069
1129
  background: transparent;
1070
- color: var(--text-muted);
1130
+ color: var(--text-secondary);
1071
1131
  font-family: inherit;
1072
1132
  font-size: 13px;
1073
1133
  font-weight: 500;
1074
1134
  cursor: pointer;
1075
1135
  text-align: left;
1076
1136
  min-width: 0;
1077
- opacity: 0.62;
1137
+ opacity: 1;
1078
1138
  transition: background 0.15s, color 0.15s, opacity 0.15s;
1079
1139
  }
1080
1140
 
@@ -1086,8 +1146,8 @@
1086
1146
  }
1087
1147
 
1088
1148
  .session-top-action-icon {
1089
- width: 16px;
1090
- height: 16px;
1149
+ width: 18px;
1150
+ height: 18px;
1091
1151
  flex-shrink: 0;
1092
1152
  border-radius: 4px;
1093
1153
  object-fit: cover;
@@ -1134,11 +1194,11 @@
1134
1194
  border: none;
1135
1195
  border-radius: 0;
1136
1196
  background: transparent;
1137
- font-size: 11px;
1197
+ font-size: 10.5px;
1138
1198
  line-height: 1.4;
1139
- color: color-mix(in srgb, var(--text-dimmer) 88%, transparent);
1199
+ color: var(--text-muted);
1140
1200
  text-align: center;
1141
- text-shadow: 0 0 10px rgba(var(--shadow-rgb), 0.08);
1201
+ opacity: 0.78;
1142
1202
  }
1143
1203
 
1144
1204
  .session-list-sticky-top {
@@ -1350,7 +1410,7 @@
1350
1410
  border-radius: 10px;
1351
1411
  cursor: pointer;
1352
1412
  font-size: 13px;
1353
- font-weight: 600;
1413
+ font-weight: var(--font-weight-body);
1354
1414
  color: var(--text-muted);
1355
1415
  transition: background 0.35s ease, color 0.35s ease;
1356
1416
  }
@@ -1707,7 +1767,7 @@
1707
1767
  .user-island-name {
1708
1768
  font-family: "Pretendard", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
1709
1769
  font-size: 14px;
1710
- font-weight: 700;
1770
+ font-weight: var(--font-weight-heading);
1711
1771
  color: var(--text);
1712
1772
  white-space: nowrap;
1713
1773
  overflow: hidden;
@@ -1755,30 +1815,6 @@
1755
1815
  transition: background 0.15s, color 0.15s;
1756
1816
  }
1757
1817
 
1758
- .user-island-actions button#user-theme-toggle-btn {
1759
- color: var(--text-secondary);
1760
- }
1761
-
1762
- .user-island-actions button#user-theme-toggle-btn:hover {
1763
- color: var(--text);
1764
- }
1765
-
1766
- .user-island-actions button#user-theme-toggle-btn.theme-toggle-light {
1767
- color: #7b8cff;
1768
- }
1769
-
1770
- .user-island-actions button#user-theme-toggle-btn.theme-toggle-light:hover {
1771
- color: #98a4ff;
1772
- }
1773
-
1774
- .user-island-actions button#user-theme-toggle-btn.theme-toggle-dark {
1775
- color: #f2b84d;
1776
- }
1777
-
1778
- .user-island-actions button#user-theme-toggle-btn.theme-toggle-dark:hover {
1779
- color: #ffca6b;
1780
- }
1781
-
1782
1818
  .user-island-actions button .lucide {
1783
1819
  width: 16px;
1784
1820
  height: 16px;
@@ -1898,99 +1934,6 @@
1898
1934
  height: 20px;
1899
1935
  }
1900
1936
 
1901
- /* --- Theme picker --- */
1902
- .theme-picker {
1903
- position: fixed;
1904
- background: var(--bg-alt);
1905
- border: 1px solid var(--border);
1906
- border-radius: 12px;
1907
- padding: 0;
1908
- min-width: 220px;
1909
- max-height: 70vh;
1910
- overflow-y: auto;
1911
- box-shadow: 0 8px 32px rgba(var(--shadow-rgb), 0.5);
1912
- z-index: 200;
1913
- opacity: 0;
1914
- transform: translateY(8px);
1915
- pointer-events: none;
1916
- transition: opacity 0.15s, transform 0.15s;
1917
- }
1918
-
1919
- .theme-picker.visible {
1920
- opacity: 1;
1921
- transform: translateY(0);
1922
- pointer-events: auto;
1923
- }
1924
-
1925
- .theme-picker-header {
1926
- padding: 8px 14px 4px;
1927
- font-size: 11px;
1928
- font-weight: 600;
1929
- color: var(--text-dimmer);
1930
- text-transform: uppercase;
1931
- letter-spacing: 0.5px;
1932
- position: sticky;
1933
- top: 0;
1934
- background: var(--bg-alt);
1935
- z-index: 1;
1936
- }
1937
-
1938
- .theme-picker-section {
1939
- padding-bottom: 4px;
1940
- }
1941
-
1942
- .theme-picker-item {
1943
- display: flex;
1944
- align-items: center;
1945
- gap: 10px;
1946
- width: 100%;
1947
- padding: 7px 14px;
1948
- border: none;
1949
- background: none;
1950
- color: var(--text-secondary);
1951
- font-family: inherit;
1952
- font-size: 13px;
1953
- cursor: pointer;
1954
- transition: background 0.15s;
1955
- }
1956
-
1957
- .theme-picker-item:hover {
1958
- background: rgba(var(--overlay-rgb), 0.05);
1959
- }
1960
-
1961
- .theme-picker-item.active {
1962
- color: var(--text);
1963
- }
1964
-
1965
- .theme-swatches {
1966
- display: flex;
1967
- gap: 3px;
1968
- flex-shrink: 0;
1969
- }
1970
-
1971
- .theme-swatch {
1972
- width: 12px;
1973
- height: 12px;
1974
- border-radius: 3px;
1975
- border: 1px solid rgba(var(--overlay-rgb), 0.1);
1976
- }
1977
-
1978
- .theme-picker-label {
1979
- flex: 1;
1980
- text-align: left;
1981
- }
1982
-
1983
- .theme-picker-check {
1984
- font-size: 14px;
1985
- color: var(--accent);
1986
- opacity: 0;
1987
- flex-shrink: 0;
1988
- }
1989
-
1990
- .theme-picker-item.active .theme-picker-check {
1991
- opacity: 1;
1992
- }
1993
-
1994
1937
  /* --- Sidebar resize handle (overlay, no layout space) --- */
1995
1938
  #sidebar-resize-handle {
1996
1939
  position: absolute;