clio.css 0.9.2 → 0.12.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.
- package/AGENTS.md +10 -6
- package/EVIDENCE.md +130 -9
- package/README.md +96 -3
- package/THIRD-PARTY.md +37 -3
- package/dist/art/cursors/arrow-2x.png +0 -0
- package/dist/art/cursors/arrow-3x.png +0 -0
- package/dist/art/cursors/arrow.png +0 -0
- package/dist/art/cursors/ibeam-2x.png +0 -0
- package/dist/art/cursors/ibeam-3x.png +0 -0
- package/dist/art/cursors/ibeam.png +0 -0
- package/dist/art/cursors/watch-2x.png +0 -0
- package/dist/art/cursors/watch-3x.png +0 -0
- package/dist/art/cursors/watch.png +0 -0
- package/dist/art/drawingboard/help-button.png +0 -0
- package/dist/art/drawingboard/parts/chasing-arrows.png +0 -0
- package/dist/art/drawingboard/parts/disclosure-open.png +0 -0
- package/dist/art/drawingboard/parts/disclosure.png +0 -0
- package/dist/art/drawingboard/parts/hpair-dec-on.png +0 -0
- package/dist/art/drawingboard/parts/hpair-inc-on.png +0 -0
- package/dist/art/drawingboard/parts/hpair-off.png +0 -0
- package/dist/art/drawingboard/parts/hpair.png +0 -0
- package/dist/art/drawingboard/parts/little-arrows-disabled.png +0 -0
- package/dist/art/drawingboard/parts/little-arrows-down.png +0 -0
- package/dist/art/drawingboard/parts/little-arrows-up.png +0 -0
- package/dist/art/drawingboard/parts/little-arrows.png +0 -0
- package/dist/art/drawingboard/parts/menu-scroll-down.png +0 -0
- package/dist/art/drawingboard/parts/menu-scroll-up.png +0 -0
- package/dist/art/drawingboard/parts/slider-thumb.png +0 -0
- package/dist/art/drawingboard/parts/vpair-dec-on.png +0 -0
- package/dist/art/drawingboard/parts/vpair-inc-on.png +0 -0
- package/dist/art/drawingboard/parts/vpair-off.png +0 -0
- package/dist/art/drawingboard/parts/vpair.png +0 -0
- package/dist/art/drawingboard/slider-track.png +0 -0
- package/dist/art/drawingboard/window-bottom-inactive-tiled.svg +1 -0
- package/dist/art/drawingboard/window-bottom-tiled.svg +1 -0
- package/dist/art/drawingboard/window-top-inactive-tiled.svg +1 -0
- package/dist/art/drawingboard/window-top-tiled.svg +1 -0
- package/dist/art/platinum/balloon-tail.png +0 -0
- package/dist/art/platinum/balloon.png +0 -0
- package/dist/art/platinum/bevel-held.png +0 -0
- package/dist/art/platinum/bevel-menu-arrow.png +0 -0
- package/dist/art/platinum/bevel.png +0 -0
- package/dist/art/platinum/chasing-arrows.png +0 -0
- package/dist/art/platinum/disclosure-open.png +0 -0
- package/dist/art/platinum/disclosure.png +0 -0
- package/dist/art/platinum/help-button.png +0 -0
- package/dist/art/platinum/little-arrows-disabled.png +0 -0
- package/dist/art/platinum/little-arrows.png +0 -0
- package/dist/art/platinum/slider-thumb.png +0 -0
- package/dist/art/platinum/slider-track.png +0 -0
- package/dist/art/platinum/sort-direction.png +0 -0
- package/dist/art/platinum/utility-close.png +0 -0
- package/dist/art/platinum/utility-collapse-side.png +0 -0
- package/dist/art/platinum/utility-collapse.png +0 -0
- package/dist/art/platinum/utility-dots.png +0 -0
- package/dist/art/platinum/utility-zoom.png +0 -0
- package/dist/art/system7/disclosure-open.png +0 -0
- package/dist/art/system7/disclosure.png +0 -0
- package/dist/art/system7/little-arrows.png +0 -0
- package/dist/art/system7/menu-scroll-down.png +0 -0
- package/dist/art/system7/menu-scroll-up.png +0 -0
- package/dist/clio.css +3632 -1045
- package/dist/clio.drawingboard.css +2650 -325
- package/dist/clio.drawingboard.min.css +2 -2
- package/dist/clio.js +1024 -0
- package/dist/clio.min.css +2 -2
- package/dist/clio.min.js +13 -0
- package/dist/clio.platinum.css +3096 -857
- package/dist/clio.platinum.min.css +2 -2
- package/dist/clio.system6.css +1640 -175
- package/dist/clio.system6.min.css +2 -2
- package/dist/clio.system7.css +1685 -182
- package/dist/clio.system7.min.css +2 -2
- package/dist/components.json +1102 -21
- package/dist/fonts/ClioSans97Plain.woff2 +0 -0
- package/dist/fonts/ClioSans97PlainExact.woff2 +0 -0
- package/dist/fonts/ClioSans97TitlePlain.woff2 +0 -0
- package/dist/fonts/ClioSans97TitlePlainExact.woff2 +0 -0
- package/dist/fonts/FusionPixel12-JA.woff2 +0 -0
- package/dist/fonts/FusionPixel12-KO.woff2 +0 -0
- package/dist/fonts/FusionPixel12-SC.woff2 +0 -0
- package/dist/fonts/FusionPixel12-TC.woff2 +0 -0
- package/dist/fonts/OFL-FusionPixel.txt +399 -0
- package/dist/fonts/Virtue.woff2 +0 -0
- package/llms.txt +14 -1
- package/package.json +6 -3
package/dist/clio.system6.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! clio.css 0.
|
|
1
|
+
/*! clio.css 0.12.0 (System 6 only) | MIT | https://surfine.github.io/clio.css/
|
|
2
2
|
* Classic Mac OS interface CSS: System 6, System 7, Mac OS 8.5 Drawing Board and Mac OS 9 Platinum.
|
|
3
3
|
* Measured values traced to AI System 6; see EVIDENCE.md.
|
|
4
4
|
* Includes art from system.css (MIT) and pixel reconstructions of Apple control art; see THIRD-PARTY.md. */
|
|
@@ -28,6 +28,16 @@
|
|
|
28
28
|
/* Clio Sans '97: Charcoal 12 rebuilt the same way from Mac OS 9.0's Key Caps
|
|
29
29
|
(fonts-src/clio-sans-97.txt). Charcoal has one weight, so the face covers
|
|
30
30
|
every weight and the browser never thickens it. */
|
|
31
|
+
/* Each colour face is declared twice: the Plain file alone first, then both. An
|
|
32
|
+
engine that cannot parse tech() (Safari before 17) drops the second rule and
|
|
33
|
+
keeps the first instead of losing the face. */
|
|
34
|
+
@font-face {
|
|
35
|
+
font-family: "Clio Sans '97";
|
|
36
|
+
src: url("fonts/ClioSans97Plain.woff2") format("woff2");
|
|
37
|
+
font-weight: 100 900;
|
|
38
|
+
font-display: swap;
|
|
39
|
+
}
|
|
40
|
+
|
|
31
41
|
@font-face {
|
|
32
42
|
font-family: "Clio Sans '97";
|
|
33
43
|
src: url("fonts/ClioSans97.woff2") format("woff2") tech(color-COLRv1),
|
|
@@ -38,10 +48,18 @@
|
|
|
38
48
|
|
|
39
49
|
/* Clio Sans '97's antialiasing is COLRv1 colour layers. A browser without
|
|
40
50
|
COLRv1 (Safari) would paint every layer solid, so it gets the Plain file:
|
|
41
|
-
the same
|
|
42
|
-
|
|
51
|
+
the same levels as COLRv0 layers, which Safari draws (fully covered pixels
|
|
52
|
+
in the text colour, the others black at their alpha unless a palette below
|
|
53
|
+
recolours them), over outlines for browsers with no colour fonts. */
|
|
43
54
|
/* Clio Sans '97 Title: the same face as window titles draw it (a few faint
|
|
44
55
|
pixels fewer than menus and buttons), for title bars only. */
|
|
56
|
+
@font-face {
|
|
57
|
+
font-family: "Clio Sans '97 Title";
|
|
58
|
+
src: url("fonts/ClioSans97TitlePlain.woff2") format("woff2");
|
|
59
|
+
font-weight: 100 900;
|
|
60
|
+
font-display: swap;
|
|
61
|
+
}
|
|
62
|
+
|
|
45
63
|
@font-face {
|
|
46
64
|
font-family: "Clio Sans '97 Title";
|
|
47
65
|
src: url("fonts/ClioSans97Title.woff2") format("woff2") tech(color-COLRv1),
|
|
@@ -57,10 +75,24 @@
|
|
|
57
75
|
page that recolours a title or a button label also sets --clio-font-window-title
|
|
58
76
|
or --clio-font-button back to a stack without "Exact", and gets Clio Sans
|
|
59
77
|
'97 in its colour, within one level of the real screen. */
|
|
78
|
+
@font-face {
|
|
79
|
+
font-family: "Clio Sans '97 Exact";
|
|
80
|
+
src: url("fonts/ClioSans97PlainExact.woff2") format("woff2");
|
|
81
|
+
font-weight: 100 900;
|
|
82
|
+
font-display: swap;
|
|
83
|
+
}
|
|
84
|
+
|
|
60
85
|
@font-face {
|
|
61
86
|
font-family: "Clio Sans '97 Exact";
|
|
62
87
|
src: url("fonts/ClioSans97Exact.woff2") format("woff2") tech(color-COLRv1),
|
|
63
|
-
url("fonts/
|
|
88
|
+
url("fonts/ClioSans97PlainExact.woff2") format("woff2");
|
|
89
|
+
font-weight: 100 900;
|
|
90
|
+
font-display: swap;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@font-face {
|
|
94
|
+
font-family: "Clio Sans '97 Title Exact";
|
|
95
|
+
src: url("fonts/ClioSans97TitlePlainExact.woff2") format("woff2");
|
|
64
96
|
font-weight: 100 900;
|
|
65
97
|
font-display: swap;
|
|
66
98
|
}
|
|
@@ -68,7 +100,7 @@
|
|
|
68
100
|
@font-face {
|
|
69
101
|
font-family: "Clio Sans '97 Title Exact";
|
|
70
102
|
src: url("fonts/ClioSans97TitleExact.woff2") format("woff2") tech(color-COLRv1),
|
|
71
|
-
url("fonts/
|
|
103
|
+
url("fonts/ClioSans97TitlePlainExact.woff2") format("woff2");
|
|
72
104
|
font-weight: 100 900;
|
|
73
105
|
font-display: swap;
|
|
74
106
|
}
|
|
@@ -214,6 +246,126 @@
|
|
|
214
246
|
14 #9c9c94;
|
|
215
247
|
}
|
|
216
248
|
|
|
249
|
+
@font-palette-values --clio-aa-rdoc-title {
|
|
250
|
+
font-family: "Clio Sans '97 Title Exact";
|
|
251
|
+
override-colors:
|
|
252
|
+
0 #101010,
|
|
253
|
+
1 #212121,
|
|
254
|
+
2 #323232,
|
|
255
|
+
3 #444444,
|
|
256
|
+
4 #555555,
|
|
257
|
+
5 #666666,
|
|
258
|
+
6 #777777,
|
|
259
|
+
7 #878787,
|
|
260
|
+
8 #989898,
|
|
261
|
+
9 #a9a9a9,
|
|
262
|
+
10 #bababa,
|
|
263
|
+
11 #cccccc,
|
|
264
|
+
12 #dddddd,
|
|
265
|
+
13 #eeeeee,
|
|
266
|
+
14 #ffffff;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
@font-palette-values --clio-aa-rdoc-title-inactive {
|
|
270
|
+
font-family: "Clio Sans '97 Title Exact";
|
|
271
|
+
override-colors:
|
|
272
|
+
0 #eeeeee,
|
|
273
|
+
1 #dddddd,
|
|
274
|
+
2 #cccccc,
|
|
275
|
+
3 #bababa,
|
|
276
|
+
4 #a9a9a9,
|
|
277
|
+
5 #989898,
|
|
278
|
+
6 #878787,
|
|
279
|
+
7 #777777,
|
|
280
|
+
8 #666666,
|
|
281
|
+
9 #555555,
|
|
282
|
+
10 #444444,
|
|
283
|
+
11 #323232,
|
|
284
|
+
12 #212121,
|
|
285
|
+
13 #101010,
|
|
286
|
+
14 #000000;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/* COLRv0 edge levels in other text colours (Safari; Chrome's COLRv1 file
|
|
290
|
+
follows the text colour by itself and ignores these): white for chosen
|
|
291
|
+
menu titles, items and icon labels, #6f6f6f for dimmed items. */
|
|
292
|
+
@font-palette-values --clio-aa-white {
|
|
293
|
+
font-family: "Clio Sans '97";
|
|
294
|
+
override-colors:
|
|
295
|
+
0 rgb(255 255 255 / 0.0667),
|
|
296
|
+
1 rgb(255 255 255 / 0.1333),
|
|
297
|
+
2 rgb(255 255 255 / 0.2000),
|
|
298
|
+
3 rgb(255 255 255 / 0.2667),
|
|
299
|
+
4 rgb(255 255 255 / 0.3333),
|
|
300
|
+
5 rgb(255 255 255 / 0.4000),
|
|
301
|
+
6 rgb(255 255 255 / 0.4667),
|
|
302
|
+
7 rgb(255 255 255 / 0.5333),
|
|
303
|
+
8 rgb(255 255 255 / 0.6000),
|
|
304
|
+
9 rgb(255 255 255 / 0.6667),
|
|
305
|
+
10 rgb(255 255 255 / 0.7333),
|
|
306
|
+
11 rgb(255 255 255 / 0.8000),
|
|
307
|
+
12 rgb(255 255 255 / 0.8667),
|
|
308
|
+
13 rgb(255 255 255 / 0.9333);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
@font-palette-values --clio-aa-6f6f6f {
|
|
312
|
+
font-family: "Clio Sans '97";
|
|
313
|
+
override-colors:
|
|
314
|
+
0 rgb(111 111 111 / 0.0667),
|
|
315
|
+
1 rgb(111 111 111 / 0.1333),
|
|
316
|
+
2 rgb(111 111 111 / 0.2000),
|
|
317
|
+
3 rgb(111 111 111 / 0.2667),
|
|
318
|
+
4 rgb(111 111 111 / 0.3333),
|
|
319
|
+
5 rgb(111 111 111 / 0.4000),
|
|
320
|
+
6 rgb(111 111 111 / 0.4667),
|
|
321
|
+
7 rgb(111 111 111 / 0.5333),
|
|
322
|
+
8 rgb(111 111 111 / 0.6000),
|
|
323
|
+
9 rgb(111 111 111 / 0.6667),
|
|
324
|
+
10 rgb(111 111 111 / 0.7333),
|
|
325
|
+
11 rgb(111 111 111 / 0.8000),
|
|
326
|
+
12 rgb(111 111 111 / 0.8667),
|
|
327
|
+
13 rgb(111 111 111 / 0.9333);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/* Drawing Board's menu text (#313131) and dimmed text (#8c8c8c), for Safari's COLRv0 file. */
|
|
331
|
+
@font-palette-values --clio-aa-313131 {
|
|
332
|
+
font-family: "Clio Sans '97";
|
|
333
|
+
override-colors:
|
|
334
|
+
0 rgb(49 49 49 / 0.0667),
|
|
335
|
+
1 rgb(49 49 49 / 0.1333),
|
|
336
|
+
2 rgb(49 49 49 / 0.2000),
|
|
337
|
+
3 rgb(49 49 49 / 0.2667),
|
|
338
|
+
4 rgb(49 49 49 / 0.3333),
|
|
339
|
+
5 rgb(49 49 49 / 0.4000),
|
|
340
|
+
6 rgb(49 49 49 / 0.4667),
|
|
341
|
+
7 rgb(49 49 49 / 0.5333),
|
|
342
|
+
8 rgb(49 49 49 / 0.6000),
|
|
343
|
+
9 rgb(49 49 49 / 0.6667),
|
|
344
|
+
10 rgb(49 49 49 / 0.7333),
|
|
345
|
+
11 rgb(49 49 49 / 0.8000),
|
|
346
|
+
12 rgb(49 49 49 / 0.8667),
|
|
347
|
+
13 rgb(49 49 49 / 0.9333);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
@font-palette-values --clio-aa-8c8c8c {
|
|
351
|
+
font-family: "Clio Sans '97";
|
|
352
|
+
override-colors:
|
|
353
|
+
0 rgb(140 140 140 / 0.0667),
|
|
354
|
+
1 rgb(140 140 140 / 0.1333),
|
|
355
|
+
2 rgb(140 140 140 / 0.2000),
|
|
356
|
+
3 rgb(140 140 140 / 0.2667),
|
|
357
|
+
4 rgb(140 140 140 / 0.3333),
|
|
358
|
+
5 rgb(140 140 140 / 0.4000),
|
|
359
|
+
6 rgb(140 140 140 / 0.4667),
|
|
360
|
+
7 rgb(140 140 140 / 0.5333),
|
|
361
|
+
8 rgb(140 140 140 / 0.6000),
|
|
362
|
+
9 rgb(140 140 140 / 0.6667),
|
|
363
|
+
10 rgb(140 140 140 / 0.7333),
|
|
364
|
+
11 rgb(140 140 140 / 0.8000),
|
|
365
|
+
12 rgb(140 140 140 / 0.8667),
|
|
366
|
+
13 rgb(140 140 140 / 0.9333);
|
|
367
|
+
}
|
|
368
|
+
|
|
217
369
|
/* Clio Sans '97 Display: Charcoal's outlines, traced from Mac OS 9.0 drawing it
|
|
218
370
|
at 72 points (fonts/ClioSans97Display.woff2, tooling/trace-outline.py), for
|
|
219
371
|
every size that is not 12px or a multiple of it. */
|
|
@@ -270,6 +422,12 @@
|
|
|
270
422
|
fallback colour where background-clip: text is missing. */
|
|
271
423
|
--clio-disabled-dither: var(--clio-art-s6-gray50);
|
|
272
424
|
--clio-disabled-fill: transparent;
|
|
425
|
+
/* A dimmed pop-up menu: the whole control (frame, shadow, title, arrow) drawn
|
|
426
|
+
through the 50% gray, the ink where x + y is odd surviving (System 7.5.3,
|
|
427
|
+
Memory's Select Hard Disk with virtual memory off, measured). The pattern
|
|
428
|
+
starts at the control's corner, not the screen's. */
|
|
429
|
+
--clio-popup-disabled-mask: var(--clio-art-s6-gray50) 0 0 / 2px 2px; /* a crisp 2x2 picture: a gradient blurs at 2x in Firefox */
|
|
430
|
+
--clio-popup-disabled-fg: var(--clio-ink);
|
|
273
431
|
--clio-selection-bg: #000000;
|
|
274
432
|
--clio-selection-fg: #ffffff;
|
|
275
433
|
|
|
@@ -279,6 +437,7 @@
|
|
|
279
437
|
/* Geneva 9: the Finder info line, icon names, status lines. */
|
|
280
438
|
--clio-font-small: "Clio Text '84 9", Geneva, "Helvetica Neue", Arial, sans-serif;
|
|
281
439
|
--clio-text-smoothing: none;
|
|
440
|
+
--clio-text-smoothing-moz: grayscale; /* Firefox's nearest to none */
|
|
282
441
|
--clio-font-mono: Monaco, Menlo, Consolas, "Courier New", monospace;
|
|
283
442
|
/* Chrome type at sizes other than 12px and its multiples (.display): an
|
|
284
443
|
outline face, smoothed. */
|
|
@@ -298,6 +457,12 @@
|
|
|
298
457
|
--clio-radius: 0;
|
|
299
458
|
--clio-control-height: 20px;
|
|
300
459
|
--clio-field-height: 20px;
|
|
460
|
+
/* clio.js's insertion point: the font's line height, 16px for 12pt (System
|
|
461
|
+
7.5.3, Find File's 20px field: rows 2-17), whatever the field's line-height. */
|
|
462
|
+
--clio-caret-height: 16px;
|
|
463
|
+
/* ...and its blink: CaretTime, 32 ticks lit and 32 dark (System 6.0.8 and 7.5.3 Find File;
|
|
464
|
+
PRAM's factory value in the Mac IIx and Quadra 650 ROMs). */
|
|
465
|
+
--clio-caret-ticks: 32;
|
|
301
466
|
--clio-row-height: 16px;
|
|
302
467
|
--clio-gap: 8px;
|
|
303
468
|
|
|
@@ -422,6 +587,7 @@
|
|
|
422
587
|
/* Edit text: 1px frame, text inset 3px (Control Panel RAM cache field). */
|
|
423
588
|
--clio-field-padding: 3px;
|
|
424
589
|
--clio-field-focus-shadow: none;
|
|
590
|
+
--clio-field-focus-outline: var(--clio-focus-outline);
|
|
425
591
|
|
|
426
592
|
/* Pop-up menus */
|
|
427
593
|
--clio-popup-bg: var(--clio-paper);
|
|
@@ -440,12 +606,43 @@
|
|
|
440
606
|
QuickDraw's ltGray, one dot in four. */
|
|
441
607
|
--clio-scrollbar-size: 15px;
|
|
442
608
|
--clio-scrollbar-track: var(--clio-art-s6-ltgray) 0 0 / 4px 2px repeat, #ffffff;
|
|
609
|
+
/* clio.js scroll bars: System 6 and 7 drag an outline of the box and scroll
|
|
610
|
+
on release; the box keeps one length, whatever the document's. */
|
|
611
|
+
--clio-scrollbar-thumb-length: 16px;
|
|
612
|
+
--clio-scrollbar-thumb-tracking: outline;
|
|
613
|
+
--clio-scrollbar-thumb-overlap: 0px;
|
|
614
|
+
--clio-scrollbar-thumb-after: none;
|
|
615
|
+
/* clio.js: a held arrow or lane repeats at once (System 6 and 7's TrackControl
|
|
616
|
+
calls the action on every pass while the button is down) */
|
|
617
|
+
--clio-scrollbar-repeat-delay: 0ms;
|
|
618
|
+
/* clio.js menus: System 6 and 7 menus stay open only while the button is held */
|
|
619
|
+
--clio-menu-sticky: 0;
|
|
620
|
+
/* clio.js: the grey outline of a dragged window (System 6.0.8 and 7.5.3: 1px) */
|
|
621
|
+
--clio-drag-outline-width: 1px;
|
|
622
|
+
/* ... around the window and its 1px shadow (both measured) */
|
|
623
|
+
--clio-drag-outline-extra: 1px;
|
|
624
|
+
/* clio.zoomRects() (System 7.5.3, measured): 8 outlines at (1.6^k - 1) / (1.6^8 - 1)
|
|
625
|
+
of the way, 4 on screen at once */
|
|
626
|
+
--clio-zoom-count: 8;
|
|
627
|
+
--clio-zoom-steps: 8;
|
|
628
|
+
--clio-zoom-ratio: 1.6;
|
|
629
|
+
--clio-zoom-offset: 1;
|
|
630
|
+
--clio-zoom-keep: 4;
|
|
631
|
+
--clio-drag-outline-shadow-inset: 0px; /* System 6: the region is the whole rectangle, though the shadow is drawn from a pixel in */
|
|
632
|
+
/* clio.js: a dragged scroll box leaves its frame XORed with dkGray (System
|
|
633
|
+
6.0.8, measured): white where dkGray is set, in step with the lane's ltGray,
|
|
634
|
+
inverting what is under it, so over the lane it comes out solid black. */
|
|
635
|
+
--clio-scrollbar-ghost: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='2' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff' d='M1 0h3v1H1zM0 1h2v1H0zM3 1h1v1H3z'/%3E%3C/svg%3E") 0 0 / 4px 2px repeat;
|
|
636
|
+
--clio-scrollbar-ghost-blend: difference;
|
|
637
|
+
/* clio.js: the box sits inside the bar's line, 14px wide (System 6.0.8, System Folder list) */
|
|
638
|
+
--clio-scrollbar-thumb-inset: 1px;
|
|
443
639
|
--clio-scrollbar-track-shadow: none;
|
|
444
640
|
--clio-scrollbar-thumb-bg: var(--clio-paper);
|
|
445
641
|
--clio-scrollbar-thumb-border: 1px solid var(--clio-ink);
|
|
446
642
|
--clio-scrollbar-thumb-shadow: none;
|
|
447
643
|
--clio-scrollbar-button-bg: var(--clio-paper);
|
|
448
644
|
--clio-scrollbar-button-shadow: none;
|
|
645
|
+
--clio-scrollbar-button-bevel: none;
|
|
449
646
|
--clio-scrollbar-up: var(--clio-art-s6-up);
|
|
450
647
|
--clio-scrollbar-up-on: var(--clio-art-s6-up-on);
|
|
451
648
|
--clio-scrollbar-down: var(--clio-art-s6-down);
|
|
@@ -548,6 +745,99 @@
|
|
|
548
745
|
--clio-art-s6-grow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M2 2h7v1h-7zM2 3h1v1h-1zM8 3h1v1h-1zM2 4h1v1h-1zM8 4h5v1h-5zM2 5h1v1h-1zM8 5h1v1h-1zM12 5h1v1h-1zM2 6h1v1h-1zM8 6h1v1h-1zM12 6h1v1h-1zM2 7h1v1h-1zM8 7h1v1h-1zM12 7h1v1h-1zM2 8h7v1h-7zM12 8h1v1h-1zM4 9h1v1h-1zM12 9h1v1h-1zM4 10h1v1h-1zM12 10h1v1h-1zM4 11h1v1h-1zM12 11h1v1h-1zM4 12h9v1h-9z'/%3E%3C/svg%3E");
|
|
549
746
|
--clio-art-s6-dkgray: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='2' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M0 0h1v1h-1zM2 0h2v1h-2zM0 1h3v1h-3z'/%3E%3Cpath fill='%23fff' d='M1 0h1v1h-1zM3 1h1v1h-1z'/%3E%3C/svg%3E");
|
|
550
747
|
--clio-art-s6-menucheck: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='8' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M8 0h1v1h-1zM7 1h2v1h-2zM6 2h2v1h-2zM5 3h2v1h-2zM0 4h1v1h-1zM4 4h2v1h-2zM0 5h2v1h-2zM3 5h2v1h-2zM1 6h3v1h-3zM2 7h1v1h-1z'/%3E%3C/svg%3E");
|
|
748
|
+
/* Disclosure triangle: System 6 had none; it takes System 7's (Finder list
|
|
749
|
+
view, 11px, black with a blue and white checker). */
|
|
750
|
+
--clio-disclosure-size: 11px;
|
|
751
|
+
--clio-disclosure-gap: 4px;
|
|
752
|
+
--clio-art-disclosure: url("art/system7/disclosure.png");
|
|
753
|
+
--clio-art-disclosure-open: url("art/system7/disclosure-open.png");
|
|
754
|
+
|
|
755
|
+
/* List view (Finder, View by Name; System 7.5.3): headers on the window's
|
|
756
|
+
white, the sorted one underlined, a double rule (black, white, black) below. */
|
|
757
|
+
--clio-list-view-bg: var(--clio-paper);
|
|
758
|
+
--clio-list-view-row: 16px;
|
|
759
|
+
--clio-list-view-header-height: 20px;
|
|
760
|
+
--clio-list-view-header-padding: 0 4px 3px;
|
|
761
|
+
--clio-list-view-header-bg: linear-gradient(var(--clio-ink), var(--clio-ink)) 0 calc(100% - 2px) / 100% 1px no-repeat, linear-gradient(var(--clio-ink), var(--clio-ink)) 0 100% / 100% 1px no-repeat;
|
|
762
|
+
--clio-list-view-sorted-header-bg: var(--clio-list-view-header-bg);
|
|
763
|
+
--clio-list-view-sorted-decoration: underline;
|
|
764
|
+
--clio-list-view-sorted-bg: transparent;
|
|
765
|
+
--clio-list-view-sort-width: 0;
|
|
766
|
+
|
|
767
|
+
/* Slider: System 6 had none; it takes Platinum's (Mouse control panel,
|
|
768
|
+
Mac OS 9.0) until an era draws its own. */
|
|
769
|
+
--clio-slider-height: 16px;
|
|
770
|
+
--clio-slider-track-height: 7px;
|
|
771
|
+
--clio-slider-track-top: 3px;
|
|
772
|
+
--clio-slider-track-slice: 3px;
|
|
773
|
+
--clio-slider-track-slice-n: 3;
|
|
774
|
+
--clio-slider-thumb-width: 15px;
|
|
775
|
+
--clio-slider-thumb-height: 16px;
|
|
776
|
+
--clio-art-slider-track: url("art/platinum/slider-track.png");
|
|
777
|
+
--clio-art-slider-thumb: url("art/platinum/slider-thumb.png");
|
|
778
|
+
--clio-slider-tick-gap: 0px;
|
|
779
|
+
--clio-slider-tick-count: 5;
|
|
780
|
+
--clio-slider-tick-offset: 9px;
|
|
781
|
+
--clio-slider-tick-run: 18px;
|
|
782
|
+
--clio-slider-tick-light: #ffffff;
|
|
783
|
+
--clio-slider-tick-ink: #000000;
|
|
784
|
+
--clio-slider-tick-shade: #888888;
|
|
785
|
+
|
|
786
|
+
/* Little arrows: System 6 had none; it takes System 7's (Memory control
|
|
787
|
+
panel, Cache Size: 15x25). Held and dimmed states are not on System 7's
|
|
788
|
+
screens and keep the normal picture. */
|
|
789
|
+
--clio-little-arrows-width: 15px;
|
|
790
|
+
--clio-little-arrows-height: 25px;
|
|
791
|
+
--clio-art-little-arrows: url("art/system7/little-arrows.png");
|
|
792
|
+
--clio-art-little-arrows-up: var(--clio-art-little-arrows);
|
|
793
|
+
--clio-art-little-arrows-down: var(--clio-art-little-arrows);
|
|
794
|
+
--clio-art-little-arrows-disabled: var(--clio-art-little-arrows);
|
|
795
|
+
|
|
796
|
+
/* Bevel button: System 6 and 7 had none; they take Platinum's
|
|
797
|
+
(Navigation Services, Mac OS 9.0). */
|
|
798
|
+
--clio-bevel-min: 20px;
|
|
799
|
+
--clio-bevel-padding: 0 2px;
|
|
800
|
+
--clio-bevel-slice: 3px;
|
|
801
|
+
--clio-bevel-slice-n: 3;
|
|
802
|
+
--clio-art-bevel: url("art/platinum/bevel.png");
|
|
803
|
+
--clio-art-bevel-held: url("art/platinum/bevel-held.png");
|
|
804
|
+
--clio-art-bevel-menu-arrow: url("art/platinum/bevel-menu-arrow.png");
|
|
805
|
+
--clio-bevel-arrow-right: 5px;
|
|
806
|
+
--clio-bevel-arrow-bottom: 4px;
|
|
807
|
+
--clio-bevel-arrow-width: 3px;
|
|
808
|
+
--clio-bevel-arrow-height: 2px;
|
|
809
|
+
|
|
810
|
+
/* Chasing arrows: Platinum's three frames (Network Browser, Mac OS 9.0). */
|
|
811
|
+
--clio-art-chasing-arrows: url("art/platinum/chasing-arrows.png");
|
|
812
|
+
--clio-chasing-arrows-frames: 3;
|
|
813
|
+
|
|
814
|
+
/* Separator: a 1px ink line. */
|
|
815
|
+
--clio-separator-height: 1px;
|
|
816
|
+
--clio-separator-margin: 8px 0;
|
|
817
|
+
--clio-separator-bg: var(--clio-ink);
|
|
818
|
+
|
|
819
|
+
/* Help button: Platinum's (Keyboard control panel, Mac OS 9.0). */
|
|
820
|
+
--clio-art-help-button: url("art/platinum/help-button.png");
|
|
821
|
+
--clio-image-well-bg: #ffffff;
|
|
822
|
+
|
|
823
|
+
/* Utility window: the document window's parts at the size of System 7's
|
|
824
|
+
floating windows (inferred: none was on the captured screens). */
|
|
825
|
+
--clio-utility-titlebar-height: 13px;
|
|
826
|
+
--clio-utility-titlebar-row: 11px;
|
|
827
|
+
--clio-utility-box-size: 9px;
|
|
828
|
+
--clio-utility-slot: 13px;
|
|
829
|
+
--clio-utility-title-size: 9px;
|
|
830
|
+
|
|
831
|
+
/* Help balloon: Mac OS 9.0's (Balloon Help), the same in every era. */
|
|
832
|
+
--clio-art-balloon: url("art/platinum/balloon.png");
|
|
833
|
+
--clio-art-balloon-tail: url("art/platinum/balloon-tail.png");
|
|
834
|
+
|
|
835
|
+
/* Scrolling menu arrows: System 6 and 7 (Control Panels submenu, System
|
|
836
|
+
7.5.3), black, 5px in from the item's left (up arrow inferred, mirrored). */
|
|
837
|
+
--clio-art-menu-scroll-down: url("art/system7/menu-scroll-down.png");
|
|
838
|
+
--clio-art-menu-scroll-up: url("art/system7/menu-scroll-up.png");
|
|
839
|
+
--clio-menu-scroll-left: 5px;
|
|
840
|
+
|
|
551
841
|
/* Frames cut from captures by tooling/frame-art.py. */
|
|
552
842
|
--clio-art-frame-s6-button: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAAAAAAD///+D3c/SAAAAAXRSTlMAQObYZgAAACpJREFUeJxjYAxgYBINZWBiYWFgCmB0YGJgYABhBqmVDEx//jAwMAYwAAA66QRtNyAoFwAAAABJRU5ErkJggg==");
|
|
553
843
|
--clio-art-frame-s6-button-held: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAAB1JREFUeJxjkGFgSmZgYmBg/N/IxABiMNSDSRkGACm1Aqb7EOVpAAAAAElFTkSuQmCC");
|
|
@@ -557,6 +847,7 @@
|
|
|
557
847
|
--clio-art-frame-p9-ring: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANBAMAAACAxflPAAAAG1BMVEUAAAAAAAB3d3fd3d3MzMy7u7uqqqoiIiKIiIhznn7oAAAAAXRSTlMAQObYZgAAAFpJREFUeJxjZGDnYmB7ycDCwKPAwPjzAwujgjEDg+x6xuLDrx6oOXEwCCcxMDAlCTAx/GMAISYGCEDQTGAOUyKLAoOKQgIjY6gAA9PO+4wMElwMDO8+MELNBwCaGBDQEM8mggAAAABJRU5ErkJggg==");
|
|
558
848
|
--clio-art-frame-p9-button-disabled: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAACIiIjd3d2RXqmqAAAAAXRSTlMAQObYZgAAACFJREFUeJxjYA1hYBINZWAKYHRgYmBgQMYMUisZGFhDGAAtsQJ9dgAT/gAAAABJRU5ErkJggg==");
|
|
559
849
|
--clio-art-frame-p9-popup: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAGFBMVEUAAAAAAAB3d3fd3d27u7uqqqoiIiL///+EaqngAAAAAXRSTlMAQObYZgAAACtJREFUeJxjYEhMYGBi5H/IwJh+klWbQYCBQYAl/OQnOwbGAEUGpv+C9gwAea0HTcaLsPwAAAAASUVORK5CYII=");
|
|
850
|
+
--clio-art-frame-p9-popup-open: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAGFBMVEUAAAAAAADd3d1mZmZEREQiIiKIiIj///+MKsksAAAAAXRSTlMAQObYZgAAACtJREFUeJxjEBQMYGBii//IwCjOKSbFIMDAIMAozun2iomB4fcGJgbG9wwAWK0GLJJZmp8AAAAASUVORK5CYII="); /* 7x7, slice 3 */
|
|
560
851
|
--clio-art-frame-p9-popup-disabled: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHAgMAAAC5PL9AAAAACVBMVEUAAACIiIjd3d2RXqmqAAAAAXRSTlMAQObYZgAAAB1JREFUeJxjZLVmEg5gChBhcGBh0ljAtOENI6s1ACDmA/qjrWTUAAAAAElFTkSuQmCC");
|
|
561
852
|
--clio-art-s6-gray50: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2' shape-rendering='crispEdges'%3E%3Cpath d='M1 0h1v1H1zM0 1h1v1H0z'/%3E%3C/svg%3E");
|
|
562
853
|
--clio-art-s6-menucheck-on: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='8' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff' d='M8 0h1v1h-1zM7 1h2v1h-2zM6 2h2v1h-2zM5 3h2v1h-2zM0 4h1v1h-1zM4 4h2v1h-2zM0 5h2v1h-2zM3 5h2v1h-2zM1 6h3v1h-3zM2 7h1v1h-1z'/%3E%3C/svg%3E");
|
|
@@ -566,6 +857,15 @@
|
|
|
566
857
|
--clio-art-s6-strip-menu: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='7' shape-rendering='crispEdges'%3E%3Cpath d='M0 0h1v7H0zM1 1h1v5H1zM2 2h1v3H2zM3 3h1v1H3z'/%3E%3C/svg%3E");
|
|
567
858
|
--clio-art-s6-strip-handle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='24' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff' d='M0 1h9l8 8v6l-8 8H0z'/%3E%3Cpath d='M0 0h10v1H0zM10 1h1v1h-1zM11 2h1v1h-1zM12 3h1v1h-1zM13 4h1v1h-1zM14 5h1v1h-1zM15 6h1v1h-1zM16 7h1v1h-1zM17 8h1v8h-1zM16 16h1v1h-1zM15 17h1v1h-1zM14 18h1v1h-1zM13 19h1v1h-1zM12 20h1v1h-1zM11 21h1v1h-1zM10 22h1v1h-1zM0 23h10v1H0zM5 6h1v1H5zM5 9h1v1H5zM5 12h1v1H5zM5 15h1v1H5zM5 18h1v1H5z'/%3E%3C/svg%3E");
|
|
568
859
|
--clio-art-s6-strip-tab: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='24' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff' d='M0 1h9l8 8v6l-8 8H0z'/%3E%3Cpath d='M0 0h10v1H0zM10 1h1v1h-1zM11 2h1v1h-1zM12 3h1v1h-1zM13 4h1v1h-1zM14 5h1v1h-1zM15 6h1v1h-1zM16 7h1v1h-1zM17 8h1v8h-1zM16 16h1v1h-1zM15 17h1v1h-1zM14 18h1v1h-1zM13 19h1v1h-1zM12 20h1v1h-1zM11 21h1v1h-1zM10 22h1v1h-1zM0 23h10v1H0zM5 6h1v1H5zM5 9h1v1H5zM5 12h1v1H5zM5 15h1v1H5zM5 18h1v1H5z'/%3E%3C/svg%3E");
|
|
860
|
+
/* Rounded-corner window (rDocProc): corner masks and frame curves, tooling/rare-art.py. */
|
|
861
|
+
--clio-art-rdoc-mask-tl: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M5 0h1v1h-1zM3 1h3v1h-3zM2 2h4v1h-4zM1 3h5v1h-5zM1 4h5v1h-5zM0 5h6v1h-6z'/%3E%3C/svg%3E");
|
|
862
|
+
--clio-art-rdoc-frame-tl: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M5 0h1v1h-1zM3 1h3v1h-3zM2 2h2v1h-2zM1 3h2v1h-2zM1 4h1v1h-1zM0 5h2v1h-2z'/%3E%3C/svg%3E");
|
|
863
|
+
--clio-art-rdoc-mask-tr: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M0 0h1v1h-1zM0 1h3v1h-3zM0 2h4v1h-4zM0 3h5v1h-5zM0 4h5v1h-5zM0 5h6v1h-6z'/%3E%3C/svg%3E");
|
|
864
|
+
--clio-art-rdoc-frame-tr: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M0 0h1v1h-1zM0 1h3v1h-3zM2 2h2v1h-2zM3 3h2v1h-2zM4 4h1v1h-1zM4 5h2v1h-2z'/%3E%3C/svg%3E");
|
|
865
|
+
--clio-art-rdoc-mask-bl: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M0 0h6v1h-6zM1 1h5v1h-5zM1 2h5v1h-5zM2 3h4v1h-4zM3 4h3v1h-3zM5 5h1v1h-1z'/%3E%3C/svg%3E");
|
|
866
|
+
--clio-art-rdoc-frame-bl: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M0 0h2v1h-2zM1 1h1v1h-1zM1 2h2v1h-2zM2 3h2v1h-2zM3 4h3v1h-3zM5 5h1v1h-1z'/%3E%3C/svg%3E");
|
|
867
|
+
--clio-art-rdoc-mask-br: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M0 0h6v1h-6zM0 1h5v1h-5zM0 2h5v1h-5zM0 3h4v1h-4zM0 4h3v1h-3zM0 5h1v1h-1z'/%3E%3C/svg%3E");
|
|
868
|
+
--clio-art-rdoc-frame-br: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M4 0h2v1h-2zM4 1h1v1h-1zM3 2h2v1h-2zM2 3h2v1h-2zM0 4h3v1h-3zM0 5h1v1h-1z'/%3E%3C/svg%3E");
|
|
569
869
|
}
|
|
570
870
|
|
|
571
871
|
/* Base. clio.css styles elements only inside its own components, plus bare
|
|
@@ -580,7 +880,7 @@
|
|
|
580
880
|
}
|
|
581
881
|
|
|
582
882
|
:where(.window, .menu-bar, [role="menubar"], [role="menu-bar"], .menu, [role="menu"],
|
|
583
|
-
.modal-dialog, .alert-box, .standard-dialog, .modeless-dialog, .clio) {
|
|
883
|
+
.modal-dialog, .alert-box, .standard-dialog, .modeless-dialog, .rounded-window, .clio) {
|
|
584
884
|
box-sizing: border-box;
|
|
585
885
|
color: var(--clio-ink);
|
|
586
886
|
font-family: var(--clio-font-chrome);
|
|
@@ -590,6 +890,7 @@
|
|
|
590
890
|
font-synthesis: none;
|
|
591
891
|
line-height: 16px;
|
|
592
892
|
-webkit-font-smoothing: var(--clio-font-smoothing);
|
|
893
|
+
-moz-osx-font-smoothing: grayscale; /* Firefox on macOS otherwise thickens the pixel squares with a grey fringe */
|
|
593
894
|
}
|
|
594
895
|
|
|
595
896
|
:where(.window, .modal-dialog, .alert-box, .standard-dialog, .modeless-dialog, .clio) *,
|
|
@@ -603,6 +904,7 @@
|
|
|
603
904
|
font-family: var(--clio-font-text);
|
|
604
905
|
font-stretch: var(--clio-font-stretch-text);
|
|
605
906
|
-webkit-font-smoothing: var(--clio-text-smoothing);
|
|
907
|
+
-moz-osx-font-smoothing: var(--clio-text-smoothing-moz);
|
|
606
908
|
}
|
|
607
909
|
|
|
608
910
|
:where(.window, .modal-dialog, .alert-box, .standard-dialog, .clio) :where(h1, h2, h3, h4, .heading) {
|
|
@@ -669,6 +971,37 @@
|
|
|
669
971
|
white-space: nowrap;
|
|
670
972
|
}
|
|
671
973
|
|
|
974
|
+
/* Cursors: the arrow, the I-beam and the watch redrawn pixel for pixel from System 7.5.3
|
|
975
|
+
and Mac OS 9.0 (tooling/cursor-art.py; the arrow is the same in both), at
|
|
976
|
+
1x, 2x and 3x. On by default; class="clio-system-cursors" on <html> gives
|
|
977
|
+
the system's own back. The Mac had no pointing hand: links and buttons
|
|
978
|
+
inside clio.css's windows keep the arrow. aria-busy="true" shows the watch
|
|
979
|
+
(its first frame; hot spot 8,8). */
|
|
980
|
+
:where(:root) {
|
|
981
|
+
--clio-cursor-arrow: image-set(url("art/cursors/arrow.png") 1x, url("art/cursors/arrow-2x.png") 2x, url("art/cursors/arrow-3x.png") 3x) 1 1, default;
|
|
982
|
+
--clio-cursor-text: image-set(url("art/cursors/ibeam.png") 1x, url("art/cursors/ibeam-2x.png") 2x, url("art/cursors/ibeam-3x.png") 3x) 3 4, text;
|
|
983
|
+
--clio-cursor-wait: image-set(url("art/cursors/watch.png") 1x, url("art/cursors/watch-2x.png") 2x, url("art/cursors/watch-3x.png") 3x) 8 8, wait;
|
|
984
|
+
cursor: var(--clio-cursor-arrow);
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
:where(:root.clio-system-cursors) {
|
|
988
|
+
--clio-cursor-arrow: default;
|
|
989
|
+
--clio-cursor-text: text;
|
|
990
|
+
--clio-cursor-wait: wait;
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
:where(input:not([type="checkbox"], [type="radio"], [type="range"], [type="button"], [type="submit"], [type="reset"], [type="color"], [type="file"], [type="image"]), textarea, [contenteditable]:not([contenteditable="false"])) {
|
|
994
|
+
cursor: var(--clio-cursor-text);
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
:where(.window, .menu-bar, [role="menubar"], .menu, [role="menu"], .modal-dialog, .alert-box, .standard-dialog, .modeless-dialog, .control-strip, .clio, .desktop) :where(a:any-link, button, label, summary, select, [role="button"], [role="tab"]) {
|
|
998
|
+
cursor: var(--clio-cursor-arrow);
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
:where([aria-busy="true"]), :where([aria-busy="true"]) * {
|
|
1002
|
+
cursor: var(--clio-cursor-wait);
|
|
1003
|
+
}
|
|
1004
|
+
|
|
672
1005
|
/* Windows.
|
|
673
1006
|
Markup: .window > .title-bar (> .close, .title, .resize [, .shade]) >
|
|
674
1007
|
optional .details-bar > .window-pane. system.css markup (.title-bar
|
|
@@ -760,7 +1093,7 @@
|
|
|
760
1093
|
font-size: 0;
|
|
761
1094
|
appearance: none;
|
|
762
1095
|
-webkit-appearance: none;
|
|
763
|
-
cursor:
|
|
1096
|
+
cursor: var(--clio-cursor-arrow);
|
|
764
1097
|
touch-action: manipulation;
|
|
765
1098
|
}
|
|
766
1099
|
|
|
@@ -785,7 +1118,7 @@
|
|
|
785
1118
|
|
|
786
1119
|
/* Held close or zoom box: System 6 draws the same starburst in both
|
|
787
1120
|
(measured, 6.0.8); the zoom box's inner square goes while it is held. */
|
|
788
|
-
.title-bar > :is(.close, .close-box, .resize, .resize-box, .zoom):is(:active, .active) {
|
|
1121
|
+
.title-bar > :is(.close, .close-box, .resize, .resize-box, .zoom):is(:active:where(:not([data-clio-off])), .active) {
|
|
789
1122
|
background: var(--clio-art-s6-burst) 0 0 / 11px 11px no-repeat border-box, var(--clio-paper);
|
|
790
1123
|
}
|
|
791
1124
|
|
|
@@ -803,7 +1136,7 @@
|
|
|
803
1136
|
box-sizing: border-box;
|
|
804
1137
|
}
|
|
805
1138
|
|
|
806
|
-
.title-bar > :is(.resize, .resize-box, .zoom):is(:active, .active)::before {
|
|
1139
|
+
.title-bar > :is(.resize, .resize-box, .zoom):is(:active:where(:not([data-clio-off])), .active)::before {
|
|
807
1140
|
opacity: 0;
|
|
808
1141
|
}
|
|
809
1142
|
|
|
@@ -858,9 +1191,15 @@
|
|
|
858
1191
|
white-space: nowrap;
|
|
859
1192
|
}
|
|
860
1193
|
|
|
1194
|
+
/* A separator line between groups in a window or dialog (Mac OS 8 HIG:
|
|
1195
|
+
"Separator Lines"): <hr class="separator"> or <div class="separator">. */
|
|
861
1196
|
:where(.separator) {
|
|
862
1197
|
flex: none;
|
|
863
|
-
|
|
1198
|
+
box-sizing: border-box;
|
|
1199
|
+
height: var(--clio-separator-height);
|
|
1200
|
+
margin: var(--clio-separator-margin);
|
|
1201
|
+
border: 0;
|
|
1202
|
+
background: var(--clio-separator-bg);
|
|
864
1203
|
}
|
|
865
1204
|
|
|
866
1205
|
/* A status line under the pane. */
|
|
@@ -876,6 +1215,17 @@
|
|
|
876
1215
|
line-height: 14px;
|
|
877
1216
|
}
|
|
878
1217
|
|
|
1218
|
+
/* Collapsed (WindowShade; clio.js toggles .collapsed from the collapse box):
|
|
1219
|
+
only the title bar stays. */
|
|
1220
|
+
:where(.window.collapsed) {
|
|
1221
|
+
height: auto !important;
|
|
1222
|
+
min-height: 0 !important;
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
:where(.window.collapsed) > :not(.title-bar) {
|
|
1226
|
+
display: none !important;
|
|
1227
|
+
}
|
|
1228
|
+
|
|
879
1229
|
/* Menu bar and menus.
|
|
880
1230
|
Markup: <ul role="menubar" class="menu-bar"> <li role="none"><button
|
|
881
1231
|
role="menuitem" aria-haspopup="true" aria-expanded="false">File</button>
|
|
@@ -923,12 +1273,12 @@
|
|
|
923
1273
|
white-space: nowrap;
|
|
924
1274
|
appearance: none;
|
|
925
1275
|
-webkit-appearance: none;
|
|
926
|
-
cursor:
|
|
1276
|
+
cursor: var(--clio-cursor-arrow);
|
|
927
1277
|
}
|
|
928
1278
|
|
|
929
1279
|
:where(.menu-bar, [role="menubar"], [role="menu-bar"]) > li > :is(button, a, span):is([aria-expanded="true"], .active),
|
|
930
1280
|
:where(.menu-bar, [role="menubar"], [role="menu-bar"]) > li.open > :is(button, a, span),
|
|
931
|
-
:where(.menu-bar, [role="menubar"], [role="menu-bar"]) > li > :is(button, a):active,
|
|
1281
|
+
:where(.menu-bar, [role="menubar"], [role="menu-bar"]) > li > :is(button, a):active:where(:not([data-clio-off])),
|
|
932
1282
|
:where([role="menu-bar"]) > [role="menu-item"]:is(:focus, :focus-within) {
|
|
933
1283
|
background: var(--clio-menu-title-active-bg);
|
|
934
1284
|
box-shadow: var(--clio-menu-title-active-shadow);
|
|
@@ -978,6 +1328,12 @@
|
|
|
978
1328
|
display: block;
|
|
979
1329
|
}
|
|
980
1330
|
|
|
1331
|
+
/* With clio.js (data-clio-menus) a menu opens from the pointer or the arrow
|
|
1332
|
+
keys, not merely because focus sits on its title. */
|
|
1333
|
+
:where([data-clio-menus]) li:focus-within:not(.open) > :is(.menu, ul[role="menu"]) {
|
|
1334
|
+
display: none;
|
|
1335
|
+
}
|
|
1336
|
+
|
|
981
1337
|
/* ---- Menu items ---------------------------------------------------------- */
|
|
982
1338
|
:where(.menu, [role="menu"]) > li {
|
|
983
1339
|
position: relative;
|
|
@@ -988,7 +1344,7 @@
|
|
|
988
1344
|
font-weight: var(--clio-menu-item-weight);
|
|
989
1345
|
line-height: var(--clio-menu-item-height);
|
|
990
1346
|
white-space: nowrap;
|
|
991
|
-
cursor:
|
|
1347
|
+
cursor: var(--clio-cursor-arrow);
|
|
992
1348
|
}
|
|
993
1349
|
|
|
994
1350
|
:where(.menu, [role="menu"]) > li:has(> :is(a, button)) {
|
|
@@ -1014,11 +1370,11 @@
|
|
|
1014
1370
|
text-decoration: none;
|
|
1015
1371
|
appearance: none;
|
|
1016
1372
|
-webkit-appearance: none;
|
|
1017
|
-
cursor:
|
|
1373
|
+
cursor: var(--clio-cursor-arrow);
|
|
1018
1374
|
}
|
|
1019
1375
|
|
|
1020
|
-
:where(.menu, [role="menu"]) > li:not(.disabled, [aria-disabled="true"], .separator, [role="separator"]):is(:hover, :focus-within, .active),
|
|
1021
|
-
:where(.menu, [role="menu"]) > li > :is(a, button):not([aria-disabled="true"], :disabled):is(:hover, :focus-visible, .active) {
|
|
1376
|
+
:where(.menu, [role="menu"]) > li:not(.disabled, [aria-disabled="true"], .separator, [role="separator"]):is(:hover, :focus-within, .active):where(:not([data-clio-blink])),
|
|
1377
|
+
:where(.menu, [role="menu"]) > li > :is(a, button):not([aria-disabled="true"], :disabled):is(:hover, :focus-visible, .active):where(:not([data-clio-blink])) {
|
|
1022
1378
|
background: var(--clio-menu-item-active-bg);
|
|
1023
1379
|
box-shadow: var(--clio-menu-item-active-shadow);
|
|
1024
1380
|
color: var(--clio-menu-item-active-fg);
|
|
@@ -1056,8 +1412,8 @@
|
|
|
1056
1412
|
background: var(--clio-art-s6-menucheck) 0 0 / 9px 8px no-repeat;
|
|
1057
1413
|
}
|
|
1058
1414
|
|
|
1059
|
-
:where(.menu, [role="menu"]) > li:is(.checked, [aria-checked="true"]):is(:hover, :focus-within, .active)::before,
|
|
1060
|
-
:where(.menu, [role="menu"]) > li > :is([aria-checked="true"], .checked):is(:hover, :focus-visible, .active)::before {
|
|
1415
|
+
:where(.menu, [role="menu"]) > li:is(.checked, [aria-checked="true"]):is(:hover, :focus-within, .active):where(:not([data-clio-blink]))::before,
|
|
1416
|
+
:where(.menu, [role="menu"]) > li > :is([aria-checked="true"], .checked):is(:hover, :focus-visible, .active):where(:not([data-clio-blink]))::before {
|
|
1061
1417
|
background-image: var(--clio-art-s6-menucheck-on);
|
|
1062
1418
|
}
|
|
1063
1419
|
|
|
@@ -1074,7 +1430,7 @@
|
|
|
1074
1430
|
background: var(--clio-art-s6-submenu) 0 0 / 6px 11px no-repeat;
|
|
1075
1431
|
}
|
|
1076
1432
|
|
|
1077
|
-
:where(.menu, [role="menu"]) > li:has(> :is(.menu, ul[role="menu"])):is(:hover, :focus-within, .active)::after {
|
|
1433
|
+
:where(.menu, [role="menu"]) > li:has(> :is(.menu, ul[role="menu"])):is(:hover, :focus-within, .active):where(:not([data-clio-blink]))::after {
|
|
1078
1434
|
background-image: var(--clio-art-s6-submenu-on);
|
|
1079
1435
|
}
|
|
1080
1436
|
|
|
@@ -1094,6 +1450,33 @@
|
|
|
1094
1450
|
border-bottom: 1px dotted var(--clio-ink);
|
|
1095
1451
|
}
|
|
1096
1452
|
|
|
1453
|
+
/* ---- Scrolling menus, menu bar extras, item icons ------------------------------
|
|
1454
|
+
A menu longer than the screen ends in a scroll arrow row: <li class="scroll-down"
|
|
1455
|
+
aria-hidden="true"> (or "scroll-up" at the top). Menu bar items pushed to
|
|
1456
|
+
the right (the Help and Application menus) take class "menu-extras"; an
|
|
1457
|
+
icon in a title or an item is an <img> 16px square. */
|
|
1458
|
+
:where(.menu, [role="menu"]) > :where(li.scroll-down, li.scroll-up) {
|
|
1459
|
+
min-height: var(--clio-menu-item-height);
|
|
1460
|
+
padding: 0;
|
|
1461
|
+
background: var(--clio-art-menu-scroll-down) var(--clio-menu-scroll-left) 50% / auto no-repeat;
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
:where(.menu, [role="menu"]) > :where(li.scroll-up) {
|
|
1465
|
+
background-image: var(--clio-art-menu-scroll-up);
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
:where(.menu-bar, [role="menubar"]) > :where(li.menu-extras) {
|
|
1469
|
+
margin-left: auto;
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
:where(.menu-bar, [role="menubar"], .menu, [role="menu"]) :where(img) {
|
|
1473
|
+
width: 16px;
|
|
1474
|
+
height: 16px;
|
|
1475
|
+
margin-right: 4px;
|
|
1476
|
+
vertical-align: -3px;
|
|
1477
|
+
image-rendering: pixelated;
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1097
1480
|
/* Controls. Bare elements are styled through :where(), so the rules carry no
|
|
1098
1481
|
specificity. State model (from AI System 6's fidelity contract): hover never
|
|
1099
1482
|
changes a push button; pressed comes only from pointer-down, Space or
|
|
@@ -1120,18 +1503,19 @@
|
|
|
1120
1503
|
font-stretch: var(--clio-font-stretch-text);
|
|
1121
1504
|
font-weight: var(--clio-button-weight);
|
|
1122
1505
|
-webkit-font-smoothing: var(--clio-font-smoothing);
|
|
1506
|
+
-moz-osx-font-smoothing: grayscale; /* Firefox on macOS otherwise thickens the pixel squares with a grey fringe */
|
|
1123
1507
|
line-height: 14px;
|
|
1124
1508
|
text-align: center;
|
|
1125
1509
|
text-decoration: none;
|
|
1126
1510
|
white-space: nowrap;
|
|
1127
1511
|
appearance: none;
|
|
1128
1512
|
-webkit-appearance: none;
|
|
1129
|
-
cursor:
|
|
1513
|
+
cursor: var(--clio-cursor-arrow);
|
|
1130
1514
|
touch-action: manipulation;
|
|
1131
1515
|
-webkit-tap-highlight-color: transparent;
|
|
1132
1516
|
}
|
|
1133
1517
|
|
|
1134
|
-
:where(button, .btn, .btn-default, .standard-button, input[type="button"], input[type="submit"], input[type="reset"]):not(:disabled, .disabled):is(:active, .active) {
|
|
1518
|
+
:where(button, .btn, .btn-default, .standard-button, input[type="button"], input[type="submit"], input[type="reset"]):not(:disabled, .disabled):is(:active:where(:not([data-clio-off])), .active) {
|
|
1135
1519
|
background: var(--clio-button-active-bg);
|
|
1136
1520
|
box-shadow: var(--clio-button-active-shadow);
|
|
1137
1521
|
border-image-source: var(--clio-button-frame-held);
|
|
@@ -1195,7 +1579,7 @@
|
|
|
1195
1579
|
vertical-align: -2px;
|
|
1196
1580
|
appearance: none;
|
|
1197
1581
|
-webkit-appearance: none;
|
|
1198
|
-
cursor:
|
|
1582
|
+
cursor: var(--clio-cursor-arrow);
|
|
1199
1583
|
}
|
|
1200
1584
|
|
|
1201
1585
|
:where(input[type="checkbox"]):checked {
|
|
@@ -1203,7 +1587,7 @@
|
|
|
1203
1587
|
background-origin: var(--clio-check-mark-origin);
|
|
1204
1588
|
}
|
|
1205
1589
|
|
|
1206
|
-
:where(input[type="checkbox"]):not(:disabled):active {
|
|
1590
|
+
:where(input[type="checkbox"]):not(:disabled):active:where(:not([data-clio-off])) {
|
|
1207
1591
|
border-width: var(--clio-check-pressed-border-width);
|
|
1208
1592
|
}
|
|
1209
1593
|
|
|
@@ -1225,18 +1609,18 @@
|
|
|
1225
1609
|
vertical-align: -2px;
|
|
1226
1610
|
appearance: none;
|
|
1227
1611
|
-webkit-appearance: none;
|
|
1228
|
-
cursor:
|
|
1612
|
+
cursor: var(--clio-cursor-arrow);
|
|
1229
1613
|
}
|
|
1230
1614
|
|
|
1231
1615
|
:where(input[type="radio"]):checked {
|
|
1232
1616
|
background: var(--clio-radio-on);
|
|
1233
1617
|
}
|
|
1234
1618
|
|
|
1235
|
-
:where(input[type="radio"]):not(:disabled):active {
|
|
1619
|
+
:where(input[type="radio"]):not(:disabled):active:where(:not([data-clio-off])) {
|
|
1236
1620
|
background: var(--clio-radio-pressed);
|
|
1237
1621
|
}
|
|
1238
1622
|
|
|
1239
|
-
:where(input[type="radio"]):checked:not(:disabled):active {
|
|
1623
|
+
:where(input[type="radio"]):checked:not(:disabled):active:where(:not([data-clio-off])) {
|
|
1240
1624
|
background: var(--clio-radio-pressed-on);
|
|
1241
1625
|
}
|
|
1242
1626
|
|
|
@@ -1300,7 +1684,7 @@
|
|
|
1300
1684
|
}
|
|
1301
1685
|
|
|
1302
1686
|
:where(input, textarea):focus-visible {
|
|
1303
|
-
outline: var(--clio-focus-outline);
|
|
1687
|
+
outline: var(--clio-field-focus-outline, var(--clio-focus-outline));
|
|
1304
1688
|
outline-offset: var(--clio-focus-offset);
|
|
1305
1689
|
box-shadow: var(--clio-field-focus-shadow);
|
|
1306
1690
|
}
|
|
@@ -1336,10 +1720,14 @@
|
|
|
1336
1720
|
font-stretch: var(--clio-font-stretch-text);
|
|
1337
1721
|
font-weight: var(--clio-popup-weight);
|
|
1338
1722
|
-webkit-font-smoothing: var(--clio-font-smoothing);
|
|
1723
|
+
-moz-osx-font-smoothing: grayscale; /* Firefox on macOS otherwise thickens the pixel squares with a grey fringe */
|
|
1339
1724
|
line-height: 16px;
|
|
1725
|
+
white-space: nowrap; /* one line, cut short with an ellipsis, as the Mac truncated a pop-up's title */
|
|
1726
|
+
overflow: hidden;
|
|
1727
|
+
text-overflow: ellipsis;
|
|
1340
1728
|
appearance: none;
|
|
1341
1729
|
-webkit-appearance: none;
|
|
1342
|
-
cursor:
|
|
1730
|
+
cursor: var(--clio-cursor-arrow);
|
|
1343
1731
|
}
|
|
1344
1732
|
|
|
1345
1733
|
:where(select):focus-visible {
|
|
@@ -1348,7 +1736,93 @@
|
|
|
1348
1736
|
}
|
|
1349
1737
|
|
|
1350
1738
|
:where(select):disabled {
|
|
1351
|
-
color: var(--clio-disabled);
|
|
1739
|
+
color: var(--clio-popup-disabled-fg, var(--clio-disabled));
|
|
1740
|
+
opacity: 1; /* Chrome fades a disabled select it draws itself; the Mac did not */
|
|
1741
|
+
mask: var(--clio-popup-disabled-mask, none);
|
|
1742
|
+
mask-clip: no-clip; /* the shadow outside the frame is dimmed too */
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
/* The open pop-up menu. Where the browser lets CSS draw it (appearance:
|
|
1746
|
+
base-select: Chrome 135, Safari 27), it is the era's menu, laid over the
|
|
1747
|
+
button with the current item on the button's row (clio.js sets
|
|
1748
|
+
--clio-picker-shift; without it the first item sits there). clio.js draws
|
|
1749
|
+
the same menu as elements elsewhere. */
|
|
1750
|
+
@supports (appearance: base-select) {
|
|
1751
|
+
/* a mouse or trackpad only: on touch screens the system's own picker
|
|
1752
|
+
(the iOS wheel, Android's sheet) stays, as it is the better tool there */
|
|
1753
|
+
@media (pointer: fine) {
|
|
1754
|
+
:where(select:not([multiple], [size]:not([size="1"]))),
|
|
1755
|
+
:where(select:not([multiple], [size]:not([size="1"])))::picker(select) {
|
|
1756
|
+
appearance: base-select;
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
/* keep the closed button laid out as before (the base-select default is a
|
|
1760
|
+
centred inline-flex box, a pixel off the measured text) */
|
|
1761
|
+
:where(select:not([multiple], [size]:not([size="1"]))) {
|
|
1762
|
+
display: inline-block;
|
|
1763
|
+
align-items: normal;
|
|
1764
|
+
gap: normal;
|
|
1765
|
+
text-align: start;
|
|
1766
|
+
}
|
|
1767
|
+
|
|
1768
|
+
:where(select)::picker-icon {
|
|
1769
|
+
display: none; /* the era's arrow is the button's own art */
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1772
|
+
:where(select)::picker(select) {
|
|
1773
|
+
position-area: span-block-end span-inline-end; /* top and left on the button's */
|
|
1774
|
+
position-try-fallbacks: none;
|
|
1775
|
+
inset: auto;
|
|
1776
|
+
min-width: anchor-size(width);
|
|
1777
|
+
margin: 0;
|
|
1778
|
+
padding: 0;
|
|
1779
|
+
translate: 0 var(--clio-picker-shift, 0px);
|
|
1780
|
+
border: var(--clio-menu-border);
|
|
1781
|
+
border-top-width: var(--clio-menu-border-top-width, 1px);
|
|
1782
|
+
border-radius: 0; /* Safari rounds its picker */
|
|
1783
|
+
background: var(--clio-menu-bg);
|
|
1784
|
+
box-shadow: var(--clio-menu-shadow);
|
|
1785
|
+
color: var(--clio-ink);
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1788
|
+
:where(select) option {
|
|
1789
|
+
position: relative;
|
|
1790
|
+
display: flex;
|
|
1791
|
+
align-items: center;
|
|
1792
|
+
min-height: var(--clio-menu-item-height);
|
|
1793
|
+
padding: var(--clio-menu-item-padding);
|
|
1794
|
+
font: inherit;
|
|
1795
|
+
font-weight: var(--clio-menu-item-weight, inherit);
|
|
1796
|
+
line-height: var(--clio-menu-item-height);
|
|
1797
|
+
white-space: nowrap;
|
|
1798
|
+
outline: none;
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1801
|
+
:where(select) option:is(:hover, :focus-visible):not(:disabled) {
|
|
1802
|
+
background: var(--clio-menu-item-active-bg);
|
|
1803
|
+
box-shadow: var(--clio-menu-item-active-shadow);
|
|
1804
|
+
color: var(--clio-menu-item-active-fg);
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
:where(select) option:disabled {
|
|
1808
|
+
color: var(--clio-disabled);
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
:where(select) option::checkmark {
|
|
1812
|
+
content: "";
|
|
1813
|
+
position: absolute;
|
|
1814
|
+
top: 50%;
|
|
1815
|
+
left: 3px;
|
|
1816
|
+
width: 9px;
|
|
1817
|
+
height: 8px;
|
|
1818
|
+
margin-top: -4px;
|
|
1819
|
+
background: var(--clio-art-s6-menucheck) 0 0 / 9px 8px no-repeat;
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
:where(select) option:is(:hover, :focus-visible)::checkmark {
|
|
1823
|
+
background-image: var(--clio-art-s6-menucheck-on);
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1352
1826
|
}
|
|
1353
1827
|
|
|
1354
1828
|
/* A list box: <select multiple> or <select size="n">. */
|
|
@@ -1391,7 +1865,7 @@
|
|
|
1391
1865
|
padding: 0 4px;
|
|
1392
1866
|
line-height: var(--clio-list-row);
|
|
1393
1867
|
white-space: nowrap;
|
|
1394
|
-
cursor:
|
|
1868
|
+
cursor: var(--clio-cursor-arrow);
|
|
1395
1869
|
}
|
|
1396
1870
|
|
|
1397
1871
|
:where(.listbox, [role="listbox"]) > :is(li, [role="option"]):is([aria-selected="true"], .selected) {
|
|
@@ -1477,7 +1951,7 @@
|
|
|
1477
1951
|
font-family: var(--clio-font-chrome);
|
|
1478
1952
|
font-size: var(--clio-font-size);
|
|
1479
1953
|
font-weight: var(--clio-chrome-weight);
|
|
1480
|
-
cursor:
|
|
1954
|
+
cursor: var(--clio-cursor-arrow);
|
|
1481
1955
|
}
|
|
1482
1956
|
|
|
1483
1957
|
:where([role="tablist"], .tabs) > :is([role="tab"], li, button):is([aria-selected="true"], .active) {
|
|
@@ -1513,7 +1987,7 @@
|
|
|
1513
1987
|
font-family: var(--clio-font-small);
|
|
1514
1988
|
font-size: var(--clio-font-size-small);
|
|
1515
1989
|
text-align: center;
|
|
1516
|
-
cursor:
|
|
1990
|
+
cursor: var(--clio-cursor-arrow);
|
|
1517
1991
|
}
|
|
1518
1992
|
|
|
1519
1993
|
:where(.icon) > :is(img, svg, .icon-image) {
|
|
@@ -1539,198 +2013,899 @@
|
|
|
1539
2013
|
color: var(--clio-label-selected-fg);
|
|
1540
2014
|
}
|
|
1541
2015
|
|
|
1542
|
-
/*
|
|
1543
|
-
|
|
1544
|
-
.
|
|
1545
|
-
.modeless-dialog: a movable dialog, which is a .window.
|
|
1546
|
-
Use them on <dialog> or on a <div role="dialog">. system.css's
|
|
1547
|
-
.outer-border / .inner-border wrappers are accepted and draw nothing extra. */
|
|
1548
|
-
:where(.modal-dialog, .alert-box, dialog.modal) {
|
|
1549
|
-
box-sizing: border-box;
|
|
1550
|
-
max-width: 100%;
|
|
1551
|
-
margin: 0;
|
|
1552
|
-
padding: var(--clio-modal-padding);
|
|
1553
|
-
border: var(--clio-modal-border);
|
|
1554
|
-
background: var(--clio-dialog-bg);
|
|
1555
|
-
box-shadow: var(--clio-modal-frame);
|
|
1556
|
-
color: var(--clio-ink);
|
|
1557
|
-
}
|
|
2016
|
+
/* Controls the classic guidelines add to the first set (Macintosh Human
|
|
2017
|
+
Interface Guidelines 1992, ch. 7; Mac OS 8 Human Interface Guidelines,
|
|
2018
|
+
ch. 2), each drawn per era from tokens. COVERAGE.md lists them all. */
|
|
1558
2019
|
|
|
1559
|
-
|
|
2020
|
+
/* ---- Disclosure triangle ---------------------------------------------------
|
|
2021
|
+
Markup: <button class="disclosure" aria-expanded="false" aria-label="Show">
|
|
2022
|
+
or <details><summary>…</summary>…</details>. System 7 brought it to the
|
|
2023
|
+
Finder's list views; System 6 had none (it uses System 7's). */
|
|
2024
|
+
:where(.disclosure) {
|
|
2025
|
+
display: inline-block;
|
|
1560
2026
|
box-sizing: border-box;
|
|
1561
|
-
|
|
2027
|
+
width: var(--clio-disclosure-size);
|
|
2028
|
+
height: var(--clio-disclosure-size);
|
|
2029
|
+
min-width: 0;
|
|
2030
|
+
min-height: 0;
|
|
1562
2031
|
margin: 0;
|
|
1563
|
-
padding: 12px 14px;
|
|
1564
|
-
border: var(--clio-plain-dialog-border);
|
|
1565
|
-
background: var(--clio-dialog-bg);
|
|
1566
|
-
box-shadow: var(--clio-plain-dialog-shadow);
|
|
1567
|
-
color: var(--clio-ink);
|
|
1568
|
-
}
|
|
1569
|
-
|
|
1570
|
-
:where(dialog):is(.modal-dialog, .alert-box, .standard-dialog, .modal)::backdrop {
|
|
1571
|
-
background: transparent;
|
|
1572
|
-
}
|
|
1573
|
-
|
|
1574
|
-
:where(.modal-dialog, .alert-box, .standard-dialog) :where(.outer-border, .inner-border) {
|
|
1575
2032
|
padding: 0;
|
|
1576
2033
|
border: 0;
|
|
2034
|
+
background: var(--clio-art-disclosure) 0 0 / var(--clio-disclosure-size) var(--clio-disclosure-size) no-repeat;
|
|
2035
|
+
box-shadow: none;
|
|
2036
|
+
vertical-align: middle;
|
|
2037
|
+
appearance: none;
|
|
2038
|
+
-webkit-appearance: none;
|
|
2039
|
+
cursor: var(--clio-cursor-arrow);
|
|
1577
2040
|
}
|
|
1578
2041
|
|
|
1579
|
-
|
|
1580
|
-
:
|
|
1581
|
-
display: grid;
|
|
1582
|
-
grid-template-columns: auto 1fr;
|
|
1583
|
-
column-gap: 16px;
|
|
1584
|
-
row-gap: 12px;
|
|
1585
|
-
align-items: start;
|
|
2042
|
+
:where(.disclosure):is([aria-expanded="true"], .open) {
|
|
2043
|
+
background-image: var(--clio-art-disclosure-open);
|
|
1586
2044
|
}
|
|
1587
2045
|
|
|
1588
|
-
:where(
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
2046
|
+
:where(details) > :where(summary) {
|
|
2047
|
+
display: flex;
|
|
2048
|
+
align-items: center;
|
|
2049
|
+
gap: var(--clio-disclosure-gap);
|
|
2050
|
+
list-style: none;
|
|
2051
|
+
cursor: var(--clio-cursor-arrow);
|
|
1592
2052
|
}
|
|
1593
2053
|
|
|
1594
|
-
:where(
|
|
1595
|
-
|
|
1596
|
-
margin: 0;
|
|
2054
|
+
:where(details) > :where(summary)::-webkit-details-marker {
|
|
2055
|
+
display: none;
|
|
1597
2056
|
}
|
|
1598
2057
|
|
|
1599
|
-
:where(
|
|
1600
|
-
|
|
2058
|
+
:where(details) > :where(summary)::before {
|
|
2059
|
+
content: "";
|
|
2060
|
+
flex: none;
|
|
2061
|
+
width: var(--clio-disclosure-size);
|
|
2062
|
+
height: var(--clio-disclosure-size);
|
|
2063
|
+
background: var(--clio-art-disclosure) 0 0 / var(--clio-disclosure-size) var(--clio-disclosure-size) no-repeat;
|
|
1601
2064
|
}
|
|
1602
2065
|
|
|
1603
|
-
:where(
|
|
1604
|
-
|
|
1605
|
-
flex-wrap: wrap;
|
|
1606
|
-
justify-content: flex-end;
|
|
1607
|
-
gap: 12px;
|
|
1608
|
-
margin-top: 12px;
|
|
2066
|
+
:where(details[open]) > :where(summary)::before {
|
|
2067
|
+
background-image: var(--clio-art-disclosure-open);
|
|
1609
2068
|
}
|
|
1610
2069
|
|
|
1611
|
-
/*
|
|
1612
|
-
:
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
2070
|
+
/* ---- List view --------------------------------------------------------------
|
|
2071
|
+
The Finder's list view: column headers, the sorted column marked, rows of
|
|
2072
|
+
name and details. Markup: <table class="list-view"> with <th aria-sort> on
|
|
2073
|
+
the sorted column and an optional empty <th class="sort-direction">.
|
|
2074
|
+
System 7: plain headers in the small font, the sorted one underlined, a
|
|
2075
|
+
double rule below (Finder, View by Name). */
|
|
2076
|
+
:where(.list-view) {
|
|
2077
|
+
border-collapse: collapse;
|
|
2078
|
+
border-spacing: 0;
|
|
2079
|
+
background: var(--clio-list-view-bg);
|
|
2080
|
+
font-family: var(--clio-font-small);
|
|
2081
|
+
font-size: var(--clio-font-size-small);
|
|
2082
|
+
line-height: var(--clio-list-view-row);
|
|
1621
2083
|
}
|
|
1622
2084
|
|
|
1623
|
-
:where(.
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
:where(.alert-icon.stop)::before { content: "\00D7"; }
|
|
1627
|
-
|
|
1628
|
-
/* Scroll bars, for scroll areas clio.css owns (.window-pane, .listbox,
|
|
1629
|
-
textarea, list-box selects) and for anything you mark with .clio-scroll.
|
|
1630
|
-
Add class="clio-scrollbars" to <html> to give every scroll area the era's
|
|
1631
|
-
scroll bar.
|
|
2085
|
+
:where(.list-view) :where(th, td) {
|
|
2086
|
+
box-sizing: border-box;
|
|
2087
|
+
}
|
|
1632
2088
|
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
:
|
|
1638
|
-
:
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
2089
|
+
:where(.list-view) :where(th) {
|
|
2090
|
+
height: var(--clio-list-view-header-height);
|
|
2091
|
+
padding: var(--clio-list-view-header-padding);
|
|
2092
|
+
background: var(--clio-list-view-header-bg);
|
|
2093
|
+
font-weight: normal;
|
|
2094
|
+
line-height: 14px;
|
|
2095
|
+
text-align: left;
|
|
2096
|
+
vertical-align: top;
|
|
2097
|
+
white-space: nowrap;
|
|
1642
2098
|
}
|
|
1643
2099
|
|
|
1644
|
-
:where(.
|
|
1645
|
-
:
|
|
1646
|
-
|
|
1647
|
-
|
|
2100
|
+
:where(.list-view) :where(th[aria-sort]:not([aria-sort="none"])) {
|
|
2101
|
+
background: var(--clio-list-view-sorted-header-bg);
|
|
2102
|
+
text-decoration: var(--clio-list-view-sorted-decoration);
|
|
2103
|
+
text-underline-offset: 2px;
|
|
1648
2104
|
}
|
|
1649
2105
|
|
|
1650
|
-
:where(.
|
|
1651
|
-
:
|
|
1652
|
-
|
|
2106
|
+
:where(.list-view) :where(td) {
|
|
2107
|
+
height: var(--clio-list-view-row);
|
|
2108
|
+
padding: 0 4px;
|
|
2109
|
+
vertical-align: middle;
|
|
2110
|
+
white-space: nowrap;
|
|
1653
2111
|
}
|
|
1654
2112
|
|
|
1655
|
-
:where(.
|
|
1656
|
-
:
|
|
1657
|
-
border-top: 1px solid var(--clio-ink);
|
|
2113
|
+
:where(.list-view) :where(td.sorted) {
|
|
2114
|
+
background: var(--clio-list-view-sorted-bg);
|
|
1658
2115
|
}
|
|
1659
2116
|
|
|
1660
|
-
:where(.
|
|
1661
|
-
:
|
|
1662
|
-
|
|
1663
|
-
min-height: var(--clio-scrollbar-size);
|
|
1664
|
-
border: var(--clio-scrollbar-thumb-border);
|
|
1665
|
-
background: var(--clio-scrollbar-thumb-bg);
|
|
1666
|
-
box-shadow: var(--clio-scrollbar-thumb-shadow);
|
|
2117
|
+
:where(.list-view) :where(.sort-direction) {
|
|
2118
|
+
width: var(--clio-list-view-sort-width);
|
|
2119
|
+
padding: 0;
|
|
1667
2120
|
}
|
|
1668
2121
|
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
2122
|
+
/* ---- Slider ------------------------------------------------------------------
|
|
2123
|
+
<input type="range">, the Appearance slider (Mac OS 8 HIG: "Sliders and Tick
|
|
2124
|
+
Marks"). Add class "ticks" and --clio-slider-tick-count for tick marks under
|
|
2125
|
+
the track. System 6 and System 7 had no slider in the Toolbox; System 7.5's
|
|
2126
|
+
control panels drew their own (see the System 7 layer). */
|
|
2127
|
+
:where(input[type="range"]) {
|
|
2128
|
+
box-sizing: border-box;
|
|
2129
|
+
height: var(--clio-slider-height);
|
|
2130
|
+
margin: 0;
|
|
2131
|
+
/* Chrome centres the track in the content box: the padding puts it
|
|
2132
|
+
--clio-slider-track-top below the thumb's top. */
|
|
2133
|
+
padding: 0 0 calc(var(--clio-slider-height) - var(--clio-slider-track-height) - 2 * var(--clio-slider-track-top));
|
|
2134
|
+
background: transparent;
|
|
2135
|
+
appearance: none;
|
|
2136
|
+
-webkit-appearance: none;
|
|
2137
|
+
cursor: var(--clio-cursor-arrow);
|
|
1673
2138
|
}
|
|
1674
2139
|
|
|
1675
|
-
:where(
|
|
1676
|
-
:
|
|
1677
|
-
:
|
|
1678
|
-
:
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
background-color: var(--clio-scrollbar-button-bg);
|
|
1683
|
-
background-position: center;
|
|
1684
|
-
background-repeat: no-repeat;
|
|
1685
|
-
box-shadow: var(--clio-scrollbar-button-shadow);
|
|
2140
|
+
:where(input[type="range"].ticks) {
|
|
2141
|
+
/* A whole number of pixels: each engine rounds a fractional period its own way. */
|
|
2142
|
+
--clio-slider-tick-spacing: round((100% - var(--clio-slider-tick-run)) / (var(--clio-slider-tick-count) - 1), 1px);
|
|
2143
|
+
height: calc(var(--clio-slider-height) + var(--clio-slider-tick-gap) + 4px);
|
|
2144
|
+
background:
|
|
2145
|
+
repeating-linear-gradient(to right, var(--clio-slider-tick-light) 0 1px, var(--clio-slider-tick-ink) 1px 2px, var(--clio-slider-tick-shade) 2px 3px, transparent 3px var(--clio-slider-tick-spacing)) var(--clio-slider-tick-offset) 100% / 100% 3px no-repeat,
|
|
2146
|
+
repeating-linear-gradient(to right, var(--clio-slider-tick-light) 0 2px, transparent 2px var(--clio-slider-tick-spacing)) var(--clio-slider-tick-offset) calc(100% - 3px) / 100% 1px no-repeat;
|
|
1686
2147
|
}
|
|
1687
2148
|
|
|
1688
|
-
:where(
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
border-
|
|
1692
|
-
|
|
2149
|
+
:where(input[type="range"])::-webkit-slider-runnable-track {
|
|
2150
|
+
box-sizing: border-box;
|
|
2151
|
+
height: var(--clio-slider-track-height);
|
|
2152
|
+
border-style: solid;
|
|
2153
|
+
border-width: var(--clio-slider-track-slice);
|
|
2154
|
+
border-color: transparent;
|
|
2155
|
+
border-image: var(--clio-art-slider-track) var(--clio-slider-track-slice-n) fill / var(--clio-slider-track-slice) stretch;
|
|
2156
|
+
}
|
|
2157
|
+
|
|
2158
|
+
:where(input[type="range"])::-webkit-slider-thumb {
|
|
2159
|
+
width: var(--clio-slider-thumb-width);
|
|
2160
|
+
height: var(--clio-slider-thumb-height);
|
|
2161
|
+
/* the thumb sits in the track's content box, inside the border-image slice */
|
|
2162
|
+
margin-top: calc(-1 * (var(--clio-slider-track-top) + var(--clio-slider-track-slice)));
|
|
2163
|
+
border: 0;
|
|
2164
|
+
background: var(--clio-art-slider-thumb) 0 0 / 100% 100% no-repeat;
|
|
2165
|
+
appearance: none;
|
|
2166
|
+
-webkit-appearance: none;
|
|
1693
2167
|
}
|
|
1694
2168
|
|
|
1695
|
-
:
|
|
1696
|
-
:
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
2169
|
+
/* Firefox: the same track and thumb through its own parts. Its thumb travels
|
|
2170
|
+
the whole content box: the padding keeps it inside the track's ends, as
|
|
2171
|
+
Chrome's and the Mac's (Mouse control panel at both ends), and the track
|
|
2172
|
+
reaches back over the padding. */
|
|
2173
|
+
@supports selector(::-moz-range-thumb) {
|
|
2174
|
+
:where(input[type="range"]) {
|
|
2175
|
+
padding-inline: var(--clio-slider-track-slice);
|
|
2176
|
+
}
|
|
1700
2177
|
}
|
|
1701
2178
|
|
|
1702
|
-
:where(
|
|
1703
|
-
:
|
|
1704
|
-
border-top: 1px solid var(--clio-ink);
|
|
1705
|
-
border-right: 1px solid var(--clio-ink);
|
|
1706
|
-
background-image: var(--clio-scrollbar-left);
|
|
2179
|
+
:where(input[type="range"])::-moz-range-track {
|
|
2180
|
+
margin-inline: calc(-1 * var(--clio-slider-track-slice));
|
|
1707
2181
|
}
|
|
1708
2182
|
|
|
1709
|
-
:where(
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
border-
|
|
1713
|
-
|
|
2183
|
+
:where(input[type="range"])::-moz-range-track {
|
|
2184
|
+
box-sizing: border-box;
|
|
2185
|
+
height: var(--clio-slider-track-height);
|
|
2186
|
+
border-style: solid;
|
|
2187
|
+
border-width: var(--clio-slider-track-slice);
|
|
2188
|
+
border-color: transparent;
|
|
2189
|
+
border-image: var(--clio-art-slider-track) var(--clio-slider-track-slice-n) fill / var(--clio-slider-track-slice) stretch;
|
|
1714
2190
|
}
|
|
1715
2191
|
|
|
1716
|
-
:where(
|
|
1717
|
-
|
|
1718
|
-
|
|
2192
|
+
:where(input[type="range"])::-moz-range-thumb {
|
|
2193
|
+
box-sizing: border-box;
|
|
2194
|
+
width: var(--clio-slider-thumb-width);
|
|
2195
|
+
height: var(--clio-slider-thumb-height);
|
|
2196
|
+
border: 0;
|
|
2197
|
+
border-radius: 0;
|
|
2198
|
+
background: var(--clio-art-slider-thumb) 0 0 / 100% 100% no-repeat;
|
|
2199
|
+
/* Firefox centres the thumb in the content box (its top lands half a pixel
|
|
2200
|
+
above, then on the pixel below); this brings its top to the content box's. */
|
|
2201
|
+
translate: 0 round(down, (var(--clio-slider-thumb-height) - var(--clio-slider-track-height) - 2 * var(--clio-slider-track-top)) / 2, 1px);
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2204
|
+
/* ---- Little arrows -----------------------------------------------------------
|
|
2205
|
+
The up/down pair beside a number or clock field (Mac OS 8 HIG: "Little
|
|
2206
|
+
Arrows"; System 7's control panels drew them too). Markup:
|
|
2207
|
+
<span class="little-arrows" role="group" aria-label="Cache size">
|
|
2208
|
+
<button class="up" aria-label="Increase"></button>
|
|
2209
|
+
<button class="down" aria-label="Decrease"></button></span>
|
|
2210
|
+
Add aria-disabled="true" (or disabled buttons) for the dimmed pair. */
|
|
2211
|
+
:where(.little-arrows) {
|
|
2212
|
+
display: inline-flex;
|
|
2213
|
+
flex-direction: column;
|
|
2214
|
+
width: var(--clio-little-arrows-width);
|
|
2215
|
+
height: var(--clio-little-arrows-height);
|
|
2216
|
+
background: var(--clio-art-little-arrows) 0 0 / 100% 100% no-repeat;
|
|
2217
|
+
vertical-align: middle;
|
|
1719
2218
|
}
|
|
1720
2219
|
|
|
1721
|
-
:where(.
|
|
2220
|
+
:where(.little-arrows) > :where(button) {
|
|
2221
|
+
flex: 1 1 50%;
|
|
2222
|
+
min-width: 0;
|
|
2223
|
+
min-height: 0;
|
|
2224
|
+
margin: 0;
|
|
2225
|
+
padding: 0;
|
|
2226
|
+
border: 0;
|
|
2227
|
+
border-image: none;
|
|
2228
|
+
background: transparent;
|
|
2229
|
+
box-shadow: none;
|
|
2230
|
+
appearance: none;
|
|
2231
|
+
-webkit-appearance: none;
|
|
2232
|
+
}
|
|
2233
|
+
|
|
2234
|
+
:where(.little-arrows) > :where(button)::before,
|
|
2235
|
+
:where(.little-arrows) > :where(button)::after {
|
|
2236
|
+
content: none;
|
|
2237
|
+
}
|
|
2238
|
+
|
|
2239
|
+
:where(.little-arrows):has(> .up:active:where(:not([data-clio-off]))) {
|
|
2240
|
+
background-image: var(--clio-art-little-arrows-up, var(--clio-art-little-arrows));
|
|
2241
|
+
}
|
|
2242
|
+
|
|
2243
|
+
:where(.little-arrows):has(> .down:active:where(:not([data-clio-off]))) {
|
|
2244
|
+
background-image: var(--clio-art-little-arrows-down, var(--clio-art-little-arrows));
|
|
2245
|
+
}
|
|
2246
|
+
|
|
2247
|
+
:where(.little-arrows):is([aria-disabled="true"], :has(> button:disabled)) {
|
|
2248
|
+
background-image: var(--clio-art-little-arrows-disabled, var(--clio-art-little-arrows));
|
|
2249
|
+
}
|
|
2250
|
+
|
|
2251
|
+
/* ---- Bevel button ------------------------------------------------------------
|
|
2252
|
+
A square bevelled button for an icon or a short label, which can act as a
|
|
2253
|
+
push button, a toggle (aria-pressed) or a menu (class "menu", aria-haspopup)
|
|
2254
|
+
(Mac OS 8 HIG: "Bevel Buttons"). Earlier eras had none and use push buttons'
|
|
2255
|
+
square cousin from Platinum. */
|
|
2256
|
+
:where(.bevel) {
|
|
2257
|
+
display: inline-flex;
|
|
2258
|
+
align-items: center;
|
|
2259
|
+
justify-content: center;
|
|
2260
|
+
box-sizing: border-box;
|
|
2261
|
+
min-width: var(--clio-bevel-min);
|
|
2262
|
+
min-height: var(--clio-bevel-min);
|
|
2263
|
+
margin: 0;
|
|
2264
|
+
padding: var(--clio-bevel-padding);
|
|
2265
|
+
border: var(--clio-bevel-slice) solid transparent;
|
|
2266
|
+
border-radius: 0;
|
|
2267
|
+
border-image: var(--clio-art-bevel) var(--clio-bevel-slice-n) fill / var(--clio-bevel-slice) stretch;
|
|
2268
|
+
background: transparent;
|
|
2269
|
+
box-shadow: none;
|
|
2270
|
+
color: var(--clio-ink);
|
|
2271
|
+
font: inherit;
|
|
2272
|
+
appearance: none;
|
|
2273
|
+
-webkit-appearance: none;
|
|
2274
|
+
cursor: var(--clio-cursor-arrow);
|
|
2275
|
+
}
|
|
2276
|
+
|
|
2277
|
+
:where(.bevel):is(:active:where(:not([data-clio-off])), .active, [aria-pressed="true"]):not(:disabled) {
|
|
2278
|
+
border-image-source: var(--clio-art-bevel-held);
|
|
2279
|
+
}
|
|
2280
|
+
|
|
2281
|
+
:where(.bevel) {
|
|
2282
|
+
position: relative;
|
|
2283
|
+
}
|
|
2284
|
+
|
|
2285
|
+
:where(.bevel)::before,
|
|
2286
|
+
:where(.bevel)::after {
|
|
2287
|
+
content: none;
|
|
2288
|
+
}
|
|
2289
|
+
|
|
2290
|
+
/* The menu arrow, over the face (border-image fill paints over backgrounds). */
|
|
2291
|
+
:where(.bevel.menu, .bevel[aria-haspopup])::after {
|
|
2292
|
+
content: "";
|
|
2293
|
+
position: absolute;
|
|
2294
|
+
right: calc(var(--clio-bevel-arrow-right) - var(--clio-bevel-slice));
|
|
2295
|
+
bottom: calc(var(--clio-bevel-arrow-bottom) - var(--clio-bevel-slice));
|
|
2296
|
+
width: var(--clio-bevel-arrow-width);
|
|
2297
|
+
height: var(--clio-bevel-arrow-height);
|
|
2298
|
+
background: var(--clio-art-bevel-menu-arrow) 0 0 / 100% 100% no-repeat;
|
|
2299
|
+
}
|
|
2300
|
+
|
|
2301
|
+
/* ---- Keyboard focus on lists ---------------------------------------------------
|
|
2302
|
+
Mac OS 8 draws the same ring round a list box that has the keyboard focus
|
|
2303
|
+
(Appearance, Desktop tab, the pattern list); text fields take it from
|
|
2304
|
+
--clio-field-focus-shadow. */
|
|
2305
|
+
:where(.listbox, [role="listbox"], select[multiple]):is(:focus-visible, :focus-within) {
|
|
2306
|
+
box-shadow: var(--clio-list-focus-shadow, var(--clio-list-shadow));
|
|
2307
|
+
}
|
|
2308
|
+
|
|
2309
|
+
/* ---- Chasing arrows ------------------------------------------------------------
|
|
2310
|
+
The asynchronous progress indicator (Mac OS 8 HIG: "Asynchronous Arrows").
|
|
2311
|
+
Markup: <span class="chasing-arrows" role="status" aria-label="Looking…">.
|
|
2312
|
+
It turns by stepping through the era's frames; with reduced motion it
|
|
2313
|
+
stands still on the first. Earlier eras had a spinning watch cursor
|
|
2314
|
+
instead, and use Platinum's arrows. */
|
|
2315
|
+
:where(.chasing-arrows) {
|
|
2316
|
+
position: relative;
|
|
2317
|
+
display: inline-block;
|
|
2318
|
+
width: 16px;
|
|
2319
|
+
height: 16px;
|
|
2320
|
+
overflow: hidden;
|
|
2321
|
+
vertical-align: middle;
|
|
2322
|
+
}
|
|
2323
|
+
|
|
2324
|
+
/* The frames side by side on a strip that moves a frame at a time (transform
|
|
2325
|
+
only, so the turning stays off the main thread). */
|
|
2326
|
+
:where(.chasing-arrows)::before {
|
|
2327
|
+
content: "";
|
|
2328
|
+
position: absolute;
|
|
2329
|
+
top: 0;
|
|
2330
|
+
left: 0;
|
|
2331
|
+
width: calc(16px * var(--clio-chasing-arrows-frames));
|
|
2332
|
+
height: 16px;
|
|
2333
|
+
background: var(--clio-art-chasing-arrows) 0 0 / 100% 100% no-repeat;
|
|
2334
|
+
animation: clio-chase calc(var(--clio-chasing-arrows-frames) * 0.12s) steps(var(--clio-chasing-arrows-frames)) infinite;
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2337
|
+
@keyframes clio-chase {
|
|
2338
|
+
to { transform: translateX(calc(-16px * var(--clio-chasing-arrows-frames))); }
|
|
2339
|
+
}
|
|
2340
|
+
|
|
2341
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2342
|
+
:where(.chasing-arrows)::before { animation: none; }
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2345
|
+
/* ---- Help button -----------------------------------------------------------------
|
|
2346
|
+
The square button with the help icon in a dialog's lower left (Mac OS 8 HIG:
|
|
2347
|
+
"Help Button Layout"). <button class="help-button" aria-label="Help">.
|
|
2348
|
+
Earlier eras put a "Help" push button there instead, and use Platinum's. */
|
|
2349
|
+
:where(.help-button) {
|
|
2350
|
+
box-sizing: border-box;
|
|
2351
|
+
width: 21px;
|
|
2352
|
+
min-width: 0;
|
|
2353
|
+
height: 20px;
|
|
2354
|
+
min-height: 0;
|
|
2355
|
+
margin: 0;
|
|
2356
|
+
padding: 0;
|
|
2357
|
+
border: 0;
|
|
2358
|
+
border-radius: 0;
|
|
2359
|
+
border-image: none;
|
|
2360
|
+
background: var(--clio-art-help-button) 0 0 / 21px 20px no-repeat;
|
|
2361
|
+
box-shadow: none;
|
|
2362
|
+
color: transparent;
|
|
2363
|
+
font-size: 0;
|
|
2364
|
+
appearance: none;
|
|
2365
|
+
-webkit-appearance: none;
|
|
2366
|
+
cursor: var(--clio-cursor-arrow);
|
|
2367
|
+
}
|
|
2368
|
+
|
|
2369
|
+
:where(.help-button)::before,
|
|
2370
|
+
:where(.help-button)::after {
|
|
2371
|
+
content: none;
|
|
2372
|
+
}
|
|
2373
|
+
|
|
2374
|
+
/* ---- Image well ---------------------------------------------------------------------
|
|
2375
|
+
A sunken well that holds a picture or an icon (Mac OS 8 HIG: "Image Wells"),
|
|
2376
|
+
drawn like the era's field frame round a white face (inferred: no image
|
|
2377
|
+
well was on the captured screens). <div class="image-well"><img …></div> */
|
|
2378
|
+
:where(.image-well) {
|
|
2379
|
+
display: inline-flex;
|
|
2380
|
+
align-items: center;
|
|
2381
|
+
justify-content: center;
|
|
2382
|
+
box-sizing: border-box;
|
|
2383
|
+
border: var(--clio-field-border);
|
|
2384
|
+
background: var(--clio-image-well-bg);
|
|
2385
|
+
box-shadow: var(--clio-field-shadow);
|
|
2386
|
+
}
|
|
2387
|
+
|
|
2388
|
+
/* ---- Group boxes: secondary, and titled by a check box ---------------------------
|
|
2389
|
+
<fieldset class="secondary"> is the lighter group for a subordinate set
|
|
2390
|
+
(Mac OS 8 HIG: "Group Boxes"). A check box or pop-up menu as the title goes
|
|
2391
|
+
in the legend: <legend><label><input type="checkbox"> Use a server</label></legend>.
|
|
2392
|
+
Before Mac OS 8 every group box is the one kind. */
|
|
2393
|
+
:where(fieldset > legend) > :where(label) {
|
|
2394
|
+
display: inline-flex;
|
|
2395
|
+
align-items: center;
|
|
2396
|
+
gap: 4px;
|
|
2397
|
+
}
|
|
2398
|
+
|
|
2399
|
+
/* ---- Utility window ------------------------------------------------------------------
|
|
2400
|
+
A floating palette (Mac OS 8 HIG: "Utility Windows"; HIG 1992: floating
|
|
2401
|
+
windows): <div class="window utility"> with the usual .title-bar. Its title
|
|
2402
|
+
bar is thinner, its boxes smaller and its title in the small font. Before
|
|
2403
|
+
Mac OS 8 the eras draw it from the document window's parts (inferred). */
|
|
2404
|
+
:where(.window.utility) {
|
|
2405
|
+
--clio-titlebar-height: var(--clio-utility-titlebar-height);
|
|
2406
|
+
--clio-titlebar-row: var(--clio-utility-titlebar-row);
|
|
2407
|
+
--clio-box-size: var(--clio-utility-box-size);
|
|
2408
|
+
--clio-titlebar-slot: var(--clio-utility-slot);
|
|
2409
|
+
min-width: 80px;
|
|
2410
|
+
}
|
|
2411
|
+
|
|
2412
|
+
:where(.window.utility) > :where(.title-bar) > :is(.title, h1, h2, h3) {
|
|
2413
|
+
font-size: var(--clio-utility-title-size, var(--clio-title-font-size));
|
|
2414
|
+
}
|
|
2415
|
+
|
|
2416
|
+
/* ---- Help balloon ------------------------------------------------------------------
|
|
2417
|
+
Balloon Help (HIG 1992, ch. 11; Mac OS 8 and 9 kept it): a white balloon
|
|
2418
|
+
with a rounded outline, a 2px drop on the right and below, and a tail rising
|
|
2419
|
+
from its top edge near the right towards the object it describes.
|
|
2420
|
+
<div class="balloon" role="tooltip">…</div>. The tail's tip, under the
|
|
2421
|
+
pointer in the capture, is inferred. */
|
|
2422
|
+
:where(.balloon) {
|
|
2423
|
+
position: relative;
|
|
2424
|
+
box-sizing: border-box;
|
|
2425
|
+
width: max-content;
|
|
2426
|
+
max-width: 260px;
|
|
2427
|
+
margin-top: 14px;
|
|
2428
|
+
padding: 8px 12px 10px 10px;
|
|
2429
|
+
border: 10px solid transparent;
|
|
2430
|
+
border-image: var(--clio-art-balloon) 10 fill / 10px stretch;
|
|
2431
|
+
font-family: var(--clio-font-small);
|
|
2432
|
+
font-size: var(--clio-font-size-small);
|
|
2433
|
+
line-height: 13px;
|
|
2434
|
+
}
|
|
2435
|
+
|
|
2436
|
+
:where(.balloon) {
|
|
2437
|
+
padding: 0 2px 0 0;
|
|
2438
|
+
}
|
|
2439
|
+
|
|
2440
|
+
:where(.balloon)::before {
|
|
2441
|
+
content: "";
|
|
2442
|
+
position: absolute;
|
|
2443
|
+
top: -23px;
|
|
2444
|
+
right: -5px;
|
|
2445
|
+
width: 12px;
|
|
2446
|
+
height: 14px;
|
|
2447
|
+
background: var(--clio-art-balloon-tail) 0 0 / 12px 14px no-repeat;
|
|
2448
|
+
}
|
|
2449
|
+
|
|
2450
|
+
/* The rare controls (ROADMAP "Can wait" 10): the rounded-corner window, placards,
|
|
2451
|
+
split bars and the side-title utility window (its Platinum drawing is in
|
|
2452
|
+
90-platinum.css). Measured in Infinite Mac; see EVIDENCE.md. */
|
|
2453
|
+
|
|
2454
|
+
/* ---- Rounded-corner window (rDocProc, desk accessories) ----------------------
|
|
2455
|
+
<div class="rounded-window"> > <div class="rounded-title"> (> .close, h2) and
|
|
2456
|
+
any content. The Calculator draws the same window in System 6.0.8, 7.5.3,
|
|
2457
|
+
Mac OS 8.5 (Drawing Board) and 9.0: a 1px black frame whose corners step in
|
|
2458
|
+
5, 3, 2, 1, 1 pixels; a 17-row black title bar ruled below, the title in
|
|
2459
|
+
white centred in the space right of an 11px white close box at (9,4). In the
|
|
2460
|
+
background the bar turns white, the title black, and the close box goes. */
|
|
2461
|
+
:where(.rounded-window) {
|
|
2462
|
+
--clio-rounded-bg: #ffffff;
|
|
2463
|
+
position: relative;
|
|
2464
|
+
display: flex;
|
|
2465
|
+
flex-direction: column;
|
|
2466
|
+
box-sizing: border-box;
|
|
2467
|
+
min-width: 60px;
|
|
2468
|
+
border: 1px solid #000000;
|
|
2469
|
+
background: var(--clio-rounded-bg);
|
|
2470
|
+
-webkit-mask:
|
|
2471
|
+
var(--clio-art-rdoc-mask-tl) left top / 6px 6px no-repeat,
|
|
2472
|
+
var(--clio-art-rdoc-mask-tr) right top / 6px 6px no-repeat,
|
|
2473
|
+
var(--clio-art-rdoc-mask-bl) left bottom / 6px 6px no-repeat,
|
|
2474
|
+
var(--clio-art-rdoc-mask-br) right bottom / 6px 6px no-repeat,
|
|
2475
|
+
linear-gradient(#000000, #000000) 0 6px / 100% calc(100% - 12px) no-repeat,
|
|
2476
|
+
linear-gradient(#000000, #000000) 6px 0 / calc(100% - 12px) 100% no-repeat;
|
|
2477
|
+
mask:
|
|
2478
|
+
var(--clio-art-rdoc-mask-tl) left top / 6px 6px no-repeat,
|
|
2479
|
+
var(--clio-art-rdoc-mask-tr) right top / 6px 6px no-repeat,
|
|
2480
|
+
var(--clio-art-rdoc-mask-bl) left bottom / 6px 6px no-repeat,
|
|
2481
|
+
var(--clio-art-rdoc-mask-br) right bottom / 6px 6px no-repeat,
|
|
2482
|
+
linear-gradient(#000000, #000000) 0 6px / 100% calc(100% - 12px) no-repeat,
|
|
2483
|
+
linear-gradient(#000000, #000000) 6px 0 / calc(100% - 12px) 100% no-repeat;
|
|
2484
|
+
}
|
|
2485
|
+
|
|
2486
|
+
/* The frame's curve inside each corner, over the title bar and the content. */
|
|
2487
|
+
.rounded-window::after {
|
|
2488
|
+
content: "";
|
|
2489
|
+
position: absolute;
|
|
2490
|
+
inset: -1px;
|
|
2491
|
+
z-index: 1;
|
|
2492
|
+
background:
|
|
2493
|
+
var(--clio-art-rdoc-frame-tl) left top / 6px 6px no-repeat,
|
|
2494
|
+
var(--clio-art-rdoc-frame-tr) right top / 6px 6px no-repeat,
|
|
2495
|
+
var(--clio-art-rdoc-frame-bl) left bottom / 6px 6px no-repeat,
|
|
2496
|
+
var(--clio-art-rdoc-frame-br) right bottom / 6px 6px no-repeat;
|
|
2497
|
+
pointer-events: none;
|
|
2498
|
+
}
|
|
2499
|
+
|
|
2500
|
+
.rounded-window > .rounded-title {
|
|
2501
|
+
position: relative;
|
|
2502
|
+
display: flex;
|
|
2503
|
+
flex: none;
|
|
2504
|
+
justify-content: center;
|
|
2505
|
+
box-sizing: border-box;
|
|
2506
|
+
height: 18px;
|
|
2507
|
+
padding: 1px 1px 0 18px;
|
|
2508
|
+
border-bottom: 1px solid #000000;
|
|
2509
|
+
background: #000000;
|
|
2510
|
+
color: #ffffff;
|
|
2511
|
+
font-family: var(--clio-font-window-title, var(--clio-font-chrome));
|
|
2512
|
+
user-select: none;
|
|
2513
|
+
-webkit-user-select: none;
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
.rounded-window > .rounded-title > :is(.title, h1, h2, h3) {
|
|
2517
|
+
margin: 0;
|
|
2518
|
+
overflow: hidden;
|
|
2519
|
+
color: inherit;
|
|
2520
|
+
font: inherit;
|
|
2521
|
+
font-size: var(--clio-title-font-size);
|
|
2522
|
+
font-stretch: var(--clio-font-stretch-title);
|
|
2523
|
+
font-weight: var(--clio-chrome-weight);
|
|
2524
|
+
line-height: 16px;
|
|
2525
|
+
text-overflow: ellipsis;
|
|
2526
|
+
white-space: nowrap;
|
|
2527
|
+
}
|
|
2528
|
+
|
|
2529
|
+
.rounded-window > .rounded-title > :is(button.close, .close) {
|
|
2530
|
+
position: absolute;
|
|
2531
|
+
top: 3px;
|
|
2532
|
+
left: 8px;
|
|
2533
|
+
box-sizing: border-box;
|
|
2534
|
+
width: 11px;
|
|
2535
|
+
min-width: 0;
|
|
2536
|
+
height: 11px;
|
|
2537
|
+
min-height: 0;
|
|
2538
|
+
margin: 0;
|
|
2539
|
+
padding: 0;
|
|
2540
|
+
border: 1px solid #ffffff;
|
|
2541
|
+
border-image: none;
|
|
2542
|
+
border-radius: 0;
|
|
2543
|
+
background: transparent;
|
|
2544
|
+
box-shadow: none;
|
|
2545
|
+
font-size: 0;
|
|
2546
|
+
appearance: none;
|
|
2547
|
+
-webkit-appearance: none;
|
|
2548
|
+
cursor: var(--clio-cursor-arrow);
|
|
2549
|
+
}
|
|
2550
|
+
|
|
2551
|
+
.rounded-window > .rounded-title > :is(button.close, .close)::before,
|
|
2552
|
+
.rounded-window > .rounded-title > :is(button.close, .close)::after {
|
|
2553
|
+
content: none;
|
|
2554
|
+
}
|
|
2555
|
+
|
|
2556
|
+
.rounded-window > .rounded-title > :is(button.close, .close):focus-visible {
|
|
2557
|
+
outline: 1px dotted #ffffff;
|
|
2558
|
+
outline-offset: 1px;
|
|
2559
|
+
}
|
|
2560
|
+
|
|
2561
|
+
.rounded-window.inactive > .rounded-title {
|
|
2562
|
+
background: #ffffff;
|
|
2563
|
+
color: #000000;
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
.rounded-window.inactive > .rounded-title > :is(button.close, .close) {
|
|
2567
|
+
visibility: hidden;
|
|
2568
|
+
}
|
|
2569
|
+
|
|
2570
|
+
/* ---- Placard ------------------------------------------------------------------
|
|
2571
|
+
A framed strip for status at the foot of a window, beside the horizontal scroll
|
|
2572
|
+
bar (Mac OS 8 HIG: "Placards"). The control came with the Appearance Manager;
|
|
2573
|
+
before it, the eras draw a 1px frame on the paper (adapted). */
|
|
2574
|
+
:where(.placard) {
|
|
2575
|
+
display: inline-flex;
|
|
2576
|
+
align-items: center;
|
|
2577
|
+
box-sizing: border-box;
|
|
2578
|
+
min-height: 16px;
|
|
2579
|
+
margin: 0;
|
|
2580
|
+
padding: 0 4px;
|
|
2581
|
+
border: 1px solid var(--clio-ink);
|
|
2582
|
+
border-radius: 0;
|
|
2583
|
+
background: var(--clio-paper);
|
|
2584
|
+
box-shadow: none;
|
|
2585
|
+
color: var(--clio-ink);
|
|
2586
|
+
font-family: var(--clio-font-small);
|
|
2587
|
+
font-size: var(--clio-font-size-small, 9px);
|
|
2588
|
+
line-height: 12px;
|
|
2589
|
+
white-space: nowrap;
|
|
2590
|
+
}
|
|
2591
|
+
|
|
2592
|
+
/* ---- Split bar and split line ---------------------------------------------------
|
|
2593
|
+
<div class="split-view"> > .split-bar (above the vertical scroll bar), panes,
|
|
2594
|
+
and a .split-line between two panes. Apple's guidelines (1992) give the split
|
|
2595
|
+
bar as a control 5 pixels high by the width of the scroll bar, at its top, and
|
|
2596
|
+
the split line as two lines with a one-pixel space; BBEdit 5.1 in Mac OS 9 draws
|
|
2597
|
+
it 7 rows high (90-platinum.css). Moving it is the application's: clio.css only
|
|
2598
|
+
draws it. */
|
|
2599
|
+
:where(.split-view) {
|
|
2600
|
+
display: flex;
|
|
2601
|
+
flex-direction: column;
|
|
2602
|
+
min-height: 0;
|
|
2603
|
+
background: var(--clio-split-bg, var(--clio-pane-bg));
|
|
2604
|
+
}
|
|
2605
|
+
|
|
2606
|
+
:where(.split-view) > :where(.split-bar) {
|
|
2607
|
+
align-self: flex-end;
|
|
2608
|
+
}
|
|
2609
|
+
|
|
2610
|
+
:where(.split-bar) {
|
|
2611
|
+
flex: none;
|
|
2612
|
+
box-sizing: border-box;
|
|
2613
|
+
width: var(--clio-scrollbar-size);
|
|
2614
|
+
height: var(--clio-split-bar-height, 5px);
|
|
2615
|
+
background: var(--clio-split-ink, var(--clio-ink));
|
|
2616
|
+
cursor: row-resize;
|
|
2617
|
+
}
|
|
2618
|
+
|
|
2619
|
+
:where(.split-line) {
|
|
2620
|
+
--clio-split-line-1: 1px;
|
|
2621
|
+
flex: none;
|
|
2622
|
+
box-sizing: border-box;
|
|
2623
|
+
height: var(--clio-split-bar-height, 5px);
|
|
2624
|
+
margin: 0;
|
|
2625
|
+
border: 0;
|
|
2626
|
+
background:
|
|
2627
|
+
linear-gradient(var(--clio-split-ink, var(--clio-ink)), var(--clio-split-ink, var(--clio-ink))) right top / var(--clio-scrollbar-size) 100% no-repeat,
|
|
2628
|
+
linear-gradient(var(--clio-split-ink, var(--clio-ink)), var(--clio-split-ink, var(--clio-ink))) 0 var(--clio-split-line-1) / 100% 1px no-repeat,
|
|
2629
|
+
linear-gradient(var(--clio-split-ink, var(--clio-ink)), var(--clio-split-ink, var(--clio-ink))) 0 calc(var(--clio-split-line-1) + 2px) / 100% 1px no-repeat,
|
|
2630
|
+
var(--clio-split-bg, var(--clio-pane-bg));
|
|
2631
|
+
cursor: row-resize;
|
|
2632
|
+
}
|
|
2633
|
+
|
|
2634
|
+
/* Dialogs and alerts.
|
|
2635
|
+
.modal-dialog / .alert-box: the double-framed modal box (dBoxProc).
|
|
2636
|
+
.standard-dialog: the plain box with a drop shadow (altDBoxProc).
|
|
2637
|
+
.modeless-dialog: a movable dialog, which is a .window.
|
|
2638
|
+
Use them on <dialog> or on a <div role="dialog">. system.css's
|
|
2639
|
+
.outer-border / .inner-border wrappers are accepted and draw nothing extra. */
|
|
2640
|
+
:where(.modal-dialog, .alert-box, dialog.modal) {
|
|
2641
|
+
box-sizing: border-box;
|
|
2642
|
+
max-width: 100%;
|
|
2643
|
+
margin: 0;
|
|
2644
|
+
padding: var(--clio-modal-padding);
|
|
2645
|
+
border: var(--clio-modal-border);
|
|
2646
|
+
background: var(--clio-dialog-bg);
|
|
2647
|
+
box-shadow: var(--clio-modal-frame);
|
|
2648
|
+
color: var(--clio-ink);
|
|
2649
|
+
}
|
|
2650
|
+
|
|
2651
|
+
:where(.standard-dialog) {
|
|
2652
|
+
box-sizing: border-box;
|
|
2653
|
+
max-width: 100%;
|
|
2654
|
+
margin: 0;
|
|
2655
|
+
padding: 12px 14px;
|
|
2656
|
+
border: var(--clio-plain-dialog-border);
|
|
2657
|
+
background: var(--clio-dialog-bg);
|
|
2658
|
+
box-shadow: var(--clio-plain-dialog-shadow);
|
|
2659
|
+
color: var(--clio-ink);
|
|
2660
|
+
}
|
|
2661
|
+
|
|
2662
|
+
:where(dialog):is(.modal-dialog, .alert-box, .standard-dialog, .modal)::backdrop {
|
|
2663
|
+
background: transparent;
|
|
2664
|
+
}
|
|
2665
|
+
|
|
2666
|
+
:where(.modal-dialog, .alert-box, .standard-dialog) :where(.outer-border, .inner-border) {
|
|
2667
|
+
padding: 0;
|
|
2668
|
+
border: 0;
|
|
2669
|
+
}
|
|
2670
|
+
|
|
2671
|
+
/* Alert layout: icon on the left, message, buttons bottom-right. */
|
|
2672
|
+
:where(.alert-box) {
|
|
2673
|
+
display: grid;
|
|
2674
|
+
grid-template-columns: auto 1fr;
|
|
2675
|
+
column-gap: 16px;
|
|
2676
|
+
row-gap: 12px;
|
|
2677
|
+
align-items: start;
|
|
2678
|
+
}
|
|
2679
|
+
|
|
2680
|
+
:where(.alert-box) > :where(.alert-icon) {
|
|
2681
|
+
grid-row: 1;
|
|
2682
|
+
width: 32px;
|
|
2683
|
+
height: 32px;
|
|
2684
|
+
}
|
|
2685
|
+
|
|
2686
|
+
:where(.alert-box) > :where(.alert-contents, .modal-contents, p) {
|
|
2687
|
+
grid-column: 2;
|
|
2688
|
+
margin: 0;
|
|
2689
|
+
}
|
|
2690
|
+
|
|
2691
|
+
:where(.alert-box) > :where(.alert-buttons, .dialog-buttons) {
|
|
2692
|
+
grid-column: 1 / -1;
|
|
2693
|
+
}
|
|
2694
|
+
|
|
2695
|
+
:where(.dialog-buttons, .alert-buttons) {
|
|
2696
|
+
display: flex;
|
|
2697
|
+
flex-wrap: wrap;
|
|
2698
|
+
justify-content: flex-end;
|
|
2699
|
+
gap: 12px;
|
|
2700
|
+
margin-top: 12px;
|
|
2701
|
+
}
|
|
2702
|
+
|
|
2703
|
+
/* An alert icon drawn here, not Apple's: a rounded speech box with "!". */
|
|
2704
|
+
:where(.alert-icon.caution, .alert-icon.note, .alert-icon.stop) {
|
|
2705
|
+
display: block;
|
|
2706
|
+
box-sizing: border-box;
|
|
2707
|
+
border: 2px solid var(--clio-ink);
|
|
2708
|
+
border-radius: 6px;
|
|
2709
|
+
background: var(--clio-paper);
|
|
2710
|
+
color: var(--clio-ink);
|
|
2711
|
+
font: 700 22px/28px var(--clio-font-display);
|
|
2712
|
+
text-align: center;
|
|
2713
|
+
}
|
|
2714
|
+
|
|
2715
|
+
:where(.alert-icon.caution)::before { content: "!"; }
|
|
2716
|
+
:where(.alert-icon.note)::before { content: "i"; }
|
|
2717
|
+
:where(.alert-icon.stop) { border-radius: 50%; }
|
|
2718
|
+
:where(.alert-icon.stop)::before { content: "\00D7"; }
|
|
2719
|
+
|
|
2720
|
+
/* Scroll bars, for scroll areas clio.css owns (.window-pane, .listbox,
|
|
2721
|
+
textarea, list-box selects) and for anything you mark with .clio-scroll.
|
|
2722
|
+
Add class="clio-scrollbars" to <html> to give every scroll area the era's
|
|
2723
|
+
scroll bar.
|
|
2724
|
+
|
|
2725
|
+
WebKit/Blink draw the full bar: two arrow boxes, the patterned lane and the
|
|
2726
|
+
scroll box. The scroll box is proportional to the content here (a browser
|
|
2727
|
+
limit), where System 6 drew a fixed 16px square. Firefox has no scroll bar
|
|
2728
|
+
parts, so it gets the era's colours through scrollbar-color. */
|
|
2729
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar,
|
|
2730
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar {
|
|
2731
|
+
width: var(--clio-scrollbar-size);
|
|
2732
|
+
height: var(--clio-scrollbar-size);
|
|
2733
|
+
background: var(--clio-paper);
|
|
2734
|
+
}
|
|
2735
|
+
|
|
2736
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb {
|
|
2737
|
+
width: var(--clio-scrollbar-size);
|
|
2738
|
+
height: var(--clio-scrollbar-size);
|
|
2739
|
+
background: var(--clio-paper);
|
|
2740
|
+
}
|
|
2741
|
+
|
|
2742
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-track,
|
|
2743
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-track {
|
|
2744
|
+
background: var(--clio-scrollbar-track);
|
|
2745
|
+
box-shadow: var(--clio-scrollbar-track-shadow);
|
|
2746
|
+
}
|
|
2747
|
+
|
|
2748
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb > .clio-sb-track {
|
|
2749
|
+
background: var(--clio-scrollbar-track);
|
|
2750
|
+
box-shadow: var(--clio-scrollbar-track-shadow);
|
|
2751
|
+
}
|
|
2752
|
+
|
|
2753
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-track:vertical,
|
|
2754
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-track:vertical {
|
|
2755
|
+
border-left: 1px solid var(--clio-ink);
|
|
2756
|
+
}
|
|
2757
|
+
|
|
2758
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-v > .clio-sb-track {
|
|
2759
|
+
border-left: 1px solid var(--clio-ink);
|
|
2760
|
+
}
|
|
2761
|
+
|
|
2762
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-track:horizontal,
|
|
2763
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-track:horizontal {
|
|
2764
|
+
border-top: 1px solid var(--clio-ink);
|
|
2765
|
+
}
|
|
2766
|
+
|
|
2767
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-track {
|
|
2768
|
+
border-top: 1px solid var(--clio-ink);
|
|
2769
|
+
}
|
|
2770
|
+
|
|
2771
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-thumb,
|
|
2772
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-thumb {
|
|
2773
|
+
min-width: var(--clio-scrollbar-size);
|
|
2774
|
+
min-height: var(--clio-scrollbar-size);
|
|
2775
|
+
border: var(--clio-scrollbar-thumb-border);
|
|
2776
|
+
background: var(--clio-scrollbar-thumb-bg);
|
|
2777
|
+
box-shadow: var(--clio-scrollbar-thumb-shadow);
|
|
2778
|
+
}
|
|
2779
|
+
|
|
2780
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb > .clio-sb-thumb {
|
|
2781
|
+
min-width: var(--clio-scrollbar-size);
|
|
2782
|
+
min-height: var(--clio-scrollbar-size);
|
|
2783
|
+
border: var(--clio-scrollbar-thumb-border);
|
|
2784
|
+
background: var(--clio-scrollbar-thumb-bg);
|
|
2785
|
+
box-shadow: var(--clio-scrollbar-thumb-shadow);
|
|
2786
|
+
}
|
|
2787
|
+
|
|
2788
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-thumb:horizontal,
|
|
2789
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-thumb:horizontal {
|
|
2790
|
+
background: var(--clio-scrollbar-thumb-bg-horizontal, var(--clio-scrollbar-thumb-bg));
|
|
2791
|
+
box-shadow: var(--clio-scrollbar-thumb-shadow-horizontal, var(--clio-scrollbar-thumb-shadow));
|
|
2792
|
+
}
|
|
2793
|
+
|
|
2794
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-thumb {
|
|
2795
|
+
background: var(--clio-scrollbar-thumb-bg-horizontal, var(--clio-scrollbar-thumb-bg));
|
|
2796
|
+
box-shadow: var(--clio-scrollbar-thumb-shadow-horizontal, var(--clio-scrollbar-thumb-shadow));
|
|
2797
|
+
}
|
|
2798
|
+
|
|
2799
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:start:decrement,
|
|
2800
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:end:increment,
|
|
2801
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-button:start:decrement,
|
|
2802
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-button:end:increment {
|
|
2803
|
+
display: block;
|
|
2804
|
+
width: var(--clio-scrollbar-size);
|
|
2805
|
+
height: var(--clio-scrollbar-size);
|
|
2806
|
+
background-color: var(--clio-scrollbar-button-bg);
|
|
2807
|
+
background-position: center;
|
|
2808
|
+
background-repeat: no-repeat;
|
|
2809
|
+
box-shadow: var(--clio-scrollbar-button-shadow);
|
|
2810
|
+
}
|
|
2811
|
+
|
|
2812
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb > .clio-sb-button:not(.clio-sb-never).clio-sb-dec,
|
|
2813
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb > .clio-sb-button:not(.clio-sb-never).clio-sb-inc {
|
|
2814
|
+
display: block;
|
|
2815
|
+
width: var(--clio-scrollbar-size);
|
|
2816
|
+
height: var(--clio-scrollbar-size);
|
|
2817
|
+
background-color: var(--clio-scrollbar-button-bg);
|
|
2818
|
+
background-position: center;
|
|
2819
|
+
background-repeat: no-repeat;
|
|
2820
|
+
box-shadow: var(--clio-scrollbar-button-shadow);
|
|
2821
|
+
}
|
|
2822
|
+
|
|
2823
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:decrement,
|
|
2824
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:decrement {
|
|
2825
|
+
border-left: 1px solid var(--clio-ink);
|
|
2826
|
+
border-bottom: 1px solid var(--clio-ink);
|
|
2827
|
+
background-image: var(--clio-scrollbar-up), var(--clio-scrollbar-button-bevel);
|
|
2828
|
+
}
|
|
2829
|
+
|
|
2830
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-v > .clio-sb-button.clio-sb-dec {
|
|
2831
|
+
border-left: 1px solid var(--clio-ink);
|
|
2832
|
+
border-bottom: 1px solid var(--clio-ink);
|
|
2833
|
+
background-image: var(--clio-scrollbar-up), var(--clio-scrollbar-button-bevel);
|
|
2834
|
+
}
|
|
2835
|
+
|
|
2836
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:increment,
|
|
2837
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:increment {
|
|
2838
|
+
border-left: 1px solid var(--clio-ink);
|
|
2839
|
+
border-top: 1px solid var(--clio-ink);
|
|
2840
|
+
background-image: var(--clio-scrollbar-down), var(--clio-scrollbar-button-bevel);
|
|
2841
|
+
}
|
|
2842
|
+
|
|
2843
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-v > .clio-sb-button.clio-sb-inc {
|
|
2844
|
+
border-left: 1px solid var(--clio-ink);
|
|
2845
|
+
border-top: 1px solid var(--clio-ink);
|
|
2846
|
+
background-image: var(--clio-scrollbar-down), var(--clio-scrollbar-button-bevel);
|
|
2847
|
+
}
|
|
2848
|
+
|
|
2849
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:decrement,
|
|
2850
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:decrement {
|
|
2851
|
+
border-top: 1px solid var(--clio-ink);
|
|
2852
|
+
border-right: 1px solid var(--clio-ink);
|
|
2853
|
+
background-image: var(--clio-scrollbar-left), var(--clio-scrollbar-button-bevel);
|
|
2854
|
+
}
|
|
2855
|
+
|
|
2856
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-button.clio-sb-dec {
|
|
2857
|
+
border-top: 1px solid var(--clio-ink);
|
|
2858
|
+
border-right: 1px solid var(--clio-ink);
|
|
2859
|
+
background-image: var(--clio-scrollbar-left), var(--clio-scrollbar-button-bevel);
|
|
2860
|
+
}
|
|
2861
|
+
|
|
2862
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:increment,
|
|
2863
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:increment {
|
|
2864
|
+
border-top: 1px solid var(--clio-ink);
|
|
2865
|
+
border-left: 1px solid var(--clio-ink);
|
|
2866
|
+
background-image: var(--clio-scrollbar-right), var(--clio-scrollbar-button-bevel);
|
|
2867
|
+
}
|
|
2868
|
+
|
|
2869
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-button.clio-sb-inc {
|
|
2870
|
+
border-top: 1px solid var(--clio-ink);
|
|
2871
|
+
border-left: 1px solid var(--clio-ink);
|
|
2872
|
+
background-image: var(--clio-scrollbar-right), var(--clio-scrollbar-button-bevel);
|
|
2873
|
+
}
|
|
2874
|
+
|
|
2875
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:decrement:active,
|
|
2876
|
+
:where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:decrement:active {
|
|
2877
|
+
background-image: var(--clio-scrollbar-up-on), var(--clio-scrollbar-button-bevel-on, none);
|
|
2878
|
+
}
|
|
2879
|
+
|
|
2880
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-v > .clio-sb-button.clio-sb-dec.clio-held {
|
|
2881
|
+
background-image: var(--clio-scrollbar-up-on), var(--clio-scrollbar-button-bevel-on, none);
|
|
2882
|
+
}
|
|
2883
|
+
|
|
2884
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:increment:active,
|
|
1722
2885
|
:where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:increment:active {
|
|
1723
|
-
background-image: var(--clio-scrollbar-down-on);
|
|
2886
|
+
background-image: var(--clio-scrollbar-down-on), var(--clio-scrollbar-button-bevel-on, none);
|
|
2887
|
+
}
|
|
2888
|
+
|
|
2889
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-v > .clio-sb-button.clio-sb-inc.clio-held {
|
|
2890
|
+
background-image: var(--clio-scrollbar-down-on), var(--clio-scrollbar-button-bevel-on, none);
|
|
1724
2891
|
}
|
|
1725
2892
|
|
|
1726
2893
|
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:decrement:active,
|
|
1727
2894
|
:where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:decrement:active {
|
|
1728
|
-
background-image: var(--clio-scrollbar-left-on);
|
|
2895
|
+
background-image: var(--clio-scrollbar-left-on), var(--clio-scrollbar-button-bevel-on, none);
|
|
2896
|
+
}
|
|
2897
|
+
|
|
2898
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-button.clio-sb-dec.clio-held {
|
|
2899
|
+
background-image: var(--clio-scrollbar-left-on), var(--clio-scrollbar-button-bevel-on, none);
|
|
1729
2900
|
}
|
|
1730
2901
|
|
|
1731
2902
|
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:increment:active,
|
|
1732
2903
|
:where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:increment:active {
|
|
1733
|
-
background-image: var(--clio-scrollbar-right-on);
|
|
2904
|
+
background-image: var(--clio-scrollbar-right-on), var(--clio-scrollbar-button-bevel-on, none);
|
|
2905
|
+
}
|
|
2906
|
+
|
|
2907
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-button.clio-sb-inc.clio-held {
|
|
2908
|
+
background-image: var(--clio-scrollbar-right-on), var(--clio-scrollbar-button-bevel-on, none);
|
|
1734
2909
|
}
|
|
1735
2910
|
|
|
1736
2911
|
/* Only the single arrow box at each end, as on the Mac. */
|
|
@@ -1748,12 +2923,224 @@
|
|
|
1748
2923
|
background: var(--clio-scrollbar-corner);
|
|
1749
2924
|
}
|
|
1750
2925
|
|
|
2926
|
+
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb-corner {
|
|
2927
|
+
border-top: 1px solid var(--clio-ink);
|
|
2928
|
+
border-left: 1px solid var(--clio-ink);
|
|
2929
|
+
background: var(--clio-scrollbar-corner);
|
|
2930
|
+
}
|
|
2931
|
+
|
|
1751
2932
|
@supports not selector(::-webkit-scrollbar) {
|
|
1752
2933
|
:where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, html.clio-scrollbars, .clio-scrollbars *) {
|
|
1753
2934
|
scrollbar-color: var(--clio-scrollbar-thumb-color, var(--clio-ink)) var(--clio-scrollbar-track-color, #c0c0c0);
|
|
1754
2935
|
}
|
|
1755
2936
|
}
|
|
1756
2937
|
|
|
2938
|
+
/* Scroll bars drawn by clio.js (optional): the same parts as the browser's
|
|
2939
|
+
scroll bar, as elements, so the scroll box keeps its era's fixed length, an
|
|
2940
|
+
arrow repeats while held and a dragged box can leave an outline behind.
|
|
2941
|
+
The parts take every ::-webkit-scrollbar rule (the build copies each one onto
|
|
2942
|
+
.clio-sb-*); this file only places them. clio.js sets each bar's geometry. */
|
|
2943
|
+
.clio-sb-host {
|
|
2944
|
+
box-sizing: border-box; /* the bar comes out of the box, as the browser's does (everything in a clio.css window already is) */
|
|
2945
|
+
scrollbar-width: none;
|
|
2946
|
+
}
|
|
2947
|
+
|
|
2948
|
+
.clio-sb-host::-webkit-scrollbar {
|
|
2949
|
+
display: none;
|
|
2950
|
+
}
|
|
2951
|
+
|
|
2952
|
+
/* The bar sits in the scroller's padding, which grows by the bar's width. */
|
|
2953
|
+
.clio-sb-host.clio-sb-y {
|
|
2954
|
+
padding-right: calc(var(--clio-sb-pr, 0px) + var(--clio-scrollbar-size));
|
|
2955
|
+
}
|
|
2956
|
+
|
|
2957
|
+
.clio-sb-host.clio-sb-x {
|
|
2958
|
+
padding-bottom: calc(var(--clio-sb-pb, 0px) + var(--clio-scrollbar-size));
|
|
2959
|
+
}
|
|
2960
|
+
|
|
2961
|
+
/* A zero-size first child that sticks to the scroller's corner, so the bars
|
|
2962
|
+
inside it stay put while the content moves. */
|
|
2963
|
+
.clio-sb-anchor {
|
|
2964
|
+
position: sticky;
|
|
2965
|
+
top: var(--clio-sb-pt, 0px);
|
|
2966
|
+
left: var(--clio-sb-pl, 0px);
|
|
2967
|
+
z-index: 2;
|
|
2968
|
+
display: block;
|
|
2969
|
+
width: 0;
|
|
2970
|
+
height: 0;
|
|
2971
|
+
margin: 0;
|
|
2972
|
+
padding: 0;
|
|
2973
|
+
border: 0;
|
|
2974
|
+
float: none;
|
|
2975
|
+
}
|
|
2976
|
+
|
|
2977
|
+
.clio-sb-anchor > :is(.clio-sb, .clio-sb-corner) {
|
|
2978
|
+
position: absolute;
|
|
2979
|
+
box-sizing: border-box;
|
|
2980
|
+
overflow: hidden;
|
|
2981
|
+
user-select: none;
|
|
2982
|
+
-webkit-user-select: none;
|
|
2983
|
+
touch-action: none;
|
|
2984
|
+
}
|
|
2985
|
+
|
|
2986
|
+
.clio-sb-anchor > .clio-sb > * {
|
|
2987
|
+
position: absolute;
|
|
2988
|
+
box-sizing: border-box;
|
|
2989
|
+
margin: 0;
|
|
2990
|
+
}
|
|
2991
|
+
|
|
2992
|
+
.clio-sb-anchor > .clio-sb-v > .clio-sb-dec { top: 0; left: 0; }
|
|
2993
|
+
.clio-sb-anchor > .clio-sb-v > .clio-sb-inc { bottom: 0; left: 0; }
|
|
2994
|
+
.clio-sb-anchor > .clio-sb-v > .clio-sb-track { top: var(--clio-scrollbar-size); bottom: var(--clio-scrollbar-size); left: 0; right: 0; }
|
|
2995
|
+
.clio-sb-anchor > .clio-sb-v > .clio-sb-thumb { top: var(--clio-scrollbar-size); left: var(--clio-scrollbar-thumb-inset, 0px); right: 0; min-width: 0; } /* the bar's min-width is the box's length */
|
|
2996
|
+
.clio-sb-anchor > .clio-sb-h > .clio-sb-dec { left: 0; top: 0; }
|
|
2997
|
+
.clio-sb-anchor > .clio-sb-h > .clio-sb-inc { right: 0; top: 0; }
|
|
2998
|
+
.clio-sb-anchor > .clio-sb-h > .clio-sb-track { left: var(--clio-scrollbar-size); right: var(--clio-scrollbar-size); top: 0; bottom: 0; }
|
|
2999
|
+
.clio-sb-anchor > .clio-sb-h > .clio-sb-thumb { left: var(--clio-scrollbar-size); top: var(--clio-scrollbar-thumb-inset, 0px); bottom: 0; min-height: 0; }
|
|
3000
|
+
|
|
3001
|
+
/* Smart Scrolling (Mac OS 8/9, Appearance > Options): both arrows at the far
|
|
3002
|
+
end, the up or left arrow first. */
|
|
3003
|
+
.clio-sb-anchor > .clio-sb-v.clio-sb-smart > .clio-sb-dec { top: auto; bottom: var(--clio-scrollbar-size); }
|
|
3004
|
+
.clio-sb-anchor > .clio-sb-v.clio-sb-smart > .clio-sb-track { top: 0; bottom: calc(2 * var(--clio-scrollbar-size)); }
|
|
3005
|
+
.clio-sb-anchor > .clio-sb-v.clio-sb-smart > .clio-sb-thumb { top: 0; }
|
|
3006
|
+
.clio-sb-anchor > .clio-sb-h.clio-sb-smart > .clio-sb-dec { left: auto; right: var(--clio-scrollbar-size); }
|
|
3007
|
+
.clio-sb-anchor > .clio-sb-h.clio-sb-smart > .clio-sb-track { left: 0; right: calc(2 * var(--clio-scrollbar-size)); }
|
|
3008
|
+
.clio-sb-anchor > .clio-sb-h.clio-sb-smart > .clio-sb-thumb { left: 0; }
|
|
3009
|
+
|
|
3010
|
+
/* QuickDraw kept a lane's pattern in step with the screen (System 6.0.8, System
|
|
3011
|
+
7.5.3): clio.js sets --clio-sb-px/-py on each bar to keep it in step with the
|
|
3012
|
+
page. A rule, not a token: the offsets belong to each bar. Eras whose tracks
|
|
3013
|
+
have their own rules (Drawing Board) place their layers themselves. */
|
|
3014
|
+
.clio-sb-anchor > .clio-sb > .clio-sb-track {
|
|
3015
|
+
background-position: var(--clio-sb-px, 0px) var(--clio-sb-py, 0px);
|
|
3016
|
+
}
|
|
3017
|
+
|
|
3018
|
+
/* The arrows lie over the box's ends and its shadow. */
|
|
3019
|
+
.clio-sb-anchor > .clio-sb > .clio-sb-button { z-index: 1; }
|
|
3020
|
+
|
|
3021
|
+
/* Mac OS 8/9: the lane's top shading also falls just past the box's far end
|
|
3022
|
+
(--clio-scrollbar-thumb-after, drawn only by clio.js's bars). */
|
|
3023
|
+
.clio-sb-anchor > .clio-sb > .clio-sb-thumb::after {
|
|
3024
|
+
content: "";
|
|
3025
|
+
position: absolute;
|
|
3026
|
+
background: var(--clio-scrollbar-thumb-after, none);
|
|
3027
|
+
}
|
|
3028
|
+
|
|
3029
|
+
.clio-sb-anchor > .clio-sb-v > .clio-sb-thumb::after { top: calc(100% + 1px); left: 0; right: 0; height: 2px; } /* past the box's end line */
|
|
3030
|
+
.clio-sb-anchor > .clio-sb-h > .clio-sb-thumb::after { left: calc(100% + 1px); top: 0; bottom: 0; width: 2px; }
|
|
3031
|
+
|
|
3032
|
+
/* Nothing to scroll: the lane stays, the box goes (as on the Mac). */
|
|
3033
|
+
.clio-sb-anchor > .clio-sb.clio-sb-off > .clio-sb-thumb {
|
|
3034
|
+
display: none;
|
|
3035
|
+
}
|
|
3036
|
+
|
|
3037
|
+
/* The outline a dragged scroll box leaves in System 6 and 7: the box's frame,
|
|
3038
|
+
drawn over the lane, until the button comes up. */
|
|
3039
|
+
.clio-sb-anchor > .clio-sb > .clio-sb-ghost {
|
|
3040
|
+
z-index: 1;
|
|
3041
|
+
padding: 1px;
|
|
3042
|
+
background: var(--clio-scrollbar-ghost, #000000);
|
|
3043
|
+
background-position: calc(var(--clio-sb-px, 0px) + var(--clio-sb-gx, 0px)) calc(var(--clio-sb-py, 0px) + var(--clio-sb-gy, 0px)); /* in step with the lane's pattern */
|
|
3044
|
+
mix-blend-mode: var(--clio-scrollbar-ghost-blend, normal);
|
|
3045
|
+
mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
|
|
3046
|
+
pointer-events: none;
|
|
3047
|
+
}
|
|
3048
|
+
|
|
3049
|
+
/* clio.js outlines (a dragged window, zoom rects): QuickDraw's grey pattern,
|
|
3050
|
+
inverting what lies under it, in step with the screen. */
|
|
3051
|
+
.clio-outline {
|
|
3052
|
+
/* The outline is the frame of the window's structure region (QuickDraw's
|
|
3053
|
+
InsetRgn, rows and columns apart): the frame and its 1px shadow, which starts
|
|
3054
|
+
--clio-drag-outline-shadow-inset in from the top-right and bottom-left corners,
|
|
3055
|
+
so the region and the band step in there (all measured). e, k, w below. */
|
|
3056
|
+
--e: var(--clio-drag-outline-extra, 0px);
|
|
3057
|
+
--k: var(--clio-drag-outline-shadow-inset, 1px);
|
|
3058
|
+
--w: var(--clio-drag-outline-width, 1px);
|
|
3059
|
+
position: fixed;
|
|
3060
|
+
z-index: 2147483000;
|
|
3061
|
+
box-sizing: border-box;
|
|
3062
|
+
margin: 0;
|
|
3063
|
+
/* gray inverts the pixels whose x + y is odd on the screen (System 6.0.8, 7.5.3
|
|
3064
|
+
and Mac OS 9.0, measured); clio.js sets the position that keeps it to the page */
|
|
3065
|
+
background: repeating-conic-gradient(#ffffff 0 25%, transparent 0 50%) 0 0 / 2px 2px;
|
|
3066
|
+
mix-blend-mode: difference;
|
|
3067
|
+
/* the band (box less content box), the region's two notches taken out and the
|
|
3068
|
+
two pieces of the inset region they remove put back: every piece lies wholly
|
|
3069
|
+
in or out of what is below it, so xor does each */
|
|
3070
|
+
mask:
|
|
3071
|
+
linear-gradient(#000 0 0) left 0 bottom 0 / var(--k) var(--e) no-repeat border-box exclude,
|
|
3072
|
+
linear-gradient(#000 0 0) right 0 top 0 / var(--e) var(--k) no-repeat border-box exclude,
|
|
3073
|
+
linear-gradient(#000 0 0) left var(--w) bottom var(--w) / var(--k) var(--e) no-repeat border-box exclude,
|
|
3074
|
+
linear-gradient(#000 0 0) right var(--w) top var(--w) / var(--e) var(--k) no-repeat border-box exclude,
|
|
3075
|
+
linear-gradient(#000 0 0) content-box exclude,
|
|
3076
|
+
linear-gradient(#000 0 0) border-box;
|
|
3077
|
+
pointer-events: none;
|
|
3078
|
+
image-rendering: pixelated;
|
|
3079
|
+
}
|
|
3080
|
+
|
|
3081
|
+
/* clio.js: the move button of a movable window and the live region. Out of
|
|
3082
|
+
sight but in reach; with keyboard focus the title bar shows the ring. */
|
|
3083
|
+
:is(.clio-move, .clio-live) {
|
|
3084
|
+
/* !important: the title bar's own button rules (the close box's art and
|
|
3085
|
+
place) must not reach it */
|
|
3086
|
+
position: absolute !important;
|
|
3087
|
+
width: 1px !important;
|
|
3088
|
+
height: 1px !important;
|
|
3089
|
+
margin: -1px !important;
|
|
3090
|
+
padding: 0 !important;
|
|
3091
|
+
overflow: hidden !important;
|
|
3092
|
+
clip-path: inset(50%) !important;
|
|
3093
|
+
white-space: nowrap !important;
|
|
3094
|
+
border: 0 !important;
|
|
3095
|
+
background: none !important;
|
|
3096
|
+
box-shadow: none !important;
|
|
3097
|
+
}
|
|
3098
|
+
|
|
3099
|
+
.title-bar:has(> .clio-move:focus-visible) {
|
|
3100
|
+
outline: var(--clio-focus-outline);
|
|
3101
|
+
outline-offset: -1px;
|
|
3102
|
+
}
|
|
3103
|
+
|
|
3104
|
+
|
|
3105
|
+
/* clio.js: a movable window's title bar takes a finger's drag itself (on a
|
|
3106
|
+
touch screen the browser would otherwise pan the page and cancel the drag). */
|
|
3107
|
+
.clio-drag-bar {
|
|
3108
|
+
touch-action: none;
|
|
3109
|
+
}
|
|
3110
|
+
|
|
3111
|
+
/* ---- clio.js: the insertion point --------------------------------------------
|
|
3112
|
+
TextEdit inverted a 1px line for its caret, as tall as the line: white in a
|
|
3113
|
+
difference blend inverts what is under it the same way. The field's own caret
|
|
3114
|
+
is hidden only while clio.js draws this one. */
|
|
3115
|
+
.clio-caret {
|
|
3116
|
+
position: absolute;
|
|
3117
|
+
z-index: 2147483646;
|
|
3118
|
+
width: 1px;
|
|
3119
|
+
background: #ffffff;
|
|
3120
|
+
mix-blend-mode: difference;
|
|
3121
|
+
pointer-events: none;
|
|
3122
|
+
}
|
|
3123
|
+
|
|
3124
|
+
.clio-caret-off,
|
|
3125
|
+
.clio-caret[hidden] {
|
|
3126
|
+
visibility: hidden;
|
|
3127
|
+
}
|
|
3128
|
+
|
|
3129
|
+
.clio-caret-field {
|
|
3130
|
+
caret-color: transparent;
|
|
3131
|
+
}
|
|
3132
|
+
|
|
3133
|
+
/* Forced colours repaint the line and may drop the blend: the system's caret instead. */
|
|
3134
|
+
@media (forced-colors: active) {
|
|
3135
|
+
.clio-caret {
|
|
3136
|
+
display: none;
|
|
3137
|
+
}
|
|
3138
|
+
|
|
3139
|
+
.clio-caret-field {
|
|
3140
|
+
caret-color: auto;
|
|
3141
|
+
}
|
|
3142
|
+
}
|
|
3143
|
+
|
|
1757
3144
|
/* Control Strip (System 7.5 to Mac OS 9): a row of module buttons with scroll
|
|
1758
3145
|
arrows and a tab that folds the strip away. Markup follows AI System 6:
|
|
1759
3146
|
.control-strip > button.control-strip-scroll.control-strip-scroll-back,
|
|
@@ -1814,7 +3201,7 @@
|
|
|
1814
3201
|
border-radius: 0;
|
|
1815
3202
|
appearance: none;
|
|
1816
3203
|
-webkit-appearance: none;
|
|
1817
|
-
cursor:
|
|
3204
|
+
cursor: var(--clio-cursor-arrow);
|
|
1818
3205
|
}
|
|
1819
3206
|
|
|
1820
3207
|
/* Scroll arrows: 13px cells, sunken and hollow while there is nothing to scroll. */
|
|
@@ -1843,8 +3230,8 @@
|
|
|
1843
3230
|
background-image: var(--clio-strip-forward);
|
|
1844
3231
|
}
|
|
1845
3232
|
|
|
1846
|
-
:where(.control-strip) > .control-strip-scroll:not(:disabled):active,
|
|
1847
|
-
:where(.control-strip-module):not(:disabled):is(:active, [aria-expanded="true"]) {
|
|
3233
|
+
:where(.control-strip) > .control-strip-scroll:not(:disabled):active:where(:not([data-clio-off])),
|
|
3234
|
+
:where(.control-strip-module):not(:disabled):is(:active:where(:not([data-clio-off])), [aria-expanded="true"]) {
|
|
1848
3235
|
background-color: var(--clio-strip-pressed-bg);
|
|
1849
3236
|
box-shadow: var(--clio-strip-pressed-shadow);
|
|
1850
3237
|
}
|
|
@@ -1878,7 +3265,7 @@
|
|
|
1878
3265
|
color: var(--clio-ink);
|
|
1879
3266
|
appearance: none;
|
|
1880
3267
|
-webkit-appearance: none;
|
|
1881
|
-
cursor:
|
|
3268
|
+
cursor: var(--clio-cursor-arrow);
|
|
1882
3269
|
}
|
|
1883
3270
|
|
|
1884
3271
|
:where(.control-strip-module) > :is(svg, img, .sys-icon) {
|
|
@@ -1980,3 +3367,81 @@
|
|
|
1980
3367
|
box-shadow: none;
|
|
1981
3368
|
}
|
|
1982
3369
|
}
|
|
3370
|
+
|
|
3371
|
+
/* Retina and other whole-number pixel ratios: every Mac pixel becomes a solid
|
|
3372
|
+
2x2 or 3x3 block (nearest neighbour), as a 1x screen magnified would show it.
|
|
3373
|
+
At fractional ratios (1.25, 1.5, browser zoom) the browser's smoothing stays:
|
|
3374
|
+
nearest neighbour there gives uneven pixel widths. image-rendering inherits,
|
|
3375
|
+
so the page's own pictures, video and canvas are handed back to smoothing. */
|
|
3376
|
+
@media (resolution: 2dppx), (resolution: 3dppx), (resolution: 4dppx) {
|
|
3377
|
+
:root {
|
|
3378
|
+
image-rendering: pixelated;
|
|
3379
|
+
}
|
|
3380
|
+
|
|
3381
|
+
:where(img, picture, video, canvas, iframe, object, embed) {
|
|
3382
|
+
image-rendering: auto;
|
|
3383
|
+
}
|
|
3384
|
+
}
|
|
3385
|
+
|
|
3386
|
+
/* Chinese, Japanese and Korean (owner decisions 9 and 10, 2026-11-14).
|
|
3387
|
+
|
|
3388
|
+
Measured: KanjiTalk 7.5.3 and Mac OS 9.0 with the Chinese Language Kits draw CJK text
|
|
3389
|
+
at the Roman geometry: 16px menu and text rows, the same baseline, 12px ideographs whose
|
|
3390
|
+
ink runs from 10px above the baseline to 1px below (tooling/emulator/measure-cjk.sh).
|
|
3391
|
+
So nothing moves; only the fonts change. A localized system's system font is the
|
|
3392
|
+
script's font, Latin included (KanjiTalk draws "Infinite HD" and OK in Osaka), so the
|
|
3393
|
+
CJK font leads every stack.
|
|
3394
|
+
|
|
3395
|
+
Each stack names the period bitmap interface font (Taipei, Beijing, Osaka, Seoul), then
|
|
3396
|
+
Clio's stand-in, Fusion Pixel 12px proportional (OFL-1.1, THIRD-PARTY.md) cut to the
|
|
3397
|
+
character set that bitmap font drew (Big5, GB 2312, JIS X 0208, KS X 1001), then an
|
|
3398
|
+
outline family of the period. The outline families come after the stand-in because
|
|
3399
|
+
current macOS still installs some of them (AppleGothic) as antialiased outlines.
|
|
3400
|
+
A browser fetches a stand-in only for an element in that language that has text in
|
|
3401
|
+
its unicode-range: pages without CJK text never load them. */
|
|
3402
|
+
@font-face {
|
|
3403
|
+
font-family: "Clio Pixel TC";
|
|
3404
|
+
src: url("fonts/FusionPixel12-TC.woff2") format("woff2");
|
|
3405
|
+
font-weight: 100 900;
|
|
3406
|
+
font-display: swap;
|
|
3407
|
+
unicode-range: U+20-F7, U+391-451, U+2013-203E, U+2103-2199, U+2460-247D, U+2500-2642, U+3000-3129, U+32A3, U+4E00-7E9C, U+7F36-8B9E, U+8C37-9483, U+9577-9FA4, U+FA0C-FA0D, U+FE30-FE4F, U+FF01-FFE3;
|
|
3408
|
+
}
|
|
3409
|
+
|
|
3410
|
+
@font-face {
|
|
3411
|
+
font-family: "Clio Pixel SC";
|
|
3412
|
+
src: url("fonts/FusionPixel12-SC.woff2") format("woff2");
|
|
3413
|
+
font-weight: 100 900;
|
|
3414
|
+
font-display: swap;
|
|
3415
|
+
unicode-range: U+20-1DC, U+391-451, U+2015-203B, U+2103-2193, U+2312, U+2460-2642, U+3000-3129, U+3220-3229, U+4E00-7DAE, U+7E3B-8C98, U+8D1D-8ECE, U+8F66-91DC, U+9274-99A8, U+9A6C-9B54, U+9C7C-9CE2, U+9E1F-9FA0, U+FF01-FF5E, U+FFE0-FFE5;
|
|
3416
|
+
}
|
|
3417
|
+
|
|
3418
|
+
@font-face {
|
|
3419
|
+
font-family: "Clio Pixel JA";
|
|
3420
|
+
src: url("fonts/FusionPixel12-JA.woff2") format("woff2");
|
|
3421
|
+
font-weight: 100 900;
|
|
3422
|
+
font-display: swap;
|
|
3423
|
+
unicode-range: U+20-F7, U+391-451, U+2010-203B, U+2103-21D4, U+2312, U+2500-266F, U+3000-30FE, U+4E00-7E9C, U+7F36-8B9A, U+8C37-9481, U+9577-9FA0, U+FF01-FFE5;
|
|
3424
|
+
}
|
|
3425
|
+
|
|
3426
|
+
@font-face {
|
|
3427
|
+
font-family: "Clio Pixel KO";
|
|
3428
|
+
src: url("fonts/FusionPixel12-KO.woff2") format("woff2");
|
|
3429
|
+
font-weight: 100 900;
|
|
3430
|
+
font-display: swap;
|
|
3431
|
+
unicode-range: U+20-167, U+391-451, U+2015-21D4, U+2312, U+2460-266D, U+3000-318E, U+327F, U+4E00-7E9C, U+7F36-8B9A, U+8C37-947F, U+9577-9C57, U+9CE5-9F9C, U+AC00-D79D, U+F900-FA0B, U+FF01-FF5E, U+FFE0-FFE6;
|
|
3432
|
+
}
|
|
3433
|
+
|
|
3434
|
+
:lang(zh) { --clio-font-cjk: Beijing, "Clio Pixel SC", Hei; }
|
|
3435
|
+
:is(:lang(zh-Hant), :lang(zh-TW), :lang(zh-HK), :lang(zh-MO)) { --clio-font-cjk: Taipei, "Clio Pixel TC", "Apple LiGothic"; }
|
|
3436
|
+
:lang(ja) { --clio-font-cjk: Osaka, "Clio Pixel JA"; }
|
|
3437
|
+
:lang(ko) { --clio-font-cjk: Seoul, "Clio Pixel KO", AppleGothic; }
|
|
3438
|
+
|
|
3439
|
+
/* Declared beside --clio-font-cjk, on every element in the language, so var() resolves there. */
|
|
3440
|
+
:is(:lang(zh), :lang(ja), :lang(ko)) {
|
|
3441
|
+
--clio-font-chrome: var(--clio-font-cjk), "Clio Sans '84", Chicago, "ChicagoFLF", Charcoal, Geneva, "Helvetica Neue", Arial, sans-serif;
|
|
3442
|
+
--clio-font-text: var(--clio-font-cjk), "Clio Text '84", Geneva, "Helvetica Neue", Arial, sans-serif;
|
|
3443
|
+
/* Small text keeps the 9px Latin face: the stand-in is a 12px font (KanjiTalk's Finder
|
|
3444
|
+
drew 8px kanji here, from a 9-point Osaka clio.css does not have). */
|
|
3445
|
+
--clio-font-small: "Clio Text '84 9", var(--clio-font-cjk), Geneva, "Helvetica Neue", Arial, sans-serif;
|
|
3446
|
+
--clio-font-display: var(--clio-font-cjk), Chicago, "ChicagoFLF", Charcoal, "Helvetica Neue", Arial, sans-serif;
|
|
3447
|
+
}
|