{
  "id": "v1-te-69b3",
  "long_id": "v1.table-era-90s.landing.s06.p09.t11.u03",
  "name": "Table-era software company site, 1998",
  "era": {
    "slug": "table-era-90s",
    "code": "te",
    "name": "Table-era web",
    "years": [
      1996,
      2000
    ],
    "description": "The first commercial web, 1996 to 2000: narrow fixed pages built from tables, blue underlined links on white or grey, Times and Arial at their default sizes, bevelled form buttons, and flat colour strips where a designer wanted emphasis."
  },
  "archetype": "landing",
  "mode": "mix",
  "viewport": {
    "width": 800,
    "fluid": false
  },
  "summary": "The site of a software company or an institution as built between 1996 and 2000: a fixed 740px page with the name and a jump menu at the top, one row of equal navigation cells under a heavy rule, a product band, and link lists set in equal columns with a hairline under every link. Text is small Verdana, 11px with 10px small print, under regular-weight Georgia headings, on one saturated gold ground with white boxes, black rules and black inverted blocks; links are dark navy and underlined. It was the look of company, product and department sites in the years when a site was a brochure with a download page, before wider stylesheet layouts replaced it after 2000.",
  "url": "https://chrono.skin/s/v1-te-69b3",
  "preview_url": "https://chrono.skin/s/v1-te-69b3/specimen.html",
  "files": {
    "STYLE.md": "# Table-era software company site, 1998\n\n## Summary\n\nThe site of a software company or an institution as built between 1996 and 2000: a fixed 740px page with the name and a jump menu at the top, one row of equal navigation cells under a heavy rule, a product band, and link lists set in equal columns with a hairline under every link. Text is small Verdana, 11px with 10px small print, under regular-weight Georgia headings, on one saturated gold ground with white boxes, black rules and black inverted blocks; links are dark navy and underlined. It was the look of company, product and department sites in the years when a site was a brochure with a download page, before wider stylesheet layouts replaced it after 2000.\n\n## Layout\n\n- The page is fixed, not fluid, and centred: `--size-page` is 740px, and `.ds-page__frame` carries a `--space-3` (6px) margin above and `--space-4` (10px) at the sides inside it. Nothing is wider than 740px and nothing stretches with the window.\n- The specimen is one example site, a software company, of five views. `.ds-nav` and `.ds-footer` are written once, outside the views; each view is a `.ds-view` section and one shows at a time.\n- Order from the top: `.ds-nav`, then the view, then the `.ds-footer`. The `.ds-nav` is three rows: `.ds-nav__top` (the `.ds-brand` at the left, a 10px tagline beside it, the `.ds-nav__jump` menu at the right), the `.ds-nav__links` row of equal cells across the full width under a heavy rule, and the `.ds-nav__strip`, one line of small print with a notice at the left and the date at the right.\n- The home view, `.ds-page__main`, is a stack of full-width bands with `--space-5` (16px) between them and no side column: the `.ds-hero` (text at the left, the product's box at the right), the `.ds-grid` of four product boxes, `.ds-page__columns` (two thirds for the `.ds-list` of news under a `.ds-heading`, one third for `.ds-page__side`, a stack of `.ds-panel` boxes), and the `.ds-index`, three equal columns of ruled links.\n- Inner pages (downloads, a support answer, a form, the company page) keep the `.ds-nav` and the `.ds-footer` and drop the bands. `.ds-page__split` sets a `--size-side` (150px) `.ds-sidebar` at the left, a column of plain ruled links that belongs to that section, behind a vertical hairline, and the page itself, `.ds-page__inner`, at the right after a `--space-5` gutter. `.ds-page__inner` opens with `.ds-page__head`: the small `.ds-breadcrumb`, the `.ds-page-header` (title and one line at the left, one button at the right, a hairline under it) and the `.ds-tabs` row when the page has parts of its own. Below come `.ds-stat` when the page has figures, the `.ds-table` with its `.ds-pagination`, or running text with a `.ds-panel` of related links, or the `.ds-notices`, the `.ds-form` and a message box, with `--space-5` between blocks.\n- Views: `home` is the front page (product band, product boxes, news and boxes, link columns). `downloads` is one page of files: the platforms as tabs, the table of files with its status key, and the page links. `support` is one answer from the knowledge base as running text, with the line that shows the link states and a panel of related answers. `register` is the registration form with its notices and the message box that clearing the form opens. `company` is the page about the firm: the row of figures, the staff directory table and the empty state of the jobs list. The cell of the view that is showing takes `--fill-bar` and its label loses the underline; the home cell is marked when the address names no view.\n- Blocks are separated by hairlines, heavy rules and outlines, never by cards with shadows or wide gutters. Everything is left-aligned; only the navigation cells and the product's box are centred.\n- Spacing scale: `--space-1` 2px is the padding of strips, tabs and ruled links; `--space-2` 4px is cell padding and the gap between a title and its text; `--space-3` 6px is the page margin above, box padding, the gap between buttons and form rows; `--space-4` 10px is the side margin of the sheet, the gap between product boxes, paragraph spacing and the padding of the product band; `--space-5` 16px is the gutter between columns and the gap between neighbouring blocks; `--space-6` 24px is the list indent and the inset of a news text under its title.\n- Fixed sizes: `--size-side` 150px link column, `--size-box` 150px product box, `--size-jump` 130px jump menu, `--size-label` 130px form label column, `--size-field` 220px text input, `--size-short` 44px short input, `--size-area` 320px textarea, `--size-check` 13px checkbox, `--size-dialog` 340px message box.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- `--font-heading` is Arial Black, the face the bookshop sets its section labels in, falling back to Arial; it is used at `--weight-heading` and `--weight-display` 900, its only weight. `--font-body` and `--font-ui` are Arial, Helvetica. `--font-mono` is Lucida Console, falling back to Monaco and Courier New.\n- `--text-base` and `--text-ui` 13px; `--text-small` 11px; `--text-h3` 13px, `--text-h2` and `--text-large` 16px, `--text-h1` 18px, `--text-display` 26px for the brand name only. Headings are heavy, not large.\n- `--weight-bold` is 700 and so is `--weight-ui`: button and tab labels are bold. Line height is set like a printed catalogue, `--line-body` 1.3 and `--line-heading` 1.15; no transform, no tracking. All three link decorations are `underline`.\n\n- Family: the 1999 guide page (olive `#cccc66`, khaki `#cccc99`, pale yellow, light grey, on white), with the red, black, link blue and navy of the 1998 community page and the dark green of the 1998 personal start page.\n- `--color-page`, `--color-canvas`, `--color-surface` are white `#ffffff`; `--color-surface-alt` `#eeeeee` is the tab strip, alternate rows and the empty state; `--color-surface-strong` `#cccc99`.\n- `--color-bar` `#cccc66` (olive, black text) is the search band, the table head and the header and footer rules. `--color-bar-alt` `#cccc99` (khaki, black text) is every title strip and the notice border.\n- `--color-inverse` `#000000` with white text is the dialog title bar only.\n- Links are `--color-link` `#0000cc`, visited `#6060a0`, active `#cc0000`; hover equals the link colour.\n- `--color-heading-alt` `#003060` (navy) is the wordmark, tagline, h3 and positive figures. `--color-accent` and `--color-accent-alt` `#cc0000` are the mark, the solid badge, the \"New!\" word and negative figures.\n- `--color-fill-1` to `--color-fill-4` are `#ffffcc`, `#eeeeee`, `#cccc99`, `#ffcc00`; `--color-fill-3` is also the khaki underline of section headings.\n- `--color-warning` `#ffcc00` is a fill only and carries black text; `--color-success` `#006600` and `--color-danger` `#cc0000` carry white. Notices sit on pale yellow `#ffffcc`; the error notice is red on white. The secondary button is khaki `#cccc99`.\n- Borders: `--color-border` `#a0a0a0`, `--color-border-strong` `#666633` (dark olive, for boxed outlines), `--color-border-muted` `#cccccc` and `--color-input-border` `#c0c0c0` for bevels. `--color-focus` is the navy `#003060`.\n\n## Components\n\n- `.ds-page`: on `<body>`; page fill and body type. `.ds-page__frame` is the centred 740px sheet with its margin inside it; it takes `--shadow-panel`, so a surface set that outlines its boxes also outlines the sheet. `.ds-page__main` is the home stack of bands; `.ds-page__columns` its one uneven row and `.ds-page__side` the stack of boxes in it; `.ds-page__split` is the inner-page grid of link column and page, `.ds-page__inner` the page column, `.ds-page__head` the stack of path, page header and tabs.\n- `.ds-nav`: the header. `.ds-nav__top` holds the `.ds-brand`, the `.ds-nav__tagline` and `.ds-nav__jump` (a label, a select and a button). `.ds-nav__links` is the row of equal cells in `--fill-bar-alt` under a `--border-width-strong` rule, `.ds-nav__item` / `.ds-nav__link`, bold underlined links with hairlines between; the cell of the view that is showing takes `--fill-bar` and `--color-bar-text` and loses the underline (`components.css` has one selector per view for this, and `is-current` does the same by hand). `.ds-nav__strip` is the line of small print under the cells. A link to a section that has no view of its own carries `.ds-nav__link--elsewhere`: it opens the nearest fitting view and is never marked as the view that is showing.\n- `.ds-brand`: the site's mark and name, at the left of `.ds-nav__top`. `.ds-brand__mark` is a small square tile dressed like the button (`--fill-button` over `--color-button`, `--color-button-text` for the drawing, the `outset` bevel in `--color-border-muted`, `--radius-control`, `--shadow-control`), so every palette and surface reskins it; it holds the mark as inline SVG painted with `currentColor`, drawn with flat line caps and a 2.2 unit stroke. `.ds-brand__name` is the name in the heading family at `--text-display` and `--weight-display`, in `--color-heading-alt`. The name `chronoskin` and its mark are placeholders for the installing project's own name and logo.\n- `.ds-hero`: the product band, the era's page introduction: a band in `--fill-bar` inside a hairline, with a small `.ds-hero__hint` label, the `.ds-hero__title` (22px), `.ds-hero__lead` and `.ds-hero__action` (the main button, a second button and a small line) at the left, and `.ds-hero__box` at the right: a block in `--fill-inverse` standing for the product's box, with `.ds-hero__box-name` and `.ds-hero__box-note`. Never a full-height banner and never a centred headline.\n- `.ds-page-header`: the head of an inner page, used instead of `.ds-hero`. `.ds-page-header__text` holds `.ds-page-header__title` (22px) and `.ds-page-header__lead` (one line); `.ds-page-header__action` holds one button, bottom-aligned at the right. A hairline closes it.\n- `.ds-prose`: running text; styles `h1`, `h2`, `h3` (bold sans-serif in `--color-heading-alt`), `p`, `ul`, `ol`, `strong`, `code`; `.ds-prose__lead` for a 14px lead line.\n- `.ds-link`: every link. States `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` is a small link, `.ds-link--strong` a bold one. `.ds-links` wraps a line of links.\n- `.ds-button`: bevelled key with an 11px bold label, on a `<button>` or, when it leads to another page, on a link. `.ds-button--secondary` is the lesser action in `--fill-button-secondary`, `.ds-button--danger` is the destructive action: the same bevel on `--color-surface` with the label in `--color-danger`, never a red button. `.ds-button--large` uses 14px. States `is-hover`, `is-pressed` (bevel inverts), `is-focus`, `is-disabled`. `.ds-buttons` lays out a row.\n- `.ds-form`: two-column form, right-aligned bold `.ds-form__label` and `.ds-form__field`. Controls: `.ds-form__input` (`--short` for a 44px field), `.ds-form__select`, `.ds-form__textarea`, `.ds-form__check`. `.ds-form__hint` for 10px help, `.ds-form__error` for a bold message in the danger colour under the field (the control itself does not change), `.ds-form__actions` for the button row. A select is a bevelled key in `--fill-button`; a checkbox is a small inset field in `--color-input` whose tick is a block of `--color-input-text`.\n- `.ds-table`: a hairline grid under a heavy rule: the table is filled with `--color-border` and its cells stand `--border-width` apart. `.ds-table__head` (`--fill-bar`, bold, left-aligned; `--num` right-aligned), `.ds-table__cell` with `--num`, `--up`, `--down` and `--group` (a full-width closing row on `--color-fill-2`), `.ds-table__row--alt` for cream rows, `.ds-table__desc` for the 10px line under a linked name, `.ds-table__caption` for the left-aligned 10px lines beneath.\n- `.ds-stat`: the row of figures: equal cells between a heavy rule above and a hairline below, hairlines between them. Each `.ds-stat__item` is a `.ds-stat__value` (22px serif in `--color-heading-alt`) over a 10px `.ds-stat__label`. Three to five items; never separate cards.\n- `.ds-list`: news items without bullets: `.ds-list__item` holds a `.ds-list__title` (a 14px serif link) and under it `.ds-list__text`, set in `--space-6` from the left, ending in a `.ds-list__meta` date; `.ds-list__more` is the right-aligned small bold link.\n- `.ds-index`: three equal columns of links, the site's contents at the foot of the home page: each column a `.ds-index__title` on a heavy rule over a `.ds-index__list` of `.ds-index__item`, every one closed by a hairline. `.ds-index__list` is also used inside a panel for a short list of related pages.\n- `.ds-panel`: an outlined white box: `.ds-panel__title` strip in `--fill-bar-alt` with an optional small `.ds-panel__tool` link at the right, then `.ds-panel__body` with `.ds-panel__text` and `.ds-panel__form`, a one-field form (`.ds-panel__field`) with its button on one line.\n- `.ds-grid`: one row of four product boxes with `--space-4` between them: `.ds-grid__cell` and `--2`, `--3`, `--4` for the four fills, each a hairline box under a heavy top rule holding a `.ds-grid__title` link (14px serif), a 10px `.ds-grid__text` and a bold 10px `.ds-grid__price` line.\n- `.ds-tabs`: a joined row of outlined cells standing on a heavy rule, for the parts of an inner page; `.ds-tabs__item`, `.ds-tabs__tab` (an underlined link on `--color-surface-alt`); the current one, `is-current`, is inverted: `--fill-inverse`, `--color-inverse-text`, bold, not underlined.\n- `.ds-badge`: small solid label in `--fill-accent`. `.ds-badge--text` is a bold word in `--color-accent-alt` beside a link; `.ds-badge--count` is a muted count in brackets. Status labels are the same solid block in a flat status colour, with the word typed in capitals: `.ds-badge--success`, `.ds-badge--warning`, `.ds-badge--danger`. `.ds-badges` is the key line that explains them under a table.\n- `.ds-sidebar`: the column of plain links at the left of an inner page, behind a vertical hairline, with no fill. Sections of `.ds-sidebar__title` (14px serif on a heavy rule), `.ds-sidebar__list` of `.ds-sidebar__item`, each closed by a hairline; the page that is showing is `is-current`, bold and not a link; `.ds-sidebar__note` is a 10px line and `.ds-sidebar__more` a right-aligned small bold link.\n- `.ds-notice`: a hairline box on `--color-notice` with a heavy left edge in `--color-border-strong`; `.ds-notice__label` bold lead words, `.ds-notice--error` in the danger colour on `--color-danger-surface` with danger borders. `.ds-notices` stacks several.\n- `.ds-pagination`: one line under a table: `.ds-pagination__label` (the count) at the left, then at the right previous, numbered `.ds-pagination__link` and next; the current page, `is-current`, is bold in a hairline box; `is-disabled`.\n- `.ds-breadcrumb`: a 10px path separated by slashes; `.ds-breadcrumb__item`, last one `is-current` and bold.\n- `.ds-dialog`: a 340px box in the page flow, left-aligned under the form that opens it, with a `--color-border-strong` outline, a `.ds-dialog__title` bar in `--fill-inverse`, `.ds-dialog__body` and right-aligned `.ds-dialog__actions`. No backdrop.\n- `.ds-empty`: a hairline block on `--color-surface-alt` with `.ds-empty__title`, `.ds-empty__text` and a button, left-aligned.\n- `.ds-footer`: `.ds-footer__links`, a strip in `--fill-inverse` of small `.ds-footer__item` links separated by bars, in the strip's text colour; then `.ds-footer__legal`, one 10px line with the copyright at the left and the webmaster at the right.\n- `.ds-view`: one screen of the example site; only the one named in the address shows, and `.ds-view--home` shows when none is named. It has no box of its own.\n- `.ds-rule`: a hairline; `.ds-rule--strong` the heavy rule. `.ds-heading`: a 17px serif section title on a hairline.\n\n## Never\n\n- `row-gap <= 8px`: ruled links and table rows sit close.\n- `block-gap <= 16px`: neighbouring blocks are at most 16px apart.\n- `content-width <= 740px`: the page is a fixed 740px sheet.\n- `font-size >= 10px`: small print is 10px, nothing smaller.\n- `font-size <= 26px`: the brand name is the largest text; headings stop at 18px.\n- `font-families <= 3`: Arial, Arial Black and Lucida Console.\n- `font-weight >= 400`: no light weights were measured.\n- `underlined-links >= 95%`: every reference underlines 100% of its link text.\n- `letter-spacing = 0`: no reference tracks its text.\n- `uppercase-text <= 0%`: no reference uses text-transform; capitals are typed.\n- `border-radius <= 0px`: no reference has a rounded corner.\n- `box-shadow-blur <= 0px`: shadows are hard offset edges; nothing is blurred.\n- `text-shadow = none`: no reference has a text shadow.\n- `gradient-fills <= 8%`: only the pinstriped bars and title strips carry a pattern; every other fill is flat.\n- `border-width <= 2px`: the widest border measured in any reference is the 2px bevel of a form control.\n- `transition = none`: nothing in the references changes on hover.\n- `animation = none`: no reference has a CSS animation.\n- `border-width >= 2px`: this surface has no 1px lines; every border is 2px.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. A new set of links is a column of `.ds-index` or a section of the `.ds-sidebar`, each link on its own hairline; a new box is a `.ds-panel` with a pale title strip; anything tabular is a `.ds-table` hairline grid under a heavy rule; a new band on the home page spans the full 740px. Keep text at 11px with 10px small print and serif titles at regular weight, keep links underlined, open blocks with a heavy rule and close rows with hairlines, keep the home page free of side columns and inner pages to the link column plus one page column, and never add radius, blur, hover effects, centred headlines or more whitespace than `--space-5`.\n",
    "components.css": "/* Layout tokens (structure part). Read from the 1998 software company pages\n   and the 1998 and 1999 institution pages: a 740px page centred in an 800px\n   window, a row of equal navigation cells under the name, link lists set in\n   equal columns with a hairline under every link, a 150px column of plain\n   links at the left of inner pages, 6px cell padding and a 16px gutter. */\n:root {\n  --size-page: 740px;\n  --size-side: 150px;\n  --size-box: 150px;\n  --size-jump: 130px;\n  --size-label: 130px;\n  --size-field: 220px;\n  --size-area: 320px;\n  --size-check: 13px;\n  --size-short: 44px;\n  --size-dialog: 340px;\n  --space-1: 2px;\n  --space-2: 4px;\n  --space-3: 6px;\n  --space-4: 10px;\n  --space-5: 16px;\n  --space-6: 24px;\n}\n\n/* ---------- shell ---------- */\n.ds-page {\n  margin: 0;\n  padding: 0;\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n/* The margin is inside the sheet, so a canvas that differs from the page\n   keeps its text off the sheet edge. */\n.ds-page__frame {\n  width: var(--size-page);\n  margin: 0 auto;\n  padding: var(--space-3) var(--space-4) var(--space-5);\n  background: var(--color-canvas);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-panel);\n}\n/* Home page: full-width bands under each other. */\n.ds-page__main {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  min-width: 0;\n  padding: var(--space-4) 0 0;\n}\n/* The one uneven row of the home page: news at the left, boxes at the right. */\n.ds-page__columns {\n  display: grid;\n  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);\n  column-gap: var(--space-5);\n  align-items: start;\n}\n.ds-page__side {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  min-width: 0;\n}\n/* Inner page: a column of plain links at the left, the page at the right. */\n.ds-page__split {\n  display: grid;\n  grid-template-columns: var(--size-side) minmax(0, 1fr);\n  column-gap: var(--space-5);\n  align-items: start;\n  padding: var(--space-4) 0 0;\n}\n.ds-page__inner {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  min-width: 0;\n}\n/* Path, page header and view cells, stacked. */\n.ds-page__head {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\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/* ---------- rules and section headings ---------- */\n.ds-rule {\n  height: 0;\n  margin: var(--space-3) 0;\n  border: 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n/* The heavy rule that opens the navigation, a link column and the footer. */\n.ds-rule--strong {\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n}\n/* Section title on a hairline. */\n.ds-heading {\n  margin: 0 0 var(--space-3);\n  padding: 0 0 var(--space-1);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\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/* ---------- 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  font-family: var(--font-ui);\n  font-size: var(--text-small);\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 0 var(--space-4);\n}\n\n/* ---------- nav: name and jump menu, then a row of equal cells ---------- */\n.ds-nav {\n  padding: 0;\n}\n.ds-nav__top {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-4);\n  padding: var(--space-2) 0 var(--space-3);\n}\n/* brand: the mark on a small bevelled tile dressed like the button, then the name */\n.ds-brand {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  color: var(--color-heading-alt);\n  text-decoration: none;\n}\n.ds-brand__mark {\n  display: flex;\n  flex: none;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  width: calc(var(--text-display) + var(--space-2));\n  height: calc(var(--text-display) + var(--space-2));\n  background: var(--color-button);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\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-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-nav__tagline {\n  flex: 1;\n  padding: 0 0 var(--space-1);\n  color: var(--color-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n/* The jump menu: a label, a select and its key. */\n.ds-nav__jump {\n  display: flex;\n  flex: none;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-nav__jump .ds-form__select {\n  width: var(--size-jump);\n}\n/* The row of cells: equal widths, a heavy rule above, hairlines between. */\n.ds-nav__links {\n  display: grid;\n  grid-auto-flow: column;\n  grid-auto-columns: minmax(0, 1fr);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n  text-align: center;\n}\n.ds-nav__item {\n  display: flex;\n}\n.ds-nav__item + .ds-nav__item {\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-nav__link {\n  flex: 1;\n  padding: var(--space-2) var(--space-1);\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-nav__link:visited,\n.ds-nav__link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  color: var(--color-link-hover);\n}\n/* The current page: its cell takes the primary bar fill, its label the bar's\n   text colour, not underlined. One selector per view, and the home cell when\n   the address names no view. */\n.ds-nav__link.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#home\"]:not(.ds-nav__link--elsewhere),\n.ds-page:has(#home:target) .ds-nav__link[href=\"#home\"]:not(.ds-nav__link--elsewhere),\n.ds-page:has(#downloads:target) .ds-nav__link[href=\"#downloads\"]:not(.ds-nav__link--elsewhere),\n.ds-page:has(#support:target) .ds-nav__link[href=\"#support\"]:not(.ds-nav__link--elsewhere),\n.ds-page:has(#register:target) .ds-nav__link[href=\"#register\"]:not(.ds-nav__link--elsewhere),\n.ds-page:has(#company:target) .ds-nav__link[href=\"#company\"]:not(.ds-nav__link--elsewhere) {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  text-decoration: none;\n}\n/* A line of small print under the cells: one notice at the left, the date at the right. */\n.ds-nav__strip {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  gap: var(--space-4);\n  margin: 0;\n  padding: var(--space-2) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- hero: the product of the month, text beside its box ---------- */\n.ds-hero {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) var(--size-box);\n  column-gap: var(--space-5);\n  align-items: center;\n  padding: var(--space-4) var(--space-5);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n  text-shadow: var(--shadow-text);\n}\n.ds-hero__title {\n  margin: var(--space-1) 0 0;\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-hero__lead {\n  margin: var(--space-2) 0 var(--space-4);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-hero__action {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-hero__hint {\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n/* The box on the shelf: a block in the inverse fill with the product's name. */\n.ds-hero__box {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  gap: var(--space-2);\n  box-sizing: border-box;\n  min-height: calc(var(--size-box) * 0.8);\n  padding: var(--space-4) var(--space-3);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  box-shadow: var(--shadow-panel);\n  text-align: center;\n  text-shadow: none;\n}\n.ds-hero__box-name {\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-hero__box-note {\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\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-4) 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-family: var(--font-body);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\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 var(--space-6);\n}\n.ds-prose strong {\n  font-weight: var(--weight-bold);\n}\n.ds-prose code {\n  font-family: var(--font-mono);\n  font-size: var(--text-h3);\n}\n.ds-prose__lead {\n  font-size: var(--text-large);\n}\n\n/* ---------- page header: title and one line, action at the right, a hairline under ---------- */\n.ds-page-header {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-4);\n  padding: 0 0 var(--space-3);\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: var(--space-1) 0 0;\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-page-header__action {\n  flex: none;\n}\n\n/* ---------- buttons ---------- */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-button {\n  display: inline-block;\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\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-transform: var(--ui-transform);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\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  border-style: inset;\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-button--secondary,\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n}\n.ds-button--large {\n  font-size: var(--text-large);\n}\n/* Destructive action: the same bevel on the surface colour, the label in the\n   bold danger colour, which every palette keeps legible on its surface. */\n.ds-button--danger,\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: var(--color-surface);\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  box-shadow: none;\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-3);\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  text-align: right;\n  font-weight: var(--weight-bold);\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  margin: 0;\n  padding: var(--space-1);\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: var(--border-width-strong) inset var(--color-input-border);\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  transition: var(--transition);\n}\n.ds-form__input {\n  width: var(--size-field);\n}\n.ds-form__input--short {\n  width: var(--size-short);\n}\n.ds-form__select {\n  border-style: outset;\n  border-color: var(--color-border-muted);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n}\n.ds-form__textarea {\n  display: block;\n  width: var(--size-area);\n  font-family: var(--font-mono);\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}\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__check {\n  appearance: none;\n  box-sizing: border-box;\n  width: var(--size-check);\n  height: var(--size-check);\n  margin: 0 var(--space-2) 0 0;\n  padding: var(--space-1);\n  vertical-align: middle;\n  background-color: var(--color-input);\n  border: var(--border-width) inset var(--color-input-border);\n  border-radius: var(--radius-control);\n}\n/* The tick is a block of the field's text colour inside the field's own\n   fill, so it reads the same on a light and on a dark page. */\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-color: var(--color-input-text);\n}\n.ds-form__hint {\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-form__error {\n  display: block;\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-form__actions {\n  grid-column: 2;\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  padding: var(--space-2) 0 0;\n}\n\n/* ---------- table: a hairline grid, as one pixel of cell spacing gave ---------- */\n/* The table is filled with the border colour and its cells stand one border\n   width apart, so the colour shows between them as a grid of hairlines. */\n.ds-table {\n  width: 100%;\n  border-collapse: separate;\n  border-spacing: var(--border-width);\n  background: var(--color-border);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-table__head {\n  padding: var(--space-2) var(--space-3);\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  text-align: left;\n}\n.ds-table__cell {\n  padding: var(--space-2) var(--space-3);\n  background: var(--color-surface);\n  text-align: left;\n  vertical-align: top;\n}\n.ds-table__cell--num,\n.ds-table__head--num {\n  text-align: right;\n}\n.ds-table__cell--group {\n  background: var(--color-fill-2);\n}\n.ds-table__row--alt .ds-table__cell {\n  background: var(--color-surface-alt);\n}\n/* The line of description under a linked name. */\n.ds-table__desc {\n  display: block;\n  font-size: var(--text-small);\n}\n.ds-table__caption {\n  caption-side: bottom;\n  padding: var(--space-3) 0 0;\n  background: var(--color-canvas);\n  color: var(--color-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  text-align: left;\n}\n\n/* ---------- stats: one ruled row of figures ---------- */\n.ds-stat {\n  display: grid;\n  grid-auto-flow: column;\n  grid-auto-columns: minmax(0, 1fr);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-stat__item {\n  padding: var(--space-3) var(--space-4);\n}\n.ds-stat__item + .ds-stat__item {\n  border-left: var(--border-width) var(--border-style) var(--color-border);\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  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- list: a title, then its text set in from the left ---------- */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-base);\n}\n.ds-list__item {\n  padding: 0 0 var(--space-3);\n}\n.ds-list__title {\n  display: block;\n  color: var(--color-link);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-list__title:visited,\n.ds-list__title.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-list__title:hover,\n.ds-list__title.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-list__text {\n  display: block;\n  padding: var(--space-1) 0 0 var(--space-6);\n}\n.ds-list__meta {\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-list__more {\n  margin: 0;\n  text-align: right;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- index: equal columns of links, a hairline under every one ---------- */\n.ds-index {\n  display: grid;\n  grid-template-columns: 1fr 1fr 1fr;\n  column-gap: var(--space-5);\n  align-items: start;\n}\n.ds-index__title {\n  margin: 0;\n  padding: 0 0 var(--space-1);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\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.ds-index__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-index__item {\n  padding: var(--space-1) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n\n/* ---------- panel: an outlined box with a title strip ---------- */\n.ds-panel {\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__title {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  gap: var(--space-3);\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-panel__tool {\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n}\n.ds-panel__body {\n  padding: var(--space-3);\n}\n.ds-panel__text {\n  margin: 0 0 var(--space-3);\n}\n/* A one-field form on one line. */\n.ds-panel__form {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-panel__field {\n  flex: 1;\n  width: 100%;\n  min-width: 0;\n}\n\n/* ---------- grid: four product boxes, each under a heavy rule ---------- */\n.ds-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr 1fr 1fr;\n  gap: var(--space-4);\n}\n.ds-grid__cell {\n  min-width: 0;\n  padding: var(--space-3);\n  background: var(--color-fill-1);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-page);\n}\n.ds-grid__cell--2 {\n  background: var(--color-fill-2);\n}\n.ds-grid__cell--3 {\n  background: var(--color-fill-3);\n}\n.ds-grid__cell--4 {\n  background: var(--color-fill-4);\n}\n.ds-grid__title {\n  margin: 0;\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-grid__text {\n  margin: var(--space-1) 0;\n  font-size: var(--text-small);\n}\n.ds-grid__price {\n  margin: 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- tabs: a joined row of cells, the current one inverted ---------- */\n.ds-tabs {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\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  border: var(--border-width) var(--border-style) var(--color-border);\n  border-bottom: 0;\n}\n.ds-tabs__item + .ds-tabs__item {\n  border-left: 0;\n}\n.ds-tabs__tab {\n  padding: var(--space-1) var(--space-4);\n  background: var(--color-surface-alt);\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-tabs__tab.is-current {\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n\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-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}\n/* The usual form: a coloured word next to a link, no box. */\n.ds-badge--text {\n  padding: 0;\n  background: transparent;\n  color: var(--color-accent-alt);\n  font-size: var(--text-base);\n}\n.ds-badge--count {\n  padding: 0;\n  background: transparent;\n  color: var(--color-text-muted);\n  font-weight: var(--weight-body);\n}\n/* Status labels: the same small solid block in a flat status colour. */\n.ds-badge--success {\n  background: var(--color-success);\n  color: var(--color-accent-text);\n}\n.ds-badge--warning {\n  background: var(--color-warning);\n  color: var(--color-bar-alt-text);\n}\n.ds-badge--danger {\n  background: var(--color-danger);\n  color: var(--color-accent-text);\n}\n/* A key line that explains the labels. */\n.ds-badges {\n  display: block;\n  padding: 0 0 var(--space-2);\n}\n\n/* ---------- sidebar: a column of plain links at the left of an inner page ---------- */\n.ds-sidebar {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  padding: 0 var(--space-4) 0 0;\n  border-right: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-sidebar__title {\n  margin: 0;\n  padding: 0 0 var(--space-1);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-base);\n}\n.ds-sidebar__item {\n  padding: var(--space-1) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n/* The page that is showing: its name, bold, not a link. */\n.ds-sidebar__item.is-current {\n  font-weight: var(--weight-bold);\n}\n.ds-sidebar__note {\n  margin: var(--space-2) 0 0;\n  font-size: var(--text-small);\n}\n.ds-sidebar__more {\n  margin: var(--space-2) 0 0;\n  text-align: right;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- notice: a box with a heavy edge at the left ---------- */\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);\n  border-left: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\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: one line at the right under a table ---------- */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-end;\n  align-items: baseline;\n  gap: var(--space-3);\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  margin: 0 auto 0 0;\n}\n.ds-pagination__link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-pagination__link.is-current {\n  padding: 0 var(--space-2);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-disabled-text);\n  text-decoration: none;\n}\n\n/* ---------- breadcrumb: a small path, slashes between ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-breadcrumb__item + .ds-breadcrumb__item::before {\n  content: \"/\";\n  padding: 0 var(--space-2);\n  color: var(--color-text);\n}\n.ds-breadcrumb__item.is-current {\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- dialog: a bordered box in the page flow ---------- */\n.ds-dialog {\n  position: static;\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  margin: 0;\n  padding: 0;\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-panel);\n  box-shadow: var(--shadow-dialog);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n}\n.ds-dialog__body {\n  margin: 0;\n  padding: var(--space-4) var(--space-4) var(--space-3);\n}\n.ds-dialog__actions {\n  display: flex;\n  justify-content: flex-end;\n  gap: var(--space-3);\n  padding: 0 var(--space-4) var(--space-4);\n}\n\n/* ---------- empty state ---------- */\n.ds-empty {\n  padding: var(--space-5);\n  background: var(--color-surface-alt);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  font-size: var(--text-base);\n}\n.ds-empty__title {\n  margin: 0 0 var(--space-2);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\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}\n\n/* ---------- footer: an inverted strip of links, the small print under it ---------- */\n.ds-footer {\n  padding: var(--space-5) 0 0;\n  font-size: var(--text-small);\n}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  list-style: none;\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-footer__item + .ds-footer__item::before {\n  content: \"|\";\n  padding: 0 var(--space-3);\n}\n/* Links on the inverted strip take its text colour, in every state. */\n.ds-footer__links .ds-link,\n.ds-footer__links .ds-link:visited,\n.ds-footer__links .ds-link:hover,\n.ds-footer__links .ds-link:active {\n  color: var(--color-inverse-text);\n}\n.ds-footer__legal {\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-4);\n  margin: var(--space-3) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\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: a software company site, 1996 to 2000: 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__frame\">\n\n  <header class=\"ds-nav\" data-component=\"nav\">\n    <div class=\"ds-nav__top\">\n      <a class=\"ds-brand\" data-component=\"brand\" href=\"#\">\n        <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9.2\"/><ellipse cx=\"12\" cy=\"12\" rx=\"4\" ry=\"9.2\"/><line x1=\"2.8\" y1=\"12\" x2=\"21.2\" y2=\"12\"/></svg></span>\n        <span class=\"ds-brand__name\">chronoskin</span>\n      </a>\n      <span class=\"ds-nav__tagline\">Software for the office at home, since 1989</span>\n      <form class=\"ds-nav__jump\" action=\"#\">\n        <label for=\"n-jump\">Go to:</label>\n        <select class=\"ds-form__select\" id=\"n-jump\">\n          <option>Worldwide sites</option>\n          <option>Canada</option>\n          <option>Deutschland</option>\n          <option>France</option>\n          <option>United Kingdom</option>\n        </select>\n        <button class=\"ds-button\" type=\"button\">Go</button>\n      </form>\n    </div>\n    <ul class=\"ds-nav__links\">\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#home\">Home</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link ds-nav__link--elsewhere\" href=\"#downloads\">Products</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#downloads\">Downloads</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#support\">Support</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#register\">Register</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#company\">Company</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link ds-nav__link--elsewhere\" href=\"#company\">Where to Buy</a></li>\n    </ul>\n    <p class=\"ds-nav__strip\">\n      <span><span class=\"ds-badge\">NEW</span> Ledger 3.1 is ready. Registered users can <a class=\"ds-link\" href=\"#downloads\">download the update</a> free of charge.</span>\n      <span>Monday, June 14, 1999</span>\n    </p>\n  </header>\n\n  <section class=\"ds-view ds-view--home\" id=\"home\">\n    <main class=\"ds-page__main\">\n\n      <section class=\"ds-hero\" data-component=\"hero\">\n        <div>\n          <span class=\"ds-hero__hint\">Product of the month</span>\n          <h1 class=\"ds-hero__title\">Do the household books in an evening</h1>\n          <p class=\"ds-hero__lead\">Ledger 3.1 keeps your accounts, prints the forms at the end of the year and now reads the files your bank sends you. Try it for thirty days.</p>\n          <div class=\"ds-hero__action\">\n            <a class=\"ds-button\" href=\"#downloads\">Download the Free Trial</a>\n            <button class=\"ds-button ds-button--secondary\" type=\"button\">Order on CD</button>\n            <span class=\"ds-hero__hint\">2.4 MB for Windows 95 and 98. <a class=\"ds-link\" href=\"#support\">What you need to run it</a></span>\n          </div>\n        </div>\n        <div class=\"ds-hero__box\">\n          <span class=\"ds-hero__box-name\">Ledger 3.1</span>\n          <span class=\"ds-hero__box-note\">Home accounts<br>for Windows</span>\n        </div>\n      </section>\n\n      <div class=\"ds-grid\" data-component=\"grid\">\n        <div class=\"ds-grid__cell\">\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#downloads\">Ledger</a></p>\n          <p class=\"ds-grid__text\">Accounts for the home and the small firm.</p>\n          <p class=\"ds-grid__price\">Version 3.1, $49</p>\n        </div>\n        <div class=\"ds-grid__cell ds-grid__cell--2\">\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#downloads\">Letterbox</a></p>\n          <p class=\"ds-grid__text\">Letters, labels and a mailing list in one.</p>\n          <p class=\"ds-grid__price\">Version 2.0, $39</p>\n        </div>\n        <div class=\"ds-grid__cell ds-grid__cell--3\">\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#downloads\">Planner</a></p>\n          <p class=\"ds-grid__text\">A diary that prints to fit your binder.</p>\n          <p class=\"ds-grid__price\">Version 4.2, $29</p>\n        </div>\n        <div class=\"ds-grid__cell ds-grid__cell--4\">\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#downloads\">Typing Coach</a></p>\n          <p class=\"ds-grid__text\">Twenty lessons, ten minutes each.</p>\n          <p class=\"ds-grid__price\">Version 1.5, $19</p>\n        </div>\n      </div>\n\n      <div class=\"ds-page__columns\">\n        <section>\n          <h2 class=\"ds-heading\">Company News</h2>\n          <ul class=\"ds-list\" data-component=\"list\">\n            <li class=\"ds-list__item\"><a class=\"ds-list__title\" href=\"#downloads\">Ledger 3.1 reads statements from your bank</a>\n              <span class=\"ds-list__text\">The update adds statement files, a faster year-end and twelve new report layouts. It is free to registered users of version 3. <span class=\"ds-list__meta\">(June 14)</span></span></li>\n            <li class=\"ds-list__item\"><a class=\"ds-list__title\" href=\"#support\">All four products are ready for the year 2000</a>\n              <span class=\"ds-list__text\">Every current version stores four-digit years. Owners of older versions will find a checking tool on the support pages. <span class=\"ds-list__meta\">(June 2)</span></span></li>\n            <li class=\"ds-list__item\"><a class=\"ds-list__title is-visited\" href=\"#company\">A second office opens for telephone support</a>\n              <span class=\"ds-list__text\">Lines are now answered from eight in the morning until eight at night, six days a week. <span class=\"ds-list__meta\">(May 17)</span></span></li>\n          </ul>\n          <p class=\"ds-list__more\"><a class=\"ds-link\" href=\"#company\">All press releases...</a></p>\n        </section>\n\n        <div class=\"ds-page__side\">\n          <section class=\"ds-panel\" data-component=\"panel\">\n            <h2 class=\"ds-panel__title\">Find a Dealer <a class=\"ds-link ds-panel__tool\" href=\"#company\">Map</a></h2>\n            <div class=\"ds-panel__body\">\n              <p class=\"ds-panel__text\">Type the name of your town to find the nearest shop that stocks our boxes.</p>\n              <form class=\"ds-panel__form\" action=\"#\">\n                <input class=\"ds-form__input ds-panel__field\" type=\"text\" aria-label=\"Town\">\n                <button class=\"ds-button\" type=\"button\">Find</button>\n              </form>\n            </div>\n          </section>\n          <section class=\"ds-panel\">\n            <h2 class=\"ds-panel__title\">Tip of the Week</h2>\n            <div class=\"ds-panel__body\">\n              <p class=\"ds-panel__text\">In Planner, hold Shift while you drag an appointment to copy it to another day.</p>\n              <p class=\"ds-list__more\"><a class=\"ds-link\" href=\"#support\">More tips...</a></p>\n            </div>\n          </section>\n        </div>\n      </div>\n\n      <div class=\"ds-index\">\n        <section>\n          <h2 class=\"ds-index__title\">Products</h2>\n          <ul class=\"ds-index__list\">\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#downloads\">Product index</a></li>\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#downloads\">Trial versions</a></li>\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#downloads\">Upgrades and prices</a></li>\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#downloads\">Reviews and awards</a> <span class=\"ds-badge ds-badge--text\">New!</span></li>\n          </ul>\n        </section>\n        <section>\n          <h2 class=\"ds-index__title\">Support</h2>\n          <ul class=\"ds-index__list\">\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#support\">Knowledge base</a></li>\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#downloads\">Updates and patches</a></li>\n            <li class=\"ds-index__item\"><a class=\"ds-link is-visited\" href=\"#register\">Register your copy</a></li>\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#downloads\">Manuals to print</a></li>\n          </ul>\n        </section>\n        <section>\n          <h2 class=\"ds-index__title\">Company</h2>\n          <ul class=\"ds-index__list\">\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#company\">About chronoskin</a></li>\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#company\">Staff directory</a></li>\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#company\">Jobs</a> <span class=\"ds-badge ds-badge--count\">(0)</span></li>\n            <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#register\">Dealers and schools</a></li>\n          </ul>\n        </section>\n      </div>\n\n    </main>\n  </section>\n\n  <section class=\"ds-view\" id=\"downloads\">\n    <div class=\"ds-page__split\">\n\n      <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n        <section>\n          <h2 class=\"ds-sidebar__title\">Downloads</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item is-current\">Trial versions</li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#downloads\">Updates and patches</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#downloads\">Printer drivers</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#downloads\">Manuals to print</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link is-visited\" href=\"#downloads\">Older versions</a></li>\n          </ul>\n        </section>\n        <section>\n          <h2 class=\"ds-sidebar__title\">Need Help?</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#support\">Installing a download</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#register\">Order a CD instead</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#company\">Telephone support</a></li>\n          </ul>\n          <p class=\"ds-sidebar__note\">Every file is checked for viruses before it is placed here.</p>\n        </section>\n      </aside>\n\n      <div class=\"ds-page__inner\">\n        <div class=\"ds-page__head\">\n          <nav aria-label=\"Path\">\n            <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n              <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n              <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#downloads\">Downloads</a></li>\n              <li class=\"ds-breadcrumb__item is-current\">Trial versions</li>\n            </ol>\n          </nav>\n          <header class=\"ds-page-header\" data-component=\"page-header\">\n            <div class=\"ds-page-header__text\">\n              <h1 class=\"ds-page-header__title\">Trial Versions</h1>\n              <p class=\"ds-page-header__lead\">Complete programs that run for thirty days. Nothing is left out.</p>\n            </div>\n            <div class=\"ds-page-header__action\">\n              <a class=\"ds-button\" href=\"#register\">Order on CD</a>\n            </div>\n          </header>\n          <ul class=\"ds-tabs\" data-component=\"tabs\">\n            <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab is-current\" href=\"#downloads\">Windows 95 and 98</a></li>\n            <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#downloads\">Windows 3.1</a></li>\n            <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#downloads\">Macintosh</a></li>\n            <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#downloads\">DOS</a></li>\n          </ul>\n        </div>\n\n        <table class=\"ds-table\" data-component=\"table\">\n          <caption class=\"ds-table__caption\">\n            <span class=\"ds-badges\" data-component=\"badge\">Key: <span class=\"ds-badge ds-badge--success\">FINAL</span> the version in the box <span class=\"ds-badge ds-badge--warning\">BETA</span> still being tested <span class=\"ds-badge ds-badge--danger\">WITHDRAWN</span> do not install <span class=\"ds-badge\">NEW</span> placed here this month</span>\n            At 28.8K allow about six minutes for each megabyte. <a class=\"ds-link\" href=\"#support\">Help with downloading</a>\n          </caption>\n          <thead>\n            <tr>\n              <th class=\"ds-table__head\" scope=\"col\">File</th>\n              <th class=\"ds-table__head\" scope=\"col\">Version</th>\n              <th class=\"ds-table__head\" scope=\"col\">State</th>\n              <th class=\"ds-table__head\" scope=\"col\">Date</th>\n              <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Size</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#downloads\">ledger31.exe</a> <span class=\"ds-badge\">NEW</span> <span class=\"ds-table__desc\">Ledger, home and small firm accounts</span></td>\n              <td class=\"ds-table__cell\">3.1</td>\n              <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">FINAL</span></td>\n              <td class=\"ds-table__cell\">Jun 14, 1999</td>\n              <td class=\"ds-table__cell ds-table__cell--num\">2,412 K</td>\n            </tr>\n            <tr class=\"ds-table__row--alt\">\n              <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#downloads\">letter20.exe</a> <span class=\"ds-table__desc\">Letterbox, letters, labels and mailing list</span></td>\n              <td class=\"ds-table__cell\">2.0</td>\n              <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">FINAL</span></td>\n              <td class=\"ds-table__cell\">Feb 8, 1999</td>\n              <td class=\"ds-table__cell ds-table__cell--num\">1,876 K</td>\n            </tr>\n            <tr>\n              <td class=\"ds-table__cell\"><a class=\"ds-link is-visited\" href=\"#downloads\">plan42.exe</a> <span class=\"ds-table__desc\">Planner, diary and address book</span></td>\n              <td class=\"ds-table__cell\">4.2</td>\n              <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">FINAL</span></td>\n              <td class=\"ds-table__cell\">Nov 30, 1998</td>\n              <td class=\"ds-table__cell ds-table__cell--num\">1,140 K</td>\n            </tr>\n            <tr class=\"ds-table__row--alt\">\n              <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#downloads\">plan50b2.exe</a> <span class=\"ds-table__desc\">Planner 5, second test release</span></td>\n              <td class=\"ds-table__cell\">5.0 b2</td>\n              <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">BETA</span></td>\n              <td class=\"ds-table__cell\">May 21, 1999</td>\n              <td class=\"ds-table__cell ds-table__cell--num\">1,398 K</td>\n            </tr>\n            <tr>\n              <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#downloads\">coach15.exe</a> <span class=\"ds-table__desc\">Typing Coach, twenty lessons</span></td>\n              <td class=\"ds-table__cell\">1.5</td>\n              <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">WITHDRAWN</span></td>\n              <td class=\"ds-table__cell\">Mar 3, 1999</td>\n              <td class=\"ds-table__cell ds-table__cell--num\">864 K</td>\n            </tr>\n            <tr>\n              <td class=\"ds-table__cell ds-table__cell--group\" colspan=\"5\">No room on the line? <a class=\"ds-link\" href=\"#register\">We will post all four trials on one CD</a> for the cost of the stamp.</td>\n            </tr>\n          </tbody>\n        </table>\n\n        <ol class=\"ds-pagination\" data-component=\"pagination\">\n          <li class=\"ds-pagination__label\">Files 1 to 5 of 14</li>\n          <li><span class=\"ds-pagination__link is-disabled\">Previous</span></li>\n          <li><span class=\"ds-pagination__link is-current\">1</span></li>\n          <li><a class=\"ds-pagination__link\" href=\"#downloads\">2</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#downloads\">3</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#downloads\">Next</a></li>\n        </ol>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"support\">\n    <div class=\"ds-page__split\">\n\n      <aside class=\"ds-sidebar\">\n        <section>\n          <h2 class=\"ds-sidebar__title\">Support</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item is-current\">Knowledge base</li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#downloads\">Updates and patches</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#register\">Report a problem</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#company\">Telephone numbers</a></li>\n          </ul>\n        </section>\n        <section>\n          <h2 class=\"ds-sidebar__title\">Asked Most</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#support\">Moving to a new computer</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#support\">Lost serial number</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link is-visited\" href=\"#support\">Year 2000 checking tool</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#support\">Backing up to diskette</a></li>\n          </ul>\n          <p class=\"ds-sidebar__more\"><a class=\"ds-link\" href=\"#support\">All 212 answers...</a></p>\n        </section>\n      </aside>\n\n      <div class=\"ds-page__inner\">\n        <div class=\"ds-page__head\">\n          <nav aria-label=\"Path\">\n            <ol class=\"ds-breadcrumb\">\n              <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</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\">Answer 0147</li>\n            </ol>\n          </nav>\n          <header class=\"ds-page-header\">\n            <div class=\"ds-page-header__text\">\n              <h1 class=\"ds-page-header__title\">Knowledge Base</h1>\n              <p class=\"ds-page-header__lead\">Answers written by the people who take the telephone calls.</p>\n            </div>\n            <div class=\"ds-page-header__action\">\n              <a class=\"ds-button\" href=\"#register\">Ask a Question</a>\n            </div>\n          </header>\n        </div>\n\n        <article class=\"ds-prose\" data-component=\"typography\">\n          <h1>Reports print one line too low on continuous paper</h1>\n          <p class=\"ds-prose__lead\">Applies to Ledger 3.0 and 3.1 with a dot matrix printer.</p>\n          <p>Ledger measures a page as <strong>66 lines</strong>. Some printers count 72 when the paper is fed by tractor, so each page starts a little lower than the last. The cure is to tell Ledger the true length in the file <code>LEDGER.INI</code>.</p>\n          <h2>What to do</h2>\n          <ol>\n            <li>Close Ledger and open <code>LEDGER.INI</code> in Notepad.</li>\n            <li>Find the line that begins <code>PageLines=</code> and change the number to 72.</li>\n            <li>Save the file, start Ledger and print one test page.</li>\n          </ol>\n          <h2>If that does not help</h2>\n          <p>Check that the printer's own form length switch agrees with the paper. These pages may also be useful:</p>\n          <p class=\"ds-links\" data-component=\"links\">\n            <a class=\"ds-link\" href=\"#support\">An answer you have not read</a>,\n            <a class=\"ds-link is-visited\" href=\"#support\">one you have read</a>,\n            <a class=\"ds-link is-hover\" href=\"#support\">one under the pointer</a>,\n            <a class=\"ds-link is-active\" href=\"#support\">one as you click it</a>,\n            <a class=\"ds-link ds-link--strong\" href=\"#support\">a bold link</a> and\n            <a class=\"ds-link ds-link--quiet\" href=\"#support\">a small link</a>.\n          </p>\n          <h3>Still stuck?</h3>\n          <p>Send the file to us with a note of your printer's make and we will set it for you. <a class=\"ds-link\" href=\"#register\">Report a problem</a></p>\n        </article>\n\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Related Answers <a class=\"ds-link ds-panel__tool\" href=\"#support\">Index</a></h2>\n          <div class=\"ds-panel__body\">\n            <ul class=\"ds-index__list\">\n              <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#support\">0152: Choosing a printer driver in Ledger</a></li>\n              <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#support\">0098: Year-end forms on pre-printed stationery</a></li>\n              <li class=\"ds-index__item\"><a class=\"ds-link\" href=\"#support\">0061: Setting margins for labels in Letterbox</a></li>\n            </ul>\n          </div>\n        </section>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"register\">\n    <div class=\"ds-page__split\">\n\n      <aside class=\"ds-sidebar\">\n        <section>\n          <h2 class=\"ds-sidebar__title\">Why Register?</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\">Free updates for a year</li>\n            <li class=\"ds-sidebar__item\">Ninety days of telephone support</li>\n            <li class=\"ds-sidebar__item\">Half price on the next version</li>\n          </ul>\n          <p class=\"ds-sidebar__note\">We do not pass your name to anyone else.</p>\n        </section>\n        <section>\n          <h2 class=\"ds-sidebar__title\">See Also</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#support\">Lost serial number</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#downloads\">Updates and patches</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#company\">Write to us by post</a></li>\n          </ul>\n        </section>\n      </aside>\n\n      <div class=\"ds-page__inner\">\n        <div class=\"ds-page__head\">\n          <nav aria-label=\"Path\">\n            <ol class=\"ds-breadcrumb\">\n              <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</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\">Register</li>\n            </ol>\n          </nav>\n          <header class=\"ds-page-header\">\n            <div class=\"ds-page-header__text\">\n              <h1 class=\"ds-page-header__title\">Register Your Copy</h1>\n              <p class=\"ds-page-header__lead\">It takes two minutes and the card in the box can stay in the box.</p>\n            </div>\n            <div class=\"ds-page-header__action\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#downloads\">Go to Downloads</a>\n            </div>\n          </header>\n        </div>\n\n        <div class=\"ds-notices\" data-component=\"notice\">\n          <p class=\"ds-notice\"><span class=\"ds-notice__label\">Where is the serial number?</span> On the back of the manual and on the first diskette, twelve characters beginning with a letter.</p>\n          <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__label\">Not registered.</span> The serial number was not recognised. Please check it and send the form again.</p>\n        </div>\n\n        <form class=\"ds-form\" data-component=\"form\" action=\"#register\">\n          <label class=\"ds-form__label\" for=\"r-name\">Your name:</label>\n          <div class=\"ds-form__field\">\n            <input class=\"ds-form__input\" id=\"r-name\" type=\"text\" value=\"P. Marlow\">\n          </div>\n          <label class=\"ds-form__label\" for=\"r-serial\">Serial number:</label>\n          <div class=\"ds-form__field\">\n            <input class=\"ds-form__input\" id=\"r-serial\" type=\"text\" value=\"L31-0044-71\">\n            <span class=\"ds-form__error\">A serial number has twelve characters. This one has eleven.</span>\n          </div>\n          <label class=\"ds-form__label\" for=\"r-product\">Product:</label>\n          <div class=\"ds-form__field\">\n            <select class=\"ds-form__select\" id=\"r-product\">\n              <option>Ledger 3.1</option>\n              <option>Letterbox 2.0</option>\n              <option>Planner 4.2</option>\n              <option>Typing Coach 1.5</option>\n            </select>\n            <span class=\"ds-form__hint\">Bought in <input class=\"ds-form__input ds-form__input--short\" type=\"text\" value=\"1999\" aria-label=\"Year bought\"></span>\n          </div>\n          <span class=\"ds-form__label\">Send me:</span>\n          <div class=\"ds-form__field\">\n            <label><input class=\"ds-form__check\" type=\"checkbox\" checked>News of updates by e-mail</label>\n            <label><input class=\"ds-form__check\" type=\"checkbox\">The printed catalogue</label>\n          </div>\n          <label class=\"ds-form__label\" for=\"r-note\">Comments:</label>\n          <div class=\"ds-form__field\">\n            <textarea class=\"ds-form__textarea\" id=\"r-note\" rows=\"3\"></textarea>\n          </div>\n          <div class=\"ds-form__actions\" data-component=\"buttons\">\n            <button class=\"ds-button\" type=\"button\">Send Registration</button>\n            <button class=\"ds-button ds-button--secondary\" type=\"button\">Print the Form</button>\n            <button class=\"ds-button\" type=\"button\" disabled>Check Serial</button>\n            <button class=\"ds-button ds-button--danger\" type=\"button\">Clear the Form</button>\n          </div>\n        </form>\n\n        <section class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n          <h2 class=\"ds-dialog__title\" id=\"d-title\">Clear the form?</h2>\n          <p class=\"ds-dialog__body\">Everything you have typed will be removed. Your registration has <a class=\"ds-link\" href=\"#register\">not been sent</a>.</p>\n          <div class=\"ds-dialog__actions\">\n            <button class=\"ds-button ds-button--danger\" type=\"button\">Clear</button>\n            <button class=\"ds-button ds-button--secondary\" type=\"button\">Cancel</button>\n          </div>\n        </section>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"company\">\n    <div class=\"ds-page__split\">\n\n      <aside class=\"ds-sidebar\">\n        <section>\n          <h2 class=\"ds-sidebar__title\">Company</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item is-current\">About chronoskin</li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#company\">Staff directory</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#company\">Press releases</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#company\">Jobs</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#company\">How to find us</a></li>\n          </ul>\n        </section>\n        <section>\n          <h2 class=\"ds-sidebar__title\">Telephone</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\">Sales: 555 0140</li>\n            <li class=\"ds-sidebar__item\">Support: 555 0144</li>\n            <li class=\"ds-sidebar__item\">Fax: 555 0149</li>\n          </ul>\n          <p class=\"ds-sidebar__note\">Monday to Saturday, eight until eight.</p>\n        </section>\n      </aside>\n\n      <div class=\"ds-page__inner\">\n        <div class=\"ds-page__head\">\n          <nav aria-label=\"Path\">\n            <ol class=\"ds-breadcrumb\">\n              <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n              <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#company\">Company</a></li>\n              <li class=\"ds-breadcrumb__item is-current\">About chronoskin</li>\n            </ol>\n          </nav>\n          <header class=\"ds-page-header\">\n            <div class=\"ds-page-header__text\">\n              <h1 class=\"ds-page-header__title\">About chronoskin</h1>\n              <p class=\"ds-page-header__lead\">Thirty-one people in two offices, writing software for the kitchen table.</p>\n            </div>\n            <div class=\"ds-page-header__action\">\n              <a class=\"ds-button\" href=\"#register\">Write to Us</a>\n            </div>\n          </header>\n        </div>\n\n        <ul class=\"ds-stat\" data-component=\"stats\">\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">1989</span> <span class=\"ds-stat__label\">the year we began</span></li>\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">4</span> <span class=\"ds-stat__label\">products in the range</span></li>\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">31</span> <span class=\"ds-stat__label\">people on the staff</span></li>\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">640,000</span> <span class=\"ds-stat__label\">boxes sold so far</span></li>\n        </ul>\n\n        <section>\n          <h2 class=\"ds-heading\">Staff Directory</h2>\n          <table class=\"ds-table\">\n            <thead>\n              <tr>\n                <th class=\"ds-table__head\" scope=\"col\">Name</th>\n                <th class=\"ds-table__head\" scope=\"col\">Department</th>\n                <th class=\"ds-table__head\" scope=\"col\">Office</th>\n                <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Extension</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#register\">Adeyemi, Ruth</a></td>\n                <td class=\"ds-table__cell\">Telephone support</td>\n                <td class=\"ds-table__cell\">North</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">214</td>\n              </tr>\n              <tr class=\"ds-table__row--alt\">\n                <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#register\">Brandt, Tomas</a></td>\n                <td class=\"ds-table__cell\">Programming, Ledger</td>\n                <td class=\"ds-table__cell\">Main</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">107</td>\n              </tr>\n              <tr>\n                <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#register\">Castellan, Ines</a></td>\n                <td class=\"ds-table__cell\">Manuals and help files</td>\n                <td class=\"ds-table__cell\">Main</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">121</td>\n              </tr>\n              <tr class=\"ds-table__row--alt\">\n                <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#register\">Doyle, Fergus</a></td>\n                <td class=\"ds-table__cell\">Dealers and schools</td>\n                <td class=\"ds-table__cell\">Main</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">133</td>\n              </tr>\n            </tbody>\n          </table>\n        </section>\n\n        <section>\n          <h2 class=\"ds-heading\">Jobs</h2>\n          <div class=\"ds-empty\" data-component=\"empty\">\n            <h3 class=\"ds-empty__title\">There are no vacancies this month.</h3>\n            <p class=\"ds-empty__text\">We read every letter all the same. Tell us what you do and we will keep it on file for a year.</p>\n            <a class=\"ds-button\" href=\"#register\">Send Us a Letter</a>\n          </div>\n        </section>\n      </div>\n\n    </div>\n  </section>\n\n  <footer class=\"ds-footer\" data-component=\"footer\">\n    <ul class=\"ds-footer__links\">\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#downloads\">Downloads</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#support\">Support</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#register\">Register</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#company\">Company</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#company\">Site Map</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#company\">Text Only</a></li>\n    </ul>\n    <p class=\"ds-footer__legal\">\n      <span>Copyright 1989 to 1999 chronoskin. All rights reserved. <a class=\"ds-link\" href=\"#company\">Legal notices</a></span>\n      <span>Questions about this site: <a class=\"ds-link\" href=\"#register\">the webmaster</a></span>\n    </p>\n  </footer>\n\n</div>\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.table-era-90s.landing.s06.p09.t11.u03\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"table-era-90s\",\n    \"years\": [\n      1996,\n      2000\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-te-69b3\",\n  \"short\": \"v1-te-69b3\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #ffffff;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #eeeeee;\n  --color-surface-strong: #cccc99;\n  --color-bar: #cccc66;\n  --color-bar-text: #000000;\n  --color-bar-alt: #cccc99;\n  --color-bar-alt-text: #000000;\n  --color-inverse: #000000;\n  --color-inverse-text: #ffffff;\n  --color-text: #000000;\n  --color-text-muted: #666666;\n  --color-heading: #000000;\n  --color-heading-alt: #003060;\n  --color-link: #0000cc;\n  --color-link-quiet: #0000cc;\n  --color-link-visited: #6060a0;\n  --color-link-hover: #0000cc;\n  --color-link-active: #cc0000;\n  --color-border: #a0a0a0;\n  --color-border-strong: #666633;\n  --color-border-muted: #cccccc;\n  --color-accent: #cc0000;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #cc0000;\n  --color-fill-1: #ffffcc;\n  --color-fill-2: #eeeeee;\n  --color-fill-3: #cccc99;\n  --color-fill-4: #ffcc00;\n  --color-button: #efefef;\n  --color-button-text: #000000;\n  --color-button-hover-text: #000000;\n  --color-button-secondary: #cccc99;\n  --color-button-secondary-text: #000000;\n  --color-input: #ffffff;\n  --color-input-text: #000000;\n  --color-input-border: #c0c0c0;\n  --color-disabled: #efefef;\n  --color-disabled-text: #989898;\n  --color-danger: #cc0000;\n  --color-danger-surface: #ffffff;\n  --color-success: #006600;\n  --color-warning: #ffcc00;\n  --color-notice: #ffffcc;\n  --color-notice-text: #000000;\n  --color-focus: #003060;\n  --color-shadow: #000000;\n  --color-overlay: #ffffff;\n}\n\n/* @part type */\n:root {\n  --font-body: Arial, Helvetica, sans-serif;\n  --font-heading: \"Arial Black\", Arial, Helvetica, sans-serif;\n  --font-ui: Arial, Helvetica, sans-serif;\n  --font-mono: \"Lucida Console\", Monaco, \"Courier New\", monospace;\n  --text-base: 13px;\n  --text-small: 11px;\n  --text-ui: 13px;\n  --text-large: 16px;\n  --text-display: 26px;\n  --text-h1: 18px;\n  --text-h2: 16px;\n  --text-h3: 13px;\n  --line-body: 1.3;\n  --line-heading: 1.15;\n  --line-display: 1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 900;\n  --weight-display: 900;\n  --weight-ui: 700;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: underline;\n}\n\n/* @part surface */\n:root {\n  --border-width: 2px;\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: 0 0 0 1px var(--color-border-strong), 4px 4px 0 1px var(--color-shadow);\n  --shadow-control: 1px 1px 0 var(--color-shadow);\n  --shadow-control-hover: 1px 1px 0 var(--color-shadow);\n  --shadow-control-pressed: none;\n  --shadow-dialog: 4px 4px 0 var(--color-shadow);\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: repeating-linear-gradient(0deg, var(--color-bar) 0 2px, color-mix(in srgb, var(--color-bar) 55%, white) 2px 3px);\n  --fill-bar-alt: repeating-linear-gradient(0deg, var(--color-bar-alt) 0 2px, color-mix(in srgb, var(--color-bar-alt) 55%, white) 2px 3px);\n  --fill-inverse: repeating-linear-gradient(0deg, var(--color-inverse) 0 2px, color-mix(in srgb, var(--color-inverse) 55%, white) 2px 3px);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-surface);\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: 2px solid var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
