{
  "id": "v1-br-5243",
  "long_id": "v1.brutalism.docs.s05.p02.t04.u03",
  "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-5243",
  "preview_url": "https://chrono.skin/s/v1-br-5243/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- Two families set against each other: `--font-heading` and `--font-ui` are Helvetica, Arial, sans-serif, bold, for the headline, titles, numerals, navigation, buttons, labels, captions, meta lines and tables; `--font-body` is Baskerville, \"Calisto MT\", \"Times New Roman\", Times, serif for running text only. `--font-mono` is Consolas, Monaco, monospace for inline code.\n- The headline is the layout: `.ds-hero__title` is three times `--text-display` (3 x 64px = 192px here) at `--line-display` 0.95, written `calc(var(--text-display) * 3)` because the vocabulary has no larger size; the figures of `.ds-stats` are one and a half times it (96px). `--text-display` 64px itself is the page title of an inner page and the name in the footer.\n- `--text-base` 18px with `--line-body` 1.5 is running text; `--text-large` 21px is the lead, the navigation band, tabs, pagination and dialog titles; `--text-ui` 16px is buttons, inputs, tables and the sidebar; `--text-small` 14px is labels, captions, meta lines and the footer. Headings: `--text-h1` 36px (the brand, article titles, list numerals, the empty state), `--text-h2` 27px (list and block titles), `--text-h3` 21px. Nothing is uppercased or tracked.\n- Paper and ink: `--color-page`, `--color-canvas` and `--color-surface` are the off-white #fffceb; `--color-text` is #111111, `--color-heading` #000000, `--color-text-muted` #444444. `--color-surface-alt` #ffffff is alternate table rows, `--color-surface-strong` and `--color-overlay` #eeeeee.\n- `--color-bar` #111111 with `--color-bar-text` #dddddd is the navigation band, table heads and dialog titles. `--color-bar-alt` #222222 with #dddddd text is the footer. `--color-inverse` #ff3333 with black `--color-inverse-text` is the red block of the current navigation word, tab and page number: the only red on a page besides the count badge.\n- `--color-link` is #00449e; `--color-link-quiet` is #111111, so titles of the sidebar, breadcrumb, tabs and pagination are black underlined words; `--color-link-visited` is #444444; hover is #000000, active #ff3333. Every link is underlined at rest: `--link-decoration`, `--link-decoration-quiet` and `--link-decoration-hover` are all underline.\n- Rules are black: `--color-border` #111111 at `--border-width` 1px between list rows and table rows and around blocks, notices and inputs; `--color-border-strong` #000000 at `--border-width-strong` 3px, drawn `double` (two 1px lines 1px apart), for the rule under the hero and page header, above every block caption and figure, and around buttons, panels, dialogs and the brand mark. `--color-border-muted` #cccccc is the edge of a disabled button.\n- Fills: `--color-fill-1` and `--color-notice` are the pale blue #cdecff, `--color-fill-2` #ffffff, `--color-fill-3` #eeeeee, `--color-fill-4` #dddddd. `--color-text` is readable on all of them.\n- The primary button is #111111 with white text; the secondary #eeeeee with #111111 text; inputs are white with a 1px #111111 edge. `--color-accent` #ff3333 with black text is the count badge; `--color-accent-alt` is the same red, as the asterisk of \"new\" only.\n- Status: `--color-danger` #b00000, `--color-success` #1a6b1a, `--color-warning` #7a4e00. The references show one red and no green or amber; these are derived, dark enough to read on the off-white and on white.\n- `--border-style` is `double`: a 1px rule stays one line, a 3px rule becomes the thin double rule of a printed page. Nothing casts a shadow at rest, the dialog included (`--shadow-dialog` is `none`: its double rule is its whole frame); a hovered or pressed button draws a keyline inside its edge, and `--fill-button-hover` lightens a hovered button slightly (the button colour mixed with 15% white).\n- All radii are 0. `--fill-input` and `--fill-button-secondary` are `transparent`, so fields and secondary buttons are drawn on the paper itself; every other fill is its plain palette colour, the hovered button apart. `--focus-ring` is a 3px double 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 <= 192px`: the headline is three times the 64px display size and nothing is larger.\n- `font-size >= 14px`: small text is 14px.\n- `font-families <= 3`: a sans, a serif and a monospace.\n- `line-height <= 1.6`: running text is set at 1.5.\n- `uppercase-text <= 0%`: nothing is uppercased.\n- `underlined-links >= 90%`: every link is underlined at rest.\n- `border-radius <= 0px`: every box and control is square.\n- `box-shadow-blur <= 0px`: shadows only draw heavy edges on controls and panels; nothing is soft and nothing floats.\n- `text-shadow = none`: text is flat.\n- `gradient-fills <= 0%`: every fill is one flat colour.\n- `transition = none`: states change instantly.\n- `animation = none`: nothing moves.\n- `border-width <= 4px`: hairlines are 1px, heavy rules 4px.\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.p02.t04.u03\",\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-5243\",\n  \"short\": \"v1-br-5243\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #ffffff;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #f7f7f7;\n  --color-surface-strong: #efefef;\n  --color-bar: #ddeeff;\n  --color-bar-text: #333333;\n  --color-bar-alt: #ffffff;\n  --color-bar-alt-text: #555555;\n  --color-inverse: #1111aa;\n  --color-inverse-text: #ffffff;\n  --color-text: #444444;\n  --color-text-muted: #808080;\n  --color-heading: #333333;\n  --color-heading-alt: #ff0000;\n  --color-link: #1111aa;\n  --color-link-quiet: #1111aa;\n  --color-link-visited: #800080;\n  --color-link-hover: #ff0000;\n  --color-link-active: #ff0000;\n  --color-border: #aaaaaa;\n  --color-border-strong: #8899cc;\n  --color-border-muted: #dddddd;\n  --color-accent: #ddffaa;\n  --color-accent-text: #333333;\n  --color-accent-alt: #ff0000;\n  --color-fill-1: #ddeeff;\n  --color-fill-2: #ddffaa;\n  --color-fill-3: #ffffaa;\n  --color-fill-4: #f7f7f7;\n  --color-button: #ddffaa;\n  --color-button-text: #333333;\n  --color-button-hover-text: #000000;\n  --color-button-secondary: #ffffff;\n  --color-button-secondary-text: #444444;\n  --color-input: #ffffff;\n  --color-input-text: #333333;\n  --color-input-border: #808080;\n  --color-disabled: #efefef;\n  --color-disabled-text: #808080;\n  --color-danger: #cc0000;\n  --color-danger-surface: #ffffff;\n  --color-success: #2a7a00;\n  --color-warning: #9a5b00;\n  --color-notice: #ffffaa;\n  --color-notice-text: #333333;\n  --color-focus: #1111aa;\n  --color-shadow: #aaaaaa;\n  --color-overlay: #efefef;\n}\n\n/* @part type */\n:root {\n  --font-body: Baskerville, \"Calisto MT\", \"Times New Roman\", Times, serif;\n  --font-heading: Helvetica, Arial, sans-serif;\n  --font-ui: Helvetica, Arial, sans-serif;\n  --font-mono: Consolas, Monaco, monospace;\n  --text-base: 18px;\n  --text-small: 14px;\n  --text-ui: 16px;\n  --text-large: 21px;\n  --text-display: 64px;\n  --text-h1: 36px;\n  --text-h2: 27px;\n  --text-h3: 21px;\n  --line-body: 1.5;\n  --line-heading: 1.2;\n  --line-display: 0.95;\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: underline;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 4px;\n  --border-style: solid;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: inset 4px 0 0 var(--color-border-strong);\n  --shadow-control: inset 0 -2px 0 var(--color-border-strong);\n  --shadow-control-hover: inset 0 -4px 0 var(--color-border-strong);\n  --shadow-control-pressed: inset 0 4px 0 var(--color-border-strong);\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-alt);\n  --fill-button: var(--color-button);\n  --fill-button-hover: color-mix(in srgb, var(--color-button) 80%, white);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: transparent;\n  --focus-ring: 2px dotted var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
