{
  "id": "v1-te-4444",
  "long_id": "v1.table-era-90s.portal.s04.p04.t04.u04",
  "name": "Table-era catalogue front, 1999",
  "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": "portal",
  "mode": "pure",
  "viewport": {
    "width": 800,
    "fluid": false
  },
  "summary": "A catalogue and company front page as built between 1996 and 2000: one fixed 760px table centred in an 800px window, a row of square folder tabs standing on a filled strip, and under it three columns, outlined link boxes on the left, the features in the middle and outlined boxes on the right. Running text is the browser's 16px serif, everything else (tabs, boxes, lists of links, controls, small print) is 13px or 10px sans-serif, and links are underlined pure red on white, with a navy wordmark, one gold strip and light grey fills. It was the standard skeleton of shops, software companies and institutions that had more departments than a single column could list, until stylesheet layouts replaced it after 2000.",
  "url": "https://chrono.skin/s/v1-te-4444",
  "preview_url": "https://chrono.skin/s/v1-te-4444/specimen.html",
  "files": {
    "STYLE.md": "# Table-era catalogue front, 1999\n\n## Summary\n\nA catalogue and company front page as built between 1996 and 2000: one fixed 760px table centred in an 800px window, a row of square folder tabs standing on a filled strip, and under it three columns, outlined link boxes on the left, the features in the middle and outlined boxes on the right. Running text is the browser's 16px serif, everything else (tabs, boxes, lists of links, controls, small print) is 13px or 10px sans-serif, and links are underlined pure red on white, with a navy wordmark, one gold strip and light grey fills. It was the standard skeleton of shops, software companies and institutions that had more departments than a single column could list, until stylesheet layouts replaced it after 2000.\n\n## Layout\n\n- The page is fixed, not fluid, and centred: `--size-page` is 760px and `.ds-page__frame` sits in the middle of the window with the spare width split on both sides. Nothing stretches with the window and nothing is pushed to one side.\n- The specimen is one example site, a catalogue shop, 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, three 10px account links at the right), the `.ds-nav__links` row of folder tabs, and the `.ds-nav__strip`, a filled strip the tabs stand on, holding the search form at the left and three 10px links at the right. There is no vertical navigation rail and no row of text links.\n- The home view is `.ds-page__columns`, three columns: `--size-left` (150px) for the `.ds-sidebar`, a stack of outlined link boxes; the middle column `.ds-page__main` (416px); and `--size-right` (170px) for `.ds-page__side`, a stack of `.ds-panel` boxes closed by a small centred `.ds-notice`. Gutters are `--space-4` (12px). The middle column runs: the `.ds-hero` feature box, a `.ds-heading` over the `.ds-list` of new items, then the `.ds-grid` of four department boxes. The side columns carry enough boxes to end near the foot of the middle one.\n- Inner pages (a department, a request form, the basket, a help page) keep the `.ds-nav` with its tabs and strip and the `.ds-footer`, and drop all three columns. `.ds-page__inner` is one column at the full 760px. It opens with `.ds-page__head`, which stacks without gaps the `.ds-breadcrumb`, the `.ds-page-header` (title and one line at the left, one button at the right) and the `.ds-tabs` row of small folder tabs standing on a 2px rule. Below come `.ds-stat` when the page has figures and the `.ds-table` at full width with the `.ds-pagination` under it, or a full-width `.ds-empty`, or `.ds-page__pair`: two equal halves, running text or a list in the left `.ds-page__half` and notices, the `.ds-form`, a message box, a small table or panels in the right one, which carries `.ds-page__half--ruled` for the 1px rule between them. What the side columns held on the home page is reached through the tabs.\n- Views: `welcome` is the shop front (link boxes, feature of the month, new items, department boxes, panels). `gardening` is one department: figures, the table of titles with its status key, and the page keys. `request` is the book search form with its notices and the message box that cancelling a request opens, beside a short account of how the search works and a list of recent finds. `basket` is the order basket while it is empty: the empty state over new titles and a panel of assurances. `help` is a page of running text with a line of related links, beside the postage table, a panel of questions and a notice. The folder tab of the view that is showing is raised and takes the fill of the strip; the welcome tab is raised when the address names no view; on the basket view no tab is raised and the basket link above the tabs is bold instead.\n- Blocks are separated by 1px outlines, title strips and flat fills, never by cards with shadows or wide gutters. Every box in a side column has an outline and a title strip.\n- Spacing scale: `--space-1` 2px is the padding of title strips, tabs and controls and the gap between tabs; `--space-2` 4px is cell padding and the gap between a mark and its name; `--space-3` 8px is the page margin, the padding of boxes, paragraph spacing and the gap between buttons, figure boxes and department boxes; `--space-4` 12px is the gutter between columns and the gap between neighbouring blocks; `--space-5` 16px is the foot of the page; `--space-6` 20px is the indent of numbered and bulleted lists.\n- Fixed sizes: `--size-art` 84px cover block in the feature box, `--size-search` 200px search field, `--size-label` 110px form label column, `--size-field` 180px text input, `--size-area` 220px textarea, `--size-check` 13px checkbox, `--size-dialog` 340px message box.\n\n## Typography and colour roles\n\n- Family: pure red links and navy on white, with one gold strip, three light greys, maroon for visited links and errors, dark green and orange for status.\n- `--color-page`, `--color-canvas`, `--color-surface` are white `#ffffff`; `--color-surface-alt` `#efefef` is the resting folder tabs of an inner page, alternate table rows and the empty state; `--color-surface-strong` `#e0e0e0`.\n- `--color-bar` `#ffe888` (gold, black text, red links) is the current tab, the strip under the tabs, panel title strips, the table head and the 2px rule under the view tabs. `--color-bar-alt` `#e0e0e0` (grey, black text) is the resting tabs, sidebar and form title strips, figure labels and the footer link strip.\n- `--color-inverse` `#003098` (navy, white text) is the message box title bar only. The same navy is `--color-heading-alt` (the brand name, section headings, h3, positive figures), `--color-accent` (the solid badge, white text) and `--color-link-active`.\n- Links are pure red `--color-link` `#ff0000`, always underlined; visited is maroon `--color-link-visited` `#900000`; hover equals the link colour because the era had no hover effect.\n- Text is `--color-text` black; `--color-text-muted` `#686868` is for counts, the meta line under a list entry and the legal line. `--color-heading` is black.\n- `--color-accent-alt` `#900000` (maroon) is the kicker over the feature title, prices, the \"New!\" word, the star of a required field and negative figures. `--color-danger` is the same maroon: error text is bold and never underlined, which is what tells it from a red link.\n- `--color-fill-1` to `--color-fill-4` are `#efefef`, `#e0e0e0`, `#ffe888`, `#ffffff`: the title strips of the four department boxes. `--color-fill-1` is also the feature box and the form box; `--color-fill-3` is the cover block. They carry black text and red links.\n- `--color-success` `#006600` and `--color-danger` `#900000` carry white text as fills; `--color-warning` `#ff5000` (orange) is a fill only and carries black text. Notices are grey `#efefef`; the error notice is maroon text on white in a maroon outline.\n- Borders: `--color-border` `#989898` for every outline, `--color-border-strong` `#000000` for the cover block and the rule under a section heading, `--color-border-muted` `#c0c0c0` for the rules between rows and for bevels, `--color-input-border` `#c0c0c0` for input bevels.\n- Two families and a code face. `--font-body` (Times New Roman, Times) sets running text, feature text and table data. `--font-heading` and `--font-ui` (Trebuchet MS, one of the 1996 core web fonts, falling back to Arial) set the brand name, headings, title strips, tabs, every list of links in a box, forms, buttons, notices and all small print. `--font-mono` (Courier New) is for code and textareas.\n- Sizes: `--text-base` 16px for running text; `--text-ui` 12px for tabs, the strip, box lists, meta lines, the line under a table entry, department box text, forms and buttons; `--text-small` 11px for the tagline, account links, kickers, table heads, figure labels, view tabs, captions and the footer; `--text-h3` 13px bold for title strips; `--text-h2` 16px bold for section headings; `--text-large` 18px for the feature title, figures and a lead line; `--text-h1` 20px for a page title; `--text-display` 24px for the brand name only. Line height is `normal` everywhere; bold is 700.\n- No uppercase transform and no letter spacing; capitals in kickers and status labels are typed. All three link decorations are `underline`.\n- `--border-width` 1px `solid` for outlines and rules, `--border-width-strong` 2px for the rule the view tabs stand on and control bevels. The surface is shaded the way shop fronts of 1999 shaded their bars with a strip of picture: `--fill-bar`, `--fill-bar-alt`, `--fill-inverse` and `--fill-accent` run from a much lighter mix of the palette colour at the top to the colour itself at the bottom, and so do the three button fills. `--fill-panel`, `--fill-input` and `--fill-page` stay flat. Boxes and the sheet carry a 1px outline with a 2px edge at the right and bottom (`--shadow-panel`, in `--color-border-muted`) and the message box a 2px one (`--shadow-dialog`, in `--color-border`), none of them blurred; the control and text shadows are `none`. Radius 0; `--focus-ring` is `1px dotted`; `--transition` is `none`.\n- Not expressible by a token, written literally in `components.css`: the bevel of buttons, selects, page keys, the brand tile and the message box is `border-style: outset` and of inputs, checkboxes, pressed buttons and the current page key `inset`, drawn in `--color-border-muted` and `--color-input-border`.\n\n## Components\n\n- `.ds-page`: on `<body>`; page fill and body type. `.ds-page__frame` is the centred 760px column; `.ds-page__columns` the three-column grid of the home page; `.ds-page__main` the middle column and `.ds-page__side` the right one, both with `--space-4` between blocks. On inner pages `.ds-page__inner` is the single full-width column, `.ds-page__head` stacks path, page header and view tabs, and `.ds-page__pair` sets two `.ds-page__half` columns side by side, the second with `.ds-page__half--ruled`. The page margin is padding inside `.ds-page__frame`, not on `<body>`: when a palette gives `--color-canvas` a colour of its own the frame shows as a sheet on the page and its content keeps that margin from the sheet edge. `.ds-page__frame` takes `--shadow-panel` as well, so a surface set that outlines its boxes also outlines the sheet.\n- `.ds-nav`: header. `.ds-nav__top` holds the `.ds-brand`, `.ds-nav__tagline` and `.ds-nav__tools` (`.ds-nav__tool` items separated by bars). `.ds-nav__links` is the row of folder tabs: each `.ds-nav__link` is an outlined cell in `--fill-bar-alt` with no bottom border; the tab of the view that is showing is taller, bold and takes `--fill-bar`, the fill of the strip it stands on (`components.css` has one selector per view for this, and `is-current` does the same by hand). `.ds-nav__strip` is that strip: `.ds-nav__search` (a bold `.ds-nav__label`, a select, `.ds-nav__field`, a button) at the left and `.ds-nav__aside`, a 10px line of links, at the right.\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 2px `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 square line caps, a 3 unit stroke and crisp edges. `.ds-brand__name` is the name in the heading family at `--text-display`, with the heading weight, tracking and transform, 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 feature of the week, the era's page introduction: an outlined box on `--color-fill-1` with `.ds-hero__art` (a flat `--color-fill-3` block holding a `.ds-hero__glyph`, standing where the period put a cover picture) at the left, and at the right `.ds-hero__kicker` (10px bold capitals), `.ds-hero__title` (18px bold), `.ds-hero__lead` and `.ds-hero__action` (a bold `.ds-hero__price`, one button, a 10px `.ds-hero__more` link). Never a full-width banner and never taller than its text.\n- `.ds-page-header`: the head of an inner page, used instead of `.ds-hero`: `.ds-page-header__text` with `.ds-page-header__title` (20px bold) and `.ds-page-header__lead` (one line), and `.ds-page-header__action` with one button at the right. No fill and no border of its own: the view tabs and their rule close it.\n- `.ds-prose`: running text; styles `h1`, `h2`, `h3`, `p`, `ul`, `ol`, `strong`, `code`; `.ds-prose__lead` for an 18px lead line.\n- `.ds-link`: every link. States `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` for secondary links in the sans face, `.ds-link--strong` for bold links. `.ds-links` wraps a line of links.\n- `.ds-button`: grey bevelled button with a 12px label, on a `<button>` or, when it leads to another page, on a link. `.ds-button--secondary` is a darker grey, `.ds-button--danger` the destructive action (the same bevel on `--color-surface` with a bold label in `--color-danger`, never a coloured button), `.ds-button--large` uses 18px. States `is-hover`, `is-pressed` (the bevel inverts), `is-focus`, `is-disabled`. `.ds-buttons` lays out a row.\n- `.ds-form`: an outlined box on `--color-fill-1`: a `.ds-form__title` strip, then `.ds-form__rows`, a two-column grid of right-aligned `.ds-form__label` and `.ds-form__field`, then `.ds-form__actions`, the button row behind a 1px rule. `.ds-form__mark` is the star of a required field. Controls: `.ds-form__input` (`--short` for 40px fields), `.ds-form__select`, `.ds-form__textarea`, `.ds-form__check` inside a `.ds-form__option` line. `.ds-form__hint` for 10px help, `.ds-form__error` for a bold 10px message under the field (the control itself does not change). A select is a bevelled key in `--fill-button` with `--color-button-text`; a checkbox is a small inset field in `--color-input` whose tick is a block of `--color-input-text`.\n- `.ds-table`: one outline, rows on faint 1px rules, no vertical lines. `.ds-table__head` (gold strip, bold 10px, left-aligned; `--num` right-aligned), every body row carries `.ds-table__row`, which draws the rule under it (cells have no borders of their own), and `.ds-table__row--alt` for grey rows; `.ds-table__cell` with `--num`, `--up`, `--down` and `--group` (a 10px full-width closing row on `--color-fill-2`), `.ds-table__desc` for a 13px sans line under a linked name, `.ds-table__caption` for the 10px lines beneath.\n- `.ds-stat`: the row. Each `.ds-stat__item` is a small outlined box: the `.ds-stat__value` (18px bold) under its `.ds-stat__label`, a 10px grey strip. Three to five boxes with `--space-3` between them; never large numerals.\n- `.ds-list`: the feature list, no bullets: each `.ds-list__item` sits on a faint rule and holds a bold linked `.ds-list__title`, one `.ds-list__text` sentence and a grey 13px sans `.ds-list__meta` line, in which `.ds-list__price` is bold maroon; `.ds-list__more` is the right-aligned bold 10px link. `.ds-heading` is the section title over it, with an optional 10px `.ds-heading__more` at the right.\n- `.ds-panel`: a box of the right column: 1px outline, `.ds-panel__title` strip in `--fill-bar` with an optional 10px `.ds-panel__tool` link at the right, then `.ds-panel__body` in the 13px sans face, holding `.ds-panel__text` lines or a numbered `.ds-panel__rank` of `.ds-panel__entry`, and `.ds-panel__more`.\n- `.ds-grid`: two by two outlined department boxes with `--space-3` between them: each `.ds-grid__cell` (and `--2`, `--3`, `--4`) is filled with one of the four fills, which shows as the strip behind its linked `.ds-grid__title`; the `.ds-grid__text` under it is 13px sans on `--color-surface`.\n- `.ds-tabs`: the view tabs of an inner page: small 10px folder tabs standing on a 2px rule in `--color-bar`; each `.ds-tabs__tab` is an outlined grey cell with a link-coloured label, the current one, `is-current`, taller, bold, not underlined and filled with `--fill-bar`.\n- `.ds-badge`: small solid navy label. `.ds-badge--text` is a bold maroon word beside a link; `.ds-badge--count` is a grey count in brackets. Status labels, typed in capitals: `.ds-badge--success` (green, white text), `.ds-badge--warning` (orange, black text), `.ds-badge--danger` (maroon, white text). `.ds-badges` is a key line under a table.\n- `.ds-sidebar`: the left column of the home page, a stack of `.ds-sidebar__box` outlined boxes: a `.ds-sidebar__title` strip in `--fill-bar-alt`, then a `.ds-sidebar__list` of `.ds-sidebar__item` rows in the 13px sans face, one link to a line with no rules between them, or a 10px `.ds-sidebar__text` line over a `.ds-sidebar__lookup` one-field form with `.ds-sidebar__field`.\n- `.ds-notice`: a grey outlined line in the 13px sans face; `.ds-notice__label` bold lead word, `.ds-notice--center` a centred 10px promotional line, `.ds-notice--error` maroon on white in a maroon outline. `.ds-notices` stacks several.\n- `.ds-pagination`: one line: `.ds-pagination__label` (the count) at the left, then `.ds-pagination__link` keys at the right, each a small bevelled key like a button; the current one, `is-current`, is pressed in and bold; `is-disabled` is greyed.\n- `.ds-breadcrumb`: a 10px path after a grey `.ds-breadcrumb__label`, `.ds-breadcrumb__item` entries separated by \">\", the last one `is-current` (bold).\n- `.ds-dialog`: a 340px message box in the page flow with a 2px bevel, `.ds-dialog__title` bar in `--fill-inverse`, `.ds-dialog__body` and right-aligned `.ds-dialog__actions`. No backdrop, no shadow.\n- `.ds-empty`: centred grey block in a faint outline with `.ds-empty__title`, `.ds-empty__text` and a button.\n- `.ds-footer`: `.ds-footer__links--bar`, a 13px strip of the tab names in `--fill-bar-alt` between two 1px rules, then a plain 10px `.ds-footer__links` row after a bold `.ds-footer__label`, then `.ds-footer__legal` in grey. `.ds-footer__item` entries are separated by bars.\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`: 2px rule in the bar colour; `.ds-rule--thin` a 1px grey rule. `.ds-sprite` hides the SVG symbol sheet.\n\n## Never\n\n- `block-gap <= 12px`: neighbouring blocks are 12px apart.\n- `content-width <= 760px`: the page is a fixed 760px table.\n- `font-size <= 24px`: the brand name is the largest text; headings stop at 18px.\n- `font-size >= 10px`: small print is 10px, nothing smaller.\n- `font-weight >= 400`: only regular and bold were measured.\n- `font-families <= 3`: Times, Trebuchet and Courier.\n- `underlined-links >= 90%`: every reference underlines its links; only a current tab or page key loses the underline.\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 1px and 2px edges; nothing is blurred.\n- `text-shadow = none`: no reference has a text shadow.\n- `gradient-fills <= 16%`: bars, title strips, labels and buttons are shaded top to bottom; boxes, fields and the page are flat.\n- `border-width <= 2px`: outlines are 1px; the widest border measured is the 2px bevel of a control.\n- `transition = none`: nothing changes 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. A new block of a side column is a `.ds-sidebar__box` or a `.ds-panel`: an outline, a title strip, a short list in the 13px sans face. A new block of the middle column is a `.ds-heading` over a `.ds-list`, or one more box of the `.ds-grid`. A new department is one more folder tab; a new view of an inner page is one more of the small `.ds-tabs`. Anything tabular is a `.ds-table` at the full width of an inner page. Keep running text at 16px serif and everything else at 13px or 10px sans-serif, keep links underlined, keep every outline at 1px, and never add radius, shadow, gradient, hover effects, a fourth column or more whitespace than `--space-4` between blocks.\n",
    "components.css": "/* Layout tokens (structure part). Read from the 1999 shop fronts and the 1998\n   software company page: a 760px table centred in an 800px window, a row of\n   folder tabs over a filled strip, then three columns: a 150px column of\n   outlined link boxes, the features in the middle and a 170px column of\n   boxes on the right, with 12px gutters, 2px and 4px cell padding and 12px\n   between blocks. */\n:root {\n  --size-page: 760px;\n  --size-left: 150px;\n  --size-right: 170px;\n  --size-art: 84px;\n  --size-search: 200px;\n  --size-label: 110px;\n  --size-field: 180px;\n  --size-area: 220px;\n  --size-check: 13px;\n  --size-dialog: 340px;\n  --space-1: 2px;\n  --space-2: 4px;\n  --space-3: 8px;\n  --space-4: 12px;\n  --space-5: 16px;\n  --space-6: 20px;\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-3) var(--space-5);\n  background: var(--color-canvas);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-panel);\n}\n/* Home page: link boxes left, features in the middle, boxes right. */\n.ds-page__columns {\n  display: grid;\n  grid-template-columns: var(--size-left) minmax(0, 1fr) var(--size-right);\n  column-gap: var(--space-4);\n  align-items: start;\n  padding: var(--space-4) 0;\n}\n.ds-page__main,\n.ds-page__side,\n.ds-page__inner {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n}\n/* Inner page: one column as wide as the tab row, no side columns. */\n.ds-page__inner {\n  padding: var(--space-3) 0 var(--space-4);\n}\n/* Path, page header and view tabs sit on each other. */\n.ds-page__head {\n  display: flex;\n  flex-direction: column;\n}\n/* Two equal halves side by side behind a rule, for text beside a form. */\n.ds-page__pair {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n  column-gap: var(--space-4);\n  align-items: start;\n}\n.ds-page__half {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n}\n.ds-page__half--ruled {\n  padding: 0 0 0 var(--space-4);\n  border-left: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-sprite {\n  position: absolute;\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: 0;\n  border: 0;\n  border-top: var(--border-width-strong) var(--border-style) var(--color-bar);\n}\n.ds-rule--thin {\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n/* Section title: a bold line closed by a rule in the strong border colour. */\n.ds-heading {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  gap: var(--space-3);\n  margin: 0;\n  padding: 0 0 var(--space-1);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\n  color: var(--color-heading-alt);\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-heading__more {\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\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  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/* ---------- nav: wordmark line, folder tabs, filled strip ---------- */\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: 0 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-2);\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-heading);\n  line-height: var(--line-display);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-nav__tagline {\n  flex: 1;\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-small);\n}\n.ds-nav__tools {\n  display: flex;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  text-transform: var(--ui-transform);\n}\n.ds-nav__tool + .ds-nav__tool::before {\n  content: \"|\";\n  padding: 0 var(--space-2);\n  color: var(--color-text-muted);\n}\n/* No tab is raised on the basket screen: keep the row as tall as when one is. */\n.ds-page:has(#basket:target) .ds-nav__links {\n  padding-top: var(--space-2);\n}\n.ds-page:has(#basket:target) .ds-nav__tool .ds-link[href=\"#basket\"] {\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n/* The tabs stand on the strip; the current one takes the strip's fill. */\n.ds-nav__links {\n  display: flex;\n  align-items: flex-end;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0 var(--space-3);\n  list-style: none;\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}\n.ds-nav__link {\n  display: block;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-bottom: 0;\n  text-decoration: var(--link-decoration-quiet);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n/* The current tab, one selector per view; the welcome tab when the address\n   names no view. The basket is entered from the account links above the\n   tabs, so it is marked there. */\n.ds-nav__link.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#welcome\"],\n.ds-page:has(#welcome:target) .ds-nav__link[href=\"#welcome\"],\n.ds-page:has(#gardening:target) .ds-nav__link[href=\"#gardening\"],\n.ds-page:has(#request:target) .ds-nav__link[href=\"#request\"],\n.ds-page:has(#help:target) .ds-nav__link[href=\"#help\"] {\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-nav__strip {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-4);\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  text-shadow: var(--shadow-text);\n}\n.ds-nav__search {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n}\n.ds-nav__label {\n  font-weight: var(--weight-bold);\n}\n.ds-nav__field {\n  width: var(--size-search);\n}\n.ds-nav__aside {\n  margin: 0;\n  font-size: var(--text-small);\n}\n\n/* ---------- hero: the feature of the week ---------- */\n.ds-hero {\n  display: grid;\n  grid-template-columns: var(--size-art) minmax(0, 1fr);\n  column-gap: var(--space-4);\n  align-items: start;\n  padding: var(--space-3);\n  background: var(--color-fill-1);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n}\n/* Stands where the references show a cover picture: a flat block. */\n.ds-hero__art {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: calc(var(--size-art) + var(--space-6));\n  background: var(--color-fill-3);\n  color: var(--color-heading-alt);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n}\n.ds-hero__glyph {\n  width: calc(var(--size-art) / 2);\n  height: calc(var(--size-art) / 2);\n}\n.ds-hero__kicker {\n  margin: 0;\n  color: var(--color-accent-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-2);\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-hero__lead {\n  margin: 0 0 var(--space-3);\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__price {\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n}\n.ds-hero__more {\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-3) 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-3);\n}\n.ds-prose ul,\n.ds-prose ol {\n  margin: 0 0 var(--space-3);\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-base);\n}\n.ds-prose__lead {\n  font-size: var(--text-large);\n}\n\n/* ---------- page header: title and one line, action at the right ---------- */\n.ds-page-header {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-4);\n  padding: var(--space-1) 0 var(--space-3);\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  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: an outlined, tinted box with a title strip ---------- */\n.ds-form {\n  margin: 0;\n  background: var(--color-fill-1);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-form__title {\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-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-form__rows {\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  column-gap: var(--space-3);\n  row-gap: var(--space-2);\n  align-items: baseline;\n  padding: var(--space-3);\n}\n.ds-form__label {\n  text-align: right;\n}\n.ds-form__mark {\n  color: var(--color-accent-alt);\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: calc(var(--space-6) * 2);\n}\n.ds-form__select {\n  border-style: outset;\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__option {\n  display: block;\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-strong) 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}\n.ds-form__error {\n  display: block;\n  color: var(--color-danger);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-form__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  padding: var(--space-3);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n\n/* ---------- table: rows on faint rules inside one outline ---------- */\n.ds-table {\n  width: 100%;\n  border-collapse: collapse;\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\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-1) var(--space-3);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  text-align: left;\n}\n.ds-table__head--num {\n  text-align: right;\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/* The rule under a row belongs to the row, not to each of its cells. */\n.ds-table__row {\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-table__cell--num {\n  text-align: right;\n}\n.ds-table__cell--up {\n  color: var(--color-heading-alt);\n}\n.ds-table__cell--down {\n  color: var(--color-accent-alt);\n}\n.ds-table__cell--group {\n  background: var(--color-fill-2);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-table__row--alt .ds-table__cell {\n  background: var(--color-surface-alt);\n}\n.ds-table__desc {\n  display: block;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-table__caption {\n  caption-side: bottom;\n  padding: var(--space-2) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  text-align: left;\n}\n\n/* ---------- stats: small outlined boxes, label strip over the figure ---------- */\n.ds-stat {\n  display: flex;\n  gap: var(--space-3);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-stat__item {\n  flex: 1;\n  display: flex;\n  flex-direction: column-reverse;\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  text-align: center;\n}\n.ds-stat__value {\n  display: block;\n  padding: var(--space-1) var(--space-2);\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}\n.ds-stat__label {\n  display: block;\n  padding: var(--space-1) var(--space-2);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- list: features, each a title, a sentence and a small line ---------- */\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: var(--space-2) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-list__title {\n  font-weight: var(--weight-bold);\n}\n.ds-list__text {\n  display: block;\n}\n.ds-list__meta {\n  display: block;\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-list__price {\n  color: var(--color-accent-alt);\n  font-weight: var(--weight-bold);\n}\n.ds-list__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/* ---------- panel: an outlined box under 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-2);\n  margin: 0;\n  padding: var(--space-1) var(--space-2);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-shadow: var(--shadow-text);\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-2);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-panel__text {\n  margin: 0 0 var(--space-2);\n}\n.ds-panel__rank {\n  margin: 0;\n  padding: 0 0 0 var(--space-6);\n}\n.ds-panel__entry {\n  padding: 0 0 var(--space-1);\n}\n.ds-panel__more {\n  margin: var(--space-1) 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/* ---------- grid: four department boxes, a tinted strip over links ---------- */\n.ds-grid {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n  gap: var(--space-3);\n}\n.ds-grid__cell {\n  background: var(--color-fill-1);\n  border: var(--border-width) var(--border-style) var(--color-border);\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  padding: var(--space-1) var(--space-2);\n  color: var(--color-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-grid__text {\n  margin: 0;\n  padding: var(--space-2);\n  background: var(--color-surface);\n  color: var(--color-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\n/* ---------- tabs: small folder tabs standing on a rule ---------- */\n.ds-tabs {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: flex-end;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0 var(--space-3);\n  list-style: none;\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-bar);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  text-transform: var(--ui-transform);\n}\n.ds-tabs__tab {\n  display: block;\n  padding: var(--space-1) var(--space-3);\n  background: var(--color-surface-alt);\n  color: var(--color-link);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-bottom: 0;\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  padding: var(--space-2) var(--space-3) var(--space-1);\n  background: var(--fill-bar);\n  color: var(--color-bar-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-1);\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}\n.ds-badge--count {\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-1);\n}\n\n/* ---------- sidebar: outlined link boxes in the left column ---------- */\n.ds-sidebar {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n}\n.ds-sidebar__box {\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n}\n.ds-sidebar__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-2);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: var(--space-1) var(--space-2);\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-sidebar__item {\n  padding: var(--space-1) 0;\n}\n.ds-sidebar__text {\n  margin: 0;\n  padding: var(--space-2) var(--space-2) 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-sidebar__lookup {\n  display: flex;\n  align-items: center;\n  gap: var(--space-1);\n  margin: 0;\n  padding: var(--space-2);\n}\n.ds-sidebar__field {\n  width: 100%;\n  min-width: 0;\n}\n\n/* ---------- notice ---------- */\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-3);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-notice--center {\n  text-align: center;\n  font-size: var(--text-small);\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 count and a row of small bevelled 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-small);\n}\n.ds-pagination__label {\n  flex: 1;\n}\n.ds-pagination__link {\n  display: block;\n  padding: 0 var(--space-2);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\n  text-decoration: var(--link-decoration-quiet);\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  border-style: inset;\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-pagination__link.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  text-decoration: none;\n}\n\n/* ---------- breadcrumb ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: var(--space-1) 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-breadcrumb__label {\n  padding: 0 var(--space-2) 0 0;\n  color: var(--color-text-muted);\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 bevelled message box in the page flow ---------- */\n.ds-dialog {\n  position: static;\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  max-width: 100%;\n  margin: 0 auto;\n  padding: 0;\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\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  margin: 0;\n  padding: var(--space-1) var(--space-2);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-dialog__body {\n  margin: 0;\n  padding: 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-3) var(--space-3);\n}\n\n/* ---------- empty state ---------- */\n.ds-empty {\n  padding: var(--space-4) var(--space-3);\n  background: var(--color-surface-alt);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-muted);\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-3);\n}\n\n/* ---------- footer: a filled link strip, then small centred lines ---------- */\n.ds-footer {\n  padding: 0;\n  text-align: center;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  list-style: none;\n}\n.ds-footer__links--bar {\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  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-size: var(--text-ui);\n}\n.ds-footer__item + .ds-footer__item::before {\n  content: \"|\";\n  padding: 0 var(--space-3);\n}\n.ds-footer__label {\n  padding: 0 var(--space-2) 0 0;\n  font-weight: var(--weight-bold);\n}\n.ds-footer__legal {\n  margin: 0;\n  padding: 0 0 var(--space-2);\n  color: var(--color-text-muted);\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>Table-era catalogue front, 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<svg class=\"ds-sprite\" width=\"0\" height=\"0\" aria-hidden=\"true\">\n  <symbol id=\"i-cover\" viewBox=\"0 0 42 42\">\n    <path d=\"M6 36l10-20 7 12 5-7 8 15zM30 6a5 5 0 1 1 0 10 5 5 0 0 1 0-10z\" fill=\"currentColor\"/>\n  </symbol>\n</svg>\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=\"3\" stroke-linecap=\"square\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M12 3a9 9 0 1 1-9 9\"/><path d=\"M12 17a5 5 0 1 1 5-5\"/><circle cx=\"12\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/></svg></span>\n        <span class=\"ds-brand__name\">chronoskin</span>\n      </a>\n      <span class=\"ds-nav__tagline\">Books, music and software by post since 1996</span>\n      <ul class=\"ds-nav__tools\">\n        <li class=\"ds-nav__tool\"><a class=\"ds-link\" href=\"#\">Your Account</a></li>\n        <li class=\"ds-nav__tool\"><a class=\"ds-link\" href=\"#basket\">Order Basket</a></li>\n        <li class=\"ds-nav__tool\"><a class=\"ds-link\" href=\"#help\">Help</a></li>\n      </ul>\n    </div>\n    <ul class=\"ds-nav__links\">\n      <li><a class=\"ds-nav__link\" href=\"#welcome\">Welcome</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#gardening\">Books</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#\">Music</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#\">Software</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#\">Gifts</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#request\">Book Search</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#help\">Support</a></li>\n    </ul>\n    <div class=\"ds-nav__strip\">\n      <form class=\"ds-nav__search\" action=\"#\">\n        <label class=\"ds-nav__label\" for=\"q\">Search:</label>\n        <select class=\"ds-form__select\" aria-label=\"Department\">\n          <option>All Departments</option>\n          <option>Books</option>\n          <option>Music</option>\n        </select>\n        <input class=\"ds-form__input ds-nav__field\" id=\"q\" type=\"text\">\n        <button class=\"ds-button\" type=\"button\">Go!</button>\n      </form>\n      <p class=\"ds-nav__aside\"><a class=\"ds-link\" href=\"#gardening\">Browse by subject</a> | <a class=\"ds-link\" href=\"#\">Bestsellers</a> | <a class=\"ds-link\" href=\"#request\">Out of print?</a></p>\n    </div>\n  </header>\n\n  <main>\n\n  <section class=\"ds-view ds-view--home\" id=\"welcome\">\n\n    <div class=\"ds-page__columns\">\n\n      <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n        <section class=\"ds-sidebar__box\">\n          <h2 class=\"ds-sidebar__title\">Fast Find</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#gardening\">Product index</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">New releases</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link is-visited\" href=\"#\">Award winners</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">Bargain shelf</a> <span class=\"ds-badge\">SALE</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">Gift vouchers</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">Trial downloads</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">Catalogue by post</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#basket\">Track an order</a></li>\n          </ul>\n        </section>\n        <section class=\"ds-sidebar__box\">\n          <h2 class=\"ds-sidebar__title\">Reading Rooms</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#gardening\">Gardening</a> <span class=\"ds-badge ds-badge--count\">(412)</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">History</a> <span class=\"ds-badge ds-badge--count\">(380)</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">Mysteries</a> <span class=\"ds-badge ds-badge--count\">(655)</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">Sailing</a> <span class=\"ds-badge ds-badge--count\">(97)</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">Travel</a> <span class=\"ds-badge ds-badge--count\">(204)</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#\">Young readers</a> <span class=\"ds-badge ds-badge--text\">New!</span></li>\n          </ul>\n        </section>\n        <section class=\"ds-sidebar__box\">\n          <h2 class=\"ds-sidebar__title\">Order Desk</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#help\">Postage rates</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#help\">Returns</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#request\">Out of print search</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#help\">Order by telephone</a></li>\n          </ul>\n        </section>\n        <section class=\"ds-sidebar__box\">\n          <h2 class=\"ds-sidebar__title\">By E-mail</h2>\n          <p class=\"ds-sidebar__text\">A letter each Friday with the week's new titles.</p>\n          <form class=\"ds-sidebar__lookup\" action=\"#\">\n            <input class=\"ds-form__input ds-sidebar__field\" type=\"text\" aria-label=\"Your e-mail address\">\n            <button class=\"ds-button\" type=\"button\">Join</button>\n          </form>\n        </section>\n      </aside>\n\n      <div class=\"ds-page__main\">\n\n        <section class=\"ds-hero\" data-component=\"hero\">\n          <div class=\"ds-hero__art\"><svg class=\"ds-hero__glyph\" aria-hidden=\"true\"><use href=\"#i-cover\"/></svg></div>\n          <div>\n            <p class=\"ds-hero__kicker\">BOOK OF THE MONTH</p>\n            <h1 class=\"ds-hero__title\">A Year on the Salt Marsh</h1>\n            <p class=\"ds-hero__lead\">Twelve walks, one for each month, with tide tables and a bird list for every season. Hardback, 240 pages, posted the day you order.</p>\n            <div class=\"ds-hero__action\">\n              <span class=\"ds-hero__price\">Our price: $14.95</span>\n              <button class=\"ds-button\" type=\"button\">Add to Basket</button>\n              <span class=\"ds-hero__more\"><a class=\"ds-link\" href=\"#\">Read chapter one</a></span>\n            </div>\n          </div>\n        </section>\n\n        <section>\n          <h2 class=\"ds-heading\">New This Week <span class=\"ds-heading__more\"><a class=\"ds-link\" href=\"#gardening\">see all 48</a></span></h2>\n          <ul class=\"ds-list\" data-component=\"list\">\n            <li class=\"ds-list__item\">\n              <a class=\"ds-link ds-list__title\" href=\"#\">Ledgerbook Home Accounts 3.0</a>\n              <span class=\"ds-list__text\">Keeps a household's books and prints the forms at the end of the year.</span>\n              <span class=\"ds-list__meta\">Software, CD-ROM. <span class=\"ds-list__price\">$39.00</span>. Ships in 24 hours.</span>\n            </li>\n            <li class=\"ds-list__item\">\n              <a class=\"ds-link ds-list__title\" href=\"#\">Songs from the Lower Deck</a>\n              <span class=\"ds-list__text\">Twenty shanties recorded on a working ferry, with the words in the booklet.</span>\n              <span class=\"ds-list__meta\">Music, compact disc. <span class=\"ds-list__price\">$11.50</span>. Ships in 2 to 3 days.</span>\n            </li>\n            <li class=\"ds-list__item\">\n              <a class=\"ds-link ds-list__title is-visited\" href=\"#gardening\">The Allotment Almanac</a>\n              <span class=\"ds-list__text\">What to sow and when, month by month, for a plot of any size.</span>\n              <span class=\"ds-list__meta\">Books, paperback. <span class=\"ds-list__price\">$8.95</span>. Ships in 24 hours.</span>\n            </li>\n          </ul>\n          <p class=\"ds-list__more\"><a class=\"ds-link\" href=\"#\">More new titles...</a></p>\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=\"#gardening\">Books</a></p>\n            <p class=\"ds-grid__text\">Fiction, travel, cookery, crafts and 30 more subjects.</p>\n          </div>\n          <div class=\"ds-grid__cell ds-grid__cell--2\">\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#\">Music</a></p>\n            <p class=\"ds-grid__text\">Folk, jazz, brass bands and the classical catalogue.</p>\n          </div>\n          <div class=\"ds-grid__cell ds-grid__cell--3\">\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#\">Software</a></p>\n            <p class=\"ds-grid__text\">Home, school and small office, with free trial copies.</p>\n          </div>\n          <div class=\"ds-grid__cell ds-grid__cell--4\">\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#\">Gifts</a></p>\n            <p class=\"ds-grid__text\">Vouchers, boxed sets and wrapping for a dollar.</p>\n          </div>\n        </div>\n\n      </div>\n\n      <div class=\"ds-page__side\">\n        <section class=\"ds-panel\" data-component=\"panel\">\n          <h2 class=\"ds-panel__title\">Top Sellers <a class=\"ds-link ds-panel__tool\" href=\"#\">all 100</a></h2>\n          <div class=\"ds-panel__body\">\n            <ol class=\"ds-panel__rank\">\n              <li class=\"ds-panel__entry\"><a class=\"ds-link\" href=\"#\">The Tide Clock</a></li>\n              <li class=\"ds-panel__entry\"><a class=\"ds-link\" href=\"#\">Bread at Home</a></li>\n              <li class=\"ds-panel__entry\"><a class=\"ds-link\" href=\"#\">Typing Tutor 5</a></li>\n              <li class=\"ds-panel__entry\"><a class=\"ds-link is-visited\" href=\"#\">Hill Farm Diary</a></li>\n              <li class=\"ds-panel__entry\"><a class=\"ds-link\" href=\"#\">Atlas of Canals</a></li>\n            </ol>\n            <p class=\"ds-panel__more\"><a class=\"ds-link\" href=\"#\">Updated hourly</a></p>\n          </div>\n        </section>\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Company News</h2>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__text\"><a class=\"ds-link\" href=\"#\">New warehouse opens in Port Alder</a></p>\n            <p class=\"ds-panel__text\"><a class=\"ds-link\" href=\"#\">Free trial of Ledgerbook 3.0</a></p>\n            <p class=\"ds-panel__text\"><a class=\"ds-link\" href=\"#\">Autumn catalogue now in the post</a></p>\n            <p class=\"ds-panel__more\"><a class=\"ds-link\" href=\"#\">Press room</a></p>\n          </div>\n        </section>\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Order With Confidence</h2>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__text\">Every page that asks for a card number is sent in code. If you would rather not, <a class=\"ds-link\" href=\"#help\">order by telephone</a>.</p>\n            <p class=\"ds-panel__text\">Anything may be <a class=\"ds-link\" href=\"#help\">returned</a> within 30 days.</p>\n          </div>\n        </section>\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Bargain Shelf <a class=\"ds-link ds-panel__tool\" href=\"#gardening\">all 60</a></h2>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__text\"><a class=\"ds-link\" href=\"#gardening\">Roses for Cold Gardens</a>, hardback, now $19.50.</p>\n            <p class=\"ds-panel__text\"><a class=\"ds-link\" href=\"#\">Typing Tutor 4</a>, boxed, now $12.00.</p>\n          </div>\n        </section>\n        <p class=\"ds-notice ds-notice--center\"><span class=\"ds-notice__label\">Free postage</span> on every order of three items or more until June 30.</p>\n      </div>\n\n    </div>\n\n  </section>\n\n  <section class=\"ds-view\" id=\"gardening\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"Path\">\n          <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n            <li class=\"ds-breadcrumb__label\">You are here:</li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#welcome\">Welcome</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#gardening\">Books</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Gardening</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\">Gardening</h1>\n            <p class=\"ds-page-header__lead\">Every gardening title in stock, with the date it can leave the warehouse.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#basket\">View Basket</a>\n          </div>\n        </header>\n        <ul class=\"ds-tabs\" data-component=\"tabs\">\n          <li><a class=\"ds-tabs__tab is-current\" href=\"#gardening\">In Stock</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#gardening\">Coming Soon</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#gardening\">Bargains</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#gardening\">Readers' Reviews</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#request\">Out of Print</a></li>\n        </ul>\n      </div>\n\n      <ul class=\"ds-stat\" data-component=\"stats\">\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">412</span> <span class=\"ds-stat__label\">titles in stock</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">36</span> <span class=\"ds-stat__label\">new this month</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">24 hrs</span> <span class=\"ds-stat__label\">usual dispatch</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">1,208</span> <span class=\"ds-stat__label\">readers' reviews</span></li>\n      </ul>\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\">IN STOCK</span> leaves today <span class=\"ds-badge ds-badge--warning\">ON ORDER</span> two weeks <span class=\"ds-badge ds-badge--danger\">OUT OF PRINT</span> we will search for a copy <span class=\"ds-badge\">NEW</span> added this month</span>\n          Prices are in US dollars and do not include postage. <a class=\"ds-link\" href=\"#help\">Postage rates</a> | <a class=\"ds-link\" href=\"#gardening\">Sort by author</a>\n        </caption>\n        <thead>\n          <tr>\n            <th class=\"ds-table__head\" scope=\"col\">Title</th>\n            <th class=\"ds-table__head\" scope=\"col\">Format</th>\n            <th class=\"ds-table__head\" scope=\"col\">Status</th>\n            <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Our Price</th>\n            <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">You Save</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr class=\"ds-table__row\">\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#gardening\">The Allotment Almanac</a> <span class=\"ds-badge\">NEW</span> <span class=\"ds-table__desc\">R. Okafor. What to sow and when, month by month.</span></td>\n            <td class=\"ds-table__cell\">Paperback</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">IN STOCK</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">8.95</td>\n            <td class=\"ds-table__cell ds-table__cell--num ds-table__cell--up\">1.00</td>\n          </tr>\n          <tr class=\"ds-table__row ds-table__row--alt\">\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#gardening\">Roses for Cold Gardens</a> <span class=\"ds-table__desc\">M. Lindqvist. Sixty hardy kinds, with pruning charts.</span></td>\n            <td class=\"ds-table__cell\">Hardback</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">IN STOCK</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">19.50</td>\n            <td class=\"ds-table__cell ds-table__cell--num ds-table__cell--up\">3.45</td>\n          </tr>\n          <tr class=\"ds-table__row\">\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#gardening\">The Small Greenhouse</a> <span class=\"ds-table__desc\">P. Arden. Building, heating and filling one.</span></td>\n            <td class=\"ds-table__cell\">Paperback</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">ON ORDER</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">12.00</td>\n            <td class=\"ds-table__cell ds-table__cell--num ds-table__cell--up\">2.00</td>\n          </tr>\n          <tr class=\"ds-table__row ds-table__row--alt\">\n            <td class=\"ds-table__cell\"><a class=\"ds-link is-visited\" href=\"#request\">Hedges and Their Keeping</a> <span class=\"ds-table__desc\">T. Marsh. The 1974 handbook, long sought after.</span></td>\n            <td class=\"ds-table__cell\">Hardback</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">OUT OF PRINT</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">24.00</td>\n            <td class=\"ds-table__cell ds-table__cell--num ds-table__cell--down\">0.00</td>\n          </tr>\n          <tr class=\"ds-table__row\">\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#gardening\">A Year on the Salt Marsh</a> <span class=\"ds-table__desc\">J. Whitlow. Twelve walks, with a bird list for every season.</span></td>\n            <td class=\"ds-table__cell\">Hardback</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">IN STOCK</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">14.95</td>\n            <td class=\"ds-table__cell ds-table__cell--num ds-table__cell--up\">2.55</td>\n          </tr>\n          <tr class=\"ds-table__row\">\n            <td class=\"ds-table__cell ds-table__cell--group\" colspan=\"5\">Titles 6 to 10 of 412. <a class=\"ds-link\" href=\"#gardening\">Show 25 to a page</a></td>\n          </tr>\n        </tbody>\n      </table>\n\n      <ol class=\"ds-pagination\" data-component=\"pagination\">\n        <li class=\"ds-pagination__label\">Page 2 of 83</li>\n        <li><a class=\"ds-pagination__link\" href=\"#gardening\">&lt; Previous</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#gardening\">1</a></li>\n        <li><a class=\"ds-pagination__link is-current\" href=\"#gardening\">2</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#gardening\">3</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#gardening\">4</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#gardening\">5</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#gardening\">Next &gt;</a></li>\n      </ol>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"request\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"Path\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__label\">You are here:</li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#welcome\">Welcome</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#gardening\">Books</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Book Search</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\">Book Search</h1>\n            <p class=\"ds-page-header__lead\">Out of print? Leave a request and our desk will look for a copy.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#gardening\">Back to Books</a>\n          </div>\n        </header>\n        <ul class=\"ds-tabs\">\n          <li><a class=\"ds-tabs__tab is-current\" href=\"#request\">New Request</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#request\">My Requests</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#request\">Found This Month</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#help\">How Ordering Works</a></li>\n        </ul>\n      </div>\n\n      <div class=\"ds-page__pair\">\n        <div class=\"ds-page__half\">\n          <article class=\"ds-prose\">\n            <h2>How the search works</h2>\n            <p>Our book search desk writes to 200 second-hand dealers each week. When a copy turns up we tell you its condition and its price, and you decide.</p>\n            <ul>\n              <li>A request costs nothing and stays open for a year.</li>\n              <li>You are never obliged to buy the copy we find.</li>\n              <li>Most titles are found within six weeks.</li>\n            </ul>\n          </article>\n          <section>\n            <h2 class=\"ds-heading\">Found This Month <span class=\"ds-heading__more\"><a class=\"ds-link\" href=\"#request\">see all 61</a></span></h2>\n            <ul class=\"ds-list\">\n              <li class=\"ds-list__item\">\n                <a class=\"ds-link ds-list__title\" href=\"#request\">Hedges and Their Keeping</a>\n                <span class=\"ds-list__text\">The 1974 handbook, in its dust jacket, from a dealer in Port Alder.</span>\n                <span class=\"ds-list__meta\">Hardback, good. <span class=\"ds-list__price\">$24.00</span>. Found in 3 weeks.</span>\n              </li>\n              <li class=\"ds-list__item\">\n                <a class=\"ds-link ds-list__title\" href=\"#request\">Knots for Small Boats</a>\n                <span class=\"ds-list__text\">A school prize copy with the owner's notes in pencil.</span>\n                <span class=\"ds-list__meta\">Paperback, fair. <span class=\"ds-list__price\">$6.50</span>. Found in 5 weeks.</span>\n              </li>\n            </ul>\n          </section>\n        </div>\n\n        <div class=\"ds-page__half ds-page__half--ruled\">\n          <div class=\"ds-notices\" data-component=\"notice\">\n            <p class=\"ds-notice\"><span class=\"ds-notice__label\">Note:</span> requests sent before 3 p.m. reach the desk the same day.</p>\n            <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__label\">Sorry!</span> We could not take your request. Please correct the marked field.</p>\n          </div>\n          <form class=\"ds-form\" data-component=\"form\" action=\"#request\">\n            <h2 class=\"ds-form__title\">Book Search Request</h2>\n            <div class=\"ds-form__rows\">\n              <label class=\"ds-form__label\" for=\"f-title\"><span class=\"ds-form__mark\">*</span> Title wanted:</label>\n              <div class=\"ds-form__field\">\n                <input class=\"ds-form__input\" id=\"f-title\" type=\"text\">\n                <span class=\"ds-form__error\">Please give the title or the author.</span>\n              </div>\n              <label class=\"ds-form__label\" for=\"f-mail\"><span class=\"ds-form__mark\">*</span> Your e-mail:</label>\n              <div class=\"ds-form__field\">\n                <input class=\"ds-form__input\" id=\"f-mail\" type=\"text\" value=\"okafor@example.net\">\n              </div>\n              <label class=\"ds-form__label\" for=\"f-max\">Pay up to:</label>\n              <div class=\"ds-form__field\">\n                <input class=\"ds-form__input ds-form__input--short\" id=\"f-max\" type=\"text\" value=\"30\">\n                <span class=\"ds-form__hint\">(whole dollars)</span>\n              </div>\n              <label class=\"ds-form__label\" for=\"f-kind\">Binding:</label>\n              <div class=\"ds-form__field\">\n                <select class=\"ds-form__select\" id=\"f-kind\">\n                  <option>Hardback</option>\n                  <option>Paperback</option>\n                  <option>Either</option>\n                </select>\n              </div>\n              <span class=\"ds-form__label\">Also:</span>\n              <div class=\"ds-form__field\">\n                <label class=\"ds-form__option\"><input class=\"ds-form__check\" type=\"checkbox\" checked>used copies are welcome</label>\n                <label class=\"ds-form__option\"><input class=\"ds-form__check\" type=\"checkbox\">send the weekly letter</label>\n              </div>\n              <label class=\"ds-form__label\" for=\"f-note\">Notes:</label>\n              <div class=\"ds-form__field\">\n                <textarea class=\"ds-form__textarea\" id=\"f-note\" rows=\"3\"></textarea>\n              </div>\n            </div>\n            <div class=\"ds-form__actions\" data-component=\"buttons\">\n              <button class=\"ds-button\" type=\"button\">Send Request</button>\n              <button class=\"ds-button ds-button--secondary\" type=\"button\">Clear</button>\n              <button class=\"ds-button\" type=\"button\" disabled>Preview</button>\n              <button class=\"ds-button ds-button--danger\" type=\"button\">Cancel Request</button>\n            </div>\n          </form>\n          <section class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n            <h2 class=\"ds-dialog__title\" id=\"d-title\">Cancel this request?</h2>\n            <p class=\"ds-dialog__body\">The desk will stop looking for this title. Your <a class=\"ds-link\" href=\"#request\">other requests</a> are not changed.</p>\n            <div class=\"ds-dialog__actions\">\n              <button class=\"ds-button ds-button--danger\" type=\"button\">Cancel Request</button>\n              <button class=\"ds-button ds-button--secondary\" type=\"button\">Keep Looking</button>\n            </div>\n          </section>\n        </div>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"basket\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"Path\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__label\">You are here:</li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#welcome\">Welcome</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#basket\">Your Account</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Order Basket</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\">Order Basket</h1>\n            <p class=\"ds-page-header__lead\">Titles you choose wait here until you are ready to order.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#gardening\">Continue Shopping</a>\n          </div>\n        </header>\n        <ul class=\"ds-tabs\">\n          <li><a class=\"ds-tabs__tab is-current\" href=\"#basket\">Basket</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#basket\">Saved List</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#basket\">Past Orders</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#help\">Postage Rates</a></li>\n        </ul>\n      </div>\n\n      <section class=\"ds-empty\" data-component=\"empty\">\n        <h2 class=\"ds-empty__title\">Your basket is empty.</h2>\n        <p class=\"ds-empty__text\">Titles you choose are kept here for 30 days. <a class=\"ds-link\" href=\"#gardening\">Browse the gardening shelf</a> to begin.</p>\n        <a class=\"ds-button\" href=\"#gardening\">Continue Shopping</a>\n      </section>\n\n      <div class=\"ds-page__pair\">\n        <div class=\"ds-page__half\">\n          <h2 class=\"ds-heading\">New This Week <span class=\"ds-heading__more\"><a class=\"ds-link\" href=\"#gardening\">see all 48</a></span></h2>\n          <ul class=\"ds-list\">\n            <li class=\"ds-list__item\">\n              <a class=\"ds-link ds-list__title\" href=\"#gardening\">The Allotment Almanac</a>\n              <span class=\"ds-list__text\">What to sow and when, month by month, for a plot of any size.</span>\n              <span class=\"ds-list__meta\">Books, paperback. <span class=\"ds-list__price\">$8.95</span>. Ships in 24 hours.</span>\n            </li>\n            <li class=\"ds-list__item\">\n              <a class=\"ds-link ds-list__title\" href=\"#welcome\">Songs from the Lower Deck</a>\n              <span class=\"ds-list__text\">Twenty shanties recorded on a working ferry, with the words in the booklet.</span>\n              <span class=\"ds-list__meta\">Music, compact disc. <span class=\"ds-list__price\">$11.50</span>. Ships in 2 to 3 days.</span>\n            </li>\n          </ul>\n        </div>\n        <div class=\"ds-page__half ds-page__half--ruled\">\n          <section class=\"ds-panel\">\n            <h2 class=\"ds-panel__title\">Order With Confidence <a class=\"ds-link ds-panel__tool\" href=\"#help\">how it works</a></h2>\n            <div class=\"ds-panel__body\">\n              <p class=\"ds-panel__text\">Every page that asks for a card number is sent in code. We do not charge your card until the parcel is sealed.</p>\n              <p class=\"ds-panel__text\">Anything may be <a class=\"ds-link\" href=\"#help\">returned</a> within 30 days.</p>\n            </div>\n          </section>\n          <p class=\"ds-notice ds-notice--center\"><span class=\"ds-notice__label\">Free postage</span> on every order of three items or more until June 30.</p>\n        </div>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"help\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"Path\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__label\">You are here:</li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#welcome\">Welcome</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#help\">Support</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Ordering</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\">Support</h1>\n            <p class=\"ds-page-header__lead\">How ordering, paying, posting and returning work.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#basket\">Order Basket</a>\n          </div>\n        </header>\n        <ul class=\"ds-tabs\">\n          <li><a class=\"ds-tabs__tab is-current\" href=\"#help\">Ordering</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#help\">Postage Rates</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#help\">Returns</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#request\">Book Search</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#help\">Write to Us</a></li>\n        </ul>\n      </div>\n\n      <div class=\"ds-page__pair\">\n        <div class=\"ds-page__half\">\n          <article class=\"ds-prose\" data-component=\"typography\">\n            <h1>How ordering works</h1>\n            <p class=\"ds-prose__lead\">Choose, fill in one form, and the parcel leaves the next working day.</p>\n            <p>Everything marked <strong>in stock</strong> is on our own shelves. We do not charge your card until the parcel is sealed.</p>\n            <h2>Paying</h2>\n            <p>Pay by card on this site, or print the order form and post it with a cheque. Quote the code <code>CS-GARDEN</code> on the back.</p>\n            <ul>\n              <li>Postage is charged once for each parcel.</li>\n              <li>Three items or more travel free.</li>\n              <li>Anything may be returned within 30 days.</li>\n            </ul>\n            <h3>Out of print titles</h3>\n            <p>Leave a request and our book search desk will write to you when a copy is found.</p>\n          </article>\n          <p class=\"ds-links\" data-component=\"links\">\n            See also:\n            <a class=\"ds-link\" href=\"#request\">book search</a>,\n            <a class=\"ds-link is-visited\" href=\"#gardening\">the gardening shelf</a>,\n            <a class=\"ds-link is-hover\" href=\"#help\">gift wrapping</a>,\n            <a class=\"ds-link is-active\" href=\"#help\">the order form to print</a>,\n            <a class=\"ds-link ds-link--quiet\" href=\"#help\">catalogue by post</a>,\n            <a class=\"ds-link ds-link--strong\" href=\"#basket\">your basket</a>\n          </p>\n        </div>\n\n        <div class=\"ds-page__half ds-page__half--ruled\">\n          <table class=\"ds-table\">\n            <caption class=\"ds-table__caption\">Postage for one parcel, in US dollars. Three items or more travel free.</caption>\n            <thead>\n              <tr>\n                <th class=\"ds-table__head\" scope=\"col\">Parcel</th>\n                <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Inland</th>\n                <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Abroad</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell\">One book or disc</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">2.50</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">5.00</td>\n              </tr>\n              <tr class=\"ds-table__row ds-table__row--alt\">\n                <td class=\"ds-table__cell\">Two items</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">3.50</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">7.50</td>\n              </tr>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell\">Boxed software</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">4.00</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">9.00</td>\n              </tr>\n              <tr class=\"ds-table__row ds-table__row--alt\">\n                <td class=\"ds-table__cell\">Gift wrapping</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">1.00</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">1.00</td>\n              </tr>\n            </tbody>\n          </table>\n          <section class=\"ds-panel\">\n            <h2 class=\"ds-panel__title\">Most Asked <a class=\"ds-link ds-panel__tool\" href=\"#help\">all 40</a></h2>\n            <div class=\"ds-panel__body\">\n              <ol class=\"ds-panel__rank\">\n                <li class=\"ds-panel__entry\"><a class=\"ds-link\" href=\"#basket\">Where is my parcel?</a></li>\n                <li class=\"ds-panel__entry\"><a class=\"ds-link\" href=\"#help\">How do I send something back?</a></li>\n                <li class=\"ds-panel__entry\"><a class=\"ds-link\" href=\"#request\">Can you find an old book?</a></li>\n                <li class=\"ds-panel__entry\"><a class=\"ds-link is-visited\" href=\"#help\">Is it safe to type my card number?</a></li>\n              </ol>\n              <p class=\"ds-panel__more\"><a class=\"ds-link\" href=\"#help\">Write to the desk</a></p>\n            </div>\n          </section>\n          <p class=\"ds-notice\"><span class=\"ds-notice__label\">By telephone:</span> the order desk answers from 8 a.m. to 8 p.m., Monday to Saturday.</p>\n        </div>\n      </div>\n\n    </div>\n  </section>\n\n  </main>\n\n  <footer class=\"ds-footer\" data-component=\"footer\">\n    <ul class=\"ds-footer__links ds-footer__links--bar\">\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#welcome\">Welcome</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#gardening\">Books</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#\">Music</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#\">Software</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#\">Gifts</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#request\">Book Search</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#help\">Support</a></li>\n    </ul>\n    <ul class=\"ds-footer__links\">\n      <li class=\"ds-footer__label\">chronoskin:</li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#\">About Us</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#help\">Postage Rates</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#help\">Returns</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#\">Jobs</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#\">Privacy</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#\">Site Map</a></li>\n    </ul>\n    <p class=\"ds-footer__legal\">Copyright 1999 chronoskin. All rights reserved. Best viewed at 800 by 600.</p>\n  </footer>\n\n</div>\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.table-era-90s.portal.s04.p04.t04.u04\",\n  \"library\": \"2026.10.07-2111\",\n  \"era\": {\n    \"slug\": \"table-era-90s\",\n    \"years\": [\n      1996,\n      2000\n    ]\n  },\n  \"archetype\": \"portal\",\n  \"mode\": \"pure\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 800,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-te-4444\",\n  \"short\": \"v1-te-4444\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #ffffff;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #efefef;\n  --color-surface-strong: #e0e0e0;\n  --color-bar: #ffe888;\n  --color-bar-text: #000000;\n  --color-bar-alt: #e0e0e0;\n  --color-bar-alt-text: #000000;\n  --color-inverse: #003098;\n  --color-inverse-text: #ffffff;\n  --color-text: #000000;\n  --color-text-muted: #686868;\n  --color-heading: #000000;\n  --color-heading-alt: #003098;\n  --color-link: #ff0000;\n  --color-link-quiet: #ff0000;\n  --color-link-visited: #900000;\n  --color-link-hover: #ff0000;\n  --color-link-active: #003098;\n  --color-border: #989898;\n  --color-border-strong: #000000;\n  --color-border-muted: #c0c0c0;\n  --color-accent: #003098;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #900000;\n  --color-fill-1: #efefef;\n  --color-fill-2: #e0e0e0;\n  --color-fill-3: #ffe888;\n  --color-fill-4: #ffffff;\n  --color-button: #efefef;\n  --color-button-text: #000000;\n  --color-button-hover-text: #000000;\n  --color-button-secondary: #c0c0c0;\n  --color-button-secondary-text: #000000;\n  --color-input: #ffffff;\n  --color-input-text: #000000;\n  --color-input-border: #c0c0c0;\n  --color-disabled: #efefef;\n  --color-disabled-text: #989898;\n  --color-danger: #900000;\n  --color-danger-surface: #ffffff;\n  --color-success: #006600;\n  --color-warning: #ff5000;\n  --color-notice: #efefef;\n  --color-notice-text: #000000;\n  --color-focus: #000000;\n  --color-shadow: #000000;\n  --color-overlay: #ffffff;\n}\n\n/* @part type */\n:root {\n  --font-body: \"Times New Roman\", Times, serif;\n  --font-heading: \"Trebuchet MS\", Arial, Helvetica, sans-serif;\n  --font-ui: \"Trebuchet MS\", Arial, Helvetica, sans-serif;\n  --font-mono: \"Courier New\", Courier, monospace;\n  --text-base: 16px;\n  --text-small: 11px;\n  --text-ui: 12px;\n  --text-large: 18px;\n  --text-display: 24px;\n  --text-h1: 20px;\n  --text-h2: 16px;\n  --text-h3: 13px;\n  --line-body: normal;\n  --line-heading: normal;\n  --line-display: 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  --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: 0 0 0 1px var(--color-border-muted), 2px 2px 0 1px var(--color-border-muted);\n  --shadow-control: none;\n  --shadow-control-hover: none;\n  --shadow-control-pressed: none;\n  --shadow-dialog: 2px 2px 0 var(--color-border);\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: linear-gradient(color-mix(in srgb, var(--color-bar) 20%, white), var(--color-bar));\n  --fill-bar-alt: linear-gradient(color-mix(in srgb, var(--color-bar-alt) 20%, white), var(--color-bar-alt));\n  --fill-inverse: linear-gradient(color-mix(in srgb, var(--color-inverse) 55%, white), var(--color-inverse));\n  --fill-accent: linear-gradient(color-mix(in srgb, var(--color-accent) 55%, white), var(--color-accent));\n  --fill-panel: var(--color-surface);\n  --fill-button: linear-gradient(color-mix(in srgb, var(--color-button) 30%, white), var(--color-button));\n  --fill-button-hover: linear-gradient(color-mix(in srgb, var(--color-button) 30%, white), var(--color-button));\n  --fill-button-secondary: linear-gradient(color-mix(in srgb, var(--color-button-secondary) 45%, white), 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"
  }
}
