{
  "id": "v1-br-5331",
  "long_id": "v1.brutalism.docs.s05.p03.t03.u01",
  "name": "Web brutalism, manual",
  "era": {
    "slug": "brutalism",
    "code": "br",
    "name": "Web brutalism",
    "years": [
      2014,
      2019
    ],
    "description": "The reaction to polish, 2014 to 2019: raw default-looking pages, system and monospace type, hard black rules, harsh or absent colour, and layouts that show their structure instead of hiding it."
  },
  "archetype": "docs",
  "mode": "mix",
  "viewport": {
    "width": 1440,
    "fluid": true,
    "responsive": true
  },
  "summary": "The manual page of web brutalism, as kept between 2014 and 2019 by people who wrote small programs and documented them by hand: a black page of grey monospaced text, a three-part head line like the one a terminal prints over a manual, one blue bar of links, a column of contents that stays put at the left, and numbered parts whose names hang in a gutter beside them. Nothing is rounded, graded or animated and there are no pictures; structure comes from numbers, from 1px grey rules, from one heavy blue rule where a part of the page ends, and from a hard grey underside on boxes and buttons. It was the look of project pages, manuals, changelogs and download directories written by the same people who wrote the code.",
  "url": "https://chrono.skin/s/v1-br-5331",
  "preview_url": "https://chrono.skin/s/v1-br-5331/specimen.html",
  "files": {
    "STYLE.md": "# Web brutalism, manual\n\n## Summary\n\nThe manual page of web brutalism, as kept between 2014 and 2019 by people who wrote small programs and documented them by hand: a black page of grey monospaced text, a three-part head line like the one a terminal prints over a manual, one blue bar of links, a column of contents that stays put at the left, and numbered parts whose names hang in a gutter beside them. Nothing is rounded, graded or animated and there are no pictures; structure comes from numbers, from 1px grey rules, from one heavy blue rule where a part of the page ends, and from a hard grey underside on boxes and buttons. It was the look of project pages, manuals, changelogs and download directories written by the same people who wrote the code.\n\n## Layout\n\n- The bars run across the window; the text does not. `.ds-nav` and `.ds-footer` are as wide as the window. Between them `.ds-page__frame` is flush left, filled with `--color-canvas`, and never wider than `--size-page` (1180px), so on a wide window the right of the page is left as bare `--fill-page`. Nothing is centred.\n- `.ds-nav` is two lines. `.ds-nav__head` is the head line of a manual page on `--fill-bar-alt`: the `.ds-brand` at the left, `.ds-nav__title` (what kind of manual) in the middle, `.ds-nav__version` at the right. `.ds-nav__bar` under it is one line of links on `--fill-bar`, the last one pushed to the right with `.ds-nav__item--right`. A rule of `--border-width-strong` closes the header.\n- `.ds-page__columns` is a grid of two columns: `.ds-sidebar` at `--size-toc` (230px) on the left behind a 1px rule, then `.ds-page__main`. The sidebar is the table of contents: its inner `.ds-sidebar__fixed` is `position: sticky` at the top of the window, so it stays in view while the page scrolls. The sidebar is always on the left and always present.\n- `.ds-page__main` is a stack of numbered parts. Each `.ds-page__section` is a grid of a `--size-gutter` (150px) column that holds its name (`.ds-page__label`, numbered by the stylesheet) and a `.ds-page__content` column that holds the thing itself. A 1px rule opens every part; parts are `--space-5` (25px) of padding apart and are never boxed. Two short blocks inside a part sit side by side in `.ds-page__pair`.\n- The home page opens `.ds-page__main` with `.ds-hero` (no gutter, no number): the sentence that says what the program is, a lead line, the synopsis as a `.ds-code` block and the actions. Its parts follow: the figures, the chapters as a `.ds-grid`, the news as a `.ds-list`, the current release.\n- Inner pages (a chapter, the changelog, the download page, the report form) keep the header, the contents column and the footer. `.ds-page__main` opens with the `.ds-breadcrumb` written as a path, then `.ds-page-header` (22px title, one line, one button at the right, a heavy rule below); the hero is not used. Then numbered parts as on the home page: running text, `.ds-tabs` with the `.ds-table` in `.ds-tabs__body`, the form. `.ds-pagination` closes a chapter outside any part: previous at the left, the chapter numbers in the middle, next at the right.\n- Views. The specimen is one small site with five views, one showing at a time; the header and the footer are written once around them. `manual` is the home page: name, synopsis, status, chapters, news and the current release. `reference` is one chapter: running text, tabs over the table of options, see also, pagination. `changelog` is the grouped table of releases with its pagination, the empty state of the unreleased part, and a note on upgrading. `download` is the table of files, how to check one and how to build. `report` is the two messages the form can answer with, the form with its error, and the confirmation for throwing a draft away. A view is `<section class=\"ds-view\" id=\"...\">` holding one `.ds-page__columns`; links between views are plain `href=\"#id\"`.\n- Spacing scale: `--space-1` 2px is the padding of tabs and page numbers and the gap between a title and its meta line; `--space-2` 5px is the padding of table cells, buttons and inputs (vertical), badges and panel titles; `--space-3` 10px is the padding of panels, grid cells, the bars and list rows and the gap between buttons; `--space-4` 15px is the gap between paragraphs, between the gutter and the content, and the padding above a part; `--space-5` 25px is the padding below a part, the side padding of the main column and the gap between sidebar blocks; `--space-6` 40px is the indent of lists and the space at the foot of the main column.\n- Fixed sizes: `--size-date` 100px is the date column of the list, `--size-label` 130px the label column of a form, `--size-field` 340px a text input, `--size-num` 90px a numeric table column, `--size-dialog` 420px a dialog.\n- Below 800px there is one column: the page first, then the contents column under a heavy rule, no longer sticky. The head line drops its middle part and stacks, the last navigation link joins the others, part names sit above their content, pairs and figures become one column, the grid two, form labels sit above their fields and table cells marked `.ds-table__extra` are left out. A `.ds-code` block scrolls sideways inside itself; the page never does.\n- On a phone (800px and below) the head is one column and `.ds-nav__title` is not shown; at 560px and below `.ds-nav__bar` becomes a grid of three columns, the four links one cell each and the last item (`.ds-nav__item--right`) two cells, so the five links stand in two rows. There is no menu button, and the current page stays an inverted block.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- A dark page: `--color-page`, `--color-canvas` and `--color-surface` are #0c0c0c, `--color-surface-alt` #181818 (alternate table rows, tags), `--color-surface-strong` #202020 (label strips, panel titles, inline code).\n- `--color-bar` #ac130d with white `--color-bar-text` is the red block of navigation links, table heads and dialog titles. `--color-bar-alt` #202020 with #a0a0a0 text is the footer. `--color-inverse` #dedede with #0c0c0c text is the light block of the current navigation row, the current tab and the current page number.\n- Text is grey-white in three steps: `--color-text` and `--color-heading` #dedede, `--color-heading-alt` #c4c4c4 (sidebar and panel titles), `--color-text-muted` and `--color-link-quiet` #a0a0a0 (numbers, dates, meta, captions, tabs, sidebar links).\n- `--color-link` #8ab1ff, visited #5070b1, hover and active #ffffff.\n- Rules are greys: `--color-border` #585858 between cells, `--color-border-strong` #a0a0a0 for the rail, the frame, the hero and page header and around dialogs, `--color-border-muted` #303030 for the edge of a disabled button.\n- Block fills are the dark tints of tags and messages: `--color-fill-1` #3b320d, `--color-fill-2` #3b1719, `--color-fill-3` #15293d, `--color-fill-4` #202020 colour the cells of the index in turn; `--color-notice` is #15293d and `--color-danger-surface` #3b1719. `--color-text` and `--color-text-muted` are readable on all of them.\n- `--color-accent` #ac130d with white text is the count badge. Buttons are #303030 and #181818 with light text; inputs are #181818 with a #707070 edge.\n- Text-coloured status needs lighter colours than the references' dark red and yellow-brown fills: `--color-danger` #f0706a, `--color-success` #8fc07a, `--color-warning` and `--color-accent-alt` #d4b106 are derived (the same hues, lightened to read on #0c0c0c), not measured.\n- One sans: `--font-body`, `--font-heading` and `--font-ui` are \"Helvetica Neue\", Helvetica, Arial, sans-serif; `--font-mono` is Menlo, Consolas, monospace, used for everything that is a number of the catalogue: cell numbers, dates, sidebar counts, the id column of a table, inline code.\n- `--text-base` and `--text-ui` 16px with `--line-body` 1.45; `--text-small` 13px for numbers, meta, captions, label strips, table heads, form labels, badges and the footer; `--text-large` 18px for the hero's lead. Headings are bold: `--text-display` 29px (hero headline), `--text-h1` 26px (site name, page title, figures), `--text-h2` 18px (cell titles, form and empty titles), `--text-h3` 16px.\n- Navigation, tabs and buttons are bold (`--weight-ui` 700).\n- Links in running text are underlined; index and list titles, navigation, tabs, sidebar, breadcrumb, pagination and footer links are bare (`--link-decoration-quiet` none) and underline on hover. Current navigation items, tabs and page numbers are `<span>`, not links. Nothing is uppercased or tracked.\n- Two weights far apart: `--border-width` 1px solid for cells, boxes, row dividers and controls; `--border-width-strong` 4px for the rule beside the rail, under a frame, the hero and the page header, the left edge of a notice and a quotation, and the outline of dialogs.\n- Heavy edges are also drawn with hard inset shadows, never blurred: `--shadow-control` puts a 2px line of `--color-border-strong` along the foot of every button and input (4px on hover, moved to the top when pressed), and `--shadow-panel` a 4px bar down the left of a panel. `--shadow-dialog` is `none`.\n- All radii are 0. `--fill-panel` is `--color-surface-alt`, `--fill-input` is `transparent` so a field is its edge and its heavy foot on whatever it stands on, `--fill-button-hover` lightens the button; every other fill is its plain palette colour. `--focus-ring` is a 2px dotted outline; `--transition` none.\n- Each text token is used only on its own fill: `--color-bar-text` on `--fill-bar`, `--color-bar-alt-text` on `--fill-bar-alt`, `--color-inverse-text` on `--fill-inverse`, `--color-accent-text` on `--fill-accent`, `--color-button-text` on `--fill-button`, `--color-notice-text` on `--color-notice`, `--color-danger` on `--color-danger-surface` or the canvas, `--color-text` and the muted and heading colours on the canvas, the surfaces and the four fills. Keep to this so that other palettes work with the same structure.\n\n## Components\n\n- `.ds-page` on `<body>`: page fill and base type, no margin. `.ds-page__frame` is the sheet; `.ds-page__columns` its two columns with `.ds-sidebar` first and `.ds-page__main` second. `.ds-page__section` is a numbered part (`--last` drops its bottom padding) with `.ds-page__label` and `.ds-page__content`; `.ds-page__pair` sets two blocks side by side; `.ds-page__note` is a small grey line under a block. `.ds-code` is a literal block: a `<pre>` in 12px monospace on `--color-surface-alt` with a 1px rule.\n- `.ds-nav`: the header. `.ds-nav__head` holds the brand, `.ds-nav__title` and `.ds-nav__version`; `.ds-nav__bar` is a list of `.ds-nav__item`, each holding one `.ds-nav__link`. The current page is an inverted block: the stylesheet marks the link whose `href` names the view that is showing (one selector per view, and the home link when the address names none); on a page of its own give the link `is-current`.\n- `.ds-brand`: the site's mark and name, a link to the home page, first thing in the head line. `.ds-brand__mark` is a small square tile dressed like the primary button: `--fill-button`, `--color-button-text`, the control's edge, radius and shadow. `.ds-brand__name` is 17px bold in `--color-bar-alt-text`; `.ds-brand__section` is the small manual section number after it. The name `chronoskin` and the mark are placeholders for the installing project's own name and logo.\n- `.ds-breadcrumb`: a path in 12px monospace: `.ds-breadcrumb__link` items with `.ds-breadcrumb__sep` (`/`) between them, ending in a bold `.ds-breadcrumb__current`.\n- `.ds-hero`: the opening of the home page: `.ds-hero__title` (30px bold sentence), `.ds-hero__lead` at 16px, `.ds-hero__synopsis` (a `.ds-code` block showing how the thing is called) and `.ds-hero__actions` with a primary button, a secondary button and a text link. No box, no fill, left-aligned.\n- `.ds-page-header`: the head of an inner page: `.ds-page-header__main` with `.ds-page-header__title` (22px) and one `.ds-page-header__text` line; `.ds-page-header__action` at the right holds one button. A heavy rule closes it.\n- `.ds-stat`: one figure as a line: `.ds-stat__label`, a 1px leader the stylesheet draws, then a bold 17px `.ds-stat__value` at the right. `.ds-stats` is the row: a list that sets four of them in two columns (one column on a phone). Lines of a listing, never cards.\n- `.ds-prose`: running text, at most 80 characters wide: h1, h2, h3, paragraphs, square-bulleted and numbered lists indented 40px, `code` in 12px on `--color-surface-strong`, `strong` in the heading colour.\n- `.ds-link`: text link with `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` is for meta and tool links. `.ds-links` lays references out in a wrapping monospaced line, as under \"see also\".\n- `.ds-button`: a `<button>`, or an `<a>` when it only leads to another page: a flat rectangle on a hard underside, 13px monospace. `.ds-button--secondary` is drawn on the page in the secondary text colour. `.ds-button--danger` is the destructive action: `--color-danger` text and edge on `--color-danger-surface`. `disabled` or `is-disabled` greys it and drops the underside; `is-active` takes `--color-border-strong`. Group with `.ds-buttons`.\n- `.ds-form`: rows (`.ds-form__row`) of a `.ds-form__label` and a `.ds-form__field`, with an optional `.ds-form__title`. Controls take `.ds-form__input` (`--wide` for textareas, `--auto` for selects); `is-invalid` plus a bold `.ds-form__error` marks a validation error; `.ds-form__hint` is help text; `.ds-form__check` with a native `.ds-form__checkbox`; `.ds-form__actions` lines the buttons up with the fields.\n- `.ds-table`: a data table ruled across and never down: `th` on the bar fill in the heading font, a 1px rule under every row, `.ds-table__row--alt` for alternate rows, `.ds-table__num` for right-aligned numeric columns, `.ds-table__code` for a bold monospaced first column, `.ds-table__date` for a date that must not wrap, `.ds-table__group` for a group row, `.ds-table__extra` for cells a phone leaves out.\n- `.ds-list`: dated entries. Each `.ds-list__item` is a `.ds-list__date` in its own 100px column and a `.ds-list__main` with a bold underlined `.ds-list__title` link, an optional `.ds-list__excerpt` and a small `.ds-list__meta` line. Faint rules between items.\n- `.ds-panel`: a 1px ruled box on a hard underside, with a `.ds-panel__title` strip on `--color-surface-strong` and a `.ds-panel__body` of `.ds-panel__text` paragraphs. Use it for one fact that stands apart, not for layout.\n- `.ds-grid`: four `.ds-grid__cell` boxes `--space-3` apart, each under a heavy top rule (`--2`, `--3`, `--4` select the other fills), with a small `.ds-grid__number`, a `.ds-grid__title` and `.ds-grid__text`.\n- `.ds-tabs`: a row of `.ds-tabs__item`, each holding a `.ds-tabs__tab` in a 1px box that shares its edge with the next. The current one is a `<span class=\"ds-tabs__tab is-current\">` on the inverse fill. Content goes in `.ds-tabs__body`.\n- `.ds-badge`: a count: bold 12px on the accent fill, square. `.ds-badge--tag` is a word in a 1px grey box, `.ds-badge--alt` the same with an edge in `--color-accent-alt` (\"new\"). Status labels are `.ds-badge--success`, `.ds-badge--warning` and `.ds-badge--danger`: a lowercase word in the status colour inside a 1px box of the same colour. No fill, no pill, no icon.\n- `.ds-sidebar`: the contents column. `.ds-sidebar__fixed` holds the blocks and stays in view; each `.ds-sidebar__block` has a `.ds-sidebar__title` and a `.ds-sidebar__list` (numbered; `--plain` drops the numbers) of `.ds-sidebar__link` items, `is-current` for the page being read, with optional `.ds-sidebar__count`; `.ds-sidebar__text` is a small paragraph; `.ds-sidebar__search` is an input with a button.\n- `.ds-notice`: a sentence in a 1px box with a heavy left edge, starting with a bold `.ds-notice__title`. `.ds-notice--error` uses the danger colour for text and box. Stack several in `.ds-notices`.\n- `.ds-pagination`: a line across the column: `.ds-pagination__prev` at the left, the numbers, `.ds-pagination__next` at the right, each holding a `.ds-pagination__link`. The current page is a `<span>` with `is-current` on the inverse fill; `is-disabled` is muted.\n- `.ds-dialog`: a 1px box in `--color-border-strong`, `--size-dialog` wide, on a hard underside, with a `.ds-dialog__title` on the bar fill, `.ds-dialog__body`, `.ds-dialog__text` and left-aligned `.ds-dialog__actions`. It sits in the page flow on `.ds-dialog__backdrop`, a flat block of `--color-overlay` only as wide as the dialog and its padding. No dimming, no centring.\n- `.ds-empty`: a faintly ruled box with a grey `.ds-empty__text` sentence and one secondary button, left-aligned.\n- `.ds-footer`: the foot line of a manual page on `--fill-bar-alt`, as wide as the window: one `.ds-footer__row` of a `.ds-footer__text`, the `.ds-footer__links` of `.ds-footer__link` items in the middle and a `.ds-footer__text--right`.\n- `.ds-accordion`: questions and answers between rules. Each `<details class=\"ds-accordion__item\">` has a `<summary class=\"ds-accordion__title\">` that keeps the browser's own triangle and a `.ds-accordion__body`. Use it for a short list of questions, never for navigation.\n- `.ds-progress`: a `.ds-progress__label` line (what is counted at the left, the figure at the right) over a ruled `.ds-progress__track` whose `.ds-progress__bar` is filled with the accent to a quarter, or `--50`, `--75`, `--100`. Use it for one count against a known whole.\n- `.ds-tooltip`: a boxed `?` beside a form label (give it `tabindex=\"0\"`) holding `.ds-tooltip__text`, an inverted hard-edged note shown under it on hover or focus, or with `is-open`. Use it for one sentence of help on a field.\n\n## Never\n\n- `block-gap <= 40px`: parts sit a rule and a line apart.\n- `content-width <= 85%`: the text column stops well before the right edge of a wide window.\n- `letter-spacing <= 0px`: no text is tracked.\n- `font-size <= 29px`: the hero headline is 29px.\n- `font-size >= 13px`: small text is 13px.\n- `font-families <= 2`: one sans and a monospace.\n- `line-height >= 1.4`: body text is set at 1.45.\n- `line-height <= 1.5`: and no looser.\n- `uppercase-text <= 0%`: nothing is uppercased.\n- `underlined-links <= 40%`: only links inside running text are underlined.\n- `border-radius <= 0px`: every box, button and input is square.\n- `box-shadow-blur <= 0px`: the only shadow is the hard 1px bevel of a control; nothing is soft and nothing floats.\n- `text-shadow = none`: text is flat.\n- `gradient-fills <= 0%`: every fill is one flat colour.\n- `border-width <= 2px`: rules are 1px, emphasised rules 2px.\n- `transition = none`: states change instantly.\n- `animation = none`: nothing moves.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen: a new block of a page is a `.ds-page__section` with its name in the gutter; a boxed fact copies `.ds-panel` (1px `--color-border` rule, `--space-3` padding, `--shadow-panel`); anything typed literally goes in `.ds-code`; a row type copies `.ds-list__item` (a fixed first column, a faint rule below); a set of choices copies `.ds-tabs` (joined 1px boxes, the current one on `--fill-inverse`); a status copies the boxed `.ds-badge--success`. Use only the tokens in `tokens.css` and the `--size-*` and `--space-*` tokens in `components.css`, and pair each text token with its own fill as listed above. When in doubt do less: a line of text before a box, a rule before a fill, a number before an icon, and no radius, soft shadow, gradient, picture or transition at all.\n",
    "components.css": "/* Layout tokens (structure part). Read from the references: a text column\n   that stops well before the right edge of the window, a narrow contents\n   column at the left, 10px and 15px gaps, a 40px list indent. */\n:root {\n  --size-page: 1180px;\n  --size-toc: 230px;\n  --size-gutter: 150px;\n  --size-date: 100px;\n  --size-label: 130px;\n  --size-field: 340px;\n  --size-dialog: 420px;\n  --size-menu: 200px;\n  --size-num: 90px;\n  --space-1: 2px;\n  --space-2: 5px;\n  --space-3: 10px;\n  --space-4: 15px;\n  --space-5: 25px;\n  --space-6: 40px;\n}\n\n/* ---------- shell ---------- */\n.ds-page {\n  margin: 0;\n  padding: 0;\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n/* The sheet: flush left, no wider than the manual's measure. The bars above\n   and below it run across the whole window. */\n.ds-page__frame {\n  box-sizing: border-box;\n  width: 100%;\n  max-width: var(--size-page);\n  margin: 0;\n  background: var(--color-canvas);\n  border-radius: var(--radius-page);\n}\n/* ---------- views: one screen of the example site shows at a time ---------- */\n.ds-view { display: none; }\n.ds-view:target, .ds-page:not(:has(.ds-view:target)) .ds-view--home { display: block; }\n.ds-view:target { scroll-margin-top: 100vh; }\n\n.ds-page__columns {\n  display: grid;\n  grid-template-columns: var(--size-toc) minmax(0, 1fr);\n}\n.ds-page__main {\n  min-width: 0;\n  padding: var(--space-4) var(--space-5) var(--space-6);\n  counter-reset: part;\n}\n/* A numbered part of a page: its name hangs in a gutter at the left, the\n   way a manual page sets NAME and SYNOPSIS, and a rule opens it. */\n.ds-page__section {\n  display: grid;\n  grid-template-columns: var(--size-gutter) minmax(0, 1fr);\n  gap: var(--space-3) var(--space-4);\n  padding: var(--space-4) 0 var(--space-5);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-page__section--last {\n  padding-bottom: 0;\n}\n.ds-page__label {\n  margin: 0;\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-body);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-page__label::before {\n  counter-increment: part;\n  content: counter(part) \". \";\n  color: var(--color-text-muted);\n}\n.ds-page__content {\n  min-width: 0;\n}\n/* Two short blocks side by side inside a part. */\n.ds-page__pair {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: var(--space-4) var(--space-5);\n  align-items: start;\n}\n.ds-page__note {\n  margin: var(--space-3) 0 0;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n\n/* ---------- code: a literal block, as typed ---------- */\n.ds-code {\n  box-sizing: border-box;\n  max-width: 100%;\n  margin: 0;\n  padding: var(--space-3) var(--space-4);\n  overflow-x: auto;\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  background: var(--color-surface-alt);\n  color: var(--color-text);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  line-height: var(--line-body);\n  white-space: pre;\n}\n\n/* ---------- links ---------- */\n.ds-link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration);\n}\n.ds-link:visited,\n.ds-link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-link:hover,\n.ds-link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-link:active,\n.ds-link.is-active {\n  color: var(--color-link-active);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-link:focus-visible,\n.ds-link.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-link--quiet,\n.ds-link--quiet:visited,\n.ds-link--quiet.is-visited {\n  color: var(--color-link-quiet);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-link--quiet:hover,\n.ds-link--quiet.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n/* See also: a line of references cut by commas, as at the foot of a manual page. */\n.ds-links {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-1) var(--space-4);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-mono);\n}\n\n/* ---------- brand: the mark on a small button-dressed tile, then the name ---------- */\n.ds-brand {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-3);\n  color: var(--color-bar-alt-text);\n  text-decoration: none;\n}\n.ds-brand__mark {\n  flex: none;\n  display: block;\n  box-sizing: content-box;\n  width: calc(var(--text-h2) * 1.3);\n  height: calc(var(--text-h2) * 1.3);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  background-color: var(--color-button);\n  background: var(--fill-button);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-text);\n}\n.ds-brand__mark svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-brand__name {\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-brand__section {\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n}\n.ds-brand:hover .ds-brand__name,\n.ds-brand.is-hover .ds-brand__name {\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-brand:focus-visible,\n.ds-brand.is-focus {\n  outline: var(--focus-ring);\n}\n\n/* ---------- nav: the three-part head line of a manual page, then one bar of links ---------- */\n.ds-nav {\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n}\n.ds-nav__head {\n  display: grid;\n  grid-template-columns: 1fr auto 1fr;\n  align-items: center;\n  gap: var(--space-2) var(--space-4);\n  padding: var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-nav__title,\n.ds-nav__version {\n  margin: 0;\n  font-size: var(--text-small);\n}\n.ds-nav__version {\n  text-align: right;\n}\n.ds-nav__bar {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  margin: 0;\n  padding: 0 var(--space-1);\n  list-style: none;\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__item {\n  display: block;\n}\n.ds-nav__item--right {\n  margin-left: auto;\n}\n.ds-nav__link {\n  display: block;\n  padding: var(--space-2) var(--space-3);\n  color: var(--color-bar-text);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-nav__link:focus-visible,\n.ds-nav__link.is-focus {\n  outline: var(--focus-ring);\n}\n/* The page you are on: an inverted block. One selector per view, and the home\n   link when the address names no view. */\n.ds-nav__link.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#manual\"],\n.ds-page:has(#manual:target) .ds-nav__link[href=\"#manual\"],\n.ds-page:has(#reference:target) .ds-nav__link[href=\"#reference\"],\n.ds-page:has(#changelog:target) .ds-nav__link[href=\"#changelog\"],\n.ds-page:has(#download:target) .ds-nav__link[href=\"#download\"],\n.ds-page:has(#report:target) .ds-nav__link[href=\"#report\"] {\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n\n/* ---------- breadcrumb: a path ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n  margin: 0 0 var(--space-4);\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n}\n.ds-breadcrumb__link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-breadcrumb__link:hover,\n.ds-breadcrumb__link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-breadcrumb__sep {\n  color: var(--color-text-muted);\n}\n.ds-breadcrumb__current {\n  font-weight: var(--weight-bold);\n  color: var(--color-text);\n}\n\n/* ---------- hero: the NAME part: what it is, how to call it, where to get it ---------- */\n.ds-hero {\n  padding: var(--space-3) 0 var(--space-5);\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-3);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-hero__lead {\n  max-width: 76ch;\n  margin: 0 0 var(--space-4);\n  font-size: var(--text-large);\n}\n.ds-hero__synopsis {\n  margin: 0 0 var(--space-4);\n}\n.ds-hero__actions {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: baseline;\n  gap: var(--space-3) var(--space-4);\n}\n\n/* ---------- page header ---------- */\n.ds-page-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-end;\n  gap: var(--space-4);\n  margin: 0 0 var(--space-5);\n  padding: 0 0 var(--space-3);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n}\n.ds-page-header__main {\n  min-width: 0;\n}\n.ds-page-header__title {\n  margin: 0 0 var(--space-2);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-page-header__text {\n  margin: 0;\n  color: var(--color-text);\n}\n.ds-page-header__action {\n  flex: none;\n}\n\n/* ---------- stats: label, leader, figure, like the head of a file ---------- */\n.ds-stats {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: var(--space-2) var(--space-6);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-stat {\n  display: flex;\n  align-items: baseline;\n  gap: var(--space-3);\n  min-width: 0;\n}\n.ds-stat__label {\n  order: 1;\n  color: var(--color-text);\n}\n.ds-stat::before {\n  content: \"\";\n  order: 2;\n  flex: 1;\n  min-width: var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-stat__value {\n  order: 3;\n  font-family: var(--font-mono);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  color: var(--color-heading);\n}\n\n/* ---------- prose ---------- */\n.ds-prose {\n  max-width: 80ch;\n}\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: 0 0 var(--space-3);\n  font-family: var(--font-heading);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-prose h1 {\n  font-size: var(--text-h1);\n}\n.ds-prose h2 {\n  margin-top: var(--space-5);\n  font-size: var(--text-h2);\n}\n.ds-prose h3 {\n  margin-top: var(--space-4);\n  font-size: var(--text-h3);\n}\n.ds-prose p {\n  margin: 0 0 var(--space-4);\n}\n.ds-prose ul,\n.ds-prose ol {\n  margin: 0 0 var(--space-4);\n  padding: 0 0 0 var(--space-6);\n}\n.ds-prose ul {\n  list-style: square;\n}\n.ds-prose code {\n  padding: 0 var(--space-1);\n  background: var(--color-surface-strong);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n}\n.ds-prose strong {\n  font-weight: var(--weight-bold);\n  color: var(--color-heading);\n}\n.ds-prose > :first-child {\n  margin-top: 0;\n}\n.ds-prose > :last-child {\n  margin-bottom: 0;\n}\n\n/* ---------- buttons ---------- */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-button {\n  display: inline-block;\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  background: var(--fill-button);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-body);\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  transition: var(--transition);\n  cursor: pointer;\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  box-shadow: var(--shadow-control-hover);\n  color: var(--color-button-hover-text);\n}\n.ds-button:active,\n.ds-button.is-active {\n  border-color: var(--color-border-strong);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-button--secondary,\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n}\n.ds-button--danger,\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  border-color: var(--color-danger);\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  border-color: var(--color-border-muted);\n  background: var(--color-disabled);\n  box-shadow: none;\n  color: var(--color-disabled-text);\n  cursor: default;\n}\n\n/* ---------- form: label in a left column, the control beside it ---------- */\n.ds-form {\n  margin: 0;\n}\n.ds-form__title {\n  margin: 0 0 var(--space-4);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-form__row {\n  display: flex;\n  align-items: flex-start;\n  margin: 0 0 var(--space-3);\n}\n.ds-form__label {\n  flex: none;\n  width: var(--size-label);\n  padding-top: var(--space-2);\n}\n.ds-form__field {\n  flex: 1;\n  min-width: 0;\n}\n.ds-form__input {\n  box-sizing: border-box;\n  width: var(--size-field);\n  max-width: 100%;\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  line-height: var(--line-body);\n  transition: var(--transition);\n}\n.ds-form__input--wide {\n  width: 100%;\n}\n.ds-form__input--auto {\n  width: auto;\n}\n.ds-form__input:focus-visible,\n.ds-form__input.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-form__input:disabled,\n.ds-form__input.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n}\n.ds-form__input.is-invalid {\n  border-color: var(--color-danger);\n}\n.ds-form__error {\n  margin: var(--space-2) 0 0;\n  font-weight: var(--weight-bold);\n  color: var(--color-danger);\n}\n.ds-form__hint {\n  margin: var(--space-2) 0 0;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-form__check {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  padding-top: var(--space-2);\n}\n.ds-form__checkbox {\n  margin: 0;\n}\n.ds-form__actions {\n  margin: var(--space-4) 0 0;\n  padding-left: var(--size-label);\n}\n\n/* ---------- table: ruled across, never down ---------- */\n.ds-table {\n  width: 100%;\n  border-collapse: collapse;\n  border-radius: var(--radius-panel);\n}\n.ds-table th,\n.ds-table td {\n  padding: var(--space-2) var(--space-3);\n  border-style: var(--border-style);\n  border-color: var(--color-border);\n  border-width: 0 0 var(--border-width);\n  text-align: left;\n  vertical-align: top;\n}\n.ds-table th {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-weight: var(--weight-bold);\n  text-shadow: var(--shadow-text);\n}\n.ds-table td {\n  background: var(--color-surface);\n}\n.ds-table tr.is-alt td,\n.ds-table__row--alt td {\n  background: var(--color-surface-alt);\n}\n.ds-table th.ds-table__num,\n.ds-table td.ds-table__num {\n  width: var(--size-num);\n  text-align: right;\n}\n.ds-table td.ds-table__code {\n  font-family: var(--font-mono);\n  font-weight: var(--weight-bold);\n  color: var(--color-heading);\n  white-space: nowrap;\n}\n.ds-table td.ds-table__date {\n  white-space: nowrap;\n}\n.ds-table__group td {\n  background: var(--color-surface-strong);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- list: dated entries, the date in its own column ---------- */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-list__item {\n  display: grid;\n  grid-template-columns: minmax(var(--size-date), max-content) minmax(0, 1fr);\n  gap: 0 var(--space-4);\n  padding: var(--space-3) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-list__item:first-child {\n  padding-top: 0;\n}\n.ds-list__item:last-child {\n  padding-bottom: 0;\n  border-bottom: 0;\n}\n.ds-list__date {\n  white-space: nowrap;\n  font-family: var(--font-mono);\n  color: var(--color-text-muted);\n}\n.ds-list__main {\n  min-width: 0;\n}\n.ds-list__title {\n  color: var(--color-link);\n  font-weight: var(--weight-bold);\n  text-decoration: var(--link-decoration);\n}\n.ds-list__title:visited,\n.ds-list__title.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-list__title:hover,\n.ds-list__title.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-list__excerpt {\n  margin: var(--space-1) 0 0;\n}\n.ds-list__meta {\n  margin: var(--space-1) 0 0;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n\n/* ---------- panel: a ruled box with a title strip ---------- */\n.ds-panel {\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__title {\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-body);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-panel__body {\n  padding: var(--space-3);\n}\n.ds-panel__text {\n  margin: 0 0 var(--space-3);\n}\n.ds-panel__text:last-child {\n  margin-bottom: 0;\n}\n\n/* ---------- grid: the chapters, each under a heavy rule ---------- */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: var(--space-3);\n}\n.ds-grid__cell {\n  min-width: 0;\n  padding: var(--space-3);\n  background: var(--color-fill-1);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-page);\n}\n.ds-grid__cell--2 {\n  background: var(--color-fill-2);\n}\n.ds-grid__cell--3 {\n  background: var(--color-fill-3);\n}\n.ds-grid__cell--4 {\n  background: var(--color-fill-4);\n}\n.ds-grid__number {\n  margin: 0;\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-grid__title {\n  margin: 0 0 var(--space-2);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-grid__text {\n  margin: 0;\n}\n\n/* ---------- tabs: joined boxes, the current one inverted ---------- */\n.ds-tabs {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-tabs__item {\n  margin: 0 calc(var(--border-width) * -1) calc(var(--border-width) * -1) 0;\n}\n.ds-tabs__tab {\n  display: block;\n  padding: var(--space-1) var(--space-3);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-tabs__tab:focus-visible,\n.ds-tabs__tab.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-tabs__tab.is-current {\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-tabs__body {\n  padding: var(--space-3) 0 0;\n}\n\n/* ---------- badge: a count, a tag, a status word in a box of its own colour ---------- */\n.ds-badge {\n  padding: 0 var(--space-2);\n  border-radius: var(--radius-pill);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-badge--alt,\n.ds-badge--tag,\n.ds-badge--success,\n.ds-badge--warning,\n.ds-badge--danger {\n  border: var(--border-width) var(--border-style) currentColor;\n  background: transparent;\n  color: var(--color-text);\n  font-weight: var(--weight-body);\n}\n.ds-badge--alt {\n  border-color: var(--color-accent-alt);\n}\n.ds-badge--tag {\n  border-color: var(--color-border);\n}\n.ds-badge--success {\n  color: var(--color-success);\n}\n.ds-badge--warning {\n  color: var(--color-warning);\n}\n.ds-badge--danger {\n  color: var(--color-danger);\n}\n\n/* ---------- sidebar: the contents column, which stays put while the page scrolls ---------- */\n.ds-sidebar {\n  box-sizing: border-box;\n  min-width: 0;\n  border-right: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-sidebar__fixed {\n  position: sticky;\n  top: 0;\n  padding: var(--space-4) var(--space-4) var(--space-5) var(--space-3);\n}\n.ds-sidebar__block {\n  margin: 0 0 var(--space-5);\n}\n.ds-sidebar__block:last-child {\n  margin-bottom: 0;\n}\n.ds-sidebar__title {\n  margin: 0 0 var(--space-2);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-body);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading-alt);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: 0 0 0 var(--space-5);\n  list-style: decimal;\n  color: var(--color-text-muted);\n}\n.ds-sidebar__list--plain {\n  padding: 0;\n  list-style: none;\n}\n.ds-sidebar__list li {\n  padding: var(--space-1) 0;\n}\n.ds-sidebar__link {\n  color: var(--color-link-quiet);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-sidebar__link:visited,\n.ds-sidebar__link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-sidebar__link:hover,\n.ds-sidebar__link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-sidebar__link.is-current {\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-sidebar__count {\n  color: var(--color-text-muted);\n}\n.ds-sidebar__text {\n  margin: 0;\n  font-size: var(--text-small);\n  color: var(--color-text);\n}\n.ds-sidebar__search {\n  display: flex;\n  gap: var(--space-2);\n}\n.ds-sidebar__search .ds-form__input {\n  flex: 1;\n  width: auto;\n  min-width: 0;\n}\n.ds-sidebar__search .ds-button {\n  flex: none;\n  padding-left: var(--space-3);\n  padding-right: var(--space-3);\n}\n\n/* ---------- notice: a box with a heavy left edge ---------- */\n.ds-notices {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\n}\n.ds-notice {\n  margin: 0;\n  padding: var(--space-3) var(--space-4);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-left-width: var(--border-width-strong);\n  border-radius: var(--radius-panel);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n}\n.ds-notice__title {\n  font-weight: var(--weight-bold);\n}\n.ds-notice--error {\n  border-color: var(--color-danger);\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n}\n\n/* ---------- pagination: previous at the left, the numbers, next at the right ---------- */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  padding: var(--space-3) 0 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-pagination__prev {\n  margin-right: auto;\n}\n.ds-pagination__next {\n  margin-left: auto;\n}\n.ds-pagination__link {\n  display: block;\n  padding: var(--space-1) var(--space-3);\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-pagination__link:focus-visible,\n.ds-pagination__link.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-pagination__link.is-current {\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-text-muted);\n  text-decoration: none;\n}\n\n/* ---------- dialog: a ruled box with a title bar, in the page flow ---------- */\n.ds-dialog__backdrop {\n  box-sizing: border-box;\n  width: fit-content;\n  max-width: 100%;\n  padding: var(--space-4) var(--space-4) var(--space-5);\n  background: var(--color-overlay);\n}\n.ds-dialog {\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  max-width: 100%;\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-body);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-dialog__body {\n  padding: var(--space-3);\n}\n.ds-dialog__text {\n  margin: 0 0 var(--space-4);\n}\n.ds-dialog__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n}\n\n/* ---------- empty: a sentence and a button in a faintly ruled box ---------- */\n.ds-empty {\n  padding: var(--space-4);\n  border: var(--border-width) var(--border-style) var(--color-border-muted);\n  border-radius: var(--radius-panel);\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-3);\n  color: var(--color-text-muted);\n}\n\n/* ---------- footer: the three-part foot line of a manual page ---------- */\n.ds-footer {\n  padding: var(--space-3);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-size: var(--text-small);\n}\n.ds-footer__row {\n  display: grid;\n  grid-template-columns: 1fr auto 1fr;\n  align-items: baseline;\n  gap: var(--space-2) var(--space-4);\n  margin: 0;\n}\n.ds-footer__text {\n  margin: 0;\n}\n.ds-footer__text--right {\n  text-align: right;\n}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: var(--space-2) var(--space-4);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__link {\n  color: var(--color-bar-alt-text);\n  text-decoration: var(--link-decoration);\n}\n.ds-footer__link:hover,\n.ds-footer__link.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n\n/* ---------- narrow windows: one column, the contents after the page ---------- */\n/* ---------- components of the period ---------- */\n.ds-accordion {\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-accordion__item {\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-accordion__title {\n  padding: var(--space-2) 0;\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n  cursor: pointer;\n}\n.ds-accordion__title:focus-visible,\n.ds-accordion__title.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-accordion__body {\n  max-width: 86ch;\n  margin: 0;\n  padding: 0 0 var(--space-3) var(--space-4);\n}\n.ds-progress {\n  margin: 0 0 var(--space-4);\n}\n.ds-stats + .ds-progress {\n  margin-top: var(--space-4);\n}\n.ds-progress__label {\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-3);\n  margin: 0 0 var(--space-2);\n  font-weight: var(--weight-bold);\n}\n.ds-progress__track {\n  height: var(--space-4);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  background: var(--color-input);\n}\n.ds-progress__bar {\n  width: 25%;\n  height: 100%;\n  background: var(--fill-accent);\n}\n.ds-progress__bar--75 {\n  width: 75%;\n}\n.ds-tooltip {\n  position: relative;\n  display: inline-block;\n  padding: 0 var(--space-2);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  color: var(--color-text);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n  text-transform: none;\n  cursor: help;\n}\n.ds-tooltip:focus-visible {\n  outline: var(--focus-ring);\n}\n.ds-tooltip__text {\n  display: none;\n  position: absolute;\n  z-index: 2;\n  top: 100%;\n  left: 0;\n  box-sizing: border-box;\n  width: var(--size-menu);\n  margin: var(--space-2) 0 0;\n  padding: var(--space-2) var(--space-3);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  font-family: var(--font-body);\n  text-align: left;\n}\n.ds-tooltip:hover .ds-tooltip__text,\n.ds-tooltip:focus .ds-tooltip__text,\n.ds-tooltip.is-open .ds-tooltip__text {\n  display: block;\n}\n\n@media (max-width: 800px) {\n  .ds-page__columns {\n    display: flex;\n    flex-direction: column;\n  }\n  .ds-page__main {\n    order: -1;\n    padding: var(--space-3) var(--space-3) var(--space-5);\n  }\n  .ds-sidebar {\n    border-right: 0;\n    border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  }\n  .ds-sidebar__fixed {\n    position: static;\n    padding: var(--space-4) var(--space-3) var(--space-5);\n  }\n  .ds-nav__head,\n  .ds-footer__row {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .ds-nav__title {\n    display: none;\n  }\n  .ds-nav__version,\n  .ds-footer__text--right {\n    text-align: left;\n  }\n  .ds-footer__links {\n    justify-content: flex-start;\n  }\n  .ds-nav__item--right {\n    margin-left: 0;\n  }\n  .ds-page__section,\n  .ds-page__pair,\n  .ds-stats {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .ds-hero__title {\n    font-size: var(--text-h1);\n  }\n  .ds-page-header {\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .ds-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n  .ds-list__item {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .ds-form__row {\n    flex-direction: column;\n    align-items: stretch;\n  }\n  .ds-form__label {\n    width: auto;\n    padding: 0 0 var(--space-1);\n  }\n  .ds-form__actions {\n    padding-left: 0;\n  }\n  .ds-table__extra {\n    display: none;\n  }\n  .ds-table th,\n  .ds-table td {\n    padding: var(--space-2) var(--space-2);\n  }\n  .ds-table th.ds-table__num,\n  .ds-table td.ds-table__num {\n    width: auto;\n  }\n  .ds-table td.ds-table__code {\n    white-space: normal;\n  }\n  .ds-dialog__backdrop {\n    padding: var(--space-3) var(--space-3) var(--space-4);\n  }\n}\n\n/* ---------- phones: five links in a grid of three, the long one over two cells; code wraps ---------- */\n@media (max-width: 560px) {\n  .ds-nav__bar {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    padding: 0;\n  }\n  .ds-nav__item--right {\n    grid-column: span 2;\n  }\n  .ds-nav__link {\n    overflow-wrap: anywhere;\n  }\n  .ds-code {\n    white-space: pre-wrap;\n    overflow-wrap: anywhere;\n  }\n}\n",
    "specimen.html": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>chronoskin(1): the manual. Web brutalism, 2014 to 2019: specimen</title>\n<link rel=\"stylesheet\" href=\"tokens.css\">\n<link rel=\"stylesheet\" href=\"components.css\">\n</head>\n<body class=\"ds-page\" data-component=\"shell\">\n\n<header class=\"ds-nav\" data-component=\"nav\">\n  <div class=\"ds-nav__head\">\n    <a class=\"ds-brand\" data-component=\"brand\" href=\"#manual\"><span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.8\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" aria-hidden=\"true\"><rect x=\"3.5\" y=\"3.5\" width=\"17\" height=\"17\"/><line x1=\"3.5\" y1=\"20.5\" x2=\"20.5\" y2=\"3.5\"/></svg></span><span class=\"ds-brand__name\">chronoskin<span class=\"ds-brand__section\">(1)</span></span></a>\n    <p class=\"ds-nav__title\">General Commands Manual</p>\n    <p class=\"ds-nav__version\">version 2.4.1, 14 March 2017</p>\n  </div>\n  <ul class=\"ds-nav__bar\">\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#manual\">manual</a></li>\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#reference\">options</a></li>\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#changelog\">changelog</a></li>\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#download\">download</a></li>\n    <li class=\"ds-nav__item ds-nav__item--right\"><a class=\"ds-nav__link\" href=\"#report\">report a mistake</a></li>\n  </ul>\n</header>\n\n<div class=\"ds-page__frame\">\n\n  <!-- View 1, the home page: the first page of the manual. Name, synopsis, status, chapters, news. -->\n  <section class=\"ds-view ds-view--home\" id=\"manual\">\n    <div class=\"ds-page__columns\">\n      <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n        <div class=\"ds-sidebar__fixed\">\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Search the manual</h2>\n            <form class=\"ds-sidebar__search\" action=\"#\">\n              <input class=\"ds-form__input\" type=\"text\" value=\"weekday\" aria-label=\"Search the manual\">\n              <button class=\"ds-button ds-button--secondary\" type=\"button\">Find</button>\n            </form>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Contents</h2>\n            <ol class=\"ds-sidebar__list\">\n              <li><a class=\"ds-sidebar__link is-current\" href=\"#manual\">Name and synopsis</a></li>\n              <li><a class=\"ds-sidebar__link is-visited\" href=\"#manual\">The timetable file</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">Options</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">Output formats</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">Exit status</a></li>\n              <li><a class=\"ds-sidebar__link is-hover\" href=\"#changelog\">Changelog</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#download\">Download and build</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#report\">Reporting mistakes</a></li>\n            </ol>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Elsewhere</h2>\n            <ul class=\"ds-sidebar__list ds-sidebar__list--plain\">\n              <li><a class=\"ds-sidebar__link\" href=\"#download\">source/</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#report\">mailing list/</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#changelog\">releases.txt</a> <span class=\"ds-sidebar__count\">(31)</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#manual\">this page as text</a></li>\n            </ul>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <p class=\"ds-sidebar__text\">One page of HTML per chapter, written by hand. No scripts, no fonts to fetch, nothing that moves.</p>\n          </div>\n        </div>\n      </aside>\n\n      <main class=\"ds-page__main\">\n        <section class=\"ds-hero\" data-component=\"hero\">\n          <h1 class=\"ds-hero__title\">chronoskin prints a timetable from a text file.</h1>\n          <p class=\"ds-hero__lead\">You keep one plain file of times and what happens at them. It gives you back a week, a month or a single day, as text you can read, print or pipe.</p>\n          <pre class=\"ds-code ds-hero__synopsis\">chronoskin [-w | -m | -d date] [-f format] [-o file] timetable.txt\nchronoskin -c timetable.txt</pre>\n          <div class=\"ds-hero__actions\">\n            <a class=\"ds-button\" href=\"#download\">Download 2.4.1</a>\n            <a class=\"ds-button ds-button--secondary\" href=\"#reference\">Read the options</a>\n            <a class=\"ds-link\" href=\"#changelog\">what changed in 2.4.1</a>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section\" data-component=\"stats\">\n          <h2 class=\"ds-page__label\">Status</h2>\n          <div class=\"ds-page__content\">\n            <ul class=\"ds-stats\">\n              <li class=\"ds-stat\"><span class=\"ds-stat__label\">releases since 2014</span><span class=\"ds-stat__value\">31</span></li>\n              <li class=\"ds-stat\"><span class=\"ds-stat__label\">lines of C</span><span class=\"ds-stat__value\">4,180</span></li>\n              <li class=\"ds-stat\"><span class=\"ds-stat__label\">size of the binary, KB</span><span class=\"ds-stat__value\">212</span></li>\n              <li class=\"ds-stat\"><span class=\"ds-stat__label\">libraries it needs</span><span class=\"ds-stat__value\">0</span></li>\n            </ul>\n            <div class=\"ds-progress\" data-component=\"progress\">\n              <p class=\"ds-progress__label\"><span>Chapters rewritten for 2.4</span> <span>6 of 8</span></p>\n              <div class=\"ds-progress__track\"><div class=\"ds-progress__bar ds-progress__bar--75\"></div></div>\n            </div>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section\" data-component=\"grid\">\n          <h2 class=\"ds-page__label\">Chapters</h2>\n          <div class=\"ds-page__content\">\n            <div class=\"ds-grid\">\n              <div class=\"ds-grid__cell\">\n                <p class=\"ds-grid__number\">chapter 2</p>\n                <h3 class=\"ds-grid__title\">The file</h3>\n                <p class=\"ds-grid__text\">One line, one event. How times, days and repeats are written. <a class=\"ds-link\" href=\"#manual\">Read</a></p>\n              </div>\n              <div class=\"ds-grid__cell ds-grid__cell--2\">\n                <p class=\"ds-grid__number\">chapter 3</p>\n                <h3 class=\"ds-grid__title\">Options</h3>\n                <p class=\"ds-grid__text\">All fourteen flags in one table, with defaults. <a class=\"ds-link\" href=\"#reference\">Read</a></p>\n              </div>\n              <div class=\"ds-grid__cell ds-grid__cell--3\">\n                <p class=\"ds-grid__number\">chapter 6</p>\n                <h3 class=\"ds-grid__title\">Changelog</h3>\n                <p class=\"ds-grid__text\">Every release since 0.1, newest first. <a class=\"ds-link\" href=\"#changelog\">Read</a></p>\n              </div>\n              <div class=\"ds-grid__cell ds-grid__cell--4\">\n                <p class=\"ds-grid__number\">chapter 7</p>\n                <h3 class=\"ds-grid__title\">Download</h3>\n                <p class=\"ds-grid__text\">Source, four binaries and their checksums. <a class=\"ds-link\" href=\"#download\">Get it</a></p>\n              </div>\n            </div>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section\" data-component=\"list\">\n          <h2 class=\"ds-page__label\">News</h2>\n          <div class=\"ds-page__content\">\n            <ul class=\"ds-list\">\n              <li class=\"ds-list__item\">\n                <span class=\"ds-list__date\">2017-03-14</span>\n                <div class=\"ds-list__main\">\n                  <a class=\"ds-list__title\" href=\"#changelog\">2.4.1 is out</a> <span class=\"ds-badge ds-badge--alt\">new</span>\n                  <p class=\"ds-list__excerpt\">Fixes the week that lost an hour when the clocks went forward. Everyone on 2.4.0 should upgrade.</p>\n                  <p class=\"ds-list__meta\">release | 3 fixes | 212 KB</p>\n                </div>\n              </li>\n              <li class=\"ds-list__item\">\n                <span class=\"ds-list__date\">2017-02-02</span>\n                <div class=\"ds-list__main\">\n                  <a class=\"ds-list__title\" href=\"#reference\">The -f option now takes a file</a>\n                  <p class=\"ds-list__excerpt\">A format can live beside the timetable instead of on the command line. The old form still works.</p>\n                  <p class=\"ds-list__meta\">manual | chapter 4 rewritten</p>\n                </div>\n              </li>\n              <li class=\"ds-list__item\">\n                <span class=\"ds-list__date\">2016-11-20</span>\n                <div class=\"ds-list__main\">\n                  <a class=\"ds-list__title is-visited\" href=\"#download\">Binaries are now built for ARM</a>\n                  <p class=\"ds-list__excerpt\">It runs on the small board in the hallway that drives the printer.</p>\n                  <p class=\"ds-list__meta\">download | 1 new file</p>\n                </div>\n              </li>\n            </ul>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section ds-page__section--last\">\n          <h2 class=\"ds-page__label\">This release</h2>\n          <div class=\"ds-page__content ds-page__pair\">\n            <div class=\"ds-panel\" data-component=\"panel\">\n              <h3 class=\"ds-panel__title\">chronoskin-2.4.1.tar.gz</h3>\n              <div class=\"ds-panel__body\">\n                <p class=\"ds-panel__text\">Source, 88 KB. Builds with any C compiler and <code>make</code>; no configure step.</p>\n                <p class=\"ds-panel__text\"><a class=\"ds-link\" href=\"#download\">All files and checksums</a></p>\n              </div>\n            </div>\n            <p class=\"ds-notice\"><span class=\"ds-notice__title\">Note.</span> 2.4.0 was withdrawn two days after it came out. If <code>chronoskin -V</code> prints 2.4.0, replace it.</p>\n          </div>\n        </section>\n      </main>\n    </div>\n  </section>\n\n  <!-- View 2: one chapter of the manual. Path, page header, running text, tabs over the table of options. -->\n  <section class=\"ds-view\" id=\"reference\">\n    <div class=\"ds-page__columns\">\n      <aside class=\"ds-sidebar\">\n        <div class=\"ds-sidebar__fixed\">\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">On this page</h2>\n            <ol class=\"ds-sidebar__list\">\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">How options are read</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">All options</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">See also</a></li>\n            </ol>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Contents</h2>\n            <ol class=\"ds-sidebar__list\">\n              <li><a class=\"ds-sidebar__link is-visited\" href=\"#manual\">Name and synopsis</a></li>\n              <li><a class=\"ds-sidebar__link is-visited\" href=\"#manual\">The timetable file</a></li>\n              <li><a class=\"ds-sidebar__link is-current\" href=\"#reference\">Options</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">Output formats</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">Exit status</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#changelog\">Changelog</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#download\">Download and build</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#report\">Reporting mistakes</a></li>\n            </ol>\n          </div>\n          <div class=\"ds-sidebar__block\" data-component=\"badge\">\n            <h2 class=\"ds-sidebar__title\">Marks</h2>\n            <ul class=\"ds-sidebar__list ds-sidebar__list--plain\">\n              <li><span class=\"ds-badge\">14</span> flags in all</li>\n              <li><span class=\"ds-badge ds-badge--success\">stable</span> will not change</li>\n              <li><span class=\"ds-badge ds-badge--warning\">new</span> may still change</li>\n              <li><span class=\"ds-badge ds-badge--danger\">going</span> do not rely on it</li>\n            </ul>\n          </div>\n        </div>\n      </aside>\n\n      <div class=\"ds-page__main\">\n        <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n          <li><a class=\"ds-breadcrumb__link\" href=\"#manual\">chronoskin(1)</a></li>\n          <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n          <li><a class=\"ds-breadcrumb__link\" href=\"#manual\">manual</a></li>\n          <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n          <li class=\"ds-breadcrumb__current\">3 options</li>\n        </ol>\n\n        <div class=\"ds-page-header\" data-component=\"page-header\">\n          <div class=\"ds-page-header__main\">\n            <h1 class=\"ds-page-header__title\">Chapter 3. Options</h1>\n            <p class=\"ds-page-header__text\">Fourteen flags, each one letter. All of them can be left out.</p>\n          </div>\n          <div class=\"ds-page-header__action\"><a class=\"ds-button ds-button--secondary\" href=\"#reference\">This chapter as text</a></div>\n        </div>\n\n        <section class=\"ds-page__section\" data-component=\"typography\">\n          <h2 class=\"ds-page__label\">Reading</h2>\n          <div class=\"ds-page__content ds-prose\">\n            <h1>How options are read</h1>\n            <p>Options come before the name of the timetable file and are read from left to right. When two of them disagree, the later one wins, so a shell alias can set your habits and the command line can still overrule them.</p>\n            <h2>Choosing the span</h2>\n            <p>With no option at all the program prints <strong>the current week</strong>, Monday first. Three flags choose something else, and only one of them may be given:</p>\n            <ul>\n              <li><code>-w</code> prints a week, which is the default.</li>\n              <li><code>-m</code> prints the whole month, one line a day.</li>\n              <li><code>-d 2017-03-14</code> prints that one day in full.</li>\n            </ul>\n            <h3>Dates</h3>\n            <p>A date is always year, month, day with hyphens. Nothing else is accepted, and a date that does not exist ends the run with status 2.</p>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section\" data-component=\"tabs\">\n          <h2 class=\"ds-page__label\">All options</h2>\n          <div class=\"ds-page__content\">\n            <ul class=\"ds-tabs\">\n              <li class=\"ds-tabs__item\"><span class=\"ds-tabs__tab is-current\" aria-current=\"true\">all 14</span></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#reference\">span</a></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#reference\">output</a></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#reference\">checking</a></li>\n            </ul>\n            <div class=\"ds-tabs__body\">\n              <table class=\"ds-table\" data-component=\"table\">\n                <thead>\n                  <tr><th>Flag</th><th>What it does</th><th class=\"ds-table__extra\">Default</th><th>State</th><th class=\"ds-table__num\">Since</th></tr>\n                </thead>\n                <tbody>\n                  <tr><td class=\"ds-table__code\">-w</td><td>Print one week, Monday first.</td><td class=\"ds-table__extra\">on</td><td><span class=\"ds-badge ds-badge--success\">stable</span></td><td class=\"ds-table__num\">0.1</td></tr>\n                  <tr class=\"ds-table__row--alt\"><td class=\"ds-table__code\">-m</td><td>Print one month, a line for each day.</td><td class=\"ds-table__extra\">off</td><td><span class=\"ds-badge ds-badge--success\">stable</span></td><td class=\"ds-table__num\">0.4</td></tr>\n                  <tr><td class=\"ds-table__code\">-d date</td><td>Print a single day in full.</td><td class=\"ds-table__extra\">today</td><td><span class=\"ds-badge ds-badge--success\">stable</span></td><td class=\"ds-table__num\">0.4</td></tr>\n                  <tr class=\"ds-table__row--alt\"><td class=\"ds-table__code\">-f format</td><td>Lay each line out as the format says. May name a file.</td><td class=\"ds-table__extra\">%t  %e</td><td><span class=\"ds-badge ds-badge--warning\">new</span></td><td class=\"ds-table__num\">2.3</td></tr>\n                  <tr><td class=\"ds-table__code\">-o file</td><td>Write to the file instead of standard output.</td><td class=\"ds-table__extra\">none</td><td><span class=\"ds-badge ds-badge--success\">stable</span></td><td class=\"ds-table__num\">1.0</td></tr>\n                  <tr class=\"ds-table__row--alt\"><td class=\"ds-table__code\">-c</td><td>Check the file and print nothing but its mistakes.</td><td class=\"ds-table__extra\">off</td><td><span class=\"ds-badge ds-badge--success\">stable</span></td><td class=\"ds-table__num\">1.2</td></tr>\n                  <tr><td class=\"ds-table__code\">-x width</td><td>Wrap lines at the width. Use a pager instead.</td><td class=\"ds-table__extra\">80</td><td><span class=\"ds-badge ds-badge--danger\">going</span></td><td class=\"ds-table__num\">0.2</td></tr>\n                </tbody>\n              </table>\n              <p class=\"ds-page__note\">Showing 7 of 14. <span class=\"ds-badge ds-badge--tag\">-x</span> goes in 3.0.</p>\n            </div>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section\" data-component=\"links\">\n          <h2 class=\"ds-page__label\">See also</h2>\n          <div class=\"ds-page__content\">\n            <ul class=\"ds-links\">\n              <li><a class=\"ds-link\" href=\"#reference\">formats(5)</a></li>\n              <li><a class=\"ds-link is-visited\" href=\"#manual\">timetable(5)</a></li>\n              <li><a class=\"ds-link is-hover\" href=\"#reference\">exit-status(7)</a></li>\n              <li><a class=\"ds-link is-active\" href=\"#changelog\">changelog(7)</a></li>\n              <li><a class=\"ds-link ds-link--quiet\" href=\"#report\">report a mistake in this chapter</a></li>\n            </ul>\n          </div>\n        </section>\n\n        <ul class=\"ds-pagination\" data-component=\"pagination\">\n          <li class=\"ds-pagination__prev\"><a class=\"ds-pagination__link\" href=\"#manual\">&lt; 2 the file</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#manual\">1</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#manual\">2</a></li>\n          <li><span class=\"ds-pagination__link is-current\" aria-current=\"page\">3</span></li>\n          <li><a class=\"ds-pagination__link\" href=\"#reference\">4</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#reference\">5</a></li>\n          <li class=\"ds-pagination__next\"><a class=\"ds-pagination__link\" href=\"#reference\">4 formats &gt;</a></li>\n        </ul>\n      </div>\n    </div>\n  </section>\n\n  <!-- View 3: the changelog. Releases as a grouped table, what is coming, and the empty state of the next release. -->\n  <section class=\"ds-view\" id=\"changelog\">\n    <div class=\"ds-page__columns\">\n      <aside class=\"ds-sidebar\">\n        <div class=\"ds-sidebar__fixed\">\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">By series</h2>\n            <ul class=\"ds-sidebar__list ds-sidebar__list--plain\">\n              <li><a class=\"ds-sidebar__link is-current\" href=\"#changelog\">2.x</a> <span class=\"ds-sidebar__count\">(9)</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#changelog\">1.x</a> <span class=\"ds-sidebar__count\">(14)</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#changelog\">0.x</a> <span class=\"ds-sidebar__count\">(8)</span></li>\n            </ul>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Contents</h2>\n            <ol class=\"ds-sidebar__list\">\n              <li><a class=\"ds-sidebar__link\" href=\"#manual\">Name and synopsis</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#manual\">The timetable file</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">Options</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">Output formats</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#reference\">Exit status</a></li>\n              <li><a class=\"ds-sidebar__link is-current\" href=\"#changelog\">Changelog</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#download\">Download and build</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#report\">Reporting mistakes</a></li>\n            </ol>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <p class=\"ds-sidebar__text\">The same list is kept in the source as <a class=\"ds-sidebar__link\" href=\"#download\">CHANGES</a>, one line a change.</p>\n          </div>\n        </div>\n      </aside>\n\n      <div class=\"ds-page__main\">\n        <ol class=\"ds-breadcrumb\">\n          <li><a class=\"ds-breadcrumb__link\" href=\"#manual\">chronoskin(1)</a></li>\n          <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n          <li><a class=\"ds-breadcrumb__link\" href=\"#manual\">manual</a></li>\n          <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n          <li class=\"ds-breadcrumb__current\">6 changelog</li>\n        </ol>\n\n        <div class=\"ds-page-header\">\n          <div class=\"ds-page-header__main\">\n            <h1 class=\"ds-page-header__title\">Chapter 6. Changelog</h1>\n            <p class=\"ds-page-header__text\">Every release of the 2.x series, newest first.</p>\n          </div>\n          <div class=\"ds-page-header__action\"><a class=\"ds-button\" href=\"#download\">Download 2.4.1</a></div>\n        </div>\n\n        <section class=\"ds-page__section\">\n          <h2 class=\"ds-page__label\">Releases</h2>\n          <div class=\"ds-page__content\">\n            <table class=\"ds-table\">\n              <thead>\n                <tr><th>Version</th><th>Date</th><th>What changed</th><th class=\"ds-table__extra\">State</th><th class=\"ds-table__num\">Lines</th></tr>\n              </thead>\n              <tbody>\n                <tr class=\"ds-table__group\"><td colspan=\"5\">2.4, daylight saving</td></tr>\n                <tr><td class=\"ds-table__code\">2.4.1</td><td class=\"ds-table__date\">2017-03-14</td><td>A week that crosses a clock change keeps all its hours. <a class=\"ds-link\" href=\"#download\">Files</a></td><td class=\"ds-table__extra\"><span class=\"ds-badge ds-badge--success\">current</span></td><td class=\"ds-table__num\">+38</td></tr>\n                <tr class=\"ds-table__row--alt\"><td class=\"ds-table__code\">2.4.0</td><td class=\"ds-table__date\">2017-03-12</td><td>Time zones are read from the file. Lost an hour in spring.</td><td class=\"ds-table__extra\"><span class=\"ds-badge ds-badge--danger\">withdrawn</span></td><td class=\"ds-table__num\">+412</td></tr>\n                <tr class=\"ds-table__group\"><td colspan=\"5\">2.3, formats</td></tr>\n                <tr><td class=\"ds-table__code\">2.3.2</td><td class=\"ds-table__date\">2017-02-02</td><td>The <span class=\"ds-badge ds-badge--tag\">-f</span> option takes a file as well as a string.</td><td class=\"ds-table__extra\"><span class=\"ds-badge ds-badge--success\">kept</span></td><td class=\"ds-table__num\">+96</td></tr>\n                <tr class=\"ds-table__row--alt\"><td class=\"ds-table__code\">2.3.1</td><td class=\"ds-table__date\">2016-12-09</td><td>An empty line in a format no longer ends it.</td><td class=\"ds-table__extra\"><span class=\"ds-badge ds-badge--success\">kept</span></td><td class=\"ds-table__num\">+7</td></tr>\n                <tr><td class=\"ds-table__code\">2.3.0</td><td class=\"ds-table__date\">2016-11-20</td><td>Formats. ARM binaries. The <span class=\"ds-badge ds-badge--tag\">-x</span> option is on its way out.</td><td class=\"ds-table__extra\"><span class=\"ds-badge ds-badge--warning\">old</span></td><td class=\"ds-table__num\">+530</td></tr>\n              </tbody>\n            </table>\n            <ul class=\"ds-pagination\">\n              <li class=\"ds-pagination__prev\"><span class=\"ds-pagination__link is-disabled\">&lt; newer</span></li>\n              <li><span class=\"ds-pagination__link is-current\" aria-current=\"page\">1</span></li>\n              <li><a class=\"ds-pagination__link\" href=\"#changelog\">2</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#changelog\">3</a></li>\n              <li class=\"ds-pagination__next\"><a class=\"ds-pagination__link\" href=\"#changelog\">older &gt;</a></li>\n            </ul>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section\">\n          <h2 class=\"ds-page__label\">Unreleased</h2>\n          <div class=\"ds-page__content\">\n            <div class=\"ds-empty\" data-component=\"empty\">\n              <p class=\"ds-empty__text\">Nothing has been changed since 2.4.1. When something is, it is listed here before it is released.</p>\n              <a class=\"ds-button ds-button--secondary\" href=\"#report\">Report a mistake</a>\n            </div>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section ds-page__section--last\">\n          <h2 class=\"ds-page__label\">Upgrading</h2>\n          <div class=\"ds-page__content ds-page__pair\">\n            <div class=\"ds-prose\">\n              <p>Releases within a series read the same files and take the same options. Between series, read the first entry of the new one before you replace the binary.</p>\n              <p>To see what you have, run <code>chronoskin -V</code>.</p>\n            </div>\n            <div class=\"ds-panel\">\n              <h3 class=\"ds-panel__title\">From 1.x to 2.x</h3>\n              <div class=\"ds-panel__body\">\n                <p class=\"ds-panel__text\">Weeks start on Monday unless the file says otherwise. Add <code>week sunday</code> as its first line to keep the old behaviour.</p>\n              </div>\n            </div>\n          </div>\n        </section>\n      </div>\n    </div>\n  </section>\n\n  <!-- View 4: download. The files of the current release, how to check them, how to build. -->\n  <section class=\"ds-view\" id=\"download\">\n    <div class=\"ds-page__columns\">\n      <aside class=\"ds-sidebar\">\n        <div class=\"ds-sidebar__fixed\">\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">On this page</h2>\n            <ol class=\"ds-sidebar__list\">\n              <li><a class=\"ds-sidebar__link\" href=\"#download\">Files</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#download\">Checking a file</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#download\">Building</a></li>\n            </ol>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Older releases</h2>\n            <ul class=\"ds-sidebar__list ds-sidebar__list--plain\">\n              <li><a class=\"ds-sidebar__link\" href=\"#changelog\">2.3.2</a> <span class=\"ds-sidebar__count\">2017-02-02</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#changelog\">2.3.1</a> <span class=\"ds-sidebar__count\">2016-12-09</span></li>\n              <li><a class=\"ds-sidebar__link is-visited\" href=\"#changelog\">1.9.4</a> <span class=\"ds-sidebar__count\">2016-05-30</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#changelog\">all 31</a></li>\n            </ul>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <p class=\"ds-sidebar__text\">Everything is under the ISC licence. Copy it, change it, ship it.</p>\n          </div>\n        </div>\n      </aside>\n\n      <div class=\"ds-page__main\">\n        <ol class=\"ds-breadcrumb\">\n          <li><a class=\"ds-breadcrumb__link\" href=\"#manual\">chronoskin(1)</a></li>\n          <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n          <li><a class=\"ds-breadcrumb__link\" href=\"#manual\">manual</a></li>\n          <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n          <li class=\"ds-breadcrumb__current\">7 download</li>\n        </ol>\n\n        <div class=\"ds-page-header\">\n          <div class=\"ds-page-header__main\">\n            <h1 class=\"ds-page-header__title\">Chapter 7. Download and build</h1>\n            <p class=\"ds-page-header__text\">Release 2.4.1 of 14 March 2017: the source and four binaries.</p>\n          </div>\n          <div class=\"ds-page-header__action\"><a class=\"ds-button\" href=\"#download\">chronoskin-2.4.1.tar.gz</a></div>\n        </div>\n\n        <section class=\"ds-page__section\">\n          <h2 class=\"ds-page__label\">Files</h2>\n          <div class=\"ds-page__content\">\n            <table class=\"ds-table\">\n              <thead>\n                <tr><th>File</th><th>For</th><th class=\"ds-table__extra\">SHA-256, first 16</th><th class=\"ds-table__num\">KB</th></tr>\n              </thead>\n              <tbody>\n                <tr><td><a class=\"ds-link\" href=\"#download\">chronoskin-2.4.1.tar.gz</a></td><td>source</td><td class=\"ds-table__extra ds-table__code\">9c41e07ab35d2f18</td><td class=\"ds-table__num\">88</td></tr>\n                <tr class=\"ds-table__row--alt\"><td><a class=\"ds-link\" href=\"#download\">chronoskin-2.4.1-linux-amd64</a></td><td>Linux, 64 bit</td><td class=\"ds-table__extra ds-table__code\">03b7d1c95e6a40f2</td><td class=\"ds-table__num\">212</td></tr>\n                <tr><td><a class=\"ds-link\" href=\"#download\">chronoskin-2.4.1-linux-arm</a></td><td>Linux, ARM</td><td class=\"ds-table__extra ds-table__code\">e58a20c6714bd93f</td><td class=\"ds-table__num\">196</td></tr>\n                <tr class=\"ds-table__row--alt\"><td><a class=\"ds-link is-visited\" href=\"#download\">chronoskin-2.4.1-openbsd-amd64</a></td><td>OpenBSD</td><td class=\"ds-table__extra ds-table__code\">71fd08e2a9c3b654</td><td class=\"ds-table__num\">204</td></tr>\n                <tr><td><a class=\"ds-link\" href=\"#download\">chronoskin-2.4.1-macos</a></td><td>macOS 10.9 on</td><td class=\"ds-table__extra ds-table__code\">b26c94f0d17e83a5</td><td class=\"ds-table__num\">231</td></tr>\n              </tbody>\n            </table>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section\">\n          <h2 class=\"ds-page__label\">Checking a file</h2>\n          <div class=\"ds-page__content ds-page__pair\">\n            <div class=\"ds-prose\">\n              <p>Every file is listed in <code>SHA256</code>, which is signed. Fetch both, then:</p>\n              <pre class=\"ds-code\">sha256sum -c SHA256\nsignify -V -p chronoskin.pub -m SHA256</pre>\n            </div>\n            <p class=\"ds-notice\"><span class=\"ds-notice__title\">Mirrors.</span> The two mirrors copy this directory once a night. A release less than a day old may not be on them yet.</p>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section ds-page__section--last\">\n          <h2 class=\"ds-page__label\">Building</h2>\n          <div class=\"ds-page__content ds-page__pair\">\n            <div class=\"ds-prose\">\n              <p>There is no configure step. Unpack, build, and copy one file to where you keep programs:</p>\n              <pre class=\"ds-code\">tar xzf chronoskin-2.4.1.tar.gz\ncd chronoskin-2.4.1\nmake &amp;&amp; make test\ncp chronoskin ~/bin/</pre>\n            </div>\n            <div class=\"ds-panel\">\n              <h3 class=\"ds-panel__title\">What it needs</h3>\n              <div class=\"ds-panel__body\">\n                <p class=\"ds-panel__text\">A C compiler from this century and <code>make</code>. The tests also want <code>diff</code>.</p>\n                <p class=\"ds-panel__text\"><a class=\"ds-link\" href=\"#report\">It did not build</a></p>\n                <div class=\"ds-accordion\" data-component=\"accordion\">\n                  <details class=\"ds-accordion__item\" open>\n                    <summary class=\"ds-accordion__title\">make: cc: not found</summary>\n                    <p class=\"ds-accordion__body\">No compiler is installed. Install one, or set <code>CC</code> to the one you have.</p>\n                  </details>\n                  <details class=\"ds-accordion__item\">\n                    <summary class=\"ds-accordion__title\">One test fails on dates</summary>\n                    <p class=\"ds-accordion__body\">Your clock is in a zone that changes this week. Run the tests again with <code>TZ=UTC</code>.</p>\n                  </details>\n                  <details class=\"ds-accordion__item\">\n                    <summary class=\"ds-accordion__title\">Permission denied on copy</summary>\n                    <p class=\"ds-accordion__body\">Copy the binary to a directory of your own; nothing needs root.</p>\n                  </details>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      </div>\n    </div>\n  </section>\n\n  <!-- View 5: report a mistake. The two answers the form can give, the form with its error, and the confirmation for throwing a draft away. -->\n  <section class=\"ds-view\" id=\"report\">\n    <div class=\"ds-page__columns\">\n      <aside class=\"ds-sidebar\">\n        <div class=\"ds-sidebar__fixed\">\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Before you write</h2>\n            <ol class=\"ds-sidebar__list\">\n              <li>Run <a class=\"ds-sidebar__link\" href=\"#reference\">chronoskin -c</a> on your file.</li>\n              <li>Check the <a class=\"ds-sidebar__link\" href=\"#changelog\">changelog</a>.</li>\n              <li>Find the smallest file that shows it.</li>\n            </ol>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Open reports</h2>\n            <ul class=\"ds-sidebar__list ds-sidebar__list--plain\">\n              <li><a class=\"ds-sidebar__link\" href=\"#report\">-m skips 29 February</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#report\">chapter 4: wrong example</a></li>\n              <li><a class=\"ds-sidebar__link is-visited\" href=\"#report\">tabs in a format</a></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#report\">all 6</a></li>\n            </ul>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <p class=\"ds-sidebar__text\">Reports are read by one person, usually within a week.</p>\n          </div>\n        </div>\n      </aside>\n\n      <div class=\"ds-page__main\">\n        <ol class=\"ds-breadcrumb\">\n          <li><a class=\"ds-breadcrumb__link\" href=\"#manual\">chronoskin(1)</a></li>\n          <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n          <li><a class=\"ds-breadcrumb__link\" href=\"#manual\">manual</a></li>\n          <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n          <li class=\"ds-breadcrumb__current\">8 reporting mistakes</li>\n        </ol>\n\n        <div class=\"ds-page-header\">\n          <div class=\"ds-page-header__main\">\n            <h1 class=\"ds-page-header__title\">Chapter 8. Reporting mistakes</h1>\n            <p class=\"ds-page-header__text\">In the program or in this manual. Both count.</p>\n          </div>\n          <div class=\"ds-page-header__action\"><a class=\"ds-button ds-button--secondary\" href=\"#report\">See open reports</a></div>\n        </div>\n\n        <section class=\"ds-page__section\" data-component=\"notice\">\n          <h2 class=\"ds-page__label\">Answers</h2>\n          <div class=\"ds-page__content ds-notices\">\n            <p class=\"ds-notice\"><span class=\"ds-notice__title\">Draft kept.</span> What you typed is stored in this browser until you send it or throw it away.</p>\n            <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__title\">Not sent.</span> One field below needs another look. Nothing has left this page.</p>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section\" data-component=\"form\">\n          <h2 class=\"ds-page__label\">The report</h2>\n          <div class=\"ds-page__content\">\n            <form class=\"ds-form\" action=\"#\">\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"r-where\">Where</label>\n                <div class=\"ds-form__field\">\n                  <select class=\"ds-form__input ds-form__input--auto\" id=\"r-where\">\n                    <option>Chapter 3, options</option>\n                    <option>Chapter 4, output formats</option>\n                    <option>The program itself</option>\n                  </select>\n                </div>\n              </div>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"r-version\">Version <span class=\"ds-tooltip\" data-component=\"tooltip\" tabindex=\"0\">?<span class=\"ds-tooltip__text\" role=\"tooltip\">The three numbers that chronoskin -V prints, with the dots.</span></span></label>\n                <div class=\"ds-form__field\">\n                  <input class=\"ds-form__input is-invalid\" id=\"r-version\" type=\"text\" value=\"the latest\">\n                  <p class=\"ds-form__error\">Give the number that chronoskin -V prints, such as 2.4.1.</p>\n                </div>\n              </div>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"r-mail\">Reply to</label>\n                <div class=\"ds-form__field\">\n                  <input class=\"ds-form__input\" id=\"r-mail\" type=\"text\" value=\"ines@example.org\">\n                  <p class=\"ds-form__hint\">Used once, to answer you. Never published.</p>\n                </div>\n              </div>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"r-text\">What is wrong</label>\n                <div class=\"ds-form__field\">\n                  <textarea class=\"ds-form__input ds-form__input--wide\" id=\"r-text\" rows=\"6\">The table says -x wraps at 80 by default. Here it wraps at 72.</textarea>\n                </div>\n              </div>\n              <div class=\"ds-form__row\">\n                <span class=\"ds-form__label\"></span>\n                <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> Add this to the public list of open reports</label>\n              </div>\n              <div class=\"ds-form__actions ds-buttons\" data-component=\"buttons\">\n                <button class=\"ds-button\" type=\"button\">Send report</button>\n                <button class=\"ds-button ds-button--secondary\" type=\"button\">Preview</button>\n                <button class=\"ds-button ds-button--danger\" type=\"button\">Throw away</button>\n                <button class=\"ds-button is-disabled\" type=\"button\" disabled>Attach a file</button>\n              </div>\n            </form>\n          </div>\n        </section>\n\n        <section class=\"ds-page__section ds-page__section--last\" data-component=\"dialog\">\n          <h2 class=\"ds-page__label\">Throwing away</h2>\n          <div class=\"ds-page__content\">\n            <div class=\"ds-dialog__backdrop\">\n              <div class=\"ds-dialog\" role=\"dialog\" aria-labelledby=\"dlg-title\">\n                <h3 class=\"ds-dialog__title\" id=\"dlg-title\">Throw this draft away?</h3>\n                <div class=\"ds-dialog__body\">\n                  <p class=\"ds-dialog__text\">The report you have typed will be removed from this browser. It was never sent, so nothing else changes.</p>\n                  <div class=\"ds-dialog__actions\">\n                    <button class=\"ds-button ds-button--danger\" type=\"button\">Throw away</button>\n                    <a class=\"ds-button ds-button--secondary\" href=\"#report\">Keep writing</a>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      </div>\n    </div>\n  </section>\n\n</div>\n\n<footer class=\"ds-footer\" data-component=\"footer\">\n  <div class=\"ds-footer__row\">\n    <p class=\"ds-footer__text\">chronoskin 2.4.1</p>\n    <ul class=\"ds-footer__links\">\n      <li><a class=\"ds-footer__link\" href=\"#manual\">manual</a></li>\n      <li><a class=\"ds-footer__link\" href=\"#reference\">options</a></li>\n      <li><a class=\"ds-footer__link\" href=\"#changelog\">changelog</a></li>\n      <li><a class=\"ds-footer__link\" href=\"#download\">download</a></li>\n      <li><a class=\"ds-footer__link\" href=\"#report\">report a mistake</a></li>\n    </ul>\n    <p class=\"ds-footer__text ds-footer__text--right\">14 March 2017, written by hand</p>\n  </div>\n</footer>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.brutalism.docs.s05.p03.t03.u01\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"brutalism\",\n    \"years\": [\n      2014,\n      2019\n    ]\n  },\n  \"archetype\": \"docs\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1440,\n    \"fluid\": true,\n    \"responsive\": true\n  },\n  \"source\": \"https://chrono.skin/s/v1-br-5331\",\n  \"short\": \"v1-br-5331\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #0c0c0c;\n  --color-canvas: #0c0c0c;\n  --color-surface: #0c0c0c;\n  --color-surface-alt: #181818;\n  --color-surface-strong: #202020;\n  --color-bar: #ac130d;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #202020;\n  --color-bar-alt-text: #a0a0a0;\n  --color-inverse: #dedede;\n  --color-inverse-text: #0c0c0c;\n  --color-text: #dedede;\n  --color-text-muted: #a0a0a0;\n  --color-heading: #dedede;\n  --color-heading-alt: #c4c4c4;\n  --color-link: #8ab1ff;\n  --color-link-quiet: #a0a0a0;\n  --color-link-visited: #5070b1;\n  --color-link-hover: #ffffff;\n  --color-link-active: #ffffff;\n  --color-border: #585858;\n  --color-border-strong: #a0a0a0;\n  --color-border-muted: #303030;\n  --color-accent: #ac130d;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #d4b106;\n  --color-fill-1: #3b320d;\n  --color-fill-2: #3b1719;\n  --color-fill-3: #15293d;\n  --color-fill-4: #202020;\n  --color-button: #303030;\n  --color-button-text: #dedede;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #181818;\n  --color-button-secondary-text: #c4c4c4;\n  --color-input: #181818;\n  --color-input-text: #dedede;\n  --color-input-border: #707070;\n  --color-disabled: #202020;\n  --color-disabled-text: #707070;\n  --color-danger: #f0706a;\n  --color-danger-surface: #3b1719;\n  --color-success: #8fc07a;\n  --color-warning: #d4b106;\n  --color-notice: #15293d;\n  --color-notice-text: #dedede;\n  --color-focus: #8ab1ff;\n  --color-shadow: #000000;\n  --color-overlay: #181818;\n}\n\n/* @part type */\n:root {\n  --font-body: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-heading: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-ui: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-mono: Menlo, Consolas, monospace;\n  --text-base: 16px;\n  --text-small: 13px;\n  --text-ui: 16px;\n  --text-large: 18px;\n  --text-display: 29px;\n  --text-h1: 26px;\n  --text-h2: 18px;\n  --text-h3: 16px;\n  --line-body: 1.45;\n  --line-heading: 1.2;\n  --line-display: 1.1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 700;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: none;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 2px;\n  --border-style: solid;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: none;\n  --shadow-control: inset 1px 1px 0 color-mix(in srgb, var(--color-button) 25%, white), inset -1px -1px 0 color-mix(in srgb, var(--color-button) 60%, black);\n  --shadow-control-hover: inset 1px 1px 0 color-mix(in srgb, var(--color-button) 25%, white), inset -1px -1px 0 color-mix(in srgb, var(--color-button) 60%, black), inset 0 0 0 2px color-mix(in srgb, var(--color-button) 25%, white);\n  --shadow-control-pressed: inset 1px 1px 0 color-mix(in srgb, var(--color-button) 60%, black), inset -1px -1px 0 color-mix(in srgb, var(--color-button) 25%, white);\n  --shadow-dialog: none;\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: var(--color-bar);\n  --fill-bar-alt: var(--color-bar-alt);\n  --fill-inverse: var(--color-inverse);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-surface);\n  --fill-button: var(--color-button);\n  --fill-button-hover: color-mix(in srgb, var(--color-button) 92%, black);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: var(--color-input);\n  --focus-ring: 1px dotted var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
