anentrypoint-design 0.0.213 → 0.0.215

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.
package/app-shell.css CHANGED
@@ -1355,7 +1355,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1355
1355
  transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
1356
1356
  }
1357
1357
  .ds-density-btn:hover { color: var(--fg); }
1358
- .ds-density-btn.active { background: var(--accent-tint); color: var(--accent); }
1358
+ .ds-density-btn.active { background: var(--accent-tint); color: var(--fg); }
1359
1359
  .ds-density-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
1360
1360
 
1361
1361
  /* Compact density — tighter rows for long listings. */
@@ -1380,6 +1380,10 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1380
1380
  .ds-file-cell.active { border-color: var(--accent); background: var(--accent-tint); }
1381
1381
  .ds-file-cell.is-marked { border-color: var(--accent); background: var(--accent-tint); }
1382
1382
  .ds-file-cell.is-locked { opacity: 0.6; }
1383
+ .ds-file-row.is-locked { opacity: 0.6; }
1384
+ .ds-file-row.is-restricted .title { color: var(--fg-2); }
1385
+ .ds-file-perm-tag { font-family: var(--ff-mono); font-size: var(--fs-micro); color: var(--fg-3); padding: 1px 6px; border: var(--bw-hair) solid var(--rule); border-radius: var(--r-1); white-space: nowrap; }
1386
+ .ds-file-perm-tag.is-noaccess { color: var(--flame); border-color: color-mix(in srgb, var(--flame) 40%, transparent); }
1383
1387
  .ds-file-cell-open {
1384
1388
  display: flex; flex-direction: column; align-items: stretch; gap: var(--space-1);
1385
1389
  width: 100%; padding: var(--space-1); margin: 0;
@@ -1776,6 +1780,10 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1776
1780
  border-radius: var(--r-2); font-size: var(--fs-xs);
1777
1781
  }
1778
1782
  .ds-shortcut-row { display: flex; align-items: center; gap: var(--space-2); }
1783
+ .ds-shortcuts-hint .ds-kbd-label { flex: 1 1 auto; opacity: .85; }
1784
+ .ds-shortcuts-hint .ds-kbd { white-space: normal; max-width: 100%; }
1785
+ .ds-kbd-caps { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; }
1786
+ .ds-kbd-sep { color: var(--fg-3); font-size: var(--fs-micro); padding: 0 2px; }
1779
1787
  .ds-kbd {
1780
1788
  display: inline-block; min-width: 0;
1781
1789
  padding: 2px 7px; border-radius: 6px;
@@ -2213,9 +2221,10 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2213
2221
  re-declare it; the sizing block now states the truth). */
2214
2222
  line-height: 1.5; resize: none;
2215
2223
  min-height: 28px; max-height: 200px;
2216
- box-sizing: border-box; overflow-y: auto;
2224
+ box-sizing: border-box; overflow-y: hidden;
2217
2225
  scrollbar-width: thin;
2218
2226
  }
2227
+ .chat-composer textarea:focus { overflow-y: auto; }
2219
2228
  .chat-composer textarea::placeholder { color: var(--fg-3); }
2220
2229
  .chat-composer textarea:focus { background: none; border: none; box-shadow: none; outline: none; }
2221
2230
  .chat-composer .send {
@@ -2248,6 +2257,12 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2248
2257
  .chat-composer .send:disabled {
2249
2258
  background: var(--bg-3); color: var(--fg-3); cursor: not-allowed; transform: none;
2250
2259
  }
2260
+ @media (prefers-reduced-motion: reduce) {
2261
+ .chat-composer,
2262
+ .chat-composer textarea,
2263
+ .chat-composer .send,
2264
+ .composer-btn { transition: none; }
2265
+ }
2251
2266
 
2252
2267
  .aicat-portrait { display: inline-flex; align-items: center; gap: 10px; padding: 4px 0; }
2253
2268
  .aicat-face {
@@ -3249,6 +3264,8 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3249
3264
  .ws-pane-collapsed .ws-pane > * { display: none; }
3250
3265
  @media (pointer: coarse) {
3251
3266
  .ws-rail-toggle { width: 44px; height: 44px; }
3267
+ .ws-drawer-toggle { width: 44px; height: 44px; }
3268
+ .ws-desktop-toggle { width: 44px; height: 44px; }
3252
3269
  }
3253
3270
 
3254
3271
  /* Drawer toggles and the scrim are hidden by default and revealed by the staged
@@ -3266,6 +3283,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3266
3283
  pane becomes a mobile overlay drawer at <=1480px, reached via its own
3267
3284
  drawer-toggle), so hide this crumb control past that breakpoint. */
3268
3285
  @media (max-width: 1480px) { .ws-pane-toggle { display: none; } }
3286
+ @media (max-width: 480px) { .ds-247420 .ws-crumb { padding-left: var(--space-2); padding-right: var(--space-2); } }
3269
3287
  .ws-scrim { display: none; }
3270
3288
 
3271
3289
  /* Responsive: the columns yield to the CONTENT in stages - the main column is
@@ -3374,6 +3392,11 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3374
3392
  .ws-drawer-toggle:hover { background: var(--bg-2); color: var(--fg); }
3375
3393
  .ws-drawer-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3376
3394
 
3395
+ @media (prefers-reduced-motion: reduce) {
3396
+ .ws-shell, .ws-rail, .ws-pane, .ws-sessions, .ws-scrim { transition: none; }
3397
+ .ws-resizer::after { transition: none; }
3398
+ }
3399
+
3377
3400
  /* ============================================================
3378
3401
  Row title highlight, expanded-row actions, filter pills.
3379
3402
  ============================================================ */
@@ -3404,7 +3427,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3404
3427
  transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
3405
3428
  }
3406
3429
  .ds-filter-pill:hover { background: var(--bg-3); color: var(--fg); }
3407
- .ds-filter-pill.active { background: var(--accent-tint); color: var(--accent); border-color: var(--accent); }
3430
+ .ds-filter-pill.active { background: var(--accent-tint); color: var(--fg); border-color: var(--accent); }
3408
3431
  .ds-filter-pill:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
3409
3432
 
3410
3433
  /* Touch floor for the new small controls. */
package/chat.css CHANGED
@@ -91,7 +91,7 @@
91
91
  background: none;
92
92
  border: 1px solid var(--rule);
93
93
  color: inherit;
94
- border-radius: 6px;
94
+ border-radius: var(--r-1);
95
95
  padding: 2px 8px;
96
96
  cursor: pointer;
97
97
  font: inherit;
@@ -110,6 +110,7 @@
110
110
  }
111
111
  .agentchat-cwd-input:focus-visible { outline: none; box-shadow: var(--focus-ring-inset); }
112
112
  .agentchat-cwd-input[aria-invalid='true'] { border-color: var(--flame); box-shadow: inset 0 0 0 var(--bw-hair) var(--flame); }
113
+ .agentchat-cwd-input[aria-busy='true'] { border-color: var(--fg-3); box-shadow: inset 0 0 0 var(--bw-hair) var(--fg-3); }
113
114
 
114
115
  /* head + thread */
115
116
  .agentchat-head {
@@ -360,18 +361,14 @@
360
361
  }
361
362
  .ds-session-new > span { display: none; }
362
363
  .ds-session-new:hover { background: var(--bg-2); color: var(--fg); }
363
- .ds-session-search { order: 1; flex: 1 1 auto; min-width: 0; }
364
+ /* Rail filter uses the shared .ds-search-input primitive (provides bg/border/
365
+ radius/focus-ring); only the rail layout + touch floor live here. */
366
+ .ds-session-head .ds-search-input { order: 1; flex: 1 1 auto; min-width: 0; }
364
367
  .ds-session-new:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
365
- .ds-session-search {
366
- width: 100%; padding: var(--space-1) var(--space-3); min-height: 36px;
367
- background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); color: var(--fg);
368
- border-radius: var(--r-1); font-family: var(--ff-body); font-size: var(--fs-sm);
369
- }
370
- .ds-session-search:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--accent); }
371
368
  /* Touch floor (must FOLLOW the base rules - same specificity, order decides). */
372
369
  @media (pointer: coarse) {
373
370
  .ds-session-new { width: 44px; min-height: 44px; }
374
- .ds-session-search { min-height: 44px; }
371
+ .ds-session-head .ds-search-input { min-height: 44px; }
375
372
  }
376
373
  .ds-session-list, .ds-session-groups { flex: 1; min-height: 0; overflow-y: auto; padding: var(--space-2); }
377
374
  /* Grouped rows (Today/Yesterday/...) lay out like the flat list; the section
@@ -550,7 +547,7 @@ button.chat-composer-context:focus-visible { outline: var(--focus-w) solid var(-
550
547
  border-radius: var(--r-1); background: var(--bg-2); color: var(--fg-2);
551
548
  cursor: pointer; font-family: var(--ff-body); font-size: var(--fs-tiny);
552
549
  }
553
- .ds-dash-errors-toggle.active { background: var(--accent-tint); color: var(--accent); border-color: var(--accent); }
550
+ .ds-dash-errors-toggle.active { background: var(--accent-tint); color: var(--fg); border-color: var(--accent); }
554
551
  .ds-dash-errors-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
555
552
 
556
553
  /* --- C3: per-card select checkbox. --- */
@@ -718,6 +715,7 @@ button.chat-composer-context:focus-visible { outline: var(--focus-w) solid var(-
718
715
  /* Inline cwd validation line (checking / error) under the cwd input. */
719
716
  .agentchat-cwd-hint { font-size: var(--fs-tiny); color: var(--fg-3); }
720
717
  .agentchat-cwd-hint.is-error { color: var(--flame); }
718
+ .agentchat-cwd-hint.is-checking { color: var(--fg-2); font-style: italic; }
721
719
 
722
720
  /* Dashboard: shared session title heading (same string as the rails). */
723
721
  .ds-dash-title {
@@ -817,6 +815,7 @@ button.chat-composer-context:focus-visible { outline: var(--focus-w) solid var(-
817
815
  }
818
816
  .chat-msg .chat-tool .chat-tool-head::-webkit-details-marker { display: none; }
819
817
  .chat-msg .chat-tool .chat-tool-head:hover { background: var(--bg-2); }
818
+ .chat-msg .chat-tool .chat-tool-head:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
820
819
  .chat-tool-icon { display: inline-flex; color: var(--fg-3); }
821
820
  .chat-tool-name { font-family: var(--ff-mono); font-weight: 600; color: var(--fg); }
822
821
  .chat-tool-label { color: var(--fg-3); font-size: var(--fs-tiny); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
@@ -837,6 +836,7 @@ button.chat-composer-context:focus-visible { outline: var(--focus-w) solid var(-
837
836
  .chat-tool-section-label { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); font-size: var(--fs-tiny); font-weight: 600; text-transform: uppercase; letter-spacing: var(--tr-caps); color: var(--fg-3); }
838
837
  .chat-tool-copy { position: static; opacity: 0; }
839
838
  .chat-tool-section:hover .chat-tool-copy, .chat-tool-section:focus-within .chat-tool-copy { opacity: 1; }
839
+ .chat-tool-copy:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; opacity: 1; }
840
840
  .chat-tool-pre { margin: 0; padding: var(--space-2); background: var(--bg-2); border-radius: var(--r-1); font-family: var(--ff-mono); font-size: var(--fs-tiny); line-height: 1.45; overflow-x: auto; max-height: 320px; overflow-y: auto; }
841
841
  .chat-tool-pre.is-error { color: var(--flame); }
842
842
  .chat-tool-pre.chat-tool-empty { color: var(--fg-3); }
@@ -892,15 +892,17 @@ button.chat-composer-context:focus-visible { outline: var(--focus-w) solid var(-
892
892
  .ds-dash-breakdown .seg { display: inline-flex; align-items: center; gap: var(--space-1); font-weight: 600; }
893
893
  .ds-dash-breakdown .seg::before { content: ''; width: 7px; height: 7px; border-radius: 50%; flex: none; }
894
894
  .ds-dash-breakdown .seg.is-running { color: var(--accent); }
895
- .ds-dash-breakdown .seg.is-running::before { background: var(--accent); }
895
+ .ds-dash-breakdown .seg.is-running::before { background: var(--accent); box-shadow: 0 0 0 1.5px color-mix(in oklab, var(--accent) 30%, transparent); }
896
896
  .ds-dash-breakdown .seg.is-error { color: var(--flame); }
897
897
  .ds-dash-breakdown .seg.is-error::before { background: var(--flame); box-shadow: 0 0 0 1.5px color-mix(in oklab, var(--flame) 38%, transparent); }
898
- .ds-dash-breakdown .seg.is-idle { color: var(--amber); }
899
- .ds-dash-breakdown .seg.is-idle::before { background: transparent; box-shadow: inset 0 0 0 2px var(--amber); }
898
+ .ds-dash-breakdown .seg.is-idle { color: var(--stale); }
899
+ .ds-dash-breakdown .seg.is-idle::before { background: transparent; box-shadow: inset 0 0 0 1px var(--stale), inset 0 0 0 3px var(--bg); }
900
900
  .ds-dash-stream-disc { display: inline-flex; align-items: center; gap: var(--space-1); }
901
901
  .ds-dash-selectall { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--fs-tiny); color: var(--fg-2); cursor: pointer; background: none; border: none; padding: var(--space-1); }
902
902
  .ds-dash-selectall:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
903
903
  .ds-dash-clear { background: none; border: none; color: var(--fg-3); cursor: pointer; font-size: var(--fs-tiny); text-decoration: underline dotted; padding: var(--space-1); }
904
+ .ds-dash-clear:hover { color: var(--fg); }
905
+ .ds-dash-clear:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; border-radius: var(--r-1); }
904
906
 
905
907
  /* Conversation-rail loading skeleton (cold ccsniff walk). */
906
908
  .ds-session-row-skeleton { display: flex; flex-direction: column; gap: 6px; padding: var(--space-2) var(--space-3); }
package/community.css CHANGED
@@ -1043,6 +1043,16 @@
1043
1043
  border-radius: var(--r-1);
1044
1044
  }
1045
1045
 
1046
+ /* ThreadPanel / Forum / Page interactive elements */
1047
+ .cm-tp-item:focus-visible,
1048
+ .cm-forum-item:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: var(--r-1); }
1049
+ .cm-tp-new:focus-visible,
1050
+ .cm-tp-close:focus-visible,
1051
+ .cm-forum-new:focus-visible,
1052
+ .cm-forum-sort:focus-visible,
1053
+ .cm-page-edit:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-1); }
1054
+ .cm-forum-search:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--accent); }
1055
+
1046
1056
  /* ---------- mobile header ---------- */
1047
1057
  .cm-mobile-header {
1048
1058
  display: flex;
package/dist/247420.css CHANGED
@@ -1809,7 +1809,7 @@
1809
1809
  transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
1810
1810
  }
1811
1811
  .ds-247420 .ds-density-btn:hover { color: var(--fg); }
1812
- .ds-247420 .ds-density-btn.active { background: var(--accent-tint); color: var(--accent); }
1812
+ .ds-247420 .ds-density-btn.active { background: var(--accent-tint); color: var(--fg); }
1813
1813
  .ds-247420 .ds-density-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
1814
1814
 
1815
1815
  /* Compact density — tighter rows for long listings. */
@@ -1834,6 +1834,10 @@
1834
1834
  .ds-247420 .ds-file-cell.active { border-color: var(--accent); background: var(--accent-tint); }
1835
1835
  .ds-247420 .ds-file-cell.is-marked { border-color: var(--accent); background: var(--accent-tint); }
1836
1836
  .ds-247420 .ds-file-cell.is-locked { opacity: 0.6; }
1837
+ .ds-247420 .ds-file-row.is-locked { opacity: 0.6; }
1838
+ .ds-247420 .ds-file-row.is-restricted .title { color: var(--fg-2); }
1839
+ .ds-247420 .ds-file-perm-tag { font-family: var(--ff-mono); font-size: var(--fs-micro); color: var(--fg-3); padding: 1px 6px; border: var(--bw-hair) solid var(--rule); border-radius: var(--r-1); white-space: nowrap; }
1840
+ .ds-247420 .ds-file-perm-tag.is-noaccess { color: var(--flame); border-color: color-mix(in srgb, var(--flame) 40%, transparent); }
1837
1841
  .ds-247420 .ds-file-cell-open {
1838
1842
  display: flex; flex-direction: column; align-items: stretch; gap: var(--space-1);
1839
1843
  width: 100%; padding: var(--space-1); margin: 0;
@@ -2230,6 +2234,10 @@
2230
2234
  border-radius: var(--r-2); font-size: var(--fs-xs);
2231
2235
  }
2232
2236
  .ds-247420 .ds-shortcut-row { display: flex; align-items: center; gap: var(--space-2); }
2237
+ .ds-247420 .ds-shortcuts-hint .ds-kbd-label { flex: 1 1 auto; opacity: .85; }
2238
+ .ds-247420 .ds-shortcuts-hint .ds-kbd { white-space: normal; max-width: 100%; }
2239
+ .ds-247420 .ds-kbd-caps { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; }
2240
+ .ds-247420 .ds-kbd-sep { color: var(--fg-3); font-size: var(--fs-micro); padding: 0 2px; }
2233
2241
  .ds-247420 .ds-kbd {
2234
2242
  display: inline-block; min-width: 0;
2235
2243
  padding: 2px 7px; border-radius: 6px;
@@ -2667,9 +2675,10 @@
2667
2675
  re-declare it; the sizing block now states the truth). */
2668
2676
  line-height: 1.5; resize: none;
2669
2677
  min-height: 28px; max-height: 200px;
2670
- box-sizing: border-box; overflow-y: auto;
2678
+ box-sizing: border-box; overflow-y: hidden;
2671
2679
  scrollbar-width: thin;
2672
2680
  }
2681
+ .ds-247420 .chat-composer textarea:focus { overflow-y: auto; }
2673
2682
  .ds-247420 .chat-composer textarea::placeholder { color: var(--fg-3); }
2674
2683
  .ds-247420 .chat-composer textarea:focus { background: none; border: none; box-shadow: none; outline: none; }
2675
2684
  .ds-247420 .chat-composer .send {
@@ -2702,6 +2711,12 @@
2702
2711
  .ds-247420 .chat-composer .send:disabled {
2703
2712
  background: var(--bg-3); color: var(--fg-3); cursor: not-allowed; transform: none;
2704
2713
  }
2714
+ @media (prefers-reduced-motion: reduce) {
2715
+ .ds-247420 .chat-composer,
2716
+ .ds-247420 .chat-composer textarea,
2717
+ .ds-247420 .chat-composer .send,
2718
+ .ds-247420 .composer-btn { transition: none; }
2719
+ }
2705
2720
 
2706
2721
  .ds-247420 .aicat-portrait { display: inline-flex; align-items: center; gap: 10px; padding: 4px 0; }
2707
2722
  .ds-247420 .aicat-face {
@@ -3694,6 +3709,8 @@
3694
3709
  .ds-247420 .ws-pane-collapsed .ws-pane > * { display: none; }
3695
3710
  @media (pointer: coarse) {
3696
3711
  .ds-247420 .ws-rail-toggle { width: 44px; height: 44px; }
3712
+ .ds-247420 .ws-drawer-toggle { width: 44px; height: 44px; }
3713
+ .ds-247420 .ws-desktop-toggle { width: 44px; height: 44px; }
3697
3714
  }
3698
3715
 
3699
3716
  /* Drawer toggles and the scrim are hidden by default and revealed by the staged
@@ -3711,6 +3728,7 @@
3711
3728
  pane becomes a mobile overlay drawer at <=1480px, reached via its own
3712
3729
  drawer-toggle), so hide this crumb control past that breakpoint. */
3713
3730
  @media (max-width: 1480px) { .ds-247420 .ws-pane-toggle { display: none; } }
3731
+ @media (max-width: 480px) { .ds-247420 .ws-crumb { padding-left: var(--space-2); padding-right: var(--space-2); } }
3714
3732
  .ds-247420 .ws-scrim { display: none; }
3715
3733
 
3716
3734
  /* Responsive: the columns yield to the CONTENT in stages - the main column is
@@ -3819,6 +3837,11 @@
3819
3837
  .ds-247420 .ws-drawer-toggle:hover { background: var(--bg-2); color: var(--fg); }
3820
3838
  .ds-247420 .ws-drawer-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
3821
3839
 
3840
+ @media (prefers-reduced-motion: reduce) {
3841
+ .ds-247420 .ws-shell, .ds-247420 .ws-rail, .ds-247420 .ws-pane, .ds-247420 .ws-sessions, .ds-247420 .ws-scrim { transition: none; }
3842
+ .ds-247420 .ws-resizer::after { transition: none; }
3843
+ }
3844
+
3822
3845
  /* ============================================================
3823
3846
  Row title highlight, expanded-row actions, filter pills.
3824
3847
  ============================================================ */
@@ -3849,7 +3872,7 @@
3849
3872
  transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
3850
3873
  }
3851
3874
  .ds-247420 .ds-filter-pill:hover { background: var(--bg-3); color: var(--fg); }
3852
- .ds-247420 .ds-filter-pill.active { background: var(--accent-tint); color: var(--accent); border-color: var(--accent); }
3875
+ .ds-247420 .ds-filter-pill.active { background: var(--accent-tint); color: var(--fg); border-color: var(--accent); }
3853
3876
  .ds-247420 .ds-filter-pill:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
3854
3877
 
3855
3878
  /* Touch floor for the new small controls. */
@@ -4907,6 +4930,16 @@
4907
4930
  border-radius: var(--r-1);
4908
4931
  }
4909
4932
 
4933
+ /* ThreadPanel / Forum / Page interactive elements */
4934
+ .ds-247420 .cm-tp-item:focus-visible,
4935
+ .ds-247420 .cm-forum-item:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: var(--r-1); }
4936
+ .ds-247420 .cm-tp-new:focus-visible,
4937
+ .ds-247420 .cm-tp-close:focus-visible,
4938
+ .ds-247420 .cm-forum-new:focus-visible,
4939
+ .ds-247420 .cm-forum-sort:focus-visible,
4940
+ .ds-247420 .cm-page-edit:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-1); }
4941
+ .ds-247420 .cm-forum-search:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--accent); }
4942
+
4910
4943
  /* ---------- mobile header ---------- */
4911
4944
  .ds-247420 .cm-mobile-header {
4912
4945
  display: flex;
@@ -5487,7 +5520,7 @@
5487
5520
  background: none;
5488
5521
  border: 1px solid var(--rule);
5489
5522
  color: inherit;
5490
- border-radius: 6px;
5523
+ border-radius: var(--r-1);
5491
5524
  padding: 2px 8px;
5492
5525
  cursor: pointer;
5493
5526
  font: inherit;
@@ -5506,6 +5539,7 @@
5506
5539
  }
5507
5540
  .ds-247420 .agentchat-cwd-input:focus-visible { outline: none; box-shadow: var(--focus-ring-inset); }
5508
5541
  .ds-247420 .agentchat-cwd-input[aria-invalid='true'] { border-color: var(--flame); box-shadow: inset 0 0 0 var(--bw-hair) var(--flame); }
5542
+ .ds-247420 .agentchat-cwd-input[aria-busy='true'] { border-color: var(--fg-3); box-shadow: inset 0 0 0 var(--bw-hair) var(--fg-3); }
5509
5543
 
5510
5544
  /* head + thread */
5511
5545
  .ds-247420 .agentchat-head {
@@ -5756,18 +5790,14 @@
5756
5790
  }
5757
5791
  .ds-247420 .ds-session-new > span { display: none; }
5758
5792
  .ds-247420 .ds-session-new:hover { background: var(--bg-2); color: var(--fg); }
5759
- .ds-247420 .ds-session-search { order: 1; flex: 1 1 auto; min-width: 0; }
5793
+ /* Rail filter uses the shared .ds-search-input primitive (provides bg/border/
5794
+ radius/focus-ring); only the rail layout + touch floor live here. */
5795
+ .ds-247420 .ds-session-head .ds-search-input { order: 1; flex: 1 1 auto; min-width: 0; }
5760
5796
  .ds-247420 .ds-session-new:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
5761
- .ds-247420 .ds-session-search {
5762
- width: 100%; padding: var(--space-1) var(--space-3); min-height: 36px;
5763
- background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); color: var(--fg);
5764
- border-radius: var(--r-1); font-family: var(--ff-body); font-size: var(--fs-sm);
5765
- }
5766
- .ds-247420 .ds-session-search:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--accent); }
5767
5797
  /* Touch floor (must FOLLOW the base rules - same specificity, order decides). */
5768
5798
  @media (pointer: coarse) {
5769
5799
  .ds-247420 .ds-session-new { width: 44px; min-height: 44px; }
5770
- .ds-247420 .ds-session-search { min-height: 44px; }
5800
+ .ds-247420 .ds-session-head .ds-search-input { min-height: 44px; }
5771
5801
  }
5772
5802
  .ds-247420 .ds-session-list, .ds-247420 .ds-session-groups { flex: 1; min-height: 0; overflow-y: auto; padding: var(--space-2); }
5773
5803
  /* Grouped rows (Today/Yesterday/...) lay out like the flat list; the section
@@ -5946,7 +5976,7 @@
5946
5976
  border-radius: var(--r-1); background: var(--bg-2); color: var(--fg-2);
5947
5977
  cursor: pointer; font-family: var(--ff-body); font-size: var(--fs-tiny);
5948
5978
  }
5949
- .ds-247420 .ds-dash-errors-toggle.active { background: var(--accent-tint); color: var(--accent); border-color: var(--accent); }
5979
+ .ds-247420 .ds-dash-errors-toggle.active { background: var(--accent-tint); color: var(--fg); border-color: var(--accent); }
5950
5980
  .ds-247420 .ds-dash-errors-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
5951
5981
 
5952
5982
  /* --- C3: per-card select checkbox. --- */
@@ -6114,6 +6144,7 @@
6114
6144
  /* Inline cwd validation line (checking / error) under the cwd input. */
6115
6145
  .ds-247420 .agentchat-cwd-hint { font-size: var(--fs-tiny); color: var(--fg-3); }
6116
6146
  .ds-247420 .agentchat-cwd-hint.is-error { color: var(--flame); }
6147
+ .ds-247420 .agentchat-cwd-hint.is-checking { color: var(--fg-2); font-style: italic; }
6117
6148
 
6118
6149
  /* Dashboard: shared session title heading (same string as the rails). */
6119
6150
  .ds-247420 .ds-dash-title {
@@ -6213,6 +6244,7 @@
6213
6244
  }
6214
6245
  .ds-247420 .chat-msg .chat-tool .chat-tool-head::-webkit-details-marker { display: none; }
6215
6246
  .ds-247420 .chat-msg .chat-tool .chat-tool-head:hover { background: var(--bg-2); }
6247
+ .ds-247420 .chat-msg .chat-tool .chat-tool-head:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
6216
6248
  .ds-247420 .chat-tool-icon { display: inline-flex; color: var(--fg-3); }
6217
6249
  .ds-247420 .chat-tool-name { font-family: var(--ff-mono); font-weight: 600; color: var(--fg); }
6218
6250
  .ds-247420 .chat-tool-label { color: var(--fg-3); font-size: var(--fs-tiny); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
@@ -6233,6 +6265,7 @@
6233
6265
  .ds-247420 .chat-tool-section-label { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); font-size: var(--fs-tiny); font-weight: 600; text-transform: uppercase; letter-spacing: var(--tr-caps); color: var(--fg-3); }
6234
6266
  .ds-247420 .chat-tool-copy { position: static; opacity: 0; }
6235
6267
  .ds-247420 .chat-tool-section:hover .chat-tool-copy, .ds-247420 .chat-tool-section:focus-within .chat-tool-copy { opacity: 1; }
6268
+ .ds-247420 .chat-tool-copy:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; opacity: 1; }
6236
6269
  .ds-247420 .chat-tool-pre { margin: 0; padding: var(--space-2); background: var(--bg-2); border-radius: var(--r-1); font-family: var(--ff-mono); font-size: var(--fs-tiny); line-height: 1.45; overflow-x: auto; max-height: 320px; overflow-y: auto; }
6237
6270
  .ds-247420 .chat-tool-pre.is-error { color: var(--flame); }
6238
6271
  .ds-247420 .chat-tool-pre.chat-tool-empty { color: var(--fg-3); }
@@ -6288,15 +6321,17 @@
6288
6321
  .ds-247420 .ds-dash-breakdown .seg { display: inline-flex; align-items: center; gap: var(--space-1); font-weight: 600; }
6289
6322
  .ds-247420 .ds-dash-breakdown .seg::before { content: ''; width: 7px; height: 7px; border-radius: 50%; flex: none; }
6290
6323
  .ds-247420 .ds-dash-breakdown .seg.is-running { color: var(--accent); }
6291
- .ds-247420 .ds-dash-breakdown .seg.is-running::before { background: var(--accent); }
6324
+ .ds-247420 .ds-dash-breakdown .seg.is-running::before { background: var(--accent); box-shadow: 0 0 0 1.5px color-mix(in oklab, var(--accent) 30%, transparent); }
6292
6325
  .ds-247420 .ds-dash-breakdown .seg.is-error { color: var(--flame); }
6293
6326
  .ds-247420 .ds-dash-breakdown .seg.is-error::before { background: var(--flame); box-shadow: 0 0 0 1.5px color-mix(in oklab, var(--flame) 38%, transparent); }
6294
- .ds-247420 .ds-dash-breakdown .seg.is-idle { color: var(--amber); }
6295
- .ds-247420 .ds-dash-breakdown .seg.is-idle::before { background: transparent; box-shadow: inset 0 0 0 2px var(--amber); }
6327
+ .ds-247420 .ds-dash-breakdown .seg.is-idle { color: var(--stale); }
6328
+ .ds-247420 .ds-dash-breakdown .seg.is-idle::before { background: transparent; box-shadow: inset 0 0 0 1px var(--stale), inset 0 0 0 3px var(--bg); }
6296
6329
  .ds-247420 .ds-dash-stream-disc { display: inline-flex; align-items: center; gap: var(--space-1); }
6297
6330
  .ds-247420 .ds-dash-selectall { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--fs-tiny); color: var(--fg-2); cursor: pointer; background: none; border: none; padding: var(--space-1); }
6298
6331
  .ds-247420 .ds-dash-selectall:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
6299
6332
  .ds-247420 .ds-dash-clear { background: none; border: none; color: var(--fg-3); cursor: pointer; font-size: var(--fs-tiny); text-decoration: underline dotted; padding: var(--space-1); }
6333
+ .ds-247420 .ds-dash-clear:hover { color: var(--fg); }
6334
+ .ds-247420 .ds-dash-clear:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; border-radius: var(--r-1); }
6300
6335
 
6301
6336
  /* Conversation-rail loading skeleton (cold ccsniff walk). */
6302
6337
  .ds-247420 .ds-session-row-skeleton { display: flex; flex-direction: column; gap: 6px; padding: var(--space-2) var(--space-3); }
@@ -7504,7 +7539,7 @@
7504
7539
  .ds-247420 .ds-input-check:checked { background: var(--accent); border-color: var(--accent); }
7505
7540
  .ds-247420 .ds-input-check:checked::after {
7506
7541
  content: ''; position: absolute; left: 4px; top: 1px;
7507
- width: 4px; height: 8px; border: solid var(--accent-fg, #fff);
7542
+ width: 4px; height: 8px; border: solid var(--accent-fg);
7508
7543
  border-width: 0 2px 2px 0; transform: rotate(45deg);
7509
7544
  }
7510
7545
  .ds-247420 .ds-input-check:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
@@ -7546,7 +7581,7 @@
7546
7581
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
7547
7582
  border: 1px solid var(--rule);
7548
7583
  border-radius: var(--r-2, 8px);
7549
- box-shadow: 0 6px 24px color-mix(in oklab, #000 28%, transparent);
7584
+ box-shadow: var(--shadow-3);
7550
7585
  color: var(--panel-text);
7551
7586
  overflow: hidden;
7552
7587
  }
@@ -7870,9 +7905,6 @@
7870
7905
  .ds-247420 .ds-event-list .row[role="button"]:hover { background: color-mix(in srgb, var(--fg) 5%, transparent); }
7871
7906
  .ds-247420 .ds-event-list .row.event-flash { animation: agentgui-event-flash 2s ease-out; }
7872
7907
 
7873
- /* Chat composer: hide the idle scrollbar on the (empty/short) textarea. */
7874
- .ds-247420 .chat-composer textarea { overflow-y: auto; scrollbar-width: thin; }
7875
- .ds-247420 .chat-composer textarea:not(:focus) { overflow-y: hidden; }
7876
7908
 
7877
7909
  /* Generic interactive focus ring for app-emitted controls. */
7878
7910
  .ds-247420 button:focus-visible,
@@ -7913,6 +7945,10 @@
7913
7945
  }
7914
7946
 
7915
7947
  @media print {
7948
+ /* Re-assert the paper-tuned signal tokens so token-derived foregrounds
7949
+ (status discs, error text, tool cards) print with light-theme colours
7950
+ rather than the dark-theme-derived values inherited under auto-dark. */
7951
+ .ds-247420 { --flame:#C53E00; --amber:#8A6512; --warn:#E0241A; --sky:#3A6EFF; --bg:var(--paper); --fg:var(--ink); }
7916
7952
  .ds-247420 #app { min-height: auto; display: block; height: auto; }
7917
7953
  .ds-247420 .skip-link, .ds-247420 .status-dot, .ds-247420 .history-actions, .ds-247420 .chat-composer { display: none !important; }
7918
7954
  .ds-247420 .app, .ds-247420 .app-main, .ds-247420 .panel, .ds-247420 .chat, .ds-247420 .chat-thread {
@@ -7930,20 +7966,28 @@
7930
7966
  .ds-247420 .site-panel { margin: var(--space-2); }
7931
7967
 
7932
7968
  /* Hero block */
7933
- .ds-247420 .site-hero { padding: 24px 22px; }
7969
+ .ds-247420 .site-hero { padding: var(--space-4); }
7934
7970
  .ds-247420 .site-hero-h { margin: 0 0 var(--space-2); }
7935
7971
  .ds-247420 .site-hero-body { margin: var(--space-2) 0 var(--space-3); color: var(--fg-2); max-width: 64ch; }
7936
7972
  .ds-247420 .site-chip-row { display: flex; gap: 6px; flex-wrap: wrap; margin: 0 0 var(--space-3); }
7937
7973
  .ds-247420 .site-cta-row { display: flex; gap: var(--space-2); flex-wrap: wrap; }
7938
7974
 
7939
7975
  /* Quickstart CLI block — these .cli/.prompt/.cmd nodes were previously unstyled. */
7940
- .ds-247420 .site-cli { padding: 16px 22px; }
7941
- .ds-247420 .site-cli .cli { display: flex; gap: var(--space-2); font-family: var(--ff-mono); font-size: var(--fs-sm); padding: 2px 0; }
7976
+ .ds-247420 .site-cli { padding: var(--space-3); background: var(--bg); border: var(--bw-hair, 1px) solid var(--rule); border-radius: var(--r-1); }
7977
+ .ds-247420 .site-cli .cli { display: flex; align-items: baseline; gap: var(--space-2); font-family: var(--ff-mono); font-size: var(--fs-sm); padding: 2px 0; }
7942
7978
  .ds-247420 .site-cli .prompt { color: var(--fg-3); user-select: none; flex: 0 0 auto; }
7943
7979
  .ds-247420 .site-cli .cmd { color: var(--fg); white-space: pre-wrap; word-break: break-word; }
7944
7980
 
7945
- /* Embedded legacy doc (iframe wrapper) */
7946
- .ds-247420 .site-embed { width: 100%; height: calc(100vh - 180px); min-height: 520px; border: 0; border-radius: var(--r-1); background: var(--bg-2); display: block; }
7981
+ /* Embedded legacy doc (iframe wrapper). 180px = the page chrome (topbar +
7982
+ * crumb + footer) sitting above the embed; dvh keeps it mobile-safe. */
7983
+ .ds-247420 .site-embed { width: 100%; height: calc(100dvh - 180px); min-height: 320px; border: 0; border-radius: var(--r-1); background: var(--bg-2); display: block; }
7984
+
7985
+ /* Marketing footer family (the in-app .app-status strip suppresses content
7986
+ * below 1100px; the site footer always shows its credits row). */
7987
+ .ds-247420 .site-footer { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); width: 100%; padding: var(--space-3) var(--space-4); font-family: var(--ff-body); font-size: var(--fs-sm); line-height: 1.4; color: var(--fg-3); border-top: 1px solid var(--rule); }
7988
+ .ds-247420 .site-footer .item { color: inherit; }
7989
+ .ds-247420 .site-footer .item:first-of-type { color: var(--accent); }
7990
+ .ds-247420 .site-footer .spread { flex: 1; }
7947
7991
 
7948
7992
  /* spoint/loading-screen.css */
7949
7993
  /* Loading-screen kit styles. Scoped under .ds-247420 at build time.