Win32 Profile

An inquiry into the identity a document wears when it wants to be an application — not what a page is, but how it comes to present itself as something else.

Windows was published as a thousand measurements. Twenty-three pixels for a control, nine point for its label, seventy-five for the narrowest button a dialog may hold, a gradient with a hard stop at forty-five percent.

The numbers were written down and the grammar underneath them was not — it was passed between people who drew the same window twice, and mostly it was lost. The measurements here are evidence. The grammar is the argument.

A CD-ROM labelled WIN32 CSS Development Kit, laid out like a 1993 Microsoft SDK disc: black serif capitals on a silver face, a yellow wedge, and a blue starburst listing the eras.

On identity and profile

The identity is the question — how a page presents itself — and a profile is the answer. A document's identity is its CSS, the layer laid over a meaning already there, and giving that layer a grammar stops it being a heap of declarations: a name marks what a thing is, steel-100, or what it is for, surface, and the two belong on different layers.

A profile is one such language, the W3C's own word for a coherent slice of CSS — an identity a document can wear, and it can wear more than one. From the inside it is a contract: a single locked directory, profile/, that everything else is written against. The identities change; the contract does not.


Five axes, not four

primitives/ and semantic/ mirror each other file for file, and there are five files in each rather than the usual four. surfaces holds the gradients and bevels, and it earns its place the way any layer does — by holding an idea none of the others hold.

What makes a control read as Windows is not the grey. It is the two-stop gradient with a hard stop at 45% and the one-pixel white gloss inside the border. Colour cannot say that, and neither can type, space or border. So it gets a file.

The axis also carries the profile's sharpest test. Classic fills a control flat and builds its edge from four one-pixel lines; Win10 fills it flat and draws no edge at all. Both answer --surface-control and --bevel-control, and one of them answers "nothing". Had those roles been named --control-gradient and --control-gloss, three of the four eras would be impossible. See Earn its place.


Two axes on one mechanism

themes/ holds two questions, not one.

Era is the axis this profile adds: Windows 10, Aero, Luna, Classic. It is the light/dark mechanism applied to a much longer reach — fourteen years and four design languages — and the contract does not widen to accommodate it. The roles hold; only the mappings move. Win10 is the base reality and carries no attribute; the other three name themselves on the root element.

Theme is the familiar one, and only two eras map it, because only two shipped a dark reality. Setting data-era="classic" with the OS in dark mode gets you Classic, unchanged, which is correct — that is what the machine did. Inventing a dark Windows 95 would be the profile making something up.

Then the two the reader asks for: authored contrast, and last the palette the operating system forces, which outranks everything including the era. A preference the reader has expressed beats a decision the author made.


Reading

The Windows Interface Guidelines for Software Design (Microsoft Press, 1995) is where the numbers live: dialog units, the seventy-five by twenty-three button, the metrics a control is required to hold.

Charles Petzold's Programming Windows records what the shell asked the machine for, and Raymond Chen's The Old New Thing records why it kept asking.

The measurements themselves come from SystemParametersInfo, and the colour names from GetSysColorButtonFace, ActiveTitle, InfoBackground — which are Microsoft's proper nouns, not mine.

Those names took a strange route here. CSS2 standardised the Windows palette as system colour keywords; CSS3 deprecated them; CSS Color 4 brought a smaller set back for forced-colors.

So the web adopted this vocabulary, discarded it, and kept the part that mattered for accessibility — which is roughly the argument this profile makes about its own roles, arrived at independently and about thirty years earlier.


Colophon

Set in the shell's own face: Segoe UI where the machine has it, Tahoma or MS Sans Serif where an era asks. No font files are served. Built with vanilla CSS and custom properties — no framework, no build step for the stylesheet, no methodology imported wholesale. The cascade is the mechanism.

This project is not affiliated with, endorsed by, or sponsored by Microsoft.

A fork of CSS Profile, which asks of a document what this one asks of an application. Written by Cristovao Verstraeten at a pleasant view.

Open the source.