anentrypoint-design 0.0.292 → 0.0.293

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
@@ -30,8 +30,8 @@ button, input, select, textarea { font: inherit; }
30
30
  }
31
31
  .skip-link:focus {
32
32
  top: 10px;
33
- outline: 2px solid var(--accent-ink);
34
- outline-offset: 2px;
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
- ::selection { background: color-mix(in oklab, var(--accent) 24%, var(--bg-2)); color: var(--fg); }
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: 2px solid var(--accent-ink);
251
- outline-offset: 2px;
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: 2px solid var(--accent-ink);
287
- outline-offset: 2px;
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: 2px solid var(--accent-ink);
329
- outline-offset: 2px;
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);
@@ -1004,7 +1009,7 @@ table td { padding: 14px 16px; border-top: 1px solid var(--rule); }
1004
1009
  table tr.clickable { cursor: pointer; }
1005
1010
  table tr.clickable:hover td { background: var(--bg-2); }
1006
1011
  table tr.clickable:focus-visible {
1007
- outline: 2px solid var(--accent-ink);
1012
+ outline: var(--focus-w) solid var(--focus-color);
1008
1013
  outline-offset: -2px;
1009
1014
  }
1010
1015
  table tr.clickable:focus-visible td { background: var(--bg-2); }
@@ -1445,7 +1450,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1445
1450
  flex-direction: column;
1446
1451
  gap: 4px;
1447
1452
  }
1448
- .ds-file-grid:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; border-radius: var(--r-2); }
1453
+ .ds-file-grid:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); border-radius: var(--r-2); }
1449
1454
 
1450
1455
  /* Listing wrapper holds the optional filter + sort header above the grid. */
1451
1456
  .ds-file-listing { display: flex; flex-direction: column; gap: var(--space-2); min-height: 0; }
@@ -1467,7 +1472,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1467
1472
  }
1468
1473
  .ds-file-sort-btn:hover { color: var(--fg-2); background: var(--bg-2); }
1469
1474
  .ds-file-sort-btn.active { color: var(--accent-ink); }
1470
- .ds-file-sort-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1475
+ .ds-file-sort-btn:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
1471
1476
 
1472
1477
  /* Skeleton shimmer rows shown while a directory loads. */
1473
1478
  .ds-file-row-skeleton { cursor: default; pointer-events: none; }
@@ -1515,7 +1520,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1515
1520
  color: inherit; font: inherit; text-align: left; cursor: pointer;
1516
1521
  }
1517
1522
  .ds-file-open[disabled] { cursor: default; }
1518
- .ds-file-open:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; border-radius: var(--r-1); }
1523
+ .ds-file-open:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); border-radius: var(--r-1); }
1519
1524
  .ds-file-row:hover {
1520
1525
  background: var(--bg-2);
1521
1526
  border-color: var(--rule);
@@ -1619,7 +1624,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1619
1624
  }
1620
1625
  .ds-file-check:hover { background: var(--bg-3); color: var(--fg); }
1621
1626
  .ds-file-check.is-marked { color: var(--accent-ink); }
1622
- .ds-file-check:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1627
+ .ds-file-check:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
1623
1628
  .ds-file-check[disabled] { opacity: 0.4; cursor: default; }
1624
1629
  .ds-file-row.is-marked { background: var(--accent-tint); border-color: var(--accent); }
1625
1630
  .ds-file-selectall {
@@ -1629,7 +1634,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1629
1634
  padding: var(--space-1); border-radius: var(--r-1);
1630
1635
  }
1631
1636
  .ds-file-selectall:hover { background: var(--bg-2); color: var(--fg); }
1632
- .ds-file-selectall:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1637
+ .ds-file-selectall:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
1633
1638
  .ds-file-controls { display: flex; align-items: center; gap: var(--space-2); padding: 0 var(--space-2) var(--space-1); flex-wrap: wrap; }
1634
1639
  .ds-file-controls .spread { flex: 1 1 auto; }
1635
1640
  .ds-file-controls .ds-file-sort { padding: 0; }
@@ -1667,7 +1672,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1667
1672
  }
1668
1673
  .ds-density-btn:hover { color: var(--fg); }
1669
1674
  .ds-density-btn.active { background: var(--accent-tint); color: var(--fg); }
1670
- .ds-density-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1675
+ .ds-density-btn:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
1671
1676
 
1672
1677
  /* Compact density — tighter rows for long listings. */
1673
1678
  .ds-file-grid[data-density="compact"] { gap: 2px; }
@@ -1705,7 +1710,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1705
1710
  background: none; border: none; cursor: pointer; color: var(--fg);
1706
1711
  }
1707
1712
  .ds-file-cell-open[disabled] { cursor: default; }
1708
- .ds-file-cell-open:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; border-radius: var(--r-2); }
1713
+ .ds-file-cell-open:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: -2px; border-radius: var(--r-2); }
1709
1714
  .ds-file-cell-media {
1710
1715
  display: flex; align-items: center; justify-content: center;
1711
1716
  width: 100%; aspect-ratio: 4 / 3;
@@ -1945,7 +1950,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
1945
1950
  color: var(--fg-2); font-family: var(--ff-body); font-size: var(--fs-micro);
1946
1951
  }
1947
1952
  .ds-upload-act:hover { background: var(--bg-3); color: var(--fg); }
1948
- .ds-upload-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
1953
+ .ds-upload-act:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
1949
1954
  @media (hover: none), (pointer: coarse) {
1950
1955
  .ds-upload-act { min-height: 44px; min-width: 44px; }
1951
1956
  /* 44px floor for file controls on ANY touch device, not only narrow ones
@@ -2016,7 +2021,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2016
2021
  border-radius: var(--r-2); color: var(--fg);
2017
2022
  font-family: inherit; font-size: var(--fs-sm);
2018
2023
  }
2019
- .ds-modal-input:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
2024
+ .ds-modal-input:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
2020
2025
  /* iOS auto-zooms inputs under 16px on focus, breaking the modal layout. */
2021
2026
  @media (hover: none), (pointer: coarse) {
2022
2027
  .ds-modal-input { font-size: 16px; min-height: 44px; }
@@ -2203,7 +2208,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2203
2208
  transition: color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
2204
2209
  }
2205
2210
  .ds-segmented .ds-seg-btn:hover { color: var(--fg); }
2206
- .ds-segmented .ds-seg-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
2211
+ .ds-segmented .ds-seg-btn:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
2207
2212
  .ds-segmented .ds-seg-btn.is-on {
2208
2213
  background: var(--bg); color: var(--fg);
2209
2214
  box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule);
@@ -2653,8 +2658,8 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
2653
2658
  .chat-composer .send:active { filter: brightness(0.94); }
2654
2659
  .chat-composer .send:focus-visible,
2655
2660
  .composer-btn:focus-visible {
2656
- outline: 2px solid var(--accent-ink);
2657
- outline-offset: 2px;
2661
+ outline: var(--focus-w) solid var(--focus-color);
2662
+ outline-offset: var(--focus-offset);
2658
2663
  }
2659
2664
  .chat-composer .send:disabled {
2660
2665
  background: var(--bg-3); color: var(--fg-3); cursor: not-allowed; transform: none;
@@ -3195,8 +3200,8 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3195
3200
 
3196
3201
  /* Base focus-visible: 2px ring + 2px offset clears dark bg-3 surfaces (WCAG 1.4.11) */
3197
3202
  :focus-visible {
3198
- outline: 2px solid var(--accent-ink);
3199
- outline-offset: 2px;
3203
+ outline: var(--focus-w) solid var(--focus-color);
3204
+ outline-offset: var(--focus-offset);
3200
3205
  }
3201
3206
 
3202
3207
  /* Enhanced focus-visible for all interactive elements */
@@ -3205,8 +3210,8 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3205
3210
  [role="tab"]:focus-visible,
3206
3211
  .row:focus-visible,
3207
3212
  .row[tabindex]:focus-visible {
3208
- outline: 2px solid var(--accent-ink);
3209
- outline-offset: 2px;
3213
+ outline: var(--focus-w) solid var(--focus-color);
3214
+ outline-offset: var(--focus-offset);
3210
3215
  }
3211
3216
 
3212
3217
  /* Skip to main content link */
@@ -3598,7 +3603,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3598
3603
  border-radius: var(--r-1, 6px);
3599
3604
  cursor: pointer;
3600
3605
  }
3601
- .app-side-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3606
+ .app-side-toggle:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
3602
3607
  @container (max-width: 900px) {
3603
3608
  .app-side-toggle { display: inline-flex; }
3604
3609
  .app-topbar .brand { margin-left: 44px; }
@@ -3692,7 +3697,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3692
3697
  .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
3698
  .ws-resizer::after { content: ""; display: block; width: 2px; height: 100%; margin: 0 auto; background: transparent; transition: background var(--dur-snap) var(--ease); }
3694
3699
  .ws-resizer:hover::after, .ws-resizer:focus-visible::after { background: var(--accent); }
3695
- .ws-resizer:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; }
3700
+ .ws-resizer:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: -2px; }
3696
3701
  .ws-resizer.ws-resizer-rail { grid-column: 1; }
3697
3702
  .ws-resizer.ws-resizer-sessions { grid-column: 2; }
3698
3703
  .ws-resizer.ws-resizer-pane { grid-column: 3; justify-self: end; }
@@ -3744,7 +3749,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3744
3749
  border-radius: var(--r-1); cursor: pointer;
3745
3750
  }
3746
3751
  .ws-rail-toggle:hover { background: var(--bg-3); color: var(--fg); }
3747
- .ws-rail-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3752
+ .ws-rail-toggle:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
3748
3753
  .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
3754
  .ws-rail-head { display: flex; align-items: center; min-height: 36px; padding: 0 var(--space-2); }
3750
3755
  .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 +3762,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3757
3762
  min-height: 40px; white-space: nowrap; overflow: hidden;
3758
3763
  }
3759
3764
  .ws-rail-action:hover { filter: brightness(0.92); }
3760
- .ws-rail-action:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3765
+ .ws-rail-action:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
3761
3766
  .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
3767
  .ws-rail-item {
3763
3768
  display: flex; align-items: center; gap: var(--space-2);
@@ -3767,7 +3772,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3767
3772
  font-family: var(--ff-body); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden;
3768
3773
  }
3769
3774
  .ws-rail-item:hover { background: var(--bg-3); color: var(--fg); }
3770
- .ws-rail-item:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; }
3775
+ .ws-rail-item:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: -2px; }
3771
3776
  .ws-rail-item.active { background: var(--accent-tint); color: var(--fg); box-shadow: inset 2px 0 0 var(--accent); }
3772
3777
  .ws-rail-item-label { flex: 1; overflow: hidden; text-overflow: ellipsis; }
3773
3778
  .ws-rail-item-count { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3); }
@@ -3840,7 +3845,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3840
3845
  /* Desktop-only chrome toggle (sessions collapse): inverse of the mobile drawer-toggle. */
3841
3846
  .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
3847
  .ws-desktop-toggle:hover { background: var(--bg-2); color: var(--fg); }
3843
- .ws-desktop-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3848
+ .ws-desktop-toggle:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
3844
3849
  @media (max-width: 900px) { .ws-desktop-toggle { display: none; } }
3845
3850
  /* The pane collapse toggle is meaningless once the pane TRACK is dropped (the
3846
3851
  pane becomes a mobile overlay drawer at <=1480px, reached via its own
@@ -3964,7 +3969,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3964
3969
  .ws-crumb .app-crumb .crumb-right { margin-left: 0; flex-wrap: wrap; min-width: 0; display: inline-flex; }
3965
3970
  }
3966
3971
  .ws-drawer-toggle:hover { background: var(--bg-2); color: var(--fg); }
3967
- .ws-drawer-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
3972
+ .ws-drawer-toggle:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
3968
3973
 
3969
3974
  @media (prefers-reduced-motion: reduce) {
3970
3975
  .ws-shell, .ws-rail, .ws-pane, .ws-sessions, .ws-scrim { transition: none; }
@@ -3989,7 +3994,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
3989
3994
  transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
3990
3995
  }
3991
3996
  .row-act:hover { background: var(--bg-3); color: var(--fg); }
3992
- .row-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
3997
+ .row-act:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
3993
3998
 
3994
3999
  /* FilterPills - a group of pill toggle buttons (aria-pressed). */
3995
4000
  .ds-filter-pills { display: flex; flex-wrap: wrap; gap: var(--space-2); }
@@ -4002,7 +4007,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4002
4007
  }
4003
4008
  .ds-filter-pill:hover { background: var(--bg-3); color: var(--fg); }
4004
4009
  .ds-filter-pill.active { background: var(--accent-tint); color: var(--fg); border-color: var(--accent); }
4005
- .ds-filter-pill:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
4010
+ .ds-filter-pill:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
4006
4011
 
4007
4012
  /* Touch floor for the new small controls. */
4008
4013
  @media (pointer: coarse) {
@@ -4012,7 +4017,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4012
4017
  /* Disabled file actions (read-only row / in-flight mutation) stay visible but inert. */
4013
4018
  .ds-file-act:disabled { opacity: .45; cursor: default; }
4014
4019
  .ds-file-act:disabled:hover { background: transparent; color: var(--fg-3); }
4015
- .ds-file-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
4020
+ .ds-file-act:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
4016
4021
 
4017
4022
  /* ============================================================
4018
4023
  Print — linearize WorkspaceShell so main content prints in full.
@@ -4337,7 +4342,7 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
4337
4342
  .ds-feature above), so the hover affordance is a lift, matching the same
4338
4343
  translateY + shadow idiom .chat-msg:hover .chat-bubble already uses. */
4339
4344
  .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: 2px solid var(--accent-ink); outline-offset: 2px; }
4345
+ .ds-gallery-tile:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
4341
4346
  .ds-gallery-tile--tight { min-height: clamp(96px, 14vw, 120px); }
4342
4347
  .ds-lightbox {
4343
4348
  position: fixed; inset: 0; background: var(--scrim);
@@ -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-tint: color-mix(in oklab, var(--accent) 30%, var(--bg));
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
  }