clio.css 0.2.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/AGENTS.md +20 -4
  2. package/EVIDENCE.md +90 -30
  3. package/README.md +45 -23
  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 +1946 -155
  171. package/dist/clio.drawingboard.css +3569 -0
  172. package/dist/clio.drawingboard.min.css +2 -0
  173. package/dist/clio.min.css +2 -2
  174. package/dist/clio.platinum.css +809 -107
  175. package/dist/clio.platinum.min.css +2 -2
  176. package/dist/clio.system6.css +551 -32
  177. package/dist/clio.system6.min.css +2 -2
  178. package/dist/clio.system7.css +2172 -0
  179. package/dist/clio.system7.min.css +2 -0
  180. package/dist/components.json +555 -82
  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/ClioSans97Plain.woff2 +0 -0
  186. package/dist/fonts/ClioSans97Title.woff2 +0 -0
  187. package/dist/fonts/ClioSans97TitleExact.woff2 +0 -0
  188. package/dist/fonts/ClioSans97TitlePlain.woff2 +0 -0
  189. package/dist/fonts/ClioText84-9.woff2 +0 -0
  190. package/dist/fonts/ClioText84.woff2 +0 -0
  191. package/llms.txt +5 -4
  192. package/package.json +17 -4
@@ -1,12 +1,234 @@
1
- /*! clio.css 0.2.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.1 (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") tech(color-COLRv1),
34
+ url("fonts/ClioSans97Plain.woff2") format("woff2");
35
+ font-weight: 100 900;
36
+ font-display: swap;
37
+ }
38
+
39
+ /* Clio Sans '97's antialiasing is COLRv1 colour layers. A browser without
40
+ COLRv1 (Safari) would paint every layer solid, so it gets the Plain file:
41
+ the outlines alone, each pixel at least half covered. */
42
+ /* Clio Sans '97 Title: the same face as window titles draw it (a few faint
43
+ pixels fewer than menus and buttons), for title bars only. */
44
+ @font-face {
45
+ font-family: "Clio Sans '97 Title";
46
+ src: url("fonts/ClioSans97Title.woff2") format("woff2") tech(color-COLRv1),
47
+ url("fonts/ClioSans97TitlePlain.woff2") format("woff2");
48
+ font-weight: 100 900;
49
+ font-display: swap;
50
+ }
51
+
52
+ /* Clio Sans '97 Exact and Clio Sans '97 Title Exact: the same glyphs with
53
+ each antialiasing level painted from a palette entry, so the palettes below
54
+ give, for clio.css's own title and button colours, the very pixels Mac OS
55
+ blends ((fg * a + bg * (255 - a)) >> 8). They ignore the text colour: a
56
+ page that recolours a title or a button label also sets --clio-font-window-title
57
+ or --clio-font-button back to a stack without "Exact", and gets Clio Sans
58
+ '97 in its colour, within one level of the real screen. */
59
+ @font-face {
60
+ font-family: "Clio Sans '97 Exact";
61
+ src: url("fonts/ClioSans97Exact.woff2") format("woff2") tech(color-COLRv1),
62
+ url("fonts/ClioSans97Plain.woff2") format("woff2");
63
+ font-weight: 100 900;
64
+ font-display: swap;
65
+ }
66
+
67
+ @font-face {
68
+ font-family: "Clio Sans '97 Title Exact";
69
+ src: url("fonts/ClioSans97TitleExact.woff2") format("woff2") tech(color-COLRv1),
70
+ url("fonts/ClioSans97TitlePlain.woff2") format("woff2");
71
+ font-weight: 100 900;
72
+ font-display: swap;
73
+ }
74
+
75
+ /* Written by tooling/aa-palettes.py. */
76
+ @font-palette-values --clio-aa-p9-title {
77
+ font-family: "Clio Sans '97 Title Exact";
78
+ override-colors:
79
+ 0 #bebebe,
80
+ 1 #b0b0b0,
81
+ 2 #a2a2a2,
82
+ 3 #959595,
83
+ 4 #878787,
84
+ 5 #7a7a7a,
85
+ 6 #6c6c6c,
86
+ 7 #5f5f5f,
87
+ 8 #515151,
88
+ 9 #444444,
89
+ 10 #363636,
90
+ 11 #282828,
91
+ 12 #1b1b1b,
92
+ 13 #0d0d0d,
93
+ 14 #000000;
94
+ }
95
+
96
+ @font-palette-values --clio-aa-p9-title-inactive {
97
+ font-family: "Clio Sans '97 Title Exact";
98
+ override-colors:
99
+ 0 #c5c5c5,
100
+ 1 #bfbfbf,
101
+ 2 #bababa,
102
+ 3 #b4b4b4,
103
+ 4 #aeaeae,
104
+ 5 #a9a9a9,
105
+ 6 #a3a3a3,
106
+ 7 #9e9e9e,
107
+ 8 #989898,
108
+ 9 #929292,
109
+ 10 #8d8d8d,
110
+ 11 #878787,
111
+ 12 #818181,
112
+ 13 #7c7c7c,
113
+ 14 #777777;
114
+ }
115
+
116
+ @font-palette-values --clio-aa-p9-button {
117
+ font-family: "Clio Sans '97 Exact";
118
+ override-colors:
119
+ 0 #cecece,
120
+ 1 #bfbfbf,
121
+ 2 #b0b0b0,
122
+ 3 #a2a2a2,
123
+ 4 #939393,
124
+ 5 #848484,
125
+ 6 #757575,
126
+ 7 #676767,
127
+ 8 #585858,
128
+ 9 #494949,
129
+ 10 #3a3a3a,
130
+ 11 #2c2c2c,
131
+ 12 #1d1d1d,
132
+ 13 #0e0e0e,
133
+ 14 #000000;
134
+ }
135
+
136
+ @font-palette-values --clio-aa-p9-button-held {
137
+ font-family: "Clio Sans '97 Exact";
138
+ override-colors:
139
+ 0 #707070,
140
+ 1 #7a7a7a,
141
+ 2 #848484,
142
+ 3 #8e8e8e,
143
+ 4 #999999,
144
+ 5 #a3a3a3,
145
+ 6 #adadad,
146
+ 7 #b7b7b7,
147
+ 8 #c1c1c1,
148
+ 9 #cbcbcb,
149
+ 10 #d6d6d6,
150
+ 11 #e0e0e0,
151
+ 12 #eaeaea,
152
+ 13 #f4f4f4,
153
+ 14 #ffffff;
154
+ }
155
+
156
+ @font-palette-values --clio-aa-p9-button-disabled {
157
+ font-family: "Clio Sans '97 Exact";
158
+ override-colors:
159
+ 0 #d5d5d5,
160
+ 1 #cecece,
161
+ 2 #c7c7c7,
162
+ 3 #c1c1c1,
163
+ 4 #bababa,
164
+ 5 #b3b3b3,
165
+ 6 #acacac,
166
+ 7 #a5a5a5,
167
+ 8 #9f9f9f,
168
+ 9 #989898,
169
+ 10 #919191,
170
+ 11 #8a8a8a,
171
+ 12 #848484,
172
+ 13 #7d7d7d,
173
+ 14 #777777;
174
+ }
175
+
176
+ @font-palette-values --clio-aa-db-button {
177
+ font-family: "Clio Sans '97 Exact";
178
+ override-colors:
179
+ 0 #c3bcac,
180
+ 1 #b9b2a3,
181
+ 2 #aea89a,
182
+ 3 #a49e91,
183
+ 4 #999488,
184
+ 5 #8f8a80,
185
+ 6 #848077,
186
+ 7 #7a766e,
187
+ 8 #6f6c65,
188
+ 9 #65625d,
189
+ 10 #5a5854,
190
+ 11 #504e4b,
191
+ 12 #454442,
192
+ 13 #3b3a39,
193
+ 14 #313131;
194
+ }
195
+
196
+ @font-palette-values --clio-aa-db-button-disabled {
197
+ font-family: "Clio Sans '97 Exact";
198
+ override-colors:
199
+ 0 #cac2b2,
200
+ 1 #c6bfaf,
201
+ 2 #c3bcad,
202
+ 3 #c0b9ab,
203
+ 4 #bdb6a9,
204
+ 5 #bab3a7,
205
+ 6 #b7b0a4,
206
+ 7 #b4ada2,
207
+ 8 #b1aaa0,
208
+ 9 #ada89e,
209
+ 10 #aaa59c,
210
+ 11 #a7a299,
211
+ 12 #a49f97,
212
+ 13 #a19c95,
213
+ 14 #9c9c94;
214
+ }
215
+
216
+ /* Clio Sans '97 Display: Charcoal's outlines, traced from Mac OS 9.0 drawing it
217
+ at 72 points (fonts/ClioSans97Display.woff2, tooling/trace-outline.py), for
218
+ every size that is not 12px or a multiple of it. */
219
+ @font-face {
220
+ font-family: "Clio Sans '97 Display";
221
+ src: url("fonts/ClioSans97Display.woff2") format("woff2");
222
+ font-weight: 100 900;
223
+ font-display: swap;
224
+ }
225
+
226
+ /* Other fonts, each with a licence that allows it:
6
227
  - ChicagoFLF: a public-domain outline revival of Chicago (Robin Casady).
7
228
  - Asap (variable, wdth + wght): SIL OFL 1.1, Omnibus-Type. The legal
8
229
  stand-in for Charcoal that AI System 6 measured its Platinum title bar
9
- against (width axis 113 for text, 123 for titles).
230
+ against (width axis 113 for text, 123 for titles); now the fallback
231
+ behind Clio Sans '97.
10
232
  Apple's own faces (Chicago, Geneva, Charcoal, Monaco) are never shipped;
11
233
  the stacks below reach them only when the visitor already has them. */
12
234
  @font-face {
@@ -41,14 +263,28 @@
41
263
  /* [A] Disabled text: System 6 drew it through a 50% grey pattern; a solid
42
264
  grey keeps 5.6:1 on white instead of a dither the browser would blur. */
43
265
  --clio-disabled: #696969;
266
+ /* Dimmed text is drawn through QuickDraw's 50% gray pattern, aligned to the
267
+ screen: the ink where x + y is odd survives (measured, File menu). The
268
+ pattern is fixed to the viewport the same way; #696969 is only the
269
+ fallback colour where background-clip: text is missing. */
270
+ --clio-disabled-dither: var(--clio-art-s6-gray50);
271
+ --clio-disabled-fill: transparent;
44
272
  --clio-selection-bg: #000000;
45
273
  --clio-selection-fg: #ffffff;
46
274
 
47
275
  /* Type. Chicago 12 is the system font; Geneva is the application font. */
48
- --clio-font-chrome: Chicago, "ChicagoFLF", Charcoal, Geneva, "Helvetica Neue", Arial, sans-serif;
49
- --clio-font-text: Geneva, "Clio Asap", "Helvetica Neue", Arial, sans-serif;
276
+ --clio-font-chrome: "Clio Sans '84", Chicago, "ChicagoFLF", Charcoal, Geneva, "Helvetica Neue", Arial, sans-serif;
277
+ --clio-font-text: "Clio Text '84", Geneva, "Helvetica Neue", Arial, sans-serif;
278
+ /* Geneva 9: the Finder info line, icon names, status lines. */
279
+ --clio-font-small: "Clio Text '84 9", Geneva, "Helvetica Neue", Arial, sans-serif;
280
+ --clio-text-smoothing: none;
50
281
  --clio-font-mono: Monaco, Menlo, Consolas, "Courier New", monospace;
282
+ /* Chrome type at sizes other than 12px and its multiples (.display): an
283
+ outline face, smoothed. */
284
+ --clio-font-display: Chicago, "ChicagoFLF", Charcoal, "Helvetica Neue", Arial, sans-serif;
51
285
  --clio-font-size: 12px;
286
+ /* A bitmap face: no antialiasing, so a glyph on a half pixel stays 1-bit. */
287
+ --clio-font-smoothing: none;
52
288
  /* Geneva 9: the Finder info line and icon names. */
53
289
  --clio-font-size-small: 9px;
54
290
  --clio-chrome-weight: 400;
@@ -122,7 +358,7 @@
122
358
  --clio-menu-border-top-width: 0;
123
359
  --clio-menu-shadow: 1px 1px 0 var(--clio-ink);
124
360
  --clio-menu-item-height: 16px;
125
- --clio-menu-item-padding: 0 12px 0 15px;
361
+ --clio-menu-item-padding: 0 12px 0 13px;
126
362
  --clio-menu-item-weight: 400;
127
363
  --clio-menu-item-active-bg: var(--clio-ink);
128
364
  --clio-menu-item-active-fg: var(--clio-paper);
@@ -136,18 +372,30 @@
136
372
  --clio-button-bg: var(--clio-paper);
137
373
  --clio-button-fg: var(--clio-ink);
138
374
  --clio-button-border: 1px solid var(--clio-ink);
139
- /* 20px tall; corners turn over about 4px (alert OK button, 6.0.8). */
140
- --clio-button-radius: 4px;
375
+ /* 20px tall; the corner steps in 3, 1, 1 pixels on its first three rows
376
+ (OK and Cancel, 6.0.8), which a 4.5px radius reproduces exactly. */
377
+ /* The frame and the default ring are the real pixel staircases, cut from
378
+ System 6.0.8's Alert and Save dialog (tooling/frame-art.py) and drawn with
379
+ border-image; border-radius would antialias an arc. */
380
+ --clio-button-radius: 0;
381
+ --clio-button-frame: var(--clio-art-frame-s6-button);
382
+ --clio-button-frame-held: var(--clio-art-frame-s6-button-held);
383
+ --clio-button-frame-slice: 4;
384
+ --clio-ring-frame: var(--clio-art-frame-s6-ring);
385
+ --clio-ring-frame-slice: 7;
386
+ --clio-popup-frame: none;
387
+ --clio-popup-frame-slice: 3;
141
388
  --clio-button-shadow: 0 0 0 0 transparent;
142
389
  --clio-button-padding: 0 12px;
143
390
  --clio-button-min-width: 59px;
144
391
  --clio-button-weight: 400;
145
- --clio-button-active-bg: var(--clio-ink);
392
+ --clio-button-active-bg: transparent; /* the held frame carries the ink face */
146
393
  --clio-button-active-fg: var(--clio-paper);
147
394
  --clio-button-active-shadow: 0 0 0 0 transparent;
148
395
  /* Default button: Inside Macintosh's recipe is PenSize(3,3) around the
149
396
  button inset by -4, so a 1px gap then a 3px ring. */
150
- --clio-button-default-ring: 0 0 0 1px var(--clio-paper), 0 0 0 4px var(--clio-ink);
397
+ --clio-button-default-gap: 1px;
398
+ --clio-button-default-width: 3px;
151
399
  --clio-button-default-radius: 8px;
152
400
  --clio-button-disabled-fg: var(--clio-disabled);
153
401
  --clio-button-disabled-border: 1px solid var(--clio-ink);
@@ -179,8 +427,11 @@
179
427
  --clio-popup-border: 1px solid var(--clio-ink);
180
428
  --clio-popup-radius: 0;
181
429
  --clio-popup-shadow: 1px 1px 0 var(--clio-ink);
182
- --clio-popup-padding: 0 24px 0 6px;
183
- --clio-popup-arrow: var(--clio-art-s6-popup) right 6px center / 11px 6px no-repeat;
430
+ /* System 6 pop-up (Standard File folder menu, 6.0.8): an 18px box, 1px
431
+ frame, 1px shadow, no arrow; held, it inverts. */
432
+ --clio-popup-height: 18px;
433
+ --clio-popup-padding: 0 8px;
434
+ --clio-popup-arrow: none;
184
435
  --clio-popup-weight: 400;
185
436
 
186
437
  /* Scroll bars */
@@ -232,7 +483,8 @@
232
483
  --clio-progress-bg: var(--clio-paper);
233
484
  --clio-progress-border: 1px solid var(--clio-ink);
234
485
  --clio-progress-shadow: none;
235
- --clio-progress-fill: var(--clio-ink);
486
+ /* Finder copy progress (6.0.8): 12px, 1px frame, dkGray fill. */
487
+ --clio-progress-fill: var(--clio-art-s6-dkgray) 0 0 / 4px 2px repeat, var(--clio-ink);
236
488
  --clio-tab-height: 20px;
237
489
  --clio-tab-bg: var(--clio-paper);
238
490
  --clio-tab-active-bg: var(--clio-paper);
@@ -242,6 +494,31 @@
242
494
  --clio-label-fg: var(--clio-ink);
243
495
  --clio-label-selected-bg: var(--clio-ink);
244
496
  --clio-label-selected-fg: var(--clio-paper);
497
+
498
+ /* Control Strip: System 6 had none; drawn here in its ink and paper, at the
499
+ Mac OS 9 geometry (adapted). */
500
+ --clio-strip-height: 24px;
501
+ --clio-strip-bg: var(--clio-paper);
502
+ --clio-strip-line: 1px solid var(--clio-ink);
503
+ --clio-strip-cell-shadow: none;
504
+ --clio-strip-sunken-shadow: none;
505
+ --clio-strip-sunken-lines: linear-gradient(transparent, transparent);
506
+ --clio-strip-pressed-bg: var(--clio-ink);
507
+ --clio-strip-pressed-shadow: inset 0 0 0 2px var(--clio-paper);
508
+ --clio-strip-cap-width: 13px;
509
+ --clio-strip-scroll-width: 13px;
510
+ --clio-strip-module-width: 30px;
511
+ --clio-strip-icon-inset: 2px;
512
+ --clio-strip-menu-top: 7px;
513
+ --clio-strip-menu-inset: 4px;
514
+ --clio-strip-handle-width: 18px;
515
+ --clio-strip-tab-width: 18px;
516
+ --clio-strip-cap: var(--clio-art-s6-strip-cap);
517
+ --clio-strip-back: var(--clio-art-s6-strip-back);
518
+ --clio-strip-forward: var(--clio-art-s6-strip-forward);
519
+ --clio-strip-menu: var(--clio-art-s6-strip-menu);
520
+ --clio-strip-handle: var(--clio-art-s6-strip-handle);
521
+ --clio-strip-tab: var(--clio-art-s6-strip-tab);
245
522
  }
246
523
 
247
524
  /* Inline art. Pixel-grid SVGs, never Apple bitmaps: the System 6 check, radio
@@ -253,7 +530,6 @@
253
530
  --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");
254
531
  --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");
255
532
  --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");
256
- --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");
257
533
  --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");
258
534
  --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");
259
535
  --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");
@@ -262,15 +538,33 @@
262
538
  --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");
263
539
  --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");
264
540
  --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");
265
- --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='M6 2h1v1h-1zM5 3h2v1h-2zM4 4h7v1h-7zM3 5h8v1h-8zM2 6h9v1h-9zM3 7h8v1h-8zM4 8h7v1h-7zM5 9h2v1h-2zM6 10h1v1h-1z'/%3E%3Cpath fill='%23000' d='M7 0h1v1h-1zM6 1h2v1h-2zM5 2h1v1h-1zM7 2h1v1h-1zM4 3h1v1h-1zM7 3h5v1h-5zM3 4h1v1h-1zM11 4h1v1h-1zM2 5h1v1h-1zM11 5h1v1h-1zM1 6h1v1h-1zM11 6h1v1h-1zM2 7h1v1h-1zM11 7h1v1h-1zM3 8h1v1h-1zM11 8h1v1h-1zM4 9h1v1h-1zM7 9h5v1h-5zM5 10h1v1h-1zM7 10h1v1h-1zM6 11h2v1h-2zM7 12h1v1h-1z'/%3E%3C/svg%3E");
266
- --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='M7 0h1v1h-1zM6 1h2v1h-2zM5 2h3v1h-3zM4 3h8v1h-8zM3 4h9v1h-9zM2 5h10v1h-10zM2 6h10v1h-10zM2 7h10v1h-10zM3 8h9v1h-9zM4 9h8v1h-8zM5 10h3v1h-3zM6 11h2v1h-2zM7 12h1v1h-1z'/%3E%3C/svg%3E");
267
- --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='M6 2h1v1h-1zM5 3h2v1h-2zM4 4h7v1h-7zM3 5h8v1h-8zM2 6h9v1h-9zM3 7h8v1h-8zM4 8h7v1h-7zM5 9h2v1h-2zM6 10h1v1h-1z'/%3E%3Cpath fill='%23000' d='M7 0h1v1h-1zM6 1h2v1h-2zM5 2h1v1h-1zM7 2h1v1h-1zM4 3h1v1h-1zM7 3h5v1h-5zM3 4h1v1h-1zM11 4h1v1h-1zM2 5h1v1h-1zM11 5h1v1h-1zM1 6h1v1h-1zM11 6h1v1h-1zM2 7h1v1h-1zM11 7h1v1h-1zM3 8h1v1h-1zM11 8h1v1h-1zM4 9h1v1h-1zM7 9h5v1h-5zM5 10h1v1h-1zM7 10h1v1h-1zM6 11h2v1h-2zM7 12h1v1h-1z'/%3E%3C/svg%3E");
268
- --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-1zM6 1h2v1h-2zM5 2h3v1h-3zM4 3h8v1h-8zM3 4h9v1h-9zM2 5h10v1h-10zM2 6h10v1h-10zM2 7h10v1h-10zM3 8h9v1h-9zM4 9h8v1h-8zM5 10h3v1h-3zM6 11h2v1h-2zM7 12h1v1h-1z'/%3E%3C/svg%3E");
541
+ --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");
542
+ --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");
543
+ --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");
544
+ --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");
269
545
  --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");
270
546
  --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");
271
547
  --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");
548
+ --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");
272
549
  --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");
550
+ /* Frames cut from captures by tooling/frame-art.py. */
551
+ --clio-art-frame-s6-button: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAAAAAAD///+D3c/SAAAAAXRSTlMAQObYZgAAACpJREFUeJxjYAxgYBINZWBiYWFgCmB0YGJgYABhBqmVDEx//jAwMAYwAAA66QRtNyAoFwAAAABJRU5ErkJggg==");
552
+ --clio-art-frame-s6-button-held: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAAB1JREFUeJxjkGFgSmZgYmBg/N/IxABiMNSDSRkGACm1Aqb7EOVpAAAAAElFTkSuQmCC");
553
+ --clio-art-frame-s6-ring: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPAQMAAAABGAcJAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAADRJREFUeJxjYD/AIP+BSYGDsYaB5csahg9yTB8+MDEwgJCAAFPDPyaeBAb7H0wPfjCwHwAAEpMM/gNXK+MAAAAASUVORK5CYII=");
554
+ --clio-art-frame-p9-button: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAGFBMVEUAAAAAAAB3d3fd3d27u7uqqqoiIiL///+EaqngAAAAAXRSTlMAQObYZgAAADxJREFUeJxjYEgUTGBgYnyk9JCBMUWYYa8O03qGPXIbmBj+MDAwMIERY8pFhbN2jIyOD/7fZ/ov/96eAQBghg8JraaOFgAAAABJRU5ErkJggg==");
555
+ --clio-art-frame-p9-button-held: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAGFBMVEUAAAAAAAB3d3dVVVVmZmYiIiKIiIhEREQ39d/AAAAAAXRSTlMAQObYZgAAAD9JREFUeJxjYAgUDGBgYVRT+8XAGC5zgJ+PUVxG8NErJgZGBgYGJgaGfwwMLA6vH7i8YmRUdfg9n+m/9ur3DAAxwg5nPuolSwAAAABJRU5ErkJggg==");
556
+ --clio-art-frame-p9-ring: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANBAMAAACAxflPAAAAG1BMVEUAAAAAAAB3d3fd3d3MzMy7u7uqqqoiIiKIiIhznn7oAAAAAXRSTlMAQObYZgAAAFpJREFUeJxjZGDnYmB7ycDCwKPAwPjzAwujgjEDg+x6xuLDrx6oOXEwCCcxMDAlCTAx/GMAISYGCEDQTGAOUyKLAoOKQgIjY6gAA9PO+4wMElwMDO8+MELNBwCaGBDQEM8mggAAAABJRU5ErkJggg==");
557
+ --clio-art-frame-p9-button-disabled: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAACIiIjd3d2RXqmqAAAAAXRSTlMAQObYZgAAACFJREFUeJxjYA1hYBINZWAKYHRgYmBgQMYMUisZGFhDGAAtsQJ9dgAT/gAAAABJRU5ErkJggg==");
558
+ --clio-art-frame-p9-popup: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAGFBMVEUAAAAAAAB3d3fd3d27u7uqqqoiIiL///+EaqngAAAAAXRSTlMAQObYZgAAACtJREFUeJxjYEhMYGBi5H/IwJh+klWbQYCBQYAl/OQnOwbGAEUGpv+C9gwAea0HTcaLsPwAAAAASUVORK5CYII=");
559
+ --clio-art-frame-p9-popup-disabled: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHAgMAAAC5PL9AAAAACVBMVEUAAACIiIjd3d2RXqmqAAAAAXRSTlMAQObYZgAAAB1JREFUeJxjZLVmEg5gChBhcGBh0ljAtOENI6s1ACDmA/qjrWTUAAAAAElFTkSuQmCC");
560
+ --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");
273
561
  --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");
562
+ --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");
563
+ --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");
564
+ --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");
565
+ --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");
566
+ --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");
567
+ --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");
274
568
  }
275
569
 
276
570
  /* Base. clio.css styles elements only inside its own components, plus bare
@@ -294,7 +588,7 @@
294
588
  font-stretch: var(--clio-font-stretch-text);
295
589
  font-synthesis: none;
296
590
  line-height: 16px;
297
- -webkit-font-smoothing: auto;
591
+ -webkit-font-smoothing: var(--clio-font-smoothing);
298
592
  }
299
593
 
300
594
  :where(.window, .modal-dialog, .alert-box, .standard-dialog, .modeless-dialog, .clio) *,
@@ -304,9 +598,10 @@
304
598
  }
305
599
 
306
600
  /* Application text (Geneva role) for content areas. */
307
- :where(.window-pane, .modal-contents, .alert-contents, .text) {
601
+ :where(.window-pane, .modal-contents, .alert-contents, .text, .details-bar, .listbox, [role="listbox"], .status-bar, .icon, input, textarea) {
308
602
  font-family: var(--clio-font-text);
309
603
  font-stretch: var(--clio-font-stretch-text);
604
+ -webkit-font-smoothing: var(--clio-text-smoothing);
310
605
  }
311
606
 
312
607
  :where(.window, .modal-dialog, .alert-box, .standard-dialog, .clio) :where(h1, h2, h3, h4, .heading) {
@@ -317,6 +612,11 @@
317
612
  line-height: 16px;
318
613
  }
319
614
 
615
+ :where(.display) {
616
+ font-family: var(--clio-font-display);
617
+ -webkit-font-smoothing: auto;
618
+ }
619
+
320
620
  :where(.window, .modal-dialog, .alert-box, .standard-dialog, .clio) :where(p) {
321
621
  margin: 0 0 8px;
322
622
  }
@@ -431,7 +731,7 @@
431
731
  overflow: hidden;
432
732
  background: var(--clio-title-bg);
433
733
  color: var(--clio-title-fg);
434
- font-family: var(--clio-font-chrome);
734
+ font-family: var(--clio-font-window-title, var(--clio-font-chrome));
435
735
  font-size: var(--clio-title-font-size);
436
736
  font-stretch: var(--clio-font-stretch-title);
437
737
  font-weight: var(--clio-chrome-weight);
@@ -551,7 +851,7 @@
551
851
  border-bottom: var(--clio-details-border);
552
852
  background: var(--clio-details-bg);
553
853
  box-shadow: var(--clio-details-shadow, none);
554
- font-family: var(--clio-font-text);
854
+ font-family: var(--clio-font-small);
555
855
  font-size: var(--clio-details-font-size);
556
856
  line-height: var(--clio-details-height);
557
857
  white-space: nowrap;
@@ -570,7 +870,7 @@
570
870
  padding: 1px 8px;
571
871
  border-top: var(--clio-border);
572
872
  background: var(--clio-details-bg);
573
- font-family: var(--clio-font-text);
873
+ font-family: var(--clio-font-small);
574
874
  font-size: var(--clio-font-size-small);
575
875
  line-height: 14px;
576
876
  }
@@ -727,6 +1027,12 @@
727
1027
  :where(.menu, [role="menu"]) > li:is(.disabled, [aria-disabled="true"]),
728
1028
  :where(.menu, [role="menu"]) > li > :is(a, button):is(:disabled, [aria-disabled="true"]) {
729
1029
  color: var(--clio-disabled);
1030
+ background-image: var(--clio-disabled-dither);
1031
+ background-size: 2px 2px;
1032
+ background-attachment: fixed;
1033
+ -webkit-background-clip: text;
1034
+ background-clip: text;
1035
+ -webkit-text-fill-color: var(--clio-disabled-fill);
730
1036
  }
731
1037
 
732
1038
  /* Keyboard shortcut column, right-aligned. */
@@ -806,11 +1112,13 @@
806
1112
  border-radius: var(--clio-button-radius);
807
1113
  background: var(--clio-button-bg);
808
1114
  box-shadow: var(--clio-button-shadow);
1115
+ border-image: var(--clio-button-frame) var(--clio-button-frame-slice) fill / calc(var(--clio-button-frame-slice) * 1px) stretch;
809
1116
  color: var(--clio-button-fg);
810
1117
  font-family: var(--clio-font-chrome);
811
1118
  font-size: var(--clio-font-size);
812
1119
  font-stretch: var(--clio-font-stretch-text);
813
1120
  font-weight: var(--clio-button-weight);
1121
+ -webkit-font-smoothing: var(--clio-font-smoothing);
814
1122
  line-height: 14px;
815
1123
  text-align: center;
816
1124
  text-decoration: none;
@@ -825,22 +1133,41 @@
825
1133
  :where(button, .btn, .btn-default, .standard-button, input[type="button"], input[type="submit"], input[type="reset"]):not(:disabled, .disabled):is(:active, .active) {
826
1134
  background: var(--clio-button-active-bg);
827
1135
  box-shadow: var(--clio-button-active-shadow);
1136
+ border-image-source: var(--clio-button-frame-held);
828
1137
  color: var(--clio-button-active-fg);
829
1138
  }
830
1139
 
831
- /* Default button: the ring that says Return will press it. */
1140
+ /* Default button: the ring that says Return will press it. Drawn as its own
1141
+ rounded rectangle (Inside Macintosh: PenSize(3,3), InsetRect(-4,-4),
1142
+ FrameRoundRect(16,16)), so its corners do not follow the button's. */
832
1143
  :where(.default, .btn-default, button[type="submit"].default) {
1144
+ position: relative;
833
1145
  border-radius: var(--clio-button-radius);
834
- box-shadow: var(--clio-button-shadow), var(--clio-button-default-ring);
835
1146
  }
836
1147
 
837
- :where(.default, .btn-default):not(:disabled, .disabled):is(:active, .active) {
838
- box-shadow: var(--clio-button-active-shadow), var(--clio-button-default-ring);
1148
+ :where(.default, .btn-default)::before {
1149
+ content: "";
1150
+ position: absolute;
1151
+ inset: calc(-1px - var(--clio-button-default-gap) - var(--clio-button-default-width));
1152
+ border: var(--clio-button-default-width) solid var(--clio-ink);
1153
+ border-radius: var(--clio-button-default-radius);
1154
+ border-image: var(--clio-ring-frame) var(--clio-ring-frame-slice) / calc(var(--clio-ring-frame-slice) * 1px) stretch;
1155
+ pointer-events: none;
839
1156
  }
840
1157
 
841
1158
  :where(button, .btn, .btn-default, .standard-button, input[type="button"], input[type="submit"], input[type="reset"]):is(:disabled, .disabled) {
842
1159
  border: var(--clio-button-disabled-border);
843
1160
  color: var(--clio-button-disabled-fg);
1161
+ /* System 6: the label through the 50% pattern, the frame left solid. */
1162
+ background-image: var(--clio-disabled-dither), linear-gradient(var(--clio-button-bg), var(--clio-button-bg));
1163
+ background-size: 2px 2px, auto;
1164
+ background-attachment: fixed, scroll;
1165
+ -webkit-background-clip: text, border-box;
1166
+ background-clip: text, border-box;
1167
+ -webkit-text-fill-color: var(--clio-disabled-fill);
1168
+ /* The frame without its face, so the dimmed label shows through. */
1169
+ border-image-source: var(--clio-button-frame-disabled, var(--clio-button-frame));
1170
+ border-image-slice: var(--clio-button-frame-slice);
844
1171
  }
845
1172
 
846
1173
  :where(button, .btn, .btn-default, .standard-button, input[type="button"], input[type="submit"], input[type="reset"]):focus-visible {
@@ -936,6 +1263,12 @@
936
1263
  :where(input[type="checkbox"], input[type="radio"]):disabled + label,
937
1264
  :where(label):has(> :is(input[type="checkbox"], input[type="radio"]):disabled) {
938
1265
  color: var(--clio-disabled);
1266
+ background-image: var(--clio-disabled-dither);
1267
+ background-size: 2px 2px;
1268
+ background-attachment: fixed;
1269
+ -webkit-background-clip: text;
1270
+ background-clip: text;
1271
+ -webkit-text-fill-color: var(--clio-disabled-fill);
939
1272
  }
940
1273
 
941
1274
  /* ---- Text fields ---------------------------------------------------------- */
@@ -988,18 +1321,20 @@
988
1321
  /* ---- Pop-up menus (select) ------------------------------------------------ */
989
1322
  :where(select) {
990
1323
  box-sizing: border-box;
991
- min-height: var(--clio-control-height);
1324
+ min-height: var(--clio-popup-height, var(--clio-control-height));
992
1325
  margin: 0;
993
1326
  padding: var(--clio-popup-padding);
994
1327
  border: var(--clio-popup-border);
995
1328
  border-radius: var(--clio-popup-radius);
996
1329
  background: var(--clio-popup-arrow), var(--clio-popup-bg);
997
1330
  box-shadow: var(--clio-popup-shadow);
1331
+ border-image: var(--clio-popup-frame) var(--clio-popup-frame-slice) / calc(var(--clio-popup-frame-slice) * 1px) stretch;
998
1332
  color: var(--clio-ink);
999
1333
  font-family: var(--clio-font-chrome);
1000
1334
  font-size: var(--clio-font-size);
1001
1335
  font-stretch: var(--clio-font-stretch-text);
1002
1336
  font-weight: var(--clio-popup-weight);
1337
+ -webkit-font-smoothing: var(--clio-font-smoothing);
1003
1338
  line-height: 16px;
1004
1339
  appearance: none;
1005
1340
  -webkit-appearance: none;
@@ -1174,7 +1509,7 @@
1174
1509
  background: none;
1175
1510
  box-shadow: none;
1176
1511
  color: var(--clio-ink);
1177
- font-family: var(--clio-font-text);
1512
+ font-family: var(--clio-font-small);
1178
1513
  font-size: var(--clio-font-size-small);
1179
1514
  text-align: center;
1180
1515
  cursor: default;
@@ -1280,7 +1615,7 @@
1280
1615
  border-radius: 6px;
1281
1616
  background: var(--clio-paper);
1282
1617
  color: var(--clio-ink);
1283
- font: 700 22px/28px var(--clio-font-chrome);
1618
+ font: 700 22px/28px var(--clio-font-display);
1284
1619
  text-align: center;
1285
1620
  }
1286
1621
 
@@ -1418,6 +1753,189 @@
1418
1753
  }
1419
1754
  }
1420
1755
 
1756
+ /* Control Strip (System 7.5 to Mac OS 9): a row of module buttons with scroll
1757
+ arrows and a tab that folds the strip away. Markup follows AI System 6:
1758
+ .control-strip > button.control-strip-scroll.control-strip-scroll-back,
1759
+ .control-strip-modules[role=toolbar] > .control-strip-module-track >
1760
+ button.control-strip-module (an icon inside; aria-haspopup="menu" draws the
1761
+ menu triangle), button.control-strip-scroll.control-strip-scroll-forward,
1762
+ button.control-strip-handle. Add .is-collapsed to fold it to the tab, and
1763
+ data-edge="right" for a strip on the right edge. Placement is yours
1764
+ (AI System 6 fixes it to the screen's lower left). */
1765
+ /* The strip's art is the same in System 7.5.3, Mac OS 8.5 and Mac OS 9.0
1766
+ (compared pixel for pixel with the backdrop removed); only the cell colours
1767
+ differ, so it lives here for every era. Redrawn by tooling/p9-art.py. */
1768
+ :root {
1769
+ --clio-art-p9-strip-cap: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYBAMAAADXK7paAAAAHlBMVEUAAAAAAABERERVVVWAgICIiIigoKDAwMDMzP/////+VYXkAAAAAXRSTlMAQObYZgAAAGlJREFUeJxjFGQAg/8sbAlgxkwWBiUQfZuBheHfAwYGhg8MTBAlDPgYLAx/9jAwsOgysDAwhDIw/L8LYvy98NcVry4mBoa/Zy+AtTOwlzP8AzFY3r0jYBfC0l/3P4AZjILMBiD6DCPMOwBKOxgiile5lQAAAABJRU5ErkJggg==");
1770
+ --clio-art-s7-strip-cap: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYBAMAAADXK7paAAAAG1BMVEUAAAAAAABERERVVVWIiIiqqqrMzMzMzP/////JRvoVAAAAAXRSTlMAQObYZgAAAGVJREFUeJxjFGQAg/8srAFgxioWBiUQfYeBheHfAwYGhg8MTBAlDPgYLAx/zzIwMMsxsDAwuDAw/L8HYvy98M+FgC6Gf/egDLY0hn8gBvO7dwTsQmj/ff8DmMEoyGwAos8wwrwDAP+1F0dci98qAAAAAElFTkSuQmCC");
1771
+ --clio-art-p9-strip-back: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAgMAAADwXCcuAAAACVBMVEUAAABVVVXd3d2apXz3AAAAAXRSTlMAQObYZgAAACxJREFUeJwFwaERwCAABLD0j3oE7IPBs/8KrcBjSKhiKM/cebs0gvzkfFioLlg9BPcTGNP4AAAAAElFTkSuQmCC");
1772
+ --clio-art-p9-strip-forward: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAgMAAADwXCcuAAAACVBMVEUAAABVVVXd3d2apXz3AAAAAXRSTlMAQObYZgAAAC1JREFUeJwFwSESABAUQMHnzegC9/nFqRX3IegCuxBIwVYxdySFgLzpHbg2cvhWkAdTrBZiqwAAAABJRU5ErkJggg==");
1773
+ --clio-art-p9-strip-menu: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHAQMAAAAVq36TAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABZJREFUeJxjaGA4wPCA4QMTA9MHpgcAIQYE58W2/JQAAAAASUVORK5CYII=");
1774
+ --clio-art-p9-strip-handle: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYBAMAAAAFe7ACAAAAFVBMVEUAAAAAAABERERVVVWIiIjMzMz///8V67gPAAAAAXRSTlMAQObYZgAAAINJREFUeJxVz7ENAjEMheE/IbQokRiAUVJQUjAs5RXZhJvgkp6LjGwfBU309PzFkkMBZAApVVgAIqWUZ9bORsE6fWvWJCukoIlbtjICG0sK5iLnVrM7Hqefsy3qPKnzZM6n/+41D/epbbi772IOaOPYsIv/sIrEG6YA4XqB3vWO2UErvmVcJ4BylohjAAAAAElFTkSuQmCC");
1775
+ --clio-art-p9-strip-tab: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAYBAMAAAAFe7ACAAAAFVBMVEUAAAAAAABERERVVVWIiIjMzMz///8V67gPAAAAAXRSTlMAQObYZgAAAIFJREFUeJxVz7ENAjEMQNHvKPS+DRiBEVJQMi49WeAkRrgJSHoijOyEgipf1pPlyAbQgMwVxqN7iYIACVprRaMUskS9gKJeSWKYADtGLRruzC3Lcqd6WW7uw45V7ma5m/Xv3uW53H3YdLnU7g4YFg9Q+6phfv2nw95BNlGsRf1++QW6eCj9rQPMHAAAAABJRU5ErkJggg==");
1776
+ }
1777
+
1778
+ :where(.control-strip) {
1779
+ display: inline-flex;
1780
+ align-items: stretch;
1781
+ height: var(--clio-strip-height);
1782
+ max-width: 100%;
1783
+ vertical-align: bottom;
1784
+ user-select: none;
1785
+ -webkit-user-select: none;
1786
+ }
1787
+
1788
+ /* The end cap, then every cell: one bevelled box between 1px lines. */
1789
+ :where(.control-strip)::before,
1790
+ :where(.control-strip) > :is(.control-strip-scroll, .control-strip-modules),
1791
+ :where(.control-strip-module) {
1792
+ box-sizing: border-box;
1793
+ border: var(--clio-strip-line);
1794
+ border-left: 0;
1795
+ background: var(--clio-strip-bg);
1796
+ box-shadow: var(--clio-strip-cell-shadow);
1797
+ }
1798
+
1799
+ /* The end cap is one picture: frame, bevel, icon and the rounded lower-left corner. */
1800
+ :where(.control-strip)::before {
1801
+ content: "";
1802
+ flex: none;
1803
+ width: calc(var(--clio-strip-cap-width) + 2px);
1804
+ border: 0;
1805
+ background: var(--clio-strip-cap) 0 0 / 100% 100% no-repeat;
1806
+ box-shadow: none;
1807
+ }
1808
+
1809
+ :where(.control-strip) > :is(.control-strip-scroll, .control-strip-handle) {
1810
+ flex: none;
1811
+ margin: 0;
1812
+ padding: 0;
1813
+ border-radius: 0;
1814
+ appearance: none;
1815
+ -webkit-appearance: none;
1816
+ cursor: default;
1817
+ }
1818
+
1819
+ /* Scroll arrows: 13px cells, sunken and hollow while there is nothing to scroll. */
1820
+ :where(.control-strip) > .control-strip-scroll {
1821
+ width: calc(var(--clio-strip-scroll-width) + 1px);
1822
+ min-width: 0;
1823
+ height: auto;
1824
+ min-height: 0;
1825
+ background: var(--clio-strip-back) 1px 6px / 10px 10px no-repeat, var(--clio-strip-bg);
1826
+ box-shadow: var(--clio-strip-cell-shadow);
1827
+ }
1828
+
1829
+ :where(.control-strip) > .control-strip-scroll-forward {
1830
+ background-image: var(--clio-strip-forward);
1831
+ }
1832
+
1833
+ :where(.control-strip) > .control-strip-scroll:disabled {
1834
+ background:
1835
+ var(--clio-strip-back) 1px 6px / 10px 10px no-repeat,
1836
+ var(--clio-strip-sunken-lines),
1837
+ var(--clio-strip-bg);
1838
+ box-shadow: var(--clio-strip-sunken-shadow);
1839
+ }
1840
+
1841
+ :where(.control-strip) > .control-strip-scroll-forward:disabled {
1842
+ background-image: var(--clio-strip-forward);
1843
+ }
1844
+
1845
+ :where(.control-strip) > .control-strip-scroll:not(:disabled):active,
1846
+ :where(.control-strip-module):not(:disabled):is(:active, [aria-expanded="true"]) {
1847
+ background-color: var(--clio-strip-pressed-bg);
1848
+ box-shadow: var(--clio-strip-pressed-shadow);
1849
+ }
1850
+
1851
+ :where(.control-strip-modules) {
1852
+ display: flex;
1853
+ min-width: 0;
1854
+ overflow: hidden;
1855
+ border: 0;
1856
+ background: none;
1857
+ box-shadow: none;
1858
+ }
1859
+
1860
+ :where(.control-strip-module-track) {
1861
+ display: flex;
1862
+ }
1863
+
1864
+ /* A module: the 16px icon 2px in, the menu triangle 3px from the right. */
1865
+ :where(.control-strip-module) {
1866
+ position: relative;
1867
+ display: flex;
1868
+ flex: none;
1869
+ align-items: center;
1870
+ width: calc(var(--clio-strip-module-width) + 1px);
1871
+ min-width: 0;
1872
+ height: var(--clio-strip-height);
1873
+ min-height: 0;
1874
+ margin: 0;
1875
+ padding: 0 0 0 var(--clio-strip-icon-inset);
1876
+ border-radius: 0;
1877
+ color: var(--clio-ink);
1878
+ appearance: none;
1879
+ -webkit-appearance: none;
1880
+ cursor: default;
1881
+ }
1882
+
1883
+ :where(.control-strip-module) > :is(svg, img, .sys-icon) {
1884
+ width: 16px;
1885
+ height: 16px;
1886
+ }
1887
+
1888
+ :where(.control-strip-module)[aria-haspopup]::after {
1889
+ content: "";
1890
+ position: absolute;
1891
+ top: var(--clio-strip-menu-top);
1892
+ right: calc(var(--clio-strip-menu-inset) + 1px);
1893
+ width: 4px;
1894
+ height: 7px;
1895
+ background: var(--clio-strip-menu) 0 0 / 4px 7px no-repeat;
1896
+ }
1897
+
1898
+ :where(.control-strip-module):disabled {
1899
+ color: var(--clio-disabled);
1900
+ opacity: 0.5;
1901
+ }
1902
+
1903
+ /* The tab: open, a slanted end with a grip; folded, the strip shrinks to it. */
1904
+ :where(.control-strip) > .control-strip-handle {
1905
+ width: var(--clio-strip-handle-width);
1906
+ min-width: 0;
1907
+ height: var(--clio-strip-height);
1908
+ min-height: 0;
1909
+ border: 0;
1910
+ background: var(--clio-strip-handle) 0 0 / 100% 100% no-repeat;
1911
+ box-shadow: none;
1912
+ }
1913
+
1914
+ :where(.control-strip.is-collapsed)::before,
1915
+ :where(.control-strip.is-collapsed) > :not(.control-strip-handle) {
1916
+ display: none;
1917
+ }
1918
+
1919
+ :where(.control-strip.is-collapsed) > .control-strip-handle {
1920
+ width: var(--clio-strip-tab-width);
1921
+ background-image: var(--clio-strip-tab);
1922
+ }
1923
+
1924
+ :where(.control-strip)[data-edge="right"] {
1925
+ flex-direction: row-reverse;
1926
+ }
1927
+
1928
+ :where(.control-strip)[data-edge="right"]::before,
1929
+ :where(.control-strip)[data-edge="right"] > .control-strip-handle {
1930
+ transform: scaleX(-1);
1931
+ }
1932
+
1933
+ :where(.control-strip) > :focus-visible,
1934
+ :where(.control-strip-module):focus-visible {
1935
+ outline: var(--clio-focus-outline);
1936
+ outline-offset: -3px;
1937
+ }
1938
+
1421
1939
  /* Adaptations the historical machines never needed. Historical sizes are
1422
1940
  calibration, not a cage: on a touch screen the controls grow to the
1423
1941
  "coarse pointer" sizes from AI System 6's fidelity contract, without any
@@ -1426,6 +1944,7 @@
1426
1944
  :root,
1427
1945
  [data-era] {
1428
1946
  --clio-control-height: 36px;
1947
+ --clio-popup-height: 36px;
1429
1948
  --clio-field-height: 40px;
1430
1949
  --clio-menubar-height: 32px;
1431
1950
  --clio-menu-item-height: 32px;