@splendidlabz/styles 4.8.2 → 4.10.1

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.
@@ -0,0 +1,372 @@
1
+ /*
2
+ * testgb — minimal empirical tests for gradient transition ergonomics.
3
+ *
4
+ * Three isolated cases. Hover each box to trigger the transition.
5
+ * Watch for: smooth interpolation vs. discrete snap.
6
+ *
7
+ * Test 1: Registered <color> embedded inside a freeform stops string.
8
+ * → Does the gradient redraw smoothly when registered colors
9
+ * interpolate, even when concatenated into --stops?
10
+ *
11
+ * Test 2: color-mix() driven by a registered <number> alpha multiplier.
12
+ * → Does a single scalar control fade the whole ring smoothly?
13
+ *
14
+ * Test 3: Registered <length> animating a radial size.
15
+ * → Does geometry interpolate smoothly inside the gradient?
16
+ * (circle in radial-gradient takes <length> only, not %.)
17
+ *
18
+ * Test 4: Registered <color> → <color> (not alpha) inside freeform stops.
19
+ * → Does an arbitrary color shift interpolate, not just opacity?
20
+ *
21
+ * Test 5: Registered <percentage> animating a stop position.
22
+ * → Can the stop % itself transition?
23
+ *
24
+ * Test 6: Registered <color> where BOTH hue and alpha change at once.
25
+ * → e.g. transparent red → opaque blue in one shot.
26
+ *
27
+ * Mark up:
28
+ * <div class="testgb testgb-1">alpha stops</div>
29
+ * <div class="testgb testgb-2">alpha mix</div>
30
+ * <div class="testgb testgb-3">size</div>
31
+ * <div class="testgb testgb-4">color → color</div>
32
+ * <div class="testgb testgb-5">stop position</div>
33
+ * <div class="testgb testgb-6">color + alpha</div>
34
+ */
35
+
36
+ @property --testgb-c1 {
37
+ syntax: '<color>';
38
+ inherits: true;
39
+ initial-value: rgb(255 0 0 / 0%);
40
+ }
41
+
42
+ @property --testgb-c2 {
43
+ syntax: '<color>';
44
+ inherits: true;
45
+ initial-value: rgb(0 0 255 / 0%);
46
+ }
47
+
48
+ @property --testgb-alpha {
49
+ syntax: '<number>';
50
+ inherits: true;
51
+ initial-value: 0;
52
+ }
53
+
54
+ @property --testgb-size {
55
+ syntax: '<length>';
56
+ inherits: true;
57
+ initial-value: 20px;
58
+ }
59
+
60
+ @property --testgb-c3 {
61
+ syntax: '<color>';
62
+ inherits: true;
63
+ initial-value: oklch(70% 0.2 25deg);
64
+ }
65
+
66
+ @property --testgb-c4 {
67
+ syntax: '<color>';
68
+ inherits: true;
69
+ initial-value: oklch(70% 0.2 280deg);
70
+ }
71
+
72
+ @property --testgb-pos {
73
+ syntax: '<percentage>';
74
+ inherits: true;
75
+ initial-value: 20%;
76
+ }
77
+
78
+ @property --testgb-c5 {
79
+ syntax: '<color>';
80
+ inherits: true;
81
+ initial-value: rgb(255 0 0 / 0%);
82
+ }
83
+
84
+ @utility testgb {
85
+ display: inline-grid;
86
+ place-items: center;
87
+ width: 12rem;
88
+ height: 8rem;
89
+ border-radius: 0.75rem;
90
+ font: 600 0.875rem system-ui;
91
+ color: white;
92
+ text-shadow: 0 1px 2px rgb(0 0 0 / 50%);
93
+ }
94
+
95
+ /* ─── Test 1: registered colors inside a freeform stops list ─────────── */
96
+ @utility testgb-1 {
97
+ --testgb-stops: var(--testgb-c1) 0%, var(--testgb-c2) 100%;
98
+ background: linear-gradient(to right, var(--testgb-stops));
99
+ transition:
100
+ --testgb-c1 600ms ease,
101
+ --testgb-c2 600ms ease;
102
+
103
+ &:hover {
104
+ --testgb-c1: rgb(255 0 0 / 100%);
105
+ --testgb-c2: rgb(0 0 255 / 100%);
106
+ }
107
+ }
108
+
109
+ /* ─── Test 2: color-mix alpha multiplier (single knob) ───────────────── */
110
+ @utility testgb-2 {
111
+ --testgb-mix-1: color-mix(
112
+ in oklch,
113
+ oklch(70% 0.2 25deg) calc(var(--testgb-alpha) * 100%),
114
+ transparent
115
+ );
116
+ --testgb-mix-2: color-mix(
117
+ in oklch,
118
+ oklch(70% 0.2 280deg) calc(var(--testgb-alpha) * 100%),
119
+ transparent
120
+ );
121
+ background: linear-gradient(
122
+ to right,
123
+ var(--testgb-mix-1),
124
+ var(--testgb-mix-2)
125
+ );
126
+ transition: --testgb-alpha 600ms ease;
127
+
128
+ &:hover {
129
+ --testgb-alpha: 1;
130
+ }
131
+ }
132
+
133
+ /* ─── Test 3: registered length animating gradient geometry ──────────── */
134
+ @utility testgb-3 {
135
+ background: radial-gradient(
136
+ circle var(--testgb-size) at center,
137
+ oklch(70% 0.2 140deg) 0%,
138
+ transparent 100%
139
+ );
140
+ transition: --testgb-size 600ms ease;
141
+
142
+ &:hover {
143
+ --testgb-size: 150px;
144
+ }
145
+ }
146
+
147
+ /* ─── Test 4: color → color (not alpha) inside freeform stops ────────── */
148
+ @utility testgb-4 {
149
+ --testgb-stops-2: var(--testgb-c3) 0%, var(--testgb-c4) 100%;
150
+ background: linear-gradient(to right, var(--testgb-stops-2));
151
+ transition:
152
+ --testgb-c3 600ms ease,
153
+ --testgb-c4 600ms ease;
154
+
155
+ &:hover {
156
+ --testgb-c3: oklch(70% 0.2 140deg);
157
+ --testgb-c4: oklch(70% 0.2 60deg);
158
+ }
159
+ }
160
+
161
+ /* ─── Test 5: stop position % transitions ────────────────────────────── */
162
+ @utility testgb-5 {
163
+ background: linear-gradient(
164
+ to right,
165
+ oklch(70% 0.2 25deg) var(--testgb-pos),
166
+ oklch(70% 0.2 280deg) 100%
167
+ );
168
+ transition: --testgb-pos 600ms ease;
169
+
170
+ &:hover {
171
+ --testgb-pos: 80%;
172
+ }
173
+ }
174
+
175
+ /* ─── Test 6: color + alpha changing simultaneously ──────────────────── */
176
+ @utility testgb-6 {
177
+ background: linear-gradient(
178
+ to right,
179
+ var(--testgb-c5),
180
+ oklch(70% 0.2 280deg)
181
+ );
182
+ transition: --testgb-c5 600ms ease;
183
+
184
+ &:hover {
185
+ --testgb-c5: rgb(0 200 100 / 100%);
186
+ }
187
+ }
188
+
189
+ /* ─── Test 7: spotlight — radial bloom at cursor, faded by proximity ───
190
+ *
191
+ * One radial gradient. Position always tracks the cursor via --x/--y.
192
+ * Visibility is gated by --proximity (set by the .spotlight utility):
193
+ * • cursor far from card → proximity 0 → bloom is transparent
194
+ * • cursor on card → proximity 1 → bloom fully visible
195
+ *
196
+ * The gradient image is always painted; only its color alpha changes,
197
+ * so we never hit the discrete `image ↔ none` snap.
198
+ *
199
+ * --inner-size doubles as the bloom radius AND the proximity reach
200
+ * (via .spotlight's max(--inner-size, --outer-size) falloff).
201
+ *
202
+ * Mark up: <div class="testgb testgb-7 spotlight">spotlight</div>
203
+ * Requires the spotlight tracker (packages/styles/scripts/spotlight.js).
204
+ */
205
+ @utility testgb-7 {
206
+ --inner-size: 120px;
207
+ background: radial-gradient(
208
+ circle var(--inner-size) at var(--x, 50%) var(--y, 50%),
209
+ color-mix(
210
+ in oklch,
211
+ oklch(70% 0.2 25deg) calc(var(--proximity, 0) * 100%),
212
+ transparent
213
+ ),
214
+ transparent
215
+ );
216
+ }
217
+
218
+ /* ─── Test 8: bezel spotlight — shiny rim, calm body ──────────────
219
+ *
220
+ * Real-world application of the spotlight pattern through `bezel`.
221
+ * Card body stays calm; the rim catches the light where the cursor is
222
+ * nearby — like a metal edge reflecting a passing torch.
223
+ *
224
+ * Layer breakdown:
225
+ * • Rim (outer-gradient on border-box): dim base color always present;
226
+ * brightens to a sharp glow at the cursor as --proximity → 1.
227
+ * • Body (inner-gradient on padding-box over --bg-color): subtle wash
228
+ * of the same hue, low alpha, smaller bloom — felt, not seen.
229
+ *
230
+ * --outer-size and --inner-size are kept equal: one spotlight, one reach.
231
+ * If the body sheen had a shorter reach than the rim, the rim would
232
+ * glow at distances no light has actually arrived at — breaks the
233
+ * single-light-source illusion. Tune intensity via color/alpha, not size.
234
+ *
235
+ * Mark up: <div class="testgb testgb-8 spotlight">spotlight</div>
236
+ */
237
+ @utility testgb-8 {
238
+ @apply bezel;
239
+ --border-width: 2px;
240
+ --radius: 0.75rem;
241
+ --bg-color: oklch(22% 0.02 250deg);
242
+ --outer-size: 119px;
243
+ --inner-size: 119px;
244
+ --outer-gradient: radial-gradient(
245
+ circle var(--outer-size) at var(--x, 50%) var(--y, 50%),
246
+ color-mix(
247
+ in oklch,
248
+ oklch(95% 0.22 230deg) calc(var(--proximity, 0) * 100%),
249
+ oklch(35% 0.04 250deg)
250
+ ),
251
+ oklch(35% 0.04 250deg)
252
+ );
253
+ --inner-gradient: radial-gradient(
254
+ circle var(--inner-size) at var(--x, 50%) var(--y, 50%),
255
+ color-mix(
256
+ in oklch,
257
+ oklch(72% 0.12 230deg / 32%) calc(var(--proximity, 0) * 100%),
258
+ transparent
259
+ ),
260
+ transparent
261
+ );
262
+ }
263
+
264
+ /* ─── Test 9: bezel spotlight — three-stop specular rim ───────────
265
+ *
266
+ * Same setup as Test 8, but the rim uses a three-stop gradient with a
267
+ * near-white "hot core" at the cursor before the chromatic glow takes
268
+ * over. Reads more like a polished edge catching a real highlight —
269
+ * specular instead of diffuse.
270
+ *
271
+ * Stop breakdown (cursor-active state):
272
+ * • 0% → near-white sparkle (oklch 98% / low chroma)
273
+ * • 40% → chromatic glow (oklch 95% 0.22)
274
+ * • 100% → dim rim base
275
+ *
276
+ * Each lit stop is color-mixed against the dim base by --proximity, so
277
+ * when the cursor is far the three stops collapse to the same base color
278
+ * (uniform-stops trick → solid dim rim, no hot core leaking through).
279
+ *
280
+ * Mark up: <div class="testgb testgb-9 spotlight">spotlight</div>
281
+ */
282
+ @utility testgb-9 {
283
+ @apply bezel;
284
+ --border-width: 2px;
285
+ --radius: 0.75rem;
286
+ --bg-color: oklch(22% 0.02 250deg);
287
+ --outer-size: 119px;
288
+ --inner-size: 119px;
289
+ --rim-base: oklch(35% 0.04 250deg);
290
+ --outer-gradient: radial-gradient(
291
+ circle var(--outer-size) at var(--x, 50%) var(--y, 50%) in oklab,
292
+ color-mix(
293
+ in oklab,
294
+ oklch(100% 0 0deg) calc(var(--proximity, 0) * 100%),
295
+ var(--rim-base)
296
+ )
297
+ 0%,
298
+ color-mix(
299
+ in oklab,
300
+ oklch(78% 0.2 245deg) calc(var(--proximity, 0) * 100%),
301
+ var(--rim-base)
302
+ )
303
+ 40%,
304
+ var(--rim-base) 100%
305
+ );
306
+ --inner-gradient: radial-gradient(
307
+ circle var(--inner-size) at var(--x, 50%) var(--y, 50%),
308
+ color-mix(
309
+ in oklch,
310
+ oklch(72% 0.12 230deg / 32%) calc(var(--proximity, 0) * 100%),
311
+ transparent
312
+ ),
313
+ transparent
314
+ );
315
+ }
316
+
317
+ /* ─── Test 10: bezel-frost — gradient rim around frosted glass ─────────
318
+ *
319
+ * Ring lives on ::before (mask-composite). The element itself carries
320
+ * backdrop-filter, so a translucent `background` lets blurred content
321
+ * from behind show through. Wrap in a stage with visible backdrop
322
+ * content so the blur actually has something to blur.
323
+ *
324
+ * Mark up:
325
+ * <div class="testgb-stage">
326
+ * <div class="testgb testgb-10">frost</div>
327
+ * </div>
328
+ */
329
+ @utility testgb-stage {
330
+ display: inline-block;
331
+ padding: 3rem;
332
+ background:
333
+ radial-gradient(
334
+ circle at 15% 25%,
335
+ oklch(72% 0.22 25deg) 0 70px,
336
+ transparent 72px
337
+ ),
338
+ radial-gradient(
339
+ circle at 82% 18%,
340
+ oklch(80% 0.18 140deg) 0 55px,
341
+ transparent 57px
342
+ ),
343
+ radial-gradient(
344
+ circle at 70% 78%,
345
+ oklch(70% 0.22 280deg) 0 80px,
346
+ transparent 82px
347
+ ),
348
+ radial-gradient(
349
+ circle at 22% 82%,
350
+ oklch(78% 0.2 60deg) 0 50px,
351
+ transparent 52px
352
+ ),
353
+ radial-gradient(
354
+ circle at 50% 50%,
355
+ oklch(85% 0.12 200deg) 0 40px,
356
+ transparent 42px
357
+ ),
358
+ oklch(95% 0.02 230deg);
359
+ }
360
+
361
+ @utility testgb-10 {
362
+ @apply bezel-frost;
363
+ --border-width: 2px;
364
+ --radius: 0.75rem;
365
+ --frost: 12px;
366
+ --outer-gradient: linear-gradient(
367
+ 135deg,
368
+ oklch(95% 0.2 230deg),
369
+ oklch(75% 0.22 320deg)
370
+ );
371
+ background: rgb(255 255 255 / 10%);
372
+ }
@@ -1,14 +1,13 @@
1
1
  @utility text-stroke {
2
- @supports (-webkit-text-stroke-width: 1px) {
3
- /* Need to adjust this font size?? */
4
-
5
- /* font-size: calc(1em - var(--stroke-width, 0.1em) / 2); */
6
- -webkit-text-stroke-width: var(--stroke-width, 0.1em);
7
- -webkit-text-stroke-color: var(--stroke-color);
8
- paint-order: stroke fill;
9
- }
2
+ font-size: calc(1em - var(--stroke-width, 0.1em) / 2);
3
+ color: currentcolor;
4
+ -webkit-text-fill-color: currentcolor;
5
+ -webkit-text-stroke-width: max(var(--stroke-width, 0.1em), 2px);
6
+ -webkit-text-stroke-color: var(--stroke-color);
7
+ paint-order: stroke fill;
10
8
  }
11
9
 
10
+ /* Deprecated */
12
11
  /* Sets color to background color and stroke to actual color you want for the stroke */
13
12
  @utility text-outline {
14
13
  color: var(--stroke-color); /* fallback */
@@ -19,41 +18,7 @@
19
18
  -webkit-text-stroke-color: var(--stroke-color);
20
19
 
21
20
  /* We cannot use currentcolor because current color is set to --bg-color. That's why we need a --stroke variable */
22
- -webkit-text-stroke-width: var(--stroke-width, 0.1em);
21
+ -webkit-text-stroke-width: max(var(--stroke-width, 0.1em), 2px);
23
22
  paint-order: stroke fill;
24
23
  }
25
24
  }
26
-
27
- @utility writing-normal {
28
- transition: none;
29
- writing-mode: horizontal-tb;
30
- }
31
-
32
- @utility writing-rotate-left {
33
- transform: rotate(180deg);
34
- transition: none;
35
- writing-mode: vertical-rl;
36
- text-orientation: sideways;
37
-
38
- /* // transform: scale( -1, -1 ); // This is the alternative if we don't want to use rotate (though I'm not sure if there is a specific reason why. */
39
- }
40
-
41
- @utility writing-rotate-right {
42
- transition: none;
43
- writing-mode: vertical-rl;
44
- text-orientation: sideways;
45
- }
46
-
47
- @utility writing-downwards {
48
- writing-mode: vertical-lr;
49
- text-orientation: upright;
50
- }
51
-
52
- @utility writing-downwards-lr {
53
- @apply writing-downwards;
54
- }
55
-
56
- @utility writing-downwards-rl {
57
- writing-mode: vertical-rl;
58
- text-orientation: upright;
59
- }
@@ -1,24 +1,24 @@
1
1
  /* prettier-ignore */
2
2
  @utility breakout-* {
3
- margin-inline: calc(var(--spacing) * --value(integer) * -1);
3
+ margin-inline: --spacing(--value(integer) * -1);
4
4
  margin-inline: calc(--value([length]) * -1);
5
5
  }
6
6
 
7
7
  /* prettier-ignore */
8
8
  @utility breakout-x-* {
9
- margin-inline: calc(var(--spacing) * --value(integer) * -1);
9
+ margin-inline: --spacing(--value(integer) * -1);
10
10
  margin-inline: calc(--value([length]) * -1);
11
11
  }
12
12
 
13
13
  /* prettier-ignore */
14
14
  @utility breakout-l-* {
15
- margin-inline-start: calc(var(--spacing) * --value(integer) * -1);
15
+ margin-inline-start: --spacing(--value(integer) * -1);
16
16
  margin-inline-start: calc(--value([length]) * -1);
17
17
  }
18
18
 
19
19
  /* prettier-ignore */
20
20
  @utility breakout-r-* {
21
- margin-inline-end: calc(var(--spacing) * --value(integer) * -1);
21
+ margin-inline-end: --spacing(--value(integer) * -1);
22
22
  margin-inline-end: calc(--value([length]) * -1);
23
23
  }
24
24
 
@@ -28,18 +28,18 @@
28
28
 
29
29
  /* prettier-ignore */
30
30
  @utility breakout-y-* {
31
- margin-block: calc(var(--spacing) * --value(integer) * -1);
31
+ margin-block: --spacing(--value(integer) * -1);
32
32
  margin-block: calc(--value([length]) * -1);
33
33
  }
34
34
 
35
35
  /* prettier-ignore */
36
36
  @utility breakout-t-* {
37
- margin-block-start: calc(var(--spacing) * --value(integer) * -1);
37
+ margin-block-start: --spacing(--value(integer) * -1);
38
38
  margin-block-start: calc(--value([length]) * -1);
39
39
  }
40
40
 
41
41
  /* prettier-ignore */
42
42
  @utility breakout-b-* {
43
- margin-block-end: calc(var(--spacing) * --value(integer) * -1);
43
+ margin-block-end: --spacing(--value(integer) * -1);
44
44
  margin-block-end: calc(--value([length]) * -1);
45
45
  }
@@ -3,18 +3,18 @@
3
3
  *********************/
4
4
  @utility im-* {
5
5
  & > * {
6
- margin: calc(var(--spacing) * --value(integer));
6
+ margin: --spacing(--value(integer));
7
7
  margin: calc(--value([length]));
8
8
  }
9
9
  }
10
10
 
11
11
  @utility im-x-* {
12
- margin-inline: calc(var(--spacing) * --value(integer));
12
+ margin-inline: --spacing(--value(integer));
13
13
  margin-inline: calc(--value([length]));
14
14
  }
15
15
 
16
16
  @utility im-y-* {
17
- margin-block: calc(var(--spacing) * --value(integer));
17
+ margin-block: --spacing(--value(integer));
18
18
  margin-block: calc(--value([length]));
19
19
  }
20
20
 
@@ -23,17 +23,17 @@
23
23
  *********************/
24
24
  @utility ip-* {
25
25
  & > * {
26
- padding: calc(var(--spacing) * --value(integer));
26
+ padding: --spacing(--value(integer));
27
27
  padding: calc(--value([length]));
28
28
  }
29
29
  }
30
30
 
31
31
  @utility ip-x-* {
32
- padding-inline: calc(var(--spacing) * --value(integer));
32
+ padding-inline: --spacing(--value(integer));
33
33
  padding-inline: calc(--value([length]));
34
34
  }
35
35
 
36
36
  @utility ip-y-* {
37
- padding-block: calc(var(--spacing) * --value(integer));
37
+ padding-block: --spacing(--value(integer));
38
38
  padding-block: calc(--value([length]));
39
39
  }
@@ -1,49 +1,72 @@
1
1
  @utility stack {
2
- & {
2
+ position: relative;
3
+ display: grid;
4
+ grid-template-columns: minmax(0, 1fr);
5
+ padding: 0;
6
+
7
+ &::before,
8
+ &::after,
9
+ > *,
10
+ > *:where(.contents) > *,
11
+ > *:where(astro-island, astro-slot) > * {
3
12
  position: relative;
4
- display: grid;
5
- grid-template-columns: minmax(0, 1fr);
6
- padding: 0;
7
-
8
- &::before,
9
- &::after,
10
- > *,
11
- > *:where(.contents) > *,
12
- > *:where(astro-island, astro-slot) > * {
13
- position: relative;
14
- z-index: 1;
15
- grid-column: 1 / span 1;
16
- grid-row: 1 / span 1;
17
- }
13
+ grid-column: 1 / span 1;
14
+ grid-row: 1 / span 1;
15
+ }
18
16
 
19
- > .background {
20
- overflow: hidden;
21
- position: absolute;
22
- inset: 0;
23
- }
17
+ > *,
18
+ > *:where(.contents) > *,
19
+ > *:where(astro-island, astro-slot) > * {
20
+ z-index: 1;
21
+ }
24
22
 
25
- > .foreground {
26
- position: relative;
27
- z-index: 10;
28
- }
23
+ > :where(.background) {
24
+ overflow: hidden;
25
+ position: absolute;
26
+ inset: 0;
27
+ }
28
+
29
+ > :where(.foreground) {
30
+ position: relative;
31
+ z-index: 10;
29
32
  }
30
33
  }
31
34
 
32
35
  @utility stack-interactive {
33
- & {
34
- @apply stack;
36
+ @apply stack;
35
37
 
36
- > .overlay {
37
- @apply pos-overlay;
38
- opacity: 0;
38
+ > *:where(.underlay) {
39
+ z-index: -1;
40
+ }
41
+
42
+ > *:where(.overlay) {
43
+ pointer-events: none;
44
+ z-index: 10;
45
+ }
46
+
47
+ > *:where(.underlay),
48
+ > *:where(.overlay) {
49
+ @apply pos-overlay;
50
+ opacity: 0;
51
+ transition: var(--transition-values);
52
+ transition-property: opacity;
53
+ }
54
+
55
+ > *:where(.fade-out) {
56
+ opacity: 1;
57
+ transition: var(--transition-values);
58
+ transition-property: opacity;
59
+ }
60
+
61
+ @variant interact-within {
62
+ > *:where(.underlay),
63
+ > *:where(.overlay) {
64
+ pointer-events: auto;
65
+ opacity: 1;
39
66
  }
40
67
 
41
- &:hover,
42
- &:focus-visible,
43
- &:focus-within {
44
- > .overlay {
45
- opacity: 1;
46
- }
68
+ > *:where(.fade-out) {
69
+ opacity: 0;
47
70
  }
48
71
  }
49
- }
72
+ }
@@ -75,17 +75,17 @@
75
75
  *********************/
76
76
  @utility nudge-* {
77
77
  --nudge: --value([*]);
78
- --nudge: calc(var(--spacing) * --value(integer));
78
+ --nudge: --spacing(--value());
79
79
  }
80
80
 
81
81
  @utility nudge-x-* {
82
82
  --nudge-x: --value([*]);
83
- --nudge-x: calc(var(--spacing) * --value(integer));
83
+ --nudge-x: --spacing(--value());
84
84
  }
85
85
 
86
86
  @utility nudge-y-* {
87
87
  --nudge-y: --value([*]);
88
- --nudge-y: calc(var(--spacing) * --value(integer));
88
+ --nudge-y: --spacing(--value());
89
89
  }
90
90
 
91
91
  @utility inner-radius {
@@ -106,13 +106,11 @@
106
106
  }
107
107
 
108
108
  @utility relative-pos-left {
109
- & {
110
- position: absolute;
111
- inset-block: 0;
112
- inset-inline-start: 0;
113
- height: fit-content;
114
- margin-block: auto;
115
- }
109
+ position: absolute;
110
+ inset-block: 0;
111
+ inset-inline-start: 0;
112
+ height: fit-content;
113
+ margin-block: auto;
116
114
  }
117
115
 
118
116
  @utility relative-pos-leftfull {
@@ -122,13 +120,11 @@
122
120
  }
123
121
 
124
122
  @utility relative-pos-right {
125
- & {
126
- position: absolute;
127
- inset-block: 0;
128
- inset-inline-end: 0;
129
- height: fit-content;
130
- margin-block: auto;
131
- }
123
+ position: absolute;
124
+ inset-block: 0;
125
+ inset-inline-end: 0;
126
+ height: fit-content;
127
+ margin-block: auto;
132
128
  }
133
129
 
134
130
  @utility relative-pos-rightfull {