@toheeb/base 1.7.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/base.css +1290 -650
  2. package/license.md +163 -0
  3. package/package.json +3 -3
package/base.css CHANGED
@@ -1,901 +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)));
49
209
  }
50
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)));
224
+ }
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
- :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));
276
+ }
277
+
278
+ :is(section, article):has(> hgroup > h5) {
279
+ padding-block-start: calc(3 * var(--line-lead));
280
+ }
281
+
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));
288
+ }
289
+
290
+ :is(section, article):has(> hgroup > h2) {
291
+ padding-block-start: calc(6 * var(--line-lead));
292
+ }
293
+
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);
336
+ }
337
+
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;
344
+ }
345
+
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
+
408
+ body,
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 */
470
+ p, pre,
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));
77
689
  }
78
690
 
79
- h5 {
80
- --bfs: var(--bfs-400);
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
700
+ {
701
+ border-block-start: none;
81
702
  }
82
703
 
83
- h4 {
84
- --bfs: var(--bfs-500);
704
+
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
+ }
812
+
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
+ }
816
+
817
+ a:has(:is(p, pre))[href]::before
818
+ {
819
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItbGluayI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTkgMTVsNiAtNiIgLz48cGF0aCBkPSJNMTEgNmwuNDYzIC0uNTM2YTUgNSAwIDAgMSA3LjA3MSA3LjA3MmwtLjUzNCAuNDY0IiAvPjxwYXRoIGQ9Ik0xMyAxOGwtLjM5NyAuNTM0YTUuMDY4IDUuMDY4IDAgMCAxIC03LjEyNyAwYTQuOTcyIDQuOTcyIDAgMCAxIDAgLTcuMDcxbC41MjQgLS40NjMiIC8+PC9zdmc+");
85
820
  }
86
821
 
87
- h3 {
88
- --bfs: var(--bfs-600);
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");
89
824
  }
90
825
 
91
- h2 {
92
- --bfs: var(--bfs-700);
826
+ form::before {
827
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItY3JvcC0xNi05Ij48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNNCA4bTAgMmEyIDIgMCAwIDEgMiAtMmgxMmEyIDIgMCAwIDEgMiAydjRhMiAyIDAgMCAxIC0yIDJoLTEyYTIgMiAwIDAgMSAtMiAtMnoiIC8+PC9zdmc+");
93
828
  }
94
829
 
95
- h1 {
96
- --bfs: var(--bfs-800);
97
- }
98
830
 
99
- /* 4 */
100
- body,
101
- h1, h2, h3, h4, h5, h6,
102
- summary, legend, dt, th,
103
- p, pre,
104
- small, ::marker
105
- {
106
831
 
107
- /* 4a */
108
- font-family: var(--base-font-family);
109
832
 
110
- /* 4b */
111
- font-size: calc(var(--bfs) * 1rem);
112
833
 
113
- /* 4c */
114
- line-height: calc(
115
- 1 + (
116
- var(--base-line-height) / var(--bfs)
117
- )
118
- );
119
- }
834
+ /*****************************************
835
+ * MIXES
836
+ * ---------------------------------------
837
+ *
838
+ 1.
839
+ Use border to mark boundaries of all mixes.
120
840
 
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%; */
128
- }
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.
129
842
 
130
- /* 5 */
131
- p {
132
- text-wrap: pretty;
133
- }
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]
134
844
 
135
- /* 6 */
136
- h1, h2, h3, h4, h5, h6,
137
- :is(h1, h2, h3, h4, h5, h6) ~ p,
138
- summary, legend, dt, th
139
- {
140
- text-wrap: balance;
141
- }
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]
142
846
 
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]
143
848
 
849
+ Pad top of dl to keep items away.[1f]
144
850
 
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.
145
853
 
146
- /* SPACING
147
- ========================================================= */
854
+ 3.
855
+ Partition cards
148
856
 
149
- /* 1 - 3 */
150
- :root {
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.
151
865
 
152
- /* 1 */
153
- --base-mode-indent: 0;
154
- --base-block-gap: .9;
155
- --base-line-length: 36rem;
866
+ 4.
867
+ Style list layers
156
868
 
157
- /* 2 */
158
- --bbg: calc(1rem * var(--base-block-gap) * var(--base-line-height) * var(--base-font-size));
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
159
875
 
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
- }
876
+ *
877
+ ******************************************/
171
878
 
172
- /* 4 */
173
- h1, h2, h3, h4, h5, h6
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))
174
894
  {
175
- /* where .15em is synonymous to line height offset */
176
- padding-block: 0 .15em;
177
- }
895
+ border:
896
+ calc(1px * var(--border-width))
897
+ solid
898
+ var(--border-color)
899
+ ;
178
900
 
179
- /* 5a */
180
- p:has(~ :is(h1, h2, h3, h4, h5, h6)) {
181
- margin-block: 0 calc(.25 * var(--bbg));
182
- }
183
-
184
- /* 5b */
185
- dt,
186
- :is(h1, h2, h3, h4, h5, h6) ~ p {
187
- margin-block: calc(.50 * var(--bbg));
188
- }
189
-
190
- /* 5c */
191
- p, pre {
192
- margin-block: var(--bbg-100);
193
- }
901
+ /* 1a */
902
+ padding-inline: calc(2 * var(--line-lead) * var(--border-width) / var(--border-width));
194
903
 
904
+ /* 1b */
905
+ margin-block: calc(2 * var(--line-lead));
195
906
 
196
- /* on mixes, enforce space irrespective of indent mode */
907
+ /* 1c */
908
+ display: block;
197
909
 
198
- ol, ul, dl
199
- {
200
- margin-block: var(--bbg);
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
- summary, legend, th, dt,
370
- p, pre,
371
- blockquote, fieldset, address, figure,
372
- del:has(p, pre, details, fieldset, table, dl),
373
- ins:has(p, pre, details, fieldset, table, dl),
374
- :where(a[href]:has(p, pre, details, fieldset, table, dl)),
375
- ol, ul, dl
1057
+ tfoot
376
1058
  {
377
- margin-inline: auto;
378
- max-width: var(--base-line-length);
1059
+ border-block-start: calc(var(--border-width) * 2px) solid var(--border-color);
379
1060
  }
380
1061
 
381
- /* 8 */
382
- iframe, object, embed, video, audio, img
1062
+ th, td
383
1063
  {
384
- display: block;
385
- margin-inline: auto;
386
- max-width: 100%;
1064
+ border: calc(var(--border-width) * 1px) solid var(--border-color);
387
1065
  }
388
1066
 
389
- /* 9 */
390
- table {
391
- margin-inline: auto;
1067
+ th
1068
+ {
1069
+ padding-block: calc(1 * var(--line-lead)) calc((1 * var(--line-lead)) + var(--lh-pad));
392
1070
  }
393
1071
 
394
-
395
- /* 10 */
396
- svg, math {
397
- vertical-align: middle;
398
- }
399
-
400
- /* 11 */
401
- ol, ul, dl
1072
+ td
402
1073
  {
403
- padding-inline-start: 2em;
404
- }
405
-
406
- /* 12 */
407
- /* redirect margin of body to frames */
408
- body {
409
- margin: 0;
1074
+ vertical-align: top;
410
1075
  }
411
1076
 
412
- dialog {
413
- padding: 0;
414
- }
415
-
416
- main, td, caption {
417
- padding: .5rem 1rem;
418
- }
419
1077
 
420
- /* 13 */
421
- [hidden] {
422
- 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));
423
1085
  }
424
1086
 
425
1087
 
426
- :where(a[href]:not(:has(p, pre, details, fieldset, table, dl))) {
427
- text-decoration: none;
428
- }
1088
+ /* 4b */
429
1089
 
430
- :where(a[href]:not(:has(p, pre, details, fieldset, table, dl))):hover {
431
- text-decoration: underline;
432
- text-decoration-thickness: 1px;
1090
+ ol {
1091
+ list-style-type: decimal-leading-zero;
433
1092
  }
434
1093
 
435
- :where(a[href]:not(:has(p, pre, details, fieldset, table, dl)))::after {
436
- content: "\000bb";
437
- vertical-align: top;
438
- line-height: 1;
439
- padding: 0 .1em;
1094
+ menu
1095
+ {
1096
+ list-style-type: square;
440
1097
  }
441
1098
 
442
-
443
-
444
- /* COLOR
445
- ========================================================= */
446
-
447
- * {
448
- outline-color: inherit;
1099
+ ul {
1100
+ list-style-type: disc;
449
1101
  }
450
1102
 
451
- a {
452
- color: inherit;
1103
+ dl > div
1104
+ {
1105
+ display: list-item;
1106
+ list-style-type: circle;
453
1107
  }
454
1108
 
455
- @supports
456
- (color: oklch(0 0 0)) and
457
- (color: light-dark(#000, #fff))
458
- {
459
- :root {
460
- --base-color-hue: 230;
461
- }
462
-
463
- body, dialog, select, input, button, textarea {
464
- color: light-dark(
465
- oklch(0.45 .02 var(--base-color-hue)),
466
- oklch(.72 .01 var(--base-color-hue))
467
- );
468
- background-color: light-dark(
469
- oklch(0.99 0.003 var(--base-color-hue)),
470
- oklch(0.20 .03 var(--base-color-hue))
471
- );
472
- }
473
-
474
- ::picker(select) {
475
- color: light-dark(
476
- oklch(0.45 .02 var(--base-color-hue)),
477
- oklch(.72 .01 var(--base-color-hue))
478
- );
479
- background-color: light-dark(
480
- oklch(0.99 0.003 var(--base-color-hue)),
481
- oklch(0.20 .03 var(--base-color-hue))
482
- );
483
- }
484
-
485
- option:hover {
486
- background-color: light-dark(
487
- oklch(0.95 0.003 var(--base-color-hue)),
488
- oklch(0.25 .03 var(--base-color-hue))
489
- );
490
- }
491
- }
492
-
493
-
494
- select, input, button, textarea {
495
- accent-color: currentColor;
1109
+ /* 4c */
1110
+ ::marker
1111
+ {
1112
+ font-size: .75em;
496
1113
  }
497
1114
 
498
1115
 
499
1116
 
500
1117
 
501
-
502
- /************************
503
- ** CUSTOMS
504
- *************************/
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
505
1164
 
506
1165
 
507
- /* Cued Parts */
1166
+ *
1167
+ ******************************************/
508
1168
 
509
- header {
510
- background-image: repeating-linear-gradient(
511
- 45deg,
512
- currentColor 0,
513
- currentColor 1.4px,
514
- transparent 1.4px,
515
- transparent 5px
516
- );
517
- background-size: var(--base-line-length) 5px;
518
- background-repeat: no-repeat;
519
- background-position: 50% 100%;
1169
+ /* 1 */
1170
+ :is(svg, img)[height="16"] {
1171
+ height: 1em;
520
1172
  }
521
1173
 
522
- :where(figcaption:first-child) {
523
- background-image: repeating-linear-gradient(
524
- 45deg,
525
- currentColor 0,
526
- currentColor 1.4px,
527
- transparent 1.4px,
528
- transparent 5px
529
- );
530
- background-size: 50% 5px;
531
- background-repeat: no-repeat;
532
- 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%;
533
1184
  }
534
1185
 
535
- hr {
536
- background-image: repeating-linear-gradient(
537
- 90deg,
538
- currentColor 0,
539
- currentColor 1px,
540
- transparent 1px,
541
- transparent 5px
542
- );
543
- border: 0 none;
544
- height: 5px;
545
- background-size: var(--base-line-length) 5px;
546
- background-position: 50% 100%;
547
- background-repeat: no-repeat;
548
- }
549
-
550
- :where(figcaption:last-child) {
551
- background-image: repeating-linear-gradient(
552
- 135deg,
553
- currentColor 0,
554
- currentColor 1.4px,
555
- transparent 1.4px,
556
- transparent 5px
557
- );
558
- background-size: 50% 5px;
559
- background-repeat: no-repeat;
560
- background-position: 0% 0%;
561
- }
562
1186
 
563
- footer {
564
- background-image: repeating-linear-gradient(
565
- 135deg,
566
- currentColor 0,
567
- currentColor 1.4px,
568
- transparent 1.4px,
569
- transparent 5px
570
- );
571
- background-size: var(--base-line-length) 5px;
572
- background-repeat: no-repeat;
573
- background-position: 50% 0%;
1187
+ /* 3 */
1188
+ kbd,
1189
+ code,
1190
+ samp,
1191
+ output
1192
+ {
1193
+ font-family: monospace;
574
1194
  }
575
1195
 
576
1196
 
577
-
578
- /* Multi Kickers */
579
- p:has(~ :is(h1, h2, h3, h4, h5, h6)) {
580
- width: auto;
581
- display: inline-block;
582
- margin-inline-end: calc(2*var(--bbg));
1197
+ /* 4 */
1198
+ meter,
1199
+ progress
1200
+ {
1201
+ vertical-align: middle;
1202
+ accent-color: currentColor;
583
1203
  }
584
1204
 
585
1205
 
586
- /* Indented Disclosure */
587
- summary {
588
- text-indent: .3em;
589
- }
590
-
1206
+ /* 5 */
591
1207
 
592
- /* Bordered Legend */
593
- legend {
594
- border: 1px solid currentColor;
595
- padding: 0 .75em .3em;
596
- margin-inline: 0;
1208
+ strong
1209
+ {
1210
+ font-weight: 700;
597
1211
  }
598
1212
 
1213
+ mark
1214
+ {
1215
+ background-color: color-mix(in srgb, currentColor 5%, transparent 100%);
1216
+ padding: 0 .4em .3em;
1217
+ }
599
1218
 
600
- /* Bordered Table Layer*/
601
-
602
- table {
603
- 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));
604
1223
  }
605
1224
 
606
- table, th, td {
607
- border: 1px solid currentColor;
1225
+ ins:not(:has(p, pre))
1226
+ {
1227
+ text-underline-position: from-font;
608
1228
  }
609
1229
 
610
- caption {
611
- text-align: start;
1230
+ abbr[title] {
1231
+ text-decoration: underline 1px dotted currentColor;
1232
+ text-underline-offset: 2px;
1233
+ }
612
1234
 
613
- /* border caption to table */
614
- border: 1px solid currentColor;
615
- border-bottom: 0;
616
- border-bottom-left-radius: 0;
617
- border-bottom-right-radius: 0;
1235
+ var
1236
+ {
1237
+ font-style: italic;
618
1238
  }
619
1239
 
620
- /* Marked Definition List */
621
- dt, dd {
1240
+
1241
+ sub,
1242
+ sup
1243
+ {
1244
+ font-size: .7em;
1245
+ line-height: 1;
622
1246
  position: relative;
1247
+ vertical-align: baseline;
623
1248
  }
624
1249
 
625
- dt::before,
626
- dd::before {
627
- position: absolute;
628
- left: -.875em;
1250
+ sub
1251
+ {
1252
+ bottom: -1ex;
629
1253
  }
630
1254
 
631
- dt::before {
632
- content: "\203A";
1255
+ sup
1256
+ {
1257
+ top: -1.5ex;
633
1258
  }
634
1259
 
635
- dd::before {
636
- content: "\00BB";
1260
+
1261
+ small
1262
+ {
1263
+ font-size: .875em;
637
1264
  }
638
1265
 
639
1266
 
640
- /* Ordered List */
1267
+ /* 6 */
641
1268
 
642
- ol {
643
- 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; */
644
1281
  }
645
1282
 
646
- ol ol {
647
- 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;
648
1305
  }
649
1306
 
650
- ol ol ol {
651
- list-style-type: lower-roman;
1307
+ kbd::after,
1308
+ samp::after,
1309
+ output::after
1310
+ {
1311
+ margin-inline: .5ch;
652
1312
  }
653
1313
 
654
-
655
- /* Marked Cards */
656
-
657
- blockquote, fieldset, address, figure,
658
- del:has(p, pre, details, fieldset, table, dl),
659
- ins:has(p, pre, details, fieldset, table, dl),
660
- :where(a[href]:has(p, pre, details, fieldset, table, dl))
1314
+ i::after
661
1315
  {
662
- border: 1px solid currentColor;
663
- padding: 0 calc(1.5 * var(--bbg)) calc(.5 * var(--bbg));
664
- position: relative;
665
- font-style: normal;
666
- display: block;
667
- text-decoration: none;
668
- color: inherit;
1316
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItcm91dGUtYWx0LWxlZnQiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIHN0cm9rZT0ibm9uZSIvPjxwYXRoIGQ9Ik04IDNIM3Y1bTEzLTVoNXY1Ii8+PHBhdGggZD0ibTMgMyA3LjUzNiA3LjUzNkE1IDUgMCAwIDEgMTIgMTQuMDdWMjFtNi0xNC45OVY2bS0yIDIuMDJ2LS4wMU0xNCAxMHYuMDEiLz48L3N2Zz4=");
669
1317
  }
670
1318
 
671
- blockquote::before,
672
- blockquote::after,
673
- address::before,
674
- address::after,
675
- del:has(p, pre, details, fieldset, table, dl)::before,
676
- del:has(p, pre, details, fieldset, table, dl)::after,
677
- ins:has(p, pre, details, fieldset, table, dl)::before,
678
- ins:has(p, pre, details, fieldset, table, dl)::after,
679
- :where(a[href]:has(p, pre, details, fieldset, table, dl))::before,
680
- :where(a[href]:has(p, pre, details, fieldset, table, dl))::after
1319
+ b::after
681
1320
  {
682
- content: "";
683
- position: absolute;
684
- left: .2em;
685
- display: flex;
686
- width: .4em;
687
- height: .4em;
688
- background-color: currentColor;
1321
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItYmVsbC1yaW5naW5nIj48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMTAgNWEyIDIgMCAwIDEgNCAwIDcgNyAwIDAgMSA0IDZ2M2E0IDQgMCAwIDAgMiAzSDRhNCA0IDAgMCAwIDItM3YtM2E3IDcgMCAwIDEgNC02TTkgMTd2MWEzIDMgMCAwIDAgNiAwdi0xbTYtMTAuMjczQTExLjA1IDExLjA1IDAgMCAwIDE4LjIwNiAzTTMgNi43MjdBMTEuMDUgMTEuMDUgMCAwIDEgNS43OTIgMyIvPjwvc3ZnPg==");
689
1322
  }
690
1323
 
691
- blockquote::before {
692
- top: .2em;
693
- 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==");
694
1327
  }
695
1328
 
696
- blockquote::after {
697
- bottom: .2em;
698
- 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+");
699
1332
  }
700
1333
 
701
- address::before {
702
- top: .15em;
703
- 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;
704
1337
  }
705
1338
 
706
- address::after {
707
- bottom: .15em;
708
- clip-path: circle(30% at 50% 50%);
1339
+ kbd::after
1340
+ {
1341
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXIta2V5Ym9hcmQiPjxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yIDZtMCAyYTIgMiAwIDAgMSAyIC0yaDE2YTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEgLTIgMmgtMTZhMiAyIDAgMCAxIC0yIC0yeiIgLz48cGF0aCBkPSJNNiAxMGwwIC4wMSIgLz48cGF0aCBkPSJNMTAgMTBsMCAuMDEiIC8+PHBhdGggZD0iTTE0IDEwbDAgLjAxIiAvPjxwYXRoIGQ9Ik0xOCAxMGwwIC4wMSIgLz48cGF0aCBkPSJNNiAxNGwwIC4wMSIgLz48cGF0aCBkPSJNMTggMTRsMCAuMDEiIC8+PHBhdGggZD0iTTEwIDE0bDQgLjAxIiAvPjwvc3ZnPg==");
709
1342
  }
710
1343
 
711
- del:has(p, pre, details, fieldset, table, dl)::before {
712
- top: .2em;
713
- 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==");
714
1347
  }
715
1348
 
716
- del:has(p, pre, details, fieldset, table, dl)::after {
717
- bottom: .2em;
718
- 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+");
719
1352
  }
720
1353
 
721
- ins:has(p, pre, details, fieldset, table, dl)::before {
722
- top: .2em;
723
- 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;
724
1358
  }
725
1359
 
726
- ins:has(p, pre, details, fieldset, table, dl)::after {
727
- bottom: .2em;
728
- 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");
729
1363
  }
730
1364
 
731
- :where(a[href]:has(p, pre, details, fieldset, table, dl))::before {
732
- top: .2em;
733
- 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+");
734
1368
  }
735
1369
 
736
- :where(a[href]:has(p, pre, details, fieldset, table, dl))::after {
737
- bottom: .2em;
738
- 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;
739
1373
  }
740
1374
 
741
1375
 
1376
+ /* 7 */
742
1377
 
743
- /* Scrollable Pres */
744
- pre {
745
- padding: 1em;
1378
+ button,
1379
+ select,
1380
+ textarea,
1381
+ input[type]
1382
+ {
1383
+ font: inherit;
1384
+
1385
+ /* 7a */
1386
+ height: 1lh;
746
1387
  border: 1px solid currentColor;
747
- overflow: auto;
748
- }
1388
+ padding: 0 .5em var(--lh-pad);
749
1389
 
1390
+ /* 7d */
1391
+ background-color: transparent;
750
1392
 
1393
+ /* 7e */
1394
+ accent-color: currentColor;
1395
+
1396
+ /* 7f */
1397
+ cursor: pointer;
1398
+ }
751
1399
 
752
1400
 
753
- /* Trued Forms */
1401
+ /* 7b */
754
1402
 
755
- button,
756
- :where(
757
- input:not([type]),
758
- input[type=tel],
759
- input[type=url],
760
- input[type=text],
761
- input[type=date],
762
- input[type=week],
763
- input[type=time],
764
- input[type=file],
765
- input[type=email],
766
- input[type=month],
767
- input[type=color],
768
- input[type=reset],
769
- input[type=submit],
770
- input[type=button],
771
- input[type=number],
772
- input[type=search],
773
- input[type=password],
774
- input[type=datetime-local]
775
- ) {
776
- border: 1px solid;
777
- font: inherit;
778
- padding: 0 .5em .15em;
779
- 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
+ {
780
1420
  vertical-align: middle;
781
- line-height: 1.2;
782
- width: fit-content;
783
1421
  }
784
1422
 
785
- select,
786
- ::picker(select) {
787
- 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;
788
1433
  }
789
1434
 
790
1435
 
791
- select {
792
- font: inherit;
793
- width: fit-content;
794
- gap: 2em;
795
- padding: 0 .3em .15em .3em;
796
- align-items: center;
1436
+ /* 8 */
797
1437
 
798
- /* Use lineheight over height to align ::picker to center. Sum to 2em considering padding bottom and border top & bottom */
799
- line-height: 1.725em;
1438
+ select
1439
+ {
1440
+ appearance: base-select;
1441
+ border-radius: 0;
1442
+ align-items: center;
800
1443
  }
801
1444
 
802
1445
  select::picker-icon {
803
1446
  transition: .4s rotate;
804
-
805
- /* avoid cutoff upon clicked */
806
- transform-origin: 40% 50%;
807
- transform: translateX(-1px);
1447
+ font-size: .7em;
808
1448
  }
809
1449
 
810
1450
  select:open::picker-icon {
811
1451
  rotate: 180deg;
812
1452
  }
813
1453
 
814
- option {
815
- height: 2.5em;
816
- padding: .3em .75em .45em;
817
- flex-flow: row-reverse;
818
- justify-content: space-between;
819
- gap: 3em;
820
- }
821
1454
 
822
- ::picker(select) {
823
- opacity: 0;
824
- 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;
825
1461
  }
826
1462
 
827
- ::picker(select):popover-open {
828
- 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;
829
1473
  }
830
1474
 
831
- @starting-style {
832
- ::picker(select):popover-open {
833
- opacity: 0;
834
- }
835
- }
836
1475
 
837
- input[type=range]
838
- {
839
- vertical-align: middle;
840
- }
1476
+ /* 9c */
841
1477
 
842
1478
  :where(
843
- input[type=radio],
844
- input[type=checkbox]
845
- ) {
846
- width: 1em;
847
- height: 1em;
848
- font: inherit;
849
- vertical-align: -.15em;
850
- outline-offset: 0;
851
- }
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;
852
1498
 
853
- textarea {
854
- border: 1px solid currentColor;
855
- font: inherit;
856
- padding: 0 .5em .25em;
857
- 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;
858
1506
  }
859
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
+ }
860
1512
 
861
-
862
- /* Pointed Interractables */
863
- summary,
864
- a,
865
- label,
866
- button,
867
- select,
868
- :where(
869
- input[type=date],
870
- input[type=week],
871
- input[type=time],
872
- input[type=file],
873
- input[type=month],
874
- input[type=color],
875
- input[type=reset],
876
- input[type=range],
877
- input[type=radio],
878
- input[type=button],
879
- input[type=submit],
880
- input[type=checkbox],
881
- input[type=datetime-local]
882
- ) {
883
- cursor: pointer;
1513
+ span:has(input[type=text]:only-child)::after
1514
+ {
1515
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItdGV4dC1pbmNyZWFzZSI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgc3Ryb2tlPSJub25lIi8+PHBhdGggZD0iTTQgMTlWOC41YTMuNSAzLjUgMCAxIDEgNyAwVjE5bS03LTZoN203LTR2Nm0zLTNoLTYiLz48L3N2Zz4=");
884
1516
  }
885
1517
 
1518
+ span:has(input[type=tel]:only-child)::after
1519
+ {
1520
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItcGhvbmUiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIHN0cm9rZT0ibm9uZSIvPjxwYXRoIGQ9Ik01IDRoNGwyIDUtMi41IDEuNWExMSAxMSAwIDAgMCA1IDVMMTUgMTNsNSAydjRhMiAyIDAgMCAxLTIgMkExNiAxNiAwIDAgMSAzIDZhMiAyIDAgMCAxIDItMiIvPjwvc3ZnPg==");
1521
+ }
886
1522
 
887
- :where(label:has(textarea, select, input:not([type=checkbox], [type=radio], [type=range]))) {
888
- display: grid;
889
- 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+");
890
1526
  }
891
1527
 
892
- :where(label:has(textarea, select, input:not([type=checkbox], [type=radio], [type=range])) + button) {
893
- display: block;
894
- 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=");
895
1531
  }
896
1532
 
1533
+ span:has(input[type=password]:only-child)::after
1534
+ {
1535
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItcGFzc3dvcmQiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIHN0cm9rZT0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiAxMHY0bS0yLTEgNC0ybS00IDAgNCAybS05LTN2NG0tMi0xIDQtMm0tNCAwIDQgMm0xMi0zdjRtLTItMSA0LTJtLTQgMCA0IDIiLz48L3N2Zz4=");
1536
+ }
897
1537
 
898
- summary {
899
- font-weight: bold;
900
- 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+");
901
1541
  }