clio.css 0.1.0 → 0.9.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 (190) hide show
  1. package/AGENTS.md +20 -4
  2. package/EVIDENCE.md +113 -45
  3. package/README.md +56 -25
  4. package/THIRD-PARTY.md +61 -10
  5. package/dist/art/drawingboard/alert-bl.png +0 -0
  6. package/dist/art/drawingboard/alert-bottom.png +0 -0
  7. package/dist/art/drawingboard/alert-br.png +0 -0
  8. package/dist/art/drawingboard/alert-left.png +0 -0
  9. package/dist/art/drawingboard/alert-right.png +0 -0
  10. package/dist/art/drawingboard/alert-tl.png +0 -0
  11. package/dist/art/drawingboard/alert-top.png +0 -0
  12. package/dist/art/drawingboard/alert-tr.png +0 -0
  13. package/dist/art/drawingboard/menu-corner-bl.png +0 -0
  14. package/dist/art/drawingboard/menu-corner-br.png +0 -0
  15. package/dist/art/drawingboard/menu-corner-tr.png +0 -0
  16. package/dist/art/drawingboard/menu-foot.png +0 -0
  17. package/dist/art/drawingboard/menu-left.png +0 -0
  18. package/dist/art/drawingboard/menu-paper.png +0 -0
  19. package/dist/art/drawingboard/menu-right.png +0 -0
  20. package/dist/art/drawingboard/menu-separator.png +0 -0
  21. package/dist/art/drawingboard/menu-shade-foot.png +0 -0
  22. package/dist/art/drawingboard/menu-shade-right.png +0 -0
  23. package/dist/art/drawingboard/menu-top.png +0 -0
  24. package/dist/art/drawingboard/menubar.png +0 -0
  25. package/dist/art/drawingboard/modal-bl.png +0 -0
  26. package/dist/art/drawingboard/modal-bottom.png +0 -0
  27. package/dist/art/drawingboard/modal-br.png +0 -0
  28. package/dist/art/drawingboard/modal-left.png +0 -0
  29. package/dist/art/drawingboard/modal-right.png +0 -0
  30. package/dist/art/drawingboard/modal-tl.png +0 -0
  31. package/dist/art/drawingboard/modal-top.png +0 -0
  32. package/dist/art/drawingboard/modal-tr.png +0 -0
  33. package/dist/art/drawingboard/paper.png +0 -0
  34. package/dist/art/drawingboard/parts/btn-bl.png +0 -0
  35. package/dist/art/drawingboard/parts/btn-br-held.png +0 -0
  36. package/dist/art/drawingboard/parts/btn-br.png +0 -0
  37. package/dist/art/drawingboard/parts/btn-tl.png +0 -0
  38. package/dist/art/drawingboard/parts/btn-tr.png +0 -0
  39. package/dist/art/drawingboard/parts/button-corner.png +0 -0
  40. package/dist/art/drawingboard/parts/check-disabled.png +0 -0
  41. package/dist/art/drawingboard/parts/check-mixed.png +0 -0
  42. package/dist/art/drawingboard/parts/check-on-disabled.png +0 -0
  43. package/dist/art/drawingboard/parts/check-on-pressed.png +0 -0
  44. package/dist/art/drawingboard/parts/check-on.png +0 -0
  45. package/dist/art/drawingboard/parts/check-pressed.png +0 -0
  46. package/dist/art/drawingboard/parts/check.png +0 -0
  47. package/dist/art/drawingboard/parts/close-on.png +0 -0
  48. package/dist/art/drawingboard/parts/close.png +0 -0
  49. package/dist/art/drawingboard/parts/collapse-on.png +0 -0
  50. package/dist/art/drawingboard/parts/collapse.png +0 -0
  51. package/dist/art/drawingboard/parts/def-bl.png +0 -0
  52. package/dist/art/drawingboard/parts/def-br.png +0 -0
  53. package/dist/art/drawingboard/parts/def-tl.png +0 -0
  54. package/dist/art/drawingboard/parts/def-tr.png +0 -0
  55. package/dist/art/drawingboard/parts/down-off.png +0 -0
  56. package/dist/art/drawingboard/parts/down-on.png +0 -0
  57. package/dist/art/drawingboard/parts/down.png +0 -0
  58. package/dist/art/drawingboard/parts/grow.png +0 -0
  59. package/dist/art/drawingboard/parts/left-off.png +0 -0
  60. package/dist/art/drawingboard/parts/left-on.png +0 -0
  61. package/dist/art/drawingboard/parts/left.png +0 -0
  62. package/dist/art/drawingboard/parts/menu-underline-left.png +0 -0
  63. package/dist/art/drawingboard/parts/menu-underline-right.png +0 -0
  64. package/dist/art/drawingboard/parts/menu-underline.png +0 -0
  65. package/dist/art/drawingboard/parts/popup-arrow-off.png +0 -0
  66. package/dist/art/drawingboard/parts/popup-arrow.png +0 -0
  67. package/dist/art/drawingboard/parts/popup-corner-off.png +0 -0
  68. package/dist/art/drawingboard/parts/popup-corner.png +0 -0
  69. package/dist/art/drawingboard/parts/progress-arrows.png +0 -0
  70. package/dist/art/drawingboard/parts/radio-disabled.png +0 -0
  71. package/dist/art/drawingboard/parts/radio-on-disabled.png +0 -0
  72. package/dist/art/drawingboard/parts/radio-on-pressed.png +0 -0
  73. package/dist/art/drawingboard/parts/radio-on.png +0 -0
  74. package/dist/art/drawingboard/parts/radio.png +0 -0
  75. package/dist/art/drawingboard/parts/right-off.png +0 -0
  76. package/dist/art/drawingboard/parts/right-on.png +0 -0
  77. package/dist/art/drawingboard/parts/right.png +0 -0
  78. package/dist/art/drawingboard/parts/submenu.png +0 -0
  79. package/dist/art/drawingboard/parts/tab-pressed.png +0 -0
  80. package/dist/art/drawingboard/parts/tab-selected.png +0 -0
  81. package/dist/art/drawingboard/parts/tab.png +0 -0
  82. package/dist/art/drawingboard/parts/thumb-bottom.png +0 -0
  83. package/dist/art/drawingboard/parts/thumb-hgrip.png +0 -0
  84. package/dist/art/drawingboard/parts/thumb-hstretch.png +0 -0
  85. package/dist/art/drawingboard/parts/thumb-left.png +0 -0
  86. package/dist/art/drawingboard/parts/thumb-right.png +0 -0
  87. package/dist/art/drawingboard/parts/thumb-top.png +0 -0
  88. package/dist/art/drawingboard/parts/thumb-vgrip.png +0 -0
  89. package/dist/art/drawingboard/parts/thumb-vstretch.png +0 -0
  90. package/dist/art/drawingboard/parts/title-underline-left.png +0 -0
  91. package/dist/art/drawingboard/parts/title-underline-right.png +0 -0
  92. package/dist/art/drawingboard/parts/title-underline.png +0 -0
  93. package/dist/art/drawingboard/parts/up-off.png +0 -0
  94. package/dist/art/drawingboard/parts/up-on.png +0 -0
  95. package/dist/art/drawingboard/parts/up.png +0 -0
  96. package/dist/art/drawingboard/parts/zoom-on.png +0 -0
  97. package/dist/art/drawingboard/parts/zoom.png +0 -0
  98. package/dist/art/drawingboard/pens/button-bottom.png +0 -0
  99. package/dist/art/drawingboard/pens/button-corners.png +0 -0
  100. package/dist/art/drawingboard/pens/button-default-bottom-2.png +0 -0
  101. package/dist/art/drawingboard/pens/button-default-bottom-3.png +0 -0
  102. package/dist/art/drawingboard/pens/button-default-bottom.png +0 -0
  103. package/dist/art/drawingboard/pens/button-default-corner-bl.png +0 -0
  104. package/dist/art/drawingboard/pens/button-default-corner-br.png +0 -0
  105. package/dist/art/drawingboard/pens/button-default-corner-tl.png +0 -0
  106. package/dist/art/drawingboard/pens/button-default-corner-tr.png +0 -0
  107. package/dist/art/drawingboard/pens/button-default-left-2.png +0 -0
  108. package/dist/art/drawingboard/pens/button-default-left-3.png +0 -0
  109. package/dist/art/drawingboard/pens/button-default-left.png +0 -0
  110. package/dist/art/drawingboard/pens/button-default-right-2.png +0 -0
  111. package/dist/art/drawingboard/pens/button-default-right-3.png +0 -0
  112. package/dist/art/drawingboard/pens/button-default-right.png +0 -0
  113. package/dist/art/drawingboard/pens/button-default-top-2.png +0 -0
  114. package/dist/art/drawingboard/pens/button-default-top-3.png +0 -0
  115. package/dist/art/drawingboard/pens/button-default-top.png +0 -0
  116. package/dist/art/drawingboard/pens/button-held-bottom.png +0 -0
  117. package/dist/art/drawingboard/pens/button-held-corners.png +0 -0
  118. package/dist/art/drawingboard/pens/button-held-left.png +0 -0
  119. package/dist/art/drawingboard/pens/button-held-right.png +0 -0
  120. package/dist/art/drawingboard/pens/button-held-shade-bottom.png +0 -0
  121. package/dist/art/drawingboard/pens/button-held-shade-right.png +0 -0
  122. package/dist/art/drawingboard/pens/button-held-top.png +0 -0
  123. package/dist/art/drawingboard/pens/button-left.png +0 -0
  124. package/dist/art/drawingboard/pens/button-right.png +0 -0
  125. package/dist/art/drawingboard/pens/button-shade-bottom.png +0 -0
  126. package/dist/art/drawingboard/pens/button-shade-right.png +0 -0
  127. package/dist/art/drawingboard/pens/button-top.png +0 -0
  128. package/dist/art/drawingboard/pens/field-bottom.png +0 -0
  129. package/dist/art/drawingboard/pens/field-corners.png +0 -0
  130. package/dist/art/drawingboard/pens/field-left.png +0 -0
  131. package/dist/art/drawingboard/pens/field-right.png +0 -0
  132. package/dist/art/drawingboard/pens/field-top.png +0 -0
  133. package/dist/art/drawingboard/pens/popup-bottom.png +0 -0
  134. package/dist/art/drawingboard/pens/popup-corners.png +0 -0
  135. package/dist/art/drawingboard/pens/popup-disabled-bottom.png +0 -0
  136. package/dist/art/drawingboard/pens/popup-disabled-corners.png +0 -0
  137. package/dist/art/drawingboard/pens/popup-disabled-left.png +0 -0
  138. package/dist/art/drawingboard/pens/popup-disabled-right.png +0 -0
  139. package/dist/art/drawingboard/pens/popup-disabled-top.png +0 -0
  140. package/dist/art/drawingboard/pens/popup-left.png +0 -0
  141. package/dist/art/drawingboard/pens/popup-right.png +0 -0
  142. package/dist/art/drawingboard/pens/popup-top.png +0 -0
  143. package/dist/art/drawingboard/tab-paper.png +0 -0
  144. package/dist/art/drawingboard/track-h-bottom.png +0 -0
  145. package/dist/art/drawingboard/track-h-mid1.png +0 -0
  146. package/dist/art/drawingboard/track-h-mid2.png +0 -0
  147. package/dist/art/drawingboard/track-h-top.png +0 -0
  148. package/dist/art/drawingboard/track-v-left.png +0 -0
  149. package/dist/art/drawingboard/track-v-mid1.png +0 -0
  150. package/dist/art/drawingboard/track-v-mid2.png +0 -0
  151. package/dist/art/drawingboard/track-v-right.png +0 -0
  152. package/dist/art/drawingboard/window-bl-inactive.png +0 -0
  153. package/dist/art/drawingboard/window-bl.png +0 -0
  154. package/dist/art/drawingboard/window-bottom-inactive.png +0 -0
  155. package/dist/art/drawingboard/window-bottom.png +0 -0
  156. package/dist/art/drawingboard/window-br-inactive.png +0 -0
  157. package/dist/art/drawingboard/window-br.png +0 -0
  158. package/dist/art/drawingboard/window-left-inactive.png +0 -0
  159. package/dist/art/drawingboard/window-left.png +0 -0
  160. package/dist/art/drawingboard/window-right-inactive.png +0 -0
  161. package/dist/art/drawingboard/window-right.png +0 -0
  162. package/dist/art/drawingboard/window-tl-inactive.png +0 -0
  163. package/dist/art/drawingboard/window-tl.png +0 -0
  164. package/dist/art/drawingboard/window-top-inactive.png +0 -0
  165. package/dist/art/drawingboard/window-top.png +0 -0
  166. package/dist/art/drawingboard/window-tr-inactive.png +0 -0
  167. package/dist/art/drawingboard/window-tr.png +0 -0
  168. package/dist/art/drawingboard/window-ur-inactive.png +0 -0
  169. package/dist/art/drawingboard/window-ur.png +0 -0
  170. package/dist/clio.css +1998 -197
  171. package/dist/clio.drawingboard.css +3562 -0
  172. package/dist/clio.drawingboard.min.css +2 -0
  173. package/dist/clio.min.css +2 -2
  174. package/dist/clio.platinum.css +861 -149
  175. package/dist/clio.platinum.min.css +2 -2
  176. package/dist/clio.system6.css +598 -70
  177. package/dist/clio.system6.min.css +2 -2
  178. package/dist/clio.system7.css +2165 -0
  179. package/dist/clio.system7.min.css +2 -0
  180. package/dist/components.json +670 -141
  181. package/dist/fonts/ClioSans84.woff2 +0 -0
  182. package/dist/fonts/ClioSans97.woff2 +0 -0
  183. package/dist/fonts/ClioSans97Display.woff2 +0 -0
  184. package/dist/fonts/ClioSans97Exact.woff2 +0 -0
  185. package/dist/fonts/ClioSans97Title.woff2 +0 -0
  186. package/dist/fonts/ClioSans97TitleExact.woff2 +0 -0
  187. package/dist/fonts/ClioText84-9.woff2 +0 -0
  188. package/dist/fonts/ClioText84.woff2 +0 -0
  189. package/llms.txt +5 -4
  190. package/package.json +18 -4
@@ -1,12 +1,227 @@
1
- /*! clio.css 0.1.0 (System 6 only) | MIT | https://surfine.github.io/clio.css/
2
- * Classic Mac OS interface CSS: System 6 and Mac OS 9 Platinum.
1
+ /*! clio.css 0.9.0 (System 6 only) | MIT | https://surfine.github.io/clio.css/
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
- * Includes art from system.css (MIT) and classic-stylesheets (MIT); see THIRD-PARTY.md. */
5
- /* Fonts. Only two faces ship, both with a licence that allows it:
4
+ * Includes art from system.css (MIT) and pixel reconstructions of Apple control art; see THIRD-PARTY.md. */
5
+ /* Clio Sans '84: Chicago 12 rebuilt pixel for pixel from System 6.0.8
6
+ (fonts-src/clio-sans-84.txt). Every pixel is a square on a 1200-unit em, so
7
+ at 12px and its multiples it draws exactly the original bitmap. */
8
+ @font-face {
9
+ font-family: "Clio Sans '84";
10
+ src: url("fonts/ClioSans84.woff2") format("woff2");
11
+ font-display: swap;
12
+ }
13
+
14
+ /* Clio Text '84: Geneva 12, and Clio Text '84 9: Geneva 9, rebuilt the same
15
+ way (fonts-src/clio-text-84*.txt). */
16
+ @font-face {
17
+ font-family: "Clio Text '84";
18
+ src: url("fonts/ClioText84.woff2") format("woff2");
19
+ font-display: swap;
20
+ }
21
+
22
+ @font-face {
23
+ font-family: "Clio Text '84 9";
24
+ src: url("fonts/ClioText84-9.woff2") format("woff2");
25
+ font-display: swap;
26
+ }
27
+
28
+ /* Clio Sans '97: Charcoal 12 rebuilt the same way from Mac OS 9.0's Key Caps
29
+ (fonts-src/clio-sans-97.txt). Charcoal has one weight, so the face covers
30
+ every weight and the browser never thickens it. */
31
+ @font-face {
32
+ font-family: "Clio Sans '97";
33
+ src: url("fonts/ClioSans97.woff2") format("woff2");
34
+ font-weight: 100 900;
35
+ font-display: swap;
36
+ }
37
+
38
+ /* Clio Sans '97 Title: the same face as window titles draw it (a few faint
39
+ pixels fewer than menus and buttons), for title bars only. */
40
+ @font-face {
41
+ font-family: "Clio Sans '97 Title";
42
+ src: url("fonts/ClioSans97Title.woff2") format("woff2");
43
+ font-weight: 100 900;
44
+ font-display: swap;
45
+ }
46
+
47
+ /* Clio Sans '97 Exact and Clio Sans '97 Title Exact: the same glyphs with
48
+ each antialiasing level painted from a palette entry, so the palettes below
49
+ give, for clio.css's own title and button colours, the very pixels Mac OS
50
+ blends ((fg * a + bg * (255 - a)) >> 8). They ignore the text colour: a
51
+ page that recolours a title or a button label also sets --clio-font-window-title
52
+ or --clio-font-button back to a stack without "Exact", and gets Clio Sans
53
+ '97 in its colour, within one level of the real screen. */
54
+ @font-face {
55
+ font-family: "Clio Sans '97 Exact";
56
+ src: url("fonts/ClioSans97Exact.woff2") format("woff2");
57
+ font-weight: 100 900;
58
+ font-display: swap;
59
+ }
60
+
61
+ @font-face {
62
+ font-family: "Clio Sans '97 Title Exact";
63
+ src: url("fonts/ClioSans97TitleExact.woff2") format("woff2");
64
+ font-weight: 100 900;
65
+ font-display: swap;
66
+ }
67
+
68
+ /* Written by tooling/aa-palettes.py. */
69
+ @font-palette-values --clio-aa-p9-title {
70
+ font-family: "Clio Sans '97 Title Exact";
71
+ override-colors:
72
+ 0 #bebebe,
73
+ 1 #b0b0b0,
74
+ 2 #a2a2a2,
75
+ 3 #959595,
76
+ 4 #878787,
77
+ 5 #7a7a7a,
78
+ 6 #6c6c6c,
79
+ 7 #5f5f5f,
80
+ 8 #515151,
81
+ 9 #444444,
82
+ 10 #363636,
83
+ 11 #282828,
84
+ 12 #1b1b1b,
85
+ 13 #0d0d0d,
86
+ 14 #000000;
87
+ }
88
+
89
+ @font-palette-values --clio-aa-p9-title-inactive {
90
+ font-family: "Clio Sans '97 Title Exact";
91
+ override-colors:
92
+ 0 #c5c5c5,
93
+ 1 #bfbfbf,
94
+ 2 #bababa,
95
+ 3 #b4b4b4,
96
+ 4 #aeaeae,
97
+ 5 #a9a9a9,
98
+ 6 #a3a3a3,
99
+ 7 #9e9e9e,
100
+ 8 #989898,
101
+ 9 #929292,
102
+ 10 #8d8d8d,
103
+ 11 #878787,
104
+ 12 #818181,
105
+ 13 #7c7c7c,
106
+ 14 #777777;
107
+ }
108
+
109
+ @font-palette-values --clio-aa-p9-button {
110
+ font-family: "Clio Sans '97 Exact";
111
+ override-colors:
112
+ 0 #cecece,
113
+ 1 #bfbfbf,
114
+ 2 #b0b0b0,
115
+ 3 #a2a2a2,
116
+ 4 #939393,
117
+ 5 #848484,
118
+ 6 #757575,
119
+ 7 #676767,
120
+ 8 #585858,
121
+ 9 #494949,
122
+ 10 #3a3a3a,
123
+ 11 #2c2c2c,
124
+ 12 #1d1d1d,
125
+ 13 #0e0e0e,
126
+ 14 #000000;
127
+ }
128
+
129
+ @font-palette-values --clio-aa-p9-button-held {
130
+ font-family: "Clio Sans '97 Exact";
131
+ override-colors:
132
+ 0 #707070,
133
+ 1 #7a7a7a,
134
+ 2 #848484,
135
+ 3 #8e8e8e,
136
+ 4 #999999,
137
+ 5 #a3a3a3,
138
+ 6 #adadad,
139
+ 7 #b7b7b7,
140
+ 8 #c1c1c1,
141
+ 9 #cbcbcb,
142
+ 10 #d6d6d6,
143
+ 11 #e0e0e0,
144
+ 12 #eaeaea,
145
+ 13 #f4f4f4,
146
+ 14 #ffffff;
147
+ }
148
+
149
+ @font-palette-values --clio-aa-p9-button-disabled {
150
+ font-family: "Clio Sans '97 Exact";
151
+ override-colors:
152
+ 0 #d5d5d5,
153
+ 1 #cecece,
154
+ 2 #c7c7c7,
155
+ 3 #c1c1c1,
156
+ 4 #bababa,
157
+ 5 #b3b3b3,
158
+ 6 #acacac,
159
+ 7 #a5a5a5,
160
+ 8 #9f9f9f,
161
+ 9 #989898,
162
+ 10 #919191,
163
+ 11 #8a8a8a,
164
+ 12 #848484,
165
+ 13 #7d7d7d,
166
+ 14 #777777;
167
+ }
168
+
169
+ @font-palette-values --clio-aa-db-button {
170
+ font-family: "Clio Sans '97 Exact";
171
+ override-colors:
172
+ 0 #c3bcac,
173
+ 1 #b9b2a3,
174
+ 2 #aea89a,
175
+ 3 #a49e91,
176
+ 4 #999488,
177
+ 5 #8f8a80,
178
+ 6 #848077,
179
+ 7 #7a766e,
180
+ 8 #6f6c65,
181
+ 9 #65625d,
182
+ 10 #5a5854,
183
+ 11 #504e4b,
184
+ 12 #454442,
185
+ 13 #3b3a39,
186
+ 14 #313131;
187
+ }
188
+
189
+ @font-palette-values --clio-aa-db-button-disabled {
190
+ font-family: "Clio Sans '97 Exact";
191
+ override-colors:
192
+ 0 #cac2b2,
193
+ 1 #c6bfaf,
194
+ 2 #c3bcad,
195
+ 3 #c0b9ab,
196
+ 4 #bdb6a9,
197
+ 5 #bab3a7,
198
+ 6 #b7b0a4,
199
+ 7 #b4ada2,
200
+ 8 #b1aaa0,
201
+ 9 #ada89e,
202
+ 10 #aaa59c,
203
+ 11 #a7a299,
204
+ 12 #a49f97,
205
+ 13 #a19c95,
206
+ 14 #9c9c94;
207
+ }
208
+
209
+ /* Clio Sans '97 Display: Charcoal's outlines, traced from Mac OS 9.0 drawing it
210
+ at 72 points (fonts/ClioSans97Display.woff2, tooling/trace-outline.py), for
211
+ every size that is not 12px or a multiple of it. */
212
+ @font-face {
213
+ font-family: "Clio Sans '97 Display";
214
+ src: url("fonts/ClioSans97Display.woff2") format("woff2");
215
+ font-weight: 100 900;
216
+ font-display: swap;
217
+ }
218
+
219
+ /* Other fonts, each with a licence that allows it:
6
220
  - ChicagoFLF: a public-domain outline revival of Chicago (Robin Casady).
7
221
  - Asap (variable, wdth + wght): SIL OFL 1.1, Omnibus-Type. The legal
8
222
  stand-in for Charcoal that AI System 6 measured its Platinum title bar
9
- against (width axis 113 for text, 123 for titles).
223
+ against (width axis 113 for text, 123 for titles); now the fallback
224
+ behind Clio Sans '97.
10
225
  Apple's own faces (Chicago, Geneva, Charcoal, Monaco) are never shipped;
11
226
  the stacks below reach them only when the visitor already has them. */
12
227
  @font-face {
@@ -25,7 +240,9 @@
25
240
  font-display: swap;
26
241
  }
27
242
 
28
- /* Tokens: Macintosh System 6 is the default era.
243
+ /* Tokens: Macintosh System 6 is the default era. Measured values come from
244
+ System 6.0.8 running in Infinite Mac, read from the emulator canvas 1:1
245
+ (tooling/capture-system6.mjs).
29
246
  Every value below is traceable in EVIDENCE.md. A value marked [M] there was
30
247
  measured from real pixels; [I] is inferred; [A] is a deliberate web
31
248
  adaptation (contrast, focus, touch). Platinum re-declares these tokens in
@@ -39,15 +256,30 @@
39
256
  /* [A] Disabled text: System 6 drew it through a 50% grey pattern; a solid
40
257
  grey keeps 5.6:1 on white instead of a dither the browser would blur. */
41
258
  --clio-disabled: #696969;
259
+ /* Dimmed text is drawn through QuickDraw's 50% gray pattern, aligned to the
260
+ screen: the ink where x + y is odd survives (measured, File menu). The
261
+ pattern is fixed to the viewport the same way; #696969 is only the
262
+ fallback colour where background-clip: text is missing. */
263
+ --clio-disabled-dither: var(--clio-art-s6-gray50);
264
+ --clio-disabled-fill: transparent;
42
265
  --clio-selection-bg: #000000;
43
266
  --clio-selection-fg: #ffffff;
44
267
 
45
268
  /* Type. Chicago 12 is the system font; Geneva is the application font. */
46
- --clio-font-chrome: Chicago, "ChicagoFLF", Charcoal, Geneva, "Helvetica Neue", Arial, sans-serif;
47
- --clio-font-text: Geneva, "Clio Asap", "Helvetica Neue", Arial, sans-serif;
269
+ --clio-font-chrome: "Clio Sans '84", Chicago, "ChicagoFLF", Charcoal, Geneva, "Helvetica Neue", Arial, sans-serif;
270
+ --clio-font-text: "Clio Text '84", Geneva, "Helvetica Neue", Arial, sans-serif;
271
+ /* Geneva 9: the Finder info line, icon names, status lines. */
272
+ --clio-font-small: "Clio Text '84 9", Geneva, "Helvetica Neue", Arial, sans-serif;
273
+ --clio-text-smoothing: none;
48
274
  --clio-font-mono: Monaco, Menlo, Consolas, "Courier New", monospace;
275
+ /* Chrome type at sizes other than 12px and its multiples (.display): an
276
+ outline face, smoothed. */
277
+ --clio-font-display: Chicago, "ChicagoFLF", Charcoal, "Helvetica Neue", Arial, sans-serif;
49
278
  --clio-font-size: 12px;
50
- --clio-font-size-small: 10px;
279
+ /* A bitmap face: no antialiasing, so a glyph on a half pixel stays 1-bit. */
280
+ --clio-font-smoothing: none;
281
+ /* Geneva 9: the Finder info line and icon names. */
282
+ --clio-font-size-small: 9px;
51
283
  --clio-chrome-weight: 400;
52
284
  --clio-font-stretch-text: normal;
53
285
  --clio-font-stretch-title: normal;
@@ -97,7 +329,8 @@
97
329
  --clio-shade-display: none;
98
330
  --clio-box-size: 11px;
99
331
  --clio-box-inset: 7px;
100
- --clio-box-isolation: 3px;
332
+ /* 1px of paper between a box and the stripes (HD window, 6.0.8). */
333
+ --clio-box-isolation: 1px;
101
334
 
102
335
  /* Menus */
103
336
  --clio-menubar-height: 20px;
@@ -105,39 +338,57 @@
105
338
  --clio-menubar-border: 1px solid var(--clio-ink);
106
339
  --clio-menubar-shadow: none;
107
340
  --clio-menubar-padding: 0 8px;
108
- --clio-menu-title-padding: 0 8px;
341
+ /* "File" highlight is 41px wide: about 9px each side of the word. */
342
+ --clio-menu-title-padding: 0 9px;
343
+ /* The open title's highlight leaves the bar's top row white. */
344
+ --clio-menu-title-inset: 1px;
109
345
  --clio-menu-title-active-bg: var(--clio-ink);
110
346
  --clio-menu-title-active-fg: var(--clio-paper);
111
347
  --clio-menu-title-active-shadow: none;
112
348
  --clio-menu-bg: var(--clio-paper);
113
349
  --clio-menu-border: 1px solid var(--clio-ink);
114
- --clio-menu-border-top-width: 1px;
350
+ /* A menu hangs from the bar's own rule; it draws no top line. */
351
+ --clio-menu-border-top-width: 0;
115
352
  --clio-menu-shadow: 1px 1px 0 var(--clio-ink);
116
353
  --clio-menu-item-height: 16px;
117
- --clio-menu-item-padding: 0 12px 0 16px;
354
+ --clio-menu-item-padding: 0 12px 0 13px;
118
355
  --clio-menu-item-weight: 400;
119
356
  --clio-menu-item-active-bg: var(--clio-ink);
120
357
  --clio-menu-item-active-fg: var(--clio-paper);
121
358
  --clio-menu-item-active-shadow: none;
359
+ /* A full 16px row with a 1-on 1-off dotted rule on its ninth line. */
122
360
  --clio-menu-separator:
123
- repeating-linear-gradient(to right, var(--clio-ink) 0 1px, transparent 1px 2px) 0 50% / 100% 1px no-repeat;
361
+ repeating-linear-gradient(to right, var(--clio-ink) 0 1px, transparent 1px 2px) 0 8px / 100% 1px no-repeat;
124
362
  --clio-menu-separator-height: 16px;
125
363
 
126
364
  /* Push buttons */
127
365
  --clio-button-bg: var(--clio-paper);
128
366
  --clio-button-fg: var(--clio-ink);
129
367
  --clio-button-border: 1px solid var(--clio-ink);
130
- --clio-button-radius: 7px;
368
+ /* 20px tall; the corner steps in 3, 1, 1 pixels on its first three rows
369
+ (OK and Cancel, 6.0.8), which a 4.5px radius reproduces exactly. */
370
+ /* The frame and the default ring are the real pixel staircases, cut from
371
+ System 6.0.8's Alert and Save dialog (tooling/frame-art.py) and drawn with
372
+ border-image; border-radius would antialias an arc. */
373
+ --clio-button-radius: 0;
374
+ --clio-button-frame: var(--clio-art-frame-s6-button);
375
+ --clio-button-frame-held: var(--clio-art-frame-s6-button-held);
376
+ --clio-button-frame-slice: 4;
377
+ --clio-ring-frame: var(--clio-art-frame-s6-ring);
378
+ --clio-ring-frame-slice: 7;
379
+ --clio-popup-frame: none;
380
+ --clio-popup-frame-slice: 3;
131
381
  --clio-button-shadow: 0 0 0 0 transparent;
132
382
  --clio-button-padding: 0 12px;
133
383
  --clio-button-min-width: 59px;
134
384
  --clio-button-weight: 400;
135
- --clio-button-active-bg: var(--clio-ink);
385
+ --clio-button-active-bg: transparent; /* the held frame carries the ink face */
136
386
  --clio-button-active-fg: var(--clio-paper);
137
387
  --clio-button-active-shadow: 0 0 0 0 transparent;
138
388
  /* Default button: Inside Macintosh's recipe is PenSize(3,3) around the
139
389
  button inset by -4, so a 1px gap then a 3px ring. */
140
- --clio-button-default-ring: 0 0 0 1px var(--clio-paper), 0 0 0 4px var(--clio-ink);
390
+ --clio-button-default-gap: 1px;
391
+ --clio-button-default-width: 3px;
141
392
  --clio-button-default-radius: 8px;
142
393
  --clio-button-disabled-fg: var(--clio-disabled);
143
394
  --clio-button-disabled-border: 1px solid var(--clio-ink);
@@ -160,7 +411,8 @@
160
411
  --clio-field-bg: var(--clio-paper);
161
412
  --clio-field-border: 1px solid var(--clio-ink);
162
413
  --clio-field-shadow: none;
163
- --clio-field-padding: 2px 3px;
414
+ /* Edit text: 1px frame, text inset 3px (Control Panel RAM cache field). */
415
+ --clio-field-padding: 3px;
164
416
  --clio-field-focus-shadow: none;
165
417
 
166
418
  /* Pop-up menus */
@@ -168,13 +420,18 @@
168
420
  --clio-popup-border: 1px solid var(--clio-ink);
169
421
  --clio-popup-radius: 0;
170
422
  --clio-popup-shadow: 1px 1px 0 var(--clio-ink);
171
- --clio-popup-padding: 0 24px 0 6px;
172
- --clio-popup-arrow: var(--clio-art-s6-popup) right 6px center / 11px 6px no-repeat;
423
+ /* System 6 pop-up (Standard File folder menu, 6.0.8): an 18px box, 1px
424
+ frame, 1px shadow, no arrow; held, it inverts. */
425
+ --clio-popup-height: 18px;
426
+ --clio-popup-padding: 0 8px;
427
+ --clio-popup-arrow: none;
173
428
  --clio-popup-weight: 400;
174
429
 
175
430
  /* Scroll bars */
176
- --clio-scrollbar-size: 16px;
177
- --clio-scrollbar-track: var(--clio-art-s6-desktop) 0 0 / 2px 2px repeat, #808080;
431
+ /* The lane line plus 14px; the window frame is the 16th line. The lane is
432
+ QuickDraw's ltGray, one dot in four. */
433
+ --clio-scrollbar-size: 15px;
434
+ --clio-scrollbar-track: var(--clio-art-s6-ltgray) 0 0 / 4px 2px repeat, #ffffff;
178
435
  --clio-scrollbar-track-shadow: none;
179
436
  --clio-scrollbar-thumb-bg: var(--clio-paper);
180
437
  --clio-scrollbar-thumb-border: 1px solid var(--clio-ink);
@@ -192,17 +449,22 @@
192
449
 
193
450
  /* Dialogs */
194
451
  --clio-dialog-bg: var(--clio-paper);
195
- /* [I] dBoxProc: a 1px frame, a 1px paper gap, then a 2px ink border. */
452
+ /* Modal frame (stop alert, 6.0.8): 1px ink, 2px paper, 2px ink; no shadow. */
196
453
  --clio-modal-border: 1px solid var(--clio-ink);
197
- --clio-modal-frame: inset 0 0 0 1px var(--clio-paper), inset 0 0 0 3px var(--clio-ink);
198
- --clio-modal-padding: 16px 18px;
454
+ --clio-modal-frame: inset 0 0 0 2px var(--clio-paper), inset 0 0 0 4px var(--clio-ink);
455
+ --clio-modal-padding: 18px 20px;
199
456
  --clio-plain-dialog-border: 1px solid var(--clio-ink);
200
457
  --clio-plain-dialog-shadow: 2px 2px 0 var(--clio-ink);
201
458
 
202
459
  /* Bars, lists, groups, progress, tabs */
203
460
  --clio-details-bg: var(--clio-paper);
204
- /* [I] Finder's info line closes with two 1px rules. */
461
+ /* Finder's info line: 17 rows of Geneva 9, closed by 1px ink, 1px paper,
462
+ 1px ink. */
205
463
  --clio-details-border: 3px double var(--clio-ink);
464
+ --clio-details-font-size: 9px;
465
+ --clio-details-height: 17px;
466
+ --clio-details-padding: 0 15px;
467
+ --clio-scrollbar-corner: var(--clio-art-s6-grow) 0 0 / 14px 14px no-repeat, var(--clio-paper);
206
468
  --clio-list-bg: var(--clio-paper);
207
469
  --clio-list-border: 1px solid var(--clio-ink);
208
470
  --clio-list-shadow: none;
@@ -214,7 +476,8 @@
214
476
  --clio-progress-bg: var(--clio-paper);
215
477
  --clio-progress-border: 1px solid var(--clio-ink);
216
478
  --clio-progress-shadow: none;
217
- --clio-progress-fill: var(--clio-ink);
479
+ /* Finder copy progress (6.0.8): 12px, 1px frame, dkGray fill. */
480
+ --clio-progress-fill: var(--clio-art-s6-dkgray) 0 0 / 4px 2px repeat, var(--clio-ink);
218
481
  --clio-tab-height: 20px;
219
482
  --clio-tab-bg: var(--clio-paper);
220
483
  --clio-tab-active-bg: var(--clio-paper);
@@ -224,6 +487,31 @@
224
487
  --clio-label-fg: var(--clio-ink);
225
488
  --clio-label-selected-bg: var(--clio-ink);
226
489
  --clio-label-selected-fg: var(--clio-paper);
490
+
491
+ /* Control Strip: System 6 had none; drawn here in its ink and paper, at the
492
+ Mac OS 9 geometry (adapted). */
493
+ --clio-strip-height: 24px;
494
+ --clio-strip-bg: var(--clio-paper);
495
+ --clio-strip-line: 1px solid var(--clio-ink);
496
+ --clio-strip-cell-shadow: none;
497
+ --clio-strip-sunken-shadow: none;
498
+ --clio-strip-sunken-lines: linear-gradient(transparent, transparent);
499
+ --clio-strip-pressed-bg: var(--clio-ink);
500
+ --clio-strip-pressed-shadow: inset 0 0 0 2px var(--clio-paper);
501
+ --clio-strip-cap-width: 13px;
502
+ --clio-strip-scroll-width: 13px;
503
+ --clio-strip-module-width: 30px;
504
+ --clio-strip-icon-inset: 2px;
505
+ --clio-strip-menu-top: 7px;
506
+ --clio-strip-menu-inset: 4px;
507
+ --clio-strip-handle-width: 18px;
508
+ --clio-strip-tab-width: 18px;
509
+ --clio-strip-cap: var(--clio-art-s6-strip-cap);
510
+ --clio-strip-back: var(--clio-art-s6-strip-back);
511
+ --clio-strip-forward: var(--clio-art-s6-strip-forward);
512
+ --clio-strip-menu: var(--clio-art-s6-strip-menu);
513
+ --clio-strip-handle: var(--clio-art-s6-strip-handle);
514
+ --clio-strip-tab: var(--clio-art-s6-strip-tab);
227
515
  }
228
516
 
229
517
  /* Inline art. Pixel-grid SVGs, never Apple bitmaps: the System 6 check, radio
@@ -235,20 +523,41 @@
235
523
  --clio-art-s6-radio: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' shape-rendering='crispEdges'%3E%3Cpath d='M4 0h4v1H4zM0 4h1v4H0zM11 4h1v4h-1zM2 1h2v1H2zM8 1h2v1H8zM10 2h1v2h-1zM1 2h1v2H1zM4 11h4v1H4zM2 10h2v1H2zM8 10h2v1H8zM10 8h1v2h-1zM1 8h1v2H1z'/%3E%3C/svg%3E");
236
524
  --clio-art-s6-radio-focus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' shape-rendering='crispEdges'%3E%3Cpath d='M4 0h4v2H4zM0 4h2v4H0zM10 4h2v4h-2zM2 1h2v2H2zM8 1h2v2H8zM9 2h2v2H9zM1 2h2v2H1zM4 10h4v2H4zM2 9h2v2H2zM8 9h2v2H8zM9 8h2v2H9zM1 8h2v2H1z'/%3E%3C/svg%3E");
237
525
  --clio-art-s6-radio-dot: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' shape-rendering='crispEdges'%3E%3Cpath d='M1 0h4v1H1zM1 5h4v1H1zM0 1h6v4H0z'/%3E%3C/svg%3E");
238
- --clio-art-s6-up: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpolygon points='8.5,3.5 14.5,9.5 11.5,9.5 11.5,13.5 5.5,13.5 5.5,9.5 2.5,9.5' fill='%23fff' stroke='%23000' stroke-width='1' shape-rendering='crispEdges'/%3E%3C/svg%3E");
239
- --clio-art-s6-up-on: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpolygon points='8.5,3.5 14.5,9.5 11.5,9.5 11.5,13.5 5.5,13.5 5.5,9.5 2.5,9.5' fill='%23000' stroke='%23000' stroke-width='1' shape-rendering='crispEdges'/%3E%3C/svg%3E");
240
- --clio-art-s6-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpolygon points='8.5,13.5 14.5,7.5 11.5,7.5 11.5,3.5 5.5,3.5 5.5,7.5 2.5,7.5' fill='%23fff' stroke='%23000' stroke-width='1' shape-rendering='crispEdges'/%3E%3C/svg%3E");
241
- --clio-art-s6-down-on: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpolygon points='8.5,13.5 14.5,7.5 11.5,7.5 11.5,3.5 5.5,3.5 5.5,7.5 2.5,7.5' fill='%23000' stroke='%23000' stroke-width='1' shape-rendering='crispEdges'/%3E%3C/svg%3E");
242
- --clio-art-s6-left: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpolygon points='3.5,8.5 9.5,14.5 9.5,11.5 13.5,11.5 13.5,5.5 9.5,5.5 9.5,2.5' fill='%23fff' stroke='%23000' stroke-width='1' shape-rendering='crispEdges'/%3E%3C/svg%3E");
243
- --clio-art-s6-left-on: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpolygon points='3.5,8.5 9.5,14.5 9.5,11.5 13.5,11.5 13.5,5.5 9.5,5.5 9.5,2.5' fill='%23000' stroke='%23000' stroke-width='1' shape-rendering='crispEdges'/%3E%3C/svg%3E");
244
- --clio-art-s6-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpolygon points='13.5,8.5 7.5,14.5 7.5,11.5 3.5,11.5 3.5,5.5 7.5,5.5 7.5,2.5' fill='%23fff' stroke='%23000' stroke-width='1' shape-rendering='crispEdges'/%3E%3C/svg%3E");
245
- --clio-art-s6-right-on: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpolygon points='13.5,8.5 7.5,14.5 7.5,11.5 3.5,11.5 3.5,5.5 7.5,5.5 7.5,2.5' fill='%23000' stroke='%23000' stroke-width='1' shape-rendering='crispEdges'/%3E%3C/svg%3E");
246
- --clio-art-s6-popup: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='6' shape-rendering='crispEdges'%3E%3Cpath d='M0 0h11v1H0zM1 1h9v1H1zM2 2h7v1H2zM3 3h5v1H3zM4 4h3v1H4zM5 5h1v1H5z'/%3E%3C/svg%3E");
247
526
  --clio-art-s6-submenu: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='11'%3E%3Cpath d='m0 0 6 5.5L0 11Z'/%3E%3C/svg%3E");
248
527
  --clio-art-s6-submenu-on: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='11'%3E%3Cpath fill='%23fff' d='m0 0 6 5.5L0 11Z'/%3E%3C/svg%3E");
249
- --clio-art-s6-menucheck: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' shape-rendering='crispEdges'%3E%3Cpath d='M9 0h1v2H9zM8 2h1v2H8zM7 4h1v2H7zM6 5h1v2H6zM5 6h1v3H5zM4 7h1v3H4zM3 6h1v3H3zM2 5h1v2H2zM1 4h1v2H1zM0 4h1v1H0z'/%3E%3C/svg%3E");
250
- --clio-art-s6-menucheck-on: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff' d='M9 0h1v2H9zM8 2h1v2H8zM7 4h1v2H7zM6 5h1v2H6zM5 6h1v3H5zM4 7h1v3H4zM3 6h1v3H3zM2 5h1v2H2zM1 4h1v2H1zM0 4h1v1H0z'/%3E%3C/svg%3E");
251
528
  --clio-art-s6-desktop: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2' shape-rendering='crispEdges'%3E%3Cpath d='M0 0h1v1H0zM1 1h1v1H1z'/%3E%3Cpath fill='%23fff' d='M1 0h1v1H1zM0 1h1v1H0z'/%3E%3C/svg%3E");
529
+ /* Measured from System 6.0.8 (tooling/s6-art.py). */
530
+ --clio-art-s6-up: 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='M6 2h1v1h-1zM5 3h3v1h-3zM4 4h5v1h-5zM3 5h7v1h-7zM2 6h9v1h-9zM4 7h5v1h-5zM4 8h5v1h-5zM4 9h5v1h-5zM4 10h5v1h-5z'/%3E%3Cpath fill='%23000' d='M6 1h1v1h-1zM5 2h1v1h-1zM7 2h1v1h-1zM4 3h1v1h-1zM8 3h1v1h-1zM3 4h1v1h-1zM9 4h1v1h-1zM2 5h1v1h-1zM10 5h1v1h-1zM1 6h1v1h-1zM11 6h1v1h-1zM0 7h4v1h-4zM9 7h4v1h-4zM3 8h1v1h-1zM9 8h1v1h-1zM3 9h1v1h-1zM9 9h1v1h-1zM3 10h1v1h-1zM9 10h1v1h-1zM3 11h7v1h-7z'/%3E%3C/svg%3E");
531
+ --clio-art-s6-up-on: 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 2h3v1h-3zM4 3h5v1h-5zM3 4h7v1h-7zM2 5h9v1h-9zM1 6h11v1h-11zM0 7h13v1h-13zM3 8h7v1h-7zM3 9h7v1h-7zM3 10h7v1h-7zM3 11h7v1h-7z'/%3E%3C/svg%3E");
532
+ --clio-art-s6-down: 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='M4 3h5v1h-5zM4 4h5v1h-5zM4 5h5v1h-5zM4 6h5v1h-5zM2 7h9v1h-9zM3 8h7v1h-7zM4 9h5v1h-5zM5 10h3v1h-3zM6 11h1v1h-1z'/%3E%3Cpath fill='%23000' d='M3 2h7v1h-7zM3 3h1v1h-1zM9 3h1v1h-1zM3 4h1v1h-1zM9 4h1v1h-1zM3 5h1v1h-1zM9 5h1v1h-1zM0 6h4v1h-4zM9 6h4v1h-4zM1 7h1v1h-1zM11 7h1v1h-1zM2 8h1v1h-1zM10 8h1v1h-1zM3 9h1v1h-1zM9 9h1v1h-1zM4 10h1v1h-1zM8 10h1v1h-1zM5 11h1v1h-1zM7 11h1v1h-1zM6 12h1v1h-1z'/%3E%3C/svg%3E");
533
+ --clio-art-s6-down-on: 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='M3 2h7v1h-7zM3 3h7v1h-7zM3 4h7v1h-7zM3 5h7v1h-7zM0 6h13v1h-13zM1 7h11v1h-11zM2 8h9v1h-9zM3 9h7v1h-7zM4 10h5v1h-5zM5 11h3v1h-3z'/%3E%3C/svg%3E");
534
+ --clio-art-s6-left: 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='M5 2h1v1h-1zM4 3h2v1h-2zM3 4h7v1h-7zM2 5h8v1h-8zM1 6h9v1h-9zM2 7h8v1h-8zM3 8h7v1h-7zM4 9h2v1h-2zM5 10h1v1h-1z'/%3E%3Cpath fill='%23000' d='M6 0h1v1h-1zM5 1h2v1h-2zM4 2h1v1h-1zM6 2h1v1h-1zM3 3h1v1h-1zM6 3h5v1h-5zM2 4h1v1h-1zM10 4h1v1h-1zM1 5h1v1h-1zM10 5h1v1h-1zM0 6h1v1h-1zM10 6h1v1h-1zM1 7h1v1h-1zM10 7h1v1h-1zM2 8h1v1h-1zM10 8h1v1h-1zM3 9h1v1h-1zM6 9h5v1h-5zM4 10h1v1h-1zM6 10h1v1h-1zM5 11h2v1h-2zM6 12h1v1h-1z'/%3E%3C/svg%3E");
535
+ --clio-art-s6-left-on: 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='M6 0h1v1h-1zM5 1h2v1h-2zM4 2h3v1h-3zM3 3h8v1h-8zM2 4h9v1h-9zM1 5h10v1h-10zM1 6h10v1h-10zM1 7h10v1h-10zM2 8h9v1h-9zM3 9h8v1h-8zM4 10h3v1h-3zM5 11h2v1h-2zM6 12h1v1h-1z'/%3E%3C/svg%3E");
536
+ --clio-art-s6-right: 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='M8 2h1v1h-1zM8 3h2v1h-2zM4 4h7v1h-7zM4 5h8v1h-8zM4 6h9v1h-9zM4 7h8v1h-8zM4 8h7v1h-7zM8 9h2v1h-2zM8 10h1v1h-1z'/%3E%3Cpath fill='%23000' d='M7 0h1v1h-1zM7 1h2v1h-2zM7 2h1v1h-1zM9 2h1v1h-1zM3 3h5v1h-5zM10 3h1v1h-1zM3 4h1v1h-1zM11 4h1v1h-1zM3 5h1v1h-1zM12 5h1v1h-1zM3 6h1v1h-1zM13 6h1v1h-1zM3 7h1v1h-1zM12 7h1v1h-1zM3 8h1v1h-1zM11 8h1v1h-1zM3 9h5v1h-5zM10 9h1v1h-1zM7 10h1v1h-1zM9 10h1v1h-1zM7 11h2v1h-2zM7 12h1v1h-1z'/%3E%3C/svg%3E");
537
+ --clio-art-s6-right-on: 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='M7 0h1v1h-1zM7 1h2v1h-2zM7 2h3v1h-3zM3 3h8v1h-8zM3 4h9v1h-9zM3 5h10v1h-10zM3 6h10v1h-10zM3 7h10v1h-10zM3 8h9v1h-9zM3 9h8v1h-8zM7 10h3v1h-3zM7 11h2v1h-2zM7 12h1v1h-1z'/%3E%3C/svg%3E");
538
+ --clio-art-s6-burst: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' shape-rendering='crispEdges'%3E%3Cpath fill='%23000' d='M5 1h1v1h-1zM2 2h1v1h-1zM5 2h1v1h-1zM8 2h1v1h-1zM3 3h1v1h-1zM5 3h1v1h-1zM7 3h1v1h-1zM1 5h3v1h-3zM5 5h1v1h-1zM7 5h3v1h-3zM3 7h1v1h-1zM5 7h1v1h-1zM7 7h1v1h-1zM2 8h1v1h-1zM5 8h1v1h-1zM8 8h1v1h-1zM5 9h1v1h-1z'/%3E%3C/svg%3E");
539
+ --clio-art-s6-ltgray: 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 1h1v1h-1z'/%3E%3Cpath fill='%23fff' d='M1 0h3v1h-3zM0 1h2v1h-2zM3 1h1v1h-1z'/%3E%3C/svg%3E");
540
+ --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");
541
+ --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");
542
+ --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");
543
+ /* Frames cut from captures by tooling/frame-art.py. */
544
+ --clio-art-frame-s6-button: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAAAAAAD///+D3c/SAAAAAXRSTlMAQObYZgAAACpJREFUeJxjYAxgYBINZWBiYWFgCmB0YGJgYABhBqmVDEx//jAwMAYwAAA66QRtNyAoFwAAAABJRU5ErkJggg==");
545
+ --clio-art-frame-s6-button-held: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAAB1JREFUeJxjkGFgSmZgYmBg/N/IxABiMNSDSRkGACm1Aqb7EOVpAAAAAElFTkSuQmCC");
546
+ --clio-art-frame-s6-ring: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPAQMAAAABGAcJAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAADRJREFUeJxjYD/AIP+BSYGDsYaB5csahg9yTB8+MDEwgJCAAFPDPyaeBAb7H0wPfjCwHwAAEpMM/gNXK+MAAAAASUVORK5CYII=");
547
+ --clio-art-frame-p9-button: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAGFBMVEUAAAAAAAB3d3fd3d27u7uqqqoiIiL///+EaqngAAAAAXRSTlMAQObYZgAAADxJREFUeJxjYEgUTGBgYnyk9JCBMUWYYa8O03qGPXIbmBj+MDAwMIERY8pFhbN2jIyOD/7fZ/ov/96eAQBghg8JraaOFgAAAABJRU5ErkJggg==");
548
+ --clio-art-frame-p9-button-held: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAGFBMVEUAAAAAAAB3d3dVVVVmZmYiIiKIiIhEREQ39d/AAAAAAXRSTlMAQObYZgAAAD9JREFUeJxjYAgUDGBgYVRT+8XAGC5zgJ+PUVxG8NErJgZGBgYGJgaGfwwMLA6vH7i8YmRUdfg9n+m/9ur3DAAxwg5nPuolSwAAAABJRU5ErkJggg==");
549
+ --clio-art-frame-p9-ring: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANBAMAAACAxflPAAAAG1BMVEUAAAAAAAB3d3fd3d3MzMy7u7uqqqoiIiKIiIhznn7oAAAAAXRSTlMAQObYZgAAAFpJREFUeJxjZGDnYmB7ycDCwKPAwPjzAwujgjEDg+x6xuLDrx6oOXEwCCcxMDAlCTAx/GMAISYGCEDQTGAOUyKLAoOKQgIjY6gAA9PO+4wMElwMDO8+MELNBwCaGBDQEM8mggAAAABJRU5ErkJggg==");
550
+ --clio-art-frame-p9-button-disabled: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAACIiIjd3d2RXqmqAAAAAXRSTlMAQObYZgAAACFJREFUeJxjYA1hYBINZWAKYHRgYmBgQMYMUisZGFhDGAAtsQJ9dgAT/gAAAABJRU5ErkJggg==");
551
+ --clio-art-frame-p9-popup: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAGFBMVEUAAAAAAAB3d3fd3d27u7uqqqoiIiL///+EaqngAAAAAXRSTlMAQObYZgAAACtJREFUeJxjYEhMYGBi5H/IwJh+klWbQYCBQYAl/OQnOwbGAEUGpv+C9gwAea0HTcaLsPwAAAAASUVORK5CYII=");
552
+ --clio-art-frame-p9-popup-disabled: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHAgMAAAC5PL9AAAAACVBMVEUAAACIiIjd3d2RXqmqAAAAAXRSTlMAQObYZgAAAB1JREFUeJxjZLVmEg5gChBhcGBh0ljAtOENI6s1ACDmA/qjrWTUAAAAAElFTkSuQmCC");
553
+ --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");
554
+ --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");
555
+ --clio-art-s6-strip-cap: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='24' shape-rendering='crispEdges'%3E%3Cpath fill='%23fff' d='M1 1h13v22H1z'/%3E%3Cpath d='M0 0h15v1H0zM0 23h15v1H0zM0 1h1v22H0zM14 1h1v22h-1zM3 8h8v1H3zM3 15h8v1H3zM3 9h1v6H3zM10 9h1v6h-1z'/%3E%3C/svg%3E");
556
+ --clio-art-s6-strip-back: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' shape-rendering='crispEdges'%3E%3Cpath d='M4 1h1v8H4zM3 2h1v6H3zM2 3h1v4H2zM1 4h1v2H1z'/%3E%3C/svg%3E");
557
+ --clio-art-s6-strip-forward: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' shape-rendering='crispEdges'%3E%3Cpath d='M5 1h1v8H5zM6 2h1v6H6zM7 3h1v4H7zM8 4h1v2H8z'/%3E%3C/svg%3E");
558
+ --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");
559
+ --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");
560
+ --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");
252
561
  }
253
562
 
254
563
  /* Base. clio.css styles elements only inside its own components, plus bare
@@ -272,7 +581,7 @@
272
581
  font-stretch: var(--clio-font-stretch-text);
273
582
  font-synthesis: none;
274
583
  line-height: 16px;
275
- -webkit-font-smoothing: auto;
584
+ -webkit-font-smoothing: var(--clio-font-smoothing);
276
585
  }
277
586
 
278
587
  :where(.window, .modal-dialog, .alert-box, .standard-dialog, .modeless-dialog, .clio) *,
@@ -282,9 +591,10 @@
282
591
  }
283
592
 
284
593
  /* Application text (Geneva role) for content areas. */
285
- :where(.window-pane, .modal-contents, .alert-contents, .text) {
594
+ :where(.window-pane, .modal-contents, .alert-contents, .text, .details-bar, .listbox, [role="listbox"], .status-bar, .icon, input, textarea) {
286
595
  font-family: var(--clio-font-text);
287
596
  font-stretch: var(--clio-font-stretch-text);
597
+ -webkit-font-smoothing: var(--clio-text-smoothing);
288
598
  }
289
599
 
290
600
  :where(.window, .modal-dialog, .alert-box, .standard-dialog, .clio) :where(h1, h2, h3, h4, .heading) {
@@ -295,6 +605,11 @@
295
605
  line-height: 16px;
296
606
  }
297
607
 
608
+ :where(.display) {
609
+ font-family: var(--clio-font-display);
610
+ -webkit-font-smoothing: auto;
611
+ }
612
+
298
613
  :where(.window, .modal-dialog, .alert-box, .standard-dialog, .clio) :where(p) {
299
614
  margin: 0 0 8px;
300
615
  }
@@ -409,7 +724,7 @@
409
724
  overflow: hidden;
410
725
  background: var(--clio-title-bg);
411
726
  color: var(--clio-title-fg);
412
- font-family: var(--clio-font-chrome);
727
+ font-family: var(--clio-font-window-title, var(--clio-font-chrome));
413
728
  font-size: var(--clio-title-font-size);
414
729
  font-stretch: var(--clio-font-stretch-title);
415
730
  font-weight: var(--clio-chrome-weight);
@@ -460,17 +775,10 @@
460
775
  justify-self: end;
461
776
  }
462
777
 
463
- /* Pressed close box: the starburst System 6 draws while the mouse is held. */
464
- .title-bar > :is(.close, .close-box)::before {
465
- content: "";
466
- position: absolute;
467
- inset: -1px;
468
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' shape-rendering='crispEdges'%3E%3Cpath d='M1 5h3v1H1zM7 5h3v1H7zM5 1h1v3H5zM5 7h1v3H5zM2 2h1v1H2zM3 3h1v1H3zM7 7h1v1H7zM8 8h1v1H8zM8 2h1v1H8zM7 3h1v1H7zM2 8h1v1H2zM3 7h1v1H3z'/%3E%3C/svg%3E") 0 0 / 11px 11px no-repeat;
469
- opacity: 0;
470
- }
471
-
472
- .title-bar > :is(.close, .close-box):is(:active, .active)::before {
473
- opacity: 1;
778
+ /* Held close or zoom box: System 6 draws the same starburst in both
779
+ (measured, 6.0.8); the zoom box's inner square goes while it is held. */
780
+ .title-bar > :is(.close, .close-box, .resize, .resize-box, .zoom):is(:active, .active) {
781
+ background: var(--clio-art-s6-burst) 0 0 / 11px 11px no-repeat border-box, var(--clio-paper);
474
782
  }
475
783
 
476
784
  /* Zoom box: an inner square sharing the outer frame's top-left corner,
@@ -531,13 +839,14 @@
531
839
  flex: none;
532
840
  justify-content: space-between;
533
841
  gap: 16px;
534
- padding: 2px 8px 1px;
842
+ min-height: var(--clio-details-height);
843
+ padding: var(--clio-details-padding);
535
844
  border-bottom: var(--clio-details-border);
536
845
  background: var(--clio-details-bg);
537
846
  box-shadow: var(--clio-details-shadow, none);
538
- font-family: var(--clio-font-text);
539
- font-size: var(--clio-font-size);
540
- line-height: 16px;
847
+ font-family: var(--clio-font-small);
848
+ font-size: var(--clio-details-font-size);
849
+ line-height: var(--clio-details-height);
541
850
  white-space: nowrap;
542
851
  }
543
852
 
@@ -554,7 +863,7 @@
554
863
  padding: 1px 8px;
555
864
  border-top: var(--clio-border);
556
865
  background: var(--clio-details-bg);
557
- font-family: var(--clio-font-text);
866
+ font-family: var(--clio-font-small);
558
867
  font-size: var(--clio-font-size-small);
559
868
  line-height: 14px;
560
869
  }
@@ -646,7 +955,7 @@
646
955
  /* Inside a menu bar or a parent item, a menu is a drop-down. */
647
956
  :where(.menu-bar, [role="menubar"], [role="menu-bar"], .menu, [role="menu"]) li > :is(.menu, ul[role="menu"]) {
648
957
  position: absolute;
649
- top: 100%;
958
+ top: calc(100% + 1px);
650
959
  left: 0;
651
960
  display: none;
652
961
  }
@@ -711,6 +1020,12 @@
711
1020
  :where(.menu, [role="menu"]) > li:is(.disabled, [aria-disabled="true"]),
712
1021
  :where(.menu, [role="menu"]) > li > :is(a, button):is(:disabled, [aria-disabled="true"]) {
713
1022
  color: var(--clio-disabled);
1023
+ background-image: var(--clio-disabled-dither);
1024
+ background-size: 2px 2px;
1025
+ background-attachment: fixed;
1026
+ -webkit-background-clip: text;
1027
+ background-clip: text;
1028
+ -webkit-text-fill-color: var(--clio-disabled-fill);
714
1029
  }
715
1030
 
716
1031
  /* Keyboard shortcut column, right-aligned. */
@@ -727,10 +1042,10 @@
727
1042
  position: absolute;
728
1043
  top: 50%;
729
1044
  left: 3px;
730
- width: 10px;
731
- height: 10px;
732
- margin-top: -5px;
733
- background: var(--clio-art-s6-menucheck) 0 0 / 10px 10px no-repeat;
1045
+ width: 9px;
1046
+ height: 8px;
1047
+ margin-top: -4px;
1048
+ background: var(--clio-art-s6-menucheck) 0 0 / 9px 8px no-repeat;
734
1049
  }
735
1050
 
736
1051
  :where(.menu, [role="menu"]) > li:is(.checked, [aria-checked="true"]):is(:hover, :focus-within, .active)::before,
@@ -790,11 +1105,13 @@
790
1105
  border-radius: var(--clio-button-radius);
791
1106
  background: var(--clio-button-bg);
792
1107
  box-shadow: var(--clio-button-shadow);
1108
+ border-image: var(--clio-button-frame) var(--clio-button-frame-slice) fill / calc(var(--clio-button-frame-slice) * 1px) stretch;
793
1109
  color: var(--clio-button-fg);
794
1110
  font-family: var(--clio-font-chrome);
795
1111
  font-size: var(--clio-font-size);
796
1112
  font-stretch: var(--clio-font-stretch-text);
797
1113
  font-weight: var(--clio-button-weight);
1114
+ -webkit-font-smoothing: var(--clio-font-smoothing);
798
1115
  line-height: 14px;
799
1116
  text-align: center;
800
1117
  text-decoration: none;
@@ -809,22 +1126,41 @@
809
1126
  :where(button, .btn, .btn-default, .standard-button, input[type="button"], input[type="submit"], input[type="reset"]):not(:disabled, .disabled):is(:active, .active) {
810
1127
  background: var(--clio-button-active-bg);
811
1128
  box-shadow: var(--clio-button-active-shadow);
1129
+ border-image-source: var(--clio-button-frame-held);
812
1130
  color: var(--clio-button-active-fg);
813
1131
  }
814
1132
 
815
- /* Default button: the ring that says Return will press it. */
1133
+ /* Default button: the ring that says Return will press it. Drawn as its own
1134
+ rounded rectangle (Inside Macintosh: PenSize(3,3), InsetRect(-4,-4),
1135
+ FrameRoundRect(16,16)), so its corners do not follow the button's. */
816
1136
  :where(.default, .btn-default, button[type="submit"].default) {
1137
+ position: relative;
817
1138
  border-radius: var(--clio-button-radius);
818
- box-shadow: var(--clio-button-shadow), var(--clio-button-default-ring);
819
1139
  }
820
1140
 
821
- :where(.default, .btn-default):not(:disabled, .disabled):is(:active, .active) {
822
- box-shadow: var(--clio-button-active-shadow), var(--clio-button-default-ring);
1141
+ :where(.default, .btn-default)::before {
1142
+ content: "";
1143
+ position: absolute;
1144
+ inset: calc(-1px - var(--clio-button-default-gap) - var(--clio-button-default-width));
1145
+ border: var(--clio-button-default-width) solid var(--clio-ink);
1146
+ border-radius: var(--clio-button-default-radius);
1147
+ border-image: var(--clio-ring-frame) var(--clio-ring-frame-slice) / calc(var(--clio-ring-frame-slice) * 1px) stretch;
1148
+ pointer-events: none;
823
1149
  }
824
1150
 
825
1151
  :where(button, .btn, .btn-default, .standard-button, input[type="button"], input[type="submit"], input[type="reset"]):is(:disabled, .disabled) {
826
1152
  border: var(--clio-button-disabled-border);
827
1153
  color: var(--clio-button-disabled-fg);
1154
+ /* System 6: the label through the 50% pattern, the frame left solid. */
1155
+ background-image: var(--clio-disabled-dither), linear-gradient(var(--clio-button-bg), var(--clio-button-bg));
1156
+ background-size: 2px 2px, auto;
1157
+ background-attachment: fixed, scroll;
1158
+ -webkit-background-clip: text, border-box;
1159
+ background-clip: text, border-box;
1160
+ -webkit-text-fill-color: var(--clio-disabled-fill);
1161
+ /* The frame without its face, so the dimmed label shows through. */
1162
+ border-image-source: var(--clio-button-frame-disabled, var(--clio-button-frame));
1163
+ border-image-slice: var(--clio-button-frame-slice);
828
1164
  }
829
1165
 
830
1166
  :where(button, .btn, .btn-default, .standard-button, input[type="button"], input[type="submit"], input[type="reset"]):focus-visible {
@@ -920,6 +1256,12 @@
920
1256
  :where(input[type="checkbox"], input[type="radio"]):disabled + label,
921
1257
  :where(label):has(> :is(input[type="checkbox"], input[type="radio"]):disabled) {
922
1258
  color: var(--clio-disabled);
1259
+ background-image: var(--clio-disabled-dither);
1260
+ background-size: 2px 2px;
1261
+ background-attachment: fixed;
1262
+ -webkit-background-clip: text;
1263
+ background-clip: text;
1264
+ -webkit-text-fill-color: var(--clio-disabled-fill);
923
1265
  }
924
1266
 
925
1267
  /* ---- Text fields ---------------------------------------------------------- */
@@ -972,18 +1314,20 @@
972
1314
  /* ---- Pop-up menus (select) ------------------------------------------------ */
973
1315
  :where(select) {
974
1316
  box-sizing: border-box;
975
- min-height: var(--clio-control-height);
1317
+ min-height: var(--clio-popup-height, var(--clio-control-height));
976
1318
  margin: 0;
977
1319
  padding: var(--clio-popup-padding);
978
1320
  border: var(--clio-popup-border);
979
1321
  border-radius: var(--clio-popup-radius);
980
1322
  background: var(--clio-popup-arrow), var(--clio-popup-bg);
981
1323
  box-shadow: var(--clio-popup-shadow);
1324
+ border-image: var(--clio-popup-frame) var(--clio-popup-frame-slice) / calc(var(--clio-popup-frame-slice) * 1px) stretch;
982
1325
  color: var(--clio-ink);
983
1326
  font-family: var(--clio-font-chrome);
984
1327
  font-size: var(--clio-font-size);
985
1328
  font-stretch: var(--clio-font-stretch-text);
986
1329
  font-weight: var(--clio-popup-weight);
1330
+ -webkit-font-smoothing: var(--clio-font-smoothing);
987
1331
  line-height: 16px;
988
1332
  appearance: none;
989
1333
  -webkit-appearance: none;
@@ -1158,7 +1502,7 @@
1158
1502
  background: none;
1159
1503
  box-shadow: none;
1160
1504
  color: var(--clio-ink);
1161
- font-family: var(--clio-font-text);
1505
+ font-family: var(--clio-font-small);
1162
1506
  font-size: var(--clio-font-size-small);
1163
1507
  text-align: center;
1164
1508
  cursor: default;
@@ -1264,7 +1608,7 @@
1264
1608
  border-radius: 6px;
1265
1609
  background: var(--clio-paper);
1266
1610
  color: var(--clio-ink);
1267
- font: 700 22px/28px var(--clio-font-chrome);
1611
+ font: 700 22px/28px var(--clio-font-display);
1268
1612
  text-align: center;
1269
1613
  }
1270
1614
 
@@ -1393,7 +1737,7 @@
1393
1737
  :where(html.clio-scrollbars)::-webkit-scrollbar-corner {
1394
1738
  border-top: 1px solid var(--clio-ink);
1395
1739
  border-left: 1px solid var(--clio-ink);
1396
- background: var(--clio-scrollbar-button-bg);
1740
+ background: var(--clio-scrollbar-corner);
1397
1741
  }
1398
1742
 
1399
1743
  @supports not selector(::-webkit-scrollbar) {
@@ -1402,6 +1746,189 @@
1402
1746
  }
1403
1747
  }
1404
1748
 
1749
+ /* Control Strip (System 7.5 to Mac OS 9): a row of module buttons with scroll
1750
+ arrows and a tab that folds the strip away. Markup follows AI System 6:
1751
+ .control-strip > button.control-strip-scroll.control-strip-scroll-back,
1752
+ .control-strip-modules[role=toolbar] > .control-strip-module-track >
1753
+ button.control-strip-module (an icon inside; aria-haspopup="menu" draws the
1754
+ menu triangle), button.control-strip-scroll.control-strip-scroll-forward,
1755
+ button.control-strip-handle. Add .is-collapsed to fold it to the tab, and
1756
+ data-edge="right" for a strip on the right edge. Placement is yours
1757
+ (AI System 6 fixes it to the screen's lower left). */
1758
+ /* The strip's art is the same in System 7.5.3, Mac OS 8.5 and Mac OS 9.0
1759
+ (compared pixel for pixel with the backdrop removed); only the cell colours
1760
+ differ, so it lives here for every era. Redrawn by tooling/p9-art.py. */
1761
+ :root {
1762
+ --clio-art-p9-strip-cap: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYBAMAAADXK7paAAAAHlBMVEUAAAAAAABERERVVVWAgICIiIigoKDAwMDMzP/////+VYXkAAAAAXRSTlMAQObYZgAAAGlJREFUeJxjFGQAg/8sbAlgxkwWBiUQfZuBheHfAwYGhg8MTBAlDPgYLAx/9jAwsOgysDAwhDIw/L8LYvy98NcVry4mBoa/Zy+AtTOwlzP8AzFY3r0jYBfC0l/3P4AZjILMBiD6DCPMOwBKOxgiile5lQAAAABJRU5ErkJggg==");
1763
+ --clio-art-s7-strip-cap: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYBAMAAADXK7paAAAAG1BMVEUAAAAAAABERERVVVWIiIiqqqrMzMzMzP/////JRvoVAAAAAXRSTlMAQObYZgAAAGVJREFUeJxjFGQAg/8srAFgxioWBiUQfYeBheHfAwYGhg8MTBAlDPgYLAx/zzIwMMsxsDAwuDAw/L8HYvy98M+FgC6Gf/egDLY0hn8gBvO7dwTsQmj/ff8DmMEoyGwAos8wwrwDAP+1F0dci98qAAAAAElFTkSuQmCC");
1764
+ --clio-art-p9-strip-back: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAgMAAADwXCcuAAAACVBMVEUAAABVVVXd3d2apXz3AAAAAXRSTlMAQObYZgAAACxJREFUeJwFwaERwCAABLD0j3oE7IPBs/8KrcBjSKhiKM/cebs0gvzkfFioLlg9BPcTGNP4AAAAAElFTkSuQmCC");
1765
+ --clio-art-p9-strip-forward: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAgMAAADwXCcuAAAACVBMVEUAAABVVVXd3d2apXz3AAAAAXRSTlMAQObYZgAAAC1JREFUeJwFwSESABAUQMHnzegC9/nFqRX3IegCuxBIwVYxdySFgLzpHbg2cvhWkAdTrBZiqwAAAABJRU5ErkJggg==");
1766
+ --clio-art-p9-strip-menu: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHAQMAAAAVq36TAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABZJREFUeJxjaGA4wPCA4QMTA9MHpgcAIQYE58W2/JQAAAAASUVORK5CYII=");
1767
+ --clio-art-p9-strip-handle: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYBAMAAAAFe7ACAAAAFVBMVEUAAAAAAABERERVVVWIiIjMzMz///8V67gPAAAAAXRSTlMAQObYZgAAAINJREFUeJxVz7ENAjEMheE/IbQokRiAUVJQUjAs5RXZhJvgkp6LjGwfBU309PzFkkMBZAApVVgAIqWUZ9bORsE6fWvWJCukoIlbtjICG0sK5iLnVrM7Hqefsy3qPKnzZM6n/+41D/epbbi772IOaOPYsIv/sIrEG6YA4XqB3vWO2UErvmVcJ4BylohjAAAAAElFTkSuQmCC");
1768
+ --clio-art-p9-strip-tab: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYBAMAAAAFe7ACAAAAFVBMVEUAAAAAAABERERVVVWIiIjMzMz///8V67gPAAAAAXRSTlMAQObYZgAAAIFJREFUeJxVz7ENAjEMQNHvKPS+DRiBEVJQMi49WeAkRrgJSHoijOyEgipf1pPlyAbQgMwVxqN7iYIACVprRaMUskS9gKJeSWKYADtGLRruzC3Lcqd6WW7uw45V7ma5m/Xv3uW53H3YdLnU7g4YFg9Q+6phfv2nw95BNlGsRf1++QW6eCj9rQPMHAAAAABJRU5ErkJggg==");
1769
+ }
1770
+
1771
+ :where(.control-strip) {
1772
+ display: inline-flex;
1773
+ align-items: stretch;
1774
+ height: var(--clio-strip-height);
1775
+ max-width: 100%;
1776
+ vertical-align: bottom;
1777
+ user-select: none;
1778
+ -webkit-user-select: none;
1779
+ }
1780
+
1781
+ /* The end cap, then every cell: one bevelled box between 1px lines. */
1782
+ :where(.control-strip)::before,
1783
+ :where(.control-strip) > :is(.control-strip-scroll, .control-strip-modules),
1784
+ :where(.control-strip-module) {
1785
+ box-sizing: border-box;
1786
+ border: var(--clio-strip-line);
1787
+ border-left: 0;
1788
+ background: var(--clio-strip-bg);
1789
+ box-shadow: var(--clio-strip-cell-shadow);
1790
+ }
1791
+
1792
+ /* The end cap is one picture: frame, bevel, icon and the rounded lower-left corner. */
1793
+ :where(.control-strip)::before {
1794
+ content: "";
1795
+ flex: none;
1796
+ width: calc(var(--clio-strip-cap-width) + 2px);
1797
+ border: 0;
1798
+ background: var(--clio-strip-cap) 0 0 / 100% 100% no-repeat;
1799
+ box-shadow: none;
1800
+ }
1801
+
1802
+ :where(.control-strip) > :is(.control-strip-scroll, .control-strip-handle) {
1803
+ flex: none;
1804
+ margin: 0;
1805
+ padding: 0;
1806
+ border-radius: 0;
1807
+ appearance: none;
1808
+ -webkit-appearance: none;
1809
+ cursor: default;
1810
+ }
1811
+
1812
+ /* Scroll arrows: 13px cells, sunken and hollow while there is nothing to scroll. */
1813
+ :where(.control-strip) > .control-strip-scroll {
1814
+ width: calc(var(--clio-strip-scroll-width) + 1px);
1815
+ min-width: 0;
1816
+ height: auto;
1817
+ min-height: 0;
1818
+ background: var(--clio-strip-back) 1px 6px / 10px 10px no-repeat, var(--clio-strip-bg);
1819
+ box-shadow: var(--clio-strip-cell-shadow);
1820
+ }
1821
+
1822
+ :where(.control-strip) > .control-strip-scroll-forward {
1823
+ background-image: var(--clio-strip-forward);
1824
+ }
1825
+
1826
+ :where(.control-strip) > .control-strip-scroll:disabled {
1827
+ background:
1828
+ var(--clio-strip-back) 1px 6px / 10px 10px no-repeat,
1829
+ var(--clio-strip-sunken-lines),
1830
+ var(--clio-strip-bg);
1831
+ box-shadow: var(--clio-strip-sunken-shadow);
1832
+ }
1833
+
1834
+ :where(.control-strip) > .control-strip-scroll-forward:disabled {
1835
+ background-image: var(--clio-strip-forward);
1836
+ }
1837
+
1838
+ :where(.control-strip) > .control-strip-scroll:not(:disabled):active,
1839
+ :where(.control-strip-module):not(:disabled):is(:active, [aria-expanded="true"]) {
1840
+ background-color: var(--clio-strip-pressed-bg);
1841
+ box-shadow: var(--clio-strip-pressed-shadow);
1842
+ }
1843
+
1844
+ :where(.control-strip-modules) {
1845
+ display: flex;
1846
+ min-width: 0;
1847
+ overflow: hidden;
1848
+ border: 0;
1849
+ background: none;
1850
+ box-shadow: none;
1851
+ }
1852
+
1853
+ :where(.control-strip-module-track) {
1854
+ display: flex;
1855
+ }
1856
+
1857
+ /* A module: the 16px icon 2px in, the menu triangle 3px from the right. */
1858
+ :where(.control-strip-module) {
1859
+ position: relative;
1860
+ display: flex;
1861
+ flex: none;
1862
+ align-items: center;
1863
+ width: calc(var(--clio-strip-module-width) + 1px);
1864
+ min-width: 0;
1865
+ height: var(--clio-strip-height);
1866
+ min-height: 0;
1867
+ margin: 0;
1868
+ padding: 0 0 0 var(--clio-strip-icon-inset);
1869
+ border-radius: 0;
1870
+ color: var(--clio-ink);
1871
+ appearance: none;
1872
+ -webkit-appearance: none;
1873
+ cursor: default;
1874
+ }
1875
+
1876
+ :where(.control-strip-module) > :is(svg, img, .sys-icon) {
1877
+ width: 16px;
1878
+ height: 16px;
1879
+ }
1880
+
1881
+ :where(.control-strip-module)[aria-haspopup]::after {
1882
+ content: "";
1883
+ position: absolute;
1884
+ top: var(--clio-strip-menu-top);
1885
+ right: calc(var(--clio-strip-menu-inset) + 1px);
1886
+ width: 4px;
1887
+ height: 7px;
1888
+ background: var(--clio-strip-menu) 0 0 / 4px 7px no-repeat;
1889
+ }
1890
+
1891
+ :where(.control-strip-module):disabled {
1892
+ color: var(--clio-disabled);
1893
+ opacity: 0.5;
1894
+ }
1895
+
1896
+ /* The tab: open, a slanted end with a grip; folded, the strip shrinks to it. */
1897
+ :where(.control-strip) > .control-strip-handle {
1898
+ width: var(--clio-strip-handle-width);
1899
+ min-width: 0;
1900
+ height: var(--clio-strip-height);
1901
+ min-height: 0;
1902
+ border: 0;
1903
+ background: var(--clio-strip-handle) 0 0 / 100% 100% no-repeat;
1904
+ box-shadow: none;
1905
+ }
1906
+
1907
+ :where(.control-strip.is-collapsed)::before,
1908
+ :where(.control-strip.is-collapsed) > :not(.control-strip-handle) {
1909
+ display: none;
1910
+ }
1911
+
1912
+ :where(.control-strip.is-collapsed) > .control-strip-handle {
1913
+ width: var(--clio-strip-tab-width);
1914
+ background-image: var(--clio-strip-tab);
1915
+ }
1916
+
1917
+ :where(.control-strip)[data-edge="right"] {
1918
+ flex-direction: row-reverse;
1919
+ }
1920
+
1921
+ :where(.control-strip)[data-edge="right"]::before,
1922
+ :where(.control-strip)[data-edge="right"] > .control-strip-handle {
1923
+ transform: scaleX(-1);
1924
+ }
1925
+
1926
+ :where(.control-strip) > :focus-visible,
1927
+ :where(.control-strip-module):focus-visible {
1928
+ outline: var(--clio-focus-outline);
1929
+ outline-offset: -3px;
1930
+ }
1931
+
1405
1932
  /* Adaptations the historical machines never needed. Historical sizes are
1406
1933
  calibration, not a cage: on a touch screen the controls grow to the
1407
1934
  "coarse pointer" sizes from AI System 6's fidelity contract, without any
@@ -1410,6 +1937,7 @@
1410
1937
  :root,
1411
1938
  [data-era] {
1412
1939
  --clio-control-height: 36px;
1940
+ --clio-popup-height: 36px;
1413
1941
  --clio-field-height: 40px;
1414
1942
  --clio-menubar-height: 32px;
1415
1943
  --clio-menu-item-height: 32px;