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.
Files changed (86) hide show
  1. package/AGENTS.md +10 -6
  2. package/EVIDENCE.md +130 -9
  3. package/README.md +96 -3
  4. package/THIRD-PARTY.md +37 -3
  5. package/dist/art/cursors/arrow-2x.png +0 -0
  6. package/dist/art/cursors/arrow-3x.png +0 -0
  7. package/dist/art/cursors/arrow.png +0 -0
  8. package/dist/art/cursors/ibeam-2x.png +0 -0
  9. package/dist/art/cursors/ibeam-3x.png +0 -0
  10. package/dist/art/cursors/ibeam.png +0 -0
  11. package/dist/art/cursors/watch-2x.png +0 -0
  12. package/dist/art/cursors/watch-3x.png +0 -0
  13. package/dist/art/cursors/watch.png +0 -0
  14. package/dist/art/drawingboard/help-button.png +0 -0
  15. package/dist/art/drawingboard/parts/chasing-arrows.png +0 -0
  16. package/dist/art/drawingboard/parts/disclosure-open.png +0 -0
  17. package/dist/art/drawingboard/parts/disclosure.png +0 -0
  18. package/dist/art/drawingboard/parts/hpair-dec-on.png +0 -0
  19. package/dist/art/drawingboard/parts/hpair-inc-on.png +0 -0
  20. package/dist/art/drawingboard/parts/hpair-off.png +0 -0
  21. package/dist/art/drawingboard/parts/hpair.png +0 -0
  22. package/dist/art/drawingboard/parts/little-arrows-disabled.png +0 -0
  23. package/dist/art/drawingboard/parts/little-arrows-down.png +0 -0
  24. package/dist/art/drawingboard/parts/little-arrows-up.png +0 -0
  25. package/dist/art/drawingboard/parts/little-arrows.png +0 -0
  26. package/dist/art/drawingboard/parts/menu-scroll-down.png +0 -0
  27. package/dist/art/drawingboard/parts/menu-scroll-up.png +0 -0
  28. package/dist/art/drawingboard/parts/slider-thumb.png +0 -0
  29. package/dist/art/drawingboard/parts/vpair-dec-on.png +0 -0
  30. package/dist/art/drawingboard/parts/vpair-inc-on.png +0 -0
  31. package/dist/art/drawingboard/parts/vpair-off.png +0 -0
  32. package/dist/art/drawingboard/parts/vpair.png +0 -0
  33. package/dist/art/drawingboard/slider-track.png +0 -0
  34. package/dist/art/drawingboard/window-bottom-inactive-tiled.svg +1 -0
  35. package/dist/art/drawingboard/window-bottom-tiled.svg +1 -0
  36. package/dist/art/drawingboard/window-top-inactive-tiled.svg +1 -0
  37. package/dist/art/drawingboard/window-top-tiled.svg +1 -0
  38. package/dist/art/platinum/balloon-tail.png +0 -0
  39. package/dist/art/platinum/balloon.png +0 -0
  40. package/dist/art/platinum/bevel-held.png +0 -0
  41. package/dist/art/platinum/bevel-menu-arrow.png +0 -0
  42. package/dist/art/platinum/bevel.png +0 -0
  43. package/dist/art/platinum/chasing-arrows.png +0 -0
  44. package/dist/art/platinum/disclosure-open.png +0 -0
  45. package/dist/art/platinum/disclosure.png +0 -0
  46. package/dist/art/platinum/help-button.png +0 -0
  47. package/dist/art/platinum/little-arrows-disabled.png +0 -0
  48. package/dist/art/platinum/little-arrows.png +0 -0
  49. package/dist/art/platinum/slider-thumb.png +0 -0
  50. package/dist/art/platinum/slider-track.png +0 -0
  51. package/dist/art/platinum/sort-direction.png +0 -0
  52. package/dist/art/platinum/utility-close.png +0 -0
  53. package/dist/art/platinum/utility-collapse-side.png +0 -0
  54. package/dist/art/platinum/utility-collapse.png +0 -0
  55. package/dist/art/platinum/utility-dots.png +0 -0
  56. package/dist/art/platinum/utility-zoom.png +0 -0
  57. package/dist/art/system7/disclosure-open.png +0 -0
  58. package/dist/art/system7/disclosure.png +0 -0
  59. package/dist/art/system7/little-arrows.png +0 -0
  60. package/dist/art/system7/menu-scroll-down.png +0 -0
  61. package/dist/art/system7/menu-scroll-up.png +0 -0
  62. package/dist/clio.css +3632 -1045
  63. package/dist/clio.drawingboard.css +2650 -325
  64. package/dist/clio.drawingboard.min.css +2 -2
  65. package/dist/clio.js +1024 -0
  66. package/dist/clio.min.css +2 -2
  67. package/dist/clio.min.js +13 -0
  68. package/dist/clio.platinum.css +3096 -857
  69. package/dist/clio.platinum.min.css +2 -2
  70. package/dist/clio.system6.css +1640 -175
  71. package/dist/clio.system6.min.css +2 -2
  72. package/dist/clio.system7.css +1685 -182
  73. package/dist/clio.system7.min.css +2 -2
  74. package/dist/components.json +1102 -21
  75. package/dist/fonts/ClioSans97Plain.woff2 +0 -0
  76. package/dist/fonts/ClioSans97PlainExact.woff2 +0 -0
  77. package/dist/fonts/ClioSans97TitlePlain.woff2 +0 -0
  78. package/dist/fonts/ClioSans97TitlePlainExact.woff2 +0 -0
  79. package/dist/fonts/FusionPixel12-JA.woff2 +0 -0
  80. package/dist/fonts/FusionPixel12-KO.woff2 +0 -0
  81. package/dist/fonts/FusionPixel12-SC.woff2 +0 -0
  82. package/dist/fonts/FusionPixel12-TC.woff2 +0 -0
  83. package/dist/fonts/OFL-FusionPixel.txt +399 -0
  84. package/dist/fonts/Virtue.woff2 +0 -0
  85. package/llms.txt +14 -1
  86. package/package.json +6 -3
@@ -1,4 +1,4 @@
1
- /*! clio.css 0.9.2 (Platinum default) | MIT | https://surfine.github.io/clio.css/
1
+ /*! clio.css 0.12.0 (Platinum default) | 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 16 levels as OpenType-SVG glyphs, which Safari draws, over outlines
42
- (each pixel at least half covered) for browsers with neither. */
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/ClioSans97Plain.woff2") format("woff2");
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/ClioSans97TitlePlain.woff2") format("woff2");
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. */
@@ -271,6 +423,12 @@
271
423
  fallback colour where background-clip: text is missing. */
272
424
  --clio-disabled-dither: var(--clio-art-s6-gray50);
273
425
  --clio-disabled-fill: transparent;
426
+ /* A dimmed pop-up menu: the whole control (frame, shadow, title, arrow) drawn
427
+ through the 50% gray, the ink where x + y is odd surviving (System 7.5.3,
428
+ Memory's Select Hard Disk with virtual memory off, measured). The pattern
429
+ starts at the control's corner, not the screen's. */
430
+ --clio-popup-disabled-mask: var(--clio-art-s6-gray50) 0 0 / 2px 2px; /* a crisp 2x2 picture: a gradient blurs at 2x in Firefox */
431
+ --clio-popup-disabled-fg: var(--clio-ink);
274
432
  --clio-selection-bg: #000000;
275
433
  --clio-selection-fg: #ffffff;
276
434
 
@@ -280,6 +438,7 @@
280
438
  /* Geneva 9: the Finder info line, icon names, status lines. */
281
439
  --clio-font-small: "Clio Text '84 9", Geneva, "Helvetica Neue", Arial, sans-serif;
282
440
  --clio-text-smoothing: none;
441
+ --clio-text-smoothing-moz: grayscale; /* Firefox's nearest to none */
283
442
  --clio-font-mono: Monaco, Menlo, Consolas, "Courier New", monospace;
284
443
  /* Chrome type at sizes other than 12px and its multiples (.display): an
285
444
  outline face, smoothed. */
@@ -299,6 +458,12 @@
299
458
  --clio-radius: 0;
300
459
  --clio-control-height: 20px;
301
460
  --clio-field-height: 20px;
461
+ /* clio.js's insertion point: the font's line height, 16px for 12pt (System
462
+ 7.5.3, Find File's 20px field: rows 2-17), whatever the field's line-height. */
463
+ --clio-caret-height: 16px;
464
+ /* ...and its blink: CaretTime, 32 ticks lit and 32 dark (System 6.0.8 and 7.5.3 Find File;
465
+ PRAM's factory value in the Mac IIx and Quadra 650 ROMs). */
466
+ --clio-caret-ticks: 32;
302
467
  --clio-row-height: 16px;
303
468
  --clio-gap: 8px;
304
469
 
@@ -423,6 +588,7 @@
423
588
  /* Edit text: 1px frame, text inset 3px (Control Panel RAM cache field). */
424
589
  --clio-field-padding: 3px;
425
590
  --clio-field-focus-shadow: none;
591
+ --clio-field-focus-outline: var(--clio-focus-outline);
426
592
 
427
593
  /* Pop-up menus */
428
594
  --clio-popup-bg: var(--clio-paper);
@@ -441,12 +607,43 @@
441
607
  QuickDraw's ltGray, one dot in four. */
442
608
  --clio-scrollbar-size: 15px;
443
609
  --clio-scrollbar-track: var(--clio-art-s6-ltgray) 0 0 / 4px 2px repeat, #ffffff;
610
+ /* clio.js scroll bars: System 6 and 7 drag an outline of the box and scroll
611
+ on release; the box keeps one length, whatever the document's. */
612
+ --clio-scrollbar-thumb-length: 16px;
613
+ --clio-scrollbar-thumb-tracking: outline;
614
+ --clio-scrollbar-thumb-overlap: 0px;
615
+ --clio-scrollbar-thumb-after: none;
616
+ /* clio.js: a held arrow or lane repeats at once (System 6 and 7's TrackControl
617
+ calls the action on every pass while the button is down) */
618
+ --clio-scrollbar-repeat-delay: 0ms;
619
+ /* clio.js menus: System 6 and 7 menus stay open only while the button is held */
620
+ --clio-menu-sticky: 0;
621
+ /* clio.js: the grey outline of a dragged window (System 6.0.8 and 7.5.3: 1px) */
622
+ --clio-drag-outline-width: 1px;
623
+ /* ... around the window and its 1px shadow (both measured) */
624
+ --clio-drag-outline-extra: 1px;
625
+ /* clio.zoomRects() (System 7.5.3, measured): 8 outlines at (1.6^k - 1) / (1.6^8 - 1)
626
+ of the way, 4 on screen at once */
627
+ --clio-zoom-count: 8;
628
+ --clio-zoom-steps: 8;
629
+ --clio-zoom-ratio: 1.6;
630
+ --clio-zoom-offset: 1;
631
+ --clio-zoom-keep: 4;
632
+ --clio-drag-outline-shadow-inset: 0px; /* System 6: the region is the whole rectangle, though the shadow is drawn from a pixel in */
633
+ /* clio.js: a dragged scroll box leaves its frame XORed with dkGray (System
634
+ 6.0.8, measured): white where dkGray is set, in step with the lane's ltGray,
635
+ inverting what is under it, so over the lane it comes out solid black. */
636
+ --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;
637
+ --clio-scrollbar-ghost-blend: difference;
638
+ /* clio.js: the box sits inside the bar's line, 14px wide (System 6.0.8, System Folder list) */
639
+ --clio-scrollbar-thumb-inset: 1px;
444
640
  --clio-scrollbar-track-shadow: none;
445
641
  --clio-scrollbar-thumb-bg: var(--clio-paper);
446
642
  --clio-scrollbar-thumb-border: 1px solid var(--clio-ink);
447
643
  --clio-scrollbar-thumb-shadow: none;
448
644
  --clio-scrollbar-button-bg: var(--clio-paper);
449
645
  --clio-scrollbar-button-shadow: none;
646
+ --clio-scrollbar-button-bevel: none;
450
647
  --clio-scrollbar-up: var(--clio-art-s6-up);
451
648
  --clio-scrollbar-up-on: var(--clio-art-s6-up-on);
452
649
  --clio-scrollbar-down: var(--clio-art-s6-down);
@@ -549,6 +746,99 @@
549
746
  --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");
550
747
  --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");
551
748
  --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");
749
+ /* Disclosure triangle: System 6 had none; it takes System 7's (Finder list
750
+ view, 11px, black with a blue and white checker). */
751
+ --clio-disclosure-size: 11px;
752
+ --clio-disclosure-gap: 4px;
753
+ --clio-art-disclosure: url("art/system7/disclosure.png");
754
+ --clio-art-disclosure-open: url("art/system7/disclosure-open.png");
755
+
756
+ /* List view (Finder, View by Name; System 7.5.3): headers on the window's
757
+ white, the sorted one underlined, a double rule (black, white, black) below. */
758
+ --clio-list-view-bg: var(--clio-paper);
759
+ --clio-list-view-row: 16px;
760
+ --clio-list-view-header-height: 20px;
761
+ --clio-list-view-header-padding: 0 4px 3px;
762
+ --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;
763
+ --clio-list-view-sorted-header-bg: var(--clio-list-view-header-bg);
764
+ --clio-list-view-sorted-decoration: underline;
765
+ --clio-list-view-sorted-bg: transparent;
766
+ --clio-list-view-sort-width: 0;
767
+
768
+ /* Slider: System 6 had none; it takes Platinum's (Mouse control panel,
769
+ Mac OS 9.0) until an era draws its own. */
770
+ --clio-slider-height: 16px;
771
+ --clio-slider-track-height: 7px;
772
+ --clio-slider-track-top: 3px;
773
+ --clio-slider-track-slice: 3px;
774
+ --clio-slider-track-slice-n: 3;
775
+ --clio-slider-thumb-width: 15px;
776
+ --clio-slider-thumb-height: 16px;
777
+ --clio-art-slider-track: url("art/platinum/slider-track.png");
778
+ --clio-art-slider-thumb: url("art/platinum/slider-thumb.png");
779
+ --clio-slider-tick-gap: 0px;
780
+ --clio-slider-tick-count: 5;
781
+ --clio-slider-tick-offset: 9px;
782
+ --clio-slider-tick-run: 18px;
783
+ --clio-slider-tick-light: #ffffff;
784
+ --clio-slider-tick-ink: #000000;
785
+ --clio-slider-tick-shade: #888888;
786
+
787
+ /* Little arrows: System 6 had none; it takes System 7's (Memory control
788
+ panel, Cache Size: 15x25). Held and dimmed states are not on System 7's
789
+ screens and keep the normal picture. */
790
+ --clio-little-arrows-width: 15px;
791
+ --clio-little-arrows-height: 25px;
792
+ --clio-art-little-arrows: url("art/system7/little-arrows.png");
793
+ --clio-art-little-arrows-up: var(--clio-art-little-arrows);
794
+ --clio-art-little-arrows-down: var(--clio-art-little-arrows);
795
+ --clio-art-little-arrows-disabled: var(--clio-art-little-arrows);
796
+
797
+ /* Bevel button: System 6 and 7 had none; they take Platinum's
798
+ (Navigation Services, Mac OS 9.0). */
799
+ --clio-bevel-min: 20px;
800
+ --clio-bevel-padding: 0 2px;
801
+ --clio-bevel-slice: 3px;
802
+ --clio-bevel-slice-n: 3;
803
+ --clio-art-bevel: url("art/platinum/bevel.png");
804
+ --clio-art-bevel-held: url("art/platinum/bevel-held.png");
805
+ --clio-art-bevel-menu-arrow: url("art/platinum/bevel-menu-arrow.png");
806
+ --clio-bevel-arrow-right: 5px;
807
+ --clio-bevel-arrow-bottom: 4px;
808
+ --clio-bevel-arrow-width: 3px;
809
+ --clio-bevel-arrow-height: 2px;
810
+
811
+ /* Chasing arrows: Platinum's three frames (Network Browser, Mac OS 9.0). */
812
+ --clio-art-chasing-arrows: url("art/platinum/chasing-arrows.png");
813
+ --clio-chasing-arrows-frames: 3;
814
+
815
+ /* Separator: a 1px ink line. */
816
+ --clio-separator-height: 1px;
817
+ --clio-separator-margin: 8px 0;
818
+ --clio-separator-bg: var(--clio-ink);
819
+
820
+ /* Help button: Platinum's (Keyboard control panel, Mac OS 9.0). */
821
+ --clio-art-help-button: url("art/platinum/help-button.png");
822
+ --clio-image-well-bg: #ffffff;
823
+
824
+ /* Utility window: the document window's parts at the size of System 7's
825
+ floating windows (inferred: none was on the captured screens). */
826
+ --clio-utility-titlebar-height: 13px;
827
+ --clio-utility-titlebar-row: 11px;
828
+ --clio-utility-box-size: 9px;
829
+ --clio-utility-slot: 13px;
830
+ --clio-utility-title-size: 9px;
831
+
832
+ /* Help balloon: Mac OS 9.0's (Balloon Help), the same in every era. */
833
+ --clio-art-balloon: url("art/platinum/balloon.png");
834
+ --clio-art-balloon-tail: url("art/platinum/balloon-tail.png");
835
+
836
+ /* Scrolling menu arrows: System 6 and 7 (Control Panels submenu, System
837
+ 7.5.3), black, 5px in from the item's left (up arrow inferred, mirrored). */
838
+ --clio-art-menu-scroll-down: url("art/system7/menu-scroll-down.png");
839
+ --clio-art-menu-scroll-up: url("art/system7/menu-scroll-up.png");
840
+ --clio-menu-scroll-left: 5px;
841
+
552
842
  /* Frames cut from captures by tooling/frame-art.py. */
553
843
  --clio-art-frame-s6-button: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAAAAAAD///+D3c/SAAAAAXRSTlMAQObYZgAAACpJREFUeJxjYAxgYBINZWBiYWFgCmB0YGJgYABhBqmVDEx//jAwMAYwAAA66QRtNyAoFwAAAABJRU5ErkJggg==");
554
844
  --clio-art-frame-s6-button-held: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAAB1JREFUeJxjkGFgSmZgYmBg/N/IxABiMNSDSRkGACm1Aqb7EOVpAAAAAElFTkSuQmCC");
@@ -558,6 +848,7 @@
558
848
  --clio-art-frame-p9-ring: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANBAMAAACAxflPAAAAG1BMVEUAAAAAAAB3d3fd3d3MzMy7u7uqqqoiIiKIiIhznn7oAAAAAXRSTlMAQObYZgAAAFpJREFUeJxjZGDnYmB7ycDCwKPAwPjzAwujgjEDg+x6xuLDrx6oOXEwCCcxMDAlCTAx/GMAISYGCEDQTGAOUyKLAoOKQgIjY6gAA9PO+4wMElwMDO8+MELNBwCaGBDQEM8mggAAAABJRU5ErkJggg==");
559
849
  --clio-art-frame-p9-button-disabled: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAACIiIjd3d2RXqmqAAAAAXRSTlMAQObYZgAAACFJREFUeJxjYA1hYBINZWAKYHRgYmBgQMYMUisZGFhDGAAtsQJ9dgAT/gAAAABJRU5ErkJggg==");
560
850
  --clio-art-frame-p9-popup: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAGFBMVEUAAAAAAAB3d3fd3d27u7uqqqoiIiL///+EaqngAAAAAXRSTlMAQObYZgAAACtJREFUeJxjYEhMYGBi5H/IwJh+klWbQYCBQYAl/OQnOwbGAEUGpv+C9gwAea0HTcaLsPwAAAAASUVORK5CYII=");
851
+ --clio-art-frame-p9-popup-open: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAGFBMVEUAAAAAAADd3d1mZmZEREQiIiKIiIj///+MKsksAAAAAXRSTlMAQObYZgAAACtJREFUeJxjEBQMYGBii//IwCjOKSbFIMDAIMAozun2iomB4fcGJgbG9wwAWK0GLJJZmp8AAAAASUVORK5CYII="); /* 7x7, slice 3 */
561
852
  --clio-art-frame-p9-popup-disabled: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHAgMAAAC5PL9AAAAACVBMVEUAAACIiIjd3d2RXqmqAAAAAXRSTlMAQObYZgAAAB1JREFUeJxjZLVmEg5gChBhcGBh0ljAtOENI6s1ACDmA/qjrWTUAAAAAElFTkSuQmCC");
562
853
  --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");
563
854
  --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");
@@ -567,6 +858,15 @@
567
858
  --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");
568
859
  --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");
569
860
  --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");
861
+ /* Rounded-corner window (rDocProc): corner masks and frame curves, tooling/rare-art.py. */
862
+ --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");
863
+ --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");
864
+ --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");
865
+ --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");
866
+ --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");
867
+ --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");
868
+ --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");
869
+ --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");
570
870
  }
571
871
 
572
872
  /* Base. clio.css styles elements only inside its own components, plus bare
@@ -581,7 +881,7 @@
581
881
  }
582
882
 
583
883
  :where(.window, .menu-bar, [role="menubar"], [role="menu-bar"], .menu, [role="menu"],
584
- .modal-dialog, .alert-box, .standard-dialog, .modeless-dialog, .clio) {
884
+ .modal-dialog, .alert-box, .standard-dialog, .modeless-dialog, .rounded-window, .clio) {
585
885
  box-sizing: border-box;
586
886
  color: var(--clio-ink);
587
887
  font-family: var(--clio-font-chrome);
@@ -591,6 +891,7 @@
591
891
  font-synthesis: none;
592
892
  line-height: 16px;
593
893
  -webkit-font-smoothing: var(--clio-font-smoothing);
894
+ -moz-osx-font-smoothing: grayscale; /* Firefox on macOS otherwise thickens the pixel squares with a grey fringe */
594
895
  }
595
896
 
596
897
  :where(.window, .modal-dialog, .alert-box, .standard-dialog, .modeless-dialog, .clio) *,
@@ -604,6 +905,7 @@
604
905
  font-family: var(--clio-font-text);
605
906
  font-stretch: var(--clio-font-stretch-text);
606
907
  -webkit-font-smoothing: var(--clio-text-smoothing);
908
+ -moz-osx-font-smoothing: var(--clio-text-smoothing-moz);
607
909
  }
608
910
 
609
911
  :where(.window, .modal-dialog, .alert-box, .standard-dialog, .clio) :where(h1, h2, h3, h4, .heading) {
@@ -670,6 +972,37 @@
670
972
  white-space: nowrap;
671
973
  }
672
974
 
975
+ /* Cursors: the arrow, the I-beam and the watch redrawn pixel for pixel from System 7.5.3
976
+ and Mac OS 9.0 (tooling/cursor-art.py; the arrow is the same in both), at
977
+ 1x, 2x and 3x. On by default; class="clio-system-cursors" on <html> gives
978
+ the system's own back. The Mac had no pointing hand: links and buttons
979
+ inside clio.css's windows keep the arrow. aria-busy="true" shows the watch
980
+ (its first frame; hot spot 8,8). */
981
+ :where(:root) {
982
+ --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;
983
+ --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;
984
+ --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;
985
+ cursor: var(--clio-cursor-arrow);
986
+ }
987
+
988
+ :where(:root.clio-system-cursors) {
989
+ --clio-cursor-arrow: default;
990
+ --clio-cursor-text: text;
991
+ --clio-cursor-wait: wait;
992
+ }
993
+
994
+ :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"])) {
995
+ cursor: var(--clio-cursor-text);
996
+ }
997
+
998
+ :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"]) {
999
+ cursor: var(--clio-cursor-arrow);
1000
+ }
1001
+
1002
+ :where([aria-busy="true"]), :where([aria-busy="true"]) * {
1003
+ cursor: var(--clio-cursor-wait);
1004
+ }
1005
+
673
1006
  /* Windows.
674
1007
  Markup: .window > .title-bar (> .close, .title, .resize [, .shade]) >
675
1008
  optional .details-bar > .window-pane. system.css markup (.title-bar
@@ -761,7 +1094,7 @@
761
1094
  font-size: 0;
762
1095
  appearance: none;
763
1096
  -webkit-appearance: none;
764
- cursor: default;
1097
+ cursor: var(--clio-cursor-arrow);
765
1098
  touch-action: manipulation;
766
1099
  }
767
1100
 
@@ -786,7 +1119,7 @@
786
1119
 
787
1120
  /* Held close or zoom box: System 6 draws the same starburst in both
788
1121
  (measured, 6.0.8); the zoom box's inner square goes while it is held. */
789
- .title-bar > :is(.close, .close-box, .resize, .resize-box, .zoom):is(:active, .active) {
1122
+ .title-bar > :is(.close, .close-box, .resize, .resize-box, .zoom):is(:active:where(:not([data-clio-off])), .active) {
790
1123
  background: var(--clio-art-s6-burst) 0 0 / 11px 11px no-repeat border-box, var(--clio-paper);
791
1124
  }
792
1125
 
@@ -804,7 +1137,7 @@
804
1137
  box-sizing: border-box;
805
1138
  }
806
1139
 
807
- .title-bar > :is(.resize, .resize-box, .zoom):is(:active, .active)::before {
1140
+ .title-bar > :is(.resize, .resize-box, .zoom):is(:active:where(:not([data-clio-off])), .active)::before {
808
1141
  opacity: 0;
809
1142
  }
810
1143
 
@@ -859,9 +1192,15 @@
859
1192
  white-space: nowrap;
860
1193
  }
861
1194
 
1195
+ /* A separator line between groups in a window or dialog (Mac OS 8 HIG:
1196
+ "Separator Lines"): <hr class="separator"> or <div class="separator">. */
862
1197
  :where(.separator) {
863
1198
  flex: none;
864
- border-top: var(--clio-border);
1199
+ box-sizing: border-box;
1200
+ height: var(--clio-separator-height);
1201
+ margin: var(--clio-separator-margin);
1202
+ border: 0;
1203
+ background: var(--clio-separator-bg);
865
1204
  }
866
1205
 
867
1206
  /* A status line under the pane. */
@@ -877,6 +1216,17 @@
877
1216
  line-height: 14px;
878
1217
  }
879
1218
 
1219
+ /* Collapsed (WindowShade; clio.js toggles .collapsed from the collapse box):
1220
+ only the title bar stays. */
1221
+ :where(.window.collapsed) {
1222
+ height: auto !important;
1223
+ min-height: 0 !important;
1224
+ }
1225
+
1226
+ :where(.window.collapsed) > :not(.title-bar) {
1227
+ display: none !important;
1228
+ }
1229
+
880
1230
  /* Menu bar and menus.
881
1231
  Markup: <ul role="menubar" class="menu-bar"> <li role="none"><button
882
1232
  role="menuitem" aria-haspopup="true" aria-expanded="false">File</button>
@@ -924,12 +1274,12 @@
924
1274
  white-space: nowrap;
925
1275
  appearance: none;
926
1276
  -webkit-appearance: none;
927
- cursor: default;
1277
+ cursor: var(--clio-cursor-arrow);
928
1278
  }
929
1279
 
930
1280
  :where(.menu-bar, [role="menubar"], [role="menu-bar"]) > li > :is(button, a, span):is([aria-expanded="true"], .active),
931
1281
  :where(.menu-bar, [role="menubar"], [role="menu-bar"]) > li.open > :is(button, a, span),
932
- :where(.menu-bar, [role="menubar"], [role="menu-bar"]) > li > :is(button, a):active,
1282
+ :where(.menu-bar, [role="menubar"], [role="menu-bar"]) > li > :is(button, a):active:where(:not([data-clio-off])),
933
1283
  :where([role="menu-bar"]) > [role="menu-item"]:is(:focus, :focus-within) {
934
1284
  background: var(--clio-menu-title-active-bg);
935
1285
  box-shadow: var(--clio-menu-title-active-shadow);
@@ -979,6 +1329,12 @@
979
1329
  display: block;
980
1330
  }
981
1331
 
1332
+ /* With clio.js (data-clio-menus) a menu opens from the pointer or the arrow
1333
+ keys, not merely because focus sits on its title. */
1334
+ :where([data-clio-menus]) li:focus-within:not(.open) > :is(.menu, ul[role="menu"]) {
1335
+ display: none;
1336
+ }
1337
+
982
1338
  /* ---- Menu items ---------------------------------------------------------- */
983
1339
  :where(.menu, [role="menu"]) > li {
984
1340
  position: relative;
@@ -989,7 +1345,7 @@
989
1345
  font-weight: var(--clio-menu-item-weight);
990
1346
  line-height: var(--clio-menu-item-height);
991
1347
  white-space: nowrap;
992
- cursor: default;
1348
+ cursor: var(--clio-cursor-arrow);
993
1349
  }
994
1350
 
995
1351
  :where(.menu, [role="menu"]) > li:has(> :is(a, button)) {
@@ -1015,11 +1371,11 @@
1015
1371
  text-decoration: none;
1016
1372
  appearance: none;
1017
1373
  -webkit-appearance: none;
1018
- cursor: default;
1374
+ cursor: var(--clio-cursor-arrow);
1019
1375
  }
1020
1376
 
1021
- :where(.menu, [role="menu"]) > li:not(.disabled, [aria-disabled="true"], .separator, [role="separator"]):is(:hover, :focus-within, .active),
1022
- :where(.menu, [role="menu"]) > li > :is(a, button):not([aria-disabled="true"], :disabled):is(:hover, :focus-visible, .active) {
1377
+ :where(.menu, [role="menu"]) > li:not(.disabled, [aria-disabled="true"], .separator, [role="separator"]):is(:hover, :focus-within, .active):where(:not([data-clio-blink])),
1378
+ :where(.menu, [role="menu"]) > li > :is(a, button):not([aria-disabled="true"], :disabled):is(:hover, :focus-visible, .active):where(:not([data-clio-blink])) {
1023
1379
  background: var(--clio-menu-item-active-bg);
1024
1380
  box-shadow: var(--clio-menu-item-active-shadow);
1025
1381
  color: var(--clio-menu-item-active-fg);
@@ -1057,8 +1413,8 @@
1057
1413
  background: var(--clio-art-s6-menucheck) 0 0 / 9px 8px no-repeat;
1058
1414
  }
1059
1415
 
1060
- :where(.menu, [role="menu"]) > li:is(.checked, [aria-checked="true"]):is(:hover, :focus-within, .active)::before,
1061
- :where(.menu, [role="menu"]) > li > :is([aria-checked="true"], .checked):is(:hover, :focus-visible, .active)::before {
1416
+ :where(.menu, [role="menu"]) > li:is(.checked, [aria-checked="true"]):is(:hover, :focus-within, .active):where(:not([data-clio-blink]))::before,
1417
+ :where(.menu, [role="menu"]) > li > :is([aria-checked="true"], .checked):is(:hover, :focus-visible, .active):where(:not([data-clio-blink]))::before {
1062
1418
  background-image: var(--clio-art-s6-menucheck-on);
1063
1419
  }
1064
1420
 
@@ -1075,7 +1431,7 @@
1075
1431
  background: var(--clio-art-s6-submenu) 0 0 / 6px 11px no-repeat;
1076
1432
  }
1077
1433
 
1078
- :where(.menu, [role="menu"]) > li:has(> :is(.menu, ul[role="menu"])):is(:hover, :focus-within, .active)::after {
1434
+ :where(.menu, [role="menu"]) > li:has(> :is(.menu, ul[role="menu"])):is(:hover, :focus-within, .active):where(:not([data-clio-blink]))::after {
1079
1435
  background-image: var(--clio-art-s6-submenu-on);
1080
1436
  }
1081
1437
 
@@ -1095,6 +1451,33 @@
1095
1451
  border-bottom: 1px dotted var(--clio-ink);
1096
1452
  }
1097
1453
 
1454
+ /* ---- Scrolling menus, menu bar extras, item icons ------------------------------
1455
+ A menu longer than the screen ends in a scroll arrow row: <li class="scroll-down"
1456
+ aria-hidden="true"> (or "scroll-up" at the top). Menu bar items pushed to
1457
+ the right (the Help and Application menus) take class "menu-extras"; an
1458
+ icon in a title or an item is an <img> 16px square. */
1459
+ :where(.menu, [role="menu"]) > :where(li.scroll-down, li.scroll-up) {
1460
+ min-height: var(--clio-menu-item-height);
1461
+ padding: 0;
1462
+ background: var(--clio-art-menu-scroll-down) var(--clio-menu-scroll-left) 50% / auto no-repeat;
1463
+ }
1464
+
1465
+ :where(.menu, [role="menu"]) > :where(li.scroll-up) {
1466
+ background-image: var(--clio-art-menu-scroll-up);
1467
+ }
1468
+
1469
+ :where(.menu-bar, [role="menubar"]) > :where(li.menu-extras) {
1470
+ margin-left: auto;
1471
+ }
1472
+
1473
+ :where(.menu-bar, [role="menubar"], .menu, [role="menu"]) :where(img) {
1474
+ width: 16px;
1475
+ height: 16px;
1476
+ margin-right: 4px;
1477
+ vertical-align: -3px;
1478
+ image-rendering: pixelated;
1479
+ }
1480
+
1098
1481
  /* Controls. Bare elements are styled through :where(), so the rules carry no
1099
1482
  specificity. State model (from AI System 6's fidelity contract): hover never
1100
1483
  changes a push button; pressed comes only from pointer-down, Space or
@@ -1121,18 +1504,19 @@
1121
1504
  font-stretch: var(--clio-font-stretch-text);
1122
1505
  font-weight: var(--clio-button-weight);
1123
1506
  -webkit-font-smoothing: var(--clio-font-smoothing);
1507
+ -moz-osx-font-smoothing: grayscale; /* Firefox on macOS otherwise thickens the pixel squares with a grey fringe */
1124
1508
  line-height: 14px;
1125
1509
  text-align: center;
1126
1510
  text-decoration: none;
1127
1511
  white-space: nowrap;
1128
1512
  appearance: none;
1129
1513
  -webkit-appearance: none;
1130
- cursor: default;
1514
+ cursor: var(--clio-cursor-arrow);
1131
1515
  touch-action: manipulation;
1132
1516
  -webkit-tap-highlight-color: transparent;
1133
1517
  }
1134
1518
 
1135
- :where(button, .btn, .btn-default, .standard-button, input[type="button"], input[type="submit"], input[type="reset"]):not(:disabled, .disabled):is(:active, .active) {
1519
+ :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) {
1136
1520
  background: var(--clio-button-active-bg);
1137
1521
  box-shadow: var(--clio-button-active-shadow);
1138
1522
  border-image-source: var(--clio-button-frame-held);
@@ -1196,7 +1580,7 @@
1196
1580
  vertical-align: -2px;
1197
1581
  appearance: none;
1198
1582
  -webkit-appearance: none;
1199
- cursor: default;
1583
+ cursor: var(--clio-cursor-arrow);
1200
1584
  }
1201
1585
 
1202
1586
  :where(input[type="checkbox"]):checked {
@@ -1204,7 +1588,7 @@
1204
1588
  background-origin: var(--clio-check-mark-origin);
1205
1589
  }
1206
1590
 
1207
- :where(input[type="checkbox"]):not(:disabled):active {
1591
+ :where(input[type="checkbox"]):not(:disabled):active:where(:not([data-clio-off])) {
1208
1592
  border-width: var(--clio-check-pressed-border-width);
1209
1593
  }
1210
1594
 
@@ -1226,18 +1610,18 @@
1226
1610
  vertical-align: -2px;
1227
1611
  appearance: none;
1228
1612
  -webkit-appearance: none;
1229
- cursor: default;
1613
+ cursor: var(--clio-cursor-arrow);
1230
1614
  }
1231
1615
 
1232
1616
  :where(input[type="radio"]):checked {
1233
1617
  background: var(--clio-radio-on);
1234
1618
  }
1235
1619
 
1236
- :where(input[type="radio"]):not(:disabled):active {
1620
+ :where(input[type="radio"]):not(:disabled):active:where(:not([data-clio-off])) {
1237
1621
  background: var(--clio-radio-pressed);
1238
1622
  }
1239
1623
 
1240
- :where(input[type="radio"]):checked:not(:disabled):active {
1624
+ :where(input[type="radio"]):checked:not(:disabled):active:where(:not([data-clio-off])) {
1241
1625
  background: var(--clio-radio-pressed-on);
1242
1626
  }
1243
1627
 
@@ -1301,7 +1685,7 @@
1301
1685
  }
1302
1686
 
1303
1687
  :where(input, textarea):focus-visible {
1304
- outline: var(--clio-focus-outline);
1688
+ outline: var(--clio-field-focus-outline, var(--clio-focus-outline));
1305
1689
  outline-offset: var(--clio-focus-offset);
1306
1690
  box-shadow: var(--clio-field-focus-shadow);
1307
1691
  }
@@ -1337,10 +1721,14 @@
1337
1721
  font-stretch: var(--clio-font-stretch-text);
1338
1722
  font-weight: var(--clio-popup-weight);
1339
1723
  -webkit-font-smoothing: var(--clio-font-smoothing);
1724
+ -moz-osx-font-smoothing: grayscale; /* Firefox on macOS otherwise thickens the pixel squares with a grey fringe */
1340
1725
  line-height: 16px;
1726
+ white-space: nowrap; /* one line, cut short with an ellipsis, as the Mac truncated a pop-up's title */
1727
+ overflow: hidden;
1728
+ text-overflow: ellipsis;
1341
1729
  appearance: none;
1342
1730
  -webkit-appearance: none;
1343
- cursor: default;
1731
+ cursor: var(--clio-cursor-arrow);
1344
1732
  }
1345
1733
 
1346
1734
  :where(select):focus-visible {
@@ -1349,7 +1737,93 @@
1349
1737
  }
1350
1738
 
1351
1739
  :where(select):disabled {
1352
- color: var(--clio-disabled);
1740
+ color: var(--clio-popup-disabled-fg, var(--clio-disabled));
1741
+ opacity: 1; /* Chrome fades a disabled select it draws itself; the Mac did not */
1742
+ mask: var(--clio-popup-disabled-mask, none);
1743
+ mask-clip: no-clip; /* the shadow outside the frame is dimmed too */
1744
+ }
1745
+
1746
+ /* The open pop-up menu. Where the browser lets CSS draw it (appearance:
1747
+ base-select: Chrome 135, Safari 27), it is the era's menu, laid over the
1748
+ button with the current item on the button's row (clio.js sets
1749
+ --clio-picker-shift; without it the first item sits there). clio.js draws
1750
+ the same menu as elements elsewhere. */
1751
+ @supports (appearance: base-select) {
1752
+ /* a mouse or trackpad only: on touch screens the system's own picker
1753
+ (the iOS wheel, Android's sheet) stays, as it is the better tool there */
1754
+ @media (pointer: fine) {
1755
+ :where(select:not([multiple], [size]:not([size="1"]))),
1756
+ :where(select:not([multiple], [size]:not([size="1"])))::picker(select) {
1757
+ appearance: base-select;
1758
+ }
1759
+
1760
+ /* keep the closed button laid out as before (the base-select default is a
1761
+ centred inline-flex box, a pixel off the measured text) */
1762
+ :where(select:not([multiple], [size]:not([size="1"]))) {
1763
+ display: inline-block;
1764
+ align-items: normal;
1765
+ gap: normal;
1766
+ text-align: start;
1767
+ }
1768
+
1769
+ :where(select)::picker-icon {
1770
+ display: none; /* the era's arrow is the button's own art */
1771
+ }
1772
+
1773
+ :where(select)::picker(select) {
1774
+ position-area: span-block-end span-inline-end; /* top and left on the button's */
1775
+ position-try-fallbacks: none;
1776
+ inset: auto;
1777
+ min-width: anchor-size(width);
1778
+ margin: 0;
1779
+ padding: 0;
1780
+ translate: 0 var(--clio-picker-shift, 0px);
1781
+ border: var(--clio-menu-border);
1782
+ border-top-width: var(--clio-menu-border-top-width, 1px);
1783
+ border-radius: 0; /* Safari rounds its picker */
1784
+ background: var(--clio-menu-bg);
1785
+ box-shadow: var(--clio-menu-shadow);
1786
+ color: var(--clio-ink);
1787
+ }
1788
+
1789
+ :where(select) option {
1790
+ position: relative;
1791
+ display: flex;
1792
+ align-items: center;
1793
+ min-height: var(--clio-menu-item-height);
1794
+ padding: var(--clio-menu-item-padding);
1795
+ font: inherit;
1796
+ font-weight: var(--clio-menu-item-weight, inherit);
1797
+ line-height: var(--clio-menu-item-height);
1798
+ white-space: nowrap;
1799
+ outline: none;
1800
+ }
1801
+
1802
+ :where(select) option:is(:hover, :focus-visible):not(:disabled) {
1803
+ background: var(--clio-menu-item-active-bg);
1804
+ box-shadow: var(--clio-menu-item-active-shadow);
1805
+ color: var(--clio-menu-item-active-fg);
1806
+ }
1807
+
1808
+ :where(select) option:disabled {
1809
+ color: var(--clio-disabled);
1810
+ }
1811
+
1812
+ :where(select) option::checkmark {
1813
+ content: "";
1814
+ position: absolute;
1815
+ top: 50%;
1816
+ left: 3px;
1817
+ width: 9px;
1818
+ height: 8px;
1819
+ margin-top: -4px;
1820
+ background: var(--clio-art-s6-menucheck) 0 0 / 9px 8px no-repeat;
1821
+ }
1822
+
1823
+ :where(select) option:is(:hover, :focus-visible)::checkmark {
1824
+ background-image: var(--clio-art-s6-menucheck-on);
1825
+ }
1826
+ }
1353
1827
  }
1354
1828
 
1355
1829
  /* A list box: <select multiple> or <select size="n">. */
@@ -1392,7 +1866,7 @@
1392
1866
  padding: 0 4px;
1393
1867
  line-height: var(--clio-list-row);
1394
1868
  white-space: nowrap;
1395
- cursor: default;
1869
+ cursor: var(--clio-cursor-arrow);
1396
1870
  }
1397
1871
 
1398
1872
  :where(.listbox, [role="listbox"]) > :is(li, [role="option"]):is([aria-selected="true"], .selected) {
@@ -1478,7 +1952,7 @@
1478
1952
  font-family: var(--clio-font-chrome);
1479
1953
  font-size: var(--clio-font-size);
1480
1954
  font-weight: var(--clio-chrome-weight);
1481
- cursor: default;
1955
+ cursor: var(--clio-cursor-arrow);
1482
1956
  }
1483
1957
 
1484
1958
  :where([role="tablist"], .tabs) > :is([role="tab"], li, button):is([aria-selected="true"], .active) {
@@ -1514,7 +1988,7 @@
1514
1988
  font-family: var(--clio-font-small);
1515
1989
  font-size: var(--clio-font-size-small);
1516
1990
  text-align: center;
1517
- cursor: default;
1991
+ cursor: var(--clio-cursor-arrow);
1518
1992
  }
1519
1993
 
1520
1994
  :where(.icon) > :is(img, svg, .icon-image) {
@@ -1540,1090 +2014,2717 @@
1540
2014
  color: var(--clio-label-selected-fg);
1541
2015
  }
1542
2016
 
1543
- /* Dialogs and alerts.
1544
- .modal-dialog / .alert-box: the double-framed modal box (dBoxProc).
1545
- .standard-dialog: the plain box with a drop shadow (altDBoxProc).
1546
- .modeless-dialog: a movable dialog, which is a .window.
1547
- Use them on <dialog> or on a <div role="dialog">. system.css's
1548
- .outer-border / .inner-border wrappers are accepted and draw nothing extra. */
1549
- :where(.modal-dialog, .alert-box, dialog.modal) {
1550
- box-sizing: border-box;
1551
- max-width: 100%;
1552
- margin: 0;
1553
- padding: var(--clio-modal-padding);
1554
- border: var(--clio-modal-border);
1555
- background: var(--clio-dialog-bg);
1556
- box-shadow: var(--clio-modal-frame);
1557
- color: var(--clio-ink);
1558
- }
2017
+ /* Controls the classic guidelines add to the first set (Macintosh Human
2018
+ Interface Guidelines 1992, ch. 7; Mac OS 8 Human Interface Guidelines,
2019
+ ch. 2), each drawn per era from tokens. COVERAGE.md lists them all. */
1559
2020
 
1560
- :where(.standard-dialog) {
2021
+ /* ---- Disclosure triangle ---------------------------------------------------
2022
+ Markup: <button class="disclosure" aria-expanded="false" aria-label="Show">
2023
+ or <details><summary>…</summary>…</details>. System 7 brought it to the
2024
+ Finder's list views; System 6 had none (it uses System 7's). */
2025
+ :where(.disclosure) {
2026
+ display: inline-block;
1561
2027
  box-sizing: border-box;
1562
- max-width: 100%;
2028
+ width: var(--clio-disclosure-size);
2029
+ height: var(--clio-disclosure-size);
2030
+ min-width: 0;
2031
+ min-height: 0;
1563
2032
  margin: 0;
1564
- padding: 12px 14px;
1565
- border: var(--clio-plain-dialog-border);
1566
- background: var(--clio-dialog-bg);
1567
- box-shadow: var(--clio-plain-dialog-shadow);
1568
- color: var(--clio-ink);
1569
- }
1570
-
1571
- :where(dialog):is(.modal-dialog, .alert-box, .standard-dialog, .modal)::backdrop {
1572
- background: transparent;
1573
- }
1574
-
1575
- :where(.modal-dialog, .alert-box, .standard-dialog) :where(.outer-border, .inner-border) {
1576
2033
  padding: 0;
1577
2034
  border: 0;
2035
+ background: var(--clio-art-disclosure) 0 0 / var(--clio-disclosure-size) var(--clio-disclosure-size) no-repeat;
2036
+ box-shadow: none;
2037
+ vertical-align: middle;
2038
+ appearance: none;
2039
+ -webkit-appearance: none;
2040
+ cursor: var(--clio-cursor-arrow);
1578
2041
  }
1579
2042
 
1580
- /* Alert layout: icon on the left, message, buttons bottom-right. */
1581
- :where(.alert-box) {
1582
- display: grid;
1583
- grid-template-columns: auto 1fr;
1584
- column-gap: 16px;
1585
- row-gap: 12px;
1586
- align-items: start;
2043
+ :where(.disclosure):is([aria-expanded="true"], .open) {
2044
+ background-image: var(--clio-art-disclosure-open);
1587
2045
  }
1588
2046
 
1589
- :where(.alert-box) > :where(.alert-icon) {
1590
- grid-row: 1;
1591
- width: 32px;
1592
- height: 32px;
2047
+ :where(details) > :where(summary) {
2048
+ display: flex;
2049
+ align-items: center;
2050
+ gap: var(--clio-disclosure-gap);
2051
+ list-style: none;
2052
+ cursor: var(--clio-cursor-arrow);
1593
2053
  }
1594
2054
 
1595
- :where(.alert-box) > :where(.alert-contents, .modal-contents, p) {
1596
- grid-column: 2;
1597
- margin: 0;
2055
+ :where(details) > :where(summary)::-webkit-details-marker {
2056
+ display: none;
1598
2057
  }
1599
2058
 
1600
- :where(.alert-box) > :where(.alert-buttons, .dialog-buttons) {
1601
- grid-column: 1 / -1;
2059
+ :where(details) > :where(summary)::before {
2060
+ content: "";
2061
+ flex: none;
2062
+ width: var(--clio-disclosure-size);
2063
+ height: var(--clio-disclosure-size);
2064
+ background: var(--clio-art-disclosure) 0 0 / var(--clio-disclosure-size) var(--clio-disclosure-size) no-repeat;
1602
2065
  }
1603
2066
 
1604
- :where(.dialog-buttons, .alert-buttons) {
1605
- display: flex;
1606
- flex-wrap: wrap;
1607
- justify-content: flex-end;
1608
- gap: 12px;
1609
- margin-top: 12px;
2067
+ :where(details[open]) > :where(summary)::before {
2068
+ background-image: var(--clio-art-disclosure-open);
1610
2069
  }
1611
2070
 
1612
- /* An alert icon drawn here, not Apple's: a rounded speech box with "!". */
1613
- :where(.alert-icon.caution, .alert-icon.note, .alert-icon.stop) {
1614
- display: block;
1615
- box-sizing: border-box;
1616
- border: 2px solid var(--clio-ink);
1617
- border-radius: 6px;
1618
- background: var(--clio-paper);
1619
- color: var(--clio-ink);
1620
- font: 700 22px/28px var(--clio-font-display);
1621
- text-align: center;
2071
+ /* ---- List view --------------------------------------------------------------
2072
+ The Finder's list view: column headers, the sorted column marked, rows of
2073
+ name and details. Markup: <table class="list-view"> with <th aria-sort> on
2074
+ the sorted column and an optional empty <th class="sort-direction">.
2075
+ System 7: plain headers in the small font, the sorted one underlined, a
2076
+ double rule below (Finder, View by Name). */
2077
+ :where(.list-view) {
2078
+ border-collapse: collapse;
2079
+ border-spacing: 0;
2080
+ background: var(--clio-list-view-bg);
2081
+ font-family: var(--clio-font-small);
2082
+ font-size: var(--clio-font-size-small);
2083
+ line-height: var(--clio-list-view-row);
1622
2084
  }
1623
2085
 
1624
- :where(.alert-icon.caution)::before { content: "!"; }
1625
- :where(.alert-icon.note)::before { content: "i"; }
1626
- :where(.alert-icon.stop) { border-radius: 50%; }
1627
- :where(.alert-icon.stop)::before { content: "\00D7"; }
1628
-
1629
- /* Scroll bars, for scroll areas clio.css owns (.window-pane, .listbox,
1630
- textarea, list-box selects) and for anything you mark with .clio-scroll.
1631
- Add class="clio-scrollbars" to <html> to give every scroll area the era's
1632
- scroll bar.
1633
-
1634
- WebKit/Blink draw the full bar: two arrow boxes, the patterned lane and the
1635
- scroll box. The scroll box is proportional to the content here (a browser
1636
- limit), where System 6 drew a fixed 16px square. Firefox has no scroll bar
1637
- parts, so it gets the era's colours through scrollbar-color. */
1638
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar,
1639
- :where(html.clio-scrollbars)::-webkit-scrollbar {
1640
- width: var(--clio-scrollbar-size);
1641
- height: var(--clio-scrollbar-size);
1642
- background: var(--clio-paper);
2086
+ :where(.list-view) :where(th, td) {
2087
+ box-sizing: border-box;
1643
2088
  }
1644
2089
 
1645
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-track,
1646
- :where(html.clio-scrollbars)::-webkit-scrollbar-track {
1647
- background: var(--clio-scrollbar-track);
1648
- box-shadow: var(--clio-scrollbar-track-shadow);
2090
+ :where(.list-view) :where(th) {
2091
+ height: var(--clio-list-view-header-height);
2092
+ padding: var(--clio-list-view-header-padding);
2093
+ background: var(--clio-list-view-header-bg);
2094
+ font-weight: normal;
2095
+ line-height: 14px;
2096
+ text-align: left;
2097
+ vertical-align: top;
2098
+ white-space: nowrap;
1649
2099
  }
1650
2100
 
1651
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-track:vertical,
1652
- :where(html.clio-scrollbars)::-webkit-scrollbar-track:vertical {
1653
- border-left: 1px solid var(--clio-ink);
2101
+ :where(.list-view) :where(th[aria-sort]:not([aria-sort="none"])) {
2102
+ background: var(--clio-list-view-sorted-header-bg);
2103
+ text-decoration: var(--clio-list-view-sorted-decoration);
2104
+ text-underline-offset: 2px;
1654
2105
  }
1655
2106
 
1656
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-track:horizontal,
1657
- :where(html.clio-scrollbars)::-webkit-scrollbar-track:horizontal {
1658
- border-top: 1px solid var(--clio-ink);
2107
+ :where(.list-view) :where(td) {
2108
+ height: var(--clio-list-view-row);
2109
+ padding: 0 4px;
2110
+ vertical-align: middle;
2111
+ white-space: nowrap;
1659
2112
  }
1660
2113
 
1661
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-thumb,
1662
- :where(html.clio-scrollbars)::-webkit-scrollbar-thumb {
1663
- min-width: var(--clio-scrollbar-size);
1664
- min-height: var(--clio-scrollbar-size);
1665
- border: var(--clio-scrollbar-thumb-border);
1666
- background: var(--clio-scrollbar-thumb-bg);
1667
- box-shadow: var(--clio-scrollbar-thumb-shadow);
2114
+ :where(.list-view) :where(td.sorted) {
2115
+ background: var(--clio-list-view-sorted-bg);
1668
2116
  }
1669
2117
 
1670
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-thumb:horizontal,
1671
- :where(html.clio-scrollbars)::-webkit-scrollbar-thumb:horizontal {
1672
- background: var(--clio-scrollbar-thumb-bg-horizontal, var(--clio-scrollbar-thumb-bg));
1673
- box-shadow: var(--clio-scrollbar-thumb-shadow-horizontal, var(--clio-scrollbar-thumb-shadow));
2118
+ :where(.list-view) :where(.sort-direction) {
2119
+ width: var(--clio-list-view-sort-width);
2120
+ padding: 0;
1674
2121
  }
1675
2122
 
1676
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:start:decrement,
1677
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:end:increment,
1678
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:start:decrement,
1679
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:end:increment {
1680
- display: block;
1681
- width: var(--clio-scrollbar-size);
1682
- height: var(--clio-scrollbar-size);
1683
- background-color: var(--clio-scrollbar-button-bg);
1684
- background-position: center;
1685
- background-repeat: no-repeat;
1686
- box-shadow: var(--clio-scrollbar-button-shadow);
2123
+ /* ---- Slider ------------------------------------------------------------------
2124
+ <input type="range">, the Appearance slider (Mac OS 8 HIG: "Sliders and Tick
2125
+ Marks"). Add class "ticks" and --clio-slider-tick-count for tick marks under
2126
+ the track. System 6 and System 7 had no slider in the Toolbox; System 7.5's
2127
+ control panels drew their own (see the System 7 layer). */
2128
+ :where(input[type="range"]) {
2129
+ box-sizing: border-box;
2130
+ height: var(--clio-slider-height);
2131
+ margin: 0;
2132
+ /* Chrome centres the track in the content box: the padding puts it
2133
+ --clio-slider-track-top below the thumb's top. */
2134
+ padding: 0 0 calc(var(--clio-slider-height) - var(--clio-slider-track-height) - 2 * var(--clio-slider-track-top));
2135
+ background: transparent;
2136
+ appearance: none;
2137
+ -webkit-appearance: none;
2138
+ cursor: var(--clio-cursor-arrow);
1687
2139
  }
1688
2140
 
1689
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:decrement,
1690
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:decrement {
1691
- border-left: 1px solid var(--clio-ink);
1692
- border-bottom: 1px solid var(--clio-ink);
1693
- background-image: var(--clio-scrollbar-up);
2141
+ :where(input[type="range"].ticks) {
2142
+ /* A whole number of pixels: each engine rounds a fractional period its own way. */
2143
+ --clio-slider-tick-spacing: round((100% - var(--clio-slider-tick-run)) / (var(--clio-slider-tick-count) - 1), 1px);
2144
+ height: calc(var(--clio-slider-height) + var(--clio-slider-tick-gap) + 4px);
2145
+ background:
2146
+ 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,
2147
+ 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;
1694
2148
  }
1695
2149
 
1696
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:increment,
1697
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:increment {
1698
- border-left: 1px solid var(--clio-ink);
1699
- border-top: 1px solid var(--clio-ink);
1700
- background-image: var(--clio-scrollbar-down);
2150
+ :where(input[type="range"])::-webkit-slider-runnable-track {
2151
+ box-sizing: border-box;
2152
+ height: var(--clio-slider-track-height);
2153
+ border-style: solid;
2154
+ border-width: var(--clio-slider-track-slice);
2155
+ border-color: transparent;
2156
+ border-image: var(--clio-art-slider-track) var(--clio-slider-track-slice-n) fill / var(--clio-slider-track-slice) stretch;
1701
2157
  }
1702
2158
 
1703
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:decrement,
1704
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:decrement {
1705
- border-top: 1px solid var(--clio-ink);
1706
- border-right: 1px solid var(--clio-ink);
1707
- background-image: var(--clio-scrollbar-left);
2159
+ :where(input[type="range"])::-webkit-slider-thumb {
2160
+ width: var(--clio-slider-thumb-width);
2161
+ height: var(--clio-slider-thumb-height);
2162
+ /* the thumb sits in the track's content box, inside the border-image slice */
2163
+ margin-top: calc(-1 * (var(--clio-slider-track-top) + var(--clio-slider-track-slice)));
2164
+ border: 0;
2165
+ background: var(--clio-art-slider-thumb) 0 0 / 100% 100% no-repeat;
2166
+ appearance: none;
2167
+ -webkit-appearance: none;
1708
2168
  }
1709
2169
 
1710
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:increment,
1711
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:increment {
1712
- border-top: 1px solid var(--clio-ink);
1713
- border-left: 1px solid var(--clio-ink);
1714
- background-image: var(--clio-scrollbar-right);
2170
+ /* Firefox: the same track and thumb through its own parts. Its thumb travels
2171
+ the whole content box: the padding keeps it inside the track's ends, as
2172
+ Chrome's and the Mac's (Mouse control panel at both ends), and the track
2173
+ reaches back over the padding. */
2174
+ @supports selector(::-moz-range-thumb) {
2175
+ :where(input[type="range"]) {
2176
+ padding-inline: var(--clio-slider-track-slice);
2177
+ }
1715
2178
  }
1716
2179
 
1717
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:decrement:active,
1718
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:decrement:active {
1719
- background-image: var(--clio-scrollbar-up-on);
2180
+ :where(input[type="range"])::-moz-range-track {
2181
+ margin-inline: calc(-1 * var(--clio-slider-track-slice));
1720
2182
  }
1721
2183
 
1722
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:increment:active,
1723
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:increment:active {
1724
- background-image: var(--clio-scrollbar-down-on);
2184
+ :where(input[type="range"])::-moz-range-track {
2185
+ box-sizing: border-box;
2186
+ height: var(--clio-slider-track-height);
2187
+ border-style: solid;
2188
+ border-width: var(--clio-slider-track-slice);
2189
+ border-color: transparent;
2190
+ border-image: var(--clio-art-slider-track) var(--clio-slider-track-slice-n) fill / var(--clio-slider-track-slice) stretch;
1725
2191
  }
1726
2192
 
1727
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:decrement:active,
1728
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:decrement:active {
1729
- background-image: var(--clio-scrollbar-left-on);
2193
+ :where(input[type="range"])::-moz-range-thumb {
2194
+ box-sizing: border-box;
2195
+ width: var(--clio-slider-thumb-width);
2196
+ height: var(--clio-slider-thumb-height);
2197
+ border: 0;
2198
+ border-radius: 0;
2199
+ background: var(--clio-art-slider-thumb) 0 0 / 100% 100% no-repeat;
2200
+ /* Firefox centres the thumb in the content box (its top lands half a pixel
2201
+ above, then on the pixel below); this brings its top to the content box's. */
2202
+ translate: 0 round(down, (var(--clio-slider-thumb-height) - var(--clio-slider-track-height) - 2 * var(--clio-slider-track-top)) / 2, 1px);
2203
+ }
2204
+
2205
+ /* ---- Little arrows -----------------------------------------------------------
2206
+ The up/down pair beside a number or clock field (Mac OS 8 HIG: "Little
2207
+ Arrows"; System 7's control panels drew them too). Markup:
2208
+ <span class="little-arrows" role="group" aria-label="Cache size">
2209
+ <button class="up" aria-label="Increase"></button>
2210
+ <button class="down" aria-label="Decrease"></button></span>
2211
+ Add aria-disabled="true" (or disabled buttons) for the dimmed pair. */
2212
+ :where(.little-arrows) {
2213
+ display: inline-flex;
2214
+ flex-direction: column;
2215
+ width: var(--clio-little-arrows-width);
2216
+ height: var(--clio-little-arrows-height);
2217
+ background: var(--clio-art-little-arrows) 0 0 / 100% 100% no-repeat;
2218
+ vertical-align: middle;
1730
2219
  }
1731
2220
 
1732
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:increment:active,
1733
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:increment:active {
1734
- background-image: var(--clio-scrollbar-right-on);
2221
+ :where(.little-arrows) > :where(button) {
2222
+ flex: 1 1 50%;
2223
+ min-width: 0;
2224
+ min-height: 0;
2225
+ margin: 0;
2226
+ padding: 0;
2227
+ border: 0;
2228
+ border-image: none;
2229
+ background: transparent;
2230
+ box-shadow: none;
2231
+ appearance: none;
2232
+ -webkit-appearance: none;
1735
2233
  }
1736
2234
 
1737
- /* Only the single arrow box at each end, as on the Mac. */
1738
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:start:increment,
1739
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:end:decrement,
1740
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:start:increment,
1741
- :where(html.clio-scrollbars)::-webkit-scrollbar-button:end:decrement {
1742
- display: none;
2235
+ :where(.little-arrows) > :where(button)::before,
2236
+ :where(.little-arrows) > :where(button)::after {
2237
+ content: none;
1743
2238
  }
1744
2239
 
1745
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-corner,
1746
- :where(html.clio-scrollbars)::-webkit-scrollbar-corner {
1747
- border-top: 1px solid var(--clio-ink);
1748
- border-left: 1px solid var(--clio-ink);
1749
- background: var(--clio-scrollbar-corner);
2240
+ :where(.little-arrows):has(> .up:active:where(:not([data-clio-off]))) {
2241
+ background-image: var(--clio-art-little-arrows-up, var(--clio-art-little-arrows));
1750
2242
  }
1751
2243
 
1752
- @supports not selector(::-webkit-scrollbar) {
1753
- :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, html.clio-scrollbars, .clio-scrollbars *) {
1754
- scrollbar-color: var(--clio-scrollbar-thumb-color, var(--clio-ink)) var(--clio-scrollbar-track-color, #c0c0c0);
1755
- }
2244
+ :where(.little-arrows):has(> .down:active:where(:not([data-clio-off]))) {
2245
+ background-image: var(--clio-art-little-arrows-down, var(--clio-art-little-arrows));
1756
2246
  }
1757
2247
 
1758
- /* Control Strip (System 7.5 to Mac OS 9): a row of module buttons with scroll
1759
- arrows and a tab that folds the strip away. Markup follows AI System 6:
1760
- .control-strip > button.control-strip-scroll.control-strip-scroll-back,
1761
- .control-strip-modules[role=toolbar] > .control-strip-module-track >
1762
- button.control-strip-module (an icon inside; aria-haspopup="menu" draws the
1763
- menu triangle), button.control-strip-scroll.control-strip-scroll-forward,
1764
- button.control-strip-handle. Add .is-collapsed to fold it to the tab, and
1765
- data-edge="right" for a strip on the right edge. Placement is yours
1766
- (AI System 6 fixes it to the screen's lower left). */
1767
- /* The strip's art is the same in System 7.5.3, Mac OS 8.5 and Mac OS 9.0
1768
- (compared pixel for pixel with the backdrop removed); only the cell colours
1769
- differ, so it lives here for every era. Redrawn by tooling/p9-art.py. */
1770
- :root {
1771
- --clio-art-p9-strip-cap: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYBAMAAADXK7paAAAAHlBMVEUAAAAAAABERERVVVWAgICIiIigoKDAwMDMzP/////+VYXkAAAAAXRSTlMAQObYZgAAAGlJREFUeJxjFGQAg/8sbAlgxkwWBiUQfZuBheHfAwYGhg8MTBAlDPgYLAx/9jAwsOgysDAwhDIw/L8LYvy98NcVry4mBoa/Zy+AtTOwlzP8AzFY3r0jYBfC0l/3P4AZjILMBiD6DCPMOwBKOxgiile5lQAAAABJRU5ErkJggg==");
1772
- --clio-art-s7-strip-cap: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYBAMAAADXK7paAAAAG1BMVEUAAAAAAABERERVVVWIiIiqqqrMzMzMzP/////JRvoVAAAAAXRSTlMAQObYZgAAAGVJREFUeJxjFGQAg/8srAFgxioWBiUQfYeBheHfAwYGhg8MTBAlDPgYLAx/zzIwMMsxsDAwuDAw/L8HYvy98M+FgC6Gf/egDLY0hn8gBvO7dwTsQmj/ff8DmMEoyGwAos8wwrwDAP+1F0dci98qAAAAAElFTkSuQmCC");
1773
- --clio-art-p9-strip-back: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAgMAAADwXCcuAAAACVBMVEUAAABVVVXd3d2apXz3AAAAAXRSTlMAQObYZgAAACxJREFUeJwFwaERwCAABLD0j3oE7IPBs/8KrcBjSKhiKM/cebs0gvzkfFioLlg9BPcTGNP4AAAAAElFTkSuQmCC");
1774
- --clio-art-p9-strip-forward: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAgMAAADwXCcuAAAACVBMVEUAAABVVVXd3d2apXz3AAAAAXRSTlMAQObYZgAAAC1JREFUeJwFwSESABAUQMHnzegC9/nFqRX3IegCuxBIwVYxdySFgLzpHbg2cvhWkAdTrBZiqwAAAABJRU5ErkJggg==");
1775
- --clio-art-p9-strip-menu: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHAQMAAAAVq36TAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABZJREFUeJxjaGA4wPCA4QMTA9MHpgcAIQYE58W2/JQAAAAASUVORK5CYII=");
1776
- --clio-art-p9-strip-handle: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYBAMAAAAFe7ACAAAAFVBMVEUAAAAAAABERERVVVWIiIjMzMz///8V67gPAAAAAXRSTlMAQObYZgAAAINJREFUeJxVz7ENAjEMheE/IbQokRiAUVJQUjAs5RXZhJvgkp6LjGwfBU309PzFkkMBZAApVVgAIqWUZ9bORsE6fWvWJCukoIlbtjICG0sK5iLnVrM7Hqefsy3qPKnzZM6n/+41D/epbbi772IOaOPYsIv/sIrEG6YA4XqB3vWO2UErvmVcJ4BylohjAAAAAElFTkSuQmCC");
1777
- --clio-art-p9-strip-tab: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYBAMAAAAFe7ACAAAAFVBMVEUAAAAAAABERERVVVWIiIjMzMz///8V67gPAAAAAXRSTlMAQObYZgAAAIFJREFUeJxVz7ENAjEMQNHvKPS+DRiBEVJQMi49WeAkRrgJSHoijOyEgipf1pPlyAbQgMwVxqN7iYIACVprRaMUskS9gKJeSWKYADtGLRruzC3Lcqd6WW7uw45V7ma5m/Xv3uW53H3YdLnU7g4YFg9Q+6phfv2nw95BNlGsRf1++QW6eCj9rQPMHAAAAABJRU5ErkJggg==");
2248
+ :where(.little-arrows):is([aria-disabled="true"], :has(> button:disabled)) {
2249
+ background-image: var(--clio-art-little-arrows-disabled, var(--clio-art-little-arrows));
1778
2250
  }
1779
2251
 
1780
- :where(.control-strip) {
2252
+ /* ---- Bevel button ------------------------------------------------------------
2253
+ A square bevelled button for an icon or a short label, which can act as a
2254
+ push button, a toggle (aria-pressed) or a menu (class "menu", aria-haspopup)
2255
+ (Mac OS 8 HIG: "Bevel Buttons"). Earlier eras had none and use push buttons'
2256
+ square cousin from Platinum. */
2257
+ :where(.bevel) {
1781
2258
  display: inline-flex;
1782
- align-items: stretch;
1783
- height: var(--clio-strip-height);
1784
- max-width: 100%;
1785
- vertical-align: bottom;
1786
- user-select: none;
1787
- -webkit-user-select: none;
2259
+ align-items: center;
2260
+ justify-content: center;
2261
+ box-sizing: border-box;
2262
+ min-width: var(--clio-bevel-min);
2263
+ min-height: var(--clio-bevel-min);
2264
+ margin: 0;
2265
+ padding: var(--clio-bevel-padding);
2266
+ border: var(--clio-bevel-slice) solid transparent;
2267
+ border-radius: 0;
2268
+ border-image: var(--clio-art-bevel) var(--clio-bevel-slice-n) fill / var(--clio-bevel-slice) stretch;
2269
+ background: transparent;
2270
+ box-shadow: none;
2271
+ color: var(--clio-ink);
2272
+ font: inherit;
2273
+ appearance: none;
2274
+ -webkit-appearance: none;
2275
+ cursor: var(--clio-cursor-arrow);
1788
2276
  }
1789
2277
 
1790
- /* The end cap, then every cell: one bevelled box between 1px lines. */
1791
- :where(.control-strip)::before,
1792
- :where(.control-strip) > :is(.control-strip-scroll, .control-strip-modules),
1793
- :where(.control-strip-module) {
1794
- box-sizing: border-box;
1795
- border: var(--clio-strip-line);
1796
- border-left: 0;
1797
- background: var(--clio-strip-bg);
1798
- box-shadow: var(--clio-strip-cell-shadow);
2278
+ :where(.bevel):is(:active:where(:not([data-clio-off])), .active, [aria-pressed="true"]):not(:disabled) {
2279
+ border-image-source: var(--clio-art-bevel-held);
1799
2280
  }
1800
2281
 
1801
- /* The end cap is one picture: frame, bevel, icon and the rounded lower-left corner. */
1802
- :where(.control-strip)::before {
2282
+ :where(.bevel) {
2283
+ position: relative;
2284
+ }
2285
+
2286
+ :where(.bevel)::before,
2287
+ :where(.bevel)::after {
2288
+ content: none;
2289
+ }
2290
+
2291
+ /* The menu arrow, over the face (border-image fill paints over backgrounds). */
2292
+ :where(.bevel.menu, .bevel[aria-haspopup])::after {
1803
2293
  content: "";
1804
- flex: none;
1805
- width: calc(var(--clio-strip-cap-width) + 2px);
1806
- border: 0;
1807
- background: var(--clio-strip-cap) 0 0 / 100% 100% no-repeat;
1808
- box-shadow: none;
2294
+ position: absolute;
2295
+ right: calc(var(--clio-bevel-arrow-right) - var(--clio-bevel-slice));
2296
+ bottom: calc(var(--clio-bevel-arrow-bottom) - var(--clio-bevel-slice));
2297
+ width: var(--clio-bevel-arrow-width);
2298
+ height: var(--clio-bevel-arrow-height);
2299
+ background: var(--clio-art-bevel-menu-arrow) 0 0 / 100% 100% no-repeat;
2300
+ }
2301
+
2302
+ /* ---- Keyboard focus on lists ---------------------------------------------------
2303
+ Mac OS 8 draws the same ring round a list box that has the keyboard focus
2304
+ (Appearance, Desktop tab, the pattern list); text fields take it from
2305
+ --clio-field-focus-shadow. */
2306
+ :where(.listbox, [role="listbox"], select[multiple]):is(:focus-visible, :focus-within) {
2307
+ box-shadow: var(--clio-list-focus-shadow, var(--clio-list-shadow));
2308
+ }
2309
+
2310
+ /* ---- Chasing arrows ------------------------------------------------------------
2311
+ The asynchronous progress indicator (Mac OS 8 HIG: "Asynchronous Arrows").
2312
+ Markup: <span class="chasing-arrows" role="status" aria-label="Looking…">.
2313
+ It turns by stepping through the era's frames; with reduced motion it
2314
+ stands still on the first. Earlier eras had a spinning watch cursor
2315
+ instead, and use Platinum's arrows. */
2316
+ :where(.chasing-arrows) {
2317
+ position: relative;
2318
+ display: inline-block;
2319
+ width: 16px;
2320
+ height: 16px;
2321
+ overflow: hidden;
2322
+ vertical-align: middle;
1809
2323
  }
1810
2324
 
1811
- :where(.control-strip) > :is(.control-strip-scroll, .control-strip-handle) {
1812
- flex: none;
2325
+ /* The frames side by side on a strip that moves a frame at a time (transform
2326
+ only, so the turning stays off the main thread). */
2327
+ :where(.chasing-arrows)::before {
2328
+ content: "";
2329
+ position: absolute;
2330
+ top: 0;
2331
+ left: 0;
2332
+ width: calc(16px * var(--clio-chasing-arrows-frames));
2333
+ height: 16px;
2334
+ background: var(--clio-art-chasing-arrows) 0 0 / 100% 100% no-repeat;
2335
+ animation: clio-chase calc(var(--clio-chasing-arrows-frames) * 0.12s) steps(var(--clio-chasing-arrows-frames)) infinite;
2336
+ }
2337
+
2338
+ @keyframes clio-chase {
2339
+ to { transform: translateX(calc(-16px * var(--clio-chasing-arrows-frames))); }
2340
+ }
2341
+
2342
+ @media (prefers-reduced-motion: reduce) {
2343
+ :where(.chasing-arrows)::before { animation: none; }
2344
+ }
2345
+
2346
+ /* ---- Help button -----------------------------------------------------------------
2347
+ The square button with the help icon in a dialog's lower left (Mac OS 8 HIG:
2348
+ "Help Button Layout"). <button class="help-button" aria-label="Help">.
2349
+ Earlier eras put a "Help" push button there instead, and use Platinum's. */
2350
+ :where(.help-button) {
2351
+ box-sizing: border-box;
2352
+ width: 21px;
2353
+ min-width: 0;
2354
+ height: 20px;
2355
+ min-height: 0;
1813
2356
  margin: 0;
1814
2357
  padding: 0;
2358
+ border: 0;
1815
2359
  border-radius: 0;
2360
+ border-image: none;
2361
+ background: var(--clio-art-help-button) 0 0 / 21px 20px no-repeat;
2362
+ box-shadow: none;
2363
+ color: transparent;
2364
+ font-size: 0;
1816
2365
  appearance: none;
1817
2366
  -webkit-appearance: none;
1818
- cursor: default;
2367
+ cursor: var(--clio-cursor-arrow);
1819
2368
  }
1820
2369
 
1821
- /* Scroll arrows: 13px cells, sunken and hollow while there is nothing to scroll. */
1822
- :where(.control-strip) > .control-strip-scroll {
1823
- width: calc(var(--clio-strip-scroll-width) + 1px);
1824
- min-width: 0;
1825
- height: auto;
1826
- min-height: 0;
1827
- background: var(--clio-strip-back) 1px 6px / 10px 10px no-repeat, var(--clio-strip-bg);
1828
- box-shadow: var(--clio-strip-cell-shadow);
2370
+ :where(.help-button)::before,
2371
+ :where(.help-button)::after {
2372
+ content: none;
1829
2373
  }
1830
2374
 
1831
- :where(.control-strip) > .control-strip-scroll-forward {
1832
- background-image: var(--clio-strip-forward);
2375
+ /* ---- Image well ---------------------------------------------------------------------
2376
+ A sunken well that holds a picture or an icon (Mac OS 8 HIG: "Image Wells"),
2377
+ drawn like the era's field frame round a white face (inferred: no image
2378
+ well was on the captured screens). <div class="image-well"><img …></div> */
2379
+ :where(.image-well) {
2380
+ display: inline-flex;
2381
+ align-items: center;
2382
+ justify-content: center;
2383
+ box-sizing: border-box;
2384
+ border: var(--clio-field-border);
2385
+ background: var(--clio-image-well-bg);
2386
+ box-shadow: var(--clio-field-shadow);
1833
2387
  }
1834
2388
 
1835
- :where(.control-strip) > .control-strip-scroll:disabled {
1836
- background:
1837
- var(--clio-strip-back) 1px 6px / 10px 10px no-repeat,
1838
- var(--clio-strip-sunken-lines),
1839
- var(--clio-strip-bg);
1840
- box-shadow: var(--clio-strip-sunken-shadow);
2389
+ /* ---- Group boxes: secondary, and titled by a check box ---------------------------
2390
+ <fieldset class="secondary"> is the lighter group for a subordinate set
2391
+ (Mac OS 8 HIG: "Group Boxes"). A check box or pop-up menu as the title goes
2392
+ in the legend: <legend><label><input type="checkbox"> Use a server</label></legend>.
2393
+ Before Mac OS 8 every group box is the one kind. */
2394
+ :where(fieldset > legend) > :where(label) {
2395
+ display: inline-flex;
2396
+ align-items: center;
2397
+ gap: 4px;
1841
2398
  }
1842
2399
 
1843
- :where(.control-strip) > .control-strip-scroll-forward:disabled {
1844
- background-image: var(--clio-strip-forward);
2400
+ /* ---- Utility window ------------------------------------------------------------------
2401
+ A floating palette (Mac OS 8 HIG: "Utility Windows"; HIG 1992: floating
2402
+ windows): <div class="window utility"> with the usual .title-bar. Its title
2403
+ bar is thinner, its boxes smaller and its title in the small font. Before
2404
+ Mac OS 8 the eras draw it from the document window's parts (inferred). */
2405
+ :where(.window.utility) {
2406
+ --clio-titlebar-height: var(--clio-utility-titlebar-height);
2407
+ --clio-titlebar-row: var(--clio-utility-titlebar-row);
2408
+ --clio-box-size: var(--clio-utility-box-size);
2409
+ --clio-titlebar-slot: var(--clio-utility-slot);
2410
+ min-width: 80px;
1845
2411
  }
1846
2412
 
1847
- :where(.control-strip) > .control-strip-scroll:not(:disabled):active,
1848
- :where(.control-strip-module):not(:disabled):is(:active, [aria-expanded="true"]) {
1849
- background-color: var(--clio-strip-pressed-bg);
1850
- box-shadow: var(--clio-strip-pressed-shadow);
2413
+ :where(.window.utility) > :where(.title-bar) > :is(.title, h1, h2, h3) {
2414
+ font-size: var(--clio-utility-title-size, var(--clio-title-font-size));
1851
2415
  }
1852
2416
 
1853
- :where(.control-strip-modules) {
1854
- display: flex;
1855
- min-width: 0;
1856
- overflow: hidden;
1857
- border: 0;
1858
- background: none;
1859
- box-shadow: none;
2417
+ /* ---- Help balloon ------------------------------------------------------------------
2418
+ Balloon Help (HIG 1992, ch. 11; Mac OS 8 and 9 kept it): a white balloon
2419
+ with a rounded outline, a 2px drop on the right and below, and a tail rising
2420
+ from its top edge near the right towards the object it describes.
2421
+ <div class="balloon" role="tooltip">…</div>. The tail's tip, under the
2422
+ pointer in the capture, is inferred. */
2423
+ :where(.balloon) {
2424
+ position: relative;
2425
+ box-sizing: border-box;
2426
+ width: max-content;
2427
+ max-width: 260px;
2428
+ margin-top: 14px;
2429
+ padding: 8px 12px 10px 10px;
2430
+ border: 10px solid transparent;
2431
+ border-image: var(--clio-art-balloon) 10 fill / 10px stretch;
2432
+ font-family: var(--clio-font-small);
2433
+ font-size: var(--clio-font-size-small);
2434
+ line-height: 13px;
1860
2435
  }
1861
2436
 
1862
- :where(.control-strip-module-track) {
2437
+ :where(.balloon) {
2438
+ padding: 0 2px 0 0;
2439
+ }
2440
+
2441
+ :where(.balloon)::before {
2442
+ content: "";
2443
+ position: absolute;
2444
+ top: -23px;
2445
+ right: -5px;
2446
+ width: 12px;
2447
+ height: 14px;
2448
+ background: var(--clio-art-balloon-tail) 0 0 / 12px 14px no-repeat;
2449
+ }
2450
+
2451
+ /* The rare controls (ROADMAP "Can wait" 10): the rounded-corner window, placards,
2452
+ split bars and the side-title utility window (its Platinum drawing is in
2453
+ 90-platinum.css). Measured in Infinite Mac; see EVIDENCE.md. */
2454
+
2455
+ /* ---- Rounded-corner window (rDocProc, desk accessories) ----------------------
2456
+ <div class="rounded-window"> > <div class="rounded-title"> (> .close, h2) and
2457
+ any content. The Calculator draws the same window in System 6.0.8, 7.5.3,
2458
+ Mac OS 8.5 (Drawing Board) and 9.0: a 1px black frame whose corners step in
2459
+ 5, 3, 2, 1, 1 pixels; a 17-row black title bar ruled below, the title in
2460
+ white centred in the space right of an 11px white close box at (9,4). In the
2461
+ background the bar turns white, the title black, and the close box goes. */
2462
+ :where(.rounded-window) {
2463
+ --clio-rounded-bg: #ffffff;
2464
+ position: relative;
1863
2465
  display: flex;
2466
+ flex-direction: column;
2467
+ box-sizing: border-box;
2468
+ min-width: 60px;
2469
+ border: 1px solid #000000;
2470
+ background: var(--clio-rounded-bg);
2471
+ -webkit-mask:
2472
+ var(--clio-art-rdoc-mask-tl) left top / 6px 6px no-repeat,
2473
+ var(--clio-art-rdoc-mask-tr) right top / 6px 6px no-repeat,
2474
+ var(--clio-art-rdoc-mask-bl) left bottom / 6px 6px no-repeat,
2475
+ var(--clio-art-rdoc-mask-br) right bottom / 6px 6px no-repeat,
2476
+ linear-gradient(#000000, #000000) 0 6px / 100% calc(100% - 12px) no-repeat,
2477
+ linear-gradient(#000000, #000000) 6px 0 / calc(100% - 12px) 100% no-repeat;
2478
+ mask:
2479
+ var(--clio-art-rdoc-mask-tl) left top / 6px 6px no-repeat,
2480
+ var(--clio-art-rdoc-mask-tr) right top / 6px 6px no-repeat,
2481
+ var(--clio-art-rdoc-mask-bl) left bottom / 6px 6px no-repeat,
2482
+ var(--clio-art-rdoc-mask-br) right bottom / 6px 6px no-repeat,
2483
+ linear-gradient(#000000, #000000) 0 6px / 100% calc(100% - 12px) no-repeat,
2484
+ linear-gradient(#000000, #000000) 6px 0 / calc(100% - 12px) 100% no-repeat;
2485
+ }
2486
+
2487
+ /* The frame's curve inside each corner, over the title bar and the content. */
2488
+ .rounded-window::after {
2489
+ content: "";
2490
+ position: absolute;
2491
+ inset: -1px;
2492
+ z-index: 1;
2493
+ background:
2494
+ var(--clio-art-rdoc-frame-tl) left top / 6px 6px no-repeat,
2495
+ var(--clio-art-rdoc-frame-tr) right top / 6px 6px no-repeat,
2496
+ var(--clio-art-rdoc-frame-bl) left bottom / 6px 6px no-repeat,
2497
+ var(--clio-art-rdoc-frame-br) right bottom / 6px 6px no-repeat;
2498
+ pointer-events: none;
1864
2499
  }
1865
2500
 
1866
- /* A module: the 16px icon 2px in, the menu triangle 3px from the right. */
1867
- :where(.control-strip-module) {
2501
+ .rounded-window > .rounded-title {
1868
2502
  position: relative;
1869
2503
  display: flex;
1870
2504
  flex: none;
1871
- align-items: center;
1872
- width: calc(var(--clio-strip-module-width) + 1px);
2505
+ justify-content: center;
2506
+ box-sizing: border-box;
2507
+ height: 18px;
2508
+ padding: 1px 1px 0 18px;
2509
+ border-bottom: 1px solid #000000;
2510
+ background: #000000;
2511
+ color: #ffffff;
2512
+ font-family: var(--clio-font-window-title, var(--clio-font-chrome));
2513
+ user-select: none;
2514
+ -webkit-user-select: none;
2515
+ }
2516
+
2517
+ .rounded-window > .rounded-title > :is(.title, h1, h2, h3) {
2518
+ margin: 0;
2519
+ overflow: hidden;
2520
+ color: inherit;
2521
+ font: inherit;
2522
+ font-size: var(--clio-title-font-size);
2523
+ font-stretch: var(--clio-font-stretch-title);
2524
+ font-weight: var(--clio-chrome-weight);
2525
+ line-height: 16px;
2526
+ text-overflow: ellipsis;
2527
+ white-space: nowrap;
2528
+ }
2529
+
2530
+ .rounded-window > .rounded-title > :is(button.close, .close) {
2531
+ position: absolute;
2532
+ top: 3px;
2533
+ left: 8px;
2534
+ box-sizing: border-box;
2535
+ width: 11px;
1873
2536
  min-width: 0;
1874
- height: var(--clio-strip-height);
2537
+ height: 11px;
1875
2538
  min-height: 0;
1876
2539
  margin: 0;
1877
- padding: 0 0 0 var(--clio-strip-icon-inset);
2540
+ padding: 0;
2541
+ border: 1px solid #ffffff;
2542
+ border-image: none;
1878
2543
  border-radius: 0;
1879
- color: var(--clio-ink);
2544
+ background: transparent;
2545
+ box-shadow: none;
2546
+ font-size: 0;
1880
2547
  appearance: none;
1881
2548
  -webkit-appearance: none;
1882
- cursor: default;
2549
+ cursor: var(--clio-cursor-arrow);
1883
2550
  }
1884
2551
 
1885
- :where(.control-strip-module) > :is(svg, img, .sys-icon) {
1886
- width: 16px;
1887
- height: 16px;
2552
+ .rounded-window > .rounded-title > :is(button.close, .close)::before,
2553
+ .rounded-window > .rounded-title > :is(button.close, .close)::after {
2554
+ content: none;
1888
2555
  }
1889
2556
 
1890
- :where(.control-strip-module)[aria-haspopup]::after {
1891
- content: "";
1892
- position: absolute;
1893
- top: var(--clio-strip-menu-top);
1894
- right: calc(var(--clio-strip-menu-inset) + 1px);
1895
- width: 4px;
1896
- height: 7px;
1897
- background: var(--clio-strip-menu) 0 0 / 4px 7px no-repeat;
2557
+ .rounded-window > .rounded-title > :is(button.close, .close):focus-visible {
2558
+ outline: 1px dotted #ffffff;
2559
+ outline-offset: 1px;
1898
2560
  }
1899
2561
 
1900
- :where(.control-strip-module):disabled {
1901
- color: var(--clio-disabled);
1902
- opacity: 0.5;
2562
+ .rounded-window.inactive > .rounded-title {
2563
+ background: #ffffff;
2564
+ color: #000000;
1903
2565
  }
1904
2566
 
1905
- /* The tab: open, a slanted end with a grip; folded, the strip shrinks to it. */
1906
- :where(.control-strip) > .control-strip-handle {
1907
- width: var(--clio-strip-handle-width);
1908
- min-width: 0;
1909
- height: var(--clio-strip-height);
1910
- min-height: 0;
1911
- border: 0;
1912
- background: var(--clio-strip-handle) 0 0 / 100% 100% no-repeat;
2567
+ .rounded-window.inactive > .rounded-title > :is(button.close, .close) {
2568
+ visibility: hidden;
2569
+ }
2570
+
2571
+ /* ---- Placard ------------------------------------------------------------------
2572
+ A framed strip for status at the foot of a window, beside the horizontal scroll
2573
+ bar (Mac OS 8 HIG: "Placards"). The control came with the Appearance Manager;
2574
+ before it, the eras draw a 1px frame on the paper (adapted). */
2575
+ :where(.placard) {
2576
+ display: inline-flex;
2577
+ align-items: center;
2578
+ box-sizing: border-box;
2579
+ min-height: 16px;
2580
+ margin: 0;
2581
+ padding: 0 4px;
2582
+ border: 1px solid var(--clio-ink);
2583
+ border-radius: 0;
2584
+ background: var(--clio-paper);
1913
2585
  box-shadow: none;
2586
+ color: var(--clio-ink);
2587
+ font-family: var(--clio-font-small);
2588
+ font-size: var(--clio-font-size-small, 9px);
2589
+ line-height: 12px;
2590
+ white-space: nowrap;
1914
2591
  }
1915
2592
 
1916
- :where(.control-strip.is-collapsed)::before,
1917
- :where(.control-strip.is-collapsed) > :not(.control-strip-handle) {
1918
- display: none;
2593
+ /* ---- Split bar and split line ---------------------------------------------------
2594
+ <div class="split-view"> > .split-bar (above the vertical scroll bar), panes,
2595
+ and a .split-line between two panes. Apple's guidelines (1992) give the split
2596
+ bar as a control 5 pixels high by the width of the scroll bar, at its top, and
2597
+ the split line as two lines with a one-pixel space; BBEdit 5.1 in Mac OS 9 draws
2598
+ it 7 rows high (90-platinum.css). Moving it is the application's: clio.css only
2599
+ draws it. */
2600
+ :where(.split-view) {
2601
+ display: flex;
2602
+ flex-direction: column;
2603
+ min-height: 0;
2604
+ background: var(--clio-split-bg, var(--clio-pane-bg));
1919
2605
  }
1920
2606
 
1921
- :where(.control-strip.is-collapsed) > .control-strip-handle {
2607
+ :where(.split-view) > :where(.split-bar) {
2608
+ align-self: flex-end;
2609
+ }
2610
+
2611
+ :where(.split-bar) {
2612
+ flex: none;
2613
+ box-sizing: border-box;
2614
+ width: var(--clio-scrollbar-size);
2615
+ height: var(--clio-split-bar-height, 5px);
2616
+ background: var(--clio-split-ink, var(--clio-ink));
2617
+ cursor: row-resize;
2618
+ }
2619
+
2620
+ :where(.split-line) {
2621
+ --clio-split-line-1: 1px;
2622
+ flex: none;
2623
+ box-sizing: border-box;
2624
+ height: var(--clio-split-bar-height, 5px);
2625
+ margin: 0;
2626
+ border: 0;
2627
+ background:
2628
+ 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,
2629
+ 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,
2630
+ 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,
2631
+ var(--clio-split-bg, var(--clio-pane-bg));
2632
+ cursor: row-resize;
2633
+ }
2634
+
2635
+ /* Dialogs and alerts.
2636
+ .modal-dialog / .alert-box: the double-framed modal box (dBoxProc).
2637
+ .standard-dialog: the plain box with a drop shadow (altDBoxProc).
2638
+ .modeless-dialog: a movable dialog, which is a .window.
2639
+ Use them on <dialog> or on a <div role="dialog">. system.css's
2640
+ .outer-border / .inner-border wrappers are accepted and draw nothing extra. */
2641
+ :where(.modal-dialog, .alert-box, dialog.modal) {
2642
+ box-sizing: border-box;
2643
+ max-width: 100%;
2644
+ margin: 0;
2645
+ padding: var(--clio-modal-padding);
2646
+ border: var(--clio-modal-border);
2647
+ background: var(--clio-dialog-bg);
2648
+ box-shadow: var(--clio-modal-frame);
2649
+ color: var(--clio-ink);
2650
+ }
2651
+
2652
+ :where(.standard-dialog) {
2653
+ box-sizing: border-box;
2654
+ max-width: 100%;
2655
+ margin: 0;
2656
+ padding: 12px 14px;
2657
+ border: var(--clio-plain-dialog-border);
2658
+ background: var(--clio-dialog-bg);
2659
+ box-shadow: var(--clio-plain-dialog-shadow);
2660
+ color: var(--clio-ink);
2661
+ }
2662
+
2663
+ :where(dialog):is(.modal-dialog, .alert-box, .standard-dialog, .modal)::backdrop {
2664
+ background: transparent;
2665
+ }
2666
+
2667
+ :where(.modal-dialog, .alert-box, .standard-dialog) :where(.outer-border, .inner-border) {
2668
+ padding: 0;
2669
+ border: 0;
2670
+ }
2671
+
2672
+ /* Alert layout: icon on the left, message, buttons bottom-right. */
2673
+ :where(.alert-box) {
2674
+ display: grid;
2675
+ grid-template-columns: auto 1fr;
2676
+ column-gap: 16px;
2677
+ row-gap: 12px;
2678
+ align-items: start;
2679
+ }
2680
+
2681
+ :where(.alert-box) > :where(.alert-icon) {
2682
+ grid-row: 1;
2683
+ width: 32px;
2684
+ height: 32px;
2685
+ }
2686
+
2687
+ :where(.alert-box) > :where(.alert-contents, .modal-contents, p) {
2688
+ grid-column: 2;
2689
+ margin: 0;
2690
+ }
2691
+
2692
+ :where(.alert-box) > :where(.alert-buttons, .dialog-buttons) {
2693
+ grid-column: 1 / -1;
2694
+ }
2695
+
2696
+ :where(.dialog-buttons, .alert-buttons) {
2697
+ display: flex;
2698
+ flex-wrap: wrap;
2699
+ justify-content: flex-end;
2700
+ gap: 12px;
2701
+ margin-top: 12px;
2702
+ }
2703
+
2704
+ /* An alert icon drawn here, not Apple's: a rounded speech box with "!". */
2705
+ :where(.alert-icon.caution, .alert-icon.note, .alert-icon.stop) {
2706
+ display: block;
2707
+ box-sizing: border-box;
2708
+ border: 2px solid var(--clio-ink);
2709
+ border-radius: 6px;
2710
+ background: var(--clio-paper);
2711
+ color: var(--clio-ink);
2712
+ font: 700 22px/28px var(--clio-font-display);
2713
+ text-align: center;
2714
+ }
2715
+
2716
+ :where(.alert-icon.caution)::before { content: "!"; }
2717
+ :where(.alert-icon.note)::before { content: "i"; }
2718
+ :where(.alert-icon.stop) { border-radius: 50%; }
2719
+ :where(.alert-icon.stop)::before { content: "\00D7"; }
2720
+
2721
+ /* Scroll bars, for scroll areas clio.css owns (.window-pane, .listbox,
2722
+ textarea, list-box selects) and for anything you mark with .clio-scroll.
2723
+ Add class="clio-scrollbars" to <html> to give every scroll area the era's
2724
+ scroll bar.
2725
+
2726
+ WebKit/Blink draw the full bar: two arrow boxes, the patterned lane and the
2727
+ scroll box. The scroll box is proportional to the content here (a browser
2728
+ limit), where System 6 drew a fixed 16px square. Firefox has no scroll bar
2729
+ parts, so it gets the era's colours through scrollbar-color. */
2730
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar,
2731
+ :where(html.clio-scrollbars)::-webkit-scrollbar {
2732
+ width: var(--clio-scrollbar-size);
2733
+ height: var(--clio-scrollbar-size);
2734
+ background: var(--clio-paper);
2735
+ }
2736
+
2737
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb {
2738
+ width: var(--clio-scrollbar-size);
2739
+ height: var(--clio-scrollbar-size);
2740
+ background: var(--clio-paper);
2741
+ }
2742
+
2743
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-track,
2744
+ :where(html.clio-scrollbars)::-webkit-scrollbar-track {
2745
+ background: var(--clio-scrollbar-track);
2746
+ box-shadow: var(--clio-scrollbar-track-shadow);
2747
+ }
2748
+
2749
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb > .clio-sb-track {
2750
+ background: var(--clio-scrollbar-track);
2751
+ box-shadow: var(--clio-scrollbar-track-shadow);
2752
+ }
2753
+
2754
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-track:vertical,
2755
+ :where(html.clio-scrollbars)::-webkit-scrollbar-track:vertical {
2756
+ border-left: 1px solid var(--clio-ink);
2757
+ }
2758
+
2759
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-v > .clio-sb-track {
2760
+ border-left: 1px solid var(--clio-ink);
2761
+ }
2762
+
2763
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-track:horizontal,
2764
+ :where(html.clio-scrollbars)::-webkit-scrollbar-track:horizontal {
2765
+ border-top: 1px solid var(--clio-ink);
2766
+ }
2767
+
2768
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-track {
2769
+ border-top: 1px solid var(--clio-ink);
2770
+ }
2771
+
2772
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-thumb,
2773
+ :where(html.clio-scrollbars)::-webkit-scrollbar-thumb {
2774
+ min-width: var(--clio-scrollbar-size);
2775
+ min-height: var(--clio-scrollbar-size);
2776
+ border: var(--clio-scrollbar-thumb-border);
2777
+ background: var(--clio-scrollbar-thumb-bg);
2778
+ box-shadow: var(--clio-scrollbar-thumb-shadow);
2779
+ }
2780
+
2781
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb > .clio-sb-thumb {
2782
+ min-width: var(--clio-scrollbar-size);
2783
+ min-height: var(--clio-scrollbar-size);
2784
+ border: var(--clio-scrollbar-thumb-border);
2785
+ background: var(--clio-scrollbar-thumb-bg);
2786
+ box-shadow: var(--clio-scrollbar-thumb-shadow);
2787
+ }
2788
+
2789
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-thumb:horizontal,
2790
+ :where(html.clio-scrollbars)::-webkit-scrollbar-thumb:horizontal {
2791
+ background: var(--clio-scrollbar-thumb-bg-horizontal, var(--clio-scrollbar-thumb-bg));
2792
+ box-shadow: var(--clio-scrollbar-thumb-shadow-horizontal, var(--clio-scrollbar-thumb-shadow));
2793
+ }
2794
+
2795
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-thumb {
2796
+ background: var(--clio-scrollbar-thumb-bg-horizontal, var(--clio-scrollbar-thumb-bg));
2797
+ box-shadow: var(--clio-scrollbar-thumb-shadow-horizontal, var(--clio-scrollbar-thumb-shadow));
2798
+ }
2799
+
2800
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:start:decrement,
2801
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:end:increment,
2802
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:start:decrement,
2803
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:end:increment {
2804
+ display: block;
2805
+ width: var(--clio-scrollbar-size);
2806
+ height: var(--clio-scrollbar-size);
2807
+ background-color: var(--clio-scrollbar-button-bg);
2808
+ background-position: center;
2809
+ background-repeat: no-repeat;
2810
+ box-shadow: var(--clio-scrollbar-button-shadow);
2811
+ }
2812
+
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-dec,
2814
+ :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 {
2815
+ display: block;
2816
+ width: var(--clio-scrollbar-size);
2817
+ height: var(--clio-scrollbar-size);
2818
+ background-color: var(--clio-scrollbar-button-bg);
2819
+ background-position: center;
2820
+ background-repeat: no-repeat;
2821
+ box-shadow: var(--clio-scrollbar-button-shadow);
2822
+ }
2823
+
2824
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:decrement,
2825
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:decrement {
2826
+ border-left: 1px solid var(--clio-ink);
2827
+ border-bottom: 1px solid var(--clio-ink);
2828
+ background-image: var(--clio-scrollbar-up), var(--clio-scrollbar-button-bevel);
2829
+ }
2830
+
2831
+ :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 {
2832
+ border-left: 1px solid var(--clio-ink);
2833
+ border-bottom: 1px solid var(--clio-ink);
2834
+ background-image: var(--clio-scrollbar-up), var(--clio-scrollbar-button-bevel);
2835
+ }
2836
+
2837
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:increment,
2838
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:increment {
2839
+ border-left: 1px solid var(--clio-ink);
2840
+ border-top: 1px solid var(--clio-ink);
2841
+ background-image: var(--clio-scrollbar-down), var(--clio-scrollbar-button-bevel);
2842
+ }
2843
+
2844
+ :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 {
2845
+ border-left: 1px solid var(--clio-ink);
2846
+ border-top: 1px solid var(--clio-ink);
2847
+ background-image: var(--clio-scrollbar-down), var(--clio-scrollbar-button-bevel);
2848
+ }
2849
+
2850
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:decrement,
2851
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:decrement {
2852
+ border-top: 1px solid var(--clio-ink);
2853
+ border-right: 1px solid var(--clio-ink);
2854
+ background-image: var(--clio-scrollbar-left), var(--clio-scrollbar-button-bevel);
2855
+ }
2856
+
2857
+ :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 {
2858
+ border-top: 1px solid var(--clio-ink);
2859
+ border-right: 1px solid var(--clio-ink);
2860
+ background-image: var(--clio-scrollbar-left), var(--clio-scrollbar-button-bevel);
2861
+ }
2862
+
2863
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:increment,
2864
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:increment {
2865
+ border-top: 1px solid var(--clio-ink);
2866
+ border-left: 1px solid var(--clio-ink);
2867
+ background-image: var(--clio-scrollbar-right), var(--clio-scrollbar-button-bevel);
2868
+ }
2869
+
2870
+ :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 {
2871
+ border-top: 1px solid var(--clio-ink);
2872
+ border-left: 1px solid var(--clio-ink);
2873
+ background-image: var(--clio-scrollbar-right), var(--clio-scrollbar-button-bevel);
2874
+ }
2875
+
2876
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:decrement:active,
2877
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:decrement:active {
2878
+ background-image: var(--clio-scrollbar-up-on), var(--clio-scrollbar-button-bevel-on, none);
2879
+ }
2880
+
2881
+ :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 {
2882
+ background-image: var(--clio-scrollbar-up-on), var(--clio-scrollbar-button-bevel-on, none);
2883
+ }
2884
+
2885
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:vertical:increment:active,
2886
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:vertical:increment:active {
2887
+ background-image: var(--clio-scrollbar-down-on), var(--clio-scrollbar-button-bevel-on, none);
2888
+ }
2889
+
2890
+ :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 {
2891
+ background-image: var(--clio-scrollbar-down-on), var(--clio-scrollbar-button-bevel-on, none);
2892
+ }
2893
+
2894
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:decrement:active,
2895
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:decrement:active {
2896
+ background-image: var(--clio-scrollbar-left-on), var(--clio-scrollbar-button-bevel-on, none);
2897
+ }
2898
+
2899
+ :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 {
2900
+ background-image: var(--clio-scrollbar-left-on), var(--clio-scrollbar-button-bevel-on, none);
2901
+ }
2902
+
2903
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal:increment:active,
2904
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:horizontal:increment:active {
2905
+ background-image: var(--clio-scrollbar-right-on), var(--clio-scrollbar-button-bevel-on, none);
2906
+ }
2907
+
2908
+ :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 {
2909
+ background-image: var(--clio-scrollbar-right-on), var(--clio-scrollbar-button-bevel-on, none);
2910
+ }
2911
+
2912
+ /* Only the single arrow box at each end, as on the Mac. */
2913
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:start:increment,
2914
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:end:decrement,
2915
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:start:increment,
2916
+ :where(html.clio-scrollbars)::-webkit-scrollbar-button:end:decrement {
2917
+ display: none;
2918
+ }
2919
+
2920
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-corner,
2921
+ :where(html.clio-scrollbars)::-webkit-scrollbar-corner {
2922
+ border-top: 1px solid var(--clio-ink);
2923
+ border-left: 1px solid var(--clio-ink);
2924
+ background: var(--clio-scrollbar-corner);
2925
+ }
2926
+
2927
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb-corner {
2928
+ border-top: 1px solid var(--clio-ink);
2929
+ border-left: 1px solid var(--clio-ink);
2930
+ background: var(--clio-scrollbar-corner);
2931
+ }
2932
+
2933
+ @supports not selector(::-webkit-scrollbar) {
2934
+ :where(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, html.clio-scrollbars, .clio-scrollbars *) {
2935
+ scrollbar-color: var(--clio-scrollbar-thumb-color, var(--clio-ink)) var(--clio-scrollbar-track-color, #c0c0c0);
2936
+ }
2937
+ }
2938
+
2939
+ /* Scroll bars drawn by clio.js (optional): the same parts as the browser's
2940
+ scroll bar, as elements, so the scroll box keeps its era's fixed length, an
2941
+ arrow repeats while held and a dragged box can leave an outline behind.
2942
+ The parts take every ::-webkit-scrollbar rule (the build copies each one onto
2943
+ .clio-sb-*); this file only places them. clio.js sets each bar's geometry. */
2944
+ .clio-sb-host {
2945
+ box-sizing: border-box; /* the bar comes out of the box, as the browser's does (everything in a clio.css window already is) */
2946
+ scrollbar-width: none;
2947
+ }
2948
+
2949
+ .clio-sb-host::-webkit-scrollbar {
2950
+ display: none;
2951
+ }
2952
+
2953
+ /* The bar sits in the scroller's padding, which grows by the bar's width. */
2954
+ .clio-sb-host.clio-sb-y {
2955
+ padding-right: calc(var(--clio-sb-pr, 0px) + var(--clio-scrollbar-size));
2956
+ }
2957
+
2958
+ .clio-sb-host.clio-sb-x {
2959
+ padding-bottom: calc(var(--clio-sb-pb, 0px) + var(--clio-scrollbar-size));
2960
+ }
2961
+
2962
+ /* A zero-size first child that sticks to the scroller's corner, so the bars
2963
+ inside it stay put while the content moves. */
2964
+ .clio-sb-anchor {
2965
+ position: sticky;
2966
+ top: var(--clio-sb-pt, 0px);
2967
+ left: var(--clio-sb-pl, 0px);
2968
+ z-index: 2;
2969
+ display: block;
2970
+ width: 0;
2971
+ height: 0;
2972
+ margin: 0;
2973
+ padding: 0;
2974
+ border: 0;
2975
+ float: none;
2976
+ }
2977
+
2978
+ .clio-sb-anchor > :is(.clio-sb, .clio-sb-corner) {
2979
+ position: absolute;
2980
+ box-sizing: border-box;
2981
+ overflow: hidden;
2982
+ user-select: none;
2983
+ -webkit-user-select: none;
2984
+ touch-action: none;
2985
+ }
2986
+
2987
+ .clio-sb-anchor > .clio-sb > * {
2988
+ position: absolute;
2989
+ box-sizing: border-box;
2990
+ margin: 0;
2991
+ }
2992
+
2993
+ .clio-sb-anchor > .clio-sb-v > .clio-sb-dec { top: 0; left: 0; }
2994
+ .clio-sb-anchor > .clio-sb-v > .clio-sb-inc { bottom: 0; left: 0; }
2995
+ .clio-sb-anchor > .clio-sb-v > .clio-sb-track { top: var(--clio-scrollbar-size); bottom: var(--clio-scrollbar-size); left: 0; right: 0; }
2996
+ .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 */
2997
+ .clio-sb-anchor > .clio-sb-h > .clio-sb-dec { left: 0; top: 0; }
2998
+ .clio-sb-anchor > .clio-sb-h > .clio-sb-inc { right: 0; top: 0; }
2999
+ .clio-sb-anchor > .clio-sb-h > .clio-sb-track { left: var(--clio-scrollbar-size); right: var(--clio-scrollbar-size); top: 0; bottom: 0; }
3000
+ .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; }
3001
+
3002
+ /* Smart Scrolling (Mac OS 8/9, Appearance > Options): both arrows at the far
3003
+ end, the up or left arrow first. */
3004
+ .clio-sb-anchor > .clio-sb-v.clio-sb-smart > .clio-sb-dec { top: auto; bottom: var(--clio-scrollbar-size); }
3005
+ .clio-sb-anchor > .clio-sb-v.clio-sb-smart > .clio-sb-track { top: 0; bottom: calc(2 * var(--clio-scrollbar-size)); }
3006
+ .clio-sb-anchor > .clio-sb-v.clio-sb-smart > .clio-sb-thumb { top: 0; }
3007
+ .clio-sb-anchor > .clio-sb-h.clio-sb-smart > .clio-sb-dec { left: auto; right: var(--clio-scrollbar-size); }
3008
+ .clio-sb-anchor > .clio-sb-h.clio-sb-smart > .clio-sb-track { left: 0; right: calc(2 * var(--clio-scrollbar-size)); }
3009
+ .clio-sb-anchor > .clio-sb-h.clio-sb-smart > .clio-sb-thumb { left: 0; }
3010
+
3011
+ /* QuickDraw kept a lane's pattern in step with the screen (System 6.0.8, System
3012
+ 7.5.3): clio.js sets --clio-sb-px/-py on each bar to keep it in step with the
3013
+ page. A rule, not a token: the offsets belong to each bar. Eras whose tracks
3014
+ have their own rules (Drawing Board) place their layers themselves. */
3015
+ .clio-sb-anchor > .clio-sb > .clio-sb-track {
3016
+ background-position: var(--clio-sb-px, 0px) var(--clio-sb-py, 0px);
3017
+ }
3018
+
3019
+ /* The arrows lie over the box's ends and its shadow. */
3020
+ .clio-sb-anchor > .clio-sb > .clio-sb-button { z-index: 1; }
3021
+
3022
+ /* Mac OS 8/9: the lane's top shading also falls just past the box's far end
3023
+ (--clio-scrollbar-thumb-after, drawn only by clio.js's bars). */
3024
+ .clio-sb-anchor > .clio-sb > .clio-sb-thumb::after {
3025
+ content: "";
3026
+ position: absolute;
3027
+ background: var(--clio-scrollbar-thumb-after, none);
3028
+ }
3029
+
3030
+ .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 */
3031
+ .clio-sb-anchor > .clio-sb-h > .clio-sb-thumb::after { left: calc(100% + 1px); top: 0; bottom: 0; width: 2px; }
3032
+
3033
+ /* Nothing to scroll: the lane stays, the box goes (as on the Mac). */
3034
+ .clio-sb-anchor > .clio-sb.clio-sb-off > .clio-sb-thumb {
3035
+ display: none;
3036
+ }
3037
+
3038
+ /* The outline a dragged scroll box leaves in System 6 and 7: the box's frame,
3039
+ drawn over the lane, until the button comes up. */
3040
+ .clio-sb-anchor > .clio-sb > .clio-sb-ghost {
3041
+ z-index: 1;
3042
+ padding: 1px;
3043
+ background: var(--clio-scrollbar-ghost, #000000);
3044
+ 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 */
3045
+ mix-blend-mode: var(--clio-scrollbar-ghost-blend, normal);
3046
+ mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
3047
+ pointer-events: none;
3048
+ }
3049
+
3050
+ /* clio.js outlines (a dragged window, zoom rects): QuickDraw's grey pattern,
3051
+ inverting what lies under it, in step with the screen. */
3052
+ .clio-outline {
3053
+ /* The outline is the frame of the window's structure region (QuickDraw's
3054
+ InsetRgn, rows and columns apart): the frame and its 1px shadow, which starts
3055
+ --clio-drag-outline-shadow-inset in from the top-right and bottom-left corners,
3056
+ so the region and the band step in there (all measured). e, k, w below. */
3057
+ --e: var(--clio-drag-outline-extra, 0px);
3058
+ --k: var(--clio-drag-outline-shadow-inset, 1px);
3059
+ --w: var(--clio-drag-outline-width, 1px);
3060
+ position: fixed;
3061
+ z-index: 2147483000;
3062
+ box-sizing: border-box;
3063
+ margin: 0;
3064
+ /* gray inverts the pixels whose x + y is odd on the screen (System 6.0.8, 7.5.3
3065
+ and Mac OS 9.0, measured); clio.js sets the position that keeps it to the page */
3066
+ background: repeating-conic-gradient(#ffffff 0 25%, transparent 0 50%) 0 0 / 2px 2px;
3067
+ mix-blend-mode: difference;
3068
+ /* the band (box less content box), the region's two notches taken out and the
3069
+ two pieces of the inset region they remove put back: every piece lies wholly
3070
+ in or out of what is below it, so xor does each */
3071
+ mask:
3072
+ linear-gradient(#000 0 0) left 0 bottom 0 / var(--k) var(--e) no-repeat border-box exclude,
3073
+ linear-gradient(#000 0 0) right 0 top 0 / var(--e) var(--k) no-repeat border-box exclude,
3074
+ linear-gradient(#000 0 0) left var(--w) bottom var(--w) / var(--k) var(--e) no-repeat border-box exclude,
3075
+ linear-gradient(#000 0 0) right var(--w) top var(--w) / var(--e) var(--k) no-repeat border-box exclude,
3076
+ linear-gradient(#000 0 0) content-box exclude,
3077
+ linear-gradient(#000 0 0) border-box;
3078
+ pointer-events: none;
3079
+ image-rendering: pixelated;
3080
+ }
3081
+
3082
+ /* clio.js: the move button of a movable window and the live region. Out of
3083
+ sight but in reach; with keyboard focus the title bar shows the ring. */
3084
+ :is(.clio-move, .clio-live) {
3085
+ /* !important: the title bar's own button rules (the close box's art and
3086
+ place) must not reach it */
3087
+ position: absolute !important;
3088
+ width: 1px !important;
3089
+ height: 1px !important;
3090
+ margin: -1px !important;
3091
+ padding: 0 !important;
3092
+ overflow: hidden !important;
3093
+ clip-path: inset(50%) !important;
3094
+ white-space: nowrap !important;
3095
+ border: 0 !important;
3096
+ background: none !important;
3097
+ box-shadow: none !important;
3098
+ }
3099
+
3100
+ .title-bar:has(> .clio-move:focus-visible) {
3101
+ outline: var(--clio-focus-outline);
3102
+ outline-offset: -1px;
3103
+ }
3104
+
3105
+
3106
+ /* clio.js: a movable window's title bar takes a finger's drag itself (on a
3107
+ touch screen the browser would otherwise pan the page and cancel the drag). */
3108
+ .clio-drag-bar {
3109
+ touch-action: none;
3110
+ }
3111
+
3112
+ /* ---- clio.js: the insertion point --------------------------------------------
3113
+ TextEdit inverted a 1px line for its caret, as tall as the line: white in a
3114
+ difference blend inverts what is under it the same way. The field's own caret
3115
+ is hidden only while clio.js draws this one. */
3116
+ .clio-caret {
3117
+ position: absolute;
3118
+ z-index: 2147483646;
3119
+ width: 1px;
3120
+ background: #ffffff;
3121
+ mix-blend-mode: difference;
3122
+ pointer-events: none;
3123
+ }
3124
+
3125
+ .clio-caret-off,
3126
+ .clio-caret[hidden] {
3127
+ visibility: hidden;
3128
+ }
3129
+
3130
+ .clio-caret-field {
3131
+ caret-color: transparent;
3132
+ }
3133
+
3134
+ /* Forced colours repaint the line and may drop the blend: the system's caret instead. */
3135
+ @media (forced-colors: active) {
3136
+ .clio-caret {
3137
+ display: none;
3138
+ }
3139
+
3140
+ .clio-caret-field {
3141
+ caret-color: auto;
3142
+ }
3143
+ }
3144
+
3145
+ /* Control Strip (System 7.5 to Mac OS 9): a row of module buttons with scroll
3146
+ arrows and a tab that folds the strip away. Markup follows AI System 6:
3147
+ .control-strip > button.control-strip-scroll.control-strip-scroll-back,
3148
+ .control-strip-modules[role=toolbar] > .control-strip-module-track >
3149
+ button.control-strip-module (an icon inside; aria-haspopup="menu" draws the
3150
+ menu triangle), button.control-strip-scroll.control-strip-scroll-forward,
3151
+ button.control-strip-handle. Add .is-collapsed to fold it to the tab, and
3152
+ data-edge="right" for a strip on the right edge. Placement is yours
3153
+ (AI System 6 fixes it to the screen's lower left). */
3154
+ /* The strip's art is the same in System 7.5.3, Mac OS 8.5 and Mac OS 9.0
3155
+ (compared pixel for pixel with the backdrop removed); only the cell colours
3156
+ differ, so it lives here for every era. Redrawn by tooling/p9-art.py. */
3157
+ :root {
3158
+ --clio-art-p9-strip-cap: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYBAMAAADXK7paAAAAHlBMVEUAAAAAAABERERVVVWAgICIiIigoKDAwMDMzP/////+VYXkAAAAAXRSTlMAQObYZgAAAGlJREFUeJxjFGQAg/8sbAlgxkwWBiUQfZuBheHfAwYGhg8MTBAlDPgYLAx/9jAwsOgysDAwhDIw/L8LYvy98NcVry4mBoa/Zy+AtTOwlzP8AzFY3r0jYBfC0l/3P4AZjILMBiD6DCPMOwBKOxgiile5lQAAAABJRU5ErkJggg==");
3159
+ --clio-art-s7-strip-cap: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYBAMAAADXK7paAAAAG1BMVEUAAAAAAABERERVVVWIiIiqqqrMzMzMzP/////JRvoVAAAAAXRSTlMAQObYZgAAAGVJREFUeJxjFGQAg/8srAFgxioWBiUQfYeBheHfAwYGhg8MTBAlDPgYLAx/zzIwMMsxsDAwuDAw/L8HYvy98M+FgC6Gf/egDLY0hn8gBvO7dwTsQmj/ff8DmMEoyGwAos8wwrwDAP+1F0dci98qAAAAAElFTkSuQmCC");
3160
+ --clio-art-p9-strip-back: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAgMAAADwXCcuAAAACVBMVEUAAABVVVXd3d2apXz3AAAAAXRSTlMAQObYZgAAACxJREFUeJwFwaERwCAABLD0j3oE7IPBs/8KrcBjSKhiKM/cebs0gvzkfFioLlg9BPcTGNP4AAAAAElFTkSuQmCC");
3161
+ --clio-art-p9-strip-forward: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAgMAAADwXCcuAAAACVBMVEUAAABVVVXd3d2apXz3AAAAAXRSTlMAQObYZgAAAC1JREFUeJwFwSESABAUQMHnzegC9/nFqRX3IegCuxBIwVYxdySFgLzpHbg2cvhWkAdTrBZiqwAAAABJRU5ErkJggg==");
3162
+ --clio-art-p9-strip-menu: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHAQMAAAAVq36TAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABZJREFUeJxjaGA4wPCA4QMTA9MHpgcAIQYE58W2/JQAAAAASUVORK5CYII=");
3163
+ --clio-art-p9-strip-handle: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYBAMAAAAFe7ACAAAAFVBMVEUAAAAAAABERERVVVWIiIjMzMz///8V67gPAAAAAXRSTlMAQObYZgAAAINJREFUeJxVz7ENAjEMheE/IbQokRiAUVJQUjAs5RXZhJvgkp6LjGwfBU309PzFkkMBZAApVVgAIqWUZ9bORsE6fWvWJCukoIlbtjICG0sK5iLnVrM7Hqefsy3qPKnzZM6n/+41D/epbbi772IOaOPYsIv/sIrEG6YA4XqB3vWO2UErvmVcJ4BylohjAAAAAElFTkSuQmCC");
3164
+ --clio-art-p9-strip-tab: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYBAMAAAAFe7ACAAAAFVBMVEUAAAAAAABERERVVVWIiIjMzMz///8V67gPAAAAAXRSTlMAQObYZgAAAIFJREFUeJxVz7ENAjEMQNHvKPS+DRiBEVJQMi49WeAkRrgJSHoijOyEgipf1pPlyAbQgMwVxqN7iYIACVprRaMUskS9gKJeSWKYADtGLRruzC3Lcqd6WW7uw45V7ma5m/Xv3uW53H3YdLnU7g4YFg9Q+6phfv2nw95BNlGsRf1++QW6eCj9rQPMHAAAAABJRU5ErkJggg==");
3165
+ }
3166
+
3167
+ :where(.control-strip) {
3168
+ display: inline-flex;
3169
+ align-items: stretch;
3170
+ height: var(--clio-strip-height);
3171
+ max-width: 100%;
3172
+ vertical-align: bottom;
3173
+ user-select: none;
3174
+ -webkit-user-select: none;
3175
+ }
3176
+
3177
+ /* The end cap, then every cell: one bevelled box between 1px lines. */
3178
+ :where(.control-strip)::before,
3179
+ :where(.control-strip) > :is(.control-strip-scroll, .control-strip-modules),
3180
+ :where(.control-strip-module) {
3181
+ box-sizing: border-box;
3182
+ border: var(--clio-strip-line);
3183
+ border-left: 0;
3184
+ background: var(--clio-strip-bg);
3185
+ box-shadow: var(--clio-strip-cell-shadow);
3186
+ }
3187
+
3188
+ /* The end cap is one picture: frame, bevel, icon and the rounded lower-left corner. */
3189
+ :where(.control-strip)::before {
3190
+ content: "";
3191
+ flex: none;
3192
+ width: calc(var(--clio-strip-cap-width) + 2px);
3193
+ border: 0;
3194
+ background: var(--clio-strip-cap) 0 0 / 100% 100% no-repeat;
3195
+ box-shadow: none;
3196
+ }
3197
+
3198
+ :where(.control-strip) > :is(.control-strip-scroll, .control-strip-handle) {
3199
+ flex: none;
3200
+ margin: 0;
3201
+ padding: 0;
3202
+ border-radius: 0;
3203
+ appearance: none;
3204
+ -webkit-appearance: none;
3205
+ cursor: var(--clio-cursor-arrow);
3206
+ }
3207
+
3208
+ /* Scroll arrows: 13px cells, sunken and hollow while there is nothing to scroll. */
3209
+ :where(.control-strip) > .control-strip-scroll {
3210
+ width: calc(var(--clio-strip-scroll-width) + 1px);
3211
+ min-width: 0;
3212
+ height: auto;
3213
+ min-height: 0;
3214
+ background: var(--clio-strip-back) 1px 6px / 10px 10px no-repeat, var(--clio-strip-bg);
3215
+ box-shadow: var(--clio-strip-cell-shadow);
3216
+ }
3217
+
3218
+ :where(.control-strip) > .control-strip-scroll-forward {
3219
+ background-image: var(--clio-strip-forward);
3220
+ }
3221
+
3222
+ :where(.control-strip) > .control-strip-scroll:disabled {
3223
+ background:
3224
+ var(--clio-strip-back) 1px 6px / 10px 10px no-repeat,
3225
+ var(--clio-strip-sunken-lines),
3226
+ var(--clio-strip-bg);
3227
+ box-shadow: var(--clio-strip-sunken-shadow);
3228
+ }
3229
+
3230
+ :where(.control-strip) > .control-strip-scroll-forward:disabled {
3231
+ background-image: var(--clio-strip-forward);
3232
+ }
3233
+
3234
+ :where(.control-strip) > .control-strip-scroll:not(:disabled):active:where(:not([data-clio-off])),
3235
+ :where(.control-strip-module):not(:disabled):is(:active:where(:not([data-clio-off])), [aria-expanded="true"]) {
3236
+ background-color: var(--clio-strip-pressed-bg);
3237
+ box-shadow: var(--clio-strip-pressed-shadow);
3238
+ }
3239
+
3240
+ :where(.control-strip-modules) {
3241
+ display: flex;
3242
+ min-width: 0;
3243
+ overflow: hidden;
3244
+ border: 0;
3245
+ background: none;
3246
+ box-shadow: none;
3247
+ }
3248
+
3249
+ :where(.control-strip-module-track) {
3250
+ display: flex;
3251
+ }
3252
+
3253
+ /* A module: the 16px icon 2px in, the menu triangle 3px from the right. */
3254
+ :where(.control-strip-module) {
3255
+ position: relative;
3256
+ display: flex;
3257
+ flex: none;
3258
+ align-items: center;
3259
+ width: calc(var(--clio-strip-module-width) + 1px);
3260
+ min-width: 0;
3261
+ height: var(--clio-strip-height);
3262
+ min-height: 0;
3263
+ margin: 0;
3264
+ padding: 0 0 0 var(--clio-strip-icon-inset);
3265
+ border-radius: 0;
3266
+ color: var(--clio-ink);
3267
+ appearance: none;
3268
+ -webkit-appearance: none;
3269
+ cursor: var(--clio-cursor-arrow);
3270
+ }
3271
+
3272
+ :where(.control-strip-module) > :is(svg, img, .sys-icon) {
3273
+ width: 16px;
3274
+ height: 16px;
3275
+ }
3276
+
3277
+ :where(.control-strip-module)[aria-haspopup]::after {
3278
+ content: "";
3279
+ position: absolute;
3280
+ top: var(--clio-strip-menu-top);
3281
+ right: calc(var(--clio-strip-menu-inset) + 1px);
3282
+ width: 4px;
3283
+ height: 7px;
3284
+ background: var(--clio-strip-menu) 0 0 / 4px 7px no-repeat;
3285
+ }
3286
+
3287
+ :where(.control-strip-module):disabled {
3288
+ color: var(--clio-disabled);
3289
+ opacity: 0.5;
3290
+ }
3291
+
3292
+ /* The tab: open, a slanted end with a grip; folded, the strip shrinks to it. */
3293
+ :where(.control-strip) > .control-strip-handle {
3294
+ width: var(--clio-strip-handle-width);
3295
+ min-width: 0;
3296
+ height: var(--clio-strip-height);
3297
+ min-height: 0;
3298
+ border: 0;
3299
+ background: var(--clio-strip-handle) 0 0 / 100% 100% no-repeat;
3300
+ box-shadow: none;
3301
+ }
3302
+
3303
+ :where(.control-strip.is-collapsed)::before,
3304
+ :where(.control-strip.is-collapsed) > :not(.control-strip-handle) {
3305
+ display: none;
3306
+ }
3307
+
3308
+ :where(.control-strip.is-collapsed) > .control-strip-handle {
1922
3309
  width: var(--clio-strip-tab-width);
1923
3310
  background-image: var(--clio-strip-tab);
1924
3311
  }
1925
3312
 
1926
- :where(.control-strip)[data-edge="right"] {
1927
- flex-direction: row-reverse;
3313
+ :where(.control-strip)[data-edge="right"] {
3314
+ flex-direction: row-reverse;
3315
+ }
3316
+
3317
+ :where(.control-strip)[data-edge="right"]::before,
3318
+ :where(.control-strip)[data-edge="right"] > .control-strip-handle {
3319
+ transform: scaleX(-1);
3320
+ }
3321
+
3322
+ :where(.control-strip) > :focus-visible,
3323
+ :where(.control-strip-module):focus-visible {
3324
+ outline: var(--clio-focus-outline);
3325
+ outline-offset: -3px;
3326
+ }
3327
+
3328
+ /* Mac OS 8/9 Platinum. Applies inside any element with data-era="platinum"
3329
+ (put it on <html> for a whole page). clio.platinum.css is a build of this
3330
+ same file with Platinum as the page default.
3331
+ Values: AI System 6's Platinum tables, each tied to a Mac OS 9.0 capture
3332
+ (GUIdebook, Infinite Mac). P-numbers in comments are AI System 6's patch
3333
+ ids; see EVIDENCE.md. */
3334
+ :root {
3335
+ /* A raised edge: white along the top and left, #999 along the bottom and
3336
+ right, the two other corners left to the face (windows, pop-up menus). */
3337
+ --clio-p9-bevel:
3338
+ linear-gradient(#ffffff, #ffffff) 0 0 / calc(100% - 1px) 1px no-repeat,
3339
+ linear-gradient(#ffffff, #ffffff) 0 0 / 1px calc(100% - 1px) no-repeat,
3340
+ linear-gradient(#999999, #999999) 1px 100% / calc(100% - 1px) 1px no-repeat,
3341
+ linear-gradient(#999999, #999999) 100% 1px / 1px calc(100% - 1px) no-repeat;
3342
+ --clio-ink: #000000;
3343
+ --clio-paper: #dddddd;
3344
+ --clio-face: #dddddd;
3345
+ --clio-disabled: #6f6f6f;
3346
+ --clio-disabled-dither: none;
3347
+ --clio-popup-disabled-mask: none;
3348
+ --clio-caret-ticks: 48; /* Mac OS 9.0 General Controls' middle setting: about 795 ms (measured) */
3349
+ --clio-popup-disabled-fg: var(--clio-disabled);
3350
+ /* Push button, disabled button and default ring: the real pixel frames
3351
+ (tooling/frame-art.py: Mac OS 9.0 Appearance and GUIdebook's Mac OS 9.0). */
3352
+ --clio-button-frame: var(--clio-art-frame-p9-button);
3353
+ --clio-button-frame-held: var(--clio-art-frame-p9-button-held);
3354
+ --clio-button-frame-disabled: var(--clio-art-frame-p9-button-disabled);
3355
+ --clio-ring-frame: var(--clio-art-frame-p9-ring);
3356
+ --clio-ring-frame-slice: 6;
3357
+ --clio-disabled-fill: currentcolor;
3358
+ --clio-selection-bg: #ccccff;
3359
+ --clio-selection-fg: #000000;
3360
+
3361
+ /* Charcoal if the visitor has it, else Clio Sans '97 (Charcoal 12 rebuilt
3362
+ from Mac OS 9.0), drawn without smoothing like the bitmap it is; Asap
3363
+ (OFL) at the widths AI System 6 measured against Charcoal as the last
3364
+ fallback; Geneva for text on a Mac. */
3365
+ --clio-font-chrome: Charcoal, "Charcoal CY", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
3366
+ --clio-font-display: Charcoal, "Charcoal CY", "Clio Sans '97 Display", "Clio Asap", "Helvetica Neue", Arial, sans-serif;
3367
+ --clio-font-window-title: Charcoal, "Charcoal CY", "Clio Sans '97 Title Exact", "Clio Sans '97 Title", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
3368
+ --clio-font-button: Charcoal, "Charcoal CY", "Clio Sans '97 Exact", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
3369
+ /* List view (Finder, Mac OS 9.0): 21px bevelled headers, the sorted one sunk
3370
+ dark; the sorted column's rows #ddd, the others #eee, 19px rows. Drawn
3371
+ with background lines (List view rules), not tokens alone. */
3372
+ --clio-list-view-bg: #eeeeee;
3373
+ --clio-list-view-row: 19px;
3374
+ --clio-list-view-header-height: 21px;
3375
+ --clio-list-view-header-padding: 3px 4px 0;
3376
+ --clio-list-view-sorted-decoration: none;
3377
+ --clio-list-view-sorted-bg: #dddddd;
3378
+ --clio-list-view-sort-width: 15px;
3379
+ /* Separator (Mouse control panel, Mac OS 9.0): etched, #888 then white one
3380
+ row lower and one column further right. */
3381
+ --clio-separator-height: 2px;
3382
+ --clio-separator-bg: linear-gradient(#888888, #888888) 0 0 / calc(100% - 1px) 1px no-repeat, linear-gradient(#ffffff, #ffffff) 1px 1px / calc(100% - 1px) 1px no-repeat;
3383
+ /* Keyboard focus on a field or list: a 2px ring of the highlight colour's
3384
+ dark (#6666cc for Purple), its outer corners left out (Date & Time). */
3385
+ --clio-focus-ring-colour: #6666cc;
3386
+ --clio-focus-ring: 0 -1px 0 1px var(--clio-focus-ring-colour), 0 1px 0 1px var(--clio-focus-ring-colour), -1px 0 0 1px var(--clio-focus-ring-colour), 1px 0 0 1px var(--clio-focus-ring-colour);
3387
+ --clio-field-focus-shadow: var(--clio-focus-ring);
3388
+ --clio-field-focus-outline: none;
3389
+ --clio-list-focus-shadow: var(--clio-focus-ring);
3390
+ /* Little arrows (Date & Time, Mac OS 9.0): 13x23; dimmed while their field is
3391
+ not being edited. Held states were under the pointer and keep the normal. */
3392
+ --clio-little-arrows-width: 13px;
3393
+ --clio-little-arrows-height: 23px;
3394
+ --clio-art-little-arrows: url("art/platinum/little-arrows.png");
3395
+ --clio-art-little-arrows-up: url("art/platinum/little-arrows.png");
3396
+ --clio-art-little-arrows-down: url("art/platinum/little-arrows.png");
3397
+ --clio-art-little-arrows-disabled: url("art/platinum/little-arrows-disabled.png");
3398
+ /* Disclosure triangle: 13px with its shadow (Finder list view, Mac OS 9.0). */
3399
+ --clio-disclosure-size: 13px;
3400
+ --clio-art-disclosure: url("art/platinum/disclosure.png");
3401
+ --clio-art-disclosure-open: url("art/platinum/disclosure-open.png");
3402
+ --clio-font-text: Geneva, "Clio Asap", "Helvetica Neue", Arial, sans-serif;
3403
+ --clio-font-size: 12px;
3404
+ --clio-font-smoothing: none;
3405
+ --clio-text-smoothing: auto;
3406
+ --clio-text-smoothing-moz: auto;
3407
+ --clio-font-small: var(--clio-font-text);
3408
+ --clio-font-size-small: 10px;
3409
+ --clio-chrome-weight: 700;
3410
+ --clio-font-stretch-text: 113%;
3411
+ --clio-font-stretch-title: 123%;
3412
+
3413
+ --clio-border: 1px solid #000000;
3414
+ --clio-control-height: 20px;
3415
+ --clio-field-height: 22px;
3416
+ --clio-focus-outline: 2px solid #6666cc;
3417
+ --clio-focus-offset: 0px;
3418
+
3419
+ /* [I] Solid base of AI System 6's azul tile; the tile itself is not shipped. */
3420
+ --clio-desktop: #4a71ab;
3421
+
3422
+ /* P14 window frame: black line, a raised 4px strip, black content line. */
3423
+ --clio-window-bg: #cccccc;
3424
+ --clio-pane-bg: #dddddd;
3425
+ --clio-window-border: 1px solid #000000;
3426
+ /* The frame's white light and #999 shade are drawn as lines in the window's
3427
+ background (below), which leave the two odd corners in the frame grey. */
3428
+ --clio-window-shadow: 1px 1px 0 #000000;
3429
+ /* AI System 6 pads 5px because its pane has no border; here the pane draws
3430
+ the black content line itself, so the strip is 4px. */
3431
+ --clio-window-padding: 2px 4px 4px;
3432
+
3433
+ /* Title bar: 19px, six white/#777 ridge pairs, covers behind the boxes. */
3434
+ --clio-titlebar-height: 19px;
3435
+ --clio-titlebar-margin: 0;
3436
+ --clio-titlebar-padding: 1px 0;
3437
+ --clio-titlebar-border: 1px solid #000000;
3438
+ --clio-titlebar-row: 13px;
3439
+ --clio-titlebar-slot: 16px;
3440
+ --clio-titlebar-shade-slot: 16px;
3441
+ --clio-shade-display: block;
3442
+ --clio-titlebar-inactive-bg: #dddddd;
3443
+ --clio-title-bg: #cccccc;
3444
+ --clio-title-fg: #000000;
3445
+ --clio-title-inactive-fg: #777777;
3446
+ --clio-title-padding: 0 4px;
3447
+ --clio-box-size: 11px;
3448
+ --clio-box-inset: 0px;
3449
+ --clio-box-isolation: 0px;
3450
+
3451
+ /* Menu bar and menus (P21, P24) */
3452
+ --clio-menubar-height: 20px;
3453
+ --clio-menubar-bg: #dddddd;
3454
+ --clio-menubar-border: 1px solid #000000;
3455
+ --clio-menubar-shadow: inset 0 1px 0 #ffffff, inset 0 -1px 0 #999999;
3456
+ --clio-menubar-padding: 0 8px;
3457
+ --clio-menu-title-padding: 0 10px;
3458
+ --clio-menu-title-inset: 0px;
3459
+ --clio-menu-title-active-bg: #333399;
3460
+ --clio-menu-title-active-fg: #ffffff;
3461
+ --clio-menu-title-active-shadow: inset 0 1px 0 #6666cc, inset 0 -1px 0 #000088;
3462
+ --clio-menu-bg: #dddddd;
3463
+ --clio-menu-border: 1px solid #000000;
3464
+ --clio-menu-border-top-width: 0;
3465
+ --clio-menu-shadow: inset 1px 1px 0 #ffffff, inset -1px -1px 0 #999999, 1px 1px 0 #222222;
3466
+ --clio-menu-item-height: 16px;
3467
+ --clio-menu-item-padding: 0 10px 0 21px;
3468
+ --clio-menu-item-weight: 600;
3469
+ --clio-menu-item-active-bg: #333399;
3470
+ --clio-menu-item-active-fg: #ffffff;
3471
+ --clio-menu-item-active-shadow: inset 1px 0 0 #6666cc, inset -1px 0 0 #000088;
3472
+ /* Separator: a 6px row, #888 on its third line and white on its fourth,
3473
+ across the menu's full width (Mac OS 9.0 Finder File menu). */
3474
+ --clio-menu-separator:
3475
+ linear-gradient(#888888, #888888) 0 2px / 100% 1px no-repeat,
3476
+ linear-gradient(#ffffff, #ffffff) 0 3px / 100% 1px no-repeat;
3477
+ --clio-menu-separator-height: 6px;
3478
+
3479
+ /* Push buttons: bevel, 3px corners (P29 pressed) */
3480
+ --clio-button-bg: transparent;
3481
+ --clio-button-fg: #000000;
3482
+ --clio-button-border: 1px solid #000000;
3483
+ --clio-button-radius: 3px;
3484
+ --clio-button-shadow: none;
3485
+ --clio-button-padding: 0 10px;
3486
+ --clio-button-min-width: 58px;
3487
+ --clio-button-weight: 700;
3488
+ /* Held: the frame and its dark face cut from Mac OS 9.0 (frame-art.py). */
3489
+ --clio-button-active-bg: transparent;
3490
+ --clio-button-active-fg: #ffffff;
3491
+ --clio-button-active-shadow: none;
3492
+ --clio-button-disabled-fg: #777777;
3493
+ --clio-button-disabled-border: 1px solid #888888;
3494
+
3495
+ /* Check boxes and radio buttons: the mark and both radio states are redrawn
3496
+ from Mac OS 9.0's General Controls (tooling/p9-art.py). */
3497
+ --clio-check-size: 12px;
3498
+ /* The well's white light and #888 shade as lines that leave the odd corners
3499
+ in the face (an inset shadow would also paint over the check mark). */
3500
+ --clio-check-bg:
3501
+ linear-gradient(#ffffff, #ffffff) 0 0 / calc(100% - 1px) 1px no-repeat padding-box,
3502
+ linear-gradient(#ffffff, #ffffff) 0 0 / 1px calc(100% - 1px) no-repeat padding-box,
3503
+ linear-gradient(#888888, #888888) 1px 100% / calc(100% - 1px) 1px no-repeat padding-box,
3504
+ linear-gradient(#888888, #888888) 100% 1px / 1px calc(100% - 1px) no-repeat padding-box,
3505
+ #dddddd;
3506
+ --clio-check-border: 1px solid #000000;
3507
+ --clio-check-shadow: none;
3508
+ --clio-check-mark: var(--clio-art-p9-check) 0 0 / 10px 10px no-repeat;
3509
+ --clio-check-mark-origin: padding-box;
3510
+ --clio-check-pressed-border-width: 1px;
3511
+
3512
+ /* Text fields (P30) */
3513
+ --clio-field-bg: #ffffff;
3514
+ --clio-field-border: 1px solid #000000;
3515
+ --clio-field-shadow: -1px -1px 0 #888888, 1px 1px 0 #ffffff;
3516
+ --clio-field-padding: 2px 3px;
3517
+
3518
+ /* Pop-up menus, measured from Mac OS 9.0 (Appearance tab, "Apple platinum"):
3519
+ 20px, black frame, #ddd face with a white top line and #aaa foot; a #aaa
3520
+ divider 20px from the right, then a raised arrow box (white left and top,
3521
+ #aaa then #777 shade) with the 7x10 arrows 7px from the right, 4px down. */
3522
+ --clio-popup-bg: #dddddd;
3523
+ --clio-popup-border: 1px solid #000000;
3524
+ --clio-popup-radius: 0;
3525
+ --clio-popup-frame: var(--clio-art-frame-p9-popup); /* the real corners */
3526
+ --clio-popup-shadow: none;
3527
+ --clio-popup-height: 20px;
3528
+ --clio-popup-padding: 0 28px 0 7px;
3529
+ --clio-popup-weight: 700;
3530
+ --clio-popup-arrow:
3531
+ var(--clio-art-p-dropdown) right 7px top 4px / 7px 10px no-repeat,
3532
+ linear-gradient(#777777, #777777) right 0 top 1px / 1px calc(100% - 1px) no-repeat,
3533
+ linear-gradient(#777777, #777777) right 0 bottom 0 / 19px 1px no-repeat,
3534
+ linear-gradient(#aaaaaa, #aaaaaa) right 1px top 1px / 1px calc(100% - 2px) no-repeat,
3535
+ linear-gradient(#aaaaaa, #aaaaaa) right 1px bottom 1px / 17px 1px no-repeat,
3536
+ linear-gradient(#bbbbbb, #bbbbbb) right 19px bottom 0 / 1px 1px no-repeat,
3537
+ linear-gradient(#ffffff, #ffffff) right 18px top 1px / 1px calc(100% - 3px) no-repeat,
3538
+ linear-gradient(#ffffff, #ffffff) right 2px top 1px / 17px 1px no-repeat,
3539
+ linear-gradient(#aaaaaa, #aaaaaa) right 20px top 1px / 1px calc(100% - 1px) no-repeat,
3540
+ linear-gradient(#ffffff, #ffffff) left 0 top 0 / calc(100% - 21px) 1px no-repeat,
3541
+ linear-gradient(#aaaaaa, #aaaaaa) left 0 bottom 0 / calc(100% - 21px) 1px no-repeat;
3542
+
3543
+ /* Scroll bars (P16, P17, P27) */
3544
+ --clio-scrollbar-size: 15px;
3545
+ /* Mac OS 9.0 Finder (frames hig/platinum9/finder-*): a 15-row box between
3546
+ black lines, dragged live; the bar is its black line and 14px, the window's
3547
+ frame closing it. The arrow boxes' light and shade stop a pixel short of
3548
+ the far corners. */
3549
+ --clio-scrollbar-thumb-length: 17px;
3550
+ --clio-scrollbar-thumb-inset: 0px;
3551
+ --clio-scrollbar-thumb-overlap: 1px;
3552
+ --clio-scrollbar-thumb-after:
3553
+ linear-gradient(#cccccc, #cccccc) 100% 0 / 1px 2px no-repeat,
3554
+ linear-gradient(#bbbbbb, #bbbbbb) calc(100% - 1px) 1px / 1px 1px no-repeat,
3555
+ linear-gradient(#777777, #777777) 0 0 / 100% 1px no-repeat,
3556
+ linear-gradient(#777777, #777777) 0 0 / 1px 2px no-repeat,
3557
+ #888888;
3558
+ --clio-scrollbar-button-bevel: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff' d='M0 0h13v1H0zM0 1h1v12H0z'/%3E%3Cpath fill='%23bbb' d='M1 13h13v1H1zM13 1h1v12h-1z'/%3E%3C/svg%3E");
3559
+ /* held: #555 along the top and left, #999 along the bottom and right, the two
3560
+ other corners left the face's #777 (Mac OS 9.0 Finder, frame arrow-held) */
3561
+ --clio-scrollbar-button-bevel-on: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23555' d='M0 0h13v1H0zM0 1h1v12H0z'/%3E%3Cpath fill='%23999' d='M1 13h13v1H1zM13 1h1v12h-1z'/%3E%3C/svg%3E");
3562
+ --clio-scrollbar-thumb-tracking: live;
3563
+ --clio-scrollbar-repeat-delay: 200ms; /* Mac OS 9.0 Finder: one step, then a pause of about 0.2 s */
3564
+ /* Mac OS 8 and 9 keep a clicked menu open (clio.js) */
3565
+ --clio-menu-sticky: 1;
3566
+ --clio-drag-outline-width: 2px; /* Mac OS 9.0: a 2px band */
3567
+ --clio-drag-outline-shadow-inset: 2px; /* the shadow starts 2px in from the corners */
3568
+ /* Zoom rects (Mac OS 9.0 opening Games, measured): 6 outlines in the 2px band at
3569
+ 1.4^(k - 7) of the way, all on screen until the window draws */
3570
+ --clio-zoom-count: 6;
3571
+ --clio-zoom-steps: 7;
3572
+ --clio-zoom-ratio: 1.4;
3573
+ --clio-zoom-offset: 0;
3574
+ --clio-zoom-keep: 0;
3575
+ --clio-scrollbar-track: #aaaaaa;
3576
+ /* The lane: #777 and #888 along the top and left, #bbb and #ccc down the
3577
+ right, nothing along the bottom (frames finder-scroll-*). */
3578
+ --clio-scrollbar-track-shadow: inset -1px 0 #cccccc, inset 1px 1px #777777, inset -2px 0 #bbbbbb, inset 2px 2px #888888;
3579
+ /* The box: light and shade a pixel short of the far corners, a #eee corner;
3580
+ the grip rounds up and left, as QuickDraw's halving does. */
3581
+ --clio-scrollbar-thumb-bg: var(--clio-art-p-grip-v) 50% calc(50% - 0.5px) / 8px 8px no-repeat,
3582
+ linear-gradient(#eeeeee, #eeeeee) 0 0 / 1px 1px no-repeat,
3583
+ linear-gradient(#ccccff, #ccccff) 1px 0 / calc(100% - 2px) 1px no-repeat,
3584
+ linear-gradient(#ccccff, #ccccff) 0 1px / 1px calc(100% - 2px) no-repeat,
3585
+ linear-gradient(#6666cc, #6666cc) 100% 1px / 1px calc(100% - 1px) no-repeat,
3586
+ linear-gradient(#6666cc, #6666cc) 1px 100% / calc(100% - 1px) 1px no-repeat,
3587
+ #9999ff;
3588
+ --clio-scrollbar-thumb-bg-horizontal: var(--clio-art-p-grip-h) calc(50% - 0.5px) 50% / 8px 8px no-repeat,
3589
+ linear-gradient(#eeeeee, #eeeeee) 0 0 / 1px 1px no-repeat,
3590
+ linear-gradient(#ccccff, #ccccff) 1px 0 / calc(100% - 2px) 1px no-repeat,
3591
+ linear-gradient(#ccccff, #ccccff) 0 1px / 1px calc(100% - 2px) no-repeat,
3592
+ linear-gradient(#6666cc, #6666cc) 100% 1px / 1px calc(100% - 1px) no-repeat,
3593
+ linear-gradient(#6666cc, #6666cc) 1px 100% / calc(100% - 1px) 1px no-repeat,
3594
+ #9999ff;
3595
+ --clio-scrollbar-thumb-border: 1px solid #000000;
3596
+ --clio-scrollbar-thumb-shadow: none;
3597
+ --clio-scrollbar-button-bg: #dddddd;
3598
+ --clio-scrollbar-button-shadow: none;
3599
+ --clio-scrollbar-up: var(--clio-art-p-up);
3600
+ --clio-scrollbar-up-on: var(--clio-art-p-up);
3601
+ --clio-scrollbar-down: var(--clio-art-p-down);
3602
+ --clio-scrollbar-down-on: var(--clio-art-p-down);
3603
+ --clio-scrollbar-left: var(--clio-art-p-left);
3604
+ --clio-scrollbar-left-on: var(--clio-art-p-left);
3605
+ --clio-scrollbar-right: var(--clio-art-p-right);
3606
+ --clio-scrollbar-right-on: var(--clio-art-p-right);
3607
+ --clio-scrollbar-thumb-color: #9999ff;
3608
+ --clio-scrollbar-track-color: #aaaaaa;
3609
+
3610
+ /* Dialogs (P06) */
3611
+ --clio-dialog-bg: #dddddd;
3612
+ --clio-modal-border: 1px solid #000000;
3613
+ --clio-modal-frame:
3614
+ inset 1px 1px 0 #dddddd,
3615
+ inset 2px 2px 0 #ffffff,
3616
+ inset 3px 3px 0 #ffffff,
3617
+ inset -1px -1px 0 #555555,
3618
+ inset -2px -2px 0 #999999,
3619
+ inset -3px -3px 0 #aaaaaa,
3620
+ 1px 1px 0 #000000;
3621
+ --clio-modal-padding: 16px 18px;
3622
+ --clio-plain-dialog-border: 1px solid #000000;
3623
+ --clio-plain-dialog-shadow: inset 1px 1px 0 #ffffff, inset -1px -1px 0 #999999, 1px 1px 0 #000000;
3624
+
3625
+ /* Bars, lists, groups, progress, tabs, icons */
3626
+ --clio-details-bg: #dddddd;
3627
+ --clio-details-border: 1px solid #000000;
3628
+ --clio-details-shadow: inset 0 1px 0 #ffffff, inset 0 -1px 0 #aaaaaa;
3629
+ --clio-details-font-size: 12px;
3630
+ --clio-details-height: 20px;
3631
+ --clio-details-padding: 0 8px;
3632
+ --clio-scrollbar-corner: #dddddd;
3633
+ --clio-list-bg: #ffffff;
3634
+ --clio-list-border: 1px solid #000000;
3635
+ --clio-list-shadow: -1px -1px 0 #888888, 1px 1px 0 #ffffff;
3636
+ --clio-list-row: 16px;
3637
+ /* Group box: a 1px line of #777 and #888 dots, the pattern aligned to the
3638
+ screen (#777 where x + y is even), no light (Mac OS 9.0 General Controls). */
3639
+ --clio-group-border: 1px solid transparent;
3640
+ --clio-group-shadow: none;
3641
+ --clio-art-p9-group-dots: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACAQMAAABIeJ9nAAAABlBMVEV3d3eIiIjxRXMlAAAADElEQVR4nGNwYHIAAAEIAIMYhovOAAAAAElFTkSuQmCC");
3642
+ --clio-progress-height: 12px;
3643
+ --clio-progress-bg: #bbbbbb;
3644
+ --clio-progress-border: 1px solid #000000;
3645
+ --clio-progress-shadow: 1px 1px #ffffff, -1px -1px #aaaaaa, inset 1px 1px #888888, inset -1px -1px #dddddd;
3646
+ --clio-progress-fill: linear-gradient(to bottom, #333399 0 1px, #6666cc 1px 2px, #9999ff 2px 3px, #ccccff 3px 4px, #eeeeee 4px 5px, #ccccff 5px 6px, #9999ff 6px 7px, #6666cc 7px 8px, #333399 8px 9px, #000055 9px 10px);
3647
+ --clio-tab-height: 23px;
3648
+ --clio-tab-panel-bg: #eeeeee;
3649
+ --clio-tab-panel-border: 1px solid #000000;
3650
+ --clio-label-bg: rgba(255, 255, 255, 0.7);
3651
+ --clio-label-fg: #000000;
3652
+ --clio-label-selected-bg: #000000;
3653
+ --clio-label-selected-fg: #ffffff;
3654
+ --clio-icon-selected-filter: brightness(0.5);
3655
+
3656
+ /* Control Strip, measured from Mac OS 9.0 (npm run capture:platinum, frames
3657
+ strip-expanded, strip-collapsed, strip-slider); Mac OS 8.5's is the same
3658
+ under Drawing Board. 24px: 1px black lines, #c0c0c0 cells with a white
3659
+ inner light, #a0a0a0 then #808080 shade; scroll cells sunken while idle. */
3660
+ --clio-strip-bg: #c0c0c0;
3661
+ --clio-strip-line: 1px solid #000000;
3662
+ --clio-strip-cell-shadow: inset -1px -1px 0 #808080, inset -2px -2px 0 #a0a0a0, inset 1px 1px 0 #c0c0c0, inset 2px 2px 0 #ffffff;
3663
+ --clio-strip-sunken-shadow: none;
3664
+ --clio-strip-sunken-lines:
3665
+ linear-gradient(#808080, #808080) 0 0 / calc(100% - 1px) 1px no-repeat,
3666
+ linear-gradient(#808080, #808080) 0 0 / 1px calc(100% - 1px) no-repeat,
3667
+ linear-gradient(#ffffff, #ffffff) 1px 100% / calc(100% - 1px) 1px no-repeat,
3668
+ linear-gradient(#ffffff, #ffffff) 100% 1px / 1px calc(100% - 1px) no-repeat;
3669
+ --clio-strip-pressed-bg: #808080;
3670
+ --clio-strip-pressed-shadow: inset 2px 2px 0 #404040, inset -2px -2px 0 #c0c0c0;
3671
+ --clio-strip-cap: var(--clio-art-p9-strip-cap);
3672
+ --clio-strip-back: var(--clio-art-p9-strip-back);
3673
+ --clio-strip-forward: var(--clio-art-p9-strip-forward);
3674
+ --clio-strip-menu: var(--clio-art-p9-strip-menu);
3675
+ --clio-strip-handle: var(--clio-art-p9-strip-handle);
3676
+ --clio-strip-tab: var(--clio-art-p9-strip-tab);
3677
+
3678
+ /* Art: pop-up arrow, menu check mark and submenu arrow redrawn from
3679
+ Mac OS 9.0 (tooling/p9-art.py, below); scroll arrows, grips and tabs drawn
3680
+ here (tabs: tooling/tab-art.py). */
3681
+ --clio-art-p-dropdown: var(--clio-art-p9-dropdown);
3682
+ --clio-art-p-dropdown-off: var(--clio-art-p9-dropdown-off);
3683
+ --clio-art-p-check: var(--clio-art-p9-menucheck);
3684
+ --clio-art-p-submenu: var(--clio-art-p9-submenu);
3685
+ --clio-art-p-submenu-on: var(--clio-art-p9-submenu-on);
3686
+ --clio-art-p-up: 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='M5 5h2v1h-2zM4 6h4v1h-4zM3 7h6v1h-6zM2 8h8v1h-8z'/%3E%3C/svg%3E");
3687
+ --clio-art-p-up-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23888' d='M5 5h2v1h-2zM4 6h4v1h-4zM3 7h6v1h-6zM2 8h8v1h-8z'/%3E%3C/svg%3E");
3688
+ --clio-art-p-down: 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 5h8v1h-8zM3 6h6v1h-6zM4 7h4v1h-4zM5 8h2v1h-2z'/%3E%3C/svg%3E");
3689
+ --clio-art-p-down-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23888' d='M2 5h8v1h-8zM3 6h6v1h-6zM4 7h4v1h-4zM5 8h2v1h-2z'/%3E%3C/svg%3E");
3690
+ --clio-art-p-left: 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='M5 5h1v2h-1zM6 4h1v4h-1zM7 3h1v6h-1zM8 2h1v8h-1z'/%3E%3C/svg%3E");
3691
+ --clio-art-p-left-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23888' d='M5 5h1v2h-1zM6 4h1v4h-1zM7 3h1v6h-1zM8 2h1v8h-1z'/%3E%3C/svg%3E");
3692
+ --clio-art-p-right: 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='M5 2h1v8h-1zM6 3h1v6h-1zM7 4h1v4h-1zM8 5h1v2h-1z'/%3E%3C/svg%3E");
3693
+ --clio-art-p-right-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23888' d='M5 2h1v8h-1zM6 3h1v6h-1zM7 4h1v4h-1zM8 5h1v2h-1z'/%3E%3C/svg%3E");
3694
+ --clio-art-p-grip-v: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' shape-rendering='crispEdges'%3E%3Cpath fill='%23eee' d='M0 0h1v1H0zM0 2h1v1H0zM0 4h1v1H0zM0 6h1v1H0z'/%3E%3Cpath fill='%23ccf' d='M1 0h6v1H1zM1 2h6v1H1zM1 4h6v1H1zM1 6h6v1H1z'/%3E%3Cpath fill='%23339' d='M1 1h7v1H1zM1 3h7v1H1zM1 5h7v1H1zM1 7h7v1H1z'/%3E%3C/svg%3E");
3695
+ --clio-art-p-grip-h: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' shape-rendering='crispEdges'%3E%3Cpath fill='%23eee' d='M0 0h1v1H0zM2 0h1v1H2zM4 0h1v1H4zM6 0h1v1H6z'/%3E%3Cpath fill='%23ccf' d='M0 1h1v6H0zM2 1h1v6H2zM4 1h1v6H4zM6 1h1v6H6z'/%3E%3Cpath fill='%23339' d='M1 1h1v7H1zM3 1h1v7H3zM5 1h1v7H5zM7 1h1v7H7z'/%3E%3C/svg%3E");
3696
+ --clio-art-p-tab-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='24' shape-rendering='crispEdges'%3E%3Cpath fill='%23222' d='M11 1h1v1h-1zM9 2h1v1h-1zM8 3h1v1h-1zM7 4h1v1h-1zM25 4h1v1h-1zM6 6h1v1h-1zM26 6h1v1h-1zM5 9h1v1h-1zM27 9h1v1h-1zM4 12h1v1h-1zM28 12h1v1h-1zM3 15h1v1h-1zM29 15h1v1h-1zM2 18h1v1h-1zM30 18h1v1h-1zM1 21h1v1h-1z'/%3E%3Cpath fill='%23000' d='M12 1h10v1h-10zM10 2h1v1h-1zM22 2h2v1h-2zM24 3h1v1h-1zM7 5h1v1h-1zM25 5h1v1h-1zM6 7h1v1h-1zM26 7h1v1h-1zM6 8h1v1h-1zM26 8h1v1h-1zM5 10h1v1h-1zM27 10h1v1h-1zM5 11h1v1h-1zM27 11h1v1h-1zM4 13h1v1h-1zM28 13h1v1h-1zM4 14h1v1h-1zM28 14h1v1h-1zM3 16h1v1h-1zM29 16h1v1h-1zM3 17h1v1h-1zM29 17h1v1h-1zM2 19h1v1h-1zM30 19h1v1h-1zM2 20h1v1h-1zM30 20h1v1h-1zM0 21h1v1h-1zM31 21h2v1h-2zM0 22h2v1h-2zM31 22h2v1h-2z'/%3E%3Cpath fill='%23bbb' d='M11 2h1v1h-1zM21 2h1v1h-1zM9 3h1v1h-1zM8 4h1v1h-1zM23 4h1v1h-1zM7 6h1v1h-1zM24 6h1v1h-1zM6 9h1v1h-1zM25 9h1v1h-1zM5 12h1v1h-1zM26 12h1v1h-1zM4 15h1v1h-1zM27 15h1v1h-1zM3 18h1v1h-1zM28 18h1v1h-1zM2 21h1v1h-1zM29 21h1v1h-1zM30 22h1v1h-1z'/%3E%3Cpath fill='%23ccc' d='M12 2h9v1h-9zM10 3h1v1h-1zM8 5h1v1h-1zM7 7h1v1h-1zM7 8h1v1h-1zM6 10h1v1h-1zM6 11h1v1h-1zM5 13h1v1h-1zM5 14h1v1h-1zM4 16h1v1h-1zM4 17h1v1h-1zM3 19h1v1h-1zM3 20h1v1h-1zM2 22h1v1h-1zM0 23h3v1h-3zM30 23h3v1h-3z'/%3E%3Cpath fill='%23fff' d='M11 3h11v1h-11zM9 4h2v1h-2zM9 5h1v1h-1zM8 6h1v1h-1zM8 7h1v1h-1zM8 8h1v1h-1zM7 9h1v1h-1zM7 10h1v1h-1zM7 11h1v1h-1zM6 12h1v1h-1zM6 13h1v1h-1zM6 14h1v1h-1zM5 15h1v1h-1zM5 16h1v1h-1zM5 17h1v1h-1zM4 18h1v1h-1zM4 19h1v1h-1zM4 20h1v1h-1zM3 21h1v1h-1zM3 22h1v1h-1z'/%3E%3Cpath fill='%23ddd' d='M22 3h1v1h-1zM23 5h1v1h-1zM24 7h1v1h-1zM24 8h1v1h-1zM25 10h1v1h-1zM25 11h1v1h-1zM26 13h1v1h-1zM26 14h1v1h-1zM27 16h1v1h-1zM27 17h1v1h-1zM28 19h1v1h-1zM28 20h1v1h-1zM29 22h1v1h-1z'/%3E%3Cpath fill='%23888' d='M23 3h1v1h-1zM24 5h1v1h-1zM25 7h1v1h-1zM25 8h1v1h-1zM26 10h1v1h-1zM26 11h1v1h-1zM27 13h1v1h-1zM27 14h1v1h-1zM28 16h1v1h-1zM28 17h1v1h-1zM29 19h1v1h-1zM29 20h1v1h-1z'/%3E%3Cpath fill='%23eee' d='M11 4h12v1h-12zM10 5h13v1h-13zM9 6h15v1h-15zM9 7h15v1h-15zM9 8h15v1h-15zM8 9h17v1h-17zM8 10h17v1h-17zM8 11h17v1h-17zM7 12h19v1h-19zM7 13h19v1h-19zM7 14h19v1h-19zM6 15h21v1h-21zM6 16h21v1h-21zM6 17h21v1h-21zM5 18h23v1h-23zM5 19h23v1h-23zM5 20h23v1h-23zM4 21h25v1h-25zM4 22h25v1h-25zM3 23h27v1h-27z'/%3E%3Cpath fill='%23444' d='M24 4h1v1h-1zM25 6h1v1h-1zM26 9h1v1h-1zM27 12h1v1h-1zM28 15h1v1h-1zM29 18h1v1h-1zM30 21h1v1h-1z'/%3E%3C/svg%3E");
3697
+ --clio-art-p-tab: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='24' shape-rendering='crispEdges'%3E%3Cpath fill='%23222' d='M11 3h1v1h-1zM9 4h1v1h-1zM8 5h1v1h-1zM7 6h1v1h-1zM25 6h1v1h-1zM6 8h1v1h-1zM26 8h1v1h-1zM5 11h1v1h-1zM27 11h1v1h-1zM4 14h1v1h-1zM28 14h1v1h-1zM3 17h1v1h-1zM29 17h1v1h-1zM2 20h1v1h-1zM30 20h1v1h-1z'/%3E%3Cpath fill='%23000' d='M12 3h10v1h-10zM10 4h1v1h-1zM22 4h2v1h-2zM24 5h1v1h-1zM7 7h1v1h-1zM25 7h1v1h-1zM6 9h1v1h-1zM26 9h1v1h-1zM6 10h1v1h-1zM26 10h1v1h-1zM5 12h1v1h-1zM27 12h1v1h-1zM5 13h1v1h-1zM27 13h1v1h-1zM4 15h1v1h-1zM28 15h1v1h-1zM4 16h1v1h-1zM28 16h1v1h-1zM3 18h1v1h-1zM29 18h1v1h-1zM3 19h1v1h-1zM29 19h1v1h-1zM2 21h1v1h-1zM30 21h1v1h-1zM2 22h1v1h-1zM30 22h1v1h-1zM0 23h33v1h-33z'/%3E%3Cpath fill='%23bbb' d='M11 4h1v1h-1zM21 4h1v1h-1zM9 5h1v1h-1zM8 6h1v1h-1zM23 6h1v1h-1zM7 8h1v1h-1zM24 8h1v1h-1zM6 11h1v1h-1zM25 11h1v1h-1zM5 14h1v1h-1zM26 14h1v1h-1zM4 17h1v1h-1zM27 17h1v1h-1zM3 20h1v1h-1zM28 20h1v1h-1z'/%3E%3Cpath fill='%23ccc' d='M12 4h9v1h-9zM10 5h1v1h-1zM11 6h12v1h-12zM8 7h1v1h-1zM10 7h13v1h-13zM9 8h15v1h-15zM7 9h1v1h-1zM9 9h15v1h-15zM7 10h1v1h-1zM9 10h15v1h-15zM8 11h17v1h-17zM6 12h1v1h-1zM8 12h17v1h-17zM6 13h1v1h-1zM8 13h17v1h-17zM7 14h19v1h-19zM5 15h1v1h-1zM7 15h19v1h-19zM5 16h1v1h-1zM7 16h19v1h-19zM6 17h21v1h-21zM4 18h1v1h-1zM6 18h21v1h-21zM4 19h1v1h-1zM6 19h21v1h-21zM5 20h23v1h-23zM3 21h1v1h-1zM5 21h23v1h-23zM3 22h1v1h-1zM5 22h23v1h-23z'/%3E%3Cpath fill='%23ddd' d='M11 5h12v1h-12zM9 6h2v1h-2zM9 7h1v1h-1zM23 7h1v1h-1zM8 8h1v1h-1zM8 9h1v1h-1zM24 9h1v1h-1zM8 10h1v1h-1zM24 10h1v1h-1zM7 11h1v1h-1zM7 12h1v1h-1zM25 12h1v1h-1zM7 13h1v1h-1zM25 13h1v1h-1zM6 14h1v1h-1zM6 15h1v1h-1zM26 15h1v1h-1zM6 16h1v1h-1zM26 16h1v1h-1zM5 17h1v1h-1zM5 18h1v1h-1zM27 18h1v1h-1zM5 19h1v1h-1zM27 19h1v1h-1zM4 20h1v1h-1zM4 21h1v1h-1zM28 21h1v1h-1zM4 22h1v1h-1zM28 22h1v1h-1z'/%3E%3Cpath fill='%23888' d='M23 5h1v1h-1zM24 7h1v1h-1zM25 9h1v1h-1zM25 10h1v1h-1zM26 12h1v1h-1zM26 13h1v1h-1zM27 15h1v1h-1zM27 16h1v1h-1zM28 18h1v1h-1zM28 19h1v1h-1zM29 21h1v1h-1zM29 22h1v1h-1z'/%3E%3Cpath fill='%23444' d='M24 6h1v1h-1zM25 8h1v1h-1zM26 11h1v1h-1zM27 14h1v1h-1zM28 17h1v1h-1zM29 20h1v1h-1z'/%3E%3C/svg%3E");
3698
+ --clio-art-p-tab-pressed: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='24' shape-rendering='crispEdges'%3E%3Cpath fill='%23222' d='M11 3h1v1h-1zM9 4h1v1h-1zM8 5h1v1h-1zM7 6h1v1h-1zM25 6h1v1h-1zM6 8h1v1h-1zM26 8h1v1h-1zM5 11h1v1h-1zM27 11h1v1h-1zM4 14h1v1h-1zM28 14h1v1h-1zM3 17h1v1h-1zM29 17h1v1h-1zM2 20h1v1h-1zM30 20h1v1h-1z'/%3E%3Cpath fill='%23000' d='M12 3h10v1h-10zM10 4h1v1h-1zM22 4h2v1h-2zM24 5h1v1h-1zM7 7h1v1h-1zM25 7h1v1h-1zM6 9h1v1h-1zM26 9h1v1h-1zM6 10h1v1h-1zM26 10h1v1h-1zM5 12h1v1h-1zM27 12h1v1h-1zM5 13h1v1h-1zM27 13h1v1h-1zM4 15h1v1h-1zM28 15h1v1h-1zM4 16h1v1h-1zM28 16h1v1h-1zM3 18h1v1h-1zM29 18h1v1h-1zM3 19h1v1h-1zM29 19h1v1h-1zM2 21h1v1h-1zM30 21h1v1h-1zM2 22h1v1h-1zM30 22h1v1h-1zM0 23h33v1h-33z'/%3E%3Cpath fill='%23bbb' d='M11 4h1v1h-1zM21 4h1v1h-1zM9 5h1v1h-1zM8 6h1v1h-1zM23 6h1v1h-1zM7 8h1v1h-1zM24 8h1v1h-1zM6 11h1v1h-1zM25 11h1v1h-1zM5 14h1v1h-1zM26 14h1v1h-1zM4 17h1v1h-1zM27 17h1v1h-1zM3 20h1v1h-1zM28 20h1v1h-1z'/%3E%3Cpath fill='%23ccc' d='M12 4h9v1h-9zM10 5h1v1h-1zM8 7h1v1h-1zM7 9h1v1h-1zM7 10h1v1h-1zM6 12h1v1h-1zM6 13h1v1h-1zM5 15h1v1h-1zM5 16h1v1h-1zM4 18h1v1h-1zM4 19h1v1h-1zM3 21h1v1h-1zM3 22h1v1h-1z'/%3E%3Cpath fill='%23888' d='M11 5h11v1h-11zM23 5h1v1h-1zM9 6h2v1h-2zM9 7h1v1h-1zM24 7h1v1h-1zM8 8h1v1h-1zM8 9h1v1h-1zM25 9h1v1h-1zM8 10h1v1h-1zM25 10h1v1h-1zM7 11h1v1h-1zM7 12h1v1h-1zM26 12h1v1h-1zM7 13h1v1h-1zM26 13h1v1h-1zM6 14h1v1h-1zM6 15h1v1h-1zM27 15h1v1h-1zM6 16h1v1h-1zM27 16h1v1h-1zM5 17h1v1h-1zM5 18h1v1h-1zM28 18h1v1h-1zM5 19h1v1h-1zM28 19h1v1h-1zM4 20h1v1h-1zM4 21h1v1h-1zM29 21h1v1h-1zM4 22h1v1h-1zM29 22h1v1h-1z'/%3E%3Cpath fill='%23ddd' d='M22 5h1v1h-1zM23 7h1v1h-1zM24 9h1v1h-1zM24 10h1v1h-1zM25 12h1v1h-1zM25 13h1v1h-1zM26 15h1v1h-1zM26 16h1v1h-1zM27 18h1v1h-1zM27 19h1v1h-1zM28 21h1v1h-1zM28 22h1v1h-1z'/%3E%3Cpath fill='%23666' d='M11 6h12v1h-12zM10 7h13v1h-13zM9 8h15v1h-15zM9 9h15v1h-15zM9 10h15v1h-15zM8 11h17v1h-17zM8 12h17v1h-17zM8 13h17v1h-17zM7 14h19v1h-19zM7 15h19v1h-19zM7 16h19v1h-19zM6 17h21v1h-21zM6 18h21v1h-21zM6 19h21v1h-21zM5 20h23v1h-23zM5 21h23v1h-23zM5 22h23v1h-23z'/%3E%3Cpath fill='%23444' d='M24 6h1v1h-1zM25 8h1v1h-1zM26 11h1v1h-1zM27 14h1v1h-1zM28 17h1v1h-1zM29 20h1v1h-1z'/%3E%3C/svg%3E");
3699
+
3700
+ color: #000000;
3701
+ /* Measured from Mac OS 9.0 frames by tooling/p9-art.py. */
3702
+ --clio-art-p9-check: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAAGFBMVEUAAAAAAABVVVV3d3eIiIiqqqrd3d3///8DgOpFAAAAAXRSTlMAQObYZgAAAEBJREFUeJwVxLENgDAQBMH9k4lxQAPvSuiKtr4iRAUW+QVGTDBxAautFyyA+nfIRaU2WynOGl0cSkSMTpvPfvMB4jgPBUEhtgkAAAAASUVORK5CYII=");
3703
+ --clio-art-p9-check-overhang: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAEAgMAAADZgQaqAAAADFBMVEUAAAAAAAB3d3eqqqoo0Gg2AAAAAXRSTlMAQObYZgAAABBJREFUeJxjcGDYwCTAwAAABXABA8z2jo8AAAAASUVORK5CYII=");
3704
+ --clio-art-p9-radio-on: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAIVBMVEUAAAAAAAAiIiJERERVVVV3d3eIiIiZmZm7u7vd3d3///9FvHqFAAAAAXRSTlMAQObYZgAAAFlJREFUeJwVwUERQEAUgOH/vdlxcni7W8CSQBYh5HBy0kEADeigAQqYoQDG9wEpgJCinavTmKTa9fXLbIWWOYyN3oA8ys/UDCTolkE3OKz1dugzme8voI7wAZyaEH+rqNVXAAAAAElFTkSuQmCC");
3705
+ --clio-art-p9-radio: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAG1BMVEUAAAAAAABERERVVVWIiIiqqqq7u7vd3d3///9N7yqcAAAAAXRSTlMAQObYZgAAAFpJREFUeJwlzLENQEAYBeDn5RJRuZwJiI2IOZTKW0FnB7OICbDC61x1v8I3wAegDYBDM9n+sBjXMHiyigs9+y2V6KgYZxmRSjOwxiwVvF4zu5lPSXJ2ZFzCn32EjiE9A/VQnAAAAABJRU5ErkJggg==");
3706
+ --clio-art-p9-radio-pressed: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAIVBMVEUAAAAAAAAiIiJERERVVVVmZmZ3d3eIiIiZmZm7u7v////rjZGwAAAAAXRSTlMAQObYZgAAAFdJREFUeJwVxKsRgDAURcFz34B/iUaQoQE0ilKogUHREyVQAxKZFnBRfIYVC6QI+n+OymIIyvZK8lZdCkGNXapHfwz3RZiL0kfLwLyZ3CmT3bvDKhhO+ABY6xACXUidtgAAAABJRU5ErkJggg==");
3707
+ --clio-art-p9-checkbox-pressed: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAElBMVEUAAAAAAABVVVV3d3eZmZn///8vNloyAAAAAXRSTlMAQObYZgAAADhJREFUeJxFibENACAMwxzUGegH/f8MxFkdEHQgi2VHzp1pAsO42ttrfLQoW4WM+lYhp8kFW44lHI3DBiNDd4iSAAAAAElFTkSuQmCC");
3708
+ --clio-art-p9-box-face: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAG1BMVEUAAACIiIiZmZmqqqq7u7vMzMzd3d3u7u7///8xpbC+AAAAAXRSTlMAQObYZgAAAClJREFUeJxjbL3AwPCb5exFQcHTTAwCAgIMTIyMjIwMuNgsfw4wMDAAAAO8B0nHBJxRAAAAAElFTkSuQmCC");
3709
+ --clio-art-p9-progress-pole: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAKBAMAAABPkMOvAAAAKlBMVEUAAAAAAFUAAIgzM5lVVVVmZsx3d3eZmZmZmf+qqqq7u7vMzP/d3d3///+RIHmxAAAAAXRSTlMAQObYZgAAAFFJREFUeJwlyrEJgwAQQNF3ciNYiziBIKQ2U7lTpnAAAy4QcYOAtQbRFK/5/GhwyefM1pKPDR3x+q0UtfhY7ism+0j2ufBGFYN/yi8uUbYcMycurhMrVyrlPQAAAABJRU5ErkJggg==");
3710
+ --clio-art-p9-submenu: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAALAQMAAABmnG7VAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAAB9JREFUeJxjaGA4wPCA4QPDD4Y/TH+YfjB9YHrAdAAAZSIJk3jnGdQAAAAASUVORK5CYII=");
3711
+ --clio-art-p9-submenu-on: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAALAQMAAABmnG7VAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAB9JREFUeJxjaGA4wPCA4QPDD4Y/TH+YfjB9YHrAdAAAZSIJk3jnGdQAAAAASUVORK5CYII=");
3712
+ --clio-art-p9-dropdown: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKAQMAAABCAtZOAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABlJREFUeJxjEGDSYHJh+McAAv8YahgsGAQAHygDQTD2iPAAAAAASUVORK5CYII=");
3713
+ --clio-art-p9-dropdown-off: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKAQMAAABCAtZOAAAABlBMVEUAAACIiIhaeOqmAAAAAXRSTlMAQObYZgAAABlJREFUeJxjEGDSYHJh+McAAv8YahgsGAQAHygDQTD2iPAAAAAASUVORK5CYII=");
3714
+ --clio-art-p9-menucheck: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAATUlEQVR42o3MwQ2AIBAEwIkdaC2UYAsWZw2UIjXQCn4gIcSA+7ydPeYJuGFboAfH6lNB7I8nrg+UxnWqRehQxj7CWMsyQy35D1LLOEMvsWESqM0p+dQAAAAASUVORK5CYII="); /* 10x8 */
3715
+ --clio-art-p9-popup-open-arrows: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAASBAMAAABLIvhaAAAAGFBMVEUAAAAAAABERERVVVVmZmZ3d3eIiIj////aSdSVAAAAAXRSTlMAQObYZgAAAFdJREFUeJxVjtENgDAIRF8LC7iCE3QCB3YXk07iBiRGaKmS+3i54whlZ8yt26ByLKTOnMCWKJLYwq4gLlCw61OLUZAGb1DBXLHQ6RPNzai5+buwPkvkfAD7IAw5cOa/LwAAAABJRU5ErkJggg=="); /* 19x18 */
3716
+ }
3717
+
3718
+ /* ---- Window ---------------------------------------------------------------- */
3719
+ /* The strip's inner edge below the title bar: #999 on the left, white on the
3720
+ right and bottom (GUIdebook Appearance window, x=4 and x=width-5). */
3721
+ :root .window:not(.inactive) {
3722
+ background:
3723
+ var(--clio-p9-bevel),
3724
+ linear-gradient(#999999, #999999) 3px 19px / 1px calc(100% - 22px) no-repeat,
3725
+ linear-gradient(#ffffff, #ffffff) right 3px top 20px / 1px calc(100% - 23px) no-repeat,
3726
+ linear-gradient(#ffffff, #ffffff) left 3px bottom 3px / calc(100% - 6px) 1px no-repeat,
3727
+ var(--clio-window-bg);
3728
+ }
3729
+
3730
+ :root .window-pane {
3731
+ border: 1px solid #000000;
3732
+ background: var(--clio-pane-bg);
3733
+ }
3734
+
3735
+ :root .window > .title-bar + .window-pane,
3736
+ :root .window > .details-bar + .window-pane {
3737
+ border-top: 0;
3738
+ }
3739
+
3740
+ :root .window > .details-bar {
3741
+ border-left: 1px solid #000000;
3742
+ border-right: 1px solid #000000;
3743
+ }
3744
+
3745
+ /* The ridged bar. Its covers read the slot sizes the .title-bar itself
3746
+ computes, so this is a rule, not a token. */
3747
+ :root .title-bar {
3748
+ /* Six ridges: white lines, and #777 lines one pixel to their right (the
3749
+ ridge's shade), between the box slots (Mac OS 9.0, both ends measured). */
3750
+ --clio-tb-ridges: calc(100% - var(--clio-tb-close) - var(--clio-tb-zoom) - var(--clio-tb-shade) - 1px);
3751
+ /* The ridges are 12px tiles over an opaque bar: a hard stop to transparent in a
3752
+ covering layer leaves WebKit's covering rows a hair translucent (±1 per channel). */
3753
+ background:
3754
+ repeating-linear-gradient(to bottom, #ffffff 0 1px, transparent 1px 2px) var(--clio-tb-close) 1px / var(--clio-tb-ridges) 12px no-repeat,
3755
+ repeating-linear-gradient(to bottom, transparent 0 1px, #777777 1px 2px) calc(var(--clio-tb-close) + 1px) 1px / var(--clio-tb-ridges) 12px no-repeat,
3756
+ linear-gradient(to bottom, #cccccc 0 17px, #999999 17px 18px) 0 0 / 100% 18px no-repeat,
3757
+ #cccccc;
3758
+ }
3759
+
3760
+ :root .window.inactive > .title-bar,
3761
+ :root .inactive-title-bar {
3762
+ background: var(--clio-titlebar-inactive-bg);
3763
+ }
3764
+
3765
+ /* The title is cut out of the ridges in the frame grey, drawn wide. */
3766
+ :root .title-bar > :is(.title, h1, h2, h3) {
3767
+ /* Mac OS 9.0: the cut-out spans the ridges, 4px before the title and 3px
3768
+ after it, and is centred 1px left of the bar's middle; Charcoal sits one
3769
+ row low in it. */
3770
+ padding: 1px 3px 0 4px;
3771
+ transform: translateX(-1px);
3772
+ /* The ridge's #777 lines are its white lines one pixel to the right, and so
3773
+ is their cut: show them in the cut-out's first column, cover them one
3774
+ column past its last. */
3775
+ background:
3776
+ repeating-linear-gradient(to bottom, transparent 0 1px, #777777 1px 2px) 0 0 / 1px 12px no-repeat,
3777
+ #cccccc;
3778
+ overflow: clip; /* still truncates with an ellipsis */
3779
+ overflow-clip-margin: 1px; /* but lets the column past the end show */
3780
+ }
3781
+
3782
+ /* The close, zoom and collapse boxes: an 11px bevelled square sunk into the
3783
+ ridges, no paper isolation. */
3784
+ :root .title-bar > :is(button, .close, .close-box, .resize, .resize-box, .zoom, .shade, .shade-box, .collapse) {
3785
+ margin-top: 1px;
3786
+ border-color: #222222;
3787
+ background: var(--clio-art-p9-box-face) 0 0 / 9px 9px no-repeat;
3788
+ box-shadow:
3789
+ -1px -1px 0 #888888,
3790
+ -1px 0 0 #888888,
3791
+ 0 -1px 0 #888888,
3792
+ 1px 1px 0 #ffffff,
3793
+ 1px 0 0 #ffffff,
3794
+ 0 1px 0 #ffffff;
3795
+ }
3796
+
3797
+ :root .title-bar > :is(button, .close, .close-box, .resize, .resize-box, .zoom, .shade, .shade-box, .collapse):is(:active:where(:not([data-clio-off])), .active) {
3798
+ background: linear-gradient(to bottom right, #444444, #bbbbbb);
3799
+ box-shadow: -1px -1px 0 #888888, 1px 1px 0 #ffffff, inset -1px -1px 0 #999999;
3800
+ }
3801
+
3802
+ /* Zoom: a six-pixel lower-left corner inside the frame. */
3803
+ :root .title-bar > :is(.resize, .resize-box, .zoom)::before {
3804
+ top: 0;
3805
+ left: 0;
3806
+ width: 6px;
3807
+ height: 6px;
3808
+ border: 0;
3809
+ background:
3810
+ linear-gradient(#222222, #222222) right top / 1px 6px no-repeat,
3811
+ linear-gradient(#222222, #222222) left bottom / 6px 1px no-repeat;
3812
+ opacity: 1;
3813
+ }
3814
+
3815
+ /* WindowShade: two nine-pixel rules. */
3816
+ :root .title-bar > :is(.shade, .shade-box, .collapse)::before {
3817
+ content: "";
3818
+ position: absolute;
3819
+ top: 3px;
3820
+ left: 0;
3821
+ width: 9px;
3822
+ height: 3px;
3823
+ background:
3824
+ linear-gradient(#222222, #222222) left top / 9px 1px no-repeat,
3825
+ linear-gradient(#222222, #222222) left bottom / 9px 1px no-repeat;
3826
+ }
3827
+
3828
+ /* Background window: flat grey, #555 frame, controls erased, title kept. */
3829
+ :root .window.inactive {
3830
+ --clio-button-shadow: 0 0 0 0 transparent;
3831
+ --clio-field-shadow: none;
3832
+ --clio-check-shadow: none;
3833
+ border-color: #555555;
3834
+ background: #dddddd;
3835
+ box-shadow: 1px 1px 0 #555555; /* flat: no light or shade inside (Mac OS 9.0 Finder, behind Appearance) */
3836
+ color: #555555;
3837
+ }
3838
+
3839
+ :root .window.inactive > .title-bar,
3840
+ :root .inactive-title-bar {
3841
+ border-bottom-color: #555555;
3842
+ --clio-title-bg: #dddddd;
3843
+ }
3844
+
3845
+ :root .window.inactive > .title-bar > :is(.title, h1, h2, h3),
3846
+ :root .inactive-title-bar > :is(.title, h1, h2, h3) {
3847
+ background: #dddddd;
3848
+ }
3849
+
3850
+ /* ---- Default button ring: 1px black, a #aaa bevel band, 1px gap. -------- */
3851
+ :root :is(.default, .btn-default) {
3852
+ position: relative;
3853
+ box-shadow: var(--clio-button-shadow);
3854
+ }
3855
+
3856
+ :root :is(.default, .btn-default):not(:disabled, .disabled):is(:active:where(:not([data-clio-off])), .active) {
3857
+ box-shadow: var(--clio-button-active-shadow);
3858
+ }
3859
+
3860
+ :root :is(.default, .btn-default)::before {
3861
+ content: "";
3862
+ position: absolute;
3863
+ border-width: 1px; /* longhands: the shorthand would reset the ring, which is a border-image */
3864
+ border-style: solid;
3865
+ border-color: transparent;
3866
+ inset: -4px;
3867
+ border-radius: 0;
3868
+ box-shadow: none;
3869
+ pointer-events: none;
3870
+ }
3871
+
3872
+ :root :is(.default, .btn-default):is(:disabled, .disabled)::before {
3873
+ box-shadow: 0 0 0 1px #888888;
3874
+ }
3875
+
3876
+ :root :is(button, .btn, .btn-default, input[type="button"], input[type="submit"], input[type="reset"]):not(.icon, [role="tab"], [role="menuitem"], .title-bar > *, .rounded-title > *, .control-strip *, .disclosure, .little-arrows > *, .help-button):is(:disabled, .disabled) {
3877
+ background: transparent;
3878
+ box-shadow: none;
3879
+ border-image: var(--clio-button-frame-disabled) var(--clio-button-frame-slice) fill / calc(var(--clio-button-frame-slice) * 1px) stretch;
3880
+ }
3881
+
3882
+ /* ---- Radio buttons: drawn, not cut from a screenshot ------------------------ */
3883
+ /* Check box mark: inside the frame, plus the two columns that overhang it. */
3884
+ :root input[type="checkbox"]:checked::after {
3885
+ content: "";
3886
+ position: absolute;
3887
+ top: 0;
3888
+ right: -3px;
3889
+ width: 2px;
3890
+ height: 4px;
3891
+ background: var(--clio-art-p9-check-overhang) 0 0 / 2px 4px no-repeat;
3892
+ }
3893
+
3894
+ /* ---- Radio buttons: Mac OS 9's shaded ball (pressed states drawn here). ---- */
3895
+ :root input[type="radio"] {
3896
+ border: 0;
3897
+ border-radius: 0;
3898
+ background: var(--clio-art-p9-radio) 0 0 / 12px 12px no-repeat;
3899
+ box-shadow: none;
3900
+ }
3901
+
3902
+ :root input[type="radio"]:checked {
3903
+ background: var(--clio-art-p9-radio-on) 0 0 / 12px 12px no-repeat;
3904
+ }
3905
+
3906
+ :root input[type="radio"]:not(:disabled):active:where(:not([data-clio-off])) {
3907
+ background: var(--clio-art-p9-radio-pressed) 0 0 / 12px 12px no-repeat;
3908
+ }
3909
+
3910
+ /* Held while on: not captured; the on ball stays (inferred). */
3911
+ :root input[type="radio"]:checked:not(:disabled):active:where(:not([data-clio-off])) {
3912
+ background: var(--clio-art-p9-radio-on) 0 0 / 12px 12px no-repeat;
3913
+ }
3914
+
3915
+ /* Held while checked: the mark over the held box (inferred; only the empty
3916
+ box was captured held). */
3917
+ :root input[type="checkbox"]:checked:not(:disabled):active:where(:not([data-clio-off])) {
3918
+ background:
3919
+ var(--clio-art-p9-check) 0 0 / 10px 10px no-repeat padding-box,
3920
+ var(--clio-art-p9-checkbox-pressed) -1px -1px / 12px 12px no-repeat;
3921
+ }
3922
+
3923
+ :root input[type="checkbox"]:not(:disabled):active:where(:not([data-clio-off])) {
3924
+ border-color: transparent;
3925
+ background: var(--clio-art-p9-checkbox-pressed) -1px -1px / 12px 12px no-repeat;
3926
+ box-shadow: none;
3927
+ }
3928
+
3929
+ :root :is(input[type="checkbox"], input[type="radio"]):disabled {
3930
+ border-color: #888888;
3931
+ opacity: 0.6;
3932
+ }
3933
+
3934
+ /* ---- Menus ------------------------------------------------------------------- */
3935
+ :root :is(.menu-bar, [role="menubar"], [role="menu-bar"]) > li > :is(button, a, span) {
3936
+ font-weight: 700;
3937
+ }
3938
+
3939
+ :root :is(.menu, [role="menu"]) > li:is(.checked, [aria-checked="true"])::before,
3940
+ :root :is(.menu, [role="menu"]) > li > :is([aria-checked="true"], .checked)::before {
3941
+ left: 8px; /* the art's first column is the glyph's (it used to start a column early) */
3942
+ width: 10px;
3943
+ height: 8px;
3944
+ margin-top: -4px;
3945
+ background: var(--clio-art-p-check) 0 0 / 10px 8px no-repeat;
3946
+ }
3947
+
3948
+ :root :is(.menu, [role="menu"]) > li:is(.checked, [aria-checked="true"]):is(:hover, :focus-within, .active):where(:not([data-clio-blink]))::before,
3949
+ :root :is(.menu, [role="menu"]) > li > :is([aria-checked="true"], .checked):is(:hover, :focus-visible, .active):where(:not([data-clio-blink]))::before {
3950
+ filter: invert(1);
3951
+ }
3952
+
3953
+ /* The same check mark in an open pop-up menu drawn by the browser (base-select). */
3954
+ @supports (appearance: base-select) {
3955
+ :root select option::checkmark {
3956
+ left: 8px;
3957
+ width: 10px;
3958
+ background: var(--clio-art-p-check) 0 0 / 10px 8px no-repeat;
3959
+ }
3960
+
3961
+ :root select option:is(:hover, :focus-visible)::checkmark {
3962
+ filter: invert(1);
3963
+ }
3964
+ }
3965
+
3966
+ :root :is(.menu, [role="menu"]) > li:has(> :is(.menu, ul[role="menu"]))::after,
3967
+ :root :is(.menu, [role="menu"]) > li > [aria-haspopup="true"]::after {
3968
+ background-image: var(--clio-art-p-submenu);
3969
+ }
3970
+
3971
+ :root :is(.menu, [role="menu"]) > li:has(> :is(.menu, ul[role="menu"])):is(:hover, :focus-within, .active):where(:not([data-clio-blink]))::after {
3972
+ background-image: var(--clio-art-p-submenu-on);
3973
+ }
3974
+
3975
+ :root :is(.menu, [role="menu"]) > li.divider {
3976
+ border-bottom: 0;
3977
+ box-shadow: inset 0 -2px 0 #dddddd, inset 0 -3px 0 #ffffff, inset 0 -4px 0 #888888;
3978
+ }
3979
+
3980
+ /* ---- Tabs: drawn from the measured Mac OS 9 tab (tooling/tab-art.py) ------ */
3981
+ :root :is([role="tablist"], .tabs) {
3982
+ gap: 0;
3983
+ padding: 0 4px;
3984
+ }
3985
+
3986
+ :root :is([role="tablist"], .tabs) > :is([role="tab"], li, button) {
3987
+ min-width: 48px;
3988
+ height: 24px;
3989
+ min-height: 0;
3990
+ margin: 0 -3px -1px 0;
3991
+ padding: 3px 0 0;
3992
+ border-style: solid;
3993
+ border-width: 0 16px;
3994
+ border-color: transparent;
3995
+ border-radius: 0;
3996
+ border-image: var(--clio-art-p-tab) 0 16 fill / 0 16px stretch;
3997
+ background: transparent;
3998
+ box-shadow: none;
3999
+ font-weight: 700;
4000
+ line-height: 18px;
4001
+ }
4002
+
4003
+ :root :is([role="tablist"], .tabs) > :is([role="tab"], li, button):not(:disabled):active:where(:not([data-clio-off])) {
4004
+ border-image-source: var(--clio-art-p-tab-pressed);
4005
+ background: transparent;
4006
+ color: #ffffff;
4007
+ }
4008
+
4009
+ :root :is([role="tablist"], .tabs) > :is([role="tab"], li, button):is([aria-selected="true"], .active) {
4010
+ z-index: 1;
4011
+ padding-top: 0;
4012
+ border-image-source: var(--clio-art-p-tab-selected);
4013
+ background: transparent;
4014
+ color: #000000;
4015
+ }
4016
+
4017
+ :root :is([role="tabpanel"], .tab-panel) {
4018
+ border-top: 0;
4019
+ box-shadow: inset 1px 0 0 #ffffff, inset -1px -1px 0 #888888;
1928
4020
  }
1929
4021
 
1930
- :where(.control-strip)[data-edge="right"]::before,
1931
- :where(.control-strip)[data-edge="right"] > .control-strip-handle {
1932
- transform: scaleX(-1);
4022
+ /* ---- Scroll arrow art sits on the bevelled box ---------------------------- */
4023
+ :root :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:horizontal {
4024
+ background-position: 0 1px, 0 0; /* the vertical boxes' art one pixel to the right, the horizontal one pixel down */
1933
4025
  }
1934
4026
 
1935
- :where(.control-strip) > :focus-visible,
1936
- :where(.control-strip-module):focus-visible {
1937
- outline: var(--clio-focus-outline);
1938
- outline-offset: -3px;
4027
+ :root :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-button {
4028
+ background-position: 0 1px, 0 0; /* the vertical boxes' art one pixel to the right, the horizontal one pixel down */
1939
4029
  }
1940
4030
 
1941
- /* Mac OS 8/9 Platinum. Applies inside any element with data-era="platinum"
1942
- (put it on <html> for a whole page). clio.platinum.css is a build of this
1943
- same file with Platinum as the page default.
1944
- Values: AI System 6's Platinum tables, each tied to a Mac OS 9.0 capture
1945
- (GUIdebook, Infinite Mac). P-numbers in comments are AI System 6's patch
1946
- ids; see EVIDENCE.md. */
1947
- :root {
1948
- --clio-ink: #000000;
1949
- --clio-paper: #dddddd;
1950
- --clio-face: #dddddd;
1951
- --clio-disabled: #6f6f6f;
1952
- --clio-disabled-dither: none;
1953
- /* Push button, disabled button and default ring: the real pixel frames
1954
- (tooling/frame-art.py: Mac OS 9.0 Appearance and GUIdebook's Mac OS 9.0). */
1955
- --clio-button-frame: var(--clio-art-frame-p9-button);
1956
- --clio-button-frame-held: var(--clio-art-frame-p9-button-held);
1957
- --clio-button-frame-disabled: var(--clio-art-frame-p9-button-disabled);
1958
- --clio-ring-frame: var(--clio-art-frame-p9-ring);
1959
- --clio-ring-frame-slice: 6;
1960
- --clio-disabled-fill: currentcolor;
1961
- --clio-selection-bg: #ccccff;
1962
- --clio-selection-fg: #000000;
1963
-
1964
- /* Charcoal if the visitor has it, else Clio Sans '97 (Charcoal 12 rebuilt
1965
- from Mac OS 9.0), drawn without smoothing like the bitmap it is; Asap
1966
- (OFL) at the widths AI System 6 measured against Charcoal as the last
1967
- fallback; Geneva for text on a Mac. */
1968
- --clio-font-chrome: Charcoal, "Charcoal CY", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
1969
- --clio-font-display: Charcoal, "Charcoal CY", "Clio Sans '97 Display", "Clio Asap", "Helvetica Neue", Arial, sans-serif;
1970
- --clio-font-window-title: Charcoal, "Charcoal CY", "Clio Sans '97 Title Exact", "Clio Sans '97 Title", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
1971
- --clio-font-button: Charcoal, "Charcoal CY", "Clio Sans '97 Exact", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
1972
- --clio-font-text: Geneva, "Clio Asap", "Helvetica Neue", Arial, sans-serif;
1973
- --clio-font-size: 12px;
1974
- --clio-font-smoothing: none;
1975
- --clio-text-smoothing: auto;
1976
- --clio-font-small: var(--clio-font-text);
1977
- --clio-font-size-small: 10px;
1978
- --clio-chrome-weight: 700;
1979
- --clio-font-stretch-text: 113%;
1980
- --clio-font-stretch-title: 123%;
4031
+ :root :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button,
4032
+ :root:is(html.clio-scrollbars)::-webkit-scrollbar-button {
4033
+ background-position: 1px 0, 0 0;
4034
+ background-size: 14px 14px, 100% 100%;
4035
+ }
1981
4036
 
1982
- --clio-border: 1px solid #000000;
1983
- --clio-control-height: 20px;
1984
- --clio-field-height: 22px;
1985
- --clio-focus-outline: 2px solid #6666cc;
1986
- --clio-focus-offset: 0px;
4037
+ :root :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb > .clio-sb-button {
4038
+ background-position: 1px 0, 0 0;
4039
+ background-size: 14px 14px, 100% 100%;
4040
+ }
1987
4041
 
1988
- /* [I] Solid base of AI System 6's azul tile; the tile itself is not shipped. */
1989
- --clio-desktop: #4a71ab;
4042
+ :root :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:active,
4043
+ :root:is(html.clio-scrollbars)::-webkit-scrollbar-button:active {
4044
+ /* Held (Mac OS 9.0 Finder, the down arrow held; frame arrow-held): a #777
4045
+ face in --clio-scrollbar-button-bevel-on's #555 and #999 bevel. */
4046
+ background-color: #777777;
4047
+ box-shadow: none;
4048
+ }
1990
4049
 
1991
- /* P14 window frame: black line, a raised 4px strip, black content line. */
1992
- --clio-window-bg: #cccccc;
1993
- --clio-pane-bg: #dddddd;
1994
- --clio-window-border: 1px solid #000000;
1995
- /* The frame's white light and #999 shade are drawn as lines in the window's
1996
- background (below), which leave the two odd corners in the frame grey. */
1997
- --clio-window-shadow: 1px 1px 0 #000000;
1998
- /* AI System 6 pads 5px because its pane has no border; here the pane draws
1999
- the black content line itself, so the strip is 4px. */
2000
- --clio-window-padding: 2px 4px 4px;
4050
+ :root :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb > .clio-sb-button.clio-held {
4051
+ /* Held (Mac OS 9.0 Finder, the down arrow held; frame arrow-held): a #777
4052
+ face in --clio-scrollbar-button-bevel-on's #555 and #999 bevel. */
4053
+ background-color: #777777;
4054
+ box-shadow: none;
4055
+ }
2001
4056
 
2002
- /* Title bar: 19px, six white/#777 ridge pairs, covers behind the boxes. */
2003
- --clio-titlebar-height: 19px;
2004
- --clio-titlebar-margin: 0;
2005
- --clio-titlebar-padding: 1px 0;
2006
- --clio-titlebar-border: 1px solid #000000;
2007
- --clio-titlebar-row: 13px;
2008
- --clio-titlebar-slot: 16px;
2009
- --clio-titlebar-shade-slot: 16px;
2010
- --clio-shade-display: block;
2011
- --clio-titlebar-inactive-bg: #dddddd;
2012
- --clio-title-bg: #cccccc;
2013
- --clio-title-fg: #000000;
2014
- --clio-title-inactive-fg: #777777;
2015
- --clio-title-padding: 0 4px;
2016
- --clio-box-size: 11px;
2017
- --clio-box-inset: 0px;
2018
- --clio-box-isolation: 0px;
4057
+ :root :is(fieldset) > legend {
4058
+ background: var(--clio-pane-bg);
4059
+ }
2019
4060
 
2020
- /* Menu bar and menus (P21, P24) */
2021
- --clio-menubar-height: 20px;
2022
- --clio-menubar-bg: #dddddd;
2023
- --clio-menubar-border: 1px solid #000000;
2024
- --clio-menubar-shadow: inset 0 1px 0 #ffffff, inset 0 -1px 0 #999999;
2025
- --clio-menubar-padding: 0 8px;
2026
- --clio-menu-title-padding: 0 10px;
2027
- --clio-menu-title-inset: 0px;
2028
- --clio-menu-title-active-bg: #333399;
2029
- --clio-menu-title-active-fg: #ffffff;
2030
- --clio-menu-title-active-shadow: inset 0 1px 0 #6666cc, inset 0 -1px 0 #000088;
2031
- --clio-menu-bg: #dddddd;
2032
- --clio-menu-border: 1px solid #000000;
2033
- --clio-menu-border-top-width: 0;
2034
- --clio-menu-shadow: inset 1px 1px 0 #ffffff, inset -1px -1px 0 #999999, 1px 1px 0 #222222;
2035
- --clio-menu-item-height: 16px;
2036
- --clio-menu-item-padding: 0 10px 0 21px;
2037
- --clio-menu-item-weight: 600;
2038
- --clio-menu-item-active-bg: #333399;
2039
- --clio-menu-item-active-fg: #ffffff;
2040
- --clio-menu-item-active-shadow: inset 1px 0 0 #6666cc, inset -1px 0 0 #000088;
2041
- /* Separator: a 6px row, #888 on its third line and white on its fourth,
2042
- across the menu's full width (Mac OS 9.0 Finder File menu). */
2043
- --clio-menu-separator:
2044
- linear-gradient(#888888, #888888) 0 2px / 100% 1px no-repeat,
2045
- linear-gradient(#ffffff, #ffffff) 0 3px / 100% 1px no-repeat;
2046
- --clio-menu-separator-height: 6px;
4061
+ /* WebKit starts a fieldset's padding box below the whole legend (clientTop is the
4062
+ legend's height), so the dots would fill the band between the drawn top line and
4063
+ the legend's foot: the first layer covers that band with the pane in every engine. */
4064
+ :root fieldset {
4065
+ background:
4066
+ linear-gradient(var(--clio-pane-bg), var(--clio-pane-bg)) 1px 1px / calc(100% - 2px) calc(var(--clio-font-size) * 1.5) no-repeat border-box,
4067
+ linear-gradient(var(--clio-pane-bg), var(--clio-pane-bg)) 0 0 / 100% 100% no-repeat padding-box,
4068
+ var(--clio-art-p9-group-dots) 0 0 / 2px 2px fixed border-box;
4069
+ image-rendering: pixelated; /* keep the dots from blending into one grey */
4070
+ }
2047
4071
 
2048
- /* Push buttons: bevel, 3px corners (P29 pressed) */
2049
- --clio-button-bg: transparent;
2050
- --clio-button-fg: #000000;
2051
- --clio-button-border: 1px solid #000000;
2052
- --clio-button-radius: 3px;
2053
- --clio-button-shadow: none;
2054
- --clio-button-padding: 0 10px;
2055
- --clio-button-min-width: 58px;
2056
- --clio-button-weight: 700;
2057
- /* Held: the frame and its dark face cut from Mac OS 9.0 (frame-art.py). */
2058
- --clio-button-active-bg: transparent;
2059
- --clio-button-active-fg: #ffffff;
2060
- --clio-button-active-shadow: none;
2061
- --clio-button-disabled-fg: #777777;
2062
- --clio-button-disabled-border: 1px solid #888888;
4072
+ /* The title's gap opens 13px after the corner (General Controls, "Desktop"). */
4073
+ :root fieldset > legend {
4074
+ margin-left: 2px;
4075
+ }
2063
4076
 
2064
- /* Check boxes and radio buttons: the mark and both radio states are redrawn
2065
- from Mac OS 9.0's General Controls (tooling/p9-art.py). */
2066
- --clio-check-size: 12px;
2067
- /* The well's white light and #888 shade as lines that leave the odd corners
2068
- in the face (an inset shadow would also paint over the check mark). */
2069
- --clio-check-bg:
2070
- linear-gradient(#ffffff, #ffffff) 0 0 / calc(100% - 1px) 1px no-repeat padding-box,
2071
- linear-gradient(#ffffff, #ffffff) 0 0 / 1px calc(100% - 1px) no-repeat padding-box,
2072
- linear-gradient(#888888, #888888) 1px 100% / calc(100% - 1px) 1px no-repeat padding-box,
2073
- linear-gradient(#888888, #888888) 100% 1px / 1px calc(100% - 1px) no-repeat padding-box,
4077
+ /* Disabled pop-up menu: #888 frame, flat face, the #aaa divider and a grey
4078
+ arrow (Mac OS 9.0 Appearance, "Position Automatically"). Browsers also fade
4079
+ a disabled <select>; Mac OS did not. */
4080
+ :root select:disabled {
4081
+ border-color: #888888;
4082
+ background:
4083
+ var(--clio-art-p-dropdown-off) right 7px top 4px / 7px 10px no-repeat,
4084
+ linear-gradient(#aaaaaa, #aaaaaa) right 20px top 0 / 1px 100% no-repeat,
2074
4085
  #dddddd;
2075
- --clio-check-border: 1px solid #000000;
2076
- --clio-check-shadow: none;
2077
- --clio-check-mark: var(--clio-art-p9-check) 0 0 / 10px 10px no-repeat;
2078
- --clio-check-mark-origin: padding-box;
2079
- --clio-check-pressed-border-width: 1px;
4086
+ background-clip: padding-box;
4087
+ box-shadow: none;
4088
+ color: #888888;
4089
+ opacity: 1;
4090
+ border-image-source: var(--clio-art-frame-p9-popup-disabled);
4091
+ }
2080
4092
 
2081
- /* Text fields (P30) */
2082
- --clio-field-bg: #ffffff;
2083
- --clio-field-border: 1px solid #000000;
2084
- --clio-field-shadow: -1px -1px 0 #888888, 1px 1px 0 #ffffff;
2085
- --clio-field-padding: 2px 3px;
2086
- --clio-field-focus-shadow: -1px -1px 0 #888888, 1px 1px 0 #ffffff;
4093
+ /* The face stays inside the frame, so the rounded corners show what is behind. */
4094
+ :root select {
4095
+ background-clip: padding-box;
4096
+ }
2087
4097
 
2088
- /* Pop-up menus, measured from Mac OS 9.0 (Appearance tab, "Apple platinum"):
2089
- 20px, black frame, #ddd face with a white top line and #aaa foot; a #aaa
2090
- divider 20px from the right, then a raised arrow box (white left and top,
2091
- #aaa then #777 shade) with the 7x10 arrows 7px from the right, 4px down. */
2092
- --clio-popup-bg: #dddddd;
2093
- --clio-popup-border: 1px solid #000000;
2094
- --clio-popup-radius: 0;
2095
- --clio-popup-frame: var(--clio-art-frame-p9-popup); /* the real corners */
2096
- --clio-popup-shadow: none;
2097
- --clio-popup-height: 20px;
2098
- --clio-popup-padding: 0 28px 0 7px;
2099
- --clio-popup-weight: 700;
2100
- --clio-popup-arrow:
2101
- var(--clio-art-p-dropdown) right 7px top 4px / 7px 10px no-repeat,
2102
- linear-gradient(#777777, #777777) right 0 top 1px / 1px calc(100% - 1px) no-repeat,
2103
- linear-gradient(#777777, #777777) right 0 bottom 0 / 19px 1px no-repeat,
2104
- linear-gradient(#aaaaaa, #aaaaaa) right 1px top 1px / 1px calc(100% - 2px) no-repeat,
2105
- linear-gradient(#aaaaaa, #aaaaaa) right 1px bottom 1px / 17px 1px no-repeat,
2106
- linear-gradient(#bbbbbb, #bbbbbb) right 19px bottom 0 / 1px 1px no-repeat,
2107
- linear-gradient(#ffffff, #ffffff) right 18px top 1px / 1px calc(100% - 3px) no-repeat,
2108
- linear-gradient(#ffffff, #ffffff) right 2px top 1px / 17px 1px no-repeat,
2109
- linear-gradient(#aaaaaa, #aaaaaa) right 20px top 1px / 1px calc(100% - 1px) no-repeat,
2110
- linear-gradient(#ffffff, #ffffff) left 0 top 0 / calc(100% - 21px) 1px no-repeat,
2111
- linear-gradient(#aaaaaa, #aaaaaa) left 0 bottom 0 / calc(100% - 21px) 1px no-repeat;
4098
+ /* Indeterminate progress (no value): Mac OS 9's stripes, one 16px period
4099
+ repeated (Finder copy window). Static: clio.css adds no motion. */
4100
+ :root progress:indeterminate,
4101
+ :root progress:indeterminate::-webkit-progress-bar {
4102
+ background: var(--clio-art-p9-progress-pole) 0 0 / 16px 10px repeat-x;
4103
+ }
2112
4104
 
2113
- /* Scroll bars (P16, P17, P27) */
2114
- --clio-scrollbar-size: 16px;
2115
- --clio-scrollbar-track: #aaaaaa;
2116
- --clio-scrollbar-track-shadow: inset 1px 1px #777777, inset 2px 2px #888888, inset -1px -1px #cccccc, inset -2px -2px #bbbbbb;
2117
- --clio-scrollbar-thumb-bg: var(--clio-art-p-grip-v) center / 8px 8px no-repeat, #9999ff;
2118
- --clio-scrollbar-thumb-bg-horizontal: var(--clio-art-p-grip-h) center / 8px 8px no-repeat, #9999ff;
2119
- --clio-scrollbar-thumb-border: 1px solid #000000;
2120
- --clio-scrollbar-thumb-shadow: inset 1px 1px #ccccff, inset -1px -1px #6666cc;
2121
- --clio-scrollbar-button-bg: #dddddd;
2122
- --clio-scrollbar-button-shadow: inset 1px 1px #ffffff, inset -1px -1px #bbbbbb;
2123
- --clio-scrollbar-up: var(--clio-art-p-up);
2124
- --clio-scrollbar-up-on: var(--clio-art-p-up);
2125
- --clio-scrollbar-down: var(--clio-art-p-down);
2126
- --clio-scrollbar-down-on: var(--clio-art-p-down);
2127
- --clio-scrollbar-left: var(--clio-art-p-left);
2128
- --clio-scrollbar-left-on: var(--clio-art-p-left);
2129
- --clio-scrollbar-right: var(--clio-art-p-right);
2130
- --clio-scrollbar-right-on: var(--clio-art-p-right);
2131
- --clio-scrollbar-thumb-color: #9999ff;
2132
- --clio-scrollbar-track-color: #aaaaaa;
4105
+ :root .title-bar > :is(.title, h1, h2, h3)::after {
4106
+ content: "";
4107
+ position: absolute;
4108
+ top: 0;
4109
+ right: -1px;
4110
+ width: 1px;
4111
+ height: 12px;
4112
+ background: repeating-linear-gradient(to bottom, transparent 0 1px, #cccccc 1px 2px);
4113
+ }
2133
4114
 
2134
- /* Dialogs (P06) */
2135
- --clio-dialog-bg: #dddddd;
2136
- --clio-modal-border: 1px solid #000000;
2137
- --clio-modal-frame:
2138
- inset 1px 1px 0 #dddddd,
2139
- inset 2px 2px 0 #ffffff,
2140
- inset 3px 3px 0 #ffffff,
2141
- inset -1px -1px 0 #555555,
2142
- inset -2px -2px 0 #999999,
2143
- inset -3px -3px 0 #aaaaaa,
2144
- 1px 1px 0 #000000;
2145
- --clio-modal-padding: 16px 18px;
2146
- --clio-plain-dialog-border: 1px solid #000000;
2147
- --clio-plain-dialog-shadow: inset 1px 1px 0 #ffffff, inset -1px -1px 0 #999999, 1px 1px 0 #000000;
4115
+ :root .window.inactive > .title-bar > :is(.title, h1, h2, h3)::after,
4116
+ :root .inactive-title-bar > :is(.title, h1, h2, h3)::after {
4117
+ content: none;
4118
+ }
2148
4119
 
2149
- /* Bars, lists, groups, progress, tabs, icons */
2150
- --clio-details-bg: #dddddd;
2151
- --clio-details-border: 1px solid #000000;
2152
- --clio-details-shadow: inset 0 1px 0 #ffffff, inset 0 -1px 0 #aaaaaa;
2153
- --clio-details-font-size: 12px;
2154
- --clio-details-height: 20px;
2155
- --clio-details-padding: 0 8px;
2156
- --clio-scrollbar-corner: #dddddd;
2157
- --clio-list-bg: #ffffff;
2158
- --clio-list-border: 1px solid #000000;
2159
- --clio-list-shadow: -1px -1px 0 #888888, 1px 1px 0 #ffffff;
2160
- --clio-list-row: 16px;
2161
- /* Group box: a 1px line of #777 and #888 dots, the pattern aligned to the
2162
- screen (#777 where x + y is even), no light (Mac OS 9.0 General Controls). */
2163
- --clio-group-border: 1px solid transparent;
2164
- --clio-group-shadow: none;
2165
- --clio-art-p9-group-dots: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACAQMAAABIeJ9nAAAABlBMVEV3d3eIiIjxRXMlAAAADElEQVR4nGNwYHIAAAEIAIMYhovOAAAAAElFTkSuQmCC");
2166
- --clio-progress-height: 12px;
2167
- --clio-progress-bg: #bbbbbb;
2168
- --clio-progress-border: 1px solid #000000;
2169
- --clio-progress-shadow: 1px 1px #ffffff, -1px -1px #aaaaaa, inset 1px 1px #888888, inset -1px -1px #dddddd;
2170
- --clio-progress-fill: linear-gradient(to bottom, #333399 0 1px, #6666cc 1px 2px, #9999ff 2px 3px, #ccccff 3px 4px, #eeeeee 4px 5px, #ccccff 5px 6px, #9999ff 6px 7px, #6666cc 7px 8px, #333399 8px 9px, #000055 9px 10px);
2171
- --clio-tab-height: 23px;
2172
- --clio-tab-panel-bg: #eeeeee;
2173
- --clio-tab-panel-border: 1px solid #000000;
2174
- --clio-label-bg: rgba(255, 255, 255, 0.7);
2175
- --clio-label-fg: #000000;
2176
- --clio-label-selected-bg: #000000;
2177
- --clio-label-selected-fg: #ffffff;
2178
- --clio-icon-selected-filter: brightness(0.5);
4120
+ /* ---- Antialiasing as Mac OS blends it -------------------------------------
4121
+ Window titles and push button labels in their own colours on their own
4122
+ backgrounds take the exact palettes (src/00-fonts.css). */
4123
+ :root .title-bar > :is(.title, h1, h2, h3) {
4124
+ font-palette: --clio-aa-p9-title;
4125
+ }
2179
4126
 
2180
- /* Control Strip, measured from Mac OS 9.0 (npm run capture:platinum, frames
2181
- strip-expanded, strip-collapsed, strip-slider); Mac OS 8.5's is the same
2182
- under Drawing Board. 24px: 1px black lines, #c0c0c0 cells with a white
2183
- inner light, #a0a0a0 then #808080 shade; scroll cells sunken while idle. */
2184
- --clio-strip-bg: #c0c0c0;
2185
- --clio-strip-line: 1px solid #000000;
2186
- --clio-strip-cell-shadow: inset -1px -1px 0 #808080, inset -2px -2px 0 #a0a0a0, inset 1px 1px 0 #c0c0c0, inset 2px 2px 0 #ffffff;
2187
- --clio-strip-sunken-shadow: none;
2188
- --clio-strip-sunken-lines:
2189
- linear-gradient(#808080, #808080) 0 0 / calc(100% - 1px) 1px no-repeat,
2190
- linear-gradient(#808080, #808080) 0 0 / 1px calc(100% - 1px) no-repeat,
2191
- linear-gradient(#ffffff, #ffffff) 1px 100% / calc(100% - 1px) 1px no-repeat,
2192
- linear-gradient(#ffffff, #ffffff) 100% 1px / 1px calc(100% - 1px) no-repeat;
2193
- --clio-strip-pressed-bg: #808080;
2194
- --clio-strip-pressed-shadow: inset 2px 2px 0 #404040, inset -2px -2px 0 #c0c0c0;
2195
- --clio-strip-cap: var(--clio-art-p9-strip-cap);
2196
- --clio-strip-back: var(--clio-art-p9-strip-back);
2197
- --clio-strip-forward: var(--clio-art-p9-strip-forward);
2198
- --clio-strip-menu: var(--clio-art-p9-strip-menu);
2199
- --clio-strip-handle: var(--clio-art-p9-strip-handle);
2200
- --clio-strip-tab: var(--clio-art-p9-strip-tab);
4127
+ :root :is(.window.inactive > .title-bar, .inactive-title-bar) > :is(.title, h1, h2, h3) {
4128
+ font-palette: --clio-aa-p9-title-inactive;
4129
+ }
2201
4130
 
2202
- /* Art: pop-up arrow, menu check mark and submenu arrow redrawn from
2203
- Mac OS 9.0 (tooling/p9-art.py, below); scroll arrows, grips and tabs drawn
2204
- here (tabs: tooling/tab-art.py). */
2205
- --clio-art-p-dropdown: var(--clio-art-p9-dropdown);
2206
- --clio-art-p-dropdown-off: var(--clio-art-p9-dropdown-off);
2207
- --clio-art-p-check: var(--clio-art-p9-menucheck);
2208
- --clio-art-p-submenu: var(--clio-art-p9-submenu);
2209
- --clio-art-p-submenu-on: var(--clio-art-p9-submenu-on);
2210
- --clio-art-p-up: 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='M5 5h2v1h-2zM4 6h4v1h-4zM3 7h6v1h-6zM2 8h8v1h-8z'/%3E%3C/svg%3E");
2211
- --clio-art-p-up-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23888' d='M5 5h2v1h-2zM4 6h4v1h-4zM3 7h6v1h-6zM2 8h8v1h-8z'/%3E%3C/svg%3E");
2212
- --clio-art-p-down: 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 5h8v1h-8zM3 6h6v1h-6zM4 7h4v1h-4zM5 8h2v1h-2z'/%3E%3C/svg%3E");
2213
- --clio-art-p-down-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23888' d='M2 5h8v1h-8zM3 6h6v1h-6zM4 7h4v1h-4zM5 8h2v1h-2z'/%3E%3C/svg%3E");
2214
- --clio-art-p-left: 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='M5 5h1v2h-1zM6 4h1v4h-1zM7 3h1v6h-1zM8 2h1v8h-1z'/%3E%3C/svg%3E");
2215
- --clio-art-p-left-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23888' d='M5 5h1v2h-1zM6 4h1v4h-1zM7 3h1v6h-1zM8 2h1v8h-1z'/%3E%3C/svg%3E");
2216
- --clio-art-p-right: 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='M5 2h1v8h-1zM6 3h1v6h-1zM7 4h1v4h-1zM8 5h1v2h-1z'/%3E%3C/svg%3E");
2217
- --clio-art-p-right-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' shape-rendering='crispEdges'%3E%3Cpath fill='%23888' d='M5 2h1v8h-1zM6 3h1v6h-1zM7 4h1v4h-1zM8 5h1v2h-1z'/%3E%3C/svg%3E");
2218
- --clio-art-p-grip-v: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' shape-rendering='crispEdges'%3E%3Cpath fill='%23eee' d='M0 0h1v1H0zM0 2h1v1H0zM0 4h1v1H0zM0 6h1v1H0z'/%3E%3Cpath fill='%23ccf' d='M1 0h6v1H1zM1 2h6v1H1zM1 4h6v1H1zM1 6h6v1H1z'/%3E%3Cpath fill='%23339' d='M1 1h7v1H1zM1 3h7v1H1zM1 5h7v1H1zM1 7h7v1H1z'/%3E%3C/svg%3E");
2219
- --clio-art-p-grip-h: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' shape-rendering='crispEdges'%3E%3Cpath fill='%23eee' d='M0 0h1v1H0zM2 0h1v1H2zM4 0h1v1H4zM6 0h1v1H6z'/%3E%3Cpath fill='%23ccf' d='M0 1h1v6H0zM2 1h1v6H2zM4 1h1v6H4zM6 1h1v6H6z'/%3E%3Cpath fill='%23339' d='M1 1h1v7H1zM3 1h1v7H3zM5 1h1v7H5zM7 1h1v7H7z'/%3E%3C/svg%3E");
2220
- --clio-art-p-tab-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='24' shape-rendering='crispEdges'%3E%3Cpath fill='%23222' d='M11 1h1v1h-1zM9 2h1v1h-1zM8 3h1v1h-1zM7 4h1v1h-1zM25 4h1v1h-1zM6 6h1v1h-1zM26 6h1v1h-1zM5 9h1v1h-1zM27 9h1v1h-1zM4 12h1v1h-1zM28 12h1v1h-1zM3 15h1v1h-1zM29 15h1v1h-1zM2 18h1v1h-1zM30 18h1v1h-1zM1 21h1v1h-1z'/%3E%3Cpath fill='%23000' d='M12 1h10v1h-10zM10 2h1v1h-1zM22 2h2v1h-2zM24 3h1v1h-1zM7 5h1v1h-1zM25 5h1v1h-1zM6 7h1v1h-1zM26 7h1v1h-1zM6 8h1v1h-1zM26 8h1v1h-1zM5 10h1v1h-1zM27 10h1v1h-1zM5 11h1v1h-1zM27 11h1v1h-1zM4 13h1v1h-1zM28 13h1v1h-1zM4 14h1v1h-1zM28 14h1v1h-1zM3 16h1v1h-1zM29 16h1v1h-1zM3 17h1v1h-1zM29 17h1v1h-1zM2 19h1v1h-1zM30 19h1v1h-1zM2 20h1v1h-1zM30 20h1v1h-1zM0 21h1v1h-1zM31 21h2v1h-2zM0 22h2v1h-2zM31 22h2v1h-2z'/%3E%3Cpath fill='%23bbb' d='M11 2h1v1h-1zM21 2h1v1h-1zM9 3h1v1h-1zM8 4h1v1h-1zM23 4h1v1h-1zM7 6h1v1h-1zM24 6h1v1h-1zM6 9h1v1h-1zM25 9h1v1h-1zM5 12h1v1h-1zM26 12h1v1h-1zM4 15h1v1h-1zM27 15h1v1h-1zM3 18h1v1h-1zM28 18h1v1h-1zM2 21h1v1h-1zM29 21h1v1h-1zM30 22h1v1h-1z'/%3E%3Cpath fill='%23ccc' d='M12 2h9v1h-9zM10 3h1v1h-1zM8 5h1v1h-1zM7 7h1v1h-1zM7 8h1v1h-1zM6 10h1v1h-1zM6 11h1v1h-1zM5 13h1v1h-1zM5 14h1v1h-1zM4 16h1v1h-1zM4 17h1v1h-1zM3 19h1v1h-1zM3 20h1v1h-1zM2 22h1v1h-1zM0 23h3v1h-3zM30 23h3v1h-3z'/%3E%3Cpath fill='%23fff' d='M11 3h11v1h-11zM9 4h2v1h-2zM9 5h1v1h-1zM8 6h1v1h-1zM8 7h1v1h-1zM8 8h1v1h-1zM7 9h1v1h-1zM7 10h1v1h-1zM7 11h1v1h-1zM6 12h1v1h-1zM6 13h1v1h-1zM6 14h1v1h-1zM5 15h1v1h-1zM5 16h1v1h-1zM5 17h1v1h-1zM4 18h1v1h-1zM4 19h1v1h-1zM4 20h1v1h-1zM3 21h1v1h-1zM3 22h1v1h-1z'/%3E%3Cpath fill='%23ddd' d='M22 3h1v1h-1zM23 5h1v1h-1zM24 7h1v1h-1zM24 8h1v1h-1zM25 10h1v1h-1zM25 11h1v1h-1zM26 13h1v1h-1zM26 14h1v1h-1zM27 16h1v1h-1zM27 17h1v1h-1zM28 19h1v1h-1zM28 20h1v1h-1zM29 22h1v1h-1z'/%3E%3Cpath fill='%23888' d='M23 3h1v1h-1zM24 5h1v1h-1zM25 7h1v1h-1zM25 8h1v1h-1zM26 10h1v1h-1zM26 11h1v1h-1zM27 13h1v1h-1zM27 14h1v1h-1zM28 16h1v1h-1zM28 17h1v1h-1zM29 19h1v1h-1zM29 20h1v1h-1z'/%3E%3Cpath fill='%23eee' d='M11 4h12v1h-12zM10 5h13v1h-13zM9 6h15v1h-15zM9 7h15v1h-15zM9 8h15v1h-15zM8 9h17v1h-17zM8 10h17v1h-17zM8 11h17v1h-17zM7 12h19v1h-19zM7 13h19v1h-19zM7 14h19v1h-19zM6 15h21v1h-21zM6 16h21v1h-21zM6 17h21v1h-21zM5 18h23v1h-23zM5 19h23v1h-23zM5 20h23v1h-23zM4 21h25v1h-25zM4 22h25v1h-25zM3 23h27v1h-27z'/%3E%3Cpath fill='%23444' d='M24 4h1v1h-1zM25 6h1v1h-1zM26 9h1v1h-1zM27 12h1v1h-1zM28 15h1v1h-1zM29 18h1v1h-1zM30 21h1v1h-1z'/%3E%3C/svg%3E");
2221
- --clio-art-p-tab: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='24' shape-rendering='crispEdges'%3E%3Cpath fill='%23222' d='M11 3h1v1h-1zM9 4h1v1h-1zM8 5h1v1h-1zM7 6h1v1h-1zM25 6h1v1h-1zM6 8h1v1h-1zM26 8h1v1h-1zM5 11h1v1h-1zM27 11h1v1h-1zM4 14h1v1h-1zM28 14h1v1h-1zM3 17h1v1h-1zM29 17h1v1h-1zM2 20h1v1h-1zM30 20h1v1h-1z'/%3E%3Cpath fill='%23000' d='M12 3h10v1h-10zM10 4h1v1h-1zM22 4h2v1h-2zM24 5h1v1h-1zM7 7h1v1h-1zM25 7h1v1h-1zM6 9h1v1h-1zM26 9h1v1h-1zM6 10h1v1h-1zM26 10h1v1h-1zM5 12h1v1h-1zM27 12h1v1h-1zM5 13h1v1h-1zM27 13h1v1h-1zM4 15h1v1h-1zM28 15h1v1h-1zM4 16h1v1h-1zM28 16h1v1h-1zM3 18h1v1h-1zM29 18h1v1h-1zM3 19h1v1h-1zM29 19h1v1h-1zM2 21h1v1h-1zM30 21h1v1h-1zM2 22h1v1h-1zM30 22h1v1h-1zM0 23h33v1h-33z'/%3E%3Cpath fill='%23bbb' d='M11 4h1v1h-1zM21 4h1v1h-1zM9 5h1v1h-1zM8 6h1v1h-1zM23 6h1v1h-1zM7 8h1v1h-1zM24 8h1v1h-1zM6 11h1v1h-1zM25 11h1v1h-1zM5 14h1v1h-1zM26 14h1v1h-1zM4 17h1v1h-1zM27 17h1v1h-1zM3 20h1v1h-1zM28 20h1v1h-1z'/%3E%3Cpath fill='%23ccc' d='M12 4h9v1h-9zM10 5h1v1h-1zM11 6h12v1h-12zM8 7h1v1h-1zM10 7h13v1h-13zM9 8h15v1h-15zM7 9h1v1h-1zM9 9h15v1h-15zM7 10h1v1h-1zM9 10h15v1h-15zM8 11h17v1h-17zM6 12h1v1h-1zM8 12h17v1h-17zM6 13h1v1h-1zM8 13h17v1h-17zM7 14h19v1h-19zM5 15h1v1h-1zM7 15h19v1h-19zM5 16h1v1h-1zM7 16h19v1h-19zM6 17h21v1h-21zM4 18h1v1h-1zM6 18h21v1h-21zM4 19h1v1h-1zM6 19h21v1h-21zM5 20h23v1h-23zM3 21h1v1h-1zM5 21h23v1h-23zM3 22h1v1h-1zM5 22h23v1h-23z'/%3E%3Cpath fill='%23ddd' d='M11 5h12v1h-12zM9 6h2v1h-2zM9 7h1v1h-1zM23 7h1v1h-1zM8 8h1v1h-1zM8 9h1v1h-1zM24 9h1v1h-1zM8 10h1v1h-1zM24 10h1v1h-1zM7 11h1v1h-1zM7 12h1v1h-1zM25 12h1v1h-1zM7 13h1v1h-1zM25 13h1v1h-1zM6 14h1v1h-1zM6 15h1v1h-1zM26 15h1v1h-1zM6 16h1v1h-1zM26 16h1v1h-1zM5 17h1v1h-1zM5 18h1v1h-1zM27 18h1v1h-1zM5 19h1v1h-1zM27 19h1v1h-1zM4 20h1v1h-1zM4 21h1v1h-1zM28 21h1v1h-1zM4 22h1v1h-1zM28 22h1v1h-1z'/%3E%3Cpath fill='%23888' d='M23 5h1v1h-1zM24 7h1v1h-1zM25 9h1v1h-1zM25 10h1v1h-1zM26 12h1v1h-1zM26 13h1v1h-1zM27 15h1v1h-1zM27 16h1v1h-1zM28 18h1v1h-1zM28 19h1v1h-1zM29 21h1v1h-1zM29 22h1v1h-1z'/%3E%3Cpath fill='%23444' d='M24 6h1v1h-1zM25 8h1v1h-1zM26 11h1v1h-1zM27 14h1v1h-1zM28 17h1v1h-1zM29 20h1v1h-1z'/%3E%3C/svg%3E");
2222
- --clio-art-p-tab-pressed: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='33' height='24' shape-rendering='crispEdges'%3E%3Cpath fill='%23222' d='M11 3h1v1h-1zM9 4h1v1h-1zM8 5h1v1h-1zM7 6h1v1h-1zM25 6h1v1h-1zM6 8h1v1h-1zM26 8h1v1h-1zM5 11h1v1h-1zM27 11h1v1h-1zM4 14h1v1h-1zM28 14h1v1h-1zM3 17h1v1h-1zM29 17h1v1h-1zM2 20h1v1h-1zM30 20h1v1h-1z'/%3E%3Cpath fill='%23000' d='M12 3h10v1h-10zM10 4h1v1h-1zM22 4h2v1h-2zM24 5h1v1h-1zM7 7h1v1h-1zM25 7h1v1h-1zM6 9h1v1h-1zM26 9h1v1h-1zM6 10h1v1h-1zM26 10h1v1h-1zM5 12h1v1h-1zM27 12h1v1h-1zM5 13h1v1h-1zM27 13h1v1h-1zM4 15h1v1h-1zM28 15h1v1h-1zM4 16h1v1h-1zM28 16h1v1h-1zM3 18h1v1h-1zM29 18h1v1h-1zM3 19h1v1h-1zM29 19h1v1h-1zM2 21h1v1h-1zM30 21h1v1h-1zM2 22h1v1h-1zM30 22h1v1h-1zM0 23h33v1h-33z'/%3E%3Cpath fill='%23bbb' d='M11 4h1v1h-1zM21 4h1v1h-1zM9 5h1v1h-1zM8 6h1v1h-1zM23 6h1v1h-1zM7 8h1v1h-1zM24 8h1v1h-1zM6 11h1v1h-1zM25 11h1v1h-1zM5 14h1v1h-1zM26 14h1v1h-1zM4 17h1v1h-1zM27 17h1v1h-1zM3 20h1v1h-1zM28 20h1v1h-1z'/%3E%3Cpath fill='%23ccc' d='M12 4h9v1h-9zM10 5h1v1h-1zM8 7h1v1h-1zM7 9h1v1h-1zM7 10h1v1h-1zM6 12h1v1h-1zM6 13h1v1h-1zM5 15h1v1h-1zM5 16h1v1h-1zM4 18h1v1h-1zM4 19h1v1h-1zM3 21h1v1h-1zM3 22h1v1h-1z'/%3E%3Cpath fill='%23888' d='M11 5h11v1h-11zM23 5h1v1h-1zM9 6h2v1h-2zM9 7h1v1h-1zM24 7h1v1h-1zM8 8h1v1h-1zM8 9h1v1h-1zM25 9h1v1h-1zM8 10h1v1h-1zM25 10h1v1h-1zM7 11h1v1h-1zM7 12h1v1h-1zM26 12h1v1h-1zM7 13h1v1h-1zM26 13h1v1h-1zM6 14h1v1h-1zM6 15h1v1h-1zM27 15h1v1h-1zM6 16h1v1h-1zM27 16h1v1h-1zM5 17h1v1h-1zM5 18h1v1h-1zM28 18h1v1h-1zM5 19h1v1h-1zM28 19h1v1h-1zM4 20h1v1h-1zM4 21h1v1h-1zM29 21h1v1h-1zM4 22h1v1h-1zM29 22h1v1h-1z'/%3E%3Cpath fill='%23ddd' d='M22 5h1v1h-1zM23 7h1v1h-1zM24 9h1v1h-1zM24 10h1v1h-1zM25 12h1v1h-1zM25 13h1v1h-1zM26 15h1v1h-1zM26 16h1v1h-1zM27 18h1v1h-1zM27 19h1v1h-1zM28 21h1v1h-1zM28 22h1v1h-1z'/%3E%3Cpath fill='%23666' d='M11 6h12v1h-12zM10 7h13v1h-13zM9 8h15v1h-15zM9 9h15v1h-15zM9 10h15v1h-15zM8 11h17v1h-17zM8 12h17v1h-17zM8 13h17v1h-17zM7 14h19v1h-19zM7 15h19v1h-19zM7 16h19v1h-19zM6 17h21v1h-21zM6 18h21v1h-21zM6 19h21v1h-21zM5 20h23v1h-23zM5 21h23v1h-23zM5 22h23v1h-23z'/%3E%3Cpath fill='%23444' d='M24 6h1v1h-1zM25 8h1v1h-1zM26 11h1v1h-1zM27 14h1v1h-1zM28 17h1v1h-1zM29 20h1v1h-1z'/%3E%3C/svg%3E");
4131
+ :root :is(button, .btn, .btn-default, input[type="button"], input[type="submit"], input[type="reset"]):not(.icon, [role="tab"], [role="menuitem"], .title-bar > *, .rounded-title > *, .control-strip *, .disclosure, .little-arrows > *, .help-button) {
4132
+ font-family: var(--clio-font-button);
4133
+ font-palette: --clio-aa-p9-button;
4134
+ }
2223
4135
 
2224
- color: #000000;
2225
- /* Measured from Mac OS 9.0 frames by tooling/p9-art.py. */
2226
- --clio-art-p9-check: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAAGFBMVEUAAAAAAABVVVV3d3eIiIiqqqrd3d3///8DgOpFAAAAAXRSTlMAQObYZgAAAEBJREFUeJwVxLENgDAQBMH9k4lxQAPvSuiKtr4iRAUW+QVGTDBxAautFyyA+nfIRaU2WynOGl0cSkSMTpvPfvMB4jgPBUEhtgkAAAAASUVORK5CYII=");
2227
- --clio-art-p9-check-overhang: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAEAgMAAADZgQaqAAAADFBMVEUAAAAAAAB3d3eqqqoo0Gg2AAAAAXRSTlMAQObYZgAAABBJREFUeJxjcGDYwCTAwAAABXABA8z2jo8AAAAASUVORK5CYII=");
2228
- --clio-art-p9-radio-on: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAIVBMVEUAAAAAAAAiIiJERERVVVV3d3eIiIiZmZm7u7vd3d3///9FvHqFAAAAAXRSTlMAQObYZgAAAFlJREFUeJwVwUERQEAUgOH/vdlxcni7W8CSQBYh5HBy0kEADeigAQqYoQDG9wEpgJCinavTmKTa9fXLbIWWOYyN3oA8ys/UDCTolkE3OKz1dugzme8voI7wAZyaEH+rqNVXAAAAAElFTkSuQmCC");
2229
- --clio-art-p9-radio: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAG1BMVEUAAAAAAABERERVVVWIiIiqqqq7u7vd3d3///9N7yqcAAAAAXRSTlMAQObYZgAAAFpJREFUeJwlzLENQEAYBeDn5RJRuZwJiI2IOZTKW0FnB7OICbDC61x1v8I3wAegDYBDM9n+sBjXMHiyigs9+y2V6KgYZxmRSjOwxiwVvF4zu5lPSXJ2ZFzCn32EjiE9A/VQnAAAAABJRU5ErkJggg==");
2230
- --clio-art-p9-radio-pressed: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAIVBMVEUAAAAAAAAiIiJERERVVVVmZmZ3d3eIiIiZmZm7u7v////rjZGwAAAAAXRSTlMAQObYZgAAAFdJREFUeJwVxKsRgDAURcFz34B/iUaQoQE0ilKogUHREyVQAxKZFnBRfIYVC6QI+n+OymIIyvZK8lZdCkGNXapHfwz3RZiL0kfLwLyZ3CmT3bvDKhhO+ABY6xACXUidtgAAAABJRU5ErkJggg==");
2231
- --clio-art-p9-checkbox-pressed: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAElBMVEUAAAAAAABVVVV3d3eZmZn///8vNloyAAAAAXRSTlMAQObYZgAAADhJREFUeJxFibENACAMwxzUGegH/f8MxFkdEHQgi2VHzp1pAsO42ttrfLQoW4WM+lYhp8kFW44lHI3DBiNDd4iSAAAAAElFTkSuQmCC");
2232
- --clio-art-p9-box-face: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAG1BMVEUAAACIiIiZmZmqqqq7u7vMzMzd3d3u7u7///8xpbC+AAAAAXRSTlMAQObYZgAAAClJREFUeJxjbL3AwPCb5exFQcHTTAwCAgIMTIyMjIwMuNgsfw4wMDAAAAO8B0nHBJxRAAAAAElFTkSuQmCC");
2233
- --clio-art-p9-progress-pole: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAKBAMAAABPkMOvAAAAKlBMVEUAAAAAAFUAAIgzM5lVVVVmZsx3d3eZmZmZmf+qqqq7u7vMzP/d3d3///+RIHmxAAAAAXRSTlMAQObYZgAAAFFJREFUeJwlyrEJgwAQQNF3ciNYiziBIKQ2U7lTpnAAAy4QcYOAtQbRFK/5/GhwyefM1pKPDR3x+q0UtfhY7ism+0j2ufBGFYN/yi8uUbYcMycurhMrVyrlPQAAAABJRU5ErkJggg==");
2234
- --clio-art-p9-submenu: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAALAQMAAABmnG7VAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAAB9JREFUeJxjaGA4wPCA4QPDD4Y/TH+YfjB9YHrAdAAAZSIJk3jnGdQAAAAASUVORK5CYII=");
2235
- --clio-art-p9-submenu-on: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAALAQMAAABmnG7VAAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAB9JREFUeJxjaGA4wPCA4QPDD4Y/TH+YfjB9YHrAdAAAZSIJk3jnGdQAAAAASUVORK5CYII=");
2236
- --clio-art-p9-dropdown: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKAQMAAABCAtZOAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABlJREFUeJxjEGDSYHJh+McAAv8YahgsGAQAHygDQTD2iPAAAAAASUVORK5CYII=");
2237
- --clio-art-p9-dropdown-off: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKAQMAAABCAtZOAAAABlBMVEUAAACIiIhaeOqmAAAAAXRSTlMAQObYZgAAABlJREFUeJxjEGDSYHJh+McAAv8YahgsGAQAHygDQTD2iPAAAAAASUVORK5CYII=");
2238
- --clio-art-p9-menucheck: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAYAAAArzdW1AAAAP0lEQVR42mNgIAyMiFHwnxgFK2ECLgwMDKFYFJxB1nUGKmiEpOAOAwODALKilVCJ/7gUwMAdQgoYoBIrsSkAAK+iEhBS63EWAAAAAElFTkSuQmCC");
4136
+ :root :is(button, .btn, .btn-default, input[type="button"], input[type="submit"], input[type="reset"]):not(.icon, [role="tab"], [role="menuitem"], .title-bar > *, .rounded-title > *, .control-strip *, .disclosure, .little-arrows > *, .help-button):not(:disabled, .disabled):is(:active:where(:not([data-clio-off])), .active) {
4137
+ font-palette: --clio-aa-p9-button-held;
2239
4138
  }
2240
4139
 
2241
- /* ---- Window ---------------------------------------------------------------- */
2242
- /* The strip's inner edge below the title bar: #999 on the left, white on the
2243
- right and bottom (GUIdebook Appearance window, x=4 and x=width-5). */
2244
- :root .window:not(.inactive) {
4140
+ :root :is(button, .btn, .btn-default, input[type="button"], input[type="submit"], input[type="reset"]):not(.icon, [role="tab"], [role="menuitem"], .title-bar > *, .rounded-title > *, .control-strip *, .disclosure, .little-arrows > *, .help-button):is(:disabled, .disabled) {
4141
+ font-palette: --clio-aa-p9-button-disabled;
4142
+ }
4143
+
4144
+ /* ---- List view headers -----------------------------------------------------
4145
+ Measured row by row (Finder list view, Mac OS 9.0). A header: #666 above,
4146
+ white light along its top and left, #ccc, #888 shade and a #333 rule below;
4147
+ the #666 column on its left is the divider. The sorted header is sunk:
4148
+ #111 top and left, #444 right and below (#222 at the two odd corners), a
4149
+ #555 then #aaa inner bevel round #888. The sort-direction cell adds an #888
4150
+ shade on its right. */
4151
+ :root .list-view th {
2245
4152
  background:
2246
- linear-gradient(#ffffff, #ffffff) 0 0 / calc(100% - 1px) 1px no-repeat,
2247
- linear-gradient(#ffffff, #ffffff) 0 0 / 1px calc(100% - 1px) no-repeat,
2248
- linear-gradient(#999999, #999999) 1px 100% / calc(100% - 1px) 1px no-repeat,
2249
- linear-gradient(#999999, #999999) 100% 1px / 1px calc(100% - 1px) no-repeat,
2250
- linear-gradient(#999999, #999999) 3px 19px / 1px calc(100% - 22px) no-repeat,
2251
- linear-gradient(#ffffff, #ffffff) right 3px top 20px / 1px calc(100% - 23px) no-repeat,
2252
- linear-gradient(#ffffff, #ffffff) left 3px bottom 3px / calc(100% - 6px) 1px no-repeat,
2253
- var(--clio-window-bg);
4153
+ linear-gradient(#666666, #666666) 0 0 / 100% 1px no-repeat,
4154
+ linear-gradient(#666666, #666666) 0 0 / 1px calc(100% - 1px) no-repeat,
4155
+ linear-gradient(#555555, #555555) 0 100% / 1px 1px no-repeat,
4156
+ linear-gradient(#333333, #333333) 1px 100% / 100% 1px no-repeat,
4157
+ linear-gradient(#ffffff, #ffffff) 1px 1px / 100% 1px no-repeat,
4158
+ linear-gradient(#ffffff, #ffffff) 1px 1px / 1px calc(100% - 3px) no-repeat,
4159
+ linear-gradient(#888888, #888888) 2px calc(100% - 1px) / 100% 1px no-repeat,
4160
+ #cccccc;
2254
4161
  }
2255
4162
 
2256
- :root .window-pane {
2257
- border: 1px solid #000000;
2258
- background: var(--clio-pane-bg);
4163
+ :root .list-view th[aria-sort]:not([aria-sort="none"]) {
4164
+ background:
4165
+ linear-gradient(#222222, #222222) 100% 0 / 1px 1px no-repeat,
4166
+ linear-gradient(#222222, #222222) 0 100% / 1px 1px no-repeat,
4167
+ linear-gradient(#111111, #111111) 0 0 / calc(100% - 1px) 1px no-repeat,
4168
+ linear-gradient(#111111, #111111) 0 0 / 1px calc(100% - 1px) no-repeat,
4169
+ linear-gradient(#444444, #444444) 100% 1px / 1px 100% no-repeat,
4170
+ linear-gradient(#444444, #444444) 1px 100% / 100% 1px no-repeat,
4171
+ linear-gradient(#777777, #777777) calc(100% - 1px) 1px / 1px 1px no-repeat,
4172
+ linear-gradient(#777777, #777777) 1px calc(100% - 1px) / 1px 1px no-repeat,
4173
+ linear-gradient(#555555, #555555) 1px 1px / calc(100% - 3px) 1px no-repeat,
4174
+ linear-gradient(#555555, #555555) 1px 1px / 1px calc(100% - 3px) no-repeat,
4175
+ linear-gradient(#aaaaaa, #aaaaaa) calc(100% - 1px) 2px / 1px calc(100% - 3px) no-repeat,
4176
+ linear-gradient(#aaaaaa, #aaaaaa) 2px calc(100% - 1px) / calc(100% - 3px) 1px no-repeat,
4177
+ #888888;
4178
+ }
4179
+
4180
+ :root .list-view th.sort-direction {
4181
+ background:
4182
+ linear-gradient(#888888, #888888) 100% 2px / 1px calc(100% - 3px) no-repeat,
4183
+ linear-gradient(#cccccc, #cccccc) 100% 1px / 1px 1px no-repeat,
4184
+ linear-gradient(#666666, #666666) 0 0 / 100% 1px no-repeat,
4185
+ linear-gradient(#666666, #666666) 0 0 / 1px calc(100% - 1px) no-repeat,
4186
+ linear-gradient(#555555, #555555) 0 100% / 1px 1px no-repeat,
4187
+ linear-gradient(#333333, #333333) 1px 100% / 100% 1px no-repeat,
4188
+ linear-gradient(#ffffff, #ffffff) 1px 1px / 100% 1px no-repeat,
4189
+ linear-gradient(#ffffff, #ffffff) 1px 1px / 1px calc(100% - 3px) no-repeat,
4190
+ linear-gradient(#888888, #888888) 2px calc(100% - 1px) / 100% 1px no-repeat,
4191
+ url("art/platinum/sort-direction.png") 4px 6px / 8px 7px no-repeat,
4192
+ #cccccc;
2259
4193
  }
2260
4194
 
2261
- :root .window > .title-bar + .window-pane,
2262
- :root .window > .details-bar + .window-pane {
2263
- border-top: 0;
4195
+ :root :is(input:not([type]), input[type="text"], input[type="search"], input[type="email"], input[type="url"], input[type="password"], input[type="number"], input[type="tel"], textarea):focus-visible {
4196
+ box-shadow: var(--clio-field-focus-shadow);
2264
4197
  }
2265
4198
 
2266
- :root .window > .details-bar {
2267
- border-left: 1px solid #000000;
2268
- border-right: 1px solid #000000;
4199
+ /* Secondary group box (Sound, "Settings for selected device"): one #888 line,
4200
+ no light. */
4201
+ :root fieldset.secondary {
4202
+ border: 1px solid #888888;
4203
+ background: transparent;
4204
+ box-shadow: none;
2269
4205
  }
2270
4206
 
2271
- /* The ridged bar. Its covers read the slot sizes the .title-bar itself
2272
- computes, so this is a rule, not a token. */
2273
- :root .title-bar {
2274
- /* Six ridges: white lines, and #777 lines one pixel to their right (the
2275
- ridge's shade), between the box slots (Mac OS 9.0, both ends measured). */
2276
- --clio-tb-ridges: calc(100% - var(--clio-tb-close) - var(--clio-tb-zoom) - var(--clio-tb-shade) - 1px);
4207
+ /* ---- Utility window (Application Switcher, Mac OS 9.0) --------------------------
4208
+ 1px black outline and a 1px black drop; white light on the top and left,
4209
+ #999 shade on the right; a 13-row title bar of #ccc with a 3px dot pattern
4210
+ (white, #777 one down and right) in rows 3-10, 9x9 boxes, and a #999 rule
4211
+ under it. */
4212
+ :root .window.utility {
4213
+ --clio-utility-titlebar-height: 14px;
4214
+ --clio-utility-box-size: 10px;
4215
+ padding: 0;
4216
+ border: 1px solid #000000;
2277
4217
  background:
2278
- linear-gradient(to bottom, #cccccc 0 1px, transparent 1px 13px, #cccccc 13px 17px, #999999 17px 18px),
2279
- repeating-linear-gradient(to bottom, #ffffff 0 1px, transparent 1px 2px) var(--clio-tb-close) 1px / var(--clio-tb-ridges) 2px repeat-y,
2280
- repeating-linear-gradient(to bottom, transparent 0 1px, #777777 1px 2px) calc(var(--clio-tb-close) + 1px) 1px / var(--clio-tb-ridges) 2px repeat-y,
4218
+ linear-gradient(#ffffff, #ffffff) 0 0 / calc(100% - 1px) 1px no-repeat,
4219
+ linear-gradient(#ffffff, #ffffff) 0 0 / 1px 100% no-repeat,
4220
+ linear-gradient(#999999, #999999) 100% 1px / 1px 100% no-repeat,
2281
4221
  #cccccc;
4222
+ box-shadow: none;
4223
+ isolation: isolate;
2282
4224
  }
2283
4225
 
2284
- :root .window.inactive > .title-bar,
2285
- :root .inactive-title-bar {
2286
- background: var(--clio-titlebar-inactive-bg);
4226
+ /* The drop: 1px of black right and below, from the second row and column. */
4227
+ :root .window.utility::before {
4228
+ content: "";
4229
+ position: absolute;
4230
+ top: 1px;
4231
+ right: -2px;
4232
+ bottom: -2px;
4233
+ left: 1px;
4234
+ z-index: -1;
4235
+ background:
4236
+ linear-gradient(#000000, #000000) 100% 0 / 1px 100% no-repeat,
4237
+ linear-gradient(#000000, #000000) 0 100% / 100% 1px no-repeat;
2287
4238
  }
2288
4239
 
2289
- /* The title is cut out of the ridges in the frame grey, drawn wide. */
2290
- :root .title-bar > :is(.title, h1, h2, h3) {
2291
- /* Mac OS 9.0: the cut-out spans the ridges, 4px before the title and 3px
2292
- after it, and is centred 1px left of the bar's middle; Charcoal sits one
2293
- row low in it. */
2294
- padding: 1px 3px 0 4px;
2295
- transform: translateX(-1px);
2296
- /* The ridge's #777 lines are its white lines one pixel to the right, and so
2297
- is their cut: show them in the cut-out's first column, cover them one
2298
- column past its last. */
4240
+ :root .window.utility > .title-bar {
4241
+ height: 13px;
4242
+ margin: 1px 1px 0;
4243
+ padding: 0 26px 0 12px;
4244
+ border-bottom: 0;
2299
4245
  background:
2300
- repeating-linear-gradient(to bottom, transparent 0 1px, #777777 1px 2px) 0 0 / 1px 12px no-repeat,
4246
+ linear-gradient(#999999, #999999) 0 100% / calc(100% - 1px) 1px no-repeat,
4247
+ url("art/platinum/utility-dots.png") 0 2px / 3px 3px repeat-x,
4248
+ url("art/platinum/utility-dots.png") 0 5px / 3px 3px repeat-x,
4249
+ url("art/platinum/utility-dots.png") 0 8px / 3px 3px repeat-x,
2301
4250
  #cccccc;
2302
- overflow: clip; /* still truncates with an ellipsis */
2303
- overflow-clip-margin: 1px; /* but lets the column past the end show */
4251
+ background-clip: padding-box, content-box, content-box, content-box, padding-box;
2304
4252
  }
2305
4253
 
2306
- /* The close, zoom and collapse boxes: an 11px bevelled square sunk into the
2307
- ridges, no paper isolation. */
2308
- :root .title-bar > :is(button, .close, .close-box, .resize, .resize-box, .zoom, .shade, .shade-box, .collapse) {
2309
- margin-top: 1px;
2310
- border-color: #222222;
2311
- background: var(--clio-art-p9-box-face) 0 0 / 9px 9px no-repeat;
2312
- box-shadow:
2313
- -1px -1px 0 #888888,
2314
- -1px 0 0 #888888,
2315
- 0 -1px 0 #888888,
2316
- 1px 1px 0 #ffffff,
2317
- 1px 0 0 #ffffff,
2318
- 0 1px 0 #ffffff;
4254
+ :root .window.utility > .title-bar > :is(.close, .close-box, .resize, .resize-box, .zoom, .shade, .shade-box, .collapse) {
4255
+ position: absolute;
4256
+ grid-area: auto;
4257
+ top: 1px;
4258
+ left: 0;
4259
+ width: 10px;
4260
+ height: 10px;
4261
+ margin: 0;
4262
+ border: 0;
4263
+ background: url("art/platinum/utility-close.png") 0 0 / 10px 10px no-repeat;
4264
+ box-shadow: none;
2319
4265
  }
2320
4266
 
2321
- :root .title-bar > :is(button, .close, .close-box, .resize, .resize-box, .zoom, .shade, .shade-box, .collapse):is(:active, .active) {
2322
- background: linear-gradient(to bottom right, #444444, #bbbbbb);
2323
- box-shadow: -1px -1px 0 #888888, 1px 1px 0 #ffffff, inset -1px -1px 0 #999999;
4267
+ :root .window.utility > .title-bar > :is(.resize, .resize-box, .zoom) {
4268
+ left: auto;
4269
+ right: 11px;
4270
+ background-image: url("art/platinum/utility-zoom.png");
4271
+ box-shadow: -4px 0 0 #cccccc, 1px 0 0 #cccccc;
2324
4272
  }
2325
4273
 
2326
- /* Zoom: a six-pixel lower-left corner inside the frame. */
2327
- :root .title-bar > :is(.resize, .resize-box, .zoom)::before {
4274
+ :root .window.utility > .title-bar > :is(.shade, .shade-box, .collapse) {
4275
+ left: auto;
4276
+ right: 0;
4277
+ background-image: url("art/platinum/utility-collapse.png");
4278
+ }
4279
+
4280
+ /* With no collapse box, the zoom box takes its place. */
4281
+ :root .window.utility > .title-bar:not(:has(> :is(.shade, .shade-box, .collapse))) > :is(.resize, .resize-box, .zoom) {
4282
+ right: 0;
4283
+ }
4284
+
4285
+ :root .window.utility > .title-bar > :is(button, .close, .resize, .zoom, .shade, .collapse)::before,
4286
+ :root .window.utility > .title-bar > :is(button, .close, .resize, .zoom, .shade, .collapse)::after {
4287
+ content: none;
4288
+ }
4289
+
4290
+ :root .window.utility > .title-bar > :is(.title, h1, h2, h3) {
4291
+ height: 11px;
4292
+ padding: 0 2px;
4293
+ background: #cccccc;
4294
+ font-size: 12px;
4295
+ line-height: 11px;
4296
+ }
4297
+
4298
+ /* The dots right of the title run from the right end (their phase differs
4299
+ from the left run's by one column). */
4300
+ :root .window.utility > .title-bar::after {
4301
+ content: "";
4302
+ position: absolute;
2328
4303
  top: 0;
2329
- left: 0;
2330
- width: 6px;
2331
- height: 6px;
4304
+ right: 25px;
4305
+ bottom: 1px;
4306
+ left: 50%;
2332
4307
  border: 0;
2333
4308
  background:
2334
- linear-gradient(#222222, #222222) right top / 1px 6px no-repeat,
2335
- linear-gradient(#222222, #222222) left bottom / 6px 1px no-repeat;
2336
- opacity: 1;
4309
+ url("art/platinum/utility-dots.png") right -1px top 2px / 3px 3px repeat-x,
4310
+ url("art/platinum/utility-dots.png") right -1px top 5px / 3px 3px repeat-x,
4311
+ url("art/platinum/utility-dots.png") right -1px top 8px / 3px 3px repeat-x,
4312
+ #cccccc;
4313
+ box-shadow: none;
2337
4314
  }
2338
4315
 
2339
- /* WindowShade: two nine-pixel rules. */
2340
- :root .title-bar > :is(.shade, .shade-box, .collapse)::before {
2341
- content: "";
2342
- position: absolute;
2343
- top: 3px;
2344
- left: 0;
2345
- width: 9px;
2346
- height: 3px;
4316
+ :root .window.utility > .title-bar > :is(.title, h1, h2, h3) {
4317
+ position: relative;
4318
+ z-index: 1;
4319
+ }
4320
+
4321
+ /* ---- Movable modal window (Navigation Services "Open", Mac OS 9.0) --------------
4322
+ A title bar with no close box over a dialog body: no frame band, the black
4323
+ rule under the title bar runs the whole width, and the body has the modal
4324
+ dialog's white light and #999/#555 shade inside the outline. */
4325
+ :root .window.movable-modal {
4326
+ padding: 2px 0 0;
2347
4327
  background:
2348
- linear-gradient(#222222, #222222) left top / 9px 1px no-repeat,
2349
- linear-gradient(#222222, #222222) left bottom / 9px 1px no-repeat;
4328
+ linear-gradient(#ffffff, #ffffff) 1px 22px / calc(100% - 3px) 1px no-repeat,
4329
+ linear-gradient(#ffffff, #ffffff) 1px 22px / 1px calc(100% - 23px) no-repeat,
4330
+ linear-gradient(#999999, #999999) calc(100% - 1px) 23px / 1px calc(100% - 24px) no-repeat,
4331
+ linear-gradient(#555555, #555555) 100% 22px / 1px calc(100% - 22px) no-repeat,
4332
+ linear-gradient(#ffffff, #ffffff) 0 0 / 100% 1px no-repeat,
4333
+ linear-gradient(#ffffff, #ffffff) 0 0 / 1px 19px no-repeat,
4334
+ linear-gradient(#cccccc, #cccccc) 0 19px / 1px 1px no-repeat,
4335
+ linear-gradient(#000000, #000000) 0 20px / 1px 1px no-repeat,
4336
+ linear-gradient(#cccccc, #cccccc) 1px 1px / 100% 1px no-repeat,
4337
+ #dddddd;
2350
4338
  }
2351
4339
 
2352
- /* Background window: flat grey, #555 frame, controls erased, title kept. */
2353
- :root .window.inactive {
2354
- --clio-button-shadow: 0 0 0 0 transparent;
2355
- --clio-field-shadow: none;
2356
- --clio-check-shadow: none;
2357
- border-color: #555555;
2358
- background: #dddddd;
2359
- box-shadow: 1px 1px 0 #555555; /* flat: no light or shade inside (Mac OS 9.0 Finder, behind Appearance) */
2360
- color: #555555;
4340
+ :root .window.movable-modal > .title-bar {
4341
+ --clio-tb-close: 3px;
4342
+ margin: 0 0 0 1px;
4343
+ border-bottom: 1px solid #000000;
4344
+ box-shadow: none;
2361
4345
  }
2362
4346
 
2363
- :root .window.inactive > .title-bar,
2364
- :root .inactive-title-bar {
2365
- border-bottom-color: #555555;
2366
- --clio-title-bg: #dddddd;
4347
+ /* the frame's light down the title bar's first column, above its #999 row */
4348
+ :root .window.movable-modal {
4349
+ --clio-mm-light: linear-gradient(#ffffff, #ffffff) 1px 1px / 1px 19px no-repeat;
2367
4350
  }
2368
4351
 
2369
- :root .window.inactive > .title-bar > :is(.title, h1, h2, h3),
2370
- :root .inactive-title-bar > :is(.title, h1, h2, h3) {
2371
- background: #dddddd;
4352
+ :root .window.movable-modal > .window-pane {
4353
+ border: 0;
4354
+ background: transparent;
2372
4355
  }
2373
4356
 
2374
- /* ---- Default button ring: 1px black, a #aaa bevel band, 1px gap. -------- */
2375
- :root :is(.default, .btn-default) {
2376
- position: relative;
2377
- box-shadow: var(--clio-button-shadow);
4357
+ /* Safari's COLRv0 edge levels in white and dimmed text (src/00-fonts.css). */
4358
+ :root :is(.menu-bar, [role="menubar"], [role="menu-bar"]) > li > :is(button, a, span):is([aria-expanded="true"], .active),
4359
+ :root :is(.menu-bar, [role="menubar"], [role="menu-bar"]) > li.open > :is(button, a, span),
4360
+ :root :is(.menu, [role="menu"]) > li:not(.disabled, [aria-disabled="true"], .separator, [role="separator"]):is(:hover, :focus-within, .active):where(:not([data-clio-blink])),
4361
+ :root :is(.menu, [role="menu"]) > li > :is(a, button):not([aria-disabled="true"], :disabled):is(:hover, :focus-visible, .active):where(:not([data-clio-blink])),
4362
+ :root .icon:is(.selected, [aria-selected="true"], [aria-pressed="true"]) > :is(figcaption, span, .icon-label) {
4363
+ font-palette: --clio-aa-white;
4364
+ }
4365
+
4366
+ :root :is(.menu, [role="menu"]) > li:is(.disabled, [aria-disabled="true"]),
4367
+ :root :is(.menu, [role="menu"]) > li > :is(a, button):is(:disabled, [aria-disabled="true"]) {
4368
+ font-palette: --clio-aa-6f6f6f;
4369
+ }
4370
+
4371
+ /* A submenu sits inside its parent's <li>, which stays chosen while the
4372
+ pointer is in the submenu: its own items start from the black levels. */
4373
+ :root :is(.menu, [role="menu"]) :is(.menu, [role="menu"]) {
4374
+ font-palette: normal;
4375
+ }
4376
+
4377
+ /* ---- Side-title utility window (kWindowFloatSide*; Mac OS 9.0, the Appearance
4378
+ SDK's sample "Side Utility Window", frames side3) ------------------------------
4379
+ <div class="window utility side"> with the usual .title-bar (close box at the
4380
+ top, collapse box at the foot; no title is drawn). The frame is the utility
4381
+ window's: 1px black, white light on the top and left, #999 shade on the right
4382
+ and the bottom, the drop from the second row and column. The bar is 10px of #ccc
4383
+ down the left with the 3px dot pattern from 12px below its top to 12px above its
4384
+ foot; the collapse box is the title-bar one transposed. */
4385
+ :root .window.utility.side {
4386
+ flex-direction: row;
4387
+ background:
4388
+ linear-gradient(#ffffff, #ffffff) 0 0 / calc(100% - 1px) 1px no-repeat,
4389
+ linear-gradient(#ffffff, #ffffff) 0 0 / 1px calc(100% - 1px) no-repeat,
4390
+ linear-gradient(#999999, #999999) 100% 1px / 1px calc(100% - 1px) no-repeat,
4391
+ linear-gradient(#999999, #999999) 1px 100% / calc(100% - 1px) 1px no-repeat,
4392
+ #cccccc;
2378
4393
  }
2379
4394
 
2380
- :root :is(.default, .btn-default):not(:disabled, .disabled):is(:active, .active) {
2381
- box-shadow: var(--clio-button-active-shadow);
4395
+ :root .window.utility.side > .title-bar {
4396
+ display: block;
4397
+ flex: none;
4398
+ width: 10px;
4399
+ height: auto;
4400
+ margin: 1px 0 1px 1px;
4401
+ padding: 0;
4402
+ background: url("art/platinum/utility-dots.png") 1px 12px / 3px 3px repeat, #cccccc;
4403
+ box-shadow: none;
2382
4404
  }
2383
4405
 
2384
- :root :is(.default, .btn-default)::before {
4406
+ /* The dots keep to columns 1 to 9 and rows 12 to 12 above the foot: a #ccc frame
4407
+ painted over the pattern's edges. */
4408
+ :root .window.utility.side > .title-bar::before {
2385
4409
  content: "";
2386
4410
  position: absolute;
2387
- border-width: 1px; /* longhands: the shorthand would reset the ring, which is a border-image */
4411
+ inset: 0;
2388
4412
  border-style: solid;
2389
- border-color: transparent;
2390
- inset: -4px;
2391
- border-radius: 0;
2392
- box-shadow: none;
4413
+ border-color: #cccccc;
4414
+ border-width: 12px 0 12px 1px;
2393
4415
  pointer-events: none;
2394
4416
  }
2395
4417
 
2396
- :root :is(.default, .btn-default):is(:disabled, .disabled)::before {
2397
- box-shadow: 0 0 0 1px #888888;
2398
- }
2399
-
2400
- :root :is(button, .btn, .btn-default, input[type="button"], input[type="submit"], input[type="reset"]):not(.icon, [role="tab"], [role="menuitem"], .title-bar > *, .control-strip *):is(:disabled, .disabled) {
2401
- background: transparent;
2402
- box-shadow: none;
2403
- border-image: var(--clio-button-frame-disabled) var(--clio-button-frame-slice) fill / calc(var(--clio-button-frame-slice) * 1px) stretch;
4418
+ :root .window.utility.side > .title-bar::after {
4419
+ content: none;
2404
4420
  }
2405
4421
 
2406
- /* ---- Radio buttons: drawn, not cut from a screenshot ------------------------ */
2407
- /* Check box mark: inside the frame, plus the two columns that overhang it. */
2408
- :root input[type="checkbox"]:checked::after {
2409
- content: "";
4422
+ :root .window.utility.side > .title-bar > :is(.title, h1, h2, h3) {
2410
4423
  position: absolute;
2411
- top: 0;
2412
- right: -3px;
2413
- width: 2px;
2414
- height: 4px;
2415
- background: var(--clio-art-p9-check-overhang) 0 0 / 2px 4px no-repeat;
4424
+ width: 1px;
4425
+ height: 1px;
4426
+ overflow: hidden;
4427
+ clip-path: inset(50%);
4428
+ white-space: nowrap;
2416
4429
  }
2417
4430
 
2418
- /* ---- Radio buttons: Mac OS 9's shaded ball (pressed states drawn here). ---- */
2419
- :root input[type="radio"] {
2420
- border: 0;
2421
- border-radius: 0;
2422
- background: var(--clio-art-p9-radio) 0 0 / 12px 12px no-repeat;
4431
+ :root .window.utility.side > .title-bar > :is(.close, .close-box, .resize, .resize-box, .zoom, .shade, .shade-box, .collapse) {
4432
+ top: 0;
4433
+ right: auto;
4434
+ left: 0;
4435
+ z-index: 1;
2423
4436
  box-shadow: none;
2424
4437
  }
2425
4438
 
2426
- :root input[type="radio"]:checked {
2427
- background: var(--clio-art-p9-radio-on) 0 0 / 12px 12px no-repeat;
4439
+ :root .window.utility.side > .title-bar > :is(.shade, .shade-box, .collapse, .resize, .resize-box, .zoom) {
4440
+ top: auto;
4441
+ bottom: 0;
4442
+ background-image: url("art/platinum/utility-collapse-side.png");
2428
4443
  }
2429
4444
 
2430
- :root input[type="radio"]:not(:disabled):active {
2431
- background: var(--clio-art-p9-radio-pressed) 0 0 / 12px 12px no-repeat;
4445
+ :root .window.utility.side > .window-pane {
4446
+ margin: 1px 1px 1px 0;
2432
4447
  }
2433
4448
 
2434
- /* Held while on: not captured; the on ball stays (inferred). */
2435
- :root input[type="radio"]:checked:not(:disabled):active {
2436
- background: var(--clio-art-p9-radio-on) 0 0 / 12px 12px no-repeat;
4449
+ /* In the background: a #555 frame and drop on flat #ddd; no boxes, no dots. */
4450
+ :root .window.utility.side.inactive {
4451
+ border-color: #555555;
4452
+ background: #dddddd;
2437
4453
  }
2438
4454
 
2439
- /* Held while checked: the mark over the held box (inferred; only the empty
2440
- box was captured held). */
2441
- :root input[type="checkbox"]:checked:not(:disabled):active {
4455
+ :root .window.utility.side.inactive::before {
2442
4456
  background:
2443
- var(--clio-art-p9-check) 0 0 / 10px 10px no-repeat padding-box,
2444
- var(--clio-art-p9-checkbox-pressed) -1px -1px / 12px 12px no-repeat;
4457
+ linear-gradient(#555555, #555555) 100% 0 / 1px 100% no-repeat,
4458
+ linear-gradient(#555555, #555555) 0 100% / 100% 1px no-repeat;
2445
4459
  }
2446
4460
 
2447
- :root input[type="checkbox"]:not(:disabled):active {
2448
- border-color: transparent;
2449
- background: var(--clio-art-p9-checkbox-pressed) -1px -1px / 12px 12px no-repeat;
2450
- box-shadow: none;
4461
+ :root .window.utility.side.inactive > .title-bar {
4462
+ background: #dddddd;
2451
4463
  }
2452
4464
 
2453
- :root :is(input[type="checkbox"], input[type="radio"]):disabled {
2454
- border-color: #888888;
2455
- opacity: 0.6;
4465
+ :root .window.utility.side.inactive > .title-bar::before {
4466
+ content: none;
2456
4467
  }
2457
4468
 
2458
- /* ---- Menus ------------------------------------------------------------------- */
2459
- :root :is(.menu-bar, [role="menubar"], [role="menu-bar"]) > li > :is(button, a, span) {
2460
- font-weight: 700;
4469
+ /* ---- Placard (Mac OS 9.0, the Appearance SDK's CDEF Tester, frame placard) -----
4470
+ 1px black, white light on the top and left, #aaa shade on the right and the
4471
+ bottom (the corners they would share stay #ddd), #ddd face. Disabled: a #555
4472
+ frame on #eee, no light or shade (frame placard-disabled). */
4473
+ :root .placard {
4474
+ border-color: #000000;
4475
+ background:
4476
+ linear-gradient(#ffffff, #ffffff) 0 0 / calc(100% - 1px) 1px no-repeat,
4477
+ linear-gradient(#ffffff, #ffffff) 0 0 / 1px calc(100% - 1px) no-repeat,
4478
+ linear-gradient(#aaaaaa, #aaaaaa) 100% 1px / 1px calc(100% - 1px) no-repeat,
4479
+ linear-gradient(#aaaaaa, #aaaaaa) 1px 100% / calc(100% - 1px) 1px no-repeat,
4480
+ #dddddd;
4481
+ color: #000000;
2461
4482
  }
2462
4483
 
2463
- :root :is(.menu, [role="menu"]) > li:is(.checked, [aria-checked="true"])::before,
2464
- :root :is(.menu, [role="menu"]) > li > :is([aria-checked="true"], .checked)::before {
2465
- left: 7px;
2466
- width: 9px;
2467
- height: 8px;
2468
- margin-top: -4px;
2469
- background: var(--clio-art-p-check) 0 0 / 9px 8px no-repeat;
4484
+ :root .placard:is(:disabled, [aria-disabled="true"], .window.inactive *) {
4485
+ border-color: #555555;
4486
+ background: #eeeeee;
4487
+ color: #555555;
2470
4488
  }
2471
4489
 
2472
- :root :is(.menu, [role="menu"]) > li:is(.checked, [aria-checked="true"]):is(:hover, :focus-within, .active)::before,
2473
- :root :is(.menu, [role="menu"]) > li > :is([aria-checked="true"], .checked):is(:hover, :focus-visible, .active)::before {
2474
- filter: invert(1);
4490
+ /* ---- Split bar (BBEdit 5.1, Mac OS 9.0, frames bb3 and split-done) -------------
4491
+ 7 rows of black across the scroll bar's width; the split line puts its two
4492
+ lines on the bar's fourth and sixth rows. */
4493
+ :root :is(.split-view, .split-bar, .split-line) {
4494
+ --clio-split-bar-height: 7px;
4495
+ --clio-split-bg: #ffffff;
4496
+ --clio-split-ink: #000000;
2475
4497
  }
2476
4498
 
2477
- :root :is(.menu, [role="menu"]) > li:has(> :is(.menu, ul[role="menu"]))::after,
2478
- :root :is(.menu, [role="menu"]) > li > [aria-haspopup="true"]::after {
2479
- background-image: var(--clio-art-p-submenu);
4499
+ :root .split-line {
4500
+ --clio-split-line-1: 3px;
2480
4501
  }
2481
4502
 
2482
- :root :is(.menu, [role="menu"]) > li:has(> :is(.menu, ul[role="menu"])):is(:hover, :focus-within, .active)::after {
2483
- background-image: var(--clio-art-p-submenu-on);
4503
+ /* ---- Rounded-corner window (the Calculator, Mac OS 9.0 and 8.5) ----------------
4504
+ The old window definition draws it as in System 7, its title in the system font
4505
+ antialiased: white on black, black on white in the background (levels measured,
4506
+ tooling/aa-palettes.py). */
4507
+ :root .rounded-window > .rounded-title {
4508
+ font-family: Charcoal, "Charcoal CY", "Clio Sans '97 Title Exact", "Clio Sans '97 Title", "Clio Sans '97", "Clio Asap", Geneva, sans-serif;
4509
+ padding-left: 16px; /* Clio Sans '97 Title sets "Calculator" 2px narrower than the Mac's Charcoal: fitted to the capture */
4510
+ font-size: 12px;
4511
+ font-palette: --clio-aa-rdoc-title;
2484
4512
  }
2485
4513
 
2486
- :root :is(.menu, [role="menu"]) > li.divider {
2487
- border-bottom: 0;
2488
- box-shadow: inset 0 -2px 0 #dddddd, inset 0 -3px 0 #ffffff, inset 0 -4px 0 #888888;
4514
+ :root .rounded-window.inactive > .rounded-title {
4515
+ font-palette: --clio-aa-rdoc-title-inactive;
2489
4516
  }
2490
4517
 
2491
- /* ---- Tabs: drawn from the measured Mac OS 9 tab (tooling/tab-art.py) ------ */
2492
- :root :is([role="tablist"], .tabs) {
2493
- gap: 0;
2494
- padding: 0 4px;
4518
+ /* Mac OS 9 Platinum only (not Drawing Board, whose theme draws its own):
4519
+ scroll-bar details read from the Mac OS 9.0 Finder (frames hig/platinum9/
4520
+ finder-scroll-*). The build leaves this file out of clio.drawingboard.css. */
4521
+
4522
+ /* ---- The scroll box's far side is the window's frame (Mac OS 9.0 Finder) --- */
4523
+ :is(:root) :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-thumb:vertical {
4524
+ border-right-width: 0;
2495
4525
  }
2496
4526
 
2497
- :root :is([role="tablist"], .tabs) > :is([role="tab"], li, button) {
2498
- min-width: 48px;
2499
- height: 24px;
2500
- min-height: 0;
2501
- margin: 0 -3px -1px 0;
2502
- padding: 3px 0 0;
2503
- border-style: solid;
2504
- border-width: 0 16px;
2505
- border-color: transparent;
2506
- border-radius: 0;
2507
- border-image: var(--clio-art-p-tab) 0 16 fill / 0 16px stretch;
2508
- background: transparent;
2509
- box-shadow: none;
2510
- font-weight: 700;
2511
- line-height: 18px;
4527
+ :is(:root) :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-v > .clio-sb-thumb {
4528
+ border-right-width: 0;
2512
4529
  }
2513
4530
 
2514
- :root :is([role="tablist"], .tabs) > :is([role="tab"], li, button):not(:disabled):active {
2515
- border-image-source: var(--clio-art-p-tab-pressed);
2516
- background: transparent;
2517
- color: #ffffff;
4531
+ :is(:root) :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-thumb:horizontal {
4532
+ border-bottom-width: 0;
2518
4533
  }
2519
4534
 
2520
- :root :is([role="tablist"], .tabs) > :is([role="tab"], li, button):is([aria-selected="true"], .active) {
2521
- z-index: 1;
2522
- padding-top: 0;
2523
- border-image-source: var(--clio-art-p-tab-selected);
2524
- background: transparent;
2525
- color: #000000;
4535
+ :is(:root) :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *) > .clio-sb-anchor > .clio-sb.clio-sb-h > .clio-sb-thumb {
4536
+ border-bottom-width: 0;
2526
4537
  }
2527
4538
 
2528
- :root :is([role="tabpanel"], .tab-panel) {
2529
- border-top: 0;
2530
- box-shadow: inset 1px 0 0 #ffffff, inset -1px -1px 0 #888888;
4539
+ /* Smart Scrolling (clio.js bars): the up and left arrows move to the far end
4540
+ and take their black line on the lane's side (frame finder-scroll-smart). */
4541
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-v.clio-sb-smart > .clio-sb-dec {
4542
+ border-top: 1px solid #000000;
4543
+ border-bottom-width: 0;
2531
4544
  }
2532
4545
 
2533
- /* ---- Scroll arrow art sits on the bevelled box ---------------------------- */
2534
- :root :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button,
2535
- :root:is(html.clio-scrollbars)::-webkit-scrollbar-button {
2536
- background-position: 1px 1px;
2537
- background-size: 14px 14px;
4546
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-h.clio-sb-smart > .clio-sb-dec {
4547
+ border-left: 1px solid #000000;
4548
+ border-right-width: 0;
2538
4549
  }
2539
4550
 
2540
- :root :is(.window-pane, .listbox, [role="listbox"], textarea, select[multiple], .clio-scroll, .clio-scrollbars *)::-webkit-scrollbar-button:active,
2541
- :root:is(html.clio-scrollbars)::-webkit-scrollbar-button:active {
2542
- background-color: #666666;
2543
- box-shadow: inset 1px 1px #444444, inset -1px -1px #888888;
4551
+ /* Nothing to scroll (clio.js bars): a flat #eee lane and dimmed arrows, the
4552
+ bevels gone (Finder, frame finder-scroll-fixed, its horizontal bar). */
4553
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb.clio-sb-off > .clio-sb-track {
4554
+ background: #eeeeee;
4555
+ box-shadow: none;
2544
4556
  }
2545
4557
 
2546
- :root :is(fieldset) > legend {
2547
- background: var(--clio-pane-bg);
4558
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb.clio-sb-off > .clio-sb-button {
4559
+ background-color: #eeeeee;
4560
+ box-shadow: none;
2548
4561
  }
2549
4562
 
2550
- :root fieldset {
4563
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-v.clio-sb-off > .clio-sb-button.clio-sb-dec { background-image: var(--clio-art-p-up-off); }
4564
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-v.clio-sb-off > .clio-sb-button.clio-sb-inc { background-image: var(--clio-art-p-down-off); }
4565
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-h.clio-sb-off > .clio-sb-button.clio-sb-dec { background-image: var(--clio-art-p-left-off); }
4566
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-h.clio-sb-off > .clio-sb-button.clio-sb-inc { background-image: var(--clio-art-p-right-off); }
4567
+
4568
+ /* ...and the lines between the arrows and the lane dim to #555, drawn as
4569
+ shadows so the black line across keeps the corner. */
4570
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-h.clio-sb-off > .clio-sb-button.clio-sb-dec { border-right-width: 0; box-shadow: inset -1px 0 #555555; }
4571
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-h.clio-sb-off > .clio-sb-button.clio-sb-inc { border-left-width: 0; box-shadow: inset 1px 0 #555555; background-position: 1px 1px; }
4572
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-v.clio-sb-off > .clio-sb-button.clio-sb-dec { border-bottom-width: 0; box-shadow: inset 0 -1px #555555; }
4573
+ :root .clio-sb-host > .clio-sb-anchor > .clio-sb-v.clio-sb-off > .clio-sb-button.clio-sb-inc { border-top-width: 0; box-shadow: inset 0 1px #555555; background-position: 1px 1px; }
4574
+
4575
+ /* ---- Collapsed (WindowShade): the frame closes round the title bar --------
4576
+ Mac OS 9.0, Games collapsed (frame collapsed): the title bar's last two rows
4577
+ become the window's own #999 shade and black frame, which run under the side
4578
+ bands too. */
4579
+ :root .window.collapsed {
4580
+ padding-bottom: 1px;
4581
+ }
4582
+
4583
+ /* the bevel only: the inner strip round the pane has gone with it */
4584
+ :root .window.collapsed:not(.inactive) {
2551
4585
  background:
2552
- linear-gradient(var(--clio-pane-bg), var(--clio-pane-bg)) padding-box,
2553
- var(--clio-art-p9-group-dots) 0 0 / 2px 2px fixed border-box;
2554
- image-rendering: pixelated; /* keep the dots from blending into one grey */
4586
+ var(--clio-p9-bevel),
4587
+ var(--clio-window-bg);
2555
4588
  }
2556
4589
 
2557
- /* The title's gap opens 13px after the corner (General Controls, "Desktop"). */
2558
- :root fieldset > legend {
2559
- margin-left: 2px;
4590
+ :root .window.collapsed > .title-bar {
4591
+ height: calc(var(--clio-titlebar-height) - 2px);
4592
+ border-bottom-width: 0;
2560
4593
  }
2561
4594
 
2562
- /* Disabled pop-up menu: #888 frame, flat face, the #aaa divider and a grey
2563
- arrow (Mac OS 9.0 Appearance, "Position Automatically"). Browsers also fade
2564
- a disabled <select>; Mac OS did not. */
2565
- :root select:disabled {
2566
- border-color: #888888;
4595
+ /* ---- The open pop-up menu (Mac OS 9.0, Appearance > Fonts, Large System Font
4596
+ held; frame popup-open) ----------------------------------------------------
4597
+ Laid with its top on the button's (the current item there), as wide as the
4598
+ button less its arrows (20px), framed all round in black with a white and
4599
+ #999 bevel whose other two corners stay #ddd, and its shadow starting 2px in
4600
+ (the clip takes the first pixel of each end). The check mark sits 3px in,
4601
+ the text 20px. */
4602
+ :root select {
4603
+ --clio-popup-menu-trim: 20px;
4604
+ --clio-popup-menu-align: top;
4605
+ }
4606
+
4607
+ :root .clio-popup-menu {
4608
+ border-top-width: 1px;
2567
4609
  background:
2568
- var(--clio-art-p-dropdown-off) right 7px top 4px / 7px 10px no-repeat,
2569
- linear-gradient(#aaaaaa, #aaaaaa) right 20px top 0 / 1px 100% no-repeat,
4610
+ var(--clio-p9-bevel),
2570
4611
  #dddddd;
2571
- background-clip: padding-box;
2572
- box-shadow: none;
2573
- color: #888888;
2574
- opacity: 1;
2575
- border-image-source: var(--clio-art-frame-p9-popup-disabled);
4612
+ box-shadow: 1px 1px 0 #222222;
4613
+ clip-path: polygon(0 0, 100% 0, 100% 2px, calc(100% + 1px) 2px, calc(100% + 1px) calc(100% + 1px), 2px calc(100% + 1px), 2px 100%, 0 100%);
2576
4614
  }
2577
4615
 
2578
- /* The face stays inside the frame, so the rounded corners show what is behind. */
2579
- :root select {
2580
- background-clip: padding-box;
4616
+ :root .clio-popup-menu > li {
4617
+ padding-left: 20px;
2581
4618
  }
2582
4619
 
2583
- /* Indeterminate progress (no value): Mac OS 9's stripes, one 16px period
2584
- repeated (Finder copy window). Static: clio.css adds no motion. */
2585
- :root progress:indeterminate,
2586
- :root progress:indeterminate::-webkit-progress-bar {
2587
- background: var(--clio-art-p9-progress-pole) 0 0 / 16px 10px repeat-x;
4620
+ /* Black on #ddd, every antialiasing level as the screen shows it (the push
4621
+ buttons' palette: the same colours). */
4622
+ :root .clio-popup-menu > li:not(.disabled, .active, :hover) {
4623
+ font-family: "Clio Sans '97 Exact", var(--clio-font-chrome);
4624
+ font-palette: --clio-aa-p9-button;
2588
4625
  }
2589
4626
 
2590
- :root .title-bar > :is(.title, h1, h2, h3)::after {
2591
- content: "";
2592
- position: absolute;
2593
- top: 0;
2594
- right: -1px;
2595
- width: 1px;
2596
- height: 12px;
2597
- background: repeating-linear-gradient(to bottom, transparent 0 1px, #cccccc 1px 2px);
4627
+ :root .clio-popup-menu > li:is(.checked, [aria-checked="true"])::before {
4628
+ left: 3px;
2598
4629
  }
2599
4630
 
2600
- :root .window.inactive > .title-bar > :is(.title, h1, h2, h3)::after,
2601
- :root .inactive-title-bar > :is(.title, h1, h2, h3)::after {
2602
- content: none;
4631
+ /* The same menu where the browser draws it (base-select). */
4632
+ @supports (appearance: base-select) {
4633
+ :root select::picker(select) {
4634
+ min-width: calc(anchor-size(width) - 20px);
4635
+ border-top-width: 1px;
4636
+ background:
4637
+ var(--clio-p9-bevel),
4638
+ #dddddd;
4639
+ box-shadow: 1px 1px 0 #222222;
4640
+ clip-path: polygon(0 0, 100% 0, 100% 2px, calc(100% + 1px) 2px, calc(100% + 1px) calc(100% + 1px), 2px calc(100% + 1px), 2px 100%, 0 100%);
4641
+ }
4642
+
4643
+ :root select option {
4644
+ padding-left: 20px;
4645
+ }
4646
+
4647
+ :root select option:not(:disabled, :hover, :focus-visible) {
4648
+ font-family: "Clio Sans '97 Exact", var(--clio-font-chrome);
4649
+ font-palette: --clio-aa-p9-button;
4650
+ }
4651
+
4652
+ :root select option::checkmark {
4653
+ left: 3px;
4654
+ }
2603
4655
  }
2604
4656
 
2605
- /* ---- Antialiasing as Mac OS blends it -------------------------------------
2606
- Window titles and push button labels in their own colours on their own
2607
- backgrounds take the exact palettes (src/00-fonts.css). */
4657
+ /* While its menu is open the button's arrows are drawn pressed: a #444 top row,
4658
+ #555 then a #666 face, the arrows white, #777 and #888 below and to the right
4659
+ (frame fonts-popup-open). clio.js marks the select it opens a menu for. */
4660
+ :root select.clio-open {
4661
+ background: var(--clio-art-p9-popup-open-arrows) right 0 top 0 / 19px 18px no-repeat, var(--clio-popup-arrow), var(--clio-popup-bg);
4662
+ border-image-source: var(--clio-art-frame-p9-popup-open); /* the arrows' corners pressed too */
4663
+ }
4664
+
4665
+ @supports selector(:open) {
4666
+ :root select:open {
4667
+ background: var(--clio-art-p9-popup-open-arrows) right 0 top 0 / 19px 18px no-repeat, var(--clio-popup-arrow), var(--clio-popup-bg);
4668
+ border-image-source: var(--clio-art-frame-p9-popup-open);
4669
+ }
4670
+ }
4671
+
4672
+ /* The title's line is 12px, not the 13px row: Charcoal's 11px ascent and 3px
4673
+ descent then leave no half pixel above the baseline, which each browser
4674
+ rounded its own way (Chromium up, WebKit and Firefox down a row). The box
4675
+ keeps its 13px height. */
2608
4676
  :root .title-bar > :is(.title, h1, h2, h3) {
2609
- font-palette: --clio-aa-p9-title;
4677
+ line-height: calc(var(--clio-titlebar-row) - 1px);
2610
4678
  }
2611
4679
 
2612
- :root :is(.window.inactive > .title-bar, .inactive-title-bar) > :is(.title, h1, h2, h3) {
2613
- font-palette: --clio-aa-p9-title-inactive;
4680
+ /* The column just past the cut-out covers the ridges' #777 rows (their cut is a
4681
+ pixel to the right of the white rows'). It used to be an ::after outside the
4682
+ title, shown through overflow-clip-margin, which WebKit lacks; now the title
4683
+ is a pixel wider into it (a -1px margin keeps it centred where it was) and
4684
+ paints that column itself. */
4685
+ :root .title-bar:not(.inactive-title-bar, .window.inactive > .title-bar) > :is(.title, h1, h2, h3) {
4686
+ margin-right: -1px;
4687
+ padding-right: 4px;
4688
+ background:
4689
+ repeating-linear-gradient(to bottom, transparent 0 1px, #777777 1px 2px) 0 0 / 1px 12px no-repeat,
4690
+ repeating-linear-gradient(to bottom, transparent 0 1px, #cccccc 1px 2px) right 0 top 0 / 1px 12px no-repeat,
4691
+ linear-gradient(#cccccc, #cccccc) 0 0 / calc(100% - 1px) 100% no-repeat;
2614
4692
  }
2615
4693
 
2616
- :root :is(button, .btn, .btn-default, input[type="button"], input[type="submit"], input[type="reset"]):not(.icon, [role="tab"], [role="menuitem"], .title-bar > *, .control-strip *) {
2617
- font-family: var(--clio-font-button);
2618
- font-palette: --clio-aa-p9-button;
4694
+ :root .title-bar > :is(.title, h1, h2, h3)::after {
4695
+ content: none;
2619
4696
  }
2620
4697
 
2621
- :root :is(button, .btn, .btn-default, input[type="button"], input[type="submit"], input[type="reset"]):not(.icon, [role="tab"], [role="menuitem"], .title-bar > *, .control-strip *):not(:disabled, .disabled):is(:active, .active) {
2622
- font-palette: --clio-aa-p9-button-held;
4698
+ /* ---- The window's drop shadow starts 2px in -------------------------------
4699
+ Mac OS 9.0 (Infinite HD, measured): the 1px black shadow runs down the right
4700
+ from the frame's third row and along the foot from its third column; a
4701
+ box-shadow could only start it 1px in. Two border lines on a pseudo-element
4702
+ draw it (the box itself stays clear); its offsets count from the padding box,
4703
+ inside the 1px frame. */
4704
+ :root .window {
4705
+ box-shadow: none;
2623
4706
  }
2624
4707
 
2625
- :root :is(button, .btn, .btn-default, input[type="button"], input[type="submit"], input[type="reset"]):not(.icon, [role="tab"], [role="menuitem"], .title-bar > *, .control-strip *):is(:disabled, .disabled) {
2626
- font-palette: --clio-aa-p9-button-disabled;
4708
+ :root .window::after {
4709
+ content: "";
4710
+ position: absolute;
4711
+ top: 1px;
4712
+ right: -2px;
4713
+ bottom: -2px;
4714
+ left: 1px;
4715
+ border-right: 1px solid #000000;
4716
+ border-bottom: 1px solid #000000;
4717
+ pointer-events: none;
4718
+ }
4719
+
4720
+ /* Behind another window the shadow turns #555555 and keeps the same notch
4721
+ (Mac OS 9.0 Finder window, measured). */
4722
+ :root .window.inactive {
4723
+ box-shadow: none;
4724
+ }
4725
+
4726
+ :root .window.inactive::after {
4727
+ border-color: #555555;
2627
4728
  }
2628
4729
 
2629
4730
  /* Adaptations the historical machines never needed. Historical sizes are
@@ -2669,3 +4770,141 @@
2669
4770
  box-shadow: none;
2670
4771
  }
2671
4772
  }
4773
+
4774
+ /* Retina and other whole-number pixel ratios: every Mac pixel becomes a solid
4775
+ 2x2 or 3x3 block (nearest neighbour), as a 1x screen magnified would show it.
4776
+ At fractional ratios (1.25, 1.5, browser zoom) the browser's smoothing stays:
4777
+ nearest neighbour there gives uneven pixel widths. image-rendering inherits,
4778
+ so the page's own pictures, video and canvas are handed back to smoothing. */
4779
+ @media (resolution: 2dppx), (resolution: 3dppx), (resolution: 4dppx) {
4780
+ :root {
4781
+ image-rendering: pixelated;
4782
+ }
4783
+
4784
+ :where(img, picture, video, canvas, iframe, object, embed) {
4785
+ image-rendering: auto;
4786
+ }
4787
+ }
4788
+
4789
+ /* Optional chrome faces for Platinum and Drawing Board:
4790
+ data-clio-font="virtue" Virtue 3.2.1, Marty P. Pfeiffer's 1997-99 TrueType
4791
+ reworking of Charcoal, (c) Scooter Graphics
4792
+ (https://www.scootergraphics.com/). Ships as
4793
+ fonts/Virtue.woff2, unchanged, with the author's
4794
+ permission (THIRD-PARTY.md).
4795
+ data-clio-font="truth" Truth FB, David Berlow's own 2005 expansion of
4796
+ Charcoal, sold by Font Bureau. Not shipped: install
4797
+ it or add your own @font-face.
4798
+ Set the attribute on <html> or any ancestor. It changes Platinum and
4799
+ Drawing Board only; System 6 and 7 keep Chicago. Clio Sans '97 stays as the
4800
+ fallback. These are outline fonts drawn by the browser, not the measured
4801
+ pixels. */
4802
+ @font-face {
4803
+ font-family: Virtue;
4804
+ src: local("Virtue"), url("fonts/Virtue.woff2") format("woff2");
4805
+ font-display: swap;
4806
+ }
4807
+
4808
+ [data-clio-font="virtue"]:root,
4809
+ [data-clio-font="virtue"] :root,
4810
+ :root [data-clio-font="virtue"] {
4811
+ --clio-font-chrome: Virtue, "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
4812
+ --clio-font-window-title: Virtue, "Clio Sans '97 Title", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
4813
+ --clio-font-button: Virtue, "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
4814
+ }
4815
+
4816
+ [data-clio-font="truth"]:root,
4817
+ [data-clio-font="truth"] :root,
4818
+ :root [data-clio-font="truth"] {
4819
+ --clio-font-chrome: "Truth FB", Truth, "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
4820
+ --clio-font-window-title: "Truth FB", Truth, "Clio Sans '97 Title", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
4821
+ --clio-font-button: "Truth FB", Truth, "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
4822
+ }
4823
+
4824
+ /* Chinese, Japanese and Korean (owner decisions 9 and 10, 2026-11-14).
4825
+
4826
+ Measured: KanjiTalk 7.5.3 and Mac OS 9.0 with the Chinese Language Kits draw CJK text
4827
+ at the Roman geometry: 16px menu and text rows, the same baseline, 12px ideographs whose
4828
+ ink runs from 10px above the baseline to 1px below (tooling/emulator/measure-cjk.sh).
4829
+ So nothing moves; only the fonts change. A localized system's system font is the
4830
+ script's font, Latin included (KanjiTalk draws "Infinite HD" and OK in Osaka), so the
4831
+ CJK font leads every stack.
4832
+
4833
+ Each stack names the period bitmap interface font (Taipei, Beijing, Osaka, Seoul), then
4834
+ Clio's stand-in, Fusion Pixel 12px proportional (OFL-1.1, THIRD-PARTY.md) cut to the
4835
+ character set that bitmap font drew (Big5, GB 2312, JIS X 0208, KS X 1001), then an
4836
+ outline family of the period. The outline families come after the stand-in because
4837
+ current macOS still installs some of them (AppleGothic) as antialiased outlines.
4838
+ A browser fetches a stand-in only for an element in that language that has text in
4839
+ its unicode-range: pages without CJK text never load them. */
4840
+ @font-face {
4841
+ font-family: "Clio Pixel TC";
4842
+ src: url("fonts/FusionPixel12-TC.woff2") format("woff2");
4843
+ font-weight: 100 900;
4844
+ font-display: swap;
4845
+ 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;
4846
+ }
4847
+
4848
+ @font-face {
4849
+ font-family: "Clio Pixel SC";
4850
+ src: url("fonts/FusionPixel12-SC.woff2") format("woff2");
4851
+ font-weight: 100 900;
4852
+ font-display: swap;
4853
+ 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;
4854
+ }
4855
+
4856
+ @font-face {
4857
+ font-family: "Clio Pixel JA";
4858
+ src: url("fonts/FusionPixel12-JA.woff2") format("woff2");
4859
+ font-weight: 100 900;
4860
+ font-display: swap;
4861
+ 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;
4862
+ }
4863
+
4864
+ @font-face {
4865
+ font-family: "Clio Pixel KO";
4866
+ src: url("fonts/FusionPixel12-KO.woff2") format("woff2");
4867
+ font-weight: 100 900;
4868
+ font-display: swap;
4869
+ 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;
4870
+ }
4871
+
4872
+ :lang(zh) { --clio-font-cjk: Beijing, "Clio Pixel SC", Hei; }
4873
+ :is(:lang(zh-Hant), :lang(zh-TW), :lang(zh-HK), :lang(zh-MO)) { --clio-font-cjk: Taipei, "Clio Pixel TC", "Apple LiGothic"; }
4874
+ :lang(ja) { --clio-font-cjk: Osaka, "Clio Pixel JA"; }
4875
+ :lang(ko) { --clio-font-cjk: Seoul, "Clio Pixel KO", AppleGothic; }
4876
+
4877
+ /* Declared beside --clio-font-cjk, on every element in the language, so var() resolves there. */
4878
+ :is(:lang(zh), :lang(ja), :lang(ko)) {
4879
+ --clio-font-chrome: var(--clio-font-cjk), "Clio Sans '84", Chicago, "ChicagoFLF", Charcoal, Geneva, "Helvetica Neue", Arial, sans-serif;
4880
+ --clio-font-text: var(--clio-font-cjk), "Clio Text '84", Geneva, "Helvetica Neue", Arial, sans-serif;
4881
+ /* Small text keeps the 9px Latin face: the stand-in is a 12px font (KanjiTalk's Finder
4882
+ drew 8px kanji here, from a 9-point Osaka clio.css does not have). */
4883
+ --clio-font-small: "Clio Text '84 9", var(--clio-font-cjk), Geneva, "Helvetica Neue", Arial, sans-serif;
4884
+ --clio-font-display: var(--clio-font-cjk), Chicago, "ChicagoFLF", Charcoal, "Helvetica Neue", Arial, sans-serif;
4885
+ }
4886
+
4887
+ /* Pop-up items name "Clio Sans '97 Exact" ahead of the chrome stack for its palette
4888
+ (91-platinum-only.css; Mac OS 9 only, as that file): in a CJK language the CJK fonts go first there too. */
4889
+ :root .clio-popup-menu > li:not(.disabled, .active, :hover):is(:lang(zh), :lang(ja), :lang(ko)) {
4890
+ font-family: var(--clio-font-cjk), "Clio Sans '97 Exact", var(--clio-font-chrome);
4891
+ }
4892
+
4893
+ @supports (appearance: base-select) {
4894
+ :root select option:not(:disabled, :hover, :focus-visible):is(:lang(zh), :lang(ja), :lang(ko)) {
4895
+ font-family: var(--clio-font-cjk), "Clio Sans '97 Exact", var(--clio-font-chrome);
4896
+ }
4897
+ }
4898
+
4899
+ /* CJK on the Appearance Manager eras: the same order as 96-cjk.css over the
4900
+ Charcoal stacks. Measured on Mac OS 9.0 with the Chinese Language Kits: the Text
4901
+ control panel's Script pop-up draws 繁體中文 and 简体中文 in 16px rows, ink 2px below
4902
+ the row's top to 12px, 1-bit (frame p9-script-popup-open). */
4903
+ :is(:root :is(:lang(zh), :lang(ja), :lang(ko)), :root:is(:lang(zh), :lang(ja), :lang(ko))) {
4904
+ --clio-font-chrome: var(--clio-font-cjk), Charcoal, "Charcoal CY", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
4905
+ --clio-font-display: var(--clio-font-cjk), Charcoal, "Charcoal CY", "Clio Sans '97 Display", "Clio Asap", "Helvetica Neue", Arial, sans-serif;
4906
+ --clio-font-window-title: var(--clio-font-cjk), Charcoal, "Charcoal CY", "Clio Sans '97 Title Exact", "Clio Sans '97 Title", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
4907
+ --clio-font-button: var(--clio-font-cjk), Charcoal, "Charcoal CY", "Clio Sans '97 Exact", "Clio Sans '97", "Clio Asap", Geneva, "Helvetica Neue", Arial, sans-serif;
4908
+ --clio-font-text: var(--clio-font-cjk), Geneva, "Clio Asap", "Helvetica Neue", Arial, sans-serif;
4909
+ --clio-font-small: Geneva, var(--clio-font-cjk), "Clio Asap", "Helvetica Neue", Arial, sans-serif;
4910
+ }