@apliteni/apliteni-ui 0.93.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -67,7 +67,7 @@
67
67
  border-spacing: 0;
68
68
  padding: 0 var(--space-2);
69
69
  }
70
- .ui-table--hover:not(.ui-table--zebra) tbody tr:hover td { background: var(--surface-2); --ring-gap: var(--surface-2); }
70
+ .ui-table--hover:not(.ui-table--zebra) tbody tr:hover td { background: var(--surface-2); }
71
71
  .ui-table--hover:not(.ui-table--zebra) tbody tr:hover td:first-child {
72
72
  border-top-left-radius: var(--radius-sm); border-bottom-left-radius: var(--radius-sm); }
73
73
  .ui-table--hover:not(.ui-table--zebra) tbody tr:hover td:last-child {
@@ -90,7 +90,7 @@
90
90
  .ui-table--zebra thead th { border-bottom-width: 2px; }
91
91
  .ui-table--zebra td,
92
92
  .ui-table--zebra :is(tbody, tfoot) th { border-bottom: 0; }
93
- .ui-table--zebra tbody tr:nth-child(even) td { background: var(--surface-2); --ring-gap: var(--surface-2); }
93
+ .ui-table--zebra tbody tr:nth-child(even) td { background: var(--surface-2); }
94
94
  /* The stripe stays full-bleed (the #71 inset above is hover only), but it only reads right
95
95
  * if the end cells are inset from the row's own edge, and `.ui-table td` sets
96
96
  * `padding-left: 0`. Only `--dense` supplied that inset, so `--zebra` without `--dense` —
@@ -102,7 +102,7 @@
102
102
  .ui-table--zebra th:last-child,
103
103
  .ui-table--zebra td:last-child { padding-right: var(--space-3); }
104
104
  .ui-table--zebra.ui-table--hover tbody tr:hover td,
105
- .ui-table--zebra tbody tr:hover td { --ring-gap: inherit; background: color-mix(in srgb, var(--accent) 8%, transparent); /* ring-gap: inherit — translucent wash retains the opaque containing gap. */ }
105
+ .ui-table--zebra tbody tr:hover td { background: color-mix(in srgb, var(--accent) 8%, transparent); /* code-bg: inherit — a wash paints over a ground and behind a chip, so the opaque ground below it is the step. */ }
106
106
 
107
107
  /* A link in a cell is a value that happens to open something: the row's ink, underlined
108
108
  on hover — what .ui-identity below has always done. Without it, base.css's bare
@@ -150,8 +150,8 @@
150
150
  why: guidelines/state-set.md#focus-rings
151
151
  held by: src/styles/table-focus.test.js */
152
152
  .ui-table a:not(.ui-btn):focus-visible {
153
- outline: 2px solid transparent;
154
- box-shadow: var(--ring);
153
+ outline: var(--ring);
154
+ outline-offset: var(--ring-offset);
155
155
  }
156
156
 
157
157
  .ui-table__num { text-align: right; font-variant-numeric: tabular-nums; }
@@ -175,12 +175,12 @@
175
175
  .ui-card { --table-bg: var(--surface); --table-code-bg: var(--bg); }
176
176
 
177
177
  /* White in light, base canvas in dark; never a grey or tinted data surface. */
178
- .ui-table { background: var(--table-bg); --ring-gap: var(--table-bg); }
178
+ .ui-table { background: var(--table-bg); }
179
179
  .ui-table--zebra tbody tr:nth-child(even) td,
180
180
  .ui-table--hover:not(.ui-table--zebra) tbody tr:hover td,
181
181
  .ui-table--zebra tbody tr:hover td,
182
182
  .ui-table--zebra.ui-table--hover tbody tr:hover td {
183
- background: var(--table-bg); --ring-gap: var(--table-bg);
183
+ background: var(--table-bg);
184
184
  }
185
185
  .ui-table tbody tr:hover { outline: 1px solid var(--border-strong); outline-offset: -1px; }
186
186
 
@@ -215,8 +215,8 @@
215
215
  why: docs/foundations.md#the-focus-ring */
216
216
  .ui-table-scroll:focus-visible { outline: var(--ring-scroll); outline-offset: var(--ring-scroll-offset); }
217
217
  .ui-table--sticky { border-collapse: separate; border-spacing: 0; }
218
- .ui-table--sticky thead th { position: sticky; top: 0; z-index: var(--z-sticky); background: var(--table-bg); --ring-gap: var(--table-bg); padding-top: var(--space-2); }
219
- .ui-table--pinned .ui-table__identity, .ui-table--pinned .ui-table__selection { position: sticky; left: 0; z-index: var(--z-base); background: var(--table-bg); --ring-gap: var(--table-bg); border-right: 1px solid var(--border); }
218
+ .ui-table--sticky thead th { position: sticky; top: 0; z-index: var(--z-sticky); background: var(--table-bg); padding-top: var(--space-2); }
219
+ .ui-table--pinned .ui-table__identity, .ui-table--pinned .ui-table__selection { position: sticky; left: 0; z-index: var(--z-base); background: var(--table-bg); border-right: 1px solid var(--border); }
220
220
  .ui-table--pinned thead .ui-table__identity, .ui-table--pinned thead .ui-table__selection { z-index: calc(var(--z-sticky) + 1); }
221
221
  .ui-value, .ui-delta { white-space: nowrap; font-variant-numeric: tabular-nums; }
222
222
  .ui-value__unit { margin-left: var(--space-1); font-size: var(--text-xs); color: var(--text); }
@@ -229,7 +229,7 @@
229
229
  .ui-identity__logo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
230
230
  .ui-identity__logo img[hidden] { display: none; /* motion: still — a failed resource is replaced without animating the error. */ }
231
231
  a.ui-identity:hover { text-decoration: underline; }
232
- .ui-identity:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); border-radius: var(--radius-xs); }
232
+ .ui-identity:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); border-radius: var(--radius-xs); }
233
233
  @media (max-width: 720px) {
234
234
  .ui-table--pinned .ui-table__identity { width: 1%; }
235
235
  .ui-table--pinned .ui-identity__logo { display: none; }
@@ -22,7 +22,7 @@
22
22
  }
23
23
  .ui-tabs__tab:hover { color: var(--strong); }
24
24
  .ui-tabs__tab.is-active { color: var(--strong); border-bottom-color: var(--accent); }
25
- .ui-tabs__tab:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); border-radius: 7px 7px 0 0; }
25
+ .ui-tabs__tab:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); border-radius: 7px 7px 0 0; }
26
26
 
27
27
  .ui-tabs__panels { padding-top: 20px; }
28
28
  .ui-tabs__panel[hidden] { display: none; }
@@ -31,4 +31,4 @@
31
31
  .ui-tabs__panel.is-entering { animation: m-fade var(--dur-fast) var(--ease-out) both; }
32
32
  /* The panel is focusable (tabindex="0", see tabs.js) so a keyboard user can
33
33
  reach text-only content. Show the ring when they land on it. */
34
- .ui-tabs__panel:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); border-radius: 8px; }
34
+ .ui-tabs__panel:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); border-radius: 8px; }
@@ -25,7 +25,7 @@
25
25
  width: max-content;
26
26
  max-width: var(--prose-caption);
27
27
  padding: var(--space-2) var(--space-3);
28
- background: var(--ui-tip-bg); /* ring-gap: inherit — decorative or text-only surface has no nested focus target. */
28
+ background: var(--ui-tip-bg); /* code-bg: inherit — decorative or text-only paint; nothing nested reads a ground from it. */
29
29
  /* The two-step edge and the drop, through the level's own names: in DARK that is
30
30
  --border-strong outside and --border one pixel inside it, then the drop; in LIGHT
31
31
  both lines are transparent and the drop carries the whole separation.
@@ -9,7 +9,7 @@
9
9
  height: 52px;
10
10
  display: flex;
11
11
  align-items: center;
12
- background: var(--bg); /* ring-gap: inherit — page background inherits root overrides. */
12
+ background: var(--bg); /* code-bg: inherit — page background inherits root overrides. */
13
13
  border-bottom: 1px solid var(--border);
14
14
  }
15
15
  .topbar__in {
@@ -43,7 +43,7 @@
43
43
  .topbar .brand { font-size: var(--text-sm); }
44
44
  /* The lockup is a link, so it takes focus: the shared ring, with a radius of its
45
45
  own because the mark and the word have no box to borrow one from. #482 */
46
- .brand:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); border-radius: var(--radius-xs); }
46
+ .brand:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); border-radius: var(--radius-xs); }
47
47
  .topbar .spacer { flex: 1; }
48
48
 
49
49
  /* Deck / Text (segmented, pill) */
@@ -51,7 +51,7 @@
51
51
  display: none;
52
52
  align-items: center;
53
53
  gap: 2px;
54
- background: var(--surface); --ring-gap: var(--surface);
54
+ background: var(--surface);
55
55
  border: 1px solid var(--border);
56
56
  border-radius: 24px;
57
57
  padding: 3px;
@@ -69,8 +69,8 @@
69
69
  transition: color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
70
70
  }
71
71
  .dtsw a:hover { color: var(--strong); }
72
- .dtsw a.cur { color: var(--strong); background: var(--surface); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */ }
73
- .dtsw a:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); }
72
+ .dtsw a.cur { color: var(--strong); background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ }
73
+ .dtsw a:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
74
74
 
75
75
  /* Theme toggle — a single icon-only switch (no label). */
76
76
  .toggle {
@@ -79,7 +79,7 @@
79
79
  width: 34px;
80
80
  height: 34px;
81
81
  cursor: pointer;
82
- background: var(--surface); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */
82
+ background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
83
83
  color: var(--text);
84
84
  border: 1px solid var(--border);
85
85
  border-radius: 10px;
@@ -90,7 +90,7 @@
90
90
  border-color var(--dur-fast) var(--ease);
91
91
  }
92
92
  .toggle:hover { transform: translateY(-1px); border-color: var(--border-strong); }
93
- .toggle:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); }
93
+ .toggle:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
94
94
  .toggle .ic { width: 17px; height: 17px; display: inline-block; color: var(--text); }
95
95
  .toggle .ic svg { display: block; width: 100%; height: 100%; stroke-width: 2.2; }
96
96
 
@@ -105,14 +105,18 @@
105
105
  font-size: calc(var(--text-sm) - 0.5px);
106
106
  font-weight: 500;
107
107
  color: var(--text);
108
- background: var(--surface); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */
108
+ background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */
109
109
  border: 1px solid var(--border);
110
110
  border-radius: 24px;
111
111
  padding: 7px 11px 7px 13px;
112
112
  transition: border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
113
113
  }
114
- .vsw__btn:hover { border-color: var(--accent); }
115
- .vsw__btn:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); }
114
+ /* The hover edge steps aside under the band: an accent edge one pixel inside an
115
+ accent band is the second band #578 round r34 took off the focus rules, and a
116
+ pointer resting on a focused control would put it back. One indicator, which is
117
+ what the kit's rows already chose. why: docs/foundations.md#the-focus-ring */
118
+ .vsw__btn:hover:not(:focus-visible) { border-color: var(--accent); }
119
+ .vsw__btn:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
116
120
  .vsw__btn .lbl { color: var(--text); }
117
121
  .vsw__btn .cur { color: var(--strong); font-weight: 600; letter-spacing: 0.01em; }
118
122
  .vsw__btn .car {
@@ -128,7 +132,7 @@
128
132
  top: calc(100% + 9px);
129
133
  left: 0;
130
134
  min-width: 266px;
131
- background: var(--bg-elevated); --ring-gap: var(--bg-elevated); /* the floating step — see dropdown.css. #295 */
135
+ background: var(--bg-elevated); /* the floating step — see dropdown.css. #295 */
132
136
  /* The two-step edge and the drop, through the level's own names: in DARK that is
133
137
  --border-strong outside and --border one pixel inside it, then the drop; in LIGHT
134
138
  both lines are transparent and the drop carries the whole separation.
@@ -188,14 +192,14 @@
188
192
  transition: background var(--dur-fast) var(--ease);
189
193
  }
190
194
  /* Menu rows use the reading surface and an edge on hover — see
191
- src/styles/dropdown.css:176 `.ui-dropdown__item:hover`.
195
+ src/styles/dropdown.css:183 `.ui-dropdown__item:hover`.
192
196
  why: docs/foundations.md#elevation */
193
- .vopt:hover { outline: 1px solid var(--control-edge); outline-offset: -1px; background: var(--surface); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */ }
197
+ .vopt:hover { outline: 1px solid var(--control-edge); outline-offset: -1px; background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ }
194
198
  /* The row is a keyboard stop: src/components/dropdown.js:804
195
199
  `items[next < 0 ? 0 : next]?.focus()` moves focus onto a `[data-dd-item]` with
196
200
  the arrow keys, and this is one. It takes the ring on its own 10px radius, the
197
201
  same way `.amenu a` above does. #482 */
198
- .vopt:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); }
202
+ .vopt:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
199
203
  .vopt .vname { font-family: var(--font-sans); font-size: calc(var(--text-sm) - 0.5px); color: var(--strong); font-weight: 600; letter-spacing: 0.01em; }
200
204
  .vopt .vmeta { font-size: var(--text-xs); color: var(--text); margin-top: 2px; }
201
205
  .vopt .vbadge {
@@ -208,8 +212,8 @@
208
212
  flex: none;
209
213
  margin-top: 1px;
210
214
  }
211
- .vbadge.live { color: var(--chip-success-ink); background: var(--chip-success-fill); /* ring-gap: inherit — decorative or text-only surface has no nested focus target. */ }
212
- .vbadge.arch { /* muted-ink: state — archived version */ color: var(--muted); background: var(--surface); /* ring-gap: inherit — decorative or text-only surface has no nested focus target. */ }
215
+ .vbadge.live { color: var(--chip-success-ink); background: var(--chip-success-fill); /* code-bg: inherit — decorative or text-only paint; nothing nested reads a ground from it. */ }
216
+ .vbadge.arch { /* muted-ink: state — archived version */ color: var(--muted); background: var(--surface); /* code-bg: inherit — decorative or text-only paint; nothing nested reads a ground from it. */ }
213
217
  /* The phone step — the same one the rail folds at: docs/foundations.md#breakpoints.
214
218
  The switcher keeps its glyph and drops its label.
215
219
  The menu hangs the other way here. Anchored by its left edge it opened
@@ -255,13 +259,17 @@
255
259
  letter-spacing: 0.02em;
256
260
  transition: border-color var(--dur-fast) var(--ease);
257
261
  }
258
- .acct .avatar:hover { border-color: var(--accent); }
259
- .avatar:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); }
262
+ /* The hover edge steps aside under the band: an accent edge one pixel inside an
263
+ accent band is the second band #578 round r34 took off the focus rules, and a
264
+ pointer resting on a focused control would put it back. One indicator, which is
265
+ what the kit's rows already chose. why: docs/foundations.md#the-focus-ring */
266
+ .acct .avatar:hover:not(:focus-visible) { border-color: var(--accent); }
267
+ .avatar:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); }
260
268
  .amenu {
261
269
  position: absolute;
262
270
  right: 0; top: 44px;
263
271
  width: 252px;
264
- background: var(--bg-elevated); --ring-gap: var(--bg-elevated); /* the floating step — see dropdown.css. #295 */
272
+ background: var(--bg-elevated); /* the floating step — see dropdown.css. #295 */
265
273
  /* The two-step edge and the drop, through the level's own names: in DARK that is
266
274
  --border-strong outside and --border one pixel inside it, then the drop; in LIGHT
267
275
  both lines are transparent and the drop carries the whole separation.
@@ -299,8 +307,8 @@
299
307
  .amenu .ahead .anm { color: var(--strong); font-size: var(--text-sm); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
300
308
  .amenu .ahead .aem { color: var(--text); font-size: calc(var(--text-xs) + 0.5px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
301
309
  .amenu a { display: flex; align-items: center; gap: 11px; padding: 10px 15px; color: var(--text); text-decoration: none; font-family: var(--font-sans); font-size: var(--text-sm); cursor: pointer; }
302
- .amenu a:hover { outline: 1px solid var(--control-edge); outline-offset: -1px; background: var(--surface); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */ }
303
- .amenu a:focus-visible { outline: 2px solid transparent; box-shadow: var(--ring); border-radius: var(--radius-xs); }
310
+ .amenu a:hover { outline: 1px solid var(--control-edge); outline-offset: -1px; background: var(--surface); /* code-bg: inherit — control paint; the containing surface is the ground, for a chip and for a band alike. */ }
311
+ .amenu a:focus-visible { outline: var(--ring); outline-offset: var(--ring-offset); border-radius: var(--radius-xs); }
304
312
  .amenu a.cur { color: var(--accent); }
305
313
  .amenu a svg { width: 19px; height: 19px; flex: none; stroke: currentColor; fill: none; stroke-width: 2; opacity: 0.85; }
306
314
  .amenu .asep { height: 1px; background: var(--border); margin: 5px 0; }
@@ -254,27 +254,32 @@
254
254
  reading one gets nothing rather than an unresolved var(), and a consumer who wants a
255
255
  cast shadow sets them. Nothing in src/ reads them.
256
256
 
257
- A transparent shadow, not `none`, because these are read in a LIST. The kit's own
258
- pre-0.32 pattern was `box-shadow: var(--shadow-lg), var(--ring)`, and `none` is only
259
- valid alone — it makes the whole declaration invalid, which silently takes the focus
260
- ring with it. `0 0 #0000` composes. why: docs/foundations.md#elevation */
257
+ A transparent shadow, not `none`, because these are read in a LIST — a surface's
258
+ edge and its drop are two layers of one declaration — and `none` is valid only
259
+ alone, so it makes the whole declaration invalid and takes the layers beside it
260
+ with it. `0 0 #0000` composes. why: docs/foundations.md#elevation */
261
261
  --shadow-sm: 0 0 #0000;
262
262
  --shadow-md: 0 0 #0000;
263
263
  --shadow-lg: 0 0 #0000;
264
264
  --shadow-seg: 0 0 #0000;
265
265
  --shadow-card: 0 0 #0000;
266
- /* G2: the band carries contrast; the halo decorates it. why: docs/foundations.md#the-focus-ring */
266
+ /* ONE band, drawn as a real OUTLINE, and no halo. Artur took the halo off on #578
267
+ after #557 drew a scroll region's band without one. An outline leaves its offset
268
+ UNPAINTED, so the 1px between the control and the band is whatever surface the
269
+ control is already standing on — which is what retired --ring-gap and the
270
+ per-surface recomposition behind it, and what leaves forced colors a real outline
271
+ to repaint instead of a transparent stand-in.
272
+ why: docs/foundations.md#the-focus-ring */
267
273
  --ring-width: 2px;
268
274
  --ring-color: var(--accent);
269
275
  --ring-gap-width: 1px;
270
- --ring-gap: var(--bg);
271
- --ring: 0 0 0 var(--ring-gap-width) var(--ring-gap), 0 0 0 calc(var(--ring-gap-width) + var(--ring-width)) var(--ring-color), 0 0 12px 2px color-mix(in srgb, var(--ring-color) 45%, transparent);
272
- /* What a scroll region inside a surface takes: --ring's gap and band, drawn inward,
273
- no halo. An OUTLINE, because an inset shadow is painted under the box's own
274
- children and a table scrolled under one erases it. The gap is left unpainted, so
275
- neither half reads --ring-gap and neither is recomposed per surface. Chosen by
276
- Artur on #531 round r30. why: docs/foundations.md#the-focus-ring */
277
- --ring-scroll: var(--ring-width) solid var(--ring-color);
276
+ --ring: var(--ring-width) solid var(--ring-color);
277
+ --ring-offset: var(--ring-gap-width);
278
+ /* What a scroll region inside a surface takes: the same band, drawn inward rather
279
+ than outward, because an inset shadow is painted under the box's own children and
280
+ a table scrolled under one erases it. Only the offset differs. Chosen by Artur on
281
+ #531 round r30. why: docs/foundations.md#the-focus-ring */
282
+ --ring-scroll: var(--ring);
278
283
  --ring-scroll-offset: calc(-1 * (var(--ring-gap-width) + var(--ring-width)));
279
284
 
280
285
  /* The ink a cast shadow is made of, and the specular white that reads as gloss on a
@@ -297,7 +302,7 @@
297
302
  /* The ladder's two resting rungs, which only light climbs. Transparent here and
298
303
  not `none`, for the reason the deprecated --shadow-* tokens are: these are read
299
304
  in a layer list, and `none` is valid only alone — it would invalidate the whole
300
- declaration and take the focus ring with it. why: docs/foundations.md#elevation */
305
+ declaration and take the layers beside it with it. why: docs/foundations.md#elevation */
301
306
  --elev-rest: 0 0 #0000; /* a card */
302
307
  --elev-rail: 0 0 #0000; /* the shell's rail, cast sideways */
303
308
 
@@ -436,7 +441,7 @@
436
441
  --shadow-lg: 0 0 #0000;
437
442
  --shadow-seg: 0 0 #0000;
438
443
  --shadow-card: 0 0 #0000;
439
- /* No --ring here. :root's is var(--accent), and light re-points --accent. */
444
+ /* No --ring here. :root's band is var(--accent), and light re-points --accent. */
440
445
 
441
446
  --shadow-ink: #1e1e32;
442
447
  --sheen: #ffffff;
@@ -505,11 +510,9 @@
505
510
  * Held by stories/code-chip.test.js. why: docs/foundations.md#elevation */
506
511
  :root { --code-bg: var(--surface); }
507
512
 
508
- /* Recompose only at painted containers; controls inherit the outside gap, and each hands an
509
- * inline code chip the page. One recipe keeps surface propagation cheap and consistent.
510
- * .ui-code composes its own ring in src/styles/code.css instead of joining this list: a
511
- * chip cannot both paint --code-bg and re-point it, and its gap has to be the surface it
512
- * actually paints. why: docs/foundations.md#the-focus-ring */
513
+ /* Every painted container hands an inline code chip the page. One recipe keeps surface
514
+ * propagation cheap and consistent. The ring is not in this list since #578: an outline
515
+ * paints no gap of its own, so a focused control needs nothing handed down to it. */
513
516
  .amenu,
514
517
  .dtsw,
515
518
  .rx-modal,
@@ -542,7 +545,6 @@
542
545
  .ui-toast--outline,
543
546
  .ui-toast--solid,
544
547
  .vsw__menu {
545
- --ring: 0 0 0 var(--ring-gap-width) var(--ring-gap), 0 0 0 calc(var(--ring-gap-width) + var(--ring-width)) var(--ring-color), 0 0 12px 2px color-mix(in srgb, var(--ring-color) 45%, transparent);
546
548
  --code-bg: var(--bg);
547
549
  }
548
550
 
@@ -574,13 +576,3 @@
574
576
  .ui-callout--warn,
575
577
  .ui-callout--danger,
576
578
  .ui-success { --code-bg: var(--wash-code-bg); }
577
-
578
- /* A container focused itself paints outside its own surface; descendants only
579
- * inherit its inside gap again after focus moves to them. A scroll region inside one
580
- * needs no entry here: --ring-scroll paints no gap of its own, so the 1px it leaves is
581
- * whatever the region is already standing on. #531 */
582
- .ui-card:focus-visible,
583
- .ui-cmdk__panel:focus-visible,
584
- .ui-confirm__panel:focus-visible,
585
- .ui-drawer__panel:focus-visible,
586
- .rx-modal:focus-visible { --ring-gap: inherit; }