{
  "id": "v1-w9-2188",
  "long_id": "v1.windows-9x.landing.s02.p01.t08.u08",
  "name": "Desktop grey company home page, 1998",
  "era": {
    "slug": "windows-9x",
    "code": "w9",
    "name": "Desktop grey",
    "years": [
      1995,
      2001
    ],
    "description": "Web pages dressed as the desktop of 1995 to 2001: silver-grey windows with a navy title bar, raised and sunken bevels on every button and field, a small pixel-sized sans, and dialogs, tabs and tree lists borrowed from the operating system."
  },
  "archetype": "landing",
  "mode": "mix",
  "viewport": {
    "width": 800,
    "fluid": false
  },
  "summary": "A software company's site laid out as a desktop of the late 1990s: several small windows with title bars and caption buttons standing on a coloured desktop beside a column of icons, with a taskbar across the foot of the screen for navigation. This pack shows it in a high-colour scheme of the kind people chose for themselves: cream windows with a forest green title bar on a slate blue dithered desktop, chunky single-step bevels inside a dark line, serif headings over a 12px wide sans. Company home pages, product sites and CD-ROM menus used the desktop metaphor from 1995 to 2001 to make a site feel like the product it sold.",
  "url": "https://chrono.skin/s/v1-w9-2188",
  "preview_url": "https://chrono.skin/s/v1-w9-2188/specimen.html",
  "files": {
    "STYLE.md": "# Desktop grey company home page, 1998\n\n## Summary\n\nA software company's site laid out as a desktop of the late 1990s: several small windows with title bars and caption buttons standing on a coloured desktop beside a column of icons, with a taskbar across the foot of the screen for navigation. This pack shows it in a high-colour scheme of the kind people chose for themselves: cream windows with a forest green title bar on a slate blue dithered desktop, chunky single-step bevels inside a dark line, serif headings over a 12px wide sans. Company home pages, product sites and CD-ROM menus used the desktop metaphor from 1995 to 2001 to make a site feel like the product it sold.\n\n## Layout\n\n- Fixed, not fluid: `--size-page` is 772px, the width of the desktop area (`.ds-page__desk`) centred on an 800px screen. The taskbar (`.ds-nav`) spans the whole screen under it and sticks to the foot of the window when the page is taller than the screen.\n- The specimen is one example site, a software company, of four views. The `.ds-footer` (small print written on the desktop) and the `.ds-nav` taskbar are written once, after the views; each view is a `.ds-view` and one shows at a time.\n- Home view: `.ds-page__columns`, three columns `--space-5` apart and top-aligned: the `.ds-grid` of desktop icons (`--size-icons`, 80px), `.ds-page__main` with the welcome window (the `.ds-hero`) over a window of `.ds-stat` read-outs and a download meter, and `.ds-page__side` (`--size-side`, 238px) with the news window (a `.ds-panel` holding the `.ds-list`) over a second small window whose title bar is inactive.\n- Inner pages keep the taskbar and the small print and drop the desktop icons and the welcome window. A page is one wide window across the whole desktop area, or (`.ds-page__pair`) a narrow column of windows (`--size-topics`, 204px) beside it. Inside the wide window `.ds-page__inner` stacks, `--space-4` apart: the `.ds-breadcrumb` path field, the `.ds-page-header` (large icon, title in the heading face, one line, the action at the right, closed by a thin rule), then the tabs with their sheet or the working components.\n- Views: `home` is the desktop. `products` is the catalogue: tabs over a sheet holding the list view of programs with a selected row and a total row, the key of status labels and the pagination keys, then two group boxes. `support` is a column with the `.ds-sidebar` topics window and a small window holding the empty state, beside the knowledge base window: notices, a search row and an article in a well. `order` is the order form: a group box with the basket list view and the confirmation dialog beside a group box with the form, an etched rule and the row of keys. The taskbar key of the view that is showing stays pressed and bold; the Welcome key is marked when the address names no view.\n- Spacing scale: `--space-0` 1px is the hairline step (tick inset, row padding in trees and list boxes); `--space-1` 2px the gap between keys and the padding of bars; `--space-2` 4px the padding of keys, the gap between an icon and its word and between panes; `--space-3` 6px cell and field padding and the gap between keys in a row; `--space-4` 8px the gap between blocks inside a window and the padding of group boxes; `--space-5` 12px the padding of sheets and dialogs and the gap between windows; `--space-6` 16px the margin of the desktop round a window and the gutter of two-column sheets.\n- Fixed sizes: `--size-keys` 150px column of keys in the welcome window; `--size-ctl` 16px caption button and `--size-glyph` 8px glyph; `--size-icon` 32px and `--size-icon-small` 16px icons; `--size-check` 13px check box; `--size-label` 120px form label column; `--size-field` 230px text field; `--size-dialog` 340px; `--size-button` 75px least key width; `--size-block` 8px progress 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- `--font-body` and `--font-ui` are the narrow sans at `--text-base` and `--text-ui` (13px); keys are `--weight-ui`. `--font-heading` is the heavy condensed face, set in capitals by `--heading-transform` with `--heading-tracking`: the title of the large display (`--text-display`, 32px, `--display-tracking`), page titles (`--text-h1`, 22px), panel and section titles (`--text-h2`, 16px) and the brand name. `--font-mono` is the lettering of displays: both lines of the deck display, the small line of the large display, counters, key numbers and chart positions. `--text-small` (11px) is for artists, weeks, counts and the breadcrumb. Bold is `--weight-bold`; nothing is lighter than `--weight-body`.\n- Links in text are `--color-link`, underlined by `--link-decoration`, and lose the line under the pointer (`--link-decoration-hover`); quiet links and the rows of the list box use `--link-decoration-quiet`.\n- Which text sits on which fill, the same in every layout of the era:\n  - The window face is `--color-canvas` (`--fill-panel` for windows, cases and dialogs) and carries `--color-text`, `--color-text-muted`, `--color-heading`, `--color-heading-alt` and the link colours.\n  - A sunken well (panels, the list box, list views, the basket read-out, the review, the empty state) is `--color-surface` and carries the same text and link tokens. `--color-surface-alt` is the alternate row, a preset key held down, inline code and the position field of the chart; `--color-surface-strong` is a total row and a lamp that is off. They carry `--color-text`.\n  - A display (the deck display, the large display, the figure of a counter) is `--fill-inverse` with `--color-inverse-text` and nothing else: no heading, muted or link colour is used on it.\n  - The title bar is `--fill-bar` with `--color-bar-text`. The deck, the page header band and column heads are `--fill-bar-alt` with `--color-bar-alt-text`.\n  - The selection (the current band key, the open shelf, a selected row, a lit lamp, progress blocks, the plain badge) is `--fill-accent` with `--color-accent-text`; links and icons inside a selection inherit that colour.\n  - Keys are `--fill-button` with `--color-button-text` (`--fill-button-hover` and `--color-button-hover-text` under the pointer); the lesser key and the band keys are `--fill-button-secondary` with `--color-button-secondary-text`; a disabled key is `--color-disabled` with `--color-disabled-text`; the destructive key is `--fill-button` with a bold label in `--color-danger`.\n  - Fields are `--fill-input` with `--color-input-text`; `--color-input-border` outlines the check box and the radio button.\n  - `--color-fill-1` to `--color-fill-4` are the sleeves and carry `--color-text` (the drawing on them).\n  - Prices are `--color-heading-alt`, bold. Notices are `--color-notice` with `--color-notice-text` inside a line of `--color-border-strong`; the error notice is `--color-danger` on `--color-danger-surface`.\n  - Status labels print `--color-success`, `--color-warning` and `--color-danger` as text and frame on `--color-surface`.\n  - Icons are inline SVG painted with `currentColor`: `--color-heading-alt` by default, the surrounding text colour on keys, sleeves and selections.\n- Edges. Nothing has a border of its own except thin lines; every raised or sunken edge is a `box-shadow` token drawn inside the box:\n  - `--shadow-panel` frames the window, `--shadow-dialog` a dialog. Both also throw a hard shadow.\n  - `--shadow-control` is every raised part: buttons, preset keys, band keys, caption buttons, the page header band, column heads, the cases of the discs, pagination keys, the brand tile. `--shadow-control-hover` replaces it under the pointer.\n  - `--shadow-control-pressed` is everything sunken: displays, counters, fields, wells, panels, the list box, status cells, the check box, the progress bar, a key held down, the current band key and pagination key.\n  - `--border-width-strong` is the thickness of those edges: padding that must clear an edge is written `calc(var(--border-width-strong) + var(--space-N))`.\n  - `--border-width`, `--border-style` and `--color-border` draw the thin lines: the line under a panel title, the frame of a lamp and of a chart position, group boxes, the etched rule (over `--color-border-muted`); a sleeve is framed in `--color-border-strong`; table row lines are `--color-surface-alt`.\n\n## Components\n\n- `.ds-page`: on `<body>`; the desktop. `.ds-page__desk` is the 772px desktop area; `.ds-page__columns` the three columns of the home view; `.ds-page__main` and `.ds-page__side` are columns of windows `--space-5` apart; `.ds-page__pair` is a narrow column beside a wide window; `.ds-page__inner` stacks the content of a wide window.\n- `.ds-nav`: the taskbar, written once after the views: a raised bar across the screen holding the `.ds-brand` key, `.ds-nav__links` (one `.ds-nav__item` and `.ds-nav__link` key per view, each with a small icon, sharing the width) and `.ds-nav__tray`, a sunken cell with the clock. The key of the current view (`is-current`, or one selector per view) is pressed and bold.\n- `.ds-brand`: the first key of the taskbar: a raised key holding `.ds-brand__mark`, a small tile dressed like the default button (`--fill-button`, `--color-button-text`, a line of `--color-border-strong`, `--radius-control`, `--shadow-control`) with the mark as inline SVG (3 unit stroke, square caps), and `.ds-brand__name`, the name in bold `--font-heading` at `--text-ui`. The name `chronoskin` and its mark are placeholders for the installing project's own name and logo.\n- `.ds-hero`: the body of the welcome window, the era's page introduction: `.ds-hero__text` with `.ds-hero__title` (`--text-display`; `.ds-hero__name` puts the name in `--color-heading-alt`), `.ds-hero__lead` and `.ds-hero__tip` (the tip of the day in the notice colours inside a sunken frame), beside `.ds-hero__action`, a column of keys with the default button first, over `.ds-hero__foot`, a thin rule and one check box.\n- `.ds-page-header`: the head of an inner page, inside its window: a large icon, `.ds-page-header__text` with `.ds-page-header__title` (`--text-h1`) and `.ds-page-header__lead`, `.ds-page-header__action` at the right, closed by a thin rule.\n- `.ds-grid`: icons standing on the desktop, one column. Each `.ds-grid__cell` is a link with a `.ds-grid__icon` tile (a 32px icon on one of the four block colours inside a dark line: `--2`, `--3`, `--4` on the cell) and a `.ds-grid__title` label in `--color-bar-text`; the selected icon (`is-current`) has its label in the selection colours inside the focus ring.\n- `.ds-panel`: a small window: used together with `.ds-window`, its `.ds-panel__title` together with `.ds-window__title`. `.ds-panel__body` pads the content, `.ds-panel__text` is a paragraph in it. `.ds-meter` is a line with a progress bar.\n- `.ds-list`: a list box of dated items: a sunken well whose `.ds-list__item` rows carry a `.ds-list__meta` date over a link (`.ds-list__text` for a line of text).\n- `.ds-sidebar`: the narrow window of topics, used together with `.ds-window`: `.ds-sidebar__title` headings in `--color-heading-alt`, each over a `.ds-sidebar__list`, a sunken well of `.ds-sidebar__item` rows (small icon, link, count).\n- `.ds-footer`: small print written on the desktop in `--color-bar-text`: `.ds-footer__links` of `.ds-footer__link` and `.ds-footer__legal`.\n- `.ds-window`: the raised frame of a window (`--fill-panel`, `--shadow-panel`). `.ds-window__title` is the title bar (`--fill-bar`, bold `--font-ui` in `--color-bar-text`), `.ds-window__title--inactive` the bar of a window without the focus, `.ds-window__caption` the title text, `.ds-window__controls` the group of caption buttons. `.ds-window__ctl` is one caption button, a small raised square with its glyph drawn in CSS: `--min`, `--max`, `--close`. `.ds-window__body` pads plain content.\n- `.ds-view`: one screen of the example site; only the one named in the address shows, and `.ds-view--home` when none is named. No box of its own.\n- `.ds-prose`: running text: styles `h1`, `h2`, `h3`, `p`, `ul`, `ol`, `li`, `strong` and `code`; `.ds-prose__lead` is the lead line at `--text-large`. Used inside a well or on a sheet.\n- `.ds-link`: every link in text, underlined. States `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` (`--color-link-quiet`, `--link-decoration-quiet`) for tool and footer links, `.ds-link--strong` for a bold link. `.ds-links` wraps a line of links.\n- `.ds-button`: a raised key at least `--size-button` wide, on a `<button>` or on a link that leads to another view. The plain class is the default button of its window: one more line of `--color-border-strong` round the key. `.ds-button--secondary` is every other key, `.ds-button--danger` the destructive one (bold `--color-danger` label, never a red key), `.ds-button--large` a bigger one. States `is-hover`, `is-pressed` (the edge turns inward), `is-focus` (dotted ring inside the key), `is-disabled` or `disabled`. `.ds-buttons` lays out a row; a `.ds-find__fill` spacer pushes the confirming keys to the right.\n- `.ds-form`: two columns, `.ds-form__label` at the left (`--size-label`) and `.ds-form__field` at the right. Controls: `.ds-form__input` (`--short`, `--wide`), `.ds-form__select`, `.ds-form__textarea`, `.ds-form__check` inside a `.ds-form__option` label. All are sunken fields. `.ds-form__hint` is a small muted line under a field, `.ds-form__error` a bold line in `--color-danger` under it (the field itself does not change), `.ds-form__actions` a right-aligned row of keys.\n- `.ds-table`: a list view: a sunken well of `--color-surface` whose column heads (`.ds-table__head`, `--num` for a right-aligned one) are raised keys. Rows are `.ds-table__row`; `.ds-table__row--alt` tints a row, `is-selected` puts it in the selection colours. `.ds-table__cell`, with `--num` for figures and `--group` for a total or group row. `.ds-table__caption` is the small line under the well.\n- `.ds-stat`: the row of summary figures; each `.ds-stat__item` is a sunken read-out with a `.ds-stat__value` (`--text-h1`, `--color-heading-alt`) over a `.ds-stat__label` (`--text-small`, muted). Three or four in a row, never large numerals or cards.\n- `.ds-tabs`: a property sheet. `.ds-tabs__item` holds a `.ds-tabs__tab`, a raised key whose lower edge slides under the sheet; the current tab (`is-current`) is taller, bold and joined to the sheet. `.ds-sheet` is the raised sheet under the tabs and always follows them.\n- `.ds-badge`: a small bold label in the selection colours with a dark line round it. `.ds-badge--count` is a plain muted count in brackets. Status: `.ds-badge--success`, `.ds-badge--warning`, `.ds-badge--danger`, the status colour as text and frame on the well colour. `.ds-badges` lays out a row of them.\n- `.ds-notice`: the pale tip box inside a dark line; `.ds-notice__label` is the bold lead word. `.ds-notice--error` is the error form. `.ds-notices` stacks several.\n- `.ds-pagination`: a row of small raised keys: `.ds-pagination__label`, then `.ds-pagination__link` for previous, the page numbers and next; `is-current` is pressed and bold, `is-disabled` greyed.\n- `.ds-breadcrumb`: the path, written in a sunken field with a backslash between the `.ds-breadcrumb__item`s; the last is `is-current` and bold.\n- `.ds-dialog`: a small window `--size-dialog` wide, shown in the page flow where it would open. `.ds-dialog__title` is its title bar (with a `.ds-window__ctl--close`), `.ds-dialog__content` holds a large icon and the `.ds-dialog__body` message, `.ds-dialog__actions` centres the keys. No backdrop.\n- `.ds-empty`: an empty well with `.ds-empty__title`, `.ds-empty__text` and one secondary key.\n- `.ds-icon`: a 16px inline SVG pixel icon; `.ds-icon--large` is 32px, `.ds-icon--plain` takes the surrounding text colour.\n- `.ds-well`: a sunken field of `--color-surface` for a document or a list. `.ds-rule`: the etched line. `.ds-group` with `.ds-group__title`: a group box, a `<fieldset>` whose `<legend>` is cut into the thin frame. `.ds-props` with `.ds-props__label` and `.ds-props__value`: rows of a property page. `.ds-progress` with `.ds-progress__block` (`--empty` for the rest): a progress bar made of blocks.\n- `.ds-tree`: the tree list: `.ds-tree__item` rows, `.ds-tree__link` (icon and name, not underlined, `is-current` in the selection colours), nested `.ds-tree__list` joined by a dotted guide line.\n- `.ds-toolbar`: a row of `.ds-toolbar__button` keys (icon and word; `is-pressed`, `is-disabled`) with `.ds-toolbar__sep` etched separators. `.ds-address` puts an `.ds-address__label` before the path field. `.ds-status` is a row of sunken `.ds-status__cell`s (`--wide` takes the free width).\n- `.ds-heading`: a section title at `--text-h2`. `.ds-split`: two equal columns. `.ds-stack`: a column of blocks `--space-4` apart. `.ds-find`: a row of labels, fields and a key.\n- `.ds-menu`: a pull-down under a menu-bar entry: an `<li class=\"ds-menu\">` holding a `<details>` whose `<summary class=\"ds-nav__link\">` is the entry and whose `.ds-menu__list` of `.ds-menu__item` links opens on a click, in the selection colours while open. `.ds-menu--up` opens it upward, from a task bar.\n\n## Never\n\n- `row-gap <= 8px`: rows of lists and list views touch or sit 1px to 4px apart.\n- `block-gap <= 16px`: windows are 12px apart and blocks inside them 8px, never more than 16px.\n- `content-width <= 772px`: everything is inside the 772px desktop area.\n- `font-size >= 11px`: artists and counts are 11px, nothing smaller.\n- `font-size <= 32px`: the title in the large display is the largest text; page titles stop at 22px.\n- `font-weight >= 400`: only regular and bold.\n- `font-families <= 3`: the narrow sans, the condensed heading face and a monospace.\n- `letter-spacing <= 1px`: headings are tracked by half a pixel, the largest title by one.\n- `uppercase-text <= 12%`: only headings are set in capitals.\n- `border-radius <= 0px`: the desktop had no rounded corner; the radio button is a circle.\n- `box-shadow-blur <= 0px`: edges are hard lines and the shadow of a window is hard; nothing is blurred.\n- `text-shadow = none`: no text shadow anywhere.\n- `gradient-fills <= 20%`: keys, bars, displays and lamps are shaded; wells, panels and the window face are flat.\n- `border-width <= 3px`: thin lines are 1px; nothing is drawn thicker than the 3px edge of a key.\n- `transition = none`: nothing eases on hover.\n- `animation = none`: no CSS animation.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. Anything that holds content is a `.ds-window` with a title bar or a `.ds-group` with its caption; anything that lists is a `.ds-table`, a `.ds-tree` or a list in a `.ds-well`; anything pressed or typed into takes `--shadow-control-pressed`, anything pushed takes `--shadow-control`. Clear every edge with `calc(var(--border-width-strong) + ...)` padding, keep text at `--text-base` or `--text-ui`, and never add a radius, a blurred shadow, a gradient outside `--fill-*` tokens, a hover animation or a colour of your own.\n",
    "components.css": "/* Layout tokens (structure part). A desktop 772px wide on an 800px screen:\n   a column of desktop icons, a main window and a column of small windows,\n   with the taskbar across the foot of the screen. */\n:root {\n  --size-page: 772px;\n  --size-icons: 80px;\n  --size-side: 238px;\n  --size-topics: 204px;\n  --size-keys: 150px;\n  --size-ctl: 16px;\n  --size-glyph: 8px;\n  --size-icon: 32px;\n  --size-icon-small: 16px;\n  --size-check: 13px;\n  --size-label: 120px;\n  --size-field: 230px;\n  --size-dialog: 340px;\n  --size-button: 75px;\n  --size-block: 8px;\n  --space-0: 1px;\n  --space-1: 2px;\n  --space-2: 4px;\n  --space-3: 6px;\n  --space-4: 8px;\n  --space-5: 12px;\n  --space-6: 16px;\n}\n\n/* ---------- shell: the desktop ---------- */\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.ds-page__desk {\n  box-sizing: border-box;\n  width: var(--size-page);\n  margin: 0 auto;\n  padding: var(--space-6) 0 0;\n}\n/* Home: desktop icons, the welcome window, a column of small windows. */\n.ds-page__columns {\n  display: grid;\n  grid-template-columns: var(--size-icons) minmax(0, 1fr) var(--size-side);\n  gap: var(--space-5);\n  align-items: start;\n}\n.ds-page__main,\n.ds-page__side {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  min-width: 0;\n}\n/* Inner pages: one wide window, or a narrow window beside it. */\n.ds-page__pair {\n  display: grid;\n  grid-template-columns: var(--size-topics) minmax(0, 1fr);\n  gap: var(--space-5);\n  align-items: start;\n}\n.ds-page__inner {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  padding: var(--space-3) var(--space-4) var(--space-4);\n}\n.ds-split {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n  gap: var(--space-6);\n  align-items: start;\n}\n.ds-stack {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n}\n.ds-heading {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\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}\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/* ---------- window: a raised frame with a title bar ---------- */\n.ds-window {\n  box-sizing: border-box;\n  min-width: 0;\n  padding: calc(var(--border-width-strong) + var(--space-1));\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-window__title {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  padding: var(--space-1) var(--space-1) var(--space-1) var(--space-2);\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-bold);\n  line-height: var(--line-heading);\n  text-shadow: var(--shadow-text);\n}\n/* A window that does not have the focus. */\n.ds-window__title--inactive {\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n}\n.ds-window__caption {\n  flex: 1;\n  min-width: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.ds-window__controls {\n  display: flex;\n  flex: none;\n  gap: var(--space-1);\n}\n/* Caption buttons: small raised squares, the glyph drawn in CSS. */\n.ds-window__ctl {\n  position: relative;\n  box-sizing: border-box;\n  width: var(--size-ctl);\n  height: calc(var(--size-ctl) - var(--space-1));\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n}\n.ds-window__ctl::before,\n.ds-window__ctl::after {\n  content: \"\";\n  position: absolute;\n  box-sizing: border-box;\n}\n.ds-window__ctl--min::before {\n  left: var(--space-2);\n  bottom: calc(var(--space-1) + var(--space-0));\n  width: calc(var(--size-glyph) - var(--space-1));\n  height: var(--space-1);\n  background: currentColor;\n}\n.ds-window__ctl--max::before {\n  left: calc(50% - var(--size-glyph) / 2);\n  top: calc(50% - var(--size-glyph) / 2);\n  width: var(--size-glyph);\n  height: var(--size-glyph);\n  border: var(--space-0) solid currentColor;\n  border-top-width: var(--space-1);\n}\n.ds-window__ctl--close::before,\n.ds-window__ctl--close::after {\n  left: calc(50% - var(--size-glyph) / 2 - var(--space-0));\n  top: calc(50% - var(--space-0));\n  width: calc(var(--size-glyph) + var(--space-1));\n  height: var(--space-1);\n  background: currentColor;\n  transform: rotate(45deg);\n}\n.ds-window__ctl--close::after {\n  transform: rotate(-45deg);\n}\n.ds-window__body {\n  padding: var(--space-4);\n}\n\n/* ---------- small things used everywhere ---------- */\n/* Etched line: a dark rule over a light one. */\n.ds-rule {\n  height: 0;\n  margin: var(--space-4) 0;\n  border: 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n/* Pixel icon: inline SVG painted with the text colour of its place. */\n.ds-icon {\n  display: inline-block;\n  flex: none;\n  width: var(--size-icon-small);\n  height: var(--size-icon-small);\n  vertical-align: text-bottom;\n  color: var(--color-heading-alt);\n}\n.ds-icon svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-icon--large {\n  width: var(--size-icon);\n  height: var(--size-icon);\n}\n.ds-icon--plain {\n  color: inherit;\n}\n/* Sunken well: the white field that holds lists, trees and documents. */\n.ds-well {\n  box-sizing: border-box;\n  min-width: 0;\n  padding: calc(var(--border-width-strong) + var(--space-3));\n  background: var(--color-surface);\n  color: var(--color-text);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-control-pressed);\n}\n/* Progress bar made of blocks. */\n.ds-progress {\n  display: inline-flex;\n  gap: var(--space-1);\n  box-sizing: border-box;\n  padding: calc(var(--border-width-strong) + var(--space-0));\n  background: var(--color-surface);\n  box-shadow: var(--shadow-control-pressed);\n  vertical-align: middle;\n}\n.ds-progress__block {\n  width: var(--size-block);\n  height: calc(var(--size-block) + var(--space-2));\n  background: var(--fill-accent);\n}\n.ds-progress__block--empty {\n  background: transparent;\n}\n/* Toolbar: a row of raised keys between etched lines. */\n.ds-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-1);\n  padding: var(--space-1) 0;\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-toolbar__button {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: calc(var(--border-width-strong) + var(--space-1)) var(--space-4);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  text-decoration: none;\n  text-transform: var(--ui-transform);\n  cursor: default;\n}\n.ds-toolbar__button:active,\n.ds-toolbar__button.is-pressed {\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-toolbar__button.is-disabled {\n  color: var(--color-disabled-text);\n}\n.ds-toolbar__button .ds-icon {\n  color: inherit;\n}\n.ds-toolbar__sep {\n  align-self: stretch;\n  width: 0;\n  margin: 0 var(--space-2);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n  border-right: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n/* Address line: a label and the path field. */\n.ds-address {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  padding: var(--space-1) 0 var(--space-2);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-address__label {\n  flex: none;\n  padding: 0 0 0 var(--space-2);\n}\n.ds-address .ds-breadcrumb {\n  flex: 1;\n}\n/* Status bar: sunken cells. */\n.ds-status {\n  display: flex;\n  gap: var(--space-1);\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-status__cell {\n  padding: calc(var(--border-width-strong) + var(--space-0)) var(--space-3);\n  box-shadow: var(--shadow-control-pressed);\n  white-space: nowrap;\n}\n/* Group box: a thin frame with its caption cut into the top edge. */\n.ds-group {\n  box-sizing: border-box;\n  min-width: 0;\n  margin: 0;\n  padding: var(--space-2) var(--space-4) var(--space-4);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n}\n.ds-group__title {\n  padding: 0 var(--space-2);\n  color: var(--color-heading-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n}\n/* Property rows: a label column and a value column. */\n.ds-props {\n  display: grid;\n  grid-template-columns: max-content minmax(0, 1fr);\n  column-gap: var(--space-5);\n  row-gap: var(--space-2);\n  align-items: center;\n  margin: 0;\n}\n.ds-props__label {\n  color: var(--color-text-muted);\n}\n.ds-props__value {\n  margin: 0;\n}\n/* Tree list: nested rows joined by dotted guide lines. */\n.ds-tree {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-tree__list {\n  margin: 0 0 0 calc(var(--size-icon-small) / 2);\n  padding: 0 0 0 var(--space-4);\n  list-style: none;\n  border-left: var(--border-width) dotted var(--color-border);\n}\n.ds-tree__item {\n  padding: var(--space-0) 0;\n}\n.ds-tree__link {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: 0 var(--space-1);\n  color: var(--color-text);\n  text-decoration: none;\n}\n.ds-tree__link:hover,\n.ds-tree__link.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-tree__link.is-current {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n.ds-tree__link.is-current .ds-icon {\n  color: inherit;\n}\n\n/* ---------- links ---------- */\n.ds-link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration);\n  transition: var(--transition);\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}\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--strong {\n  font-weight: var(--weight-bold);\n}\n.ds-links {\n  margin: 0;\n}\n\n/* ---------- prose ---------- */\n.ds-prose {\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  line-height: var(--line-body);\n}\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: var(--space-5) 0 var(--space-2);\n  color: var(--color-heading);\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}\n.ds-prose h1 {\n  margin-top: 0;\n  font-size: var(--text-h1);\n}\n.ds-prose h2 {\n  font-size: var(--text-h2);\n}\n.ds-prose h3 {\n  font-size: var(--text-h3);\n  color: var(--color-heading-alt);\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 calc(var(--space-6) + var(--space-4));\n}\n.ds-prose li {\n  padding: 0 0 var(--space-1);\n}\n.ds-prose strong {\n  font-weight: var(--weight-bold);\n}\n.ds-prose code {\n  padding: 0 var(--space-1);\n  background: var(--color-surface-alt);\n  font-family: var(--font-mono);\n  font-size: var(--text-base);\n}\n.ds-prose__lead {\n  font-size: var(--text-large);\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/* The primary button is the default button of a dialog: the same raised key\n   as every other, inside one more dark line. */\n.ds-button {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: var(--size-button);\n  margin: 0;\n  padding: var(--space-2) var(--space-5);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  text-align: center;\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  white-space: nowrap;\n  transition: var(--transition);\n  cursor: default;\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  color: var(--color-button-hover-text);\n  box-shadow: var(--shadow-control-hover);\n}\n.ds-button:active,\n.ds-button.is-pressed {\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n  outline-offset: calc(var(--space-2) * -1);\n}\n.ds-button--secondary,\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--fill-button-secondary);\n  background-clip: padding-box;\n  color: var(--color-button-secondary-text);\n  border-color: transparent;\n}\n.ds-button--large {\n  padding: var(--space-3) var(--space-6);\n  font-size: var(--text-large);\n}\n/* Destructive action: the same key, the label in the bold danger colour. */\n.ds-button--danger,\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: var(--fill-button);\n  background-clip: padding-box;\n  color: var(--color-danger);\n  border-color: transparent;\n  font-weight: var(--weight-bold);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  background-clip: padding-box;\n  color: var(--color-disabled-text);\n  border-color: transparent;\n}\n\n/* ---------- form ---------- */\n.ds-form {\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  column-gap: var(--space-4);\n  row-gap: var(--space-3);\n  align-items: baseline;\n  margin: 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-form__label {\n  color: var(--color-text);\n}\n.ds-form__field {\n  min-width: 0;\n}\n.ds-form__input,\n.ds-form__select,\n.ds-form__textarea {\n  box-sizing: border-box;\n  max-width: 100%;\n  margin: 0;\n  padding: calc(var(--border-width-strong) + var(--space-1)) calc(var(--border-width-strong) + var(--space-2));\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: 0;\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control-pressed);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-body);\n  line-height: var(--line-heading);\n  transition: var(--transition);\n}\n.ds-form__input {\n  width: var(--size-field);\n}\n.ds-form__input--wide {\n  width: 100%;\n}\n.ds-form__textarea {\n  display: block;\n  width: 100%;\n  resize: none;\n}\n.ds-form__input:focus-visible,\n.ds-form__select:focus-visible,\n.ds-form__textarea:focus-visible,\n.ds-form__input.is-focus {\n  outline: var(--focus-ring);\n  outline-offset: calc(var(--border-width-strong) * -1 - var(--space-0));\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__option {\n  display: inline-flex;\n  align-items: center;\n  margin: 0 var(--space-5) 0 0;\n}\n.ds-form__check {\n  appearance: none;\n  box-sizing: border-box;\n  flex: none;\n  width: var(--size-check);\n  height: var(--size-check);\n  margin: 0 var(--space-3) 0 0;\n  padding: calc(var(--border-width-strong) + var(--space-0));\n  background: var(--fill-input);\n  border: 0;\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control-pressed);\n  outline: var(--border-width) var(--border-style) var(--color-input-border);\n  outline-offset: calc(var(--border-width) * -1);\n}\n/* The tick is a block of the field's text colour inside the field's fill. */\n.ds-form__check:checked::before,\n.ds-form__check.is-checked::before {\n  content: \"\";\n  display: block;\n  width: 100%;\n  height: 100%;\n  background: var(--color-input-text);\n}\n.ds-form__hint {\n  display: block;\n  padding: var(--space-1) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-form__error {\n  display: block;\n  padding: var(--space-1) 0 0;\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-form__actions {\n  grid-column: 1 / -1;\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-end;\n  gap: var(--space-3);\n  padding: var(--space-2) 0 0;\n}\n\n/* ---------- table: a list view in a sunken well, raised column heads ---------- */\n.ds-table {\n  box-sizing: border-box;\n  width: 100%;\n  padding: var(--border-width-strong);\n  border-collapse: separate;\n  border-spacing: 0;\n  background: var(--color-surface);\n  color: var(--color-text);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-control-pressed);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-table__head {\n  padding: calc(var(--border-width-strong) + var(--space-0)) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-align: left;\n  white-space: nowrap;\n}\n.ds-table__head--num {\n  text-align: right;\n}\n.ds-table__cell {\n  padding: var(--space-1) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) var(--color-surface-alt);\n  text-align: left;\n  vertical-align: baseline;\n}\n.ds-table__cell--num {\n  text-align: right;\n  white-space: nowrap;\n}\n.ds-table__cell--group {\n  background: var(--color-surface-strong);\n  font-weight: var(--weight-bold);\n}\n.ds-table__row--alt .ds-table__cell {\n  background: var(--color-surface-alt);\n}\n/* The selected row of a list view. */\n.ds-table__row.is-selected .ds-table__cell {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n.ds-table__row.is-selected .ds-link,\n.ds-table__row.is-selected .ds-icon {\n  color: inherit;\n}\n.ds-table__caption {\n  caption-side: bottom;\n  padding: var(--space-2) 0 0;\n  color: var(--color-text);\n  font-size: var(--text-small);\n  text-align: left;\n}\n\n/* ---------- stats: sunken read-outs ---------- */\n.ds-stat {\n  display: flex;\n  gap: var(--space-2);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-stat__item {\n  flex: 1;\n  min-width: 0;\n  padding: calc(var(--border-width-strong) + var(--space-1)) calc(var(--border-width-strong) + var(--space-3));\n  background: var(--color-surface);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-stat__value {\n  display: block;\n  color: var(--color-heading-alt);\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}\n.ds-stat__label {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* ---------- tabs: a property sheet ---------- */\n.ds-tabs {\n  display: flex;\n  align-items: flex-end;\n  margin: 0;\n  padding: 0 var(--space-1);\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-tabs__item {\n  display: flex;\n  align-items: flex-end;\n}\n/* A tab is a raised key whose lower edge slides under the sheet. */\n.ds-tabs__tab {\n  display: block;\n  margin: 0 0 calc(var(--border-width-strong) * -1);\n  padding: var(--space-2) var(--space-4) calc(var(--space-2) + var(--border-width-strong));\n  background: var(--fill-panel);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control);\n  line-height: var(--line-heading);\n  text-decoration: none;\n  white-space: nowrap;\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link-hover);\n}\n/* The current tab is taller, stands in front of the sheet and loses its own\n   lower edge, so it reads as one piece with the sheet. */\n.ds-tabs__tab.is-current {\n  position: relative;\n  z-index: 1;\n  margin: 0 0 calc(var(--border-width-strong) * -2);\n  padding: var(--space-3) var(--space-4) calc(var(--space-2) + var(--border-width-strong) * 2);\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  clip-path: inset(0 0 var(--border-width-strong) 0);\n}\n.ds-sheet {\n  box-sizing: border-box;\n  min-width: 0;\n  padding: calc(var(--border-width-strong) + var(--space-5));\n  background: var(--fill-panel);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control);\n}\n\n/* ---------- badge ---------- */\n.ds-badge {\n  display: inline-block;\n  padding: 0 var(--space-2);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-pill);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  white-space: nowrap;\n}\n.ds-badge--count {\n  padding: 0;\n  background: transparent;\n  color: var(--color-text-muted);\n  border-color: transparent;\n  font-weight: var(--weight-body);\n}\n/* Status labels: the status colour as text and frame on the well colour. */\n.ds-badge--success,\n.ds-badge--warning,\n.ds-badge--danger {\n  background: var(--color-surface);\n  border-color: currentColor;\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.ds-badges {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n}\n\n/* ---------- notice: the pale tip box with a dark line round it ---------- */\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-2) var(--space-4);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-notice--error {\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n  border-color: var(--color-danger);\n}\n.ds-notice__label {\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- pagination: a row of small keys ---------- */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-1);\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-pagination__label {\n  padding: 0 var(--space-3) 0 0;\n}\n.ds-pagination__link {\n  display: block;\n  padding: calc(var(--border-width-strong) + var(--space-0)) calc(var(--border-width-strong) + var(--space-3));\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  box-shadow: var(--shadow-control);\n  line-height: var(--line-heading);\n  text-decoration: none;\n  cursor: default;\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-button-hover-text);\n}\n.ds-pagination__link.is-current {\n  box-shadow: var(--shadow-control-pressed);\n  font-weight: var(--weight-bold);\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-disabled-text);\n}\n\n/* ---------- breadcrumb: the path, written in a sunken field ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  box-sizing: border-box;\n  margin: 0;\n  padding: calc(var(--border-width-strong) + var(--space-1)) calc(var(--border-width-strong) + var(--space-2));\n  list-style: none;\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  box-shadow: var(--shadow-control-pressed);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  line-height: var(--line-heading);\n}\n.ds-breadcrumb__item + .ds-breadcrumb__item::before {\n  content: \"\\005C\";\n  padding: 0 var(--space-2);\n  color: var(--color-input-text);\n}\n.ds-breadcrumb__item.is-current {\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- dialog: a small window with an icon, a message and keys ---------- */\n.ds-dialog {\n  position: static;\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  max-width: 100%;\n  margin: var(--space-5) auto var(--space-2);\n  padding: calc(var(--border-width-strong) + var(--space-1));\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-dialog__title {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-2);\n  margin: 0;\n  padding: var(--space-1) var(--space-1) var(--space-1) var(--space-2);\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-bold);\n  line-height: var(--line-heading);\n  text-shadow: var(--shadow-text);\n}\n.ds-dialog__content {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-5);\n  padding: var(--space-5);\n}\n.ds-dialog__body {\n  flex: 1;\n  min-width: 0;\n  margin: 0;\n}\n.ds-dialog__actions {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-3);\n  padding: 0 var(--space-5) var(--space-5);\n}\n\n/* ---------- empty state: a message in an empty well ---------- */\n.ds-empty {\n  padding: var(--space-6) var(--space-5);\n  background: var(--color-surface);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control-pressed);\n  text-align: center;\n  font-size: var(--text-base);\n}\n.ds-empty__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\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}\n.ds-empty__text {\n  margin: 0 0 var(--space-4);\n  color: var(--color-text-muted);\n}\n\n/* ---------- nav: the taskbar at the foot of the screen ---------- */\n.ds-nav {\n  position: sticky;\n  bottom: 0;\n  z-index: 2;\n  display: flex;\n  align-items: stretch;\n  gap: var(--space-2);\n  padding: calc(var(--border-width-strong) + var(--space-1));\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n/* The brand is the first key of the taskbar. */\n.ds-brand {\n  display: inline-flex;\n  flex: none;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--border-width-strong) var(--space-4) var(--border-width-strong) calc(var(--border-width-strong) + var(--space-1));\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  box-shadow: var(--shadow-control);\n  text-decoration: none;\n}\n.ds-brand__mark {\n  display: flex;\n  flex: none;\n  box-sizing: border-box;\n  width: calc(var(--size-ctl) + var(--space-2));\n  height: calc(var(--size-ctl) + var(--space-2));\n  padding: var(--border-width-strong);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n}\n.ds-brand__mark svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-brand__name {\n  font-family: var(--font-heading);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-nav__links {\n  display: flex;\n  flex: 1;\n  gap: var(--space-1);\n  min-width: 0;\n  margin: 0;\n  padding: 0 0 0 var(--space-2);\n  list-style: none;\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-nav__item {\n  display: flex;\n  flex: 1;\n  min-width: 0;\n}\n.ds-nav__link {\n  display: flex;\n  flex: 1;\n  align-items: center;\n  gap: var(--space-2);\n  min-width: 0;\n  padding: var(--border-width-strong) var(--space-3);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  box-shadow: var(--shadow-control);\n  line-height: var(--line-heading);\n  text-decoration: none;\n  text-transform: var(--ui-transform);\n  white-space: nowrap;\n}\n.ds-nav__link .ds-icon {\n  color: inherit;\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  color: var(--color-button-hover-text);\n}\n/* The window that is open: its key stays pressed. */\n.ds-nav__link.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#home\"],\n.ds-page:has(#home:target) .ds-nav__link[href=\"#home\"],\n.ds-page:has(#products:target) .ds-nav__link[href=\"#products\"],\n.ds-page:has(#support:target) .ds-nav__link[href=\"#support\"],\n.ds-page:has(#order:target) .ds-nav__link[href=\"#order\"] {\n  box-shadow: var(--shadow-control-pressed);\n  font-weight: var(--weight-bold);\n}\n.ds-nav__tray {\n  display: flex;\n  flex: none;\n  align-items: center;\n  gap: var(--space-3);\n  padding: 0 var(--space-4);\n  box-shadow: var(--shadow-control-pressed);\n}\n\n/* ---------- hero: the welcome window ---------- */\n.ds-hero {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) var(--size-keys);\n  gap: var(--space-5);\n  padding: var(--space-5) var(--space-4) var(--space-3);\n}\n.ds-hero__text {\n  min-width: 0;\n}\n.ds-hero__title {\n  margin: 0;\n  color: var(--color-heading);\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}\n.ds-hero__name {\n  color: var(--color-heading-alt);\n}\n.ds-hero__lead {\n  margin: var(--space-3) 0 var(--space-5);\n  font-size: var(--text-large);\n}\n/* The tip of the day, in the pale tip colour inside a sunken frame. */\n.ds-hero__tip {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-4);\n  margin: 0;\n  padding: calc(var(--border-width-strong) + var(--space-4));\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-hero__tip .ds-icon {\n  color: inherit;\n}\n.ds-hero__action {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\n}\n.ds-hero__foot {\n  grid-column: 1 / -1;\n  display: flex;\n  align-items: center;\n  padding: var(--space-3) 0 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n\n/* ---------- page header ---------- */\n.ds-page-header {\n  display: flex;\n  align-items: center;\n  gap: var(--space-5);\n  padding: var(--space-2) 0 var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-page-header__text {\n  flex: 1;\n  min-width: 0;\n}\n.ds-page-header__title {\n  margin: 0;\n  color: var(--color-heading);\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}\n.ds-page-header__lead {\n  margin: 0;\n}\n.ds-page-header__action {\n  display: flex;\n  flex: none;\n  gap: var(--space-3);\n}\n\n/* ---------- grid: icons standing on the desktop ---------- */\n.ds-grid {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr);\n  gap: var(--space-6);\n  padding: var(--space-2) 0;\n}\n.ds-grid__cell {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: var(--space-2);\n  min-width: 0;\n  color: var(--color-bar-text);\n  text-align: center;\n  text-decoration: none;\n}\n.ds-grid__icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: calc(var(--size-icon) + var(--space-4));\n  height: calc(var(--size-icon) + var(--space-4));\n  background: var(--color-fill-1);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-page);\n}\n.ds-grid__cell--2 .ds-grid__icon {\n  background: var(--color-fill-2);\n}\n.ds-grid__cell--3 .ds-grid__icon {\n  background: var(--color-fill-3);\n}\n.ds-grid__cell--4 .ds-grid__icon {\n  background: var(--color-fill-4);\n}\n.ds-grid__title {\n  padding: 0 var(--space-1);\n  text-decoration: var(--link-decoration-quiet);\n}\n/* The icon that is selected: its label takes the selection colours. */\n.ds-grid__cell.is-current .ds-grid__title {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  outline: var(--focus-ring);\n}\n\n/* ---------- panel: a small window ---------- */\n.ds-panel {\n  display: flex;\n  flex-direction: column;\n}\n.ds-panel__title {\n  flex: none;\n}\n.ds-panel__body {\n  padding: var(--space-3) var(--space-2) var(--space-2);\n}\n.ds-panel__text {\n  margin: 0 0 var(--space-3);\n}\n.ds-meter {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  margin: var(--space-3) 0 0;\n  font-size: var(--text-small);\n}\n\n/* ---------- list: a list box of dated items ---------- */\n.ds-list {\n  margin: 0;\n  padding: calc(var(--border-width-strong) + var(--space-1));\n  list-style: none;\n  background: var(--color-surface);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-list__item {\n  padding: var(--space-2) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) var(--color-surface-alt);\n}\n.ds-list__meta {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-list__text {\n  display: block;\n}\n\n/* ---------- sidebar: the narrow window of topics ---------- */\n.ds-sidebar {\n  display: flex;\n  flex-direction: column;\n}\n.ds-sidebar__title {\n  margin: var(--space-4) var(--space-3) var(--space-2);\n  color: var(--color-heading-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n}\n.ds-sidebar__list {\n  margin: 0 var(--space-1) var(--space-2);\n  padding: calc(var(--border-width-strong) + var(--space-2));\n  list-style: none;\n  background: var(--color-surface);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-sidebar__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--space-1) 0;\n}\n\n/* ---------- search row ---------- */\n.ds-find {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-find__fill {\n  flex: 1;\n}\n\n/* ---------- footer: small print written on the desktop ---------- */\n.ds-footer {\n  width: var(--size-page);\n  margin: 0 auto;\n  padding: var(--space-6) 0 var(--space-5);\n  color: var(--color-bar-text);\n  font-size: var(--text-small);\n  text-align: center;\n}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: var(--space-5);\n  margin: 0 0 var(--space-2);\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__link {\n  color: inherit;\n  text-decoration: underline;\n}\n.ds-footer__legal {\n  margin: 0;\n}\n\n/* ---------- menu: a pull-down under a menu-bar entry (details), opened by a click ---------- */\n.ds-menu {\n  position: relative;\n}\n.ds-menu summary {\n  list-style: none;\n  cursor: default;\n}\n.ds-menu summary::-webkit-details-marker {\n  display: none;\n}\n.ds-menu details[open] > summary {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n.ds-menu__list {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 30;\n  box-sizing: border-box;\n  min-width: 100%;\n  margin: 0;\n  padding: var(--space-1);\n  list-style: none;\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-dialog);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  text-transform: none;\n  white-space: nowrap;\n}\n.ds-menu--up .ds-menu__list {\n  top: auto;\n  bottom: 100%;\n}\n.ds-menu__item {\n  display: block;\n  padding: var(--space-1) var(--space-5);\n  color: inherit;\n  text-decoration: none;\n}\n.ds-menu__item:hover,\n.ds-menu__item:focus {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n\n/* A task-bar key that opens a menu is as tall as the keys beside it. */\n.ds-nav__item > details {\n  display: flex;\n  flex: 1;\n  min-width: 0;\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: desktop grey company home page, 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<div class=\"ds-page__desk\">\n\n  <section class=\"ds-view ds-view--home\" id=\"home\">\n    <div class=\"ds-page__columns\">\n\n      <nav class=\"ds-grid\" data-component=\"grid\" aria-label=\"Desktop\">\n        <a class=\"ds-grid__cell is-current\" href=\"#products\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 4h12v10H2z M3 5v8h10V5z M6 4h4v4H6z M1 2h14v2H1z\"/></svg></span></span><span class=\"ds-grid__title\">Products</span></a>\n        <a class=\"ds-grid__cell ds-grid__cell--2\" href=\"#products\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 2h10l2 2v10H2z M4 3v4h7V3z M9 4h1v2H9z M4 9v4h8V9z M5 10h6v1H5z\"/></svg></span></span><span class=\"ds-grid__title\">Free Downloads</span></a>\n        <a class=\"ds-grid__cell ds-grid__cell--3\" href=\"#support\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M7 10h2v2H7z M5.4 6a2.6 2.6 0 1 1 4.2 2c-.5.5-.6.7-.6 1.4H7c0-1.2.3-1.7 1-2.3a.8.8 0 1 0-1.3-.6z\"/></svg></span></span><span class=\"ds-grid__title\">Support</span></a>\n        <a class=\"ds-grid__cell ds-grid__cell--4\" href=\"#order\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2.6 4L8 8.4 13.4 4z M2 5v7h12V5L8 9.8z\"/></svg></span></span><span class=\"ds-grid__title\">Order Form</span></a>\n        <a class=\"ds-grid__cell ds-grid__cell--3\" href=\"#support\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h7l3 3v11H3z M4 2v12h8V5H9V2z M5 7h6v1H5z M5 9h6v1H5z M5 11h4v1H5z\"/></svg></span></span><span class=\"ds-grid__title\">Read Me First</span></a>\n      </nav>\n\n      <div class=\"ds-page__main\">\n        <section class=\"ds-window\">\n          <h2 class=\"ds-window__title\">\n            <span class=\"ds-window__caption\">Welcome</span>\n            <span class=\"ds-window__controls\" aria-hidden=\"true\"><span class=\"ds-window__ctl ds-window__ctl--close\"></span></span>\n          </h2>\n          <div class=\"ds-hero\" data-component=\"hero\">\n            <div class=\"ds-hero__text\">\n              <h1 class=\"ds-hero__title\">Welcome to <span class=\"ds-hero__name\">chronoskin</span></h1>\n              <p class=\"ds-hero__lead\">Software for writing, sums and mail that starts in two seconds and fits on three floppy disks.</p>\n              <p class=\"ds-hero__tip\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M7 4h2v2H7z M7 7h2v5H7z\"/></svg></span><span><strong>Did you know...</strong><br>Every chronoskin program opens the files of the others. Drag a table from Ledger into a letter in Writer and it stays up to date.</span></p>\n            </div>\n            <div class=\"ds-hero__action\">\n              <a class=\"ds-button\" href=\"#products\">Download a Trial</a>\n              <a class=\"ds-button ds-button--secondary\" href=\"#products\">Product Catalogue</a>\n              <a class=\"ds-button ds-button--secondary\" href=\"#support\">Online Support</a>\n              <a class=\"ds-button ds-button--secondary\" href=\"#order\">Order by Post</a>\n            </div>\n            <div class=\"ds-hero__foot\">\n              <label class=\"ds-form__option\"><input class=\"ds-form__check\" type=\"checkbox\" checked>Show this Welcome window each time you visit</label>\n            </div>\n          </div>\n        </section>\n\n        <section class=\"ds-window\">\n          <h2 class=\"ds-window__title\">\n            <span class=\"ds-window__caption\">This Month at chronoskin</span>\n            <span class=\"ds-window__controls\" aria-hidden=\"true\"><span class=\"ds-window__ctl ds-window__ctl--min\"></span><span class=\"ds-window__ctl ds-window__ctl--max\"></span><span class=\"ds-window__ctl ds-window__ctl--close\"></span></span>\n          </h2>\n          <div class=\"ds-panel__body\">\n            <ul class=\"ds-stat\" data-component=\"stats\">\n              <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">5</span> <span class=\"ds-stat__label\">programs in the suite</span></li>\n              <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">11</span> <span class=\"ds-stat__label\">languages</span></li>\n              <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">86,400</span> <span class=\"ds-stat__label\">trial downloads</span></li>\n            </ul>\n            <p class=\"ds-meter\">Download server in use: <span class=\"ds-progress\"><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block ds-progress__block--empty\"></span><span class=\"ds-progress__block ds-progress__block--empty\"></span><span class=\"ds-progress__block ds-progress__block--empty\"></span><span class=\"ds-progress__block ds-progress__block--empty\"></span><span class=\"ds-progress__block ds-progress__block--empty\"></span><span class=\"ds-progress__block ds-progress__block--empty\"></span></span> 70%, about 4 minutes for a trial</p>\n          </div>\n        </section>\n      </div>\n\n      <div class=\"ds-page__side\">\n        <section class=\"ds-panel ds-window\" data-component=\"panel\">\n          <h2 class=\"ds-panel__title ds-window__title\">\n            <span class=\"ds-window__caption\">News</span>\n            <span class=\"ds-window__controls\" aria-hidden=\"true\"><span class=\"ds-window__ctl ds-window__ctl--min\"></span><span class=\"ds-window__ctl ds-window__ctl--close\"></span></span>\n          </h2>\n          <div class=\"ds-panel__body\">\n            <ul class=\"ds-list\" data-component=\"list\">\n              <li class=\"ds-list__item\"><span class=\"ds-list__meta\">9 March 1998</span> <a class=\"ds-link\" href=\"#products\">Writer 4.0 ships with a spelling checker for 11 languages</a></li>\n              <li class=\"ds-list__item\"><span class=\"ds-list__meta\">2 March 1998</span> <a class=\"ds-link\" href=\"#support\">Service release 2 for Ledger: what it fixes</a></li>\n              <li class=\"ds-list__item\"><span class=\"ds-list__meta\">20 February 1998</span> <a class=\"ds-link is-visited\" href=\"#products\">Mail 2.5 trial ready to download</a> <span class=\"ds-badge\">New</span></li>\n              <li class=\"ds-list__item\"><span class=\"ds-list__meta\">6 February 1998</span> <a class=\"ds-link\" href=\"#order\">Schools can now order by purchase order</a></li>\n            </ul>\n          </div>\n        </section>\n\n        <section class=\"ds-panel ds-window\">\n          <h2 class=\"ds-panel__title ds-window__title ds-window__title--inactive\">\n            <span class=\"ds-window__caption\">Year 2000 Readiness</span>\n            <span class=\"ds-window__controls\" aria-hidden=\"true\"><span class=\"ds-window__ctl ds-window__ctl--close\"></span></span>\n          </h2>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__text\">Every program sold since 1996 stores four-digit years. Owners of older copies can <a class=\"ds-link\" href=\"#support\">fetch a free update</a>.</p>\n            <div class=\"ds-buttons\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#support\">Details...</a>\n            </div>\n          </div>\n        </section>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"products\">\n    <section class=\"ds-window\">\n      <h2 class=\"ds-window__title\">\n        <span class=\"ds-icon ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 4h12v10H2z M3 5v8h10V5z M6 4h4v4H6z M1 2h14v2H1z\"/></svg></span>\n        <span class=\"ds-window__caption\">Products</span>\n        <span class=\"ds-window__controls\" aria-hidden=\"true\"><span class=\"ds-window__ctl ds-window__ctl--min\"></span><span class=\"ds-window__ctl ds-window__ctl--max\"></span><span class=\"ds-window__ctl ds-window__ctl--close\"></span></span>\n      </h2>\n      <div class=\"ds-page__inner\">\n        <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Desktop</a></li>\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#products\">Products</a></li>\n          <li class=\"ds-breadcrumb__item is-current\">Home and Office</li>\n        </ol>\n        <header class=\"ds-page-header\" data-component=\"page-header\">\n          <span class=\"ds-icon ds-icon--large\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 4h12v10H2z M3 5v8h10V5z M6 4h4v4H6z M1 2h14v2H1z\"/></svg></span>\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">Product Catalogue</h1>\n            <p class=\"ds-page-header__lead\">Five programs that share one file format. Try any of them free for 30 days.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#order\">Order Now</a>\n          </div>\n        </header>\n\n        <div>\n          <ul class=\"ds-tabs\" data-component=\"tabs\">\n            <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab is-current\" href=\"#products\">Home and Office</a></li>\n            <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#products\">Schools</a></li>\n            <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#products\">Developers</a></li>\n            <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#products\">Updates</a></li>\n          </ul>\n          <div class=\"ds-sheet ds-stack\">\n            <table class=\"ds-table\" data-component=\"table\">\n              <caption class=\"ds-table__caption\">Prices in dollars, per copy, with printed manual. Site licences start at 10 copies.</caption>\n              <thead>\n                <tr>\n                  <th class=\"ds-table__head\" scope=\"col\">Program</th>\n                  <th class=\"ds-table__head\" scope=\"col\">What it does</th>\n                  <th class=\"ds-table__head\" scope=\"col\">Version</th>\n                  <th class=\"ds-table__head\" scope=\"col\">Status</th>\n                  <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Disks</th>\n                  <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Price</th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr class=\"ds-table__row is-selected\">\n                  <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 2h14v12H1z M2 5v8h12V5z M3 6h5v3H3z M9 6h4v1H9z M9 8h4v1H9z M3 10h10v2H3z\"/></svg></span> <a class=\"ds-link ds-link--strong\" href=\"#order\">Writer</a></td>\n                  <td class=\"ds-table__cell\">Letters, reports and mail merge</td>\n                  <td class=\"ds-table__cell\">4.0</td>\n                  <td class=\"ds-table__cell\">Shipping</td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">3</td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">49.00</td>\n                </tr>\n                <tr class=\"ds-table__row\">\n                  <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 2h14v12H1z M2 5v8h12V5z M3 6h5v3H3z M9 6h4v1H9z M9 8h4v1H9z M3 10h10v2H3z\"/></svg></span> <a class=\"ds-link ds-link--strong\" href=\"#order\">Ledger</a></td>\n                  <td class=\"ds-table__cell\">Spreadsheets and charts</td>\n                  <td class=\"ds-table__cell\">3.2</td>\n                  <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">Shipping</span></td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">2</td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">59.00</td>\n                </tr>\n                <tr class=\"ds-table__row\">\n                  <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 2h14v12H1z M2 5v8h12V5z M3 6h5v3H3z M9 6h4v1H9z M9 8h4v1H9z M3 10h10v2H3z\"/></svg></span> <a class=\"ds-link ds-link--strong\" href=\"#order\">Mail</a></td>\n                  <td class=\"ds-table__cell\">Electronic mail and an address book</td>\n                  <td class=\"ds-table__cell\">2.5 beta</td>\n                  <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">Trial only</span></td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">1</td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">29.00</td>\n                </tr>\n                <tr class=\"ds-table__row\">\n                  <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 2h14v12H1z M2 5v8h12V5z M3 6h5v3H3z M9 6h4v1H9z M9 8h4v1H9z M3 10h10v2H3z\"/></svg></span> <a class=\"ds-link ds-link--strong\" href=\"#order\">Draw</a></td>\n                  <td class=\"ds-table__cell\">Diagrams, posters and clip art</td>\n                  <td class=\"ds-table__cell\">1.1</td>\n                  <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">Shipping</span></td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">4</td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">39.00</td>\n                </tr>\n                <tr class=\"ds-table__row\">\n                  <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 2h14v12H1z M2 5v8h12V5z M3 6h5v3H3z M9 6h4v1H9z M9 8h4v1H9z M3 10h10v2H3z\"/></svg></span> <a class=\"ds-link ds-link--strong is-visited\" href=\"#order\">Planner</a></td>\n                  <td class=\"ds-table__cell\">Diary and to-do lists</td>\n                  <td class=\"ds-table__cell\">1.0</td>\n                  <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">Withdrawn</span></td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">1</td>\n                  <td class=\"ds-table__cell ds-table__cell--num\">19.00</td>\n                </tr>\n                <tr class=\"ds-table__row\">\n                  <td class=\"ds-table__cell ds-table__cell--group\" colspan=\"5\">The Suite: all five on one compact disc</td>\n                  <td class=\"ds-table__cell ds-table__cell--group ds-table__cell--num\">129.00</td>\n                </tr>\n              </tbody>\n            </table>\n            <div class=\"ds-find\">\n              <span class=\"ds-badges\" data-component=\"badge\">Key: <span class=\"ds-badge\">New</span> <span class=\"ds-badge ds-badge--success\">Shipping</span> <span class=\"ds-badge ds-badge--warning\">Trial only</span> <span class=\"ds-badge ds-badge--danger\">Withdrawn</span></span>\n              <span class=\"ds-find__fill\"></span>\n              <ol class=\"ds-pagination\" data-component=\"pagination\">\n                <li><a class=\"ds-pagination__link is-disabled\" href=\"#products\">&lt; Previous</a></li>\n                <li><a class=\"ds-pagination__link is-current\" href=\"#products\">1</a></li>\n                <li><a class=\"ds-pagination__link\" href=\"#products\">2</a></li>\n                <li><a class=\"ds-pagination__link\" href=\"#products\">3</a></li>\n                <li><a class=\"ds-pagination__link\" href=\"#products\">Next &gt;</a></li>\n              </ol>\n            </div>\n          </div>\n        </div>\n\n        <div class=\"ds-split\">\n          <fieldset class=\"ds-group\">\n            <legend class=\"ds-group__title\">Writer 4.0 needs</legend>\n            <dl class=\"ds-props\">\n              <dt class=\"ds-props__label\">Processor:</dt>\n              <dd class=\"ds-props__value\">486 or better</dd>\n              <dt class=\"ds-props__label\">Memory:</dt>\n              <dd class=\"ds-props__value\">8 MB (16 MB for mail merge)</dd>\n              <dt class=\"ds-props__label\">Disk space:</dt>\n              <dd class=\"ds-props__value\">6 MB</dd>\n            </dl>\n          </fieldset>\n          <fieldset class=\"ds-group\">\n            <legend class=\"ds-group__title\">Try before you buy</legend>\n            <p class=\"ds-panel__text\">The trial is the whole program. It stops saving after 30 days and starts again the moment you type in a serial number.</p>\n            <div class=\"ds-buttons\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#products\">Download Trial (2.8 MB)</a>\n            </div>\n          </fieldset>\n        </div>\n      </div>\n    </section>\n  </section>\n\n  <section class=\"ds-view\" id=\"support\">\n    <div class=\"ds-page__pair\">\n\n      <div class=\"ds-page__side\">\n      <aside class=\"ds-sidebar ds-window\" data-component=\"sidebar\">\n        <h2 class=\"ds-window__title\">\n          <span class=\"ds-window__caption\">Topics</span>\n          <span class=\"ds-window__controls\" aria-hidden=\"true\"><span class=\"ds-window__ctl ds-window__ctl--close\"></span></span>\n        </h2>\n        <h3 class=\"ds-sidebar__title\">Support by program</h3>\n        <ul class=\"ds-sidebar__list\">\n          <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h10v14H3z M5 2v12h7V2z M6 4h5v1H6z M6 6h5v1H6z\"/></svg></span><a class=\"ds-link\" href=\"#support\">Writer</a> <span class=\"ds-badge ds-badge--count\">(48)</span></li>\n          <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h10v14H3z M5 2v12h7V2z M6 4h5v1H6z M6 6h5v1H6z\"/></svg></span><a class=\"ds-link\" href=\"#support\">Ledger</a> <span class=\"ds-badge ds-badge--count\">(31)</span></li>\n          <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h10v14H3z M5 2v12h7V2z M6 4h5v1H6z M6 6h5v1H6z\"/></svg></span><a class=\"ds-link\" href=\"#support\">Mail</a> <span class=\"ds-badge ds-badge--count\">(27)</span></li>\n          <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h10v14H3z M5 2v12h7V2z M6 4h5v1H6z M6 6h5v1H6z\"/></svg></span><a class=\"ds-link is-visited\" href=\"#support\">Draw</a> <span class=\"ds-badge ds-badge--count\">(12)</span></li>\n        </ul>\n        <h3 class=\"ds-sidebar__title\">Do it yourself</h3>\n        <ul class=\"ds-sidebar__list\">\n          <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 2h10l2 2v10H2z M4 3v4h7V3z M9 4h1v2H9z M4 9v4h8V9z M5 10h6v1H5z\"/></svg></span><a class=\"ds-link\" href=\"#products\">Updates and patches</a></li>\n          <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h7l3 3v11H3z M4 2v12h8V5H9V2z M5 7h6v1H5z M5 9h6v1H5z M5 11h4v1H5z\"/></svg></span><a class=\"ds-link\" href=\"#support\">Printed manuals</a></li>\n          <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M6 1a5 5 0 1 0 0 10a5 5 0 0 0 0-10z M6 3a3 3 0 1 1 0 6a3 3 0 0 1 0-6z M9.6 8.2l5 5-1.4 1.4-5-5z\"/></svg></span><a class=\"ds-link\" href=\"#support\">Lost serial number</a></li>\n          <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2.6 4L8 8.4 13.4 4z M2 5v7h12V5L8 9.8z\"/></svg></span><a class=\"ds-link\" href=\"#order\">Write to us</a></li>\n        </ul>\n        <h3 class=\"ds-sidebar__title\">Telephone</h3>\n        <ul class=\"ds-sidebar__list\">\n          <li class=\"ds-sidebar__item\">Weekdays, 9 to 5</li>\n          <li class=\"ds-sidebar__item\">Free for 90 days after you register</li>\n        </ul>\n      </aside>\n      <section class=\"ds-panel ds-window\">\n        <h2 class=\"ds-panel__title ds-window__title ds-window__title--inactive\">\n          <span class=\"ds-window__caption\">My Questions</span>\n          <span class=\"ds-window__controls\" aria-hidden=\"true\"><span class=\"ds-window__ctl ds-window__ctl--close\"></span></span>\n        </h2>\n        <div class=\"ds-panel__body\">\n          <div class=\"ds-empty\" data-component=\"empty\">\n            <h3 class=\"ds-empty__title\">You have no open questions.</h3>\n            <p class=\"ds-empty__text\">Answers we send you stay here for 60 days.</p>\n            <a class=\"ds-button ds-button--secondary\" href=\"#order\">Ask a Question...</a>\n          </div>\n        </div>\n      </section>\n      </div>\n\n      <section class=\"ds-window\">\n        <h2 class=\"ds-window__title\">\n          <span class=\"ds-icon ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M7 10h2v2H7z M5.4 6a2.6 2.6 0 1 1 4.2 2c-.5.5-.6.7-.6 1.4H7c0-1.2.3-1.7 1-2.3a.8.8 0 1 0-1.3-.6z\"/></svg></span>\n          <span class=\"ds-window__caption\">Support - Knowledge Base</span>\n          <span class=\"ds-window__controls\" aria-hidden=\"true\"><span class=\"ds-window__ctl ds-window__ctl--min\"></span><span class=\"ds-window__ctl ds-window__ctl--max\"></span><span class=\"ds-window__ctl ds-window__ctl--close\"></span></span>\n        </h2>\n        <div class=\"ds-page__inner\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Desktop</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#support\">Support</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Article Q1042</li>\n          </ol>\n          <header class=\"ds-page-header\">\n            <span class=\"ds-icon ds-icon--large\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M7 10h2v2H7z M5.4 6a2.6 2.6 0 1 1 4.2 2c-.5.5-.6.7-.6 1.4H7c0-1.2.3-1.7 1-2.3a.8.8 0 1 0-1.3-.6z\"/></svg></span>\n            <div class=\"ds-page-header__text\">\n              <h1 class=\"ds-page-header__title\">Knowledge Base</h1>\n              <p class=\"ds-page-header__lead\">118 articles written by the people who answer the telephone.</p>\n            </div>\n            <div class=\"ds-page-header__action\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#order\">Ask a Question</a>\n            </div>\n          </header>\n\n          <div class=\"ds-notices\" data-component=\"notice\">\n            <p class=\"ds-notice\"><span class=\"ds-notice__label\">Service release 2 for Ledger is ready.</span> It corrects the rounding of totals in columns longer than 4,000 rows.</p>\n            <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__label\">The update server is not answering.</span> Downloads of patches may fail until this evening. Articles are not affected.</p>\n          </div>\n\n          <form class=\"ds-find\" action=\"#support\">\n            <label for=\"k-find\">Search articles for:</label>\n            <input class=\"ds-form__input\" id=\"k-find\" type=\"text\" value=\"mail merge envelopes\">\n            <a class=\"ds-button\" href=\"#support\">Search</a>\n          </form>\n\n          <article class=\"ds-well ds-prose\" data-component=\"typography\">\n            <h1>Q1042: Mail merge prints one blank envelope after every letter</h1>\n            <p class=\"ds-prose__lead\">Applies to Writer 3.0 and later.</p>\n            <p>When a merge ends with a <strong>page break</strong>, the printer is sent one more empty page for every record. On most printers that page is fed from the envelope tray.</p>\n            <h2>To stop it</h2>\n            <ol>\n              <li>Open the letter and go to the last line.</li>\n              <li>Choose Reveal Marks from the View menu and delete the final break.</li>\n              <li>Save the letter and run the merge again.</li>\n            </ol>\n            <p>If you start merges from a batch file, add the switch <code>/nobreak</code> instead, as in <code>writer /merge list.dat /nobreak</code>.</p>\n            <h3>See also</h3>\n            <p class=\"ds-links\" data-component=\"links\">\n              <a class=\"ds-link\" href=\"#support\">Q1017: Labels print one row too low</a>,\n              <a class=\"ds-link is-visited\" href=\"#support\">Q0988: an article you have read</a>,\n              <a class=\"ds-link is-hover\" href=\"#support\">a link under the pointer</a>,\n              <a class=\"ds-link is-active\" href=\"#support\">a link as you click it</a> and\n              <a class=\"ds-link ds-link--quiet\" href=\"#products\">the Writer product page</a>.\n            </p>\n          </article>\n\n        </div>\n      </section>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"order\">\n    <section class=\"ds-window\">\n      <h2 class=\"ds-window__title\">\n        <span class=\"ds-icon ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2.6 4L8 8.4 13.4 4z M2 5v7h12V5L8 9.8z\"/></svg></span>\n        <span class=\"ds-window__caption\">Order Form</span>\n        <span class=\"ds-window__controls\" aria-hidden=\"true\"><span class=\"ds-window__ctl ds-window__ctl--min\"></span><span class=\"ds-window__ctl ds-window__ctl--max\"></span><span class=\"ds-window__ctl ds-window__ctl--close\"></span></span>\n      </h2>\n      <div class=\"ds-page__inner\">\n        <ol class=\"ds-breadcrumb\">\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Desktop</a></li>\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#products\">Products</a></li>\n          <li class=\"ds-breadcrumb__item is-current\">Order Form</li>\n        </ol>\n        <header class=\"ds-page-header\">\n          <span class=\"ds-icon ds-icon--large\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2.6 4L8 8.4 13.4 4z M2 5v7h12V5L8 9.8z\"/></svg></span>\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">Order Form</h1>\n            <p class=\"ds-page-header__lead\">Fill this in, print it and post it with a cheque, or send it to us over the wire.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button ds-button--secondary\" href=\"#products\">Back to Products</a>\n          </div>\n        </header>\n\n        <div class=\"ds-split\">\n          <div class=\"ds-stack\">\n            <fieldset class=\"ds-group\">\n              <legend class=\"ds-group__title\">Your basket</legend>\n              <table class=\"ds-table\">\n                <thead>\n                  <tr>\n                    <th class=\"ds-table__head\" scope=\"col\">Program</th>\n                    <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Copies</th>\n                    <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Price</th>\n                  </tr>\n                </thead>\n                <tbody>\n                  <tr class=\"ds-table__row\">\n                    <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 2h14v12H1z M2 5v8h12V5z M3 6h5v3H3z M9 6h4v1H9z M9 8h4v1H9z M3 10h10v2H3z\"/></svg></span> Writer 4.0</td>\n                    <td class=\"ds-table__cell ds-table__cell--num\">2</td>\n                    <td class=\"ds-table__cell ds-table__cell--num\">98.00</td>\n                  </tr>\n                  <tr class=\"ds-table__row\">\n                    <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 2h14v12H1z M2 5v8h12V5z M3 6h5v3H3z M9 6h4v1H9z M9 8h4v1H9z M3 10h10v2H3z\"/></svg></span> Ledger 3.2</td>\n                    <td class=\"ds-table__cell ds-table__cell--num\">1</td>\n                    <td class=\"ds-table__cell ds-table__cell--num\">59.00</td>\n                  </tr>\n                  <tr class=\"ds-table__row\">\n                    <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h7l3 3v11H3z M4 2v12h8V5H9V2z M5 7h6v1H5z M5 9h6v1H5z M5 11h4v1H5z\"/></svg></span> Printed manual, Ledger</td>\n                    <td class=\"ds-table__cell ds-table__cell--num\">1</td>\n                    <td class=\"ds-table__cell ds-table__cell--num\">12.00</td>\n                  </tr>\n                  <tr class=\"ds-table__row\">\n                    <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 4h12v10H2z M3 5v8h10V5z M6 4h4v4H6z M1 2h14v2H1z\"/></svg></span> Post and packing</td>\n                    <td class=\"ds-table__cell ds-table__cell--num\"></td>\n                    <td class=\"ds-table__cell ds-table__cell--num\">6.50</td>\n                  </tr>\n                  <tr class=\"ds-table__row\">\n                    <td class=\"ds-table__cell ds-table__cell--group\" colspan=\"2\">Total</td>\n                    <td class=\"ds-table__cell ds-table__cell--group ds-table__cell--num\">175.50</td>\n                  </tr>\n                </tbody>\n              </table>\n            </fieldset>\n\n            <section class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n              <h2 class=\"ds-dialog__title\" id=\"d-title\">Empty Basket <span class=\"ds-window__ctl ds-window__ctl--close\" aria-hidden=\"true\"></span></h2>\n              <div class=\"ds-dialog__content\">\n                <span class=\"ds-icon ds-icon--large\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1l7.5 14H.5z M7.2 6h1.6l-.3 5h-1z M7.2 12h1.6v1.6H7.2z\"/></svg></span>\n                <p class=\"ds-dialog__body\">Are you sure you want to remove all 4 items from your basket? The form you have filled in is kept.</p>\n              </div>\n              <div class=\"ds-dialog__actions\">\n                <a class=\"ds-button ds-button--danger\" href=\"#order\">Yes, Empty It</a>\n                <a class=\"ds-button\" href=\"#order\">No</a>\n              </div>\n            </section>\n          </div>\n\n          <fieldset class=\"ds-group\">\n            <legend class=\"ds-group__title\">Send it to</legend>\n            <form class=\"ds-form\" data-component=\"form\" action=\"#order\">\n              <label class=\"ds-form__label\" for=\"o-name\">Name:</label>\n              <div class=\"ds-form__field\">\n                <input class=\"ds-form__input ds-form__input--wide\" id=\"o-name\" type=\"text\" value=\"R. Halloran\">\n              </div>\n              <label class=\"ds-form__label\" for=\"o-mail\">E-mail address:</label>\n              <div class=\"ds-form__field\">\n                <input class=\"ds-form__input ds-form__input--wide\" id=\"o-mail\" type=\"text\" value=\"halloran@example\">\n                <span class=\"ds-form__error\">An address needs a part after the dot, such as .net or .org.</span>\n              </div>\n              <label class=\"ds-form__label\" for=\"o-country\">Country:</label>\n              <div class=\"ds-form__field\">\n                <select class=\"ds-form__select\" id=\"o-country\">\n                  <option>Ireland</option>\n                  <option>Canada</option>\n                  <option>New Zealand</option>\n                </select>\n              </div>\n              <label class=\"ds-form__label\" for=\"o-disk\">Send on:</label>\n              <div class=\"ds-form__field\">\n                <select class=\"ds-form__select\" id=\"o-disk\">\n                  <option>3.5 inch floppy disks</option>\n                  <option>Compact disc</option>\n                </select>\n                <span class=\"ds-form__hint\">discs add 2.00</span>\n              </div>\n              <span class=\"ds-form__label\">Extras:</span>\n              <div class=\"ds-form__field\">\n                <label class=\"ds-form__option\"><input class=\"ds-form__check\" type=\"checkbox\" checked>Register me for 90 days of telephone support</label>\n                <label class=\"ds-form__option\"><input class=\"ds-form__check\" type=\"checkbox\">Post me the printed catalogue</label>\n              </div>\n              <label class=\"ds-form__label\" for=\"o-note\">Delivery notes:</label>\n              <div class=\"ds-form__field\">\n                <textarea class=\"ds-form__textarea\" id=\"o-note\" rows=\"4\">Leave with the porter if the office is closed.</textarea>\n              </div>\n            </form>\n          </fieldset>\n        </div>\n\n        <hr class=\"ds-rule\">\n        <div class=\"ds-buttons\" data-component=\"buttons\">\n          <button class=\"ds-button ds-button--danger\" type=\"button\">Empty Basket...</button>\n          <span class=\"ds-find__fill\"></span>\n          <button class=\"ds-button\" type=\"button\">Send Order</button>\n          <button class=\"ds-button ds-button--secondary\" type=\"button\">Print...</button>\n          <button class=\"ds-button\" type=\"button\" disabled>Pay by Card</button>\n          <a class=\"ds-button ds-button--secondary\" href=\"#home\">Cancel</a>\n        </div>\n      </div>\n    </section>\n  </section>\n\n</div>\n\n<footer class=\"ds-footer\" data-component=\"footer\">\n  <ul class=\"ds-footer__links\">\n    <li><a class=\"ds-footer__link\" href=\"#products\">Products</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#support\">Support</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#order\">Order Form</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#support\">Jobs</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#products\">Press Room</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#support\">Write to the Webmaster</a></li>\n  </ul>\n  <p class=\"ds-footer__legal\">Copyright 1998 chronoskin. Best viewed at 800 by 600 in 256 colours.</p>\n</footer>\n\n<header class=\"ds-nav\" data-component=\"nav\">\n  <a class=\"ds-brand\" data-component=\"brand\" href=\"#home\">\n    <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><rect x=\"4\" y=\"3\" width=\"16\" height=\"2\"/><rect x=\"6\" y=\"5\" width=\"12\" height=\"2\"/><rect x=\"8\" y=\"7\" width=\"8\" height=\"2\"/><rect x=\"10\" y=\"9\" width=\"4\" height=\"2\"/><rect x=\"11\" y=\"11\" width=\"2\" height=\"2\"/><rect x=\"10\" y=\"13\" width=\"4\" height=\"2\"/><rect x=\"8\" y=\"15\" width=\"8\" height=\"2\"/><rect x=\"6\" y=\"17\" width=\"12\" height=\"2\"/><rect x=\"4\" y=\"19\" width=\"16\" height=\"2\"/></svg></span>\n    <span class=\"ds-brand__name\">chronoskin</span>\n  </a>\n  <ul class=\"ds-nav__links\">\n    <li class=\"ds-nav__item ds-menu ds-menu--up\"><details><summary class=\"ds-nav__link\">Programs</summary><ul class=\"ds-menu__list\"><li><a class=\"ds-menu__item\" href=\"#home\">Welcome</a></li><li><a class=\"ds-menu__item\" href=\"#products\">Products</a></li><li><a class=\"ds-menu__item\" href=\"#support\">Support</a></li><li><a class=\"ds-menu__item\" href=\"#order\">Order Form</a></li></ul></details></li>\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#home\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 2h12v9H2z M3 3v7h10V3z M5 12h6v1h2v1H3v-1h2z\"/></svg></span>Welcome</a></li>\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#products\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 4h12v10H2z M3 5v8h10V5z M6 4h4v4H6z M1 2h14v2H1z\"/></svg></span>Products</a></li>\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#support\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M7 10h2v2H7z M5.4 6a2.6 2.6 0 1 1 4.2 2c-.5.5-.6.7-.6 1.4H7c0-1.2.3-1.7 1-2.3a.8.8 0 1 0-1.3-.6z\"/></svg></span>Support</a></li>\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#order\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2.6 4L8 8.4 13.4 4z M2 5v7h12V5L8 9.8z\"/></svg></span>Order Form</a></li>\n  </ul>\n  <span class=\"ds-nav__tray\"><span class=\"ds-icon ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M8 2.2a5.8 5.8 0 0 1 2 .4L9 5H6L5 3.2A5.8 5.8 0 0 1 8 2.2z M2.3 7l2.2-.6L7 8l-1 3 1.5 2.7A5.8 5.8 0 0 1 2.3 7z M13.7 7.5a5.8 5.8 0 0 1-3 5.5L10 10l1.2-2.5z\"/></svg></span> 4:52 PM</span>\n</header>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.windows-9x.landing.s02.p01.t08.u08\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"windows-9x\",\n    \"years\": [\n      1995,\n      2001\n    ]\n  },\n  \"archetype\": \"landing\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 800,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-w9-2188\",\n  \"short\": \"v1-w9-2188\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #008080;\n  --color-canvas: #c0c0c0;\n  --color-surface: #ffffff;\n  --color-surface-alt: #e8e8e8;\n  --color-surface-strong: #d0d0d0;\n  --color-bar: #000080;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #c0c0c0;\n  --color-bar-alt-text: #000000;\n  --color-inverse: #808080;\n  --color-inverse-text: #ffffff;\n  --color-text: #000000;\n  --color-text-muted: #505050;\n  --color-heading: #000000;\n  --color-heading-alt: #000080;\n  --color-link: #000080;\n  --color-link-quiet: #000000;\n  --color-link-visited: #800080;\n  --color-link-hover: #0000f0;\n  --color-link-active: #d00000;\n  --color-border: #808080;\n  --color-border-strong: #000000;\n  --color-border-muted: #dfdfdf;\n  --color-accent: #000080;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #d00000;\n  --color-fill-1: #ffffd0;\n  --color-fill-2: #98d0d0;\n  --color-fill-3: #98d0ff;\n  --color-fill-4: #ffd098;\n  --color-button: #c0c0c0;\n  --color-button-text: #000000;\n  --color-button-hover-text: #000000;\n  --color-button-secondary: #c0c0c0;\n  --color-button-secondary-text: #000000;\n  --color-input: #ffffff;\n  --color-input-text: #000000;\n  --color-input-border: #808080;\n  --color-disabled: #c0c0c0;\n  --color-disabled-text: #808080;\n  --color-danger: #a00000;\n  --color-danger-surface: #fff8e8;\n  --color-success: #006830;\n  --color-warning: #986800;\n  --color-notice: #ffffd0;\n  --color-notice-text: #000000;\n  --color-focus: #000000;\n  --color-shadow: #000000;\n  --color-overlay: rgba(0, 0, 0, 0.4);\n}\n\n/* @part type */\n:root {\n  --font-body: \"Arial Narrow\", \"Helvetica Neue Condensed\", \"Nimbus Sans Narrow\", Arial, sans-serif;\n  --font-heading: Impact, Haettenschweiler, \"Arial Narrow Bold\", sans-serif;\n  --font-ui: \"Arial Narrow\", \"Helvetica Neue Condensed\", \"Nimbus Sans Narrow\", Arial, sans-serif;\n  --font-mono: \"OCR A Std\", \"Lucida Console\", \"Courier New\", monospace;\n  --text-base: 13px;\n  --text-small: 11px;\n  --text-ui: 13px;\n  --text-large: 15px;\n  --text-display: 32px;\n  --text-h1: 22px;\n  --text-h2: 16px;\n  --text-h3: 13px;\n  --line-body: 1.3;\n  --line-heading: 1.1;\n  --line-display: 1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 400;\n  --weight-display: 400;\n  --weight-ui: 700;\n  --heading-transform: uppercase;\n  --heading-tracking: 0.5px;\n  --display-tracking: 1px;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: none;\n  --link-decoration-quiet: none;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 3px;\n  --border-style: solid;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: inset 0 0 0 1px var(--color-border-strong), inset 0 2px 0 0 color-mix(in srgb, var(--color-border-muted) 70%, white), inset 0 -3px 0 0 color-mix(in srgb, var(--color-shadow) 30%, transparent), 4px 4px 0 0 color-mix(in srgb, var(--color-shadow) 50%, transparent);\n  --shadow-control: inset 0 0 0 1px var(--color-border-strong), inset 0 2px 0 0 color-mix(in srgb, var(--color-border-muted) 70%, white), inset 0 -3px 0 0 color-mix(in srgb, var(--color-shadow) 30%, transparent);\n  --shadow-control-hover: inset 0 0 0 1px var(--color-border-strong), inset 0 2px 0 0 var(--color-accent), inset 0 -3px 0 0 color-mix(in srgb, var(--color-shadow) 30%, transparent);\n  --shadow-control-pressed: inset 0 0 0 1px var(--color-border-strong), inset 0 3px 0 0 color-mix(in srgb, var(--color-shadow) 35%, transparent), inset 0 -2px 0 0 color-mix(in srgb, var(--color-border-muted) 45%, transparent);\n  --shadow-dialog: inset 0 0 0 1px var(--color-border-strong), inset 0 0 0 3px var(--color-accent), 6px 6px 0 0 color-mix(in srgb, var(--color-shadow) 50%, transparent);\n  --shadow-text: none;\n  --fill-page: linear-gradient(color-mix(in srgb, var(--color-page), white 10%) 1px, transparent 1px) 0 0 / 16px 16px, linear-gradient(90deg, color-mix(in srgb, var(--color-page), white 10%) 1px, transparent 1px) 0 0 / 16px 16px, var(--color-page);\n  --fill-bar: linear-gradient(180deg, color-mix(in srgb, var(--color-bar), white 32%), var(--color-bar) 48%, color-mix(in srgb, var(--color-bar), black 28%));\n  --fill-bar-alt: linear-gradient(180deg, color-mix(in srgb, var(--color-bar-alt), white 12%), color-mix(in srgb, var(--color-bar-alt), black 12%));\n  --fill-inverse: repeating-linear-gradient(0deg, var(--color-inverse) 0 2px, color-mix(in srgb, var(--color-inverse), black 7%) 2px 3px);\n  --fill-accent: linear-gradient(180deg, color-mix(in srgb, var(--color-accent), white 35%), var(--color-accent) 60%);\n  --fill-panel: var(--color-canvas);\n  --fill-button: linear-gradient(180deg, color-mix(in srgb, var(--color-button), white 18%), var(--color-button) 50%, color-mix(in srgb, var(--color-button), black 16%));\n  --fill-button-hover: linear-gradient(180deg, color-mix(in srgb, var(--color-button), white 32%), color-mix(in srgb, var(--color-button), white 8%));\n  --fill-button-secondary: linear-gradient(180deg, color-mix(in srgb, var(--color-button-secondary), white 18%), var(--color-button-secondary) 50%, color-mix(in srgb, var(--color-button-secondary), black 16%));\n  --fill-input: var(--color-input);\n  --focus-ring: 1px solid var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
