@toheeb/base 1.7.2 → 2.0.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.
Files changed (3) hide show
  1. package/base.css +1281 -642
  2. package/license.md +163 -0
  3. package/package.json +3 -3
package/base.css CHANGED
@@ -1,902 +1,1541 @@
1
1
 
2
- /* UNIVERSAL
3
- ========================================================= */
2
+ /****************************************************
3
+ *
4
+ * __________________________________________________
5
+ *
6
+ 1.
7
+ On the root element, the entry point of the document, set options all descendants can inherit
8
+
9
+ a.
10
+ Use native properties for font family and font size options.
11
+
12
+ For font size, CSS has font relative units to create variations from the root or parent value.
13
+
14
+ For font family, it's useless to use custom property. Its value, a string value, can't create variations. Variation of font family would be by, if possible, using font variant alternatives.
15
+
16
+ b.
17
+ Use custom property for line height. This maintain unitless value while creating automatic variations for blocks.
18
+
19
+ c.
20
+ Use custom property for psueudo content to enable fallback trick for its native counterpart
21
+
22
+ d.
23
+ Use custom property for the others due to lack of native properties
24
+
25
+ 2.
26
+ Prevent adjustments of font size orientation changes in iOS
27
+
28
+ 3.
29
+ Remove padding, remove margin, and set box model to border box on all elements.
30
+
31
+ On all elements, remove padding and margin; then use box model of border box
32
+ *
33
+ *****************************************************/
34
+
4
35
 
5
36
  /* 1 */
6
37
  :root {
7
- --base-corner-radius: .2em;
8
- }
9
38
 
10
- *, ::before, ::after
11
- {
12
- /* 1 */
13
- border-radius: var(--base-corner-radius);
39
+ /* 1a */
40
+ font-family: system-ui, sans-serif;
41
+ font-size: 1rem;
42
+
43
+ /* 1b */
44
+ --line-height: 1.7;
45
+
46
+ /* 1c */
47
+ --content: initial;
48
+
49
+ /* 1d */
50
+ --line-length: 36rem;
51
+ --line-lead: calc((1lh - 1ex) * .5);
52
+ --font-scale: 1.2;
53
+ --color-hue: 120;
54
+ --lh-pad: .25em;
55
+ --border-width: 1;
56
+
57
+ --background-color: light-dark(
58
+ oklch(.99 0.0046 var(--color-hue)),
59
+ oklch(.2 .02 var(--color-hue))
60
+ );
61
+
62
+ --foreground-color: light-dark(
63
+ oklch(.2 .0246 var(--color-hue)),
64
+ oklch(.8 .0046 var(--color-hue))
65
+ );
66
+
67
+ --border-color: light-dark(
68
+ color-mix(in srgb, currentColor 10%, transparent 100%),
69
+ color-mix(in srgb, currentColor 20%, transparent 100%)
70
+ );
14
71
 
15
72
  /* 2 */
73
+ -webkit-text-size-adjust: 100%;
74
+ }
75
+
76
+ /* 3 */
77
+ *
78
+ {
79
+ margin: 0;
80
+ padding: 0;
16
81
  box-sizing: border-box;
82
+ color: inherit;
83
+ font: inherit;
17
84
  }
18
85
 
19
- ::picker(select) {
20
- /* 1 */
21
- border-radius: var(--base-corner-radius);
86
+
87
+
88
+ /****************************************************
89
+ * Font Size
90
+ * __________________________________________________
91
+ *
92
+ On each block, in order of preheadings, paragraphs and titles, postheadings, heading level 6 to 1, apply a font size, progressively.
93
+
94
+ Use em units to allow containers bump up or down font sizes independent of another container.
95
+
96
+ Like the paragraphs, the main content blocks, html, the root container, uses the same font size to set font size on other containers for their psuedo elements — out-of-block contents. [a]
97
+ *
98
+ *****************************************************/
99
+
100
+ hgroup > p:has(~ :is(h1, h2, h3, h4, h5, h6))
101
+ {
102
+ font-size: calc(pow(var(--font-scale), -1) * 1em);
22
103
  }
23
104
 
105
+ p, pre,
106
+ dt, th, legend, summary,
24
107
 
108
+ /* a */
109
+ html
110
+ {
111
+ font-size: calc(pow(var(--font-scale), 0) * 1em);
112
+ }
25
113
 
26
- /* TYPOGRAPHY
27
- ========================================================= */
114
+ hgroup > :is(h1, h2, h3, h4, h5, h6) ~ p
115
+ {
116
+ font-size: calc(pow(var(--font-scale), 1) * 1em);
117
+ }
28
118
 
29
- :root {
119
+ h6
120
+ {
121
+ font-size: calc(pow(var(--font-scale), 2) * 1em);
122
+ }
30
123
 
31
- /* 1 */
32
- --base-font-size: 1;
33
- --base-font-scale: 1.2;
34
- --base-line-height: .7;
35
- --base-font-family: system-ui;
36
-
37
- /* 2 */
38
- --bfs-050: (var(--bfs-100) / (var(--base-font-scale) * var(--base-font-scale)));
39
- --bfs-075: (var(--bfs-100) / (var(--base-font-scale)));
40
- --bfs-100: (var(--base-font-size));
41
- --bfs-200: (var(--bfs-100) * var(--base-font-scale));
42
- --bfs-300: (var(--bfs-100) * var(--base-font-scale) * var(--base-font-scale));
43
- --bfs-400: (var(--bfs-100) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale));
44
- --bfs-500: (var(--bfs-100) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale));
45
- --bfs-600: (var(--bfs-100) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale));
46
- --bfs-700: (var(--bfs-100) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale));
47
- --bfs-800: (var(--bfs-100) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale));
48
- --bfs-900: (var(--bfs-100) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale) * var(--base-font-scale));
124
+ h5
125
+ {
126
+ font-size: calc(pow(var(--font-scale), 3) * 1em);
127
+ }
128
+
129
+ h4
130
+ {
131
+ font-size: calc(pow(var(--font-scale), 4) * 1em);
132
+ }
133
+
134
+ h3
135
+ {
136
+ font-size: calc(pow(var(--font-scale), 5) * 1em);
137
+ }
138
+
139
+ h2
140
+ {
141
+ font-size: calc(pow(var(--font-scale), 6) * 1em);
142
+ }
143
+
144
+ h1
145
+ {
146
+ font-size: calc(pow(var(--font-scale), 7) * 1em);
147
+ }
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+ /*******************************
156
+ * Line Height
157
+ * ------------------------------
158
+ *
159
+ 1.
160
+ Make body height a minimum of the viewport height
161
+ 2.
162
+ Apply relative line height on each block, progressively.
163
+
164
+ 3.
165
+ Create hierarchical vertical space on block-level elements
166
+
167
+ a.
168
+ Apply one unit of --line-lead on block-level media phrases, and paragraphs.
169
+
170
+ The absence of ascender space and descender space on those media creates a space hierarchy, lower hierarchy, to that of paragraphs.
171
+
172
+ If paragraphs start or end with block-level media, a double of units, at respective end, balance such paragraphs with those that do not have such media.
173
+
174
+ Remove line height padding when there's a trailing block-level media
175
+
176
+ b.
177
+ Increase the unit by one each on heading level 6 to 1.
178
+
179
+ *
180
+ ********************************/
181
+
182
+ /* 1 */
183
+ body
184
+ {
185
+ min-height: 100svh;
186
+ }
187
+
188
+
189
+ /* 2 */
190
+
191
+ h1
192
+ {
193
+ line-height: calc(1 + ((var(--line-height) - 1) / pow(var(--font-scale), 7)));
194
+ }
195
+
196
+ h2
197
+ {
198
+ line-height: calc(1 + ((var(--line-height) - 1) / pow(var(--font-scale), 6)));
199
+ }
200
+
201
+ h3
202
+ {
203
+ line-height: calc(1 + ((var(--line-height) - 1) / pow(var(--font-scale), 5)));
204
+ }
205
+
206
+ h4
207
+ {
208
+ line-height: calc(1 + ((var(--line-height) - 1) / pow(var(--font-scale), 4)));
209
+ }
210
+
211
+ h5
212
+ {
213
+ line-height: calc(1 + ((var(--line-height) - 1) / pow(var(--font-scale), 3)));
214
+ }
215
+
216
+ h6
217
+ {
218
+ line-height: calc(1 + ((var(--line-height) - 1) / pow(var(--font-scale), 2)));
219
+ }
220
+
221
+ hgroup > :is(h1, h2, h3, h4, h5, h6) ~ p
222
+ {
223
+ line-height: calc(1 + ((var(--line-height) - 1) / pow(var(--font-scale), 1)));
49
224
  }
50
225
 
226
+ p, pre,
227
+ dt, th, legend, summary,
228
+
229
+ html
230
+ {
231
+ line-height: calc(1 + ((var(--line-height) - 1) / pow(var(--font-scale), 0)));
232
+ }
233
+
234
+ hgroup > p:has(~ :is(h1, h2, h3, h4, h5, h6))
235
+ {
236
+ line-height: calc(1 + ((var(--line-height) - 1) / pow(var(--font-scale), -1)));
237
+ }
238
+
239
+
51
240
  /* 3a */
52
- p:has(~ :is(h1, h2, h3, h4, h5, h6)),
53
- small, ::marker
241
+
242
+ video,
243
+ audio,
244
+ iframe,
245
+ object,
246
+ svg:not([height='16']),
247
+ img:not([height='16']),
248
+
249
+ p,
250
+ pre
54
251
  {
55
- --bfs: var(--bfs-075);
252
+ margin-block: var(--line-lead);
56
253
  }
57
254
 
255
+
58
256
  /* 3b */
59
- body,
60
- p, pre,
61
- summary, legend, dt, th
257
+
258
+ :is(p, pre):has(> span:first-child):has(> span:first-child > :is(audio, video, iframe, object, svg:not([height='16']), img:not([height="16"])):only-child)
62
259
  {
63
- --bfs: var(--bfs-100);
260
+ margin-block-start: calc(2 * var(--line-lead));
64
261
  }
65
262
 
66
- /* 3c */
67
- hgroup :is(h1, h2, h3, h4, h5, h6) ~ p
263
+ :is(p, pre):has(> span:last-child):has(> span:last-child > :is(audio, video, iframe, object, svg:not([height='16']), img:not([height="16"])):only-child)
68
264
  {
69
- --bfs: var(--bfs-200);
265
+ margin-block-end: calc(2 * var(--line-lead));
266
+
267
+ /* 4c */
268
+ padding-block-end: 0;
70
269
  }
71
270
 
72
271
 
73
272
  /* 3d */
74
273
 
75
- h6 {
76
- --bfs: var(--bfs-300);
274
+ :is(section, article):has(> hgroup > h6) {
275
+ padding-block-start: calc(2 * var(--line-lead));
77
276
  }
78
277
 
79
- h5 {
80
- --bfs: var(--bfs-400);
278
+ :is(section, article):has(> hgroup > h5) {
279
+ padding-block-start: calc(3 * var(--line-lead));
81
280
  }
82
281
 
83
- h4 {
84
- --bfs: var(--bfs-500);
282
+ :is(section, article):has(> hgroup > h4) {
283
+ padding-block-start: calc(4 * var(--line-lead));
284
+ }
285
+
286
+ :is(section, article):has(> hgroup > h3) {
287
+ padding-block-start: calc(5 * var(--line-lead));
85
288
  }
86
289
 
87
- h3 {
88
- --bfs: var(--bfs-600);
290
+ :is(section, article):has(> hgroup > h2) {
291
+ padding-block-start: calc(6 * var(--line-lead));
89
292
  }
90
293
 
91
- h2 {
92
- --bfs: var(--bfs-700);
294
+ :is(section, article):has(> hgroup > h1) {
295
+ padding-block-start: calc(7 * var(--line-lead));
296
+ }
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+ /*******************************************
308
+ * Line Length
309
+ *__________________________________________
310
+ *
311
+ Cap components progressively:
312
+
313
+ 1.
314
+ Cap landmark at one and a half of the line length, for aesthetics.
315
+ 2.
316
+ Cap segments at the line length with an extension of 3 of --line-leads at each ends. The extension makes segment icons seems for the segment than for the neighbouring block or mix
317
+ 3.
318
+ Cap mixes and blocks at the line length to allow for multi-column within segments or landmarks.
319
+ 4.
320
+ Cap paragraph separators at one-fourth of the line length
321
+
322
+ 0a.
323
+ Prevent content from touching the inline ends of containers for dimensional content.
324
+
325
+ *
326
+ ********************************************/
327
+
328
+
329
+ /* 1 */
330
+ *:has(~ main), main, main ~ *
331
+ {
332
+ width: 100%;
333
+ max-width: calc(1.5 * var(--line-length));
334
+ margin-inline: auto;
335
+ border-inline: calc(var(--border-width) * 1px) solid var(--border-color);
93
336
  }
94
337
 
95
- h1 {
96
- --bfs: var(--bfs-800);
338
+ /* 2 */
339
+ section:has(> hgroup) > *:not(:is(section:has(> hgroup), hgroup))
340
+ {
341
+ width: 100%;
342
+ max-width: calc((6 * var(--line-lead)) + var(--line-length));
343
+ margin-inline: auto;
97
344
  }
98
345
 
99
- /* 4 */
346
+
347
+ /* 3 */
348
+ p,
349
+ pre,
350
+ th,
351
+
352
+ ol,
353
+ ul,
354
+ dl,
355
+ menu,
356
+
357
+
358
+ hgroup,
359
+
360
+ figure,
361
+ figure,
362
+ address,
363
+ details,
364
+ fieldset,
365
+ blockquote,
366
+ a:has(:is(p, pre)),
367
+ del:has(:is(p, pre)),
368
+ ins:has(:is(p, pre)),
369
+ map:has(:is(p, pre)),
370
+ object:has(:is(p, pre, h1, h2, h3, h4, h5, h6, summary, legend, dt, th)) > div:only-child
371
+ {
372
+ width: 100%;
373
+ max-width: var(--line-length);
374
+ margin-inline: auto;
375
+ }
376
+
377
+
378
+ /* 5 */
379
+ hr
380
+ {
381
+ width: 100%;
382
+ max-width: calc(.25 * var(--line-length));
383
+ margin-inline: auto;
384
+ }
385
+
386
+
387
+ /* 0a */
388
+ td,
389
+ th,
390
+ caption,
391
+ *:has(~ main), main, main ~ *
392
+ {
393
+ padding-inline: calc(3ch * var(--border-width) / var(--border-width));
394
+ }
395
+
396
+
397
+
398
+
399
+
400
+ /*******************************
401
+ * COLOR
402
+ * ______________________________
403
+ *
404
+ Set and apply foreground and background color for content via their windows.
405
+ *
406
+ ********************************/
407
+
100
408
  body,
101
- h1, h2, h3, h4, h5, h6,
102
- summary, legend, dt, th,
409
+ dialog
410
+ {
411
+ background-color: var(--background-color);
412
+ color: var(--foreground-color);
413
+ }
414
+
415
+
416
+
417
+
418
+
419
+
420
+
421
+
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+ /*****************************************
431
+ * BLOCKS
432
+ * ---------------------------------------
433
+ *
434
+ 1.
435
+ Balance decender and ascender space on every block.
436
+ 2.
437
+ Bolden headings and titles as per leads
438
+ 3.
439
+ Revert paragraphs cum preheadings to inline-level
440
+ 4.
441
+ Create a tier system on sections. Let independent sections use bold tiers.[a]
442
+ 5.
443
+ Prevent fieldset's title from touching the fieldset's border
444
+ 6.
445
+ Change cursor on hovering details' title.[a] and hang its marker to signal the title's follower.[b]
446
+ 7.
447
+ Maintain preformatted paragraphs
448
+ 8.
449
+ Style paragraph separators
450
+ 9.
451
+ Partition windows and sections using border
452
+
453
+ Use border-block-start because of sections have their differentiating block side is at start.[a]
454
+
455
+ Since these are demarcations, the border start on the first child must be nullified.[b]
456
+
457
+ With the presence of a border, paddings breathe space around the demarcation.[c] But, no need for paddings on subsections (not sub segments) because they addup to the last segment.[d]
458
+
459
+ 10.
460
+ Label parts (and mixes) with icons.
461
+
462
+ After stopping icons from disrupting block spacing,[a] reposition them into the margin area,[b] then stick them to the viewport.[c] The sticky position of icons for mixes should be below that of windows.[d]
463
+
464
+ Each component should have unique icons.[e]
465
+
466
+ *
467
+ ******************************************/
468
+
469
+ /* 1 */
103
470
  p, pre,
104
- small, ::marker
471
+ summary, legend, dt, th,
472
+ h1, h2, h3, h4, h5, h6 {
473
+ padding-block-end: var(--lh-pad);
474
+ }
475
+
476
+ /* 2 */
477
+ h1, h2, h3, h4, h5, h6,
478
+ summary, legend, dt, th
479
+ {
480
+ font-weight: 700;
481
+ }
482
+
483
+ /* 3 */
484
+ hgroup p:has(~ :is(h1, h2, h3, h4, h5, h6)) {
485
+ width: auto;
486
+ display: inline-block;
487
+ margin: 0 calc(3ch * var(--border-width) / var(--border-width)) 0 0;
488
+ }
489
+
490
+
491
+ /* 4 */
492
+
493
+ main
494
+ {
495
+ counter-reset: h1;
496
+ }
497
+
498
+ main > section:has(h1)
499
+ {
500
+ counter-reset: h2;
501
+ }
502
+
503
+ :where(main > section:has(h1))::before
504
+ {
505
+ content: var(--content, counter(h1, decimal-leading-zero) "." / "");
506
+ counter-increment: h1;
507
+ background-color: var(--background-color);
508
+ display: block;
509
+ }
510
+
511
+
512
+ main > section > :is(section, article):has(> hgroup > h2)
513
+ {
514
+ counter-reset: h3;
515
+ }
516
+
517
+ :where(main > section > :is(section, article):has(> hgroup > h2))::before
518
+ {
519
+ content: var(--content, counter(h2, decimal-leading-zero) "." / "");
520
+
521
+ counter-increment: h2;
522
+ padding-inline-start: 3ch;
523
+ background-image:
524
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch)
525
+ ;
526
+ background-size: 3ch 1px;
527
+ background-position: 0 90%;
528
+ }
529
+
530
+
531
+ main > section > :is(section, article) > :is(section, article):has(> hgroup > h3)
532
+ {
533
+ counter-reset: h4;
534
+ }
535
+
536
+ :where(main > section > :is(section, article) > :is(section, article):has(> hgroup > h3))::before
537
+ {
538
+ content: var(--content, counter(h3, decimal-leading-zero) "." / "");
539
+
540
+ counter-increment: h3;
541
+ padding-inline-start: 6ch;
542
+ box-sizing: border-box;
543
+ background-image:
544
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
545
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch)
546
+ ;
547
+ background-size: 3ch 1px, 3ch 1px;
548
+ background-position: 0 90%, 3ch 90%;
549
+ }
550
+
551
+
552
+ main > section > :is(section, article) > :is(section, article) > :is(section, article):has(> hgroup > h4)
553
+ {
554
+ counter-reset: h5;
555
+ }
556
+
557
+ :where(main > section > :is(section, article) > :is(section, article) > :is(section, article):has(> hgroup > h4))::before
558
+ {
559
+ content: var(--content, counter(h4, decimal-leading-zero) "." / "");
560
+
561
+ counter-increment: h4;
562
+ padding-inline-start: 9ch;
563
+ background-image:
564
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
565
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
566
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch)
567
+ ;
568
+ background-size: 3ch 1px, 3ch 1px, 3ch 1px;
569
+ background-position: 0 90%, 3ch 90%, 6ch 90%;
570
+
571
+ }
572
+
573
+
574
+ main > section > :is(section, article) > :is(section, article) > :is(section, article) > :is(section, article):has(> hgroup > h5)
575
+ {
576
+ counter-reset: h6;
577
+ }
578
+
579
+ :where(main > section > :is(section, article) > :is(section, article) > :is(section, article) > :is(section, article):has(> hgroup > h5))::before
580
+ {
581
+ content: var(--content, counter(h5, decimal-leading-zero) "." / "");
582
+
583
+ counter-increment: h5;
584
+ padding-inline-start: 12ch;
585
+ background-image:
586
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
587
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
588
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
589
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch)
590
+ ;
591
+ background-size: 3ch 1px, 3ch 1px, 3ch 1px, 3ch 1px;
592
+ background-position: 0 90%, 3ch 90%, 6ch 90%, 9ch 90%;
593
+ }
594
+
595
+
596
+ main > section > :is(section, article) > :is(section, article) > :is(section, article) > :is(section, article) > :is(section, article):has(> hgroup > h6)
597
+ {
598
+ counter-reset: h7;
599
+ }
600
+
601
+ :where(main > section > :is(section, article) > :is(section, article) > :is(section, article) > :is(section, article) > :is(section, article):has(> hgroup > h6))::before
602
+ {
603
+ content: var(--content, counter(h6, decimal-leading-zero) "." / "");
604
+
605
+ counter-increment: h6;
606
+ padding-inline-start: 15ch;
607
+ background-image:
608
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
609
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
610
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
611
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch),
612
+ linear-gradient(to right, currentColor 0, currentColor 2ch, transparent 2ch, transparent 3ch)
613
+ ;
614
+ background-size: 3ch 1px, 3ch 1px, 3ch 1px, 3ch 1px, 3ch 1px;
615
+ background-position: 0 90%, 3ch 90%, 6ch 90%, 9ch 90%, 12ch 90%;
616
+ }
617
+
618
+
619
+ :is(section, article)::before
620
+ {
621
+ font-family: monospace;
622
+ font-size: .7em;
623
+ position: sticky;
624
+ top: 0;
625
+ background-repeat: no-repeat;
626
+ display: block;
627
+ z-index: 1;
628
+ }
629
+
630
+ /* 4a */
631
+ article::before {
632
+ font-weight: bold;
633
+ }
634
+
635
+
636
+ /* 5 */
637
+ legend
638
+ {
639
+ margin-inline: -.5ch 0;
640
+ padding-inline: .5ch;
641
+ }
642
+
643
+ /* 6 */
644
+ summary
645
+ {
646
+ /* 6a */
647
+ cursor: pointer;
648
+
649
+ /* 6b */
650
+ list-style-position: outside;
651
+ }
652
+
653
+ /* 7 */
654
+ pre
655
+ {
656
+ font-family: monospace;
657
+ overflow-x: auto;
658
+ }
659
+
660
+ /* 8 */
661
+ hr
662
+ {
663
+
664
+ height: 0;
665
+
666
+ border: none;
667
+ border-block-end: 1px solid;
668
+ border-color: color-mix(in srgb, currentColor 50%, transparent 100%);
669
+
670
+ margin-block: calc(2 * var(--line-lead));
671
+ }
672
+
673
+
674
+ /* 9 */
675
+
676
+ *:has(~ main), main, main ~ *,
677
+ :is(section, article):has(> hgroup) > *
678
+ {
679
+
680
+ /* 9a */
681
+ border-block-start:
682
+ calc(1px * var(--border-width))
683
+ solid
684
+ var(--border-color)
685
+ ;
686
+
687
+ /* 9c */
688
+ padding-block: calc(1 * var(--line-lead) * var(--border-width) / var(--border-width));
689
+ }
690
+
691
+ /* 9d */
692
+ :is(section, article):has(> hgroup)
693
+ {
694
+ padding-block: 0;
695
+ }
696
+
697
+ /* 9c */
698
+ :is(*:has(~ main), main, main ~ *):first-child,
699
+ :is(*:has(~ hgroup), hgroup, hgroup ~ *):first-child
105
700
  {
701
+ border-block-start: none;
702
+ }
703
+
106
704
 
107
- /* 4a */
108
- font-family: var(--base-font-family);
705
+ /* 10 */
706
+
707
+ :where(
708
+ nav,
709
+ form,
710
+ main,
711
+ aside,
712
+ header,
713
+ footer,
714
+ search,
715
+ article,
716
+
717
+ figure,
718
+ address,
719
+ blockquote,
720
+ a:has(:is(p, pre))[href],
721
+ del:has(:is(p, pre)),
722
+ ins:has(:is(p, pre)),
723
+ map:has(:is(p, pre)),
724
+ )::before
725
+ {
726
+ content: var(--content, "");
727
+
728
+ display: block;
729
+ font-size: .7em;
730
+ width: 1em;
731
+ height: 1em;
732
+ mask-size: cover;
733
+ mask-repeat: no-repeat;
734
+ background-color: currentColor;
735
+
736
+ /* 10a */
737
+ margin-top: -1em;
738
+
739
+ /* 10b */
740
+ transform: translate(-1.4em, 1em);
741
+
742
+ /* 10c */
743
+ position: sticky;
744
+
745
+ /* 10d */
746
+ top: 2.5em;
747
+ }
748
+
749
+ /* 10d */
750
+ :is(*:has(~ main), main, main ~ *)::before
751
+ {
752
+ top: 1em;
753
+ }
754
+
755
+
756
+ /* 10e */
757
+
758
+ main::before
759
+ {
760
+ mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-square%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M3%203m0%202a2%202%200%200%201%202%20-2h14a2%202%200%200%201%202%202v14a2%202%200%200%201%20-2%202h-14a2%202%200%200%201%20-2%20-2z%22%20%2F%3E%3C%2Fsvg%3E");
761
+ }
762
+
763
+ aside::before
764
+ {
765
+ mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-border-corner-square%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M4%2020v-15a1%201%200%200%201%201%20-1h15%22%20%2F%3E%3C%2Fsvg%3E");
766
+ }
767
+
768
+ header::before
769
+ {
770
+ mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-bell-ringing%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M10%205a2%202%200%200%201%204%200a7%207%200%200%201%204%206v3a4%204%200%200%200%202%203h-16a4%204%200%200%200%202%20-3v-3a7%207%200%200%201%204%20-6%22%20%2F%3E%3Cpath%20d%3D%22M9%2017v1a3%203%200%200%200%206%200v-1%22%20%2F%3E%3Cpath%20d%3D%22M21%206.727a11.05%2011.05%200%200%200%20-2.794%20-3.727%22%20%2F%3E%3Cpath%20d%3D%22M3%206.727a11.05%2011.05%200%200%201%202.792%20-3.727%22%20%2F%3E%3C%2Fsvg%3E");
771
+ }
772
+
773
+ footer::before
774
+ {
775
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItaW5mby10cmlhbmdsZSI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEwLjM2MyAzLjU5MWwtOC4xMDYgMTMuNTM0YTEuOTE0IDEuOTE0IDAgMCAwIDEuNjM2IDIuODcxaDE2LjIxNGExLjkxNCAxLjkxNCAwIDAgMCAxLjYzNiAtMi44N2wtOC4xMDYgLTEzLjUzNmExLjkxNCAxLjkxNCAwIDAgMCAtMy4yNzQgMHoiIC8+PHBhdGggZD0iTTEyIDloLjAxIiAvPjxwYXRoIGQ9Ik0xMSAxMmgxdjRoMSIgLz48L3N2Zz4=");
776
+ }
777
+
778
+ article::before
779
+ {
780
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItcGFnZS1icmVhayI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgc3Ryb2tlPSJub25lIi8+PHBhdGggZD0iTTE0IDN2NGExIDEgMCAwIDAgMSAxaDRtMCAxMHYxYTIgMiAwIDAgMS0yIDJIN2EyIDIgMCAwIDEtMi0ydi0xbS0yLTRoM200LjUgMGgzbTQuNSAwaDMiLz48cGF0aCBkPSJNNSAxMFY1YTIgMiAwIDAgMSAyLTJoN2w1IDV2MiIvPjwvc3ZnPg==");
781
+ }
782
+
783
+
784
+ map:has(:is(p, pre))::before
785
+ {
786
+ mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-photo%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M15%208h.01%22%20%2F%3E%3Cpath%20d%3D%22M3%206a3%203%200%200%201%203%20-3h12a3%203%200%200%201%203%203v12a3%203%200%200%201%20-3%203h-12a3%203%200%200%201%20-3%20-3v-12z%22%20%2F%3E%3Cpath%20d%3D%22M3%2016l5%20-5c.928%20-.893%202.072%20-.893%203%200l5%205%22%20%2F%3E%3Cpath%20d%3D%22M14%2014l1%20-1c.928%20-.893%202.072%20-.893%203%200l3%203%22%20%2F%3E%3C%2Fsvg%3E");
787
+ }
788
+
789
+ del:has(:is(p, pre))::before {
790
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItZmlsZS1taW51cyI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE0IDN2NGExIDEgMCAwIDAgMSAxaDQiIC8+PHBhdGggZD0iTTE3IDIxaC0xMGEyIDIgMCAwIDEgLTIgLTJ2LTE0YTIgMiAwIDAgMSAyIC0yaDdsNSA1djExYTIgMiAwIDAgMSAtMiAyeiIgLz48cGF0aCBkPSJNOSAxNGw2IDAiIC8+PC9zdmc+");
791
+ }
792
+
793
+ ins:has(:is(p, pre))::before
794
+ {
795
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItZmlsZS1wbHVzIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTQgM3Y0YTEgMSAwIDAgMCAxIDFoNCIgLz48cGF0aCBkPSJNMTcgMjFoLTEwYTIgMiAwIDAgMSAtMiAtMnYtMTRhMiAyIDAgMCAxIDIgLTJoN2w1IDV2MTFhMiAyIDAgMCAxIC0yIDJ6IiAvPjxwYXRoIGQ9Ik0xMiAxMWwwIDYiIC8+PHBhdGggZD0iTTkgMTRsNiAwIiAvPjwvc3ZnPg==");
796
+ }
797
+
798
+ nav::before
799
+ {
800
+ mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-location%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M21%203l-6.5%2018a.55%20.55%200%200%201%20-1%200l-3.5%20-7l-7%20-3.5a.55%20.55%200%200%201%200%20-1l18%20-6.5%22%20%2F%3E%3C%2Fsvg%3E");
801
+ }
802
+
803
+ address::before
804
+ {
805
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItYWRkcmVzcy1ib29rIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMjAgNnYxMmEyIDIgMCAwIDEgLTIgMmgtMTBhMiAyIDAgMCAxIC0yIC0ydi0xMmEyIDIgMCAwIDEgMiAtMmgxMGEyIDIgMCAwIDEgMiAyeiIgLz48cGF0aCBkPSJNMTAgMTZoNiIgLz48cGF0aCBkPSJNMTMgMTFtLTIgMGEyIDIgMCAxIDAgNCAwYTIgMiAwIDEgMCAtNCAwIiAvPjxwYXRoIGQ9Ik00IDhoMyIgLz48cGF0aCBkPSJNNCAxMmgzIiAvPjxwYXRoIGQ9Ik00IDE2aDMiIC8+PC9zdmc+");
806
+ }
807
+
808
+ figure::before
809
+ {
810
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItY2lyY2xlLWRvdHRlZC1sZXR0ZXItaSI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEyIDh2OCIgLz48cGF0aCBkPSJNNy41IDQuMjF2LjAxIiAvPjxwYXRoIGQ9Ik00LjIxIDcuNXYuMDEiIC8+PHBhdGggZD0iTTMgMTJ2LjAxIiAvPjxwYXRoIGQ9Ik00LjIxIDE2LjV2LjAxIiAvPjxwYXRoIGQ9Ik03LjUgMTkuNzl2LjAxIiAvPjxwYXRoIGQ9Ik0xMiAyMXYuMDEiIC8+PHBhdGggZD0iTTE2LjUgMTkuNzl2LjAxIiAvPjxwYXRoIGQ9Ik0xOS43OSAxNi41di4wMSIgLz48cGF0aCBkPSJNMjEgMTJ2LjAxIiAvPjxwYXRoIGQ9Ik0xOS43OSA3LjV2LjAxIiAvPjxwYXRoIGQ9Ik0xNi41IDQuMjF2LjAxIiAvPjxwYXRoIGQ9Ik0xMiAzdi4wMSIgLz48L3N2Zz4=");
811
+ }
109
812
 
110
- /* 4b */
111
- font-size: calc(var(--bfs) * 1rem);
813
+ blockquote::before {
814
+ mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-quotes%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M4%2012c-1.333%20-1.854%20-1.333%20-4.146%200%20-6%22%20%2F%3E%3Cpath%20d%3D%22M8%2012c-1.333%20-1.854%20-1.333%20-4.146%200%20-6%22%20%2F%3E%3Cpath%20d%3D%22M16%2018c1.333%20-1.854%201.333%20-4.146%200%20-6%22%20%2F%3E%3Cpath%20d%3D%22M20%2018c1.333%20-1.854%201.333%20-4.146%200%20-6%22%20%2F%3E%3C%2Fsvg%3E");
815
+ }
112
816
 
113
- /* 4c */
114
- line-height: calc(
115
- 1 + (
116
- var(--base-line-height) / var(--bfs)
117
- )
118
- );
817
+ a:has(:is(p, pre))[href]::before
818
+ {
819
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItbGluayI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTkgMTVsNiAtNiIgLz48cGF0aCBkPSJNMTEgNmwuNDYzIC0uNTM2YTUgNSAwIDAgMSA3LjA3MSA3LjA3MmwtLjUzNCAuNDY0IiAvPjxwYXRoIGQ9Ik0xMyAxOGwtLjM5NyAuNTM0YTUuMDY4IDUuMDY4IDAgMCAxIC03LjEyNyAwYTQuOTcyIDQuOTcyIDAgMCAxIDAgLTcuMDcxbC41MjQgLS40NjMiIC8+PC9zdmc+");
119
820
  }
120
821
 
121
- /* 4b */
122
- select::picker-icon {
123
- --bfs: var(--bfs-075);
124
- font-size: calc(var(--bfs) * 1rem);
125
- /* line-height: 2.2em; */
126
- /* line-height: inherit */
127
- /* transform-origin: 50%; */
822
+ search::before {
823
+ mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-search%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M10%2010m-7%200a7%207%200%201%200%2014%200a7%207%200%201%200%20-14%200%22%20%2F%3E%3Cpath%20d%3D%22M21%2021l-6%20-6%22%20%2F%3E%3C%2Fsvg%3E");
128
824
  }
129
825
 
130
- /* 5 */
131
- p {
132
- text-wrap: pretty;
826
+ form::before {
827
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItY3JvcC0xNi05Ij48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNNCA4bTAgMmEyIDIgMCAwIDEgMiAtMmgxMmEyIDIgMCAwIDEgMiAydjRhMiAyIDAgMCAxIC0yIDJoLTEyYTIgMiAwIDAgMSAtMiAtMnoiIC8+PC9zdmc+");
133
828
  }
134
829
 
135
- /* 6 */
136
- h1, h2, h3, h4, h5, h6,
137
- hgroup :is(h1, h2, h3, h4, h5, h6) ~ p,
138
- summary, legend, dt, th
139
- {
140
- text-wrap: balance;
141
- }
142
830
 
143
831
 
144
832
 
145
833
 
146
- /* SPACING
147
- ========================================================= */
834
+ /*****************************************
835
+ * MIXES
836
+ * ---------------------------------------
837
+ *
838
+ 1.
839
+ Use border to mark boundaries of all mixes.
148
840
 
149
- /* 1 - 3 */
150
- :root {
841
+ With the presence of the border, add padding inline for space at line ends,[a] and margin block for space after border blocks; margin block of double --line-lead since border conceal ascender and descender space.[b] The margin block on paragraphs act as padding block for the mix.
151
842
 
152
- /* 1 */
153
- --base-mode-indent: 0;
154
- --base-block-gap: .9;
155
- --base-line-length: 36rem;
843
+ Redeclare: display of block to target transparent mixes;[c] text decoration of none for del and ins elements;[d] and color for anchor elements.[e]
156
844
 
157
- /* 2 */
158
- --bbg: calc(1rem * var(--base-block-gap) * var(--base-line-height) * var(--base-font-size));
845
+ For any second mix in a row, 2 bordered components, except fieldset whose title is not is not bordered, the margin top, for separation, is a triple --line-lead.[1d]
159
846
 
160
- /* 3 */
161
- --bbg-100: calc( (1 - var(--base-mode-indent)) * var(--bbg));
162
- --bbg-200: calc( (2 - var(--base-mode-indent)) * var(--bbg));
163
- --bbg-300: calc( (3 - var(--base-mode-indent)) * var(--bbg));
164
- --bbg-400: calc( (4 - var(--base-mode-indent)) * var(--bbg));
165
- --bbg-500: calc( (5 - var(--base-mode-indent)) * var(--bbg));
166
- --bbg-600: calc( (6 - var(--base-mode-indent)) * var(--bbg));
167
- --bbg-700: calc( (7 - var(--base-mode-indent)) * var(--bbg));
168
- --bbg-800: calc( (8 - var(--base-mode-indent)) * var(--bbg));
169
- --bbg-900: calc( (9 - var(--base-mode-indent)) * var(--bbg));
170
- }
847
+ When a second mix in a row is a fieldset, the initial margin top on all mix is valid, but it reduces to a single --line-lead if after paragraphs.[1e]
171
848
 
172
- /* 4 */
173
- h1, h2, h3, h4, h5, h6
174
- {
175
- /* where .15em is synonymous to line height offset */
176
- padding-block: 0 .15em;
177
- }
849
+ Pad top of dl to keep items away.[1f]
178
850
 
179
- /* 5a */
180
- p:has(~ :is(h1, h2, h3, h4, h5, h6)) {
181
- margin-block: 0 calc(.25 * var(--bbg));
182
- }
851
+ 2.
852
+ Position icons of mixes in the margin area of the card's parent, right under that of segments which is under that of landmarks.
183
853
 
184
- /* 5b */
185
- dt,
186
- hgroup :is(h1, h2, h3, h4, h5, h6) ~ p {
187
- margin-block: calc(.50 * var(--bbg));
188
- }
854
+ 3.
855
+ Partition cards
189
856
 
190
- /* 5c */
191
- p, pre {
192
- margin-block: var(--bbg-100);
193
- }
857
+ a.
858
+ Separate caption from content in a figure.
859
+ b.
860
+ Separate title from content in a fieldset or details.
861
+ c.
862
+ Separate multiple titles and descriptions, respectively, in items of description layers
863
+ d.
864
+ Separate caption, heads, bodies, foots, and cells in a table layer.
194
865
 
866
+ 4.
867
+ Style list layers
195
868
 
196
- /* on mixes, enforce space irrespective of indent mode */
869
+ a.
870
+ Provide space to accomodate 3 digit markers
871
+ b.
872
+ Apply: decimal-leading zero to ol, square to menu, disc to ul, circle to dl.
873
+ c.
874
+ Make marker size smaller to content size
875
+
876
+ *
877
+ ******************************************/
197
878
 
198
- ol, ul, dl
879
+ /* 1 */
880
+ ul,
881
+ ol,
882
+ dl,
883
+ menu,
884
+ figure,
885
+ dialog,
886
+ address,
887
+ details,
888
+ fieldset,
889
+ blockquote,
890
+ a:has(:is(p, pre)),
891
+ del:has(:is(p, pre)),
892
+ ins:has(:is(p, pre)),
893
+ map:has(:is(p, pre))
199
894
  {
200
- margin-block: var(--bbg);
895
+ border:
896
+ calc(1px * var(--border-width))
897
+ solid
898
+ var(--border-color)
899
+ ;
900
+
901
+ /* 1a */
902
+ padding-inline: calc(2 * var(--line-lead) * var(--border-width) / var(--border-width));
903
+
904
+ /* 1b */
905
+ margin-block: calc(2 * var(--line-lead));
906
+
907
+ /* 1c */
908
+ display: block;
909
+
910
+ /* 1d */
911
+ text-decoration: none;
201
912
  }
202
913
 
203
- dd {
204
- margin: 0;
914
+ dialog {
915
+ margin: auto;
205
916
  }
206
917
 
207
- table,
208
- iframe, object, embed, video, audio, img,
209
- blockquote, fieldset, address, figure,
210
- del:has(p, pre, details, fieldset, table, dl),
211
- ins:has(p, pre, details, fieldset, table, dl),
212
- :where(a[href]:has(p, pre, details, fieldset, table, dl))
213
- {
214
- /*
215
- * add .5 to 1 to compensate for
216
- * loss of ascender and descender space
217
- * prior to border
218
- */
219
- margin-block: calc(1.5 * var(--bbg));
918
+ dialog::backdrop {
919
+ background-color: color-mix(in srgb, currentColor 20%, transparent 100%);
920
+ backdrop-filter: blur(1em);
220
921
  }
221
922
 
923
+
924
+ /* 1d */
222
925
  :is(
926
+ ul,
927
+ ol,
928
+ dl,
929
+ menu,
223
930
  table,
224
- blockquote, fieldset, address, figure,
225
- del:has(p, pre, details, fieldset, table, dl),
226
- ins:has(p, pre, details, fieldset, table, dl),
227
- :where(a[href]:has(p, pre, details, fieldset, table, dl))
228
- ) +
931
+ figure,
932
+ address,
933
+ details,
934
+ fieldset,
935
+ blockquote,
936
+ a:has(:is(p, pre)),
937
+ del:has(:is(p, pre)),
938
+ ins:has(:is(p, pre)),
939
+ map:has(:is(p, pre)),
940
+ ) +
229
941
  :is(
942
+ ul,
943
+ ol,
944
+ dl,
945
+ menu,
230
946
  table,
231
- blockquote, fieldset, address, figure,
232
- del:has(p, pre, details, fieldset, table, dl),
233
- ins:has(p, pre, details, fieldset, table, dl),
234
- :where(a[href]:has(p, pre, details, fieldset, table, dl))
947
+ figure,
948
+ address,
949
+ details,
950
+ blockquote,
951
+ a:has(:is(p, pre)),
952
+ del:has(:is(p, pre)),
953
+ ins:has(:is(p, pre)),
954
+ map:has(:is(p, pre)),
235
955
  )
236
956
  {
237
- /*
238
- * add .5 again to start to compensate for
239
- * loss of descender space at end of previous element
240
- * due to border to border
241
- */
242
- margin-block-start: calc(2 * var(--bbg));
957
+ margin-block-start: calc(3 * var(--line-lead));
243
958
  }
244
959
 
245
- /* 5d */
246
- summary, legend, th
960
+ /* 1f */
961
+ :is(p, pre) + fieldset:has(> legend)
247
962
  {
248
- margin-block: calc(1.5* var(--bbg-100)) var(--bbg-100);
963
+ margin-block-start: calc(1 * var(--line-lead));
249
964
  }
250
965
 
251
-
252
- /* 5e */
253
-
254
- header,
255
- :where(figcaption:first-child)
966
+ /* 1g */
967
+ dl
256
968
  {
257
- padding: 0 0 var(--bbg);
969
+ padding-block-start: var(--line-lead);
258
970
  }
259
971
 
260
- header + *,
261
- :where(figcaption:first-child + *)
972
+ /* 2 */
973
+ :is(
974
+ figure,
975
+ address,
976
+ blockquote,
977
+ a:has(:is(p, pre)),
978
+ del:has(:is(p, pre)),
979
+ ins:has(:is(p, pre)),
980
+ map:has(:is(p, pre)),
981
+ )::before
262
982
  {
263
- margin-block-start: var(--bbg-200);
983
+ transform: translate(-3.2em, 1em);
984
+ top: 4em;
264
985
  }
265
986
 
266
- footer,
267
- :where(figcaption:last-child)
268
- {
269
- padding: var(--bbg) 0 0;
270
- margin-block-start: var(--bbg-200);
271
- }
272
987
 
273
- hgroup + * {
274
- margin-block-start: var(--bbg-200);
275
- }
988
+ /* 3a */
276
989
 
277
- hr {
278
- margin-block: var(--bbg-200);
990
+ figcaption:first-child
991
+ {
992
+ border-block-end: 1px solid var(--border-color);
279
993
  }
280
994
 
281
-
282
- /* 5f */
283
-
284
- /* redirect margin to sections */
285
- h1, h2, h3, h4, h5, h6 {
286
- margin-block: 0;
995
+ figcaption:last-child
996
+ {
997
+ border-block-start: 1px solid var(--border-color);
287
998
  }
288
999
 
289
1000
 
290
- /* Landmarks */
291
- :where(body > div > *) {
292
- margin: var(--bbg-300) 0;
293
- }
1001
+ /* 3b */
1002
+ legend,
1003
+ details[open] > summary
1004
+ {
1005
+ border-block-end:
1006
+ calc(1px * var(--border-width))
1007
+ solid
1008
+ var(--border-color)
1009
+ ;
1010
+ }
294
1011
 
295
- /* sections */
296
1012
 
297
- :where(main section) {
298
- margin-block: var(--bbg-800);
299
- }
1013
+ /* 3c */
300
1014
 
301
- :where(
302
- main
303
- section
304
- :is(section, article, nav, aside)
305
- ) {
306
- margin-block: var(--bbg-700) 0;
1015
+ dt:not(:last-of-type)
1016
+ {
1017
+ background-image:
1018
+ linear-gradient(to right, var(--border-color) 0, var(--border-color) 2ch, transparent 2ch, transparent 3ch)
1019
+ ;
1020
+ background-size: 1ch 1px;
1021
+ background-position: left bottom;
1022
+ background-repeat: no-repeat;
307
1023
  }
308
1024
 
309
- :where(
310
- main
311
- section
312
- :is(section, article, nav, aside)
313
- :is(section, article, nav, aside)
314
- ) {
315
- margin-block: var(--bbg-600) 0;
1025
+ dd
1026
+ {
1027
+ border-block-start: calc(1px * var(--border-width)) solid var(--border-color);
1028
+ margin-block-start: calc(1 * var(--line-lead) * var(--border-width) / var(--border-width));
316
1029
  }
317
1030
 
318
- :where(
319
- main
320
- section
321
- :is(section, article, nav, aside)
322
- :is(section, article, nav, aside)
323
- :is(section, article, nav, aside)
324
- ) {
325
- margin-block: var(--bbg-500) 0;
326
- }
327
1031
 
328
- :where(
329
- main
330
- section
331
- :is(section, article, nav, aside)
332
- :is(section, article, nav, aside)
333
- :is(section, article, nav, aside)
334
- :is(section, article, nav, aside)
335
- ) {
336
- margin-block: var(--bbg-400) 0;
337
- }
1032
+ /* 3d */
338
1033
 
339
- :where(
340
- main
341
- section
342
- :is(section, article, nav, aside)
343
- :is(section, article, nav, aside)
344
- :is(section, article, nav, aside)
345
- :is(section, article, nav, aside)
346
- :is(section, article, nav, aside)
347
- ) {
348
- margin-block: var(--bbg-300) 0;
1034
+ table
1035
+ {
1036
+ border-collapse: collapse;
1037
+ width: 100%;
1038
+ display: block;
1039
+ overflow: auto;
1040
+ margin-block: calc(2 * var(--line-lead));
349
1041
  }
350
1042
 
351
-
352
- /* 6 */
353
- p + p {
354
- text-indent: calc(var(--base-mode-indent) * 1em);
1043
+ caption
1044
+ {
1045
+ display: block;
1046
+ border: 1px solid var(--border-color);
1047
+ text-align: start;
1048
+ position: sticky;
1049
+ left: 0;
355
1050
  }
356
1051
 
357
- :is(hgroup, form, search, fieldset) p + p {
358
- text-indent: 0;
1052
+ thead
1053
+ {
1054
+ border-block-end: calc(var(--border-width) * 2px) solid var(--border-color);
359
1055
  }
360
1056
 
361
- /**
362
- * 7
363
- *
364
- * hgroup to contain kickers
365
- * bordered cards to shift inline borders to content
366
- * list layers to contain their markers
367
- */
368
- hgroup,
369
- h1, h2, h3, h4, h5, h6,
370
- summary, legend, th, dt,
371
- p, pre,
372
- blockquote, fieldset, address, figure,
373
- del:has(p, pre, details, fieldset, table, dl),
374
- ins:has(p, pre, details, fieldset, table, dl),
375
- :where(a[href]:has(p, pre, details, fieldset, table, dl)),
376
- ol, ul, dl
1057
+ tfoot
377
1058
  {
378
- margin-inline: auto;
379
- max-width: var(--base-line-length);
1059
+ border-block-start: calc(var(--border-width) * 2px) solid var(--border-color);
380
1060
  }
381
1061
 
382
- /* 8 */
383
- iframe, object, embed, video, audio, img
1062
+ th, td
384
1063
  {
385
- display: block;
386
- margin-inline: auto;
387
- max-width: 100%;
1064
+ border: calc(var(--border-width) * 1px) solid var(--border-color);
388
1065
  }
389
1066
 
390
- /* 9 */
391
- table {
392
- margin-inline: auto;
1067
+ th
1068
+ {
1069
+ padding-block: calc(1 * var(--line-lead)) calc((1 * var(--line-lead)) + var(--lh-pad));
393
1070
  }
394
1071
 
395
-
396
- /* 10 */
397
- svg, math {
398
- vertical-align: middle;
399
- }
400
-
401
- /* 11 */
402
- ol, ul, dl
1072
+ td
403
1073
  {
404
- padding-inline-start: 2em;
405
- }
406
-
407
- /* 12 */
408
- /* redirect margin of body to frames */
409
- body {
410
- margin: 0;
1074
+ vertical-align: top;
411
1075
  }
412
1076
 
413
- dialog {
414
- padding: 0;
415
- }
416
-
417
- main, td, caption {
418
- padding: .5rem 1rem;
419
- }
420
1077
 
421
- /* 13 */
422
- [hidden] {
423
- display: none;
1078
+ /* 4a */
1079
+ ol,
1080
+ ul,
1081
+ dl,
1082
+ menu
1083
+ {
1084
+ padding-inline-start: calc(3ch * var(--border-width) / var(--border-width));
424
1085
  }
425
1086
 
426
1087
 
427
- :where(a[href]:not(:has(p, pre, details, fieldset, table, dl))) {
428
- text-decoration: none;
429
- }
1088
+ /* 4b */
430
1089
 
431
- :where(a[href]:not(:has(p, pre, details, fieldset, table, dl))):hover {
432
- text-decoration: underline;
433
- text-decoration-thickness: 1px;
1090
+ ol {
1091
+ list-style-type: decimal-leading-zero;
434
1092
  }
435
1093
 
436
- :where(a[href]:not(:has(p, pre, details, fieldset, table, dl)))::after {
437
- content: "\000bb";
438
- vertical-align: top;
439
- line-height: 1;
440
- padding: 0 .1em;
1094
+ menu
1095
+ {
1096
+ list-style-type: square;
441
1097
  }
442
1098
 
443
-
444
-
445
- /* COLOR
446
- ========================================================= */
447
-
448
- * {
449
- outline-color: inherit;
1099
+ ul {
1100
+ list-style-type: disc;
450
1101
  }
451
1102
 
452
- a {
453
- color: inherit;
1103
+ dl > div
1104
+ {
1105
+ display: list-item;
1106
+ list-style-type: circle;
454
1107
  }
455
1108
 
456
- @supports
457
- (color: oklch(0 0 0)) and
458
- (color: light-dark(#000, #fff))
459
- {
460
- :root {
461
- --base-color-hue: 230;
462
- }
463
-
464
- body, dialog, select, input, button, textarea {
465
- color: light-dark(
466
- oklch(0.45 .02 var(--base-color-hue)),
467
- oklch(.72 .01 var(--base-color-hue))
468
- );
469
- background-color: light-dark(
470
- oklch(0.99 0.003 var(--base-color-hue)),
471
- oklch(0.20 .03 var(--base-color-hue))
472
- );
473
- }
474
-
475
- ::picker(select) {
476
- color: light-dark(
477
- oklch(0.45 .02 var(--base-color-hue)),
478
- oklch(.72 .01 var(--base-color-hue))
479
- );
480
- background-color: light-dark(
481
- oklch(0.99 0.003 var(--base-color-hue)),
482
- oklch(0.20 .03 var(--base-color-hue))
483
- );
484
- }
485
-
486
- option:hover {
487
- background-color: light-dark(
488
- oklch(0.95 0.003 var(--base-color-hue)),
489
- oklch(0.25 .03 var(--base-color-hue))
490
- );
491
- }
492
- }
493
-
494
-
495
- select, input, button, textarea {
496
- accent-color: currentColor;
1109
+ /* 4c */
1110
+ ::marker
1111
+ {
1112
+ font-size: .75em;
497
1113
  }
498
1114
 
499
1115
 
500
1116
 
501
1117
 
502
-
503
- /************************
504
- ** CUSTOMS
505
- *************************/
1118
+ /*****************************************
1119
+ * PHRASES
1120
+ * ---------------------------------------
1121
+ *
1122
+ 1.
1123
+ Place icon-like images at inline level
1124
+ 2.
1125
+ Place other media at block level
1126
+ 3.
1127
+ Use monospace font, a fixed width font, on computer outputs
1128
+ 4.
1129
+ Align meter and progress, graphical components, to the middle of line height. Also match their accent color to current color.
1130
+ 5.
1131
+ Use implied style on top phrases
1132
+ 6.
1133
+ Use icons to label other phrases
1134
+ 7.
1135
+ Blend all forms to design
1136
+
1137
+ a.
1138
+ Make single-line text forms take the height of the line-height. No more to avoid overflow; no less to enable enough writing space.
1139
+ b.
1140
+ Make multi-line form (textarea) and non-text forms use auto height.
1141
+
1142
+ With auto height, these forms are better vertically aligned to the middle
1143
+ c.
1144
+ Fix line height not being centered in height of button-like forms.
1145
+ d.
1146
+ Remove inconsistent background colors; both grey of button forms and white of non-button forms.
1147
+ e.
1148
+ Make accent color be current color for input type of range, radio, and checkbox.
1149
+ f.
1150
+ Change cursor type on hovering a form
1151
+
1152
+ 8.
1153
+ Make select forms customizable
1154
+
1155
+ 9.
1156
+ Iconify non-picker forms for consistency with picker forms
1157
+
1158
+ a.
1159
+ Make wrapper contain form
1160
+ b.
1161
+ Create space for icon
1162
+ c.
1163
+ Place icon
506
1164
 
507
1165
 
508
- /* Cued Parts */
1166
+ *
1167
+ ******************************************/
509
1168
 
510
- header {
511
- background-image: repeating-linear-gradient(
512
- 45deg,
513
- currentColor 0,
514
- currentColor 1.4px,
515
- transparent 1.4px,
516
- transparent 5px
517
- );
518
- background-size: var(--base-line-length) 5px;
519
- background-repeat: no-repeat;
520
- background-position: 50% 100%;
1169
+ /* 1 */
1170
+ :is(svg, img)[height="16"] {
1171
+ height: 1em;
521
1172
  }
522
1173
 
523
- :where(figcaption:first-child) {
524
- background-image: repeating-linear-gradient(
525
- 45deg,
526
- currentColor 0,
527
- currentColor 1.4px,
528
- transparent 1.4px,
529
- transparent 5px
530
- );
531
- background-size: 50% 5px;
532
- background-repeat: no-repeat;
533
- background-position: 0% 100%;
1174
+ /* 2 */
1175
+ video,
1176
+ audio,
1177
+ iframe,
1178
+ object,
1179
+ svg:not([height='16']),
1180
+ img:not([height='16'])
1181
+ {
1182
+ display: block;
1183
+ max-width: 100%;
534
1184
  }
535
1185
 
536
- hr {
537
- background-image: repeating-linear-gradient(
538
- 90deg,
539
- currentColor 0,
540
- currentColor 1px,
541
- transparent 1px,
542
- transparent 5px
543
- );
544
- border: 0 none;
545
- height: 5px;
546
- background-size: var(--base-line-length) 5px;
547
- background-position: 50% 100%;
548
- background-repeat: no-repeat;
549
- }
550
-
551
- :where(figcaption:last-child) {
552
- background-image: repeating-linear-gradient(
553
- 135deg,
554
- currentColor 0,
555
- currentColor 1.4px,
556
- transparent 1.4px,
557
- transparent 5px
558
- );
559
- background-size: 50% 5px;
560
- background-repeat: no-repeat;
561
- background-position: 0% 0%;
562
- }
563
1186
 
564
- footer {
565
- background-image: repeating-linear-gradient(
566
- 135deg,
567
- currentColor 0,
568
- currentColor 1.4px,
569
- transparent 1.4px,
570
- transparent 5px
571
- );
572
- background-size: var(--base-line-length) 5px;
573
- background-repeat: no-repeat;
574
- background-position: 50% 0%;
1187
+ /* 3 */
1188
+ kbd,
1189
+ code,
1190
+ samp,
1191
+ output
1192
+ {
1193
+ font-family: monospace;
575
1194
  }
576
1195
 
577
1196
 
578
-
579
- /* Multi Kickers */
580
- p:has(~ :is(h1, h2, h3, h4, h5, h6)) {
581
- width: auto;
582
- display: inline-block;
583
- margin-inline-end: calc(2*var(--bbg));
1197
+ /* 4 */
1198
+ meter,
1199
+ progress
1200
+ {
1201
+ vertical-align: middle;
1202
+ accent-color: currentColor;
584
1203
  }
585
1204
 
586
1205
 
587
- /* Indented Disclosure */
588
- summary {
589
- text-indent: .3em;
590
- }
591
-
1206
+ /* 5 */
592
1207
 
593
- /* Bordered Legend */
594
- legend {
595
- border: 1px solid currentColor;
596
- padding: 0 .75em .3em;
597
- margin-inline: 0;
1208
+ strong
1209
+ {
1210
+ font-weight: 700;
598
1211
  }
599
1212
 
1213
+ mark
1214
+ {
1215
+ background-color: color-mix(in srgb, currentColor 5%, transparent 100%);
1216
+ padding: 0 .4em .3em;
1217
+ }
600
1218
 
601
- /* Bordered Table Layer*/
602
-
603
- table {
604
- border-collapse: collapse;
1219
+ ins:not(:has(p, pre)),
1220
+ del:not(:has(p, pre))
1221
+ {
1222
+ text-decoration-thickness: calc(.0625em * var(--border-width));
605
1223
  }
606
1224
 
607
- table, th, td {
608
- border: 1px solid currentColor;
1225
+ ins:not(:has(p, pre))
1226
+ {
1227
+ text-underline-position: from-font;
609
1228
  }
610
1229
 
611
- caption {
612
- text-align: start;
1230
+ abbr[title] {
1231
+ text-decoration: underline 1px dotted currentColor;
1232
+ text-underline-offset: 2px;
1233
+ }
613
1234
 
614
- /* border caption to table */
615
- border: 1px solid currentColor;
616
- border-bottom: 0;
617
- border-bottom-left-radius: 0;
618
- border-bottom-right-radius: 0;
1235
+ var
1236
+ {
1237
+ font-style: italic;
619
1238
  }
620
1239
 
621
- /* Marked Definition List */
622
- dt, dd {
1240
+
1241
+ sub,
1242
+ sup
1243
+ {
1244
+ font-size: .7em;
1245
+ line-height: 1;
623
1246
  position: relative;
1247
+ vertical-align: baseline;
624
1248
  }
625
1249
 
626
- dt::before,
627
- dd::before {
628
- position: absolute;
629
- left: -.875em;
1250
+ sub
1251
+ {
1252
+ bottom: -1ex;
630
1253
  }
631
1254
 
632
- dt::before {
633
- content: "\203A";
1255
+ sup
1256
+ {
1257
+ top: -1.5ex;
634
1258
  }
635
1259
 
636
- dd::before {
637
- content: "\00BB";
1260
+
1261
+ small
1262
+ {
1263
+ font-size: .875em;
638
1264
  }
639
1265
 
640
1266
 
641
- /* Ordered List */
1267
+ /* 6 */
642
1268
 
643
- ol {
644
- list-style-type: decimal;
1269
+ i,
1270
+ b,
1271
+ u,
1272
+ s,
1273
+ em,
1274
+ cite,
1275
+ a:not(:has(p, pre))
1276
+ {
1277
+ /* font-weight: 400; */
1278
+ /* font-style: normal; */
1279
+ text-decoration: none;
1280
+ /* color: currentColor; */
645
1281
  }
646
1282
 
647
- ol ol {
648
- list-style-type: lower-alpha;
1283
+ :where(
1284
+ i,
1285
+ b,
1286
+ u,
1287
+ s,
1288
+ em,
1289
+ kbd,
1290
+ cite,
1291
+ samp,
1292
+ output,
1293
+ map:not(:has(p, pre)),
1294
+ a:not(:has(p, pre))[href],
1295
+ )::after
1296
+ {
1297
+ content: var(--content, "");
1298
+ display: inline-block;
1299
+ width: .7em;
1300
+ height: .7em;
1301
+ mask-size: cover;
1302
+ mask-repeat: no-repeat;
1303
+ background-color: currentColor;
1304
+ vertical-align: text-top;
649
1305
  }
650
1306
 
651
- ol ol ol {
652
- list-style-type: lower-roman;
1307
+ kbd::after,
1308
+ samp::after,
1309
+ output::after
1310
+ {
1311
+ margin-inline: .5ch;
653
1312
  }
654
1313
 
655
-
656
- /* Marked Cards */
657
-
658
- blockquote, fieldset, address, figure,
659
- del:has(p, pre, details, fieldset, table, dl),
660
- ins:has(p, pre, details, fieldset, table, dl),
661
- :where(a[href]:has(p, pre, details, fieldset, table, dl))
1314
+ i::after
662
1315
  {
663
- border: 1px solid currentColor;
664
- padding: 0 calc(1.5 * var(--bbg)) calc(.5 * var(--bbg));
665
- position: relative;
666
- font-style: normal;
667
- display: block;
668
- text-decoration: none;
669
- color: inherit;
1316
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItcm91dGUtYWx0LWxlZnQiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIHN0cm9rZT0ibm9uZSIvPjxwYXRoIGQ9Ik04IDNIM3Y1bTEzLTVoNXY1Ii8+PHBhdGggZD0ibTMgMyA3LjUzNiA3LjUzNkE1IDUgMCAwIDEgMTIgMTQuMDdWMjFtNi0xNC45OVY2bS0yIDIuMDJ2LS4wMU0xNCAxMHYuMDEiLz48L3N2Zz4=");
670
1317
  }
671
1318
 
672
- blockquote::before,
673
- blockquote::after,
674
- address::before,
675
- address::after,
676
- del:has(p, pre, details, fieldset, table, dl)::before,
677
- del:has(p, pre, details, fieldset, table, dl)::after,
678
- ins:has(p, pre, details, fieldset, table, dl)::before,
679
- ins:has(p, pre, details, fieldset, table, dl)::after,
680
- :where(a[href]:has(p, pre, details, fieldset, table, dl))::before,
681
- :where(a[href]:has(p, pre, details, fieldset, table, dl))::after
1319
+ b::after
682
1320
  {
683
- content: "";
684
- position: absolute;
685
- left: .2em;
686
- display: flex;
687
- width: .4em;
688
- height: .4em;
689
- background-color: currentColor;
1321
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItYmVsbC1yaW5naW5nIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMTAgNWEyIDIgMCAwIDEgNCAwIDcgNyAwIDAgMSA0IDZ2M2E0IDQgMCAwIDAgMiAzSDRhNCA0IDAgMCAwIDItM3YtM2E3IDcgMCAwIDEgNC02TTkgMTd2MWEzIDMgMCAwIDAgNiAwdi0xbTYtMTAuMjczQTExLjA1IDExLjA1IDAgMCAwIDE4LjIwNiAzTTMgNi43MjdBMTEuMDUgMTEuMDUgMCAwIDEgNS43OTIgMyIvPjwvc3ZnPg==");
690
1322
  }
691
1323
 
692
- blockquote::before {
693
- top: .2em;
694
- clip-path: polygon(77% 96%, 22% 96%, 22% 48%, 53% 4%, 72% 4%, 51% 48%, 77% 48%, 77% 96%);
1324
+ u::after
1325
+ {
1326
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItdGlsZGUiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIHN0cm9rZT0ibm9uZSIvPjxwYXRoIGQ9Ik00IDEyYzAtMS42NTcgMS41OTItMyAzLjU1Ni0zczMuMTEgMS41IDQuNDQ0IDNjMS4zMzMgMS41IDIuNDggMyA0LjQ0NCAzUzIwIDEzLjY1NyAyMCAxMiIvPjwvc3ZnPg==");
695
1327
  }
696
1328
 
697
- blockquote::after {
698
- bottom: .2em;
699
- clip-path: polygon(23% 4%, 78% 4%, 78% 52%, 47% 96%, 28% 96%, 49% 52%, 23% 52%, 23% 4%);
1329
+ s::after
1330
+ {
1331
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItY2FuY2VsIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMyAxMmE5IDkgMCAxIDAgMTggMCA5IDkgMCAxIDAtMTggMG0xNS4zNjQtNi4zNjRMNS42MzYgMTguMzY0Ii8+PC9zdmc+");
700
1332
  }
701
1333
 
702
- address::before {
703
- top: .15em;
704
- clip-path: circle(30% at 50% 50%);
1334
+ em::after {
1335
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItcXVlc3Rpb24tbWFyayI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTggOGEzLjUgMyAwIDAgMSAzLjUgLTNoMWEzLjUgMyAwIDAgMSAzLjUgM2EzIDMgMCAwIDEgLTIgM2EzIDQgMCAwIDAgLTIgNCIgLz48cGF0aCBkPSJNMTIgMTlsMCAuMDEiIC8+PC9zdmc+");
1336
+ margin-inline-start: -.2em;
705
1337
  }
706
1338
 
707
- address::after {
708
- bottom: .15em;
709
- clip-path: circle(30% at 50% 50%);
1339
+ kbd::after
1340
+ {
1341
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXIta2V5Ym9hcmQiPjxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yIDZtMCAyYTIgMiAwIDAgMSAyIC0yaDE2YTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEgLTIgMmgtMTZhMiAyIDAgMCAxIC0yIC0yeiIgLz48cGF0aCBkPSJNNiAxMGwwIC4wMSIgLz48cGF0aCBkPSJNMTAgMTBsMCAuMDEiIC8+PHBhdGggZD0iTTE0IDEwbDAgLjAxIiAvPjxwYXRoIGQ9Ik0xOCAxMGwwIC4wMSIgLz48cGF0aCBkPSJNNiAxNGwwIC4wMSIgLz48cGF0aCBkPSJNMTggMTRsMCAuMDEiIC8+PHBhdGggZD0iTTEwIDE0bDQgLjAxIiAvPjwvc3ZnPg==");
710
1342
  }
711
1343
 
712
- del:has(p, pre, details, fieldset, table, dl)::before {
713
- top: .2em;
714
- clip-path: polygon(100% 60%, 0% 60%, 0% 40%, 100% 40%, 100% 60%);
1344
+ samp::after
1345
+ {
1346
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItbG9nb3V0Ij48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTQgOHYtMmEyIDIgMCAwIDAgLTIgLTJoLTdhMiAyIDAgMCAwIC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg3YTIgMiAwIDAgMCAyIC0ydi0yIiAvPjxwYXRoIGQ9Ik05IDEyaDEybC0zIC0zIiAvPjxwYXRoIGQ9Ik0xOCAxNWwzIC0zIiAvPjwvc3ZnPg==");
715
1347
  }
716
1348
 
717
- del:has(p, pre, details, fieldset, table, dl)::after {
718
- bottom: .2em;
719
- clip-path: polygon(100% 60%, 0% 60%, 0% 40%, 100% 40%, 100% 60%);
1349
+ output::after
1350
+ {
1351
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfOF8yMCkiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTE0IDhWNmEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDdhMiAyIDAgMCAwIDItMnYtMm00LTcgMyAzaC02bTMgMyAzLTMiLz48L2c+PC9zdmc+");
720
1352
  }
721
1353
 
722
- ins:has(p, pre, details, fieldset, table, dl)::before {
723
- top: .2em;
724
- clip-path: polygon(60% 40%, 100% 40%, 100% 60%, 60% 60%, 60% 100%, 40% 100%, 40% 60%, 0% 60%, 0% 40%, 40% 40%, 40% 0%, 60% 0%, 60% 40%);
1354
+ cite::after
1355
+ {
1356
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItdGFnIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNNi41IDcuNWExIDEgMCAxIDAgMiAwIDEgMSAwIDEgMC0yIDAiLz48cGF0aCBkPSJNMyA2djUuMTcyYTIgMiAwIDAgMCAuNTg2IDEuNDE0bDcuNzEgNy43MWEyLjQxIDIuNDEgMCAwIDAgMy40MDggMGw1LjU5Mi01LjU5MmEyLjQxIDIuNDEgMCAwIDAgMC0zLjQwOGwtNy43MS03LjcxQTIgMiAwIDAgMCAxMS4xNzIgM0g2YTMgMyAwIDAgMC0zIDMiLz48L3N2Zz4=");
1357
+ margin-inline-start: .2em;
725
1358
  }
726
1359
 
727
- ins:has(p, pre, details, fieldset, table, dl)::after {
728
- bottom: .2em;
729
- clip-path: polygon(60% 40%, 100% 40%, 100% 60%, 60% 60%, 60% 100%, 40% 100%, 40% 60%, 0% 60%, 0% 40%, 40% 40%, 40% 0%, 60% 0%, 60% 40%);
1360
+ map:not(:has(p, pre))::after
1361
+ {
1362
+ mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-photo%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M15%208h.01%22%20%2F%3E%3Cpath%20d%3D%22M3%206a3%203%200%200%201%203%20-3h12a3%203%200%200%201%203%203v12a3%203%200%200%201%20-3%203h-12a3%203%200%200%201%20-3%20-3v-12z%22%20%2F%3E%3Cpath%20d%3D%22M3%2016l5%20-5c.928%20-.893%202.072%20-.893%203%200l5%205%22%20%2F%3E%3Cpath%20d%3D%22M14%2014l1%20-1c.928%20-.893%202.072%20-.893%203%200l3%203%22%20%2F%3E%3C%2Fsvg%3E");
730
1363
  }
731
1364
 
732
- :where(a[href]:has(p, pre, details, fieldset, table, dl))::before {
733
- top: .2em;
734
- clip-path: polygon(100% 0%, 100% 70%, 72% 42%, 22% 92%, 8% 78%, 58% 28%, 30% 0%, 100% 0%);
1365
+ a:not(:has(p, pre))[href]::after
1366
+ {
1367
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItZXh0ZXJuYWwtbGluayI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTEyIDZoLTZhMiAyIDAgMCAwIC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMiAtMnYtNiIgLz48cGF0aCBkPSJNMTEgMTNsOSAtOSIgLz48cGF0aCBkPSJNMTUgNGg1djUiIC8+PC9zdmc+");
735
1368
  }
736
1369
 
737
- :where(a[href]:has(p, pre, details, fieldset, table, dl))::after {
738
- bottom: .2em;
739
- clip-path: polygon(100% 0%, 100% 70%, 72% 42%, 22% 92%, 8% 78%, 58% 28%, 30% 0%, 100% 0%);
1370
+ a:not(:has(p, pre))[href]:hover {
1371
+ cursor: pointer;
1372
+ text-decoration: underline 1px currentColor;
740
1373
  }
741
1374
 
742
1375
 
1376
+ /* 7 */
743
1377
 
744
- /* Scrollable Pres */
745
- pre {
746
- padding: 1em;
1378
+ button,
1379
+ select,
1380
+ textarea,
1381
+ input[type]
1382
+ {
1383
+ font: inherit;
1384
+
1385
+ /* 7a */
1386
+ height: 1lh;
747
1387
  border: 1px solid currentColor;
748
- overflow: auto;
749
- }
1388
+ padding: 0 .5em var(--lh-pad);
750
1389
 
1390
+ /* 7d */
1391
+ background-color: transparent;
751
1392
 
1393
+ /* 7e */
1394
+ accent-color: currentColor;
1395
+
1396
+ /* 7f */
1397
+ cursor: pointer;
1398
+ }
752
1399
 
753
1400
 
754
- /* Trued Forms */
1401
+ /* 7b */
755
1402
 
756
- button,
757
- :where(
758
- input:not([type]),
759
- input[type=tel],
760
- input[type=url],
761
- input[type=text],
762
- input[type=date],
763
- input[type=week],
764
- input[type=time],
765
- input[type=file],
766
- input[type=email],
767
- input[type=month],
768
- input[type=color],
769
- input[type=reset],
770
- input[type=submit],
771
- input[type=button],
772
- input[type=number],
773
- input[type=search],
774
- input[type=password],
775
- input[type=datetime-local]
776
- ) {
777
- border: 1px solid;
778
- font: inherit;
779
- padding: 0 .5em .15em;
780
- height: 2em;
1403
+ textarea,
1404
+ input[type=range],
1405
+ input[type=radio],
1406
+ input[type=checkbox]
1407
+ {
1408
+ height: auto;
1409
+ }
1410
+
1411
+ span:has(>
1412
+ :is(
1413
+ textarea,
1414
+ input[type=radio],
1415
+ input[type=range],
1416
+ input[type=checkbox]
1417
+ )
1418
+ )
1419
+ {
781
1420
  vertical-align: middle;
782
- line-height: 1.2;
783
- width: fit-content;
784
1421
  }
785
1422
 
786
- select,
787
- ::picker(select) {
788
- appearance: base-select;
1423
+
1424
+ /* 7c */
1425
+ button,
1426
+ input[type=image],
1427
+ input[type=reset],
1428
+ input[type=submit],
1429
+ input[type=button]
1430
+ {
1431
+ line-height: .5lh;
1432
+ height: 2lh;
789
1433
  }
790
1434
 
791
1435
 
792
- select {
793
- font: inherit;
794
- width: fit-content;
795
- gap: 2em;
796
- padding: 0 .3em .15em .3em;
797
- align-items: center;
1436
+ /* 8 */
798
1437
 
799
- /* Use lineheight over height to align ::picker to center. Sum to 2em considering padding bottom and border top & bottom */
800
- line-height: 1.725em;
1438
+ select
1439
+ {
1440
+ appearance: base-select;
1441
+ border-radius: 0;
1442
+ align-items: center;
801
1443
  }
802
1444
 
803
1445
  select::picker-icon {
804
1446
  transition: .4s rotate;
805
-
806
- /* avoid cutoff upon clicked */
807
- transform-origin: 40% 50%;
808
- transform: translateX(-1px);
1447
+ font-size: .7em;
809
1448
  }
810
1449
 
811
1450
  select:open::picker-icon {
812
1451
  rotate: 180deg;
813
1452
  }
814
1453
 
815
- option {
816
- height: 2.5em;
817
- padding: .3em .75em .45em;
818
- flex-flow: row-reverse;
819
- justify-content: space-between;
820
- gap: 3em;
821
- }
822
1454
 
823
- ::picker(select) {
824
- opacity: 0;
825
- transition: all .25s allow-discrete;
1455
+ /* 9a */
1456
+ span:has(> input:only-child),
1457
+ span:has(> select:only-child)
1458
+ {
1459
+ display: inline-flex;
1460
+ position: relative;
826
1461
  }
827
1462
 
828
- ::picker(select):popover-open {
829
- opacity: 1;
1463
+ /* 9b */
1464
+ span > input[type=url]:only-child,
1465
+ span > input[type=tel]:only-child,
1466
+ span > input[type=text]:only-child,
1467
+ span > input[type=email]:only-child,
1468
+ span > input[type=number]:only-child,
1469
+ span > input[type=search]:only-child,
1470
+ span > input[type=password]:only-child
1471
+ {
1472
+ padding-inline-start: 1.4em;
830
1473
  }
831
1474
 
832
- @starting-style {
833
- ::picker(select):popover-open {
834
- opacity: 0;
835
- }
836
- }
837
1475
 
838
- input[type=range]
839
- {
840
- vertical-align: middle;
841
- }
1476
+ /* 9c */
842
1477
 
843
1478
  :where(
844
- input[type=radio],
845
- input[type=checkbox]
846
- ) {
847
- width: 1em;
848
- height: 1em;
849
- font: inherit;
850
- vertical-align: -.15em;
851
- outline-offset: 0;
852
- }
1479
+ span:has(
1480
+ > :is(
1481
+ input[type=tel],
1482
+ input[type=url],
1483
+ input[type=text],
1484
+ input[type=email],
1485
+ input[type=number],
1486
+ input[type=search],
1487
+ input[type=password],
1488
+ ):only-child
1489
+ )
1490
+ )::after
1491
+ {
1492
+ content: var(--content, "");
1493
+ position: absolute;
1494
+ left: .4em;
1495
+ top: 0;
1496
+ bottom: 0;
1497
+ margin-block: auto;
853
1498
 
854
- textarea {
855
- border: 1px solid currentColor;
856
- font: inherit;
857
- padding: 0 .5em .25em;
858
- width: fit-content;
1499
+ display: block;
1500
+ width: .75em;
1501
+ height: .75em;
1502
+ mask-size: cover;
1503
+ mask-repeat: no-repeat;
1504
+ background-color: #000;
1505
+ color: currentColor;
859
1506
  }
860
1507
 
1508
+ span:has(input[type=search]:only-child)::after
1509
+ {
1510
+ mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-search%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M10%2010m-7%200a7%207%200%201%200%2014%200a7%207%200%201%200%20-14%200%22%20%2F%3E%3Cpath%20d%3D%22M21%2021l-6%20-6%22%20%2F%3E%3C%2Fsvg%3E");
1511
+ }
861
1512
 
862
-
863
- /* Pointed Interractables */
864
- summary,
865
- a,
866
- label,
867
- button,
868
- select,
869
- :where(
870
- input[type=date],
871
- input[type=week],
872
- input[type=time],
873
- input[type=file],
874
- input[type=month],
875
- input[type=color],
876
- input[type=reset],
877
- input[type=range],
878
- input[type=radio],
879
- input[type=button],
880
- input[type=submit],
881
- input[type=checkbox],
882
- input[type=datetime-local]
883
- ) {
884
- cursor: pointer;
1513
+ span:has(input[type=text]:only-child)::after
1514
+ {
1515
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItdGV4dC1pbmNyZWFzZSI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgc3Ryb2tlPSJub25lIi8+PHBhdGggZD0iTTQgMTlWOC41YTMuNSAzLjUgMCAxIDEgNyAwVjE5bS03LTZoN203LTR2Nm0zLTNoLTYiLz48L3N2Zz4=");
885
1516
  }
886
1517
 
1518
+ span:has(input[type=tel]:only-child)::after
1519
+ {
1520
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItcGhvbmUiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIHN0cm9rZT0ibm9uZSIvPjxwYXRoIGQ9Ik01IDRoNGwyIDUtMi41IDEuNWExMSAxMSAwIDAgMCA1IDVMMTUgMTNsNSAydjRhMiAyIDAgMCAxLTIgMkExNiAxNiAwIDAgMSAzIDZhMiAyIDAgMCAxIDItMiIvPjwvc3ZnPg==");
1521
+ }
887
1522
 
888
- :where(label:has(textarea, select, input:not([type=checkbox], [type=radio], [type=range]))) {
889
- display: grid;
890
- margin-block-start: calc(.5 * var(--bbg))
1523
+ span:has(input[type=email]:only-child)::after
1524
+ {
1525
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItYXQiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIHN0cm9rZT0ibm9uZSIvPjxwYXRoIGQ9Ik04IDEyYTQgNCAwIDEgMCA4IDAgNCA0IDAgMSAwLTggMCIvPjxwYXRoIGQ9Ik0xNiAxMnYxLjVhMi41IDIuNSAwIDAgMCA1IDBWMTJhOSA5IDAgMSAwLTUuNSA4LjI4Ii8+PC9zdmc+");
891
1526
  }
892
1527
 
893
- :where(label:has(textarea, select, input:not([type=checkbox], [type=radio], [type=range])) + button) {
894
- display: block;
895
- margin-block-start: calc(1.7 * var(--bbg))
1528
+ span:has(input[type=number]:only-child)::after
1529
+ {
1530
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItbnVtYmVyLTEyMyI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgc3Ryb2tlPSJub25lIi8+PHBhdGggZD0ibTMgMTAgMi0ydjhtNC04aDNhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFoLTJhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoM200LThoMi41QTEuNSAxLjUgMCAwIDEgMjEgOS41djFhMS41IDEuNSAwIDAgMS0xLjUgMS41SDE4aDEuNWExLjUgMS41IDAgMCAxIDEuNSAxLjV2MWExLjUgMS41IDAgMCAxLTEuNSAxLjVIMTciLz48L3N2Zz4=");
896
1531
  }
897
1532
 
1533
+ span:has(input[type=password]:only-child)::after
1534
+ {
1535
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItcGFzc3dvcmQiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIHN0cm9rZT0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiAxMHY0bS0yLTEgNC0ybS00IDAgNCAybS05LTN2NG0tMi0xIDQtMm0tNCAwIDQgMm0xMi0zdjRtLTItMSA0LTJtLTQgMCA0IDIiLz48L3N2Zz4=");
1536
+ }
898
1537
 
899
- summary {
900
- font-weight: bold;
901
- list-style-position: outside;
1538
+ span:has(input[type=url]:only-child)::after
1539
+ {
1540
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItd29ybGQtd3d3Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMTkuNSA3QTkgOSAwIDAgMCAxMiAzYTguOTkgOC45OSAwIDAgMC03LjQ4NCA0Ii8+PHBhdGggZD0iTTExLjUgM2ExNyAxNyAwIDAgMC0xLjgyNiA0TTEyLjUgM2ExNyAxNyAwIDAgMSAxLjgyOCA0TTE5LjUgMTdhOSA5IDAgMCAxLTcuNSA0IDguOTkgOC45OSAwIDAgMS03LjQ4NC00Ii8+PHBhdGggZD0iTTExLjUgMjFhMTcgMTcgMCAwIDEtMS44MjYtNG0yLjgyNiA0YTE3IDE3IDAgMCAwIDEuODI4LTRNMiAxMGwxIDQgMS41LTRMNiAxNGwxLTRtMTAgMCAxIDQgMS41LTQgMS41IDQgMS00TTkuNSAxMGwxIDQgMS41LTQgMS41IDQgMS00Ii8+PC9zdmc+");
902
1541
  }