openclacky 1.5.4 → 1.5.5

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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/lib/clacky/agent/message_compressor_helper.rb +4 -1
  4. data/lib/clacky/agent/session_serializer.rb +1 -0
  5. data/lib/clacky/agent.rb +1 -1
  6. data/lib/clacky/agent_config.rb +4 -2
  7. data/lib/clacky/agent_profile.rb +25 -3
  8. data/lib/clacky/default_extensions/ext-studio/ext.yml +2 -2
  9. data/lib/clacky/default_extensions/ext-studio/panels/studio/view.js +42 -33
  10. data/lib/clacky/default_extensions/ext-studio/skills/ext-develop/SKILL.md +4 -2
  11. data/lib/clacky/default_extensions/git/ext.yml +3 -0
  12. data/lib/clacky/default_extensions/meeting/ext.yml +3 -0
  13. data/lib/clacky/default_extensions/time_machine/ext.yml +4 -0
  14. data/lib/clacky/default_skills/new/SKILL.md +17 -12
  15. data/lib/clacky/extension/api_extension.rb +2 -0
  16. data/lib/clacky/extension/loader.rb +1 -0
  17. data/lib/clacky/extension/packager.rb +60 -15
  18. data/lib/clacky/extension/verifier.rb +1 -1
  19. data/lib/clacky/message_format/anthropic.rb +1 -1
  20. data/lib/clacky/message_format/bedrock.rb +1 -1
  21. data/lib/clacky/message_format/open_ai.rb +8 -0
  22. data/lib/clacky/providers.rb +61 -0
  23. data/lib/clacky/server/http_server.rb +154 -15
  24. data/lib/clacky/server/web_ui_controller.rb +12 -2
  25. data/lib/clacky/session_manager.rb +1 -0
  26. data/lib/clacky/tools/terminal.rb +30 -3
  27. data/lib/clacky/version.rb +1 -1
  28. data/lib/clacky/web/app.css +301 -171
  29. data/lib/clacky/web/app.js +16 -2
  30. data/lib/clacky/web/features/extensions/store.js +214 -9
  31. data/lib/clacky/web/features/extensions/view.js +156 -11
  32. data/lib/clacky/web/features/new-session/store.js +25 -3
  33. data/lib/clacky/web/features/new-session/view.js +337 -140
  34. data/lib/clacky/web/features/skills/view.js +1 -1
  35. data/lib/clacky/web/i18n.js +29 -11
  36. data/lib/clacky/web/index.html +36 -64
  37. data/lib/clacky/web/sessions.js +2 -1
  38. data/lib/clacky/web/utils.js +1 -0
  39. data/lib/clacky/web/ws-dispatcher.js +39 -3
  40. metadata +1 -1
@@ -322,6 +322,8 @@ html { font-size: 16px; }
322
322
 
323
323
  /* ── Reset & Base ────────────────────────────────────────────────────────── */
324
324
  * { box-sizing: border-box; margin: 0; padding: 0; }
325
+ select:hover { border-color: var(--color-border-strong); }
326
+ input:focus, select:focus { outline: none; border-color: var(--color-accent-primary); }
325
327
 
326
328
  /* ── Global Tooltip ──────────────────────────────────────────────────────
327
329
  JS-driven: Tooltip.init() in utils.js mounts a single <div id="tooltip">
@@ -534,7 +536,7 @@ body {
534
536
  }
535
537
  .header-logo {
536
538
  font-family: "Geist Sans", "Satoshi", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
537
- font-weight: 750;
539
+ font-weight: 650;
538
540
  font-size: 0.9375rem;
539
541
  color: var(--color-text-primary);
540
542
  letter-spacing: -0.02em;
@@ -548,7 +550,7 @@ body {
548
550
  #header-brand.has-logo .header-logo {
549
551
  font-family: "Geist Sans", "Satoshi", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
550
552
  font-size: 0.9375rem;
551
- font-weight: 750;
553
+ font-weight: 650;
552
554
  color: var(--color-text-primary);
553
555
  letter-spacing: -0.02em;
554
556
  -webkit-font-smoothing: antialiased;
@@ -990,7 +992,7 @@ body {
990
992
  display: inline-block;
991
993
  font-family: var(--font-mono);
992
994
  font-size: 0.5625rem;
993
- font-weight: 600;
995
+ font-weight: 500;
994
996
  line-height: 1;
995
997
  padding: 2px 0.3125rem;
996
998
  border-radius: var(--radius-xs);
@@ -1309,7 +1311,7 @@ body {
1309
1311
  margin-bottom: 0.5rem;
1310
1312
  }
1311
1313
  .dp-title {
1312
- font-weight: 600;
1314
+ font-weight: 500;
1313
1315
  font-size: 0.8125rem;
1314
1316
  }
1315
1317
  .dp-nav {
@@ -1354,7 +1356,7 @@ body {
1354
1356
  .dp-day--selected {
1355
1357
  background: var(--color-accent-primary);
1356
1358
  color: var(--color-text-inverse) !important;
1357
- font-weight: 600;
1359
+ font-weight: 500;
1358
1360
  }
1359
1361
  .dp-day--selected:hover { background: var(--color-accent-primary); opacity: 0.88; }
1360
1362
  .dp-footer {
@@ -1424,7 +1426,7 @@ body {
1424
1426
  .session-search-group {
1425
1427
  padding: 0.5rem 0.75rem 0.25rem;
1426
1428
  font-size: 0.6875rem;
1427
- font-weight: 600;
1429
+ font-weight: 500;
1428
1430
  color: var(--color-text-muted);
1429
1431
  text-transform: none;
1430
1432
  letter-spacing: 0.02em;
@@ -1448,7 +1450,7 @@ body {
1448
1450
  color: var(--color-text-primary);
1449
1451
  padding: 0 2px;
1450
1452
  border-radius: 2px;
1451
- font-weight: 600;
1453
+ font-weight: 500;
1452
1454
  }
1453
1455
 
1454
1456
  .session-name__text mark {
@@ -1923,7 +1925,7 @@ body {
1923
1925
  display: flex;
1924
1926
  align-items: center;
1925
1927
  gap: 0.375rem;
1926
- padding: 0.5rem 1rem;
1928
+ padding: 0.375rem 0.75rem;
1927
1929
  background: var(--color-button-primary);
1928
1930
  color: #fff;
1929
1931
  border: none;
@@ -2024,7 +2026,7 @@ body {
2024
2026
  }
2025
2027
  .task-card-name {
2026
2028
  font-size: 0.8125rem;
2027
- font-weight: 600;
2029
+ font-weight: 500;
2028
2030
  color: var(--color-text-primary);
2029
2031
  }
2030
2032
  .task-card-cron {
@@ -2039,7 +2041,7 @@ body {
2039
2041
  }
2040
2042
  .task-card-badge {
2041
2043
  font-size: 0.625rem;
2042
- font-weight: 600;
2044
+ font-weight: 500;
2043
2045
  padding: 2px 0.4375rem;
2044
2046
  border-radius: 10px;
2045
2047
  letter-spacing: 0.3px;
@@ -2180,7 +2182,7 @@ body {
2180
2182
  flex-direction: column;
2181
2183
  gap: 1.25rem;
2182
2184
  width: 100%;
2183
- padding: 6rem max(1.5rem, calc(50% - 30rem)) 1rem;
2185
+ padding: 5.5rem max(1.5rem, calc(50% - 30rem)) 1rem;
2184
2186
  }
2185
2187
  .new-session-composer {
2186
2188
  position: relative;
@@ -2207,14 +2209,6 @@ body {
2207
2209
  grid-auto-rows: 1fr;
2208
2210
  gap: 0.75rem;
2209
2211
  }
2210
- .new-session-agent-panels {
2211
- display: flex;
2212
- flex-wrap: wrap;
2213
- align-items: center;
2214
- gap: 0.375rem;
2215
- margin-top: -0.625rem;
2216
- padding-left: 0.125rem;
2217
- }
2218
2212
 
2219
2213
  /* ── Starter Prompts ── */
2220
2214
  .ns-starter-label {
@@ -2246,30 +2240,6 @@ body {
2246
2240
  background: var(--color-bg-hover);
2247
2241
  color: var(--color-text-primary);
2248
2242
  }
2249
- .ns-panels-label {
2250
- width: 100%;
2251
- font-size: 0.75rem;
2252
- color: var(--color-text-tertiary);
2253
- margin-bottom: 0.0625rem;
2254
- }
2255
- .ns-panel-chip {
2256
- display: inline-flex;
2257
- align-items: center;
2258
- padding: 0.1875rem 0.5rem;
2259
- border-radius: 0.375rem;
2260
- font-size: 0.78125rem;
2261
- font-weight: 500;
2262
- line-height: 1.3;
2263
- }
2264
- .ns-panel-chip--panel {
2265
- background: var(--color-accent-soft);
2266
- color: var(--color-accent-primary);
2267
- }
2268
- .ns-panel-chip--skill {
2269
- background: var(--color-bg-secondary);
2270
- color: var(--color-text-secondary);
2271
- border: 1px solid var(--color-border-primary);
2272
- }
2273
2243
  .agent-card {
2274
2244
  position: relative;
2275
2245
  padding: 0.9375rem 1rem;
@@ -2353,13 +2323,12 @@ body {
2353
2323
  top: 0.5rem;
2354
2324
  right: 0.5rem;
2355
2325
  font-size: 0.65rem;
2356
- font-weight: 600;
2357
- padding: 1px 5px;
2326
+ font-weight: 500;
2327
+ padding: 2px 6px;
2358
2328
  border-radius: 4px;
2359
2329
  background: var(--color-bg-hover);
2360
2330
  color: var(--color-text-secondary);
2361
2331
  letter-spacing: 0.02em;
2362
- text-transform: uppercase;
2363
2332
  }
2364
2333
  .agent-card-badge--custom {
2365
2334
  background: color-mix(in srgb, var(--color-accent-primary) 15%, transparent);
@@ -2374,17 +2343,10 @@ body {
2374
2343
  .new-session-input-bar {
2375
2344
  margin: 0;
2376
2345
  padding: 10px 12px;
2377
- border: 1px solid var(--color-border-primary);
2378
- border-radius: 13px;
2379
- background: var(--color-bg-primary);
2346
+ background: transparent;
2380
2347
  display: flex;
2381
2348
  align-items: center;
2382
2349
  gap: 8px;
2383
- box-shadow: var(--shadow-card);
2384
- transition: border-color .14s;
2385
- }
2386
- .new-session-input-bar:focus-within {
2387
- border-color: color-mix(in srgb, var(--color-accent-primary) 50%, var(--color-border-primary));
2388
2350
  }
2389
2351
  .new-session-composer-btn {
2390
2352
  flex: none;
@@ -2486,6 +2448,140 @@ body {
2486
2448
  background: color-mix(in srgb, var(--color-accent-primary) 85%, #fff);
2487
2449
  }
2488
2450
 
2451
+
2452
+ /* ── Composer frame: two stacked cards, offset like Codex ───────────────── */
2453
+ .ns-composer-frame {
2454
+ display: flex;
2455
+ flex-direction: column;
2456
+ gap: 0;
2457
+ background: transparent;
2458
+ border: none;
2459
+ box-shadow: none;
2460
+ }
2461
+
2462
+ /* Context bar card — narrower on both sides, no gap below */
2463
+ /* ── New Session: context bar (chips above composer input) ─────────────── */
2464
+ .ns-context-bar {
2465
+ display: flex;
2466
+ flex-wrap: wrap;
2467
+ align-items: center;
2468
+ align-self: flex-start;
2469
+ width: calc(100% - 2rem);
2470
+ gap: 0.25rem;
2471
+ padding: 0.3rem 0.75rem;
2472
+ margin: 0 1rem;
2473
+ border: none;
2474
+ border-radius: 10px 10px 0 0;
2475
+ background: var(--color-bg-primary);
2476
+ box-shadow: var(--shadow-card);
2477
+ }
2478
+ .ns-context-bar:empty {
2479
+ display: none;
2480
+ }
2481
+
2482
+ /* Input bar card — full width, slightly brighter background */
2483
+ .ns-input-bar-card {
2484
+ border: 1px solid var(--color-border-primary);
2485
+ border-radius: 13px;
2486
+ background: var(--color-bg-secondary);
2487
+ box-shadow: var(--shadow-card);
2488
+ overflow: hidden;
2489
+ transition: border-color .14s;
2490
+ }
2491
+ .ns-input-bar-card:focus-within {
2492
+ border-color: color-mix(in srgb, var(--color-accent-primary) 50%, var(--color-border-primary));
2493
+ }
2494
+ .ns-ctx-chip {
2495
+ display: inline-flex;
2496
+ align-items: center;
2497
+ gap: 0.3125rem;
2498
+ padding: 0.1875rem 0.5rem;
2499
+ border: none;
2500
+ border-radius: 0.375rem;
2501
+ background: transparent;
2502
+ color: var(--color-text-secondary);
2503
+ font-size: 0.75rem;
2504
+ font-family: inherit;
2505
+ cursor: pointer;
2506
+ transition: background 0.12s, color 0.12s;
2507
+ white-space: nowrap;
2508
+ max-width: 16rem;
2509
+ overflow: hidden;
2510
+ text-overflow: ellipsis;
2511
+ }
2512
+ .ns-ctx-chip:hover {
2513
+ color: var(--color-text-primary);
2514
+ background: var(--color-bg-hover);
2515
+ }
2516
+ .ns-ctx-chip--muted {
2517
+ color: var(--color-text-tertiary);
2518
+ opacity: 0.8;
2519
+ }
2520
+ .ns-ctx-chip--active,
2521
+ .ns-ctx-chip--active:hover {
2522
+ color: var(--color-accent-primary) !important;
2523
+ background: var(--color-accent-soft) !important;
2524
+ }
2525
+ .ns-ctx-chip-icon {
2526
+ display: flex;
2527
+ align-items: center;
2528
+ flex-shrink: 0;
2529
+ opacity: 0.7;
2530
+ }
2531
+ .ns-ctx-chip-label {
2532
+ overflow: hidden;
2533
+ text-overflow: ellipsis;
2534
+ }
2535
+
2536
+ /* Context bar popover */
2537
+ .ns-ctx-popover {
2538
+ z-index: 9999;
2539
+ background: var(--color-bg-primary);
2540
+ border: 1px solid var(--color-border-primary);
2541
+ border-radius: 0.5rem;
2542
+ box-shadow: var(--shadow-popover, 0 4px 16px rgba(0,0,0,.12));
2543
+ padding: 0.25rem;
2544
+ min-width: 11rem;
2545
+ max-width: 22rem;
2546
+ max-height: 18rem;
2547
+ overflow-y: auto;
2548
+ display: flex;
2549
+ flex-direction: column;
2550
+ gap: 1px;
2551
+ }
2552
+ .ns-ctx-popover-item {
2553
+ display: block;
2554
+ width: 100%;
2555
+ text-align: left;
2556
+ padding: 0.375rem 0.625rem;
2557
+ border: none;
2558
+ border-radius: 0.3125rem;
2559
+ background: transparent;
2560
+ color: var(--color-text-secondary);
2561
+ font-size: 0.8125rem;
2562
+ font-family: inherit;
2563
+ cursor: pointer;
2564
+ transition: background 0.1s, color 0.1s;
2565
+ white-space: nowrap;
2566
+ overflow: hidden;
2567
+ text-overflow: ellipsis;
2568
+ }
2569
+ .ns-ctx-popover-item:hover {
2570
+ background: var(--color-bg-hover);
2571
+ color: var(--color-text-primary);
2572
+ }
2573
+ .ns-ctx-popover-item.active {
2574
+ color: var(--color-accent-primary);
2575
+ font-weight: 500;
2576
+ }
2577
+ .ns-ctx-popover-empty {
2578
+ padding: 0.5rem 0.625rem;
2579
+ font-size: 0.8125rem;
2580
+ color: var(--color-text-tertiary);
2581
+ }
2582
+
2583
+ /* Dir popover layout */
2584
+
2489
2585
  .new-session-advanced {
2490
2586
  display: flex;
2491
2587
  flex-direction: column;
@@ -2667,7 +2763,7 @@ body {
2667
2763
  border-bottom: 2px solid transparent;
2668
2764
  }
2669
2765
  .aside-tab:hover { color: var(--color-text-secondary); }
2670
- .aside-tab.active { color: var(--color-text-primary); border-bottom-color: var(--color-accent-primary); font-weight: 600; }
2766
+ .aside-tab.active { color: var(--color-text-primary); border-bottom-color: var(--color-accent-primary); font-weight: 500; }
2671
2767
  .aside-tab-badge {
2672
2768
  font-size: 10px;
2673
2769
  min-width: 16px;
@@ -2712,6 +2808,8 @@ body {
2712
2808
  .session-composer {
2713
2809
  flex-shrink: 0;
2714
2810
  display: flex;
2811
+ flex-direction: column;
2812
+ gap: 0.2rem;
2715
2813
  padding-inline: 24px;
2716
2814
  }
2717
2815
  .session-composer > * {
@@ -2861,7 +2959,7 @@ body {
2861
2959
  padding: 0.625rem 1.25rem;
2862
2960
  border-radius: 24px;
2863
2961
  font-size: 0.8125rem;
2864
- font-weight: 600;
2962
+ font-weight: 500;
2865
2963
  cursor: pointer;
2866
2964
  z-index: 100;
2867
2965
  box-shadow: var(--shadow-md);
@@ -3134,7 +3232,7 @@ body {
3134
3232
  .msg-assistant h1, .msg-assistant h2, .msg-assistant h3,
3135
3233
  .msg-assistant h4, .msg-assistant h5, .msg-assistant h6 {
3136
3234
  margin: 0.8em 0 0.4em;
3137
- font-weight: 600;
3235
+ font-weight: 500;
3138
3236
  line-height: 1.3;
3139
3237
  color: var(--color-text-primary);
3140
3238
  }
@@ -3249,7 +3347,7 @@ body {
3249
3347
  }
3250
3348
  .msg-assistant th {
3251
3349
  background: var(--color-bg-tertiary);
3252
- font-weight: 600;
3350
+ font-weight: 500;
3253
3351
  color: var(--color-text-primary);
3254
3352
  }
3255
3353
  .msg-assistant tr:nth-child(even) { background: var(--color-bg-tertiary); }
@@ -3264,7 +3362,7 @@ body {
3264
3362
  margin: 0.8em 0;
3265
3363
  }
3266
3364
  .msg-assistant img { max-width: 100%; height: auto; border-radius: 0.25rem; }
3267
- .msg-assistant strong { font-weight: 600; color: var(--color-text-primary); }
3365
+ .msg-assistant strong { font-weight: 500; color: var(--color-text-primary); }
3268
3366
  .msg-assistant em { font-style: italic; color: var(--color-text-secondary); }
3269
3367
  .msg-tool { background: var(--color-bg-primary); border: 1px solid var(--color-border-primary); font-family: monospace; font-size: 0.75rem; color: var(--color-text-secondary); align-self: flex-start; }
3270
3368
  .msg-info { color: var(--color-text-secondary); font-size: 0.75rem; align-self: center; font-style: italic; }
@@ -3388,7 +3486,7 @@ body {
3388
3486
  }
3389
3487
  .msg-error a {
3390
3488
  color: var(--color-error);
3391
- font-weight: 600;
3489
+ font-weight: 500;
3392
3490
  text-decoration: underline;
3393
3491
  }
3394
3492
  .msg-error a:hover {
@@ -3471,7 +3569,7 @@ body {
3471
3569
  .btn-ext-refresh:disabled {
3472
3570
  cursor: default;
3473
3571
  }
3474
- .tool-name { color: var(--color-warning); font-weight: 600; }
3572
+ .tool-name { color: var(--color-warning); font-weight: 500; }
3475
3573
  .progress-msg { color: var(--color-accent-primary); font-size: 0.75rem; align-self: center; }
3476
3574
 
3477
3575
  /* ── Token usage line ────────────────────────────────────────────────────── */
@@ -3491,10 +3589,10 @@ body {
3491
3589
  transition: opacity 0.15s ease;
3492
3590
  }
3493
3591
  .token-usage-line:hover { opacity: 1; }
3494
- .token-usage-line b { font-weight: 600; color: var(--color-text-secondary); }
3495
- .tu-label { color: var(--color-text-tertiary); font-weight: 600; }
3592
+ .token-usage-line b { font-weight: 500; color: var(--color-text-secondary); }
3593
+ .tu-label { color: var(--color-text-tertiary); font-weight: 500; }
3496
3594
  .tu-sep { color: var(--color-text-muted); opacity: 0.45; padding: 0 1px; }
3497
- .tu-cache { color: var(--color-text-tertiary); font-weight: 600; } /* [*] cache hit — neutral, not brand */
3595
+ .tu-cache { color: var(--color-text-tertiary); font-weight: 500; } /* [*] cache hit — neutral, not brand */
3498
3596
  .tu-field { color: var(--color-text-muted); }
3499
3597
  .tu-cost { color: var(--color-text-tertiary); }
3500
3598
  .tu-delta { font-weight: 700; }
@@ -3572,7 +3670,7 @@ body {
3572
3670
  align-items: baseline;
3573
3671
  gap: 0.375rem;
3574
3672
  }
3575
- .tool-item-name { color: var(--color-text-primary); font-weight: 600; }
3673
+ .tool-item-name { color: var(--color-text-primary); font-weight: 500; }
3576
3674
  .tool-item-arg { color: var(--color-text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1 1 auto; }
3577
3675
  .tool-item-header.tool-item-expandable { cursor: pointer; user-select: none; }
3578
3676
  .tool-item-header.tool-item-expandable:hover .tool-item-name,
@@ -4093,7 +4191,7 @@ body {
4093
4191
  }
4094
4192
  .sib-reasoning-heading {
4095
4193
  font-size: 0.75rem;
4096
- font-weight: 600;
4194
+ font-weight: 500;
4097
4195
  color: var(--color-text-primary);
4098
4196
  }
4099
4197
  .sib-reasoning-hint {
@@ -4116,7 +4214,7 @@ body {
4116
4214
  }
4117
4215
  .sib-reasoning-option.current {
4118
4216
  background: var(--color-bg-hover);
4119
- font-weight: 600;
4217
+ font-weight: 500;
4120
4218
  }
4121
4219
  .sib-model-dropdown {
4122
4220
  position: fixed;
@@ -4151,7 +4249,7 @@ body {
4151
4249
  }
4152
4250
  .sib-model-option.current {
4153
4251
  background: var(--color-bg-hover);
4154
- font-weight: 600;
4252
+ font-weight: 500;
4155
4253
  }
4156
4254
  .sib-model-option .model-badge {
4157
4255
  font-size: 0.5625rem;
@@ -4253,7 +4351,7 @@ body {
4253
4351
  }
4254
4352
  .sib-submodel-row.current {
4255
4353
  background: var(--color-bg-hover);
4256
- font-weight: 600;
4354
+ font-weight: 500;
4257
4355
  color: var(--color-accent-primary);
4258
4356
  }
4259
4357
  .sib-submodel-row-name {
@@ -4441,7 +4539,7 @@ body {
4441
4539
  .sib-model-option .sib-model-name-override {
4442
4540
  font-size: 0.6875rem;
4443
4541
  color: var(--color-accent-primary);
4444
- font-weight: 600;
4542
+ font-weight: 500;
4445
4543
  overflow: hidden;
4446
4544
  text-overflow: ellipsis;
4447
4545
  white-space: nowrap;
@@ -4688,7 +4786,7 @@ body {
4688
4786
  .skill-ac-name {
4689
4787
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
4690
4788
  font-size: 0.8125rem;
4691
- font-weight: 600;
4789
+ font-weight: 500;
4692
4790
  color: var(--color-accent-primary);
4693
4791
  white-space: nowrap;
4694
4792
  flex-shrink: 0;
@@ -4700,7 +4798,7 @@ body {
4700
4798
  .skill-ac-name-zh {
4701
4799
  font-family: inherit;
4702
4800
  font-size: 0.8125rem;
4703
- font-weight: 600;
4801
+ font-weight: 500;
4704
4802
  color: var(--color-accent-primary);
4705
4803
  }
4706
4804
 
@@ -4733,7 +4831,7 @@ body {
4733
4831
  color: var(--color-text-tertiary);
4734
4832
  text-transform: uppercase;
4735
4833
  letter-spacing: .06em;
4736
- font-weight: 600;
4834
+ font-weight: 500;
4737
4835
  border-bottom: 1px solid var(--color-border-secondary);
4738
4836
  margin-bottom: 2px;
4739
4837
  }
@@ -4757,7 +4855,7 @@ body {
4757
4855
  color: var(--color-text-secondary);
4758
4856
  text-transform: uppercase;
4759
4857
  letter-spacing: .06em;
4760
- font-weight: 600;
4858
+ font-weight: 500;
4761
4859
  line-height: 1rem;
4762
4860
  }
4763
4861
 
@@ -5029,7 +5127,7 @@ body {
5029
5127
  padding: 1rem 1.25rem;
5030
5128
  border-bottom: 1px solid var(--color-border-primary);
5031
5129
  font-size: 1rem;
5032
- font-weight: 600;
5130
+ font-weight: 500;
5033
5131
  color: var(--color-text-primary);
5034
5132
  flex-shrink: 0;
5035
5133
  }
@@ -5339,7 +5437,7 @@ body {
5339
5437
  .model-card-badges { display: flex; gap: 0.375rem; }
5340
5438
  .badge {
5341
5439
  font-size: 0.6875rem;
5342
- font-weight: 600;
5440
+ font-weight: 500;
5343
5441
  padding: 2px 0.5rem;
5344
5442
  border-radius: 20px;
5345
5443
  letter-spacing: 0.3px;
@@ -5554,7 +5652,7 @@ body {
5554
5652
  .provider-badge-recommended {
5555
5653
  display: inline-block;
5556
5654
  font-size: 0.625rem;
5557
- font-weight: 600;
5655
+ font-weight: 500;
5558
5656
  padding: 1px 0.375rem;
5559
5657
  margin-left: 0.375rem;
5560
5658
  border-radius: 4px;
@@ -5581,7 +5679,7 @@ body {
5581
5679
  }
5582
5680
  .provider-promo-hint .promo-title {
5583
5681
  font-size: 0.6875rem;
5584
- font-weight: 600;
5682
+ font-weight: 500;
5585
5683
  color: var(--color-text-secondary);
5586
5684
  margin-bottom: 0.1875rem;
5587
5685
  }
@@ -5646,7 +5744,7 @@ body {
5646
5744
  }
5647
5745
  .model-card-grid-name {
5648
5746
  font-size: 0.9375rem;
5649
- font-weight: 600;
5747
+ font-weight: 500;
5650
5748
  color: var(--color-text-primary);
5651
5749
  line-height: 1.4;
5652
5750
  word-break: break-word;
@@ -5874,7 +5972,7 @@ body {
5874
5972
  .modal-content .modal-header h3 {
5875
5973
  margin: 0;
5876
5974
  font-size: 1.0625rem;
5877
- font-weight: 600;
5975
+ font-weight: 500;
5878
5976
  color: var(--color-text-primary);
5879
5977
  }
5880
5978
  .modal-close {
@@ -5939,7 +6037,7 @@ body {
5939
6037
  padding: 1rem 1.25rem;
5940
6038
  border-bottom: 1px solid var(--color-border-primary);
5941
6039
  font-size: 1.0625rem;
5942
- font-weight: 600;
6040
+ font-weight: 500;
5943
6041
  color: var(--color-text-primary);
5944
6042
  }
5945
6043
  .modal-buttons {
@@ -6062,7 +6160,7 @@ body {
6062
6160
  .dp-col-name {
6063
6161
  flex: 1;
6064
6162
  font-size: 0.75rem;
6065
- font-weight: 600;
6163
+ font-weight: 500;
6066
6164
  color: var(--color-text-tertiary);
6067
6165
  text-transform: uppercase;
6068
6166
  letter-spacing: 0.04em;
@@ -6401,7 +6499,7 @@ body {
6401
6499
  }
6402
6500
  .modal-box.sm { max-width: 30rem; }
6403
6501
  .modal-box.lg { max-width: 42.5rem; }
6404
- .modal-box .modal-title { font-size: 1rem; font-weight: 600; color: var(--color-text-primary); }
6502
+ .modal-box .modal-title { font-size: 1rem; font-weight: 500; color: var(--color-text-primary); }
6405
6503
  .modal-confirm-message {
6406
6504
  font-size: 0.9375rem;
6407
6505
  line-height: 1.6;
@@ -6415,7 +6513,7 @@ body {
6415
6513
  justify-content: flex-end;
6416
6514
  margin-top: 1rem;
6417
6515
  }
6418
- .btn-primary { background: var(--color-button-primary); color: #fff; border: none; border-radius: var(--radius-sm); padding: 0.5rem 1.25rem; font-weight: 600; cursor: pointer; box-shadow: var(--shadow-xs); transition: background var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); }
6516
+ .btn-primary { background: var(--color-button-primary); color: #fff; border: none; border-radius: var(--radius-sm); padding: 0.5rem 1.25rem; font-weight: 500; cursor: pointer; box-shadow: var(--shadow-xs); transition: background var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); }
6419
6517
  .btn-primary:hover { background: var(--color-button-primary-hover); box-shadow: var(--shadow-md); transform: translateY(-1px); }
6420
6518
  .btn-primary:active { transform: translateY(0); box-shadow: var(--shadow-xs); }
6421
6519
  .btn-secondary { background: transparent; color: var(--color-text-secondary); border: 1px solid var(--color-border-primary); border-radius: var(--radius-sm); padding: 0.5rem 1.25rem; font-weight: 500; cursor: pointer; transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast); }
@@ -6919,10 +7017,6 @@ body {
6919
7017
  width: 12rem;
6920
7018
  }
6921
7019
  .skills-search::placeholder { color: var(--color-text-tertiary); }
6922
- .skills-search:focus {
6923
- outline: none;
6924
- border-color: var(--color-accent, #6366f1);
6925
- }
6926
7020
  .skills-search-empty {
6927
7021
  padding: 2rem 1rem;
6928
7022
  text-align: center;
@@ -7111,7 +7205,7 @@ body {
7111
7205
  }
7112
7206
  .skill-name {
7113
7207
  font-size: 0.8125rem;
7114
- font-weight: 600;
7208
+ font-weight: 500;
7115
7209
  color: var(--color-text-primary);
7116
7210
  }
7117
7211
  .skill-card-desc {
@@ -7126,7 +7220,7 @@ body {
7126
7220
  /* ── Skill Badges ────────────────────────────────────────────────────────── */
7127
7221
  .skill-badge {
7128
7222
  font-size: 0.625rem;
7129
- font-weight: 600;
7223
+ font-weight: 500;
7130
7224
  padding: 2px 0.4375rem;
7131
7225
  border-radius: 10px;
7132
7226
  letter-spacing: 0.3px;
@@ -7385,7 +7479,7 @@ body {
7385
7479
  .store-card-body { flex: 1; min-width: 0; }
7386
7480
  .store-card-title {
7387
7481
  font-size: 0.8125rem;
7388
- font-weight: 600;
7482
+ font-weight: 500;
7389
7483
  color: var(--color-text-primary);
7390
7484
  margin-bottom: 0.25rem;
7391
7485
  }
@@ -7402,7 +7496,7 @@ body {
7402
7496
  color: var(--color-accent-primary);
7403
7497
  padding: 0.375rem 0.875rem;
7404
7498
  font-size: 0.75rem;
7405
- font-weight: 600;
7499
+ font-weight: 500;
7406
7500
  cursor: pointer;
7407
7501
  transition: background .15s, border-color .15s;
7408
7502
  }
@@ -7413,7 +7507,7 @@ body {
7413
7507
  .store-badge-installed {
7414
7508
  font-size: 0.75rem;
7415
7509
  color: var(--color-success);
7416
- font-weight: 600;
7510
+ font-weight: 500;
7417
7511
  }
7418
7512
 
7419
7513
  /* ── Brand Skills tab ────────────────────────────────────────────────────── */
@@ -7579,10 +7673,6 @@ body {
7579
7673
  background: var(--color-bg-secondary);
7580
7674
  color: var(--color-text-primary);
7581
7675
  }
7582
- .extensions-search:focus {
7583
- outline: none;
7584
- border-color: var(--color-accent, #6366f1);
7585
- }
7586
7676
  .extensions-sort {
7587
7677
  flex-shrink: 0;
7588
7678
  font-size: 0.8125rem;
@@ -7653,7 +7743,7 @@ body {
7653
7743
  }
7654
7744
  .extension-name {
7655
7745
  font-size: 0.8125rem;
7656
- font-weight: 600;
7746
+ font-weight: 500;
7657
7747
  color: var(--color-text-primary);
7658
7748
  }
7659
7749
  .extension-version {
@@ -7717,7 +7807,7 @@ body {
7717
7807
  }
7718
7808
  .extension-homepage {
7719
7809
  font-size: 0.6875rem;
7720
- color: var(--color-accent, #6366f1);
7810
+ color: var(--color-accent-primary);
7721
7811
  text-decoration: none;
7722
7812
  }
7723
7813
  .extension-homepage:hover { text-decoration: underline; }
@@ -7725,6 +7815,35 @@ body {
7725
7815
  /* Clickable catalog card + detail view */
7726
7816
  .extension-card-clickable { cursor: pointer; }
7727
7817
 
7818
+ /* System extension card toggle switch */
7819
+ .ext-card-toggle {
7820
+ flex-shrink: 0;
7821
+ position: relative;
7822
+ width: 2.25rem;
7823
+ height: 1.25rem;
7824
+ border-radius: 999px;
7825
+ border: none;
7826
+ background: var(--color-border-primary);
7827
+ cursor: pointer;
7828
+ transition: background 0.2s;
7829
+ padding: 0;
7830
+ margin-left: auto;
7831
+ align-self: center;
7832
+ }
7833
+ .ext-card-toggle-on { background: var(--color-accent-primary); }
7834
+ .ext-card-toggle-thumb {
7835
+ position: absolute;
7836
+ top: 0.125rem;
7837
+ left: 0.125rem;
7838
+ width: 1rem;
7839
+ height: 1rem;
7840
+ border-radius: 50%;
7841
+ background: #fff;
7842
+ transition: transform 0.2s;
7843
+ display: block;
7844
+ }
7845
+ .ext-card-toggle-on .ext-card-toggle-thumb { transform: translateX(1rem); }
7846
+
7728
7847
  .extension-detail {
7729
7848
  flex: 1;
7730
7849
  overflow-y: auto;
@@ -7767,7 +7886,7 @@ body {
7767
7886
  .extension-detail-block { margin-top: 1.5rem; }
7768
7887
  .extension-detail-block-title {
7769
7888
  font-size: 0.75rem;
7770
- font-weight: 600;
7889
+ font-weight: 500;
7771
7890
  text-transform: uppercase;
7772
7891
  letter-spacing: 0.04em;
7773
7892
  margin: 0 0 0.75rem;
@@ -7781,7 +7900,7 @@ body {
7781
7900
  }
7782
7901
  .extension-readme-body h1,
7783
7902
  .extension-readme-body h2,
7784
- .extension-readme-body h3 { margin: 1em 0 0.4em; font-weight: 600; }
7903
+ .extension-readme-body h3 { margin: 1em 0 0.4em; font-weight: 500; }
7785
7904
  .extension-readme-body h1 { font-size: 1.2em; }
7786
7905
  .extension-readme-body h2 { font-size: 1.05em; }
7787
7906
  .extension-readme-body h3 { font-size: 0.95em; }
@@ -7807,7 +7926,7 @@ body {
7807
7926
  .extension-detail-section { margin-bottom: 0.875rem; }
7808
7927
  .extension-detail-section-title {
7809
7928
  font-size: 0.6875rem;
7810
- font-weight: 600;
7929
+ font-weight: 500;
7811
7930
  text-transform: uppercase;
7812
7931
  letter-spacing: 0.03em;
7813
7932
  color: var(--color-text-muted);
@@ -7888,7 +8007,7 @@ body {
7888
8007
  .extension-version-notes h2,
7889
8008
  .extension-version-notes h3 {
7890
8009
  font-size: 0.8125rem;
7891
- font-weight: 600;
8010
+ font-weight: 500;
7892
8011
  color: var(--color-text-primary);
7893
8012
  margin: 0.75rem 0 0.25rem;
7894
8013
  }
@@ -7978,6 +8097,11 @@ body {
7978
8097
  background: var(--color-error-bg);
7979
8098
  border-color: var(--color-error);
7980
8099
  }
8100
+ .extension-install-error {
8101
+ margin-top: 0.5rem;
8102
+ font-size: 0.8125rem;
8103
+ color: var(--color-error);
8104
+ }
7981
8105
 
7982
8106
  /* Brand Skill card */
7983
8107
  .brand-skill-card {
@@ -8002,7 +8126,7 @@ body {
8002
8126
  }
8003
8127
  .brand-skill-name {
8004
8128
  font-size: 0.8125rem;
8005
- font-weight: 600;
8129
+ font-weight: 500;
8006
8130
  color: var(--color-text-primary);
8007
8131
  }
8008
8132
  .brand-skill-desc {
@@ -8030,7 +8154,7 @@ body {
8030
8154
  /* Version chips */
8031
8155
  .brand-skill-version {
8032
8156
  font-size: 0.6875rem;
8033
- font-weight: 600;
8157
+ font-weight: 500;
8034
8158
  padding: 2px 0.5rem;
8035
8159
  border-radius: 10px;
8036
8160
  white-space: nowrap;
@@ -8109,7 +8233,7 @@ body {
8109
8233
  border-radius: 6px;
8110
8234
  cursor: pointer;
8111
8235
  font-size: 0.75rem;
8112
- font-weight: 600;
8236
+ font-weight: 500;
8113
8237
  padding: 0.3125rem 0.75rem;
8114
8238
  transition: background .15s;
8115
8239
  }
@@ -8141,7 +8265,7 @@ body {
8141
8265
  color: var(--color-success);
8142
8266
  cursor: pointer;
8143
8267
  font-size: 0.75rem;
8144
- font-weight: 600;
8268
+ font-weight: 500;
8145
8269
  padding: 0.3125rem 0.75rem;
8146
8270
  transition: background .15s;
8147
8271
  white-space: nowrap;
@@ -8210,7 +8334,7 @@ body {
8210
8334
  .code-editor-header h3 {
8211
8335
  margin: 0;
8212
8336
  font-size: 0.875rem;
8213
- font-weight: 600;
8337
+ font-weight: 500;
8214
8338
  font-family: var(--font-mono, 'SF Mono', 'Fira Code', monospace);
8215
8339
  color: var(--color-text-primary);
8216
8340
  }
@@ -8353,7 +8477,7 @@ body {
8353
8477
  .code-editor-markdown-preview h4 {
8354
8478
  margin-top: 1.25em;
8355
8479
  margin-bottom: 0.5em;
8356
- font-weight: 600;
8480
+ font-weight: 500;
8357
8481
  }
8358
8482
  .code-editor-markdown-preview h1:first-child,
8359
8483
  .code-editor-markdown-preview h2:first-child,
@@ -8420,7 +8544,7 @@ body {
8420
8544
  }
8421
8545
  .code-editor-markdown-preview th {
8422
8546
  background: rgba(128, 128, 128, 0.15);
8423
- font-weight: 600;
8547
+ font-weight: 500;
8424
8548
  }
8425
8549
 
8426
8550
  /* ── Skills sidebar section ──────────────────────────────────────────────── */
@@ -8571,7 +8695,7 @@ body.setup-mode[data-theme="dark"] {
8571
8695
  /* Phase label */
8572
8696
  .setup-phase-label {
8573
8697
  font-size: 0.8125rem;
8574
- font-weight: 600;
8698
+ font-weight: 500;
8575
8699
  color: var(--color-text-secondary);
8576
8700
  text-align: center;
8577
8701
  margin: 0;
@@ -8598,7 +8722,7 @@ body.setup-mode[data-theme="dark"] {
8598
8722
  border-radius: 8px;
8599
8723
  color: var(--color-text-primary);
8600
8724
  font-size: 0.8125rem;
8601
- font-weight: 600;
8725
+ font-weight: 500;
8602
8726
  padding: 0.5rem 0;
8603
8727
  cursor: pointer;
8604
8728
  transition: border-color .15s, background .15s, color .15s;
@@ -8620,7 +8744,7 @@ body.setup-mode[data-theme="dark"] {
8620
8744
  border-radius: 8px;
8621
8745
  padding: 0.5625rem 0;
8622
8746
  font-size: 0.8125rem;
8623
- font-weight: 600;
8747
+ font-weight: 500;
8624
8748
  cursor: pointer;
8625
8749
  transition: background .15s, opacity .15s;
8626
8750
  }
@@ -8640,7 +8764,7 @@ body.setup-mode[data-theme="dark"] {
8640
8764
  }
8641
8765
  .setup-label {
8642
8766
  font-size: 0.6875rem;
8643
- font-weight: 600;
8767
+ font-weight: 500;
8644
8768
  color: var(--color-text-tertiary);
8645
8769
  text-transform: uppercase;
8646
8770
  letter-spacing: .06em;
@@ -8699,7 +8823,7 @@ body.setup-mode[data-theme="dark"] {
8699
8823
  }
8700
8824
  .setup-device-card-badge {
8701
8825
  font-size: 0.625rem;
8702
- font-weight: 600;
8826
+ font-weight: 500;
8703
8827
  padding: 1px 0.375rem;
8704
8828
  border-radius: 4px;
8705
8829
  background: var(--color-accent-primary);
@@ -8709,7 +8833,7 @@ body.setup-mode[data-theme="dark"] {
8709
8833
  }
8710
8834
  .setup-device-card-lead {
8711
8835
  font-size: 0.8125rem;
8712
- font-weight: 600;
8836
+ font-weight: 500;
8713
8837
  color: var(--color-text-primary);
8714
8838
  margin: 0 0 0.625rem;
8715
8839
  line-height: 1.5;
@@ -8820,7 +8944,7 @@ body.setup-mode[data-theme="dark"] {
8820
8944
  }
8821
8945
  .setup-device-success-points li strong {
8822
8946
  color: var(--color-text-primary);
8823
- font-weight: 600;
8947
+ font-weight: 500;
8824
8948
  margin-right: 0.25rem;
8825
8949
  }
8826
8950
  .setup-device-success-points li.setup-device-success-note {
@@ -8901,7 +9025,7 @@ body.setup-mode[data-theme="dark"] {
8901
9025
  border-radius: 8px;
8902
9026
  padding: 0.5625rem 0.875rem;
8903
9027
  font-size: 0.8125rem;
8904
- font-weight: 600;
9028
+ font-weight: 500;
8905
9029
  cursor: pointer;
8906
9030
  white-space: nowrap;
8907
9031
  transition: border-color .15s, color .15s;
@@ -8920,7 +9044,7 @@ body.setup-mode[data-theme="dark"] {
8920
9044
  border-radius: 8px;
8921
9045
  padding: 0.625rem 0;
8922
9046
  font-size: 0.875rem;
8923
- font-weight: 600;
9047
+ font-weight: 500;
8924
9048
  cursor: pointer;
8925
9049
  transition: background .15s, opacity .15s;
8926
9050
  }
@@ -9033,7 +9157,7 @@ body.setup-mode[data-theme="dark"] {
9033
9157
  border-radius: 8px;
9034
9158
  color: var(--color-text-primary);
9035
9159
  font-size: 0.9375rem;
9036
- font-weight: 600;
9160
+ font-weight: 500;
9037
9161
  padding: 0.75rem 2rem;
9038
9162
  cursor: pointer;
9039
9163
  transition: border-color .15s, background .15s, color .15s;
@@ -9061,7 +9185,7 @@ body.setup-mode[data-theme="dark"] {
9061
9185
  border-radius: 6px;
9062
9186
  color: var(--color-text-primary);
9063
9187
  font-size: 0.8125rem;
9064
- font-weight: 600;
9188
+ font-weight: 500;
9065
9189
  padding: 0.375rem 1.125rem;
9066
9190
  cursor: pointer;
9067
9191
  transition: border-color .15s, background .15s, color .15s;
@@ -9088,7 +9212,7 @@ body.setup-mode[data-theme="dark"] {
9088
9212
 
9089
9213
  .onboard-phase-title {
9090
9214
  font-size: 1rem;
9091
- font-weight: 600;
9215
+ font-weight: 500;
9092
9216
  color: var(--color-text-primary);
9093
9217
  text-align: center;
9094
9218
  }
@@ -9109,7 +9233,7 @@ body.setup-mode[data-theme="dark"] {
9109
9233
 
9110
9234
  .onboard-label {
9111
9235
  font-size: 0.75rem;
9112
- font-weight: 600;
9236
+ font-weight: 500;
9113
9237
  color: var(--color-text-secondary);
9114
9238
  text-transform: uppercase;
9115
9239
  letter-spacing: .04em;
@@ -9172,7 +9296,7 @@ body.setup-mode[data-theme="dark"] {
9172
9296
  border-radius: 6px;
9173
9297
  padding: 0.625rem 1.75rem;
9174
9298
  font-size: 0.875rem;
9175
- font-weight: 600;
9299
+ font-weight: 500;
9176
9300
  cursor: pointer;
9177
9301
  transition: background .15s;
9178
9302
  }
@@ -9445,7 +9569,7 @@ body.setup-mode[data-theme="dark"] {
9445
9569
  }
9446
9570
  .qr-lightbox-label {
9447
9571
  font-size: 0.9375rem;
9448
- font-weight: 600;
9572
+ font-weight: 500;
9449
9573
  color: var(--color-text-primary);
9450
9574
  margin: 0;
9451
9575
  text-align: center;
@@ -9563,7 +9687,7 @@ body.setup-mode[data-theme="dark"] {
9563
9687
  color: var(--color-warning);
9564
9688
  cursor: pointer;
9565
9689
  font-size: 0.75rem;
9566
- font-weight: 600;
9690
+ font-weight: 500;
9567
9691
  padding: 0.2rem 0.6rem;
9568
9692
  opacity: 0.9;
9569
9693
  flex-shrink: 0;
@@ -9598,7 +9722,7 @@ body.setup-mode[data-theme="dark"] {
9598
9722
  color: #fff;
9599
9723
  cursor: pointer;
9600
9724
  font-size: 0.75rem;
9601
- font-weight: 600;
9725
+ font-weight: 500;
9602
9726
  padding: 0.25rem 0.75rem;
9603
9727
  white-space: nowrap;
9604
9728
  transition: opacity 0.15s;
@@ -9661,7 +9785,7 @@ body.setup-mode[data-theme="dark"] {
9661
9785
 
9662
9786
  .settings-theme-label {
9663
9787
  font-size: 0.875rem;
9664
- font-weight: 600;
9788
+ font-weight: 500;
9665
9789
  color: var(--color-text-primary);
9666
9790
  transition: color 0.3s ease;
9667
9791
  }
@@ -9729,8 +9853,19 @@ body.setup-mode[data-theme="dark"] {
9729
9853
  }
9730
9854
 
9731
9855
  .channels-page-header {
9856
+ display: flex;
9857
+ align-items: flex-start;
9858
+ justify-content: space-between;
9859
+ gap: 1rem;
9732
9860
  margin-bottom: 0.25rem;
9733
9861
  }
9862
+ .channels-page-header-main {
9863
+ min-width: 0;
9864
+ }
9865
+ #extensions-new-btn.extension-action {
9866
+ padding: 0.375rem 0.75rem;
9867
+ font-size: 0.8125rem;
9868
+ }
9734
9869
 
9735
9870
  .channels-page-title {
9736
9871
  font-size: 1.375rem;
@@ -9853,7 +9988,7 @@ body.setup-mode[data-theme="dark"] {
9853
9988
 
9854
9989
  .channel-card-name {
9855
9990
  font-size: 0.9375rem;
9856
- font-weight: 600;
9991
+ font-weight: 500;
9857
9992
  color: var(--color-text-primary);
9858
9993
  margin-bottom: 2px;
9859
9994
  }
@@ -9979,7 +10114,7 @@ body.setup-mode[data-theme="dark"] {
9979
10114
 
9980
10115
  .channel-section-header {
9981
10116
  font-size: 0.75rem;
9982
- font-weight: 600;
10117
+ font-weight: 500;
9983
10118
  text-transform: uppercase;
9984
10119
  letter-spacing: 0.05em;
9985
10120
  color: var(--color-text-tertiary);
@@ -10173,7 +10308,7 @@ body.setup-mode[data-theme="dark"] {
10173
10308
  font-family: monospace;
10174
10309
  color: var(--color-text-primary);
10175
10310
  margin: 0 0 0.75rem;
10176
- font-weight: 600;
10311
+ font-weight: 500;
10177
10312
  }
10178
10313
  .vup-arrow {
10179
10314
  color: var(--color-accent-primary);
@@ -10191,7 +10326,7 @@ body.setup-mode[data-theme="dark"] {
10191
10326
  border: none;
10192
10327
  border-radius: 6px;
10193
10328
  font-size: 0.75rem;
10194
- font-weight: 600;
10329
+ font-weight: 500;
10195
10330
  cursor: pointer;
10196
10331
  transition: background .15s, transform .1s;
10197
10332
  }
@@ -10309,7 +10444,7 @@ body.setup-mode[data-theme="dark"] {
10309
10444
  border: none;
10310
10445
  border-radius: 6px;
10311
10446
  font-size: 0.8125rem;
10312
- font-weight: 600;
10447
+ font-weight: 500;
10313
10448
  cursor: pointer;
10314
10449
  transition: background .15s, transform .1s;
10315
10450
  letter-spacing: .02em;
@@ -10351,7 +10486,7 @@ body.setup-mode[data-theme="dark"] {
10351
10486
  .vup-restart-failed-title {
10352
10487
  margin: 0 0 0.375rem;
10353
10488
  font-size: 0.8125rem;
10354
- font-weight: 600;
10489
+ font-weight: 500;
10355
10490
  color: var(--color-error, #ef4444);
10356
10491
  }
10357
10492
  .vup-restart-failed-desc {
@@ -10458,7 +10593,7 @@ body.setup-mode[data-theme="dark"] {
10458
10593
 
10459
10594
  .profile-section-title {
10460
10595
  font-size: 0.9375rem;
10461
- font-weight: 600;
10596
+ font-weight: 500;
10462
10597
  color: var(--color-text-primary);
10463
10598
  margin: 0;
10464
10599
  }
@@ -10587,7 +10722,7 @@ body.setup-mode[data-theme="dark"] {
10587
10722
  .profile-markdown h2,
10588
10723
  .profile-markdown h3 {
10589
10724
  margin: 0.875rem 0 0.5rem;
10590
- font-weight: 600;
10725
+ font-weight: 500;
10591
10726
  color: var(--color-text-primary);
10592
10727
  }
10593
10728
 
@@ -10617,7 +10752,7 @@ body.setup-mode[data-theme="dark"] {
10617
10752
  font-size: 0.75rem;
10618
10753
  }
10619
10754
 
10620
- .profile-markdown strong { font-weight: 600; }
10755
+ .profile-markdown strong { font-weight: 500; }
10621
10756
  .profile-markdown em { font-style: italic; }
10622
10757
 
10623
10758
  /* ── Memories list (cards) ───────────────────────────────────────────── */
@@ -10676,7 +10811,7 @@ body.setup-mode[data-theme="dark"] {
10676
10811
 
10677
10812
  .memory-card-title {
10678
10813
  font-size: 0.875rem;
10679
- font-weight: 600;
10814
+ font-weight: 500;
10680
10815
  color: var(--color-text-primary);
10681
10816
  margin-bottom: 0.1875rem;
10682
10817
  overflow: hidden;
@@ -10771,7 +10906,7 @@ body.setup-mode[data-theme="dark"] {
10771
10906
  .memory-card-body h2,
10772
10907
  .memory-card-body h3 {
10773
10908
  margin: 0.625rem 0 0.375rem;
10774
- font-weight: 600;
10909
+ font-weight: 500;
10775
10910
  }
10776
10911
 
10777
10912
  .memory-card-body p { margin: 0.375rem 0; }
@@ -10866,7 +11001,7 @@ body.setup-mode[data-theme="dark"] {
10866
11001
  }
10867
11002
  .trash-session-card-name {
10868
11003
  font-size: 0.875rem;
10869
- font-weight: 600;
11004
+ font-weight: 500;
10870
11005
  color: var(--color-text-primary);
10871
11006
  white-space: nowrap;
10872
11007
  overflow: hidden;
@@ -11092,9 +11227,8 @@ body.setup-mode[data-theme="dark"] {
11092
11227
  min-width: 0;
11093
11228
  }
11094
11229
  .trash-card-title {
11095
- font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
11096
11230
  font-size: 0.8125rem;
11097
- font-weight: 600;
11231
+ font-weight: 500;
11098
11232
  color: var(--color-text-primary);
11099
11233
  white-space: nowrap;
11100
11234
  overflow: hidden;
@@ -11102,7 +11236,6 @@ body.setup-mode[data-theme="dark"] {
11102
11236
  margin-bottom: 0.25rem;
11103
11237
  }
11104
11238
  .trash-card-path {
11105
- font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
11106
11239
  font-size: 0.6875rem;
11107
11240
  color: var(--color-text-muted);
11108
11241
  white-space: nowrap;
@@ -11270,7 +11403,7 @@ body.setup-mode[data-theme="dark"] {
11270
11403
  }
11271
11404
  .billing-title-row h2 {
11272
11405
  font-size: 1.5rem;
11273
- font-weight: 600;
11406
+ font-weight: 500;
11274
11407
  color: var(--color-text-primary);
11275
11408
  margin: 0;
11276
11409
  }
@@ -11344,9 +11477,6 @@ body.setup-mode[data-theme="dark"] {
11344
11477
  background-position: right 0.625rem center;
11345
11478
  transition: border-color 0.15s ease;
11346
11479
  }
11347
- .billing-model-filter:hover {
11348
- border-color: var(--color-border-strong);
11349
- }
11350
11480
  .billing-model-filter:focus {
11351
11481
  outline: none;
11352
11482
  border-color: var(--color-accent-primary);
@@ -11568,7 +11698,7 @@ body.setup-mode[data-theme="dark"] {
11568
11698
  /* ── Cost Trend Line Chart ───────────────────────────────────────────── */
11569
11699
  .billing-trend-total {
11570
11700
  font-size: 0.75rem;
11571
- font-weight: 600;
11701
+ font-weight: 500;
11572
11702
  color: var(--color-accent-primary);
11573
11703
  }
11574
11704
  .billing-trend-chart {
@@ -11637,7 +11767,7 @@ body.setup-mode[data-theme="dark"] {
11637
11767
  }
11638
11768
  .billing-chart-header h4 {
11639
11769
  font-size: 0.9375rem;
11640
- font-weight: 600;
11770
+ font-weight: 500;
11641
11771
  color: var(--color-text-primary);
11642
11772
  margin: 0;
11643
11773
  }
@@ -11762,14 +11892,14 @@ body.setup-mode[data-theme="dark"] {
11762
11892
  border-bottom: 1px solid var(--color-border-primary);
11763
11893
  }
11764
11894
  .tooltip-date {
11765
- font-weight: 600;
11895
+ font-weight: 500;
11766
11896
  color: var(--color-text-primary);
11767
11897
  white-space: nowrap;
11768
11898
  }
11769
11899
  .tooltip-total-value {
11770
11900
  font-size: 0.875rem;
11771
11901
  color: var(--color-accent);
11772
- font-weight: 600;
11902
+ font-weight: 500;
11773
11903
  white-space: nowrap;
11774
11904
  margin-left: 0.75rem;
11775
11905
  }
@@ -11814,7 +11944,7 @@ body.setup-mode[data-theme="dark"] {
11814
11944
  }
11815
11945
  .billing-section h3 {
11816
11946
  font-size: 0.9375rem;
11817
- font-weight: 600;
11947
+ font-weight: 500;
11818
11948
  color: var(--color-text-primary);
11819
11949
  margin: 0 0 1rem 0;
11820
11950
  }
@@ -11841,7 +11971,7 @@ body.setup-mode[data-theme="dark"] {
11841
11971
  }
11842
11972
  .billing-token-bar-value {
11843
11973
  font-size: 0.8125rem;
11844
- font-weight: 600;
11974
+ font-weight: 500;
11845
11975
  color: var(--color-text-primary);
11846
11976
  }
11847
11977
  .billing-token-bar-track {
@@ -11916,7 +12046,7 @@ body.setup-mode[data-theme="dark"] {
11916
12046
  }
11917
12047
  .billing-model-cost {
11918
12048
  font-size: 0.8125rem;
11919
- font-weight: 600;
12049
+ font-weight: 500;
11920
12050
  font-family: var(--font-mono);
11921
12051
  color: var(--color-text-primary);
11922
12052
  text-align: right;
@@ -12061,7 +12191,7 @@ body.setup-mode[data-theme="dark"] {
12061
12191
  }
12062
12192
  .mcp-cmd-label {
12063
12193
  font-size: 0.6875rem;
12064
- font-weight: 600;
12194
+ font-weight: 500;
12065
12195
  color: var(--color-text-secondary);
12066
12196
  text-transform: uppercase;
12067
12197
  letter-spacing: 0.05em;
@@ -12114,7 +12244,7 @@ body.setup-mode[data-theme="dark"] {
12114
12244
  }
12115
12245
  .mcp-tools-header {
12116
12246
  font-size: 0.8125rem;
12117
- font-weight: 600;
12247
+ font-weight: 500;
12118
12248
  color: var(--color-text-secondary);
12119
12249
  margin-bottom: 0.5rem;
12120
12250
  letter-spacing: 0.01em;
@@ -12140,7 +12270,7 @@ body.setup-mode[data-theme="dark"] {
12140
12270
  .mcp-tool-name {
12141
12271
  font-family: var(--font-mono);
12142
12272
  font-size: 0.8125rem;
12143
- font-weight: 600;
12273
+ font-weight: 500;
12144
12274
  color: var(--color-text-primary, var(--color-text));
12145
12275
  }
12146
12276
  .mcp-tool-desc {
@@ -12165,7 +12295,7 @@ body.setup-mode[data-theme="dark"] {
12165
12295
  .mcp-cta-text h3 {
12166
12296
  margin: 0 0 0.25rem;
12167
12297
  font-size: 0.9375rem;
12168
- font-weight: 600;
12298
+ font-weight: 500;
12169
12299
  color: var(--color-text-primary, var(--color-text));
12170
12300
  letter-spacing: -0.2px;
12171
12301
  }
@@ -12268,7 +12398,7 @@ body.setup-mode[data-theme="dark"] {
12268
12398
  background: color-mix(in srgb, var(--color-accent-primary) 8%, var(--color-bg-secondary));
12269
12399
  color: var(--color-accent-primary);
12270
12400
  font-size: 0.8125rem;
12271
- font-weight: 600;
12401
+ font-weight: 500;
12272
12402
  line-height: 1;
12273
12403
  white-space: nowrap;
12274
12404
  cursor: pointer;
@@ -12451,7 +12581,7 @@ body.setup-mode[data-theme="dark"] {
12451
12581
 
12452
12582
  .settings-bg-theme-card.active .bg-card-label {
12453
12583
  color: var(--color-accent-primary);
12454
- font-weight: 600;
12584
+ font-weight: 500;
12455
12585
  }
12456
12586
 
12457
12587
  /* ── Sessions List ───────────────────────────────────────────────────── */
@@ -12468,7 +12598,7 @@ body.setup-mode[data-theme="dark"] {
12468
12598
  }
12469
12599
  .billing-sessions-section h3 {
12470
12600
  font-size: 0.9375rem;
12471
- font-weight: 600;
12601
+ font-weight: 500;
12472
12602
  color: var(--color-text-primary);
12473
12603
  margin: 0 0 1rem 0;
12474
12604
  }
@@ -12486,7 +12616,7 @@ body.setup-mode[data-theme="dark"] {
12486
12616
  background: var(--color-bg-tertiary);
12487
12617
  border-radius: 8px;
12488
12618
  font-size: 0.75rem;
12489
- font-weight: 600;
12619
+ font-weight: 500;
12490
12620
  color: var(--color-text-secondary);
12491
12621
  text-transform: uppercase;
12492
12622
  letter-spacing: 0.05em;
@@ -12569,7 +12699,7 @@ body.setup-mode[data-theme="dark"] {
12569
12699
  }
12570
12700
  .billing-cell-cost {
12571
12701
  font-family: var(--font-mono);
12572
- font-weight: 600;
12702
+ font-weight: 500;
12573
12703
  color: var(--color-text-primary);
12574
12704
  text-align: right;
12575
12705
  }
@@ -12609,7 +12739,7 @@ body.setup-mode[data-theme="dark"] {
12609
12739
  }
12610
12740
  .media-row-title {
12611
12741
  font-size: 0.875rem;
12612
- font-weight: 600;
12742
+ font-weight: 500;
12613
12743
  color: var(--color-text-primary);
12614
12744
  min-width: 3rem;
12615
12745
  }
@@ -12980,7 +13110,7 @@ body.setup-mode[data-theme="dark"] {
12980
13110
 
12981
13111
  .share-row-label {
12982
13112
  font-size: 0.6875rem;
12983
- font-weight: 600;
13113
+ font-weight: 500;
12984
13114
  letter-spacing: .04em;
12985
13115
  text-transform: uppercase;
12986
13116
  color: var(--color-text-muted);
@@ -13055,7 +13185,7 @@ body.setup-mode[data-theme="dark"] {
13055
13185
  background: transparent;
13056
13186
  color: var(--color-text-secondary);
13057
13187
  font-size: 0.8125rem;
13058
- font-weight: 600;
13188
+ font-weight: 500;
13059
13189
  cursor: pointer;
13060
13190
  transition: background .12s ease, color .12s ease;
13061
13191
  }
@@ -13078,7 +13208,7 @@ body.setup-mode[data-theme="dark"] {
13078
13208
  background: var(--color-bg-primary);
13079
13209
  color: var(--color-text-secondary);
13080
13210
  font-size: 0.75rem;
13081
- font-weight: 600;
13211
+ font-weight: 500;
13082
13212
  cursor: pointer;
13083
13213
  display: flex;
13084
13214
  flex-direction: column;
@@ -13113,7 +13243,7 @@ body.setup-mode[data-theme="dark"] {
13113
13243
  background: none;
13114
13244
  color: var(--color-button-primary);
13115
13245
  font-size: 0.75rem;
13116
- font-weight: 600;
13246
+ font-weight: 500;
13117
13247
  cursor: pointer;
13118
13248
  padding: 2px 4px;
13119
13249
  border-radius: 4px;
@@ -13172,7 +13302,7 @@ body.setup-mode[data-theme="dark"] {
13172
13302
  padding: 9px 8px;
13173
13303
  border-radius: var(--radius-sm, 6px);
13174
13304
  font-size: 0.8125rem;
13175
- font-weight: 600;
13305
+ font-weight: 500;
13176
13306
  cursor: pointer;
13177
13307
  border: 1px solid var(--color-border-primary);
13178
13308
  background: var(--color-bg-primary);
@@ -13622,7 +13752,7 @@ body.setup-mode[data-theme="dark"] {
13622
13752
  margin-top: 0.125rem;
13623
13753
  }
13624
13754
  .billing-session-numbers-row .billing-cell-cost {
13625
- font-weight: 600;
13755
+ font-weight: 500;
13626
13756
  color: var(--color-text-primary);
13627
13757
  }
13628
13758
  .billing-session-numbers-row .billing-cell-time {
@@ -13848,7 +13978,7 @@ body.setup-mode[data-theme="dark"] {
13848
13978
  flex: 1;
13849
13979
  min-width: 0;
13850
13980
  font-size: 0.8125rem;
13851
- font-weight: 600;
13981
+ font-weight: 500;
13852
13982
  color: var(--color-text-primary);
13853
13983
  overflow: hidden;
13854
13984
  text-overflow: ellipsis;