{
  "id": "v1-w9-2811",
  "long_id": "v1.windows-9x.landing.s02.p08.t01.u01",
  "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-2811",
  "preview_url": "https://chrono.skin/s/v1-w9-2811/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- One family: `--font-body`, `--font-heading` and `--font-ui` are the same pixel-sized system sans (MS Sans Serif, then Tahoma, Geneva, Verdana); `--font-mono` (Courier New) is for code. The references set their text in Arial and Verdana at 10px to 13px; the stack here is the desktop's own face, which the era's pages borrowed with the chrome.\n- Sizes: `--text-base` and `--text-ui` 11px for everything; `--text-small` 10px for captions, counts and dates; `--text-large` 13px for a lead line; `--text-h2` 13px and `--text-h3` 11px bold for headings; `--text-h1` 16px for a page title and a read-out; `--text-display` 22px for the hero title only. Line height 1.35 in text, 1.2 in keys and bars. Bold is 700; keys are regular weight. No transform and no tracking.\n- Colour: silver `--color-canvas` windows on a teal `--color-page`, white wells, navy title bar (the one gradient, navy to a lighter blue, in `--fill-bar`), navy selection, navy links with purple visited and red active, black text. Block colours are the pale yellow, teal, light blue and peach of the era's pages. Status colours are dark green, amber brown and dark red, all legible on white.\n- The era's rule for which text sits on which fill, the same in every layout of the era and to be kept by every token set:\n  - The desktop (`--fill-page` over `--color-page`) is always dark enough to carry `--color-bar-text`. Text written straight on the desktop (icon labels, small print) uses `--color-bar-text`.\n  - The window face is `--color-canvas`; raised parts inside a window (sheets, notes, dialogs) are `--fill-panel`. Both carry `--color-text`, `--color-text-muted`, `--color-heading`, `--color-heading-alt` and the link colours.\n  - A sunken well (list view, tree, document, read-out, empty list) is `--color-surface` and carries the same text and link tokens as the window face, so every palette keeps text and links legible on both. `--color-surface-alt` is the alternate row and the fill of inline code and of a pressed toolbar key; `--color-surface-strong` is a group or total row. They carry `--color-text`.\n  - A title bar is `--fill-bar` with `--color-bar-text`; the title bar of a window without the focus is `--fill-inverse` with `--color-inverse-text`.\n  - Menu bar, toolbar and column heads are `--fill-bar-alt` with `--color-bar-alt-text`.\n  - The selection (current tree row, selected table row, open menu, selected list-box row, 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` (`--color-button-hover-text` under the pointer); the lesser key is `--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 and the path field are `--fill-input` with `--color-input-text`; links inside the path field use the link tokens, so a palette keeps `--color-input` close to `--color-surface`. `--color-input-border` outlines the check box.\n  - `--color-fill-1` to `--color-fill-4` carry `--color-text` (icons drawn on them) and, in the help layout, `--color-link`.\n  - 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`, so each status colour must read on the well colour; none of them is used as a fill under text.\n  - Icons are inline SVG painted with `currentColor`: `--color-heading-alt` by default, the surrounding text colour on keys, title bars, block colours and selections.\n- Edges, the same in every layout of the era. 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`: the raised frame of a window. `--shadow-dialog`: the frame of a dialog.\n  - `--shadow-control`: every raised key: buttons, toolbar keys, caption buttons, column heads, tabs and their sheet, pagination keys, the brand tile.\n  - `--shadow-control-pressed`: everything sunken: fields, the path field, wells, read-outs, status cells, the check box, the progress bar, a pressed key, the current pagination key. Note that fields take the pressed token, not `--shadow-control`.\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: group boxes, the etched rule (`--color-border` over `--color-border-muted`), toolbar separators, table row lines (`--color-surface-alt`), the frame of notices, badges and the default button (`--color-border-strong`).\n  - `--color-border`, `--color-border-strong` and `--color-border-muted` are the three shades the edge tokens are built from: the mid shadow, the darkest outer line and the light edge. A palette sets them as a bevel set for its window face.\n- Not expressible by a token and written literally in `components.css`: the `dotted` guide lines of the tree (and of topic lists), the `solid` strokes of the caption-button glyphs, and `clip-path` on the current tab, which cuts off its lower edge so that it joins the sheet.\n- All radii are 0 and are still applied through `--radius-control`, `--radius-panel`, `--radius-pill` and `--radius-page`. `--shadow-text` is applied to title bars and buttons. `--transition` is `none`; `--backdrop-blur` is `0px` and nothing is translucent.\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 >= 10px`: captions are 10px, nothing smaller.\n- `font-size <= 22px`: the hero title is the largest text; page titles stop at 16px.\n- `font-weight >= 400`: only regular and bold.\n- `font-families <= 2`: the system sans and a monospace face.\n- `letter-spacing = 0`: no tracking.\n- `uppercase-text <= 0%`: no text-transform.\n- `border-radius <= 0px`: the desktop had no rounded corner.\n- `box-shadow-blur <= 0px`: every shadow is a hard 1px or 2px bevel line; nothing is blurred.\n- `text-shadow = none`: no text shadow anywhere.\n- `gradient-fills <= 3%`: the title bars are the only gradient.\n- `border-width <= 2px`: thin lines are 1px; the widest stroke is the 2px top of a caption glyph.\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.p08.t01.u01\",\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-2811\",\n  \"short\": \"v1-w9-2811\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #101010;\n  --color-canvas: #404040;\n  --color-surface: #202020;\n  --color-surface-alt: #2c2c2c;\n  --color-surface-strong: #505050;\n  --color-bar: #a83030;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #585858;\n  --color-bar-alt-text: #f8f8f8;\n  --color-inverse: #c8d0b0;\n  --color-inverse-text: #101810;\n  --color-text: #f0f0f0;\n  --color-text-muted: #a8a8a8;\n  --color-heading: #ffffff;\n  --color-heading-alt: #ffd000;\n  --color-link: #98d0ff;\n  --color-link-quiet: #f0f0f0;\n  --color-link-visited: #c8a8e8;\n  --color-link-hover: #ffffff;\n  --color-link-active: #ffd000;\n  --color-border: #141414;\n  --color-border-strong: #000000;\n  --color-border-muted: #686868;\n  --color-accent: #ffd000;\n  --color-accent-text: #000000;\n  --color-accent-alt: #ff6030;\n  --color-fill-1: #a83030;\n  --color-fill-2: #1f5a6a;\n  --color-fill-3: #303098;\n  --color-fill-4: #6a5a10;\n  --color-button: #585858;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffd000;\n  --color-button-secondary: #484848;\n  --color-button-secondary-text: #f0f0f0;\n  --color-input: #101010;\n  --color-input-text: #f0f0f0;\n  --color-input-border: #808080;\n  --color-disabled: #404040;\n  --color-disabled-text: #888888;\n  --color-danger: #ff7868;\n  --color-danger-surface: #401414;\n  --color-success: #60d080;\n  --color-warning: #f0b040;\n  --color-notice: #283048;\n  --color-notice-text: #e0ecff;\n  --color-focus: #ffd000;\n  --color-shadow: #000000;\n  --color-overlay: rgba(0, 0, 0, 0.6);\n}\n\n/* @part type */\n:root {\n  --font-body: \"MS Sans Serif\", Tahoma, Geneva, Verdana, sans-serif;\n  --font-heading: \"MS Sans Serif\", Tahoma, Geneva, Verdana, sans-serif;\n  --font-ui: \"MS Sans Serif\", Tahoma, Geneva, Verdana, sans-serif;\n  --font-mono: \"Courier New\", Courier, monospace;\n  --text-base: 11px;\n  --text-small: 10px;\n  --text-ui: 11px;\n  --text-large: 13px;\n  --text-display: 22px;\n  --text-h1: 16px;\n  --text-h2: 13px;\n  --text-h3: 11px;\n  --line-body: 1.35;\n  --line-heading: 1.2;\n  --line-display: 1.1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 400;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: underline;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 2px;\n  --border-style: solid;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: inset -1px -1px var(--color-border-strong), inset 1px 1px var(--color-border-muted), inset -2px -2px var(--color-border), inset 2px 2px color-mix(in srgb, var(--color-border-muted) 25%, white);\n  --shadow-control: inset -1px -1px var(--color-border-strong), inset 1px 1px color-mix(in srgb, var(--color-border-muted) 25%, white), inset -2px -2px var(--color-border), inset 2px 2px var(--color-border-muted);\n  --shadow-control-hover: inset -1px -1px var(--color-border-strong), inset 1px 1px color-mix(in srgb, var(--color-border-muted) 25%, white), inset -2px -2px var(--color-border), inset 2px 2px var(--color-border-muted);\n  --shadow-control-pressed: inset 1px 1px var(--color-border), inset -1px -1px color-mix(in srgb, var(--color-border-muted) 25%, white), inset 2px 2px var(--color-border-strong), inset -2px -2px var(--color-border-muted);\n  --shadow-dialog: inset -1px -1px var(--color-border-strong), inset 1px 1px var(--color-border-muted), inset -2px -2px var(--color-border), inset 2px 2px color-mix(in srgb, var(--color-border-muted) 25%, white);\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: linear-gradient(90deg, var(--color-bar), color-mix(in srgb, var(--color-bar) 45%, white));\n  --fill-bar-alt: var(--color-bar-alt);\n  --fill-inverse: var(--color-inverse);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-canvas);\n  --fill-button: var(--color-button);\n  --fill-button-hover: var(--color-button);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: var(--color-input);\n  --focus-ring: 1px dotted var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
