anentrypoint-design 0.0.292 → 0.0.294
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 +73 -57
- package/colors_and_type.css +22 -1
- package/dist/247420.css +95 -58
- package/dist/247420.js +15 -15
- package/package.json +1 -1
- package/src/components/agent-chat.js +1 -1
package/app-shell.css
CHANGED
|
@@ -30,8 +30,8 @@ button, input, select, textarea { font: inherit; }
|
|
|
30
30
|
}
|
|
31
31
|
.skip-link:focus {
|
|
32
32
|
top: 10px;
|
|
33
|
-
outline:
|
|
34
|
-
outline-offset:
|
|
33
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
34
|
+
outline-offset: var(--focus-offset);
|
|
35
35
|
}
|
|
36
36
|
body {
|
|
37
37
|
background: var(--bg);
|
|
@@ -42,7 +42,12 @@ body {
|
|
|
42
42
|
-webkit-font-smoothing: antialiased;
|
|
43
43
|
text-rendering: optimizeLegibility;
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
/* Light (paper, the default theme) needs a stronger accent share than dark to
|
|
46
|
+
clear a visible selection tint against --bg-2 -- the dark-theme value (24%)
|
|
47
|
+
read too weak on paper. Dark/ink keeps its existing 24% mix, restored below
|
|
48
|
+
in the ink/dark + auto-dark blocks (mirrors the --danger/--flame pattern of
|
|
49
|
+
scoping a value per theme rather than sharing one across both). */
|
|
50
|
+
::selection { background: color-mix(in oklab, var(--accent) 46%, var(--bg-2)); color: var(--fg); }
|
|
46
51
|
|
|
47
52
|
/* Every root has a CQ container so fluid type can resolve to a meaningful inline-size. */
|
|
48
53
|
.app, .ds-stage {
|
|
@@ -247,8 +252,8 @@ body.canvas-host { background: transparent !important; }
|
|
|
247
252
|
}
|
|
248
253
|
.app-topbar nav a:hover { background: var(--bg-2); color: var(--fg); }
|
|
249
254
|
.app-topbar nav a:focus-visible {
|
|
250
|
-
outline:
|
|
251
|
-
outline-offset:
|
|
255
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
256
|
+
outline-offset: var(--focus-offset);
|
|
252
257
|
}
|
|
253
258
|
/* Active tab reads as a subtle tinted pill with an accent underline rather than
|
|
254
259
|
an oversized filled oval that sits taller than its inactive siblings and reads
|
|
@@ -283,8 +288,8 @@ body.canvas-host { background: transparent !important; }
|
|
|
283
288
|
width: 100%;
|
|
284
289
|
}
|
|
285
290
|
.app-search:focus-within {
|
|
286
|
-
outline:
|
|
287
|
-
outline-offset:
|
|
291
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
292
|
+
outline-offset: var(--focus-offset);
|
|
288
293
|
}
|
|
289
294
|
|
|
290
295
|
.app-crumb {
|
|
@@ -325,8 +330,8 @@ body.canvas-host { background: transparent !important; }
|
|
|
325
330
|
}
|
|
326
331
|
.app-side a:hover { background: var(--bg-2); color: var(--fg); }
|
|
327
332
|
.app-side a:focus-visible {
|
|
328
|
-
outline:
|
|
329
|
-
outline-offset:
|
|
333
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
334
|
+
outline-offset: var(--focus-offset);
|
|
330
335
|
}
|
|
331
336
|
.app-side a.active {
|
|
332
337
|
color: var(--accent-fg);
|
|
@@ -499,7 +504,7 @@ body.canvas-host { background: transparent !important; }
|
|
|
499
504
|
.ds-icon-btn-ghost { background: transparent; }
|
|
500
505
|
.ds-icon-btn-ghost:hover { background: var(--fg); color: var(--bg); }
|
|
501
506
|
.ds-icon-btn-primary { background: var(--accent); color: var(--accent-fg); }
|
|
502
|
-
.ds-icon-btn-primary:hover { background: var(--fg); color: var(--
|
|
507
|
+
.ds-icon-btn-primary:hover { background: var(--fg); color: var(--accent-ink); }
|
|
503
508
|
/* warn = destructive ACTION tone; flame stays exclusively error STATUS. */
|
|
504
509
|
.ds-icon-btn-danger { background: var(--warn); color: var(--on-color); }
|
|
505
510
|
.ds-icon-btn-danger:hover { filter: brightness(0.92); }
|
|
@@ -518,19 +523,27 @@ body.canvas-host { background: transparent !important; }
|
|
|
518
523
|
border-radius: var(--r-pill);
|
|
519
524
|
background: var(--bg-3); color: var(--fg-2);
|
|
520
525
|
}
|
|
521
|
-
|
|
526
|
+
/* Canonical tone names are tone-success / tone-error / tone-neutral. Every
|
|
527
|
+
other tone name grouped into the same rule below (tone-green/tone-live,
|
|
528
|
+
tone-flame, tone-wip, tone-sun/tone-yellow, tone-ok/tone-miss) is a
|
|
529
|
+
true-synonym legacy alias, kept working but sharing one declaration so the
|
|
530
|
+
tone-family colors can't drift apart across names. */
|
|
531
|
+
.ds-badge.tone-green, .ds-badge.tone-live, .ds-badge.tone-success {
|
|
532
|
+
background: var(--green-tint); color: var(--green-deep);
|
|
533
|
+
}
|
|
534
|
+
.ds-badge.tone-flame, .ds-badge.tone-error {
|
|
535
|
+
background: var(--flame); color: var(--on-color);
|
|
536
|
+
}
|
|
537
|
+
.ds-badge.tone-wip, .ds-badge.tone-neutral {
|
|
538
|
+
background: var(--bg-3); color: var(--fg-2);
|
|
539
|
+
}
|
|
522
540
|
.ds-badge.tone-purple { background: var(--purple-tint); color: var(--purple-deep); }
|
|
523
541
|
.ds-badge.tone-mascot { background: var(--mascot-tint); color: var(--ink); }
|
|
524
|
-
.ds-badge.tone-sun
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
.ds-badge.tone-wip { background: var(--bg-3); color: var(--fg-2); }
|
|
528
|
-
.ds-badge.tone-error { background: var(--flame); color: var(--on-color); }
|
|
529
|
-
.ds-badge.tone-success { background: var(--green-tint); color: var(--green-deep); }
|
|
530
|
-
.ds-badge.tone-neutral { background: var(--bg-3); color: var(--fg-2); }
|
|
542
|
+
.ds-badge.tone-sun, .ds-badge.tone-yellow {
|
|
543
|
+
background: var(--sun); color: var(--ink);
|
|
544
|
+
}
|
|
531
545
|
.ds-badge.tone-blue { background: var(--accent-tint); color: var(--accent-ink); }
|
|
532
546
|
.ds-badge.tone-orange { background: color-mix(in oklab, var(--flame) 30%, var(--sun) 70%); color: var(--ink); }
|
|
533
|
-
.ds-badge.tone-yellow { background: var(--sun); color: var(--ink); }
|
|
534
547
|
|
|
535
548
|
.chip {
|
|
536
549
|
display: inline-flex; align-items: center; gap: 6px;
|
|
@@ -541,19 +554,22 @@ body.canvas-host { background: transparent !important; }
|
|
|
541
554
|
letter-spacing: var(--tr-caps); text-transform: uppercase;
|
|
542
555
|
border-radius: var(--r-pill);
|
|
543
556
|
}
|
|
544
|
-
|
|
557
|
+
/* Same canonical/legacy-alias grouping as .ds-badge above. */
|
|
558
|
+
.chip.tone-green, .chip.tone-live, .chip.tone-success, .chip.tone-ok {
|
|
559
|
+
background: var(--green-tint); color: var(--green-deep);
|
|
560
|
+
}
|
|
561
|
+
.chip.tone-flame, .chip.tone-error, .chip.tone-miss {
|
|
562
|
+
background: var(--flame); color: var(--on-color);
|
|
563
|
+
}
|
|
564
|
+
.chip.tone-wip, .chip.tone-neutral {
|
|
565
|
+
background: var(--bg-3); color: var(--fg-2);
|
|
566
|
+
}
|
|
545
567
|
.chip.tone-purple { background: var(--purple-tint); color: var(--purple-deep); }
|
|
546
568
|
.chip.tone-mascot { background: var(--mascot-tint); color: var(--ink); }
|
|
547
|
-
.chip.tone-sun
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
.chip.tone-wip { background: var(--bg-3); color: var(--fg-2); }
|
|
551
|
-
.chip.tone-error { background: var(--flame); color: var(--on-color); }
|
|
552
|
-
.chip.tone-success { background: var(--green-tint); color: var(--green-deep); }
|
|
569
|
+
.chip.tone-sun, .chip.tone-yellow {
|
|
570
|
+
background: var(--sun); color: var(--ink);
|
|
571
|
+
}
|
|
553
572
|
.chip.tone-disabled { background: var(--bg-3); color: var(--fg-3); }
|
|
554
|
-
.chip.tone-ok { background: var(--green-tint); color: var(--green-deep); }
|
|
555
|
-
.chip.tone-miss { background: var(--flame); color: var(--on-color); }
|
|
556
|
-
.chip.tone-neutral { background: var(--bg-3); color: var(--fg-2); }
|
|
557
573
|
.chip.tone-blue { background: var(--accent-tint); color: var(--accent-ink); }
|
|
558
574
|
.chip.tone-orange { background: color-mix(in oklab, var(--flame) 30%, var(--sun) 70%); color: var(--ink); }
|
|
559
575
|
.chip.tone-yellow { background: var(--sun); color: var(--ink); }
|
|
@@ -1004,7 +1020,7 @@ table td { padding: 14px 16px; border-top: 1px solid var(--rule); }
|
|
|
1004
1020
|
table tr.clickable { cursor: pointer; }
|
|
1005
1021
|
table tr.clickable:hover td { background: var(--bg-2); }
|
|
1006
1022
|
table tr.clickable:focus-visible {
|
|
1007
|
-
outline:
|
|
1023
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
1008
1024
|
outline-offset: -2px;
|
|
1009
1025
|
}
|
|
1010
1026
|
table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
@@ -1445,7 +1461,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1445
1461
|
flex-direction: column;
|
|
1446
1462
|
gap: 4px;
|
|
1447
1463
|
}
|
|
1448
|
-
.ds-file-grid:focus-visible { outline:
|
|
1464
|
+
.ds-file-grid:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); border-radius: var(--r-2); }
|
|
1449
1465
|
|
|
1450
1466
|
/* Listing wrapper holds the optional filter + sort header above the grid. */
|
|
1451
1467
|
.ds-file-listing { display: flex; flex-direction: column; gap: var(--space-2); min-height: 0; }
|
|
@@ -1467,7 +1483,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1467
1483
|
}
|
|
1468
1484
|
.ds-file-sort-btn:hover { color: var(--fg-2); background: var(--bg-2); }
|
|
1469
1485
|
.ds-file-sort-btn.active { color: var(--accent-ink); }
|
|
1470
|
-
.ds-file-sort-btn:focus-visible { outline:
|
|
1486
|
+
.ds-file-sort-btn:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
1471
1487
|
|
|
1472
1488
|
/* Skeleton shimmer rows shown while a directory loads. */
|
|
1473
1489
|
.ds-file-row-skeleton { cursor: default; pointer-events: none; }
|
|
@@ -1515,7 +1531,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1515
1531
|
color: inherit; font: inherit; text-align: left; cursor: pointer;
|
|
1516
1532
|
}
|
|
1517
1533
|
.ds-file-open[disabled] { cursor: default; }
|
|
1518
|
-
.ds-file-open:focus-visible { outline:
|
|
1534
|
+
.ds-file-open:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); border-radius: var(--r-1); }
|
|
1519
1535
|
.ds-file-row:hover {
|
|
1520
1536
|
background: var(--bg-2);
|
|
1521
1537
|
border-color: var(--rule);
|
|
@@ -1619,7 +1635,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1619
1635
|
}
|
|
1620
1636
|
.ds-file-check:hover { background: var(--bg-3); color: var(--fg); }
|
|
1621
1637
|
.ds-file-check.is-marked { color: var(--accent-ink); }
|
|
1622
|
-
.ds-file-check:focus-visible { outline:
|
|
1638
|
+
.ds-file-check:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
1623
1639
|
.ds-file-check[disabled] { opacity: 0.4; cursor: default; }
|
|
1624
1640
|
.ds-file-row.is-marked { background: var(--accent-tint); border-color: var(--accent); }
|
|
1625
1641
|
.ds-file-selectall {
|
|
@@ -1629,7 +1645,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1629
1645
|
padding: var(--space-1); border-radius: var(--r-1);
|
|
1630
1646
|
}
|
|
1631
1647
|
.ds-file-selectall:hover { background: var(--bg-2); color: var(--fg); }
|
|
1632
|
-
.ds-file-selectall:focus-visible { outline:
|
|
1648
|
+
.ds-file-selectall:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
1633
1649
|
.ds-file-controls { display: flex; align-items: center; gap: var(--space-2); padding: 0 var(--space-2) var(--space-1); flex-wrap: wrap; }
|
|
1634
1650
|
.ds-file-controls .spread { flex: 1 1 auto; }
|
|
1635
1651
|
.ds-file-controls .ds-file-sort { padding: 0; }
|
|
@@ -1667,7 +1683,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1667
1683
|
}
|
|
1668
1684
|
.ds-density-btn:hover { color: var(--fg); }
|
|
1669
1685
|
.ds-density-btn.active { background: var(--accent-tint); color: var(--fg); }
|
|
1670
|
-
.ds-density-btn:focus-visible { outline:
|
|
1686
|
+
.ds-density-btn:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
1671
1687
|
|
|
1672
1688
|
/* Compact density — tighter rows for long listings. */
|
|
1673
1689
|
.ds-file-grid[data-density="compact"] { gap: 2px; }
|
|
@@ -1705,7 +1721,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1705
1721
|
background: none; border: none; cursor: pointer; color: var(--fg);
|
|
1706
1722
|
}
|
|
1707
1723
|
.ds-file-cell-open[disabled] { cursor: default; }
|
|
1708
|
-
.ds-file-cell-open:focus-visible { outline:
|
|
1724
|
+
.ds-file-cell-open:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: -2px; border-radius: var(--r-2); }
|
|
1709
1725
|
.ds-file-cell-media {
|
|
1710
1726
|
display: flex; align-items: center; justify-content: center;
|
|
1711
1727
|
width: 100%; aspect-ratio: 4 / 3;
|
|
@@ -1945,7 +1961,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1945
1961
|
color: var(--fg-2); font-family: var(--ff-body); font-size: var(--fs-micro);
|
|
1946
1962
|
}
|
|
1947
1963
|
.ds-upload-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
1948
|
-
.ds-upload-act:focus-visible { outline:
|
|
1964
|
+
.ds-upload-act:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
1949
1965
|
@media (hover: none), (pointer: coarse) {
|
|
1950
1966
|
.ds-upload-act { min-height: 44px; min-width: 44px; }
|
|
1951
1967
|
/* 44px floor for file controls on ANY touch device, not only narrow ones
|
|
@@ -2016,7 +2032,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2016
2032
|
border-radius: var(--r-2); color: var(--fg);
|
|
2017
2033
|
font-family: inherit; font-size: var(--fs-sm);
|
|
2018
2034
|
}
|
|
2019
|
-
.ds-modal-input:focus-visible { outline:
|
|
2035
|
+
.ds-modal-input:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
2020
2036
|
/* iOS auto-zooms inputs under 16px on focus, breaking the modal layout. */
|
|
2021
2037
|
@media (hover: none), (pointer: coarse) {
|
|
2022
2038
|
.ds-modal-input { font-size: 16px; min-height: 44px; }
|
|
@@ -2203,7 +2219,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2203
2219
|
transition: color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
|
|
2204
2220
|
}
|
|
2205
2221
|
.ds-segmented .ds-seg-btn:hover { color: var(--fg); }
|
|
2206
|
-
.ds-segmented .ds-seg-btn:focus-visible { outline:
|
|
2222
|
+
.ds-segmented .ds-seg-btn:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
2207
2223
|
.ds-segmented .ds-seg-btn.is-on {
|
|
2208
2224
|
background: var(--bg); color: var(--fg);
|
|
2209
2225
|
box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule);
|
|
@@ -2653,8 +2669,8 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2653
2669
|
.chat-composer .send:active { filter: brightness(0.94); }
|
|
2654
2670
|
.chat-composer .send:focus-visible,
|
|
2655
2671
|
.composer-btn:focus-visible {
|
|
2656
|
-
outline:
|
|
2657
|
-
outline-offset:
|
|
2672
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
2673
|
+
outline-offset: var(--focus-offset);
|
|
2658
2674
|
}
|
|
2659
2675
|
.chat-composer .send:disabled {
|
|
2660
2676
|
background: var(--bg-3); color: var(--fg-3); cursor: not-allowed; transform: none;
|
|
@@ -3195,8 +3211,8 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3195
3211
|
|
|
3196
3212
|
/* Base focus-visible: 2px ring + 2px offset clears dark bg-3 surfaces (WCAG 1.4.11) */
|
|
3197
3213
|
:focus-visible {
|
|
3198
|
-
outline:
|
|
3199
|
-
outline-offset:
|
|
3214
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
3215
|
+
outline-offset: var(--focus-offset);
|
|
3200
3216
|
}
|
|
3201
3217
|
|
|
3202
3218
|
/* Enhanced focus-visible for all interactive elements */
|
|
@@ -3205,8 +3221,8 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3205
3221
|
[role="tab"]:focus-visible,
|
|
3206
3222
|
.row:focus-visible,
|
|
3207
3223
|
.row[tabindex]:focus-visible {
|
|
3208
|
-
outline:
|
|
3209
|
-
outline-offset:
|
|
3224
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
3225
|
+
outline-offset: var(--focus-offset);
|
|
3210
3226
|
}
|
|
3211
3227
|
|
|
3212
3228
|
/* Skip to main content link */
|
|
@@ -3598,7 +3614,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3598
3614
|
border-radius: var(--r-1, 6px);
|
|
3599
3615
|
cursor: pointer;
|
|
3600
3616
|
}
|
|
3601
|
-
.app-side-toggle:focus-visible { outline:
|
|
3617
|
+
.app-side-toggle:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
3602
3618
|
@container (max-width: 900px) {
|
|
3603
3619
|
.app-side-toggle { display: inline-flex; }
|
|
3604
3620
|
.app-topbar .brand { margin-left: 44px; }
|
|
@@ -3692,7 +3708,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3692
3708
|
.ws-resizer { grid-row: 1 / -1; align-self: stretch; justify-self: end; width: 8px; margin-right: -4px; z-index: 5; cursor: col-resize; background: transparent; border: none; padding: 0; touch-action: none; }
|
|
3693
3709
|
.ws-resizer::after { content: ""; display: block; width: 2px; height: 100%; margin: 0 auto; background: transparent; transition: background var(--dur-snap) var(--ease); }
|
|
3694
3710
|
.ws-resizer:hover::after, .ws-resizer:focus-visible::after { background: var(--accent); }
|
|
3695
|
-
.ws-resizer:focus-visible { outline:
|
|
3711
|
+
.ws-resizer:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: -2px; }
|
|
3696
3712
|
.ws-resizer.ws-resizer-rail { grid-column: 1; }
|
|
3697
3713
|
.ws-resizer.ws-resizer-sessions { grid-column: 2; }
|
|
3698
3714
|
.ws-resizer.ws-resizer-pane { grid-column: 3; justify-self: end; }
|
|
@@ -3744,7 +3760,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3744
3760
|
border-radius: var(--r-1); cursor: pointer;
|
|
3745
3761
|
}
|
|
3746
3762
|
.ws-rail-toggle:hover { background: var(--bg-3); color: var(--fg); }
|
|
3747
|
-
.ws-rail-toggle:focus-visible { outline:
|
|
3763
|
+
.ws-rail-toggle:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
3748
3764
|
.ws-rail-inner { display: flex; flex-direction: column; min-height: 0; flex: 1; padding: var(--space-3) var(--space-2); gap: var(--space-2); }
|
|
3749
3765
|
.ws-rail-head { display: flex; align-items: center; min-height: 36px; padding: 0 var(--space-2); }
|
|
3750
3766
|
.ws-rail-brand { font-family: var(--ff-body); font-weight: 600; font-size: var(--fs-body); color: var(--fg); white-space: nowrap; overflow: hidden; }
|
|
@@ -3757,7 +3773,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3757
3773
|
min-height: 40px; white-space: nowrap; overflow: hidden;
|
|
3758
3774
|
}
|
|
3759
3775
|
.ws-rail-action:hover { filter: brightness(0.92); }
|
|
3760
|
-
.ws-rail-action:focus-visible { outline:
|
|
3776
|
+
.ws-rail-action:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
3761
3777
|
.ws-rail-nav { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
|
|
3762
3778
|
.ws-rail-item {
|
|
3763
3779
|
display: flex; align-items: center; gap: var(--space-2);
|
|
@@ -3767,7 +3783,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3767
3783
|
font-family: var(--ff-body); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden;
|
|
3768
3784
|
}
|
|
3769
3785
|
.ws-rail-item:hover { background: var(--bg-3); color: var(--fg); }
|
|
3770
|
-
.ws-rail-item:focus-visible { outline:
|
|
3786
|
+
.ws-rail-item:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: -2px; }
|
|
3771
3787
|
.ws-rail-item.active { background: var(--accent-tint); color: var(--fg); box-shadow: inset 2px 0 0 var(--accent); }
|
|
3772
3788
|
.ws-rail-item-label { flex: 1; overflow: hidden; text-overflow: ellipsis; }
|
|
3773
3789
|
.ws-rail-item-count { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3); }
|
|
@@ -3840,7 +3856,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3840
3856
|
/* Desktop-only chrome toggle (sessions collapse): inverse of the mobile drawer-toggle. */
|
|
3841
3857
|
.ws-desktop-toggle { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
|
|
3842
3858
|
.ws-desktop-toggle:hover { background: var(--bg-2); color: var(--fg); }
|
|
3843
|
-
.ws-desktop-toggle:focus-visible { outline:
|
|
3859
|
+
.ws-desktop-toggle:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
3844
3860
|
@media (max-width: 900px) { .ws-desktop-toggle { display: none; } }
|
|
3845
3861
|
/* The pane collapse toggle is meaningless once the pane TRACK is dropped (the
|
|
3846
3862
|
pane becomes a mobile overlay drawer at <=1480px, reached via its own
|
|
@@ -3964,7 +3980,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3964
3980
|
.ws-crumb .app-crumb .crumb-right { margin-left: 0; flex-wrap: wrap; min-width: 0; display: inline-flex; }
|
|
3965
3981
|
}
|
|
3966
3982
|
.ws-drawer-toggle:hover { background: var(--bg-2); color: var(--fg); }
|
|
3967
|
-
.ws-drawer-toggle:focus-visible { outline:
|
|
3983
|
+
.ws-drawer-toggle:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
3968
3984
|
|
|
3969
3985
|
@media (prefers-reduced-motion: reduce) {
|
|
3970
3986
|
.ws-shell, .ws-rail, .ws-pane, .ws-sessions, .ws-scrim { transition: none; }
|
|
@@ -3989,7 +4005,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
3989
4005
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
3990
4006
|
}
|
|
3991
4007
|
.row-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
3992
|
-
.row-act:focus-visible { outline:
|
|
4008
|
+
.row-act:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
3993
4009
|
|
|
3994
4010
|
/* FilterPills - a group of pill toggle buttons (aria-pressed). */
|
|
3995
4011
|
.ds-filter-pills { display: flex; flex-wrap: wrap; gap: var(--space-2); }
|
|
@@ -4002,7 +4018,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
4002
4018
|
}
|
|
4003
4019
|
.ds-filter-pill:hover { background: var(--bg-3); color: var(--fg); }
|
|
4004
4020
|
.ds-filter-pill.active { background: var(--accent-tint); color: var(--fg); border-color: var(--accent); }
|
|
4005
|
-
.ds-filter-pill:focus-visible { outline:
|
|
4021
|
+
.ds-filter-pill:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
4006
4022
|
|
|
4007
4023
|
/* Touch floor for the new small controls. */
|
|
4008
4024
|
@media (pointer: coarse) {
|
|
@@ -4012,7 +4028,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
4012
4028
|
/* Disabled file actions (read-only row / in-flight mutation) stay visible but inert. */
|
|
4013
4029
|
.ds-file-act:disabled { opacity: .45; cursor: default; }
|
|
4014
4030
|
.ds-file-act:disabled:hover { background: transparent; color: var(--fg-3); }
|
|
4015
|
-
.ds-file-act:focus-visible { outline:
|
|
4031
|
+
.ds-file-act:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
4016
4032
|
|
|
4017
4033
|
/* ============================================================
|
|
4018
4034
|
Print — linearize WorkspaceShell so main content prints in full.
|
|
@@ -4337,7 +4353,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
4337
4353
|
.ds-feature above), so the hover affordance is a lift, matching the same
|
|
4338
4354
|
translateY + shadow idiom .chat-msg:hover .chat-bubble already uses. */
|
|
4339
4355
|
.ds-gallery-tile:hover { transform: translateY(-2px); box-shadow: 0 2px 8px color-mix(in oklab, var(--fg) 10%, transparent); }
|
|
4340
|
-
.ds-gallery-tile:focus-visible { outline:
|
|
4356
|
+
.ds-gallery-tile:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
4341
4357
|
.ds-gallery-tile--tight { min-height: clamp(96px, 14vw, 120px); }
|
|
4342
4358
|
.ds-lightbox {
|
|
4343
4359
|
position: fixed; inset: 0; background: var(--scrim);
|
package/colors_and_type.css
CHANGED
|
@@ -90,7 +90,11 @@
|
|
|
90
90
|
--accent-fg: var(--ink);
|
|
91
91
|
--accent-ink: var(--acid-deep);
|
|
92
92
|
--accent-bright: var(--acid); /* base value so var(--accent-bright) never falls back empty; ink + [data-accent] retune it */
|
|
93
|
-
--accent-
|
|
93
|
+
/* Blends --accent-ink (the readable/darker ink variant), not the raw
|
|
94
|
+
--accent fill, so light-theme active states clear contrast against --bg;
|
|
95
|
+
dark/ink and auto-dark restate the prior --accent-based value explicitly
|
|
96
|
+
below so this change does not leak into them via inheritance. */
|
|
97
|
+
--accent-tint: color-mix(in oklab, var(--accent-ink) 22%, var(--bg));
|
|
94
98
|
|
|
95
99
|
/* On-color foregrounds — text/icons that sit ON a saturated fill (accent,
|
|
96
100
|
danger, category chips). Theme-driven so white-on-color never hard-codes
|
|
@@ -327,6 +331,9 @@ select:focus-visible {
|
|
|
327
331
|
--accent-fg: var(--ink);
|
|
328
332
|
--accent-ink: var(--acid); /* on ink, the lime itself reads as bright text */
|
|
329
333
|
--accent-bright: var(--acid);
|
|
334
|
+
/* Preserves the prior --accent-based blend for dark; the :root light-theme
|
|
335
|
+
value above was retuned to blend --accent-ink instead. */
|
|
336
|
+
--accent-tint: color-mix(in oklab, var(--accent) 30%, var(--bg));
|
|
330
337
|
--danger: oklch(0.68 0.19 25);
|
|
331
338
|
--flame: #FF5A1F;
|
|
332
339
|
--amber: #D9A93A;
|
|
@@ -341,6 +348,14 @@ select:focus-visible {
|
|
|
341
348
|
--code-num: var(--sun);
|
|
342
349
|
}
|
|
343
350
|
|
|
351
|
+
/* Restores the pre-existing (weaker) dark-theme selection tint after the
|
|
352
|
+
light-theme-only bump in app-shell.css's base ::selection rule. */
|
|
353
|
+
[data-theme="ink"] ::selection,
|
|
354
|
+
[data-theme="dark"] ::selection {
|
|
355
|
+
background: color-mix(in oklab, var(--accent) 24%, var(--bg-2));
|
|
356
|
+
color: var(--fg);
|
|
357
|
+
}
|
|
358
|
+
|
|
344
359
|
/* NOTE: the [data-theme="auto"] block below mirrors the
|
|
345
360
|
[data-theme="ink"/"dark"] block above token-for-token. 'auto + OS-dark' and
|
|
346
361
|
'explicit dark' are the same visual context and resolve every token —
|
|
@@ -368,6 +383,7 @@ select:focus-visible {
|
|
|
368
383
|
--accent-fg: var(--ink);
|
|
369
384
|
--accent-ink: var(--acid);
|
|
370
385
|
--accent-bright: var(--acid);
|
|
386
|
+
--accent-tint: color-mix(in oklab, var(--accent) 30%, var(--bg));
|
|
371
387
|
--danger: oklch(0.68 0.19 25);
|
|
372
388
|
--flame: #FF5A1F;
|
|
373
389
|
--amber: #D9A93A;
|
|
@@ -379,6 +395,10 @@ select:focus-visible {
|
|
|
379
395
|
--code-str-alt: var(--mascot);
|
|
380
396
|
--code-num: var(--sun);
|
|
381
397
|
}
|
|
398
|
+
[data-theme="auto"] ::selection {
|
|
399
|
+
background: color-mix(in oklab, var(--accent) 24%, var(--bg-2));
|
|
400
|
+
color: var(--fg);
|
|
401
|
+
}
|
|
382
402
|
}
|
|
383
403
|
|
|
384
404
|
/* Nested-scope safety: if .ds-247420 appears under another .ds-247420 (e.g.
|
|
@@ -438,6 +458,7 @@ select:focus-visible {
|
|
|
438
458
|
--bg: var(--paper); --bg-2: var(--paper-2); --bg-3: var(--paper-3);
|
|
439
459
|
--fg: var(--ink); --fg-2: var(--ink-2); --fg-3: var(--ink-3);
|
|
440
460
|
--accent: var(--acid); --accent-fg: var(--ink); --accent-ink: var(--acid-deep);
|
|
461
|
+
--accent-tint: color-mix(in oklab, var(--accent-ink) 22%, var(--bg));
|
|
441
462
|
/* A paper island under a dark ancestor must not inherit the dark signal pair. */
|
|
442
463
|
--flame: #C53E00; --amber: #7C570F; --warn: #E0241A; --sky: #3A6EFF;
|
|
443
464
|
}
|