clio.css 0.0.0-stage → 0.1.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.
@@ -0,0 +1,934 @@
1
+ {
2
+ "name": "clio.css",
3
+ "version": "0.1.0",
4
+ "description": "CSS library for classic Mac OS interfaces: Macintosh System 6 and Mac OS 8/9 Platinum windows, menus, buttons, scroll bars and dialogs, with every value traced to measured pixels.",
5
+ "homepage": "https://surfine.github.io/clio.css/",
6
+ "license": "MIT",
7
+ "eras": [
8
+ {
9
+ "id": "system6",
10
+ "name": "Macintosh System 6",
11
+ "attribute": "data-era=\"system6\"",
12
+ "default": true,
13
+ "file": "dist/clio.system6.css"
14
+ },
15
+ {
16
+ "id": "platinum",
17
+ "name": "Mac OS 8/9 Platinum",
18
+ "attribute": "data-era=\"platinum\"",
19
+ "file": "dist/clio.platinum.css"
20
+ }
21
+ ],
22
+ "install": {
23
+ "npm": "npm install clio.css",
24
+ "cdn": "https://unpkg.com/clio.css@0.1.0/dist/clio.css",
25
+ "jsdelivr": "https://cdn.jsdelivr.net/npm/clio.css@0.1.0/dist/clio.css"
26
+ },
27
+ "evidenceStatuses": {
28
+ "measured": "read from real pixels of the era",
29
+ "inferred": "reasoned from documentation or behaviour, not measured",
30
+ "adapted": "a deliberate departure for the web (touch, focus, contrast)",
31
+ "third-party": "art or font from a named, licensed project"
32
+ },
33
+ "evidenceBase": "AI System 6 @b75cd4ed",
34
+ "components": [
35
+ {
36
+ "id": "window",
37
+ "bare": true,
38
+ "name": "Window",
39
+ "summary": "A document window: frame, title bar with close and zoom boxes (plus the WindowShade box in Platinum), an optional details bar and a scrolling pane.",
40
+ "selectors": [
41
+ ".window",
42
+ ".window.inactive",
43
+ ".title-bar",
44
+ ".title-bar > .title",
45
+ ".title-bar > .close",
46
+ ".title-bar > .resize",
47
+ ".title-bar > .shade",
48
+ ".details-bar",
49
+ ".window-pane",
50
+ ".status-bar",
51
+ ".separator",
52
+ ".inactive-title-bar"
53
+ ],
54
+ "aliases": {
55
+ "system.css": [
56
+ ".title-bar button.close",
57
+ ".title-bar button.resize",
58
+ ".inactive-title-bar",
59
+ ".window-pane",
60
+ ".details-bar",
61
+ ".separator"
62
+ ],
63
+ "AI System 6": [
64
+ ".close-box",
65
+ ".resize-box",
66
+ ".shade-box",
67
+ ".title-bar h1",
68
+ ".title-bar h2"
69
+ ]
70
+ },
71
+ "tokens": [
72
+ "--clio-window-bg",
73
+ "--clio-window-border",
74
+ "--clio-window-shadow",
75
+ "--clio-titlebar-height",
76
+ "--clio-titlebar-bg",
77
+ "--clio-box-size",
78
+ "--clio-box-inset",
79
+ "--clio-box-isolation",
80
+ "--clio-pane-bg"
81
+ ],
82
+ "accessibility": "Give each box an aria-label (Close, Zoom, Collapse). The title is a real heading; pick the level that fits your page (h1 for a full-screen app window). Buttons keep a visible focus ring. On touch screens each box gets a 45px hit area while its art stays 11px.",
83
+ "html": "<div class=\"window\" style=\"width: 300px\">\n <div class=\"title-bar\">\n <button class=\"close\" aria-label=\"Close\"></button>\n <h3 class=\"title\">Macintosh HD</h3>\n <button class=\"resize\" aria-label=\"Zoom\"></button>\n </div>\n <div class=\"details-bar\">\n <span>12 items</span>\n <span>232K in disk</span>\n <span>167K available</span>\n </div>\n <div class=\"window-pane\" style=\"height: 96px\">\n <p>A window pane scrolls with the era's scroll bars.</p>\n </div>\n</div>",
84
+ "variants": [
85
+ {
86
+ "name": "Inactive window",
87
+ "note": "A background window keeps its title but erases its stripes and boxes.",
88
+ "html": "<div class=\"window inactive\" style=\"width: 300px\">\n <div class=\"title-bar\">\n <button class=\"close\" aria-label=\"Close\"></button>\n <h3 class=\"title\">Untitled</h3>\n <button class=\"resize\" aria-label=\"Zoom\"></button>\n </div>\n <div class=\"window-pane\" style=\"height: 48px\"></div>\n</div>"
89
+ },
90
+ {
91
+ "name": "With a WindowShade box",
92
+ "note": "Platinum draws the collapse box at the far right. System 6 had none, so the box is hidden there.",
93
+ "html": "<div class=\"window\" style=\"width: 300px\">\n <div class=\"title-bar\">\n <button class=\"close\" aria-label=\"Close\"></button>\n <h3 class=\"title\">Appearance</h3>\n <button class=\"resize\" aria-label=\"Zoom\"></button>\n <button class=\"shade\" aria-label=\"Collapse\"></button>\n </div>\n <div class=\"window-pane\" style=\"height: 48px\"></div>\n</div>"
94
+ }
95
+ ],
96
+ "evidence": [
97
+ {
98
+ "era": "system6",
99
+ "claim": "Title bar: a 17px box below a 1px inset; 2px paper, a 12px row of six 1px ink stripes on a 2px period, 2px paper, a 1px rule",
100
+ "status": "measured",
101
+ "source": "apps/desktop/styles/00-foundation.css:906",
102
+ "upstream": "System 6.0.8 running in an emulator, read at exact 2x pixels"
103
+ },
104
+ {
105
+ "era": "system6",
106
+ "claim": "Close and zoom boxes are 11px squares, 7px in from each end, with 3px of paper cut out of the stripes around them",
107
+ "status": "measured",
108
+ "source": "apps/desktop/styles/00-foundation.css:906",
109
+ "upstream": "same capture"
110
+ },
111
+ {
112
+ "era": "system6",
113
+ "claim": "Zoom box: an inner square of 7 of the frame's 11 pixels sharing its top-left corner",
114
+ "status": "measured",
115
+ "source": "apps/desktop/styles/10-windows.css:1059",
116
+ "upstream": "System 6 zoom box, 7:11"
117
+ },
118
+ {
119
+ "era": "system6",
120
+ "claim": "An inactive window draws a plain white title strip with its name; no stripes, close box or zoom box",
121
+ "status": "measured",
122
+ "source": "apps/desktop/styles/00-foundation.css:951",
123
+ "upstream": "observed behaviour of System 6"
124
+ },
125
+ {
126
+ "era": "system6",
127
+ "claim": "Pressed close box shows a starburst",
128
+ "status": "inferred",
129
+ "source": "apps/desktop/styles/10-windows.css (close-box ::before/::after)",
130
+ "upstream": "System 6 close-box tracking; pixels redrawn for clio.css"
131
+ },
132
+ {
133
+ "era": "system6",
134
+ "claim": "The window frame has a 1px ink drop shadow on the right and bottom",
135
+ "status": "inferred",
136
+ "source": "not in AI System 6 (it sets no window shadow)",
137
+ "upstream": "Inside Macintosh, Window Manager: documentProc frame; to be measured"
138
+ },
139
+ {
140
+ "era": "system6",
141
+ "claim": "The details bar closes with two 1px rules",
142
+ "status": "inferred",
143
+ "source": "not measured",
144
+ "upstream": "System 6 Finder window header"
145
+ },
146
+ {
147
+ "era": "platinum",
148
+ "claim": "Frame: 1px black line, a raised 4px strip (white top/left, #999 bottom/right), the black content line; 2px 5px 5px padding",
149
+ "status": "measured",
150
+ "source": "apps/desktop/styles/65-appearance-themes.css:1744 (P14)",
151
+ "upstream": "Mac OS 8/9 window captures 16 and 21"
152
+ },
153
+ {
154
+ "era": "platinum",
155
+ "claim": "Title bar 19px: #ccc, six white/#777 ridge pairs from row 1, #999 shadow row, black rule; #ccc covers behind the boxes",
156
+ "status": "measured",
157
+ "source": "apps/desktop/styles/65-appearance-themes.css:104",
158
+ "upstream": "GUIdebook Mac OS 9.0 Appearance window (Theme Lab specimen active-titlebar)"
159
+ },
160
+ {
161
+ "era": "platinum",
162
+ "claim": "Title in bold Charcoal; on other systems Asap at width 123 shifted (-1px, -1px), the metrics the title bar was measured with",
163
+ "status": "measured",
164
+ "source": "apps/desktop/styles/65-appearance-themes.css:1803",
165
+ "upstream": "GUIdebook Mac OS 9.0 Appearance window"
166
+ },
167
+ {
168
+ "era": "platinum",
169
+ "claim": "Boxes: 11px, #222 frame, #999 to white gradient, #888 bevel above-left and white below-right; pressed #444 to #bbb",
170
+ "status": "measured",
171
+ "source": "apps/desktop/styles/65-appearance-themes.css:1820",
172
+ "upstream": "GUIdebook Mac OS 9.0 captures"
173
+ },
174
+ {
175
+ "era": "platinum",
176
+ "claim": "Zoom mark: a six-pixel lower-left corner; WindowShade mark: two nine-pixel rules at y=4 and y=6",
177
+ "status": "measured",
178
+ "source": "apps/desktop/styles/65-platinum-utility.css:725, :738",
179
+ "upstream": "GUIdebook Mac OS 9, 1x pixels"
180
+ },
181
+ {
182
+ "era": "platinum",
183
+ "claim": "Background window: #555 frame and drop, flat controls, #777 title, boxes erased",
184
+ "status": "measured",
185
+ "source": "apps/desktop/styles/65-appearance-themes.css:1757 (N1, P26)",
186
+ "upstream": "Mac OS 9 native capture 53; GUIdebook active/inactive"
187
+ }
188
+ ]
189
+ },
190
+ {
191
+ "id": "menu",
192
+ "bare": true,
193
+ "name": "Menu bar and menus",
194
+ "summary": "The menu bar across the top of the screen and its pull-down menus: items, keyboard shortcuts, check marks, separators, disabled items and submenus.",
195
+ "selectors": [
196
+ ".menu-bar",
197
+ "[role=menubar]",
198
+ ".menu",
199
+ "[role=menu]",
200
+ ".menu > li",
201
+ "li.separator",
202
+ "li.checked",
203
+ "li.disabled",
204
+ "kbd"
205
+ ],
206
+ "aliases": {
207
+ "system.css": [
208
+ "ul[role=menu-bar]",
209
+ "[role=menu-item]",
210
+ "li.divider"
211
+ ]
212
+ },
213
+ "tokens": [
214
+ "--clio-menubar-height",
215
+ "--clio-menubar-bg",
216
+ "--clio-menu-bg",
217
+ "--clio-menu-shadow",
218
+ "--clio-menu-item-height",
219
+ "--clio-menu-item-active-bg",
220
+ "--clio-menu-separator"
221
+ ],
222
+ "accessibility": "Use role=menubar, role=menu and role=menuitem with aria-haspopup and aria-expanded on titles. A menu opens while its title has aria-expanded=true, while its <li> has the class open, or while focus is inside it, so it works from the keyboard without script. Arrow-key movement between items is up to your script.",
223
+ "html": "<ul class=\"menu-bar\" role=\"menubar\" aria-label=\"Menu bar\">\n <li role=\"none\" class=\"open\">\n <button role=\"menuitem\" aria-haspopup=\"true\" aria-expanded=\"true\">File</button>\n <ul class=\"menu\" role=\"menu\">\n <li role=\"none\"><button role=\"menuitem\">New Folder <kbd>⌘N</kbd></button></li>\n <li role=\"none\"><button role=\"menuitem\">Open <kbd>⌘O</kbd></button></li>\n <li role=\"none\"><button role=\"menuitem\" aria-disabled=\"true\">Print</button></li>\n <li role=\"none\"><button role=\"menuitem\">Close <kbd>⌘W</kbd></button></li>\n <li role=\"separator\"></li>\n <li role=\"none\"><button role=\"menuitemcheckbox\" aria-checked=\"true\">Show Clipboard</button></li>\n </ul>\n </li>\n <li role=\"none\"><button role=\"menuitem\" aria-haspopup=\"true\" aria-expanded=\"false\">Edit</button></li>\n <li role=\"none\"><button role=\"menuitem\" aria-haspopup=\"true\" aria-expanded=\"false\">View</button></li>\n <li role=\"none\"><button role=\"menuitem\" aria-haspopup=\"true\" aria-expanded=\"false\">Special</button></li>\n</ul>",
224
+ "reserveHeight": 150,
225
+ "evidence": [
226
+ {
227
+ "era": "system6",
228
+ "claim": "Menu bar 20px with a 1px ink rule; selected title inverts",
229
+ "status": "inferred",
230
+ "source": "docs/design/CLASSIC_PLATINUM_FIDELITY.md:87",
231
+ "upstream": "historical reference ~20px; not yet measured from a capture"
232
+ },
233
+ {
234
+ "era": "system6",
235
+ "claim": "Menu: paper, 1px ink frame, 1px ink drop shadow; 16px rows; the highlighted row inverts",
236
+ "status": "inferred",
237
+ "source": "apps/desktop/styles/00-foundation.css:1094",
238
+ "upstream": "System 6 menus; Chicago 12 line spacing"
239
+ },
240
+ {
241
+ "era": "system6",
242
+ "claim": "Separator: a dotted grey rule through a full-height row",
243
+ "status": "inferred",
244
+ "source": "not measured",
245
+ "upstream": "System 6 menus"
246
+ },
247
+ {
248
+ "era": "platinum",
249
+ "claim": "Menu bar: #ddd, white top line, #999 bottom line, 1px black rule, 20px; open title #333399 with #6666cc/#000088 lines",
250
+ "status": "measured",
251
+ "source": "apps/desktop/styles/65-appearance-themes.css:298, :45",
252
+ "upstream": "Mac OS 9 native menu bar captures 02/04"
253
+ },
254
+ {
255
+ "era": "platinum",
256
+ "claim": "Menu: no top rule, white/#999 inner bevel, #222 1px drop; 16px rows at weight 600; highlight #333399 with #6666cc/#000088 side columns",
257
+ "status": "measured",
258
+ "source": "apps/desktop/styles/65-appearance-themes.css:912 (P21), :917 (P24)",
259
+ "upstream": "GUIdebook Mac OS 9.0 Apple menu (Theme Lab specimen apple-menu)"
260
+ },
261
+ {
262
+ "era": "platinum",
263
+ "claim": "Separator: #888 over white, in an 8px row",
264
+ "status": "inferred",
265
+ "source": "apps/desktop/styles/65-appearance-themes.css (separator #888/white)",
266
+ "upstream": "the line pair is measured; the 8px row height is not"
267
+ },
268
+ {
269
+ "era": "platinum",
270
+ "claim": "Check mark and submenu arrow art",
271
+ "status": "third-party",
272
+ "source": "classic-stylesheets macos9/checkmark.svg, menu-right.svg (MIT)",
273
+ "upstream": "nielssp/classic-stylesheets @9ebd2d8"
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ "id": "button",
279
+ "name": "Push button",
280
+ "summary": "Push buttons, the default button with its ring, the pressed state and the disabled state. Styles <button>, .btn and input buttons.",
281
+ "selectors": [
282
+ "button",
283
+ ".btn",
284
+ ".default",
285
+ ".btn-default",
286
+ "button:active",
287
+ "button.active",
288
+ "button:disabled",
289
+ "input[type=submit]"
290
+ ],
291
+ "aliases": {
292
+ "system.css": [
293
+ ".btn",
294
+ ".btn-default",
295
+ ".standard-button"
296
+ ],
297
+ "AI System 6": [
298
+ ".btn.default"
299
+ ]
300
+ },
301
+ "tokens": [
302
+ "--clio-button-bg",
303
+ "--clio-button-border",
304
+ "--clio-button-radius",
305
+ "--clio-button-shadow",
306
+ "--clio-button-active-bg",
307
+ "--clio-button-default-ring",
308
+ "--clio-control-height"
309
+ ],
310
+ "accessibility": "Hover never changes a button: it is pressed only by pointer-down, Space or Enter. Keyboard focus draws a dotted frame (System 6) or a 2px #6666cc ring (Platinum), separate from the default ring.",
311
+ "html": "<div class=\"field-row\" style=\"gap: 16px\">\n <button>Cancel</button>\n <button class=\"default\">OK</button>\n <button class=\"active\">Pressed</button>\n <button disabled>Eject</button>\n</div>",
312
+ "evidence": [
313
+ {
314
+ "era": "system6",
315
+ "claim": "1px ink round rectangle, paper face, Chicago 12; pressed inverts to ink with paper text",
316
+ "status": "inferred",
317
+ "source": "apps/desktop/styles/10-windows.css:3588",
318
+ "upstream": "AI System 6 Theme Lab default-ok specimen (authored, not a capture)"
319
+ },
320
+ {
321
+ "era": "system6",
322
+ "claim": "Default button: a 1px gap then a 3px ring",
323
+ "status": "inferred",
324
+ "source": "apps/desktop/styles/00-foundation.css:79",
325
+ "upstream": "Inside Macintosh, Dialog Manager: PenSize(3,3), InsetRect(-4,-4), FrameRoundRect(16,16)"
326
+ },
327
+ {
328
+ "era": "both",
329
+ "claim": "Hover never changes a push button; pressed only on pointer-down, Space or Enter",
330
+ "status": "inferred",
331
+ "source": "docs/design/CLASSIC_PLATINUM_FIDELITY.md:210",
332
+ "upstream": "a 1987–1999 Mac had no hover state"
333
+ },
334
+ {
335
+ "era": "system6",
336
+ "claim": "Keyboard focus: a 1px dotted frame 2px out",
337
+ "status": "adapted",
338
+ "source": "apps/desktop/styles/00-foundation.css:519",
339
+ "upstream": "System 6 had no button focus; a dotted frame cannot be read as the default ring"
340
+ },
341
+ {
342
+ "era": "platinum",
343
+ "claim": "#ddd face, 1px black border, 3px corners, bevel white/#ddd over #777/#aaa",
344
+ "status": "measured",
345
+ "source": "apps/desktop/styles/65-appearance-themes.css:236",
346
+ "upstream": "GUIdebook Mac OS 9.0 About dialog (Theme Lab specimen default-ok)"
347
+ },
348
+ {
349
+ "era": "platinum",
350
+ "claim": "Pressed: #666 face, white text, #444/#555 top-left over #888/#777 bottom-right",
351
+ "status": "measured",
352
+ "source": "apps/desktop/styles/65-appearance-themes.css:933 (P29)",
353
+ "upstream": "Infinite Mac Mac OS 9.0 capture"
354
+ },
355
+ {
356
+ "era": "platinum",
357
+ "claim": "Default ring: 1px black, a #aaa band with #ddd/#777 edges, 1px gap",
358
+ "status": "measured",
359
+ "source": "apps/desktop/styles/65-platinum-utility.css:773",
360
+ "upstream": "GUIdebook Mac OS 9.0 (default-ok specimen)"
361
+ },
362
+ {
363
+ "era": "platinum",
364
+ "claim": "Disabled: #888 border, flat #ddd, #777 text; the default ring goes #888",
365
+ "status": "measured",
366
+ "source": "apps/desktop/styles/65-appearance-themes.css (N5)",
367
+ "upstream": "GUIdebook Open dialog Eject button (button-disabled specimen)"
368
+ }
369
+ ]
370
+ },
371
+ {
372
+ "id": "checkbox",
373
+ "name": "Check box",
374
+ "summary": "A check box drawn on the native <input type=checkbox>; no extra label markup needed.",
375
+ "selectors": [
376
+ "input[type=checkbox]",
377
+ "label > input[type=checkbox]",
378
+ ".field-row"
379
+ ],
380
+ "tokens": [
381
+ "--clio-check-size",
382
+ "--clio-check-bg",
383
+ "--clio-check-border",
384
+ "--clio-check-shadow",
385
+ "--clio-check-mark"
386
+ ],
387
+ "accessibility": "Native input, so keyboard, form and screen-reader behaviour are the browser's. In forced-colours mode the control returns to the system's own drawing.",
388
+ "html": "<div class=\"field-row-stacked\">\n <label><input type=\"checkbox\" checked> Show warnings</label>\n <label><input type=\"checkbox\"> Use small icons</label>\n <label><input type=\"checkbox\" checked disabled> Locked</label>\n</div>",
389
+ "evidence": [
390
+ {
391
+ "era": "system6",
392
+ "claim": "A 12px box; checked draws an X from corner to corner",
393
+ "status": "inferred",
394
+ "source": "apps/desktop/styles/00-foundation.css:965",
395
+ "upstream": "System 6 check box; AI System 6 uses 13px, clio.css 12px to match the radio"
396
+ },
397
+ {
398
+ "era": "system6",
399
+ "claim": "X art",
400
+ "status": "third-party",
401
+ "source": "apps/desktop/assets/themes/classic/controls/checkmark.svg",
402
+ "upstream": "system.css icon/checkmark.svg (MIT, Sakun Acharige)"
403
+ },
404
+ {
405
+ "era": "platinum",
406
+ "claim": "12px #ddd well, 1px black frame, white top-left and #888 bottom-right bevel",
407
+ "status": "measured",
408
+ "source": "apps/desktop/styles/65-appearance-themes.css:897 (P18)",
409
+ "upstream": "GUIdebook Mac OS 9.0 Appearance Options tab (checkbox specimens)"
410
+ },
411
+ {
412
+ "era": "platinum",
413
+ "claim": "Check mark art",
414
+ "status": "third-party",
415
+ "source": "classic-stylesheets macos9/checkmark.svg (MIT)",
416
+ "upstream": "nielssp/classic-stylesheets @9ebd2d8"
417
+ }
418
+ ]
419
+ },
420
+ {
421
+ "id": "radio",
422
+ "name": "Radio button",
423
+ "summary": "A radio button drawn on the native <input type=radio>.",
424
+ "selectors": [
425
+ "input[type=radio]"
426
+ ],
427
+ "tokens": [
428
+ "--clio-radio-size",
429
+ "--clio-radio-off",
430
+ "--clio-radio-on"
431
+ ],
432
+ "accessibility": "Native input; group radios with the same name inside a fieldset with a legend.",
433
+ "html": "<fieldset>\n <legend>Highlight</legend>\n <div class=\"field-row-stacked\">\n <label><input type=\"radio\" name=\"hl\" checked> Lavender</label>\n <label><input type=\"radio\" name=\"hl\"> Graphite</label>\n <label><input type=\"radio\" name=\"hl\" disabled> Other</label>\n </div>\n</fieldset>",
434
+ "evidence": [
435
+ {
436
+ "era": "system6",
437
+ "claim": "12px ring and 6px dot art",
438
+ "status": "third-party",
439
+ "source": "apps/desktop/assets/themes/classic/controls/radio-*.svg",
440
+ "upstream": "system.css icon/radio-border.svg, radio-dot.svg (MIT, Sakun Acharige)"
441
+ },
442
+ {
443
+ "era": "platinum",
444
+ "claim": "Radio drawn with CSS gradients: black ring, white to #888 well, 6px black dot",
445
+ "status": "adapted",
446
+ "source": "apps/desktop/styles/65-appearance-themes.css:291",
447
+ "upstream": "AI System 6 later replaced this with art cut from a capture (P19); clio.css ships no cut art"
448
+ }
449
+ ]
450
+ },
451
+ {
452
+ "id": "text-field",
453
+ "name": "Text field",
454
+ "summary": "Single-line inputs and <textarea>.",
455
+ "selectors": [
456
+ "input[type=text]",
457
+ "input[type=search]",
458
+ "input[type=email]",
459
+ "input[type=password]",
460
+ "input[type=number]",
461
+ "textarea"
462
+ ],
463
+ "tokens": [
464
+ "--clio-field-bg",
465
+ "--clio-field-border",
466
+ "--clio-field-shadow",
467
+ "--clio-field-padding",
468
+ "--clio-field-height"
469
+ ],
470
+ "accessibility": "Keyboard focus draws a ring around the field in addition to the caret.",
471
+ "html": "<div class=\"field-row-stacked\" style=\"width: 240px\">\n <label for=\"clio-name\">Name:</label>\n <input id=\"clio-name\" type=\"text\" value=\"Untitled\" style=\"width: 100%\">\n <label for=\"clio-notes\">Notes:</label>\n <textarea id=\"clio-notes\" rows=\"3\" style=\"width: 100%\">Text areas scroll with the era's scroll bar.</textarea>\n</div>",
472
+ "evidence": [
473
+ {
474
+ "era": "system6",
475
+ "claim": "1px ink frame, white, Geneva 12",
476
+ "status": "inferred",
477
+ "source": "apps/desktop/styles/00-foundation.css:189",
478
+ "upstream": "System 6 dialog edit text"
479
+ },
480
+ {
481
+ "era": "platinum",
482
+ "claim": "White field, 1px black frame, #888 shadow above-left and white etch below-right",
483
+ "status": "measured",
484
+ "source": "apps/desktop/styles/65-appearance-themes.css:935 (P30)",
485
+ "upstream": "Infinite Mac Mac OS 9.0 capture"
486
+ },
487
+ {
488
+ "era": "platinum",
489
+ "claim": "Focus: a 2px #6666cc ring",
490
+ "status": "measured",
491
+ "source": "apps/desktop/styles/65-platinum-utility.css:38",
492
+ "upstream": "Mac OS 9 capture platinum-native/10b-fonts-tab"
493
+ }
494
+ ]
495
+ },
496
+ {
497
+ "id": "select",
498
+ "name": "Pop-up menu",
499
+ "summary": "A <select> drawn as the era's pop-up menu; <select multiple> or size>1 becomes a list box.",
500
+ "selectors": [
501
+ "select",
502
+ "select[multiple]",
503
+ "select[size]"
504
+ ],
505
+ "tokens": [
506
+ "--clio-popup-bg",
507
+ "--clio-popup-border",
508
+ "--clio-popup-shadow",
509
+ "--clio-popup-arrow"
510
+ ],
511
+ "accessibility": "Native <select>, so the open list is the browser's own and works everywhere.",
512
+ "html": "<div class=\"field-row\">\n <label for=\"clio-font\">Font:</label>\n <select id=\"clio-font\">\n <option>Chicago</option>\n <option selected>Geneva</option>\n <option>New York</option>\n </select>\n</div>",
513
+ "evidence": [
514
+ {
515
+ "era": "system6",
516
+ "claim": "A box with a 1px drop shadow",
517
+ "status": "inferred",
518
+ "source": "not measured",
519
+ "upstream": "System 6 pop-up menu CDEF"
520
+ },
521
+ {
522
+ "era": "system6",
523
+ "claim": "The down triangle",
524
+ "status": "adapted",
525
+ "source": "drawn for clio.css",
526
+ "upstream": "a System 7 convention, kept so the control reads as a menu"
527
+ },
528
+ {
529
+ "era": "platinum",
530
+ "claim": "#ddd, 3px corners, white/#aaa bevel, bold label, a separate bevelled arrow part with the 7x10 arrow",
531
+ "status": "measured",
532
+ "source": "apps/desktop/styles/65-appearance-themes.css:1916 (P31)",
533
+ "upstream": "GUIdebook Mac OS 9.0 (popup-normal specimen), native 09b"
534
+ },
535
+ {
536
+ "era": "platinum",
537
+ "claim": "The arrow part is drawn with background layers, approximating the measured bevel",
538
+ "status": "inferred",
539
+ "source": "clio.css",
540
+ "upstream": "select has no ::after in CSS"
541
+ },
542
+ {
543
+ "era": "platinum",
544
+ "claim": "Arrow art",
545
+ "status": "third-party",
546
+ "source": "classic-stylesheets macos9/dropdown.svg (MIT)",
547
+ "upstream": "nielssp/classic-stylesheets @9ebd2d8"
548
+ }
549
+ ]
550
+ },
551
+ {
552
+ "id": "listbox",
553
+ "bare": true,
554
+ "name": "List box",
555
+ "summary": "A scrolling list with one or more selected rows, as in the Open dialog.",
556
+ "selectors": [
557
+ ".listbox",
558
+ "[role=listbox]",
559
+ "[role=option]",
560
+ "[aria-selected=true]",
561
+ ".selected"
562
+ ],
563
+ "tokens": [
564
+ "--clio-list-bg",
565
+ "--clio-list-border",
566
+ "--clio-list-shadow",
567
+ "--clio-list-row",
568
+ "--clio-selection-bg",
569
+ "--clio-selection-fg"
570
+ ],
571
+ "accessibility": "Use role=listbox and role=option with aria-selected; move focus with your script (roving tabindex).",
572
+ "html": "<ul class=\"listbox\" role=\"listbox\" aria-label=\"Documents\" style=\"width: 220px; height: 82px\">\n <li role=\"option\" aria-selected=\"true\">Apple DVD Player</li>\n <li role=\"option\">Apple Video Player</li>\n <li role=\"option\">AppleCD Audio Player</li>\n <li role=\"option\">QuickTime</li>\n <li role=\"option\">Security</li>\n <li role=\"option\">SimpleText</li>\n</ul>",
573
+ "evidence": [
574
+ {
575
+ "era": "system6",
576
+ "claim": "White list, 1px ink frame, 16px rows, selection inverts",
577
+ "status": "inferred",
578
+ "source": "not measured",
579
+ "upstream": "System 6 Standard File dialog"
580
+ },
581
+ {
582
+ "era": "platinum",
583
+ "claim": "Selection is lavender #ccccff with black text",
584
+ "status": "measured",
585
+ "source": "apps/desktop/styles/65-appearance-themes.css:128",
586
+ "upstream": "GUIdebook Mac OS 9.0 Open dialog (open-list-scrollbar specimen)"
587
+ },
588
+ {
589
+ "era": "platinum",
590
+ "claim": "Rows carry no divider",
591
+ "status": "measured",
592
+ "source": "apps/desktop/styles/65-appearance-themes.css:860 (P10)",
593
+ "upstream": "Mac OS 9 native list capture 21"
594
+ }
595
+ ]
596
+ },
597
+ {
598
+ "id": "scrollbar",
599
+ "bare": true,
600
+ "name": "Scroll bar",
601
+ "summary": "The era's scroll bar on every scroll area clio.css owns, on any element with .clio-scroll, or on the whole page with <html class=\"clio-scrollbars\">.",
602
+ "selectors": [
603
+ ".window-pane",
604
+ ".clio-scroll",
605
+ "html.clio-scrollbars",
606
+ "::-webkit-scrollbar"
607
+ ],
608
+ "tokens": [
609
+ "--clio-scrollbar-size",
610
+ "--clio-scrollbar-track",
611
+ "--clio-scrollbar-thumb-bg",
612
+ "--clio-scrollbar-button-bg"
613
+ ],
614
+ "accessibility": "Native scrolling is untouched: wheel, keyboard and touch scroll as usual.",
615
+ "html": "<div class=\"clio clio-scroll\" style=\"width: 220px; height: 96px; overflow: scroll; border: 1px solid; background: var(--clio-pane-bg); font-family: var(--clio-font-text)\">\n <p style=\"width: 360px; margin: 8px\">The lane, the scroll box and both arrow boxes come from the era. Firefox has no scroll-bar parts, so it gets the era's colours only.</p>\n <p style=\"margin: 8px\">Scroll me.</p>\n</div>",
616
+ "evidence": [
617
+ {
618
+ "era": "system6",
619
+ "claim": "A 16px lane",
620
+ "status": "inferred",
621
+ "source": "apps/desktop/styles/00-foundation.css:1173",
622
+ "upstream": "System 6 document window frame"
623
+ },
624
+ {
625
+ "era": "system6",
626
+ "claim": "50% grey lane pattern",
627
+ "status": "inferred",
628
+ "source": "apps/desktop/styles/00-foundation.css:1177",
629
+ "upstream": "drawn as a 1px checker here; AI System 6 uses a 2px cell"
630
+ },
631
+ {
632
+ "era": "system6",
633
+ "claim": "Hollow arrow art",
634
+ "status": "inferred",
635
+ "source": "drawn for clio.css",
636
+ "upstream": "System 6 scroll arrows; to be measured"
637
+ },
638
+ {
639
+ "era": "both",
640
+ "claim": "The scroll box grows with the visible fraction instead of a fixed 16px square",
641
+ "status": "adapted",
642
+ "source": "clio.css",
643
+ "upstream": "browsers size ::-webkit-scrollbar-thumb themselves"
644
+ },
645
+ {
646
+ "era": "platinum",
647
+ "claim": "Lane #aaa with a double bevel; lavender #9999ff scroll box with #ccf/#66c bevel and grip ridges; #ddd arrow boxes with stepped 2/4/6/8 arrows",
648
+ "status": "measured",
649
+ "source": "apps/desktop/styles/65-appearance-themes.css:336 (P16), :351 (P17), :364 (P27)",
650
+ "upstream": "Mac OS 9 native capture 16; GUIdebook Open dialog"
651
+ }
652
+ ]
653
+ },
654
+ {
655
+ "id": "dialog",
656
+ "bare": true,
657
+ "name": "Dialogs and alerts",
658
+ "summary": "The modal dialog frame, the alert layout with an icon, and the plain shadowed box.",
659
+ "selectors": [
660
+ ".modal-dialog",
661
+ ".alert-box",
662
+ ".standard-dialog",
663
+ ".modeless-dialog",
664
+ ".alert-icon",
665
+ ".dialog-buttons"
666
+ ],
667
+ "aliases": {
668
+ "system.css": [
669
+ ".modal-dialog",
670
+ ".alert-box",
671
+ ".standard-dialog",
672
+ ".outer-border",
673
+ ".inner-border",
674
+ ".modal-contents"
675
+ ]
676
+ },
677
+ "tokens": [
678
+ "--clio-dialog-bg",
679
+ "--clio-modal-border",
680
+ "--clio-modal-frame",
681
+ "--clio-plain-dialog-shadow"
682
+ ],
683
+ "accessibility": "Put the classes on a native <dialog> opened with showModal() to get focus trapping and Escape; label it with aria-labelledby.",
684
+ "html": "<div class=\"alert-box\" role=\"alertdialog\" aria-labelledby=\"clio-alert-msg\" style=\"width: 340px\">\n <span class=\"alert-icon caution\" aria-hidden=\"true\"></span>\n <p id=\"clio-alert-msg\">Save changes to the document “Untitled” before closing?</p>\n <div class=\"dialog-buttons\">\n <button>Don’t Save</button>\n <button>Cancel</button>\n <button class=\"default\">Save</button>\n </div>\n</div>",
685
+ "variants": [
686
+ {
687
+ "name": "Plain box",
688
+ "note": "The shadowed box, for a message with no frame of its own.",
689
+ "html": "<div class=\"standard-dialog\" style=\"width: 280px\">\n <p style=\"margin: 0\">Welcome to Macintosh.</p>\n</div>"
690
+ }
691
+ ],
692
+ "evidence": [
693
+ {
694
+ "era": "system6",
695
+ "claim": "Modal frame: 1px ink, 1px paper gap, 2px ink",
696
+ "status": "inferred",
697
+ "source": "apps/desktop/styles/84-clio-write.css:210",
698
+ "upstream": "AI System 6 has two recipes (this one and 00-foundation.css .system-modal); neither is measured"
699
+ },
700
+ {
701
+ "era": "system6",
702
+ "claim": "Plain box: 1px ink frame and a 2px drop shadow",
703
+ "status": "inferred",
704
+ "source": "not measured",
705
+ "upstream": "altDBoxProc"
706
+ },
707
+ {
708
+ "era": "both",
709
+ "claim": "The alert icon is drawn here, not Apple's",
710
+ "status": "adapted",
711
+ "source": "clio.css",
712
+ "upstream": "no Apple icons are shipped"
713
+ },
714
+ {
715
+ "era": "platinum",
716
+ "claim": "1px black frame over #ddd, inner bevel of three white steps inside #555/#999/#aaa, 1px black drop",
717
+ "status": "measured",
718
+ "source": "apps/desktop/styles/65-appearance-themes.css:840 (P06)",
719
+ "upstream": "GUIdebook Mac OS 9.0 About application (about-alert specimen)"
720
+ }
721
+ ]
722
+ },
723
+ {
724
+ "id": "fieldset",
725
+ "name": "Group box",
726
+ "summary": "A <fieldset> with a <legend>, for grouping controls.",
727
+ "selectors": [
728
+ "fieldset",
729
+ "legend"
730
+ ],
731
+ "tokens": [
732
+ "--clio-group-border",
733
+ "--clio-group-shadow"
734
+ ],
735
+ "accessibility": "A fieldset's legend names the group for screen readers.",
736
+ "html": "<fieldset style=\"width: 260px\">\n <legend>Sound</legend>\n <div class=\"field-row\"><label><input type=\"checkbox\" checked> Play system alerts</label></div>\n</fieldset>",
737
+ "evidence": [
738
+ {
739
+ "era": "system6",
740
+ "claim": "1px ink frame with the legend on paper",
741
+ "status": "inferred",
742
+ "source": "not measured",
743
+ "upstream": "System 6 control panels"
744
+ },
745
+ {
746
+ "era": "platinum",
747
+ "claim": "Etched: #888 line with a white line inside and below",
748
+ "status": "measured",
749
+ "source": "apps/desktop/styles/65-appearance-themes.css:909 (P20)",
750
+ "upstream": "Mac OS 9 native group box"
751
+ }
752
+ ]
753
+ },
754
+ {
755
+ "id": "progress",
756
+ "name": "Progress bar",
757
+ "summary": "The native <progress> element as the era's thermometer.",
758
+ "selectors": [
759
+ "progress"
760
+ ],
761
+ "tokens": [
762
+ "--clio-progress-height",
763
+ "--clio-progress-bg",
764
+ "--clio-progress-fill",
765
+ "--clio-progress-shadow"
766
+ ],
767
+ "accessibility": "Native <progress>; give it a label or aria-label.",
768
+ "html": "<div class=\"field-row-stacked\" style=\"width: 260px\">\n <label for=\"clio-copy\">Copying “System Folder”…</label>\n <progress id=\"clio-copy\" max=\"100\" value=\"62\">62%</progress>\n</div>",
769
+ "evidence": [
770
+ {
771
+ "era": "system6",
772
+ "claim": "1px ink frame, ink fill",
773
+ "status": "inferred",
774
+ "source": "not measured",
775
+ "upstream": "System 6 Finder copy progress"
776
+ },
777
+ {
778
+ "era": "platinum",
779
+ "claim": "Barber-pole fill: ten 1px hard stops from #333399 through #eee to #000055",
780
+ "status": "measured",
781
+ "source": "apps/desktop/styles/65-appearance-themes.css:937 (P32)",
782
+ "upstream": "Mac OS 9 native progress bar"
783
+ },
784
+ {
785
+ "era": "platinum",
786
+ "claim": "#bbb track with white/#aaa outer and #888/#ddd inner bevel",
787
+ "status": "inferred",
788
+ "source": "apps/desktop/styles/65-appearance-themes.css:592",
789
+ "upstream": "AI System 6 token, not tagged as measured"
790
+ }
791
+ ]
792
+ },
793
+ {
794
+ "id": "tabs",
795
+ "name": "Tabs",
796
+ "summary": "A tab strip over a panel. Native in Platinum; an adaptation in System 6, which had no tab control.",
797
+ "selectors": [
798
+ "[role=tablist]",
799
+ "[role=tab]",
800
+ "[aria-selected=true]",
801
+ "[role=tabpanel]",
802
+ ".tabs",
803
+ ".tab-panel"
804
+ ],
805
+ "tokens": [
806
+ "--clio-tab-height",
807
+ "--clio-tab-panel-bg",
808
+ "--clio-tab-panel-border"
809
+ ],
810
+ "accessibility": "Use role=tablist, role=tab with aria-selected and aria-controls, and role=tabpanel; arrow keys between tabs are up to your script.",
811
+ "html": "<div style=\"width: 320px\">\n <div role=\"tablist\" aria-label=\"Appearance\">\n <button role=\"tab\" aria-selected=\"true\">Appearance</button>\n <button role=\"tab\" aria-selected=\"false\">Fonts</button>\n <button role=\"tab\" aria-selected=\"false\">Sound</button>\n </div>\n <div role=\"tabpanel\">\n <div class=\"field-row\"><label for=\"clio-theme\">Theme:</label>\n <select id=\"clio-theme\"><option>Mac OS Default</option></select>\n </div>\n </div>\n</div>",
812
+ "evidence": [
813
+ {
814
+ "era": "system6",
815
+ "claim": "Boxed labels that join the panel",
816
+ "status": "adapted",
817
+ "source": "clio.css",
818
+ "upstream": "System 6 had no tab control"
819
+ },
820
+ {
821
+ "era": "platinum",
822
+ "claim": "Tab art: sloped caps, #ccc tabs, the front tab #eee and 2px taller",
823
+ "status": "third-party",
824
+ "source": "classic-stylesheets macos9/tab*.svg (MIT)",
825
+ "upstream": "nielssp/classic-stylesheets @9ebd2d8; AI System 6 measured a 21-row tab (P01, 65-appearance-themes.css:742)"
826
+ }
827
+ ]
828
+ },
829
+ {
830
+ "id": "desktop",
831
+ "bare": true,
832
+ "name": "Desktop and icons",
833
+ "summary": "The desktop pattern and desktop icons with their name labels. Bring your own icon images; clio.css ships no Apple icons.",
834
+ "selectors": [
835
+ ".desktop",
836
+ ".icon",
837
+ ".icon > img",
838
+ ".icon > figcaption",
839
+ ".icon.selected"
840
+ ],
841
+ "tokens": [
842
+ "--clio-desktop",
843
+ "--clio-label-bg",
844
+ "--clio-label-selected-bg",
845
+ "--clio-icon-selected-filter"
846
+ ],
847
+ "accessibility": "Make each icon a <button> (or give it role=button and tabindex=0) with its name as the label.",
848
+ "html": "<div class=\"desktop\" style=\"min-height: 0; padding: 16px; display: flex; gap: 12px\">\n <button class=\"icon\" aria-pressed=\"false\">\n <svg viewBox=\"0 0 32 32\" aria-hidden=\"true\"><rect x=\"4\" y=\"6\" width=\"24\" height=\"20\" fill=\"#fff\" stroke=\"#000\"/><rect x=\"7\" y=\"9\" width=\"18\" height=\"11\" fill=\"#000\"/></svg>\n <span>Macintosh HD</span>\n </button>\n <button class=\"icon selected\" aria-pressed=\"true\">\n <svg viewBox=\"0 0 32 32\" aria-hidden=\"true\"><path d=\"M5 9h9l2 2h11v15H5z\" fill=\"#fff\" stroke=\"#000\"/></svg>\n <span>Documents</span>\n </button>\n</div>",
849
+ "evidence": [
850
+ {
851
+ "era": "system6",
852
+ "claim": "A 50% grey desktop pattern",
853
+ "status": "inferred",
854
+ "source": "apps/desktop/styles/00-foundation.css:224",
855
+ "upstream": "System 6.0.8 default desktop; AI System 6 draws an 8px stipple"
856
+ },
857
+ {
858
+ "era": "system6",
859
+ "claim": "White name tag; a selected icon inverts",
860
+ "status": "inferred",
861
+ "source": "apps/desktop/styles/00-foundation.css (desktop-label tokens)",
862
+ "upstream": "System 6 Finder"
863
+ },
864
+ {
865
+ "era": "platinum",
866
+ "claim": "70% white tag with no edge; selected: black tag, white name, artwork darkened",
867
+ "status": "measured",
868
+ "source": "apps/desktop/styles/65-appearance-themes.css:882 (P12, P13)",
869
+ "upstream": "Mac OS 9 native capture 02"
870
+ },
871
+ {
872
+ "era": "platinum",
873
+ "claim": "Desktop colour #4a71ab",
874
+ "status": "inferred",
875
+ "source": "apps/desktop/styles/65-appearance-themes.css:85",
876
+ "upstream": "base colour of AI System 6's azul tile, generated from a 512 Pixels capture; the tile is not shipped"
877
+ }
878
+ ]
879
+ },
880
+ {
881
+ "id": "typography",
882
+ "name": "Type and tokens",
883
+ "summary": "The fonts, the palette and every --clio-* custom property you can override.",
884
+ "selectors": [
885
+ ".clio",
886
+ ".text",
887
+ ".heading",
888
+ "[data-era=system6]",
889
+ "[data-era=platinum]"
890
+ ],
891
+ "tokens": [
892
+ "--clio-ink",
893
+ "--clio-paper",
894
+ "--clio-font-chrome",
895
+ "--clio-font-text",
896
+ "--clio-font-size",
897
+ "--clio-selection-bg",
898
+ "--clio-focus-outline"
899
+ ],
900
+ "accessibility": "Text colours keep at least 4.5:1 on their grounds; disabled text keeps 3:1 or more.",
901
+ "html": "<div class=\"clio\" style=\"padding: 12px; background: var(--clio-pane-bg)\">\n <h2 class=\"heading\">Chicago is the system font</h2>\n <p class=\"text\">Geneva is the application font. Every value is a --clio-* custom property you can override on any element.</p>\n</div>",
902
+ "evidence": [
903
+ {
904
+ "era": "system6",
905
+ "claim": "ChicagoFLF, a public-domain revival of Chicago, for chrome",
906
+ "status": "third-party",
907
+ "source": "vendor/system.css-reference/fonts/ChicagoFLF.woff2",
908
+ "upstream": "Robin Casady's ChicagoFLF (public domain), as shipped by system.css"
909
+ },
910
+ {
911
+ "era": "platinum",
912
+ "claim": "Charcoal when installed; otherwise Asap (OFL) at width 113 for text and 123 for titles, weights 400/600/700",
913
+ "status": "measured",
914
+ "source": "apps/desktop/assets/fonts/platinum/README.md; 65-appearance-themes.css:25",
915
+ "upstream": "Asap matched to a measured Charcoal sample's x-height and advance width"
916
+ },
917
+ {
918
+ "era": "platinum",
919
+ "claim": "Palette #fff #ddd #ccc #999 #777 #000, accent #333399, lavender #ccccff",
920
+ "status": "measured",
921
+ "source": "tooling/classic-platinum-fidelity-contract.json (platinum.palette)",
922
+ "upstream": "Mac OS 9 captures"
923
+ },
924
+ {
925
+ "era": "system6",
926
+ "claim": "Disabled text #696969 instead of a 50% dither",
927
+ "status": "adapted",
928
+ "source": "apps/desktop/styles/00-foundation.css (shade-dark)",
929
+ "upstream": "5.6:1 on white; a dither blurs under browser scaling"
930
+ }
931
+ ]
932
+ }
933
+ ]
934
+ }