{
  "id": "v1-br-613b",
  "long_id": "v1.brutalism.shop.s06.p01.t03.u11",
  "name": "Web brutalism, shop",
  "era": {
    "slug": "brutalism",
    "code": "br",
    "name": "Web brutalism",
    "years": [
      2014,
      2019
    ],
    "description": "The reaction to polish, 2014 to 2019: raw default-looking pages, system and monospace type, hard black rules, harsh or absent colour, and layouts that show their structure instead of hiding it."
  },
  "archetype": "shop",
  "mode": "mix",
  "viewport": {
    "width": 1440,
    "fluid": true,
    "responsive": true
  },
  "summary": "The shop stripped to nothing, as run between 2014 and 2019 by one-person businesses and by larger ones that never changed their page: a single narrow sheet in the middle of the window with a centred letterhead, one orange line of links, and the goods as a ruled table of numbers, names and prices. The sheet is a pale beige on white, the text small dark Verdana with plain Times headings, links navy and purple, and every rule is the browser's own grooved line, the kind a bordered table or a horizontal rule draws when nobody styles it. There are no pictures, no cards that float, no rounded corners and nothing that moves; a thing is found by its number and bought with a default-looking button.",
  "url": "https://chrono.skin/s/v1-br-613b",
  "preview_url": "https://chrono.skin/s/v1-br-613b/specimen.html",
  "files": {
    "STYLE.md": "# Web brutalism, shop\n\n## Summary\n\nThe shop stripped to nothing, as run between 2014 and 2019 by one-person businesses and by larger ones that never changed their page: a single narrow sheet in the middle of the window with a centred letterhead, one orange line of links, and the goods as a ruled table of numbers, names and prices. The sheet is a pale beige on white, the text small dark Verdana with plain Times headings, links navy and purple, and every rule is the browser's own grooved line, the kind a bordered table or a horizontal rule draws when nobody styles it. There are no pictures, no cards that float, no rounded corners and nothing that moves; a thing is found by its number and bought with a default-looking button.\n\n## Layout\n\n- One centred sheet. `.ds-page` keeps a margin of `--space-3` (8px); `.ds-page__frame` is at most `--size-page` (940px) wide, centred, filled with `--color-canvas`, and holds everything: header, views and footer. `--fill-page` shows at both sides of it on a wide window.\n- `.ds-nav` is a letterhead: `.ds-nav__head` centres the `.ds-brand` and a small grey `.ds-nav__tagline`; under it `.ds-nav__bar` is one line of `--fill-bar` with the links centred on it. There is no second row and no navigation at the side.\n- Every view is one `.ds-page__body` (padding `--space-4`, 12px). The home page opens with `.ds-hero`, centred, closed by a heavy rule, then `.ds-stats` across the sheet, then `.ds-page__columns`: `.ds-page__main` and, `--space-5` (20px) to its right, `.ds-sidebar` at `--size-sidebar` (240px). The sidebar has no fill and no rule of its own; it starts with the basket as a `.ds-panel`.\n- The main column is a stack of `.ds-page__section` blocks `--space-5` apart. A block opens with a `.ds-page__label`: a bold Times line on a 1px rule, with an optional small link at its right end (`.ds-page__more`). On the home page: the departments as a `.ds-grid`, a short table of what to sow now, the shop's notes as a `.ds-list`.\n- Inner pages (a department, one item, the basket, the checkout) keep the letterhead, the line of links, the two columns and the footer. `.ds-page__body` opens with the `.ds-breadcrumb` in 10px, then `.ds-page-header` (26px Times title, one line of description, one button or a status at the right, a heavy rule below) across the sheet; the hero and the figures are not used. Below it the main column carries `.ds-tabs` with the `.ds-table` in `.ds-tabs__body` and `.ds-pagination` centred under it, or running text, or the form; the sidebar carries what belongs to that page (the box you buy from, the sum to pay, the facts), filled so that the columns end near each other.\n- Views. The specimen is one small site with five views, one showing at a time; the header and footer are written once around them. `shop` is the home page: hero, figures, departments, a table of what to sow now, notes, with the basket and departments beside them. `department` is one department: tabs over the full table, pagination, the empty state of the sale, the marks explained. `item` is one item: running text, a small table, related items, and the box to buy it from. `basket` is the table of lines with their quantities, the four actions, the confirmation for emptying it and the sum. `checkout` is the two messages the form can answer with, the form with its error, and the order beside it. A view is `<section class=\"ds-view\" id=\"...\">`; links between views are plain `href=\"#id\"`.\n- Spacing scale: `--space-1` 2px is the vertical padding of the bar, buttons, inputs and tabs and the gap under a label; `--space-2` 4px is the padding of table cells (vertical), badges and panel titles; `--space-3` 8px is the page margin, the padding of panels, grid cells and table cells (horizontal), the gap between grid cells and between buttons; `--space-4` 12px is the padding of the sheet, the gap between paragraphs and between form rows; `--space-5` 20px is the gap between blocks and between the columns; `--space-6` 32px is the indent of lists and the space at the foot of the sheet.\n- Fixed sizes: `--size-field` 300px is a text input, `--size-qty` 56px a quantity, `--size-num` 80px a numeric or action column of a table, `--size-dialog` 400px a dialog.\n- Below 800px the sheet takes the whole window with no margin. The columns stack, the main column before the sidebar; figures go two to a line, the grid is two columns, the page header puts its action under the text and table cells marked `.ds-table__extra` are left out.\n- On a phone (800px and below) there is no menu button and no other change to the bar: `.ds-nav__bar` stays a centred, wrapping line of its links, with link padding `--space-1` by `--space-3`. The current page stays an inverted block.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- A dark page: `--color-page`, `--color-canvas` and `--color-surface` are #0c0c0c, `--color-surface-alt` #181818 (alternate table rows, tags), `--color-surface-strong` #202020 (label strips, panel titles, inline code).\n- `--color-bar` #ac130d with white `--color-bar-text` is the red block of navigation links, table heads and dialog titles. `--color-bar-alt` #202020 with #a0a0a0 text is the footer. `--color-inverse` #dedede with #0c0c0c text is the light block of the current navigation row, the current tab and the current page number.\n- Text is grey-white in three steps: `--color-text` and `--color-heading` #dedede, `--color-heading-alt` #c4c4c4 (sidebar and panel titles), `--color-text-muted` and `--color-link-quiet` #a0a0a0 (numbers, dates, meta, captions, tabs, sidebar links).\n- `--color-link` #8ab1ff, visited #5070b1, hover and active #ffffff.\n- Rules are greys: `--color-border` #585858 between cells, `--color-border-strong` #a0a0a0 for the rail, the frame, the hero and page header and around dialogs, `--color-border-muted` #303030 for the edge of a disabled button.\n- Block fills are the dark tints of tags and messages: `--color-fill-1` #3b320d, `--color-fill-2` #3b1719, `--color-fill-3` #15293d, `--color-fill-4` #202020 colour the cells of the index in turn; `--color-notice` is #15293d and `--color-danger-surface` #3b1719. `--color-text` and `--color-text-muted` are readable on all of them.\n- `--color-accent` #ac130d with white text is the count badge. Buttons are #303030 and #181818 with light text; inputs are #181818 with a #707070 edge.\n- Text-coloured status needs lighter colours than the references' dark red and yellow-brown fills: `--color-danger` #f0706a, `--color-success` #8fc07a, `--color-warning` and `--color-accent-alt` #d4b106 are derived (the same hues, lightened to read on #0c0c0c), not measured.\n- One sans: `--font-body`, `--font-heading` and `--font-ui` are \"Helvetica Neue\", Helvetica, Arial, sans-serif; `--font-mono` is Menlo, Consolas, monospace, used for everything that is a number of the catalogue: cell numbers, dates, sidebar counts, the id column of a table, inline code.\n- `--text-base` and `--text-ui` 16px with `--line-body` 1.45; `--text-small` 13px for numbers, meta, captions, label strips, table heads, form labels, badges and the footer; `--text-large` 18px for the hero's lead. Headings are bold: `--text-display` 29px (hero headline), `--text-h1` 26px (site name, page title, figures), `--text-h2` 18px (cell titles, form and empty titles), `--text-h3` 16px.\n- Navigation, tabs and buttons are bold (`--weight-ui` 700).\n- Links in running text are underlined; index and list titles, navigation, tabs, sidebar, breadcrumb, pagination and footer links are bare (`--link-decoration-quiet` none) and underline on hover. Current navigation items, tabs and page numbers are `<span>`, not links. Nothing is uppercased or tracked.\n- Two weights far apart: `--border-width` 1px solid for cells, boxes, row dividers and controls; `--border-width-strong` 4px for the rule beside the rail, under a frame, the hero and the page header, the left edge of a notice and a quotation, and the outline of dialogs.\n- Heavy edges are also drawn with hard inset shadows, never blurred: `--shadow-control` puts a 2px line of `--color-border-strong` along the foot of every button and input (4px on hover, moved to the top when pressed), and `--shadow-panel` a 4px bar down the left of a panel. `--shadow-dialog` is `none`.\n- All radii are 0. `--fill-panel` is `--color-surface-alt`, `--fill-input` is `transparent` so a field is its edge and its heavy foot on whatever it stands on, `--fill-button-hover` lightens the button; every other fill is its plain palette colour. `--focus-ring` is a 2px dotted outline; `--transition` none.\n- Each text token is used only on its own fill: `--color-bar-text` on `--fill-bar`, `--color-bar-alt-text` on `--fill-bar-alt`, `--color-inverse-text` on `--fill-inverse`, `--color-accent-text` on `--fill-accent`, `--color-button-text` on `--fill-button`, `--color-notice-text` on `--color-notice`, `--color-danger` on `--color-danger-surface` or the canvas, `--color-text` and the muted and heading colours on the canvas, the surfaces and the four fills. Keep to this so that other palettes work with the same structure.\n\n- One weight for everything: `--border-width` and `--border-width-strong` are both 2px solid, so cells, boxes, controls and the rules under the header are the same black line.\n- Boxes are framed twice: `--shadow-panel` draws a second 2px line in `--color-border` 3px outside a panel, and `--shadow-dialog` a 4px band of `--color-border-strong` around a dialog, both without blur. Controls are flat; a hovered button gets a 2px line along its foot and a pressed one a 2px inner frame.\n- The page is inverted: `--fill-page` is `--color-inverse`, so whatever of the window lies outside the sheet is a solid block of the inverse colour. Every other fill is its plain palette colour.\n- All radii are 0; `--focus-ring` is a 2px solid outline; `--transition` none.\n\n## Components\n\n- `.ds-page` on `<body>`: page fill, 8px margin and base type. `.ds-page__frame` is the sheet; `.ds-page__body` the padding of a view; `.ds-page__columns` the two columns with `.ds-page__main` first. `.ds-page__section` is a block (`--last` drops its bottom gap), `.ds-page__label` its caption with an optional `.ds-page__more` link, `.ds-page__note` a small grey line under a block. `.ds-price` is a bold price that does not wrap.\n- `.ds-nav`: the header, closed by a rule. `.ds-nav__head` holds the brand and `.ds-nav__tagline`; `.ds-nav__bar` is a centred list of `.ds-nav__item`, each holding one `.ds-nav__link`. The current page is an inverted block: the stylesheet marks the link whose `href` names the view that is showing (one selector per view, the home link when the address names none, and the department for an item); on a page of its own give the link `is-current`.\n- `.ds-brand`: the site's mark and name, a link to the home page, centred at the top of the sheet. `.ds-brand__mark` is a square tile as tall as the name, dressed like the primary button: `--fill-button`, `--color-button-text`, the control's edge, radius and shadow. `.ds-brand__name` is 26px regular Times in `--color-heading`. The name `chronoskin` and the mark are placeholders for the installing project's own name and logo.\n- `.ds-breadcrumb`: a 10px line of `.ds-breadcrumb__link` items with `.ds-breadcrumb__sep` between them, ending in a bold `.ds-breadcrumb__current`.\n- `.ds-hero`: the introduction of the home page, centred: `.ds-hero__title` (40px regular Times), one `.ds-hero__lead` paragraph at 15px no wider than 64 characters, and `.ds-hero__actions` with one button and one text link. A heavy rule closes it. No box, no fill.\n- `.ds-page-header`: the head of an inner page: `.ds-page-header__main` with `.ds-page-header__title` (26px) and one `.ds-page-header__text` line; `.ds-page-header__action` at the right holds one button or a status. A heavy rule closes it.\n- `.ds-stat`: one figure, centred: a 26px Times `.ds-stat__value` over a 10px grey `.ds-stat__label`. `.ds-stats` is the row: four across the sheet, divided by faint vertical rules (two to a line on a phone).\n- `.ds-prose`: running text: h1, h2, h3, paragraphs, disc-bulleted and numbered lists indented 32px, `code` in the monospace at text size with no background.\n- `.ds-link`: text link with `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` is the grey underlined link for meta and tools; `.ds-link--strong` is bold. `.ds-links` lays links out in a wrapping row.\n- `.ds-button`: a `<button>`, or an `<a>` when it only leads to another page: a small flat rectangle with a grooved edge, 12px Verdana. `.ds-button--secondary` is the same in the sheet's colour with link-coloured text. `.ds-button--danger` is the destructive action: `--color-danger` text and edge on `--color-danger-surface`. `.ds-button--small` is the 10px button inside a table row. `disabled` or `is-disabled` greys it; `is-active` takes `--color-border-strong`. Group with `.ds-buttons`.\n- `.ds-form`: a stack of `.ds-form__row`, each a bold `.ds-form__label` over its control, with an optional `.ds-form__title`; `.ds-form__row--inline` puts a short label beside its control. Controls take `.ds-form__input` (`--wide` fills the column, `--auto` for selects, `--qty` for a quantity); `is-invalid` plus a bold `.ds-form__error` marks a validation error; `.ds-form__hint` is help text; `.ds-form__check` with a native `.ds-form__checkbox`; `.ds-form__actions` holds the buttons.\n- `.ds-table`: a data table with every cell ruled, like a table with a border: bold `th` on the bar fill, `.ds-table__row--alt` for alternate rows, `.ds-table__num` for right-aligned numeric columns, `.ds-table__no` for a grey monospaced item number, `.ds-table__act` for a centred column holding one small button, `.ds-table__group` for a group row, `.ds-table__total` for the last row of a sum, `.ds-table__extra` for cells a phone leaves out.\n- `.ds-list`: plain entries with faint rules between them. Each `.ds-list__item` has a 15px Times `.ds-list__title` link, an optional `.ds-list__excerpt` and a 10px `.ds-list__meta` line.\n- `.ds-panel`: a ruled box with a bold `.ds-panel__title` on `--color-surface-strong` and a `.ds-panel__body` of `.ds-panel__text` paragraphs. Inside it `.ds-sum` lists a sum: each `.ds-sum__row` has the thing at the left and the amount at the right, and `.ds-sum__row--total` is the bold last line. Use a panel for the basket, the order and the box you buy from, not for layout.\n- `.ds-grid`: four `.ds-grid__cell` boxes `--space-3` apart, each ruled, centred and filled with one of the four fills (`--2`, `--3`, `--4`), holding a `.ds-grid__title` and `.ds-grid__text` lines: what it is, the price, a link.\n- `.ds-tabs`: a row of `.ds-tabs__item`, each holding a `.ds-tabs__tab` word, standing on a rule. The current one is a `<span class=\"ds-tabs__tab is-current\">`: bold, in the heading colour, on a heavy underscore in `--color-border-strong`. Content goes in `.ds-tabs__body`.\n- `.ds-badge`: a count: bold 10px on the accent fill, square. `.ds-badge--tag` is a word in a ruled box. `.ds-badge--alt` (\"new\") is a small word on a heavy underscore in `--color-accent-alt`. Status labels are `.ds-badge--success`, `.ds-badge--warning` and `.ds-badge--danger`: a small lowercase word in the status colour on a heavy underscore of the same colour. No fill, no pill, no icon.\n- `.ds-sidebar`: the right column. Each `.ds-sidebar__block` has a `.ds-sidebar__title` on a rule and a `.ds-sidebar__list` whose rows put a `.ds-sidebar__link` (`is-current` for the page being read) at the left and a `.ds-sidebar__count` at the right; `.ds-sidebar__text` is a small grey paragraph; `.ds-sidebar__search` is an input with a button.\n- `.ds-notice`: a centred sentence between two rules in `--color-border-strong`, on the notice fill, starting with a bold `.ds-notice__title`. `.ds-notice--error` uses the danger colour for text and rules. Stack several in `.ds-notices`.\n- `.ds-pagination`: a centred line of `.ds-pagination__link` items: previous, numbers, next. The current page is a `<span>` with `is-current`: bold, in a ruled box. `is-disabled` is muted and not underlined.\n- `.ds-dialog`: a box with a heavy rule in `--color-border-strong`, `--size-dialog` wide, centred, with a bold `.ds-dialog__title` on the bar fill, `.ds-dialog__body`, `.ds-dialog__text` and centred `.ds-dialog__actions`. It sits in the page flow on `.ds-dialog__backdrop`, a flat block of `--color-overlay` across the column. No shadow, no dimming of the page.\n- `.ds-empty`: a centred grey `.ds-empty__text` sentence and one secondary button between two faint rules.\n- `.ds-footer`: centred 10px small print under a heavy rule on `--fill-bar-alt`: a `.ds-footer__text` sentence and a line of `.ds-footer__links` holding `.ds-footer__link` items.\n- `.ds-accordion`: questions and answers between rules. Each `<details class=\"ds-accordion__item\">` has a `<summary class=\"ds-accordion__title\">` that keeps the browser's own triangle and a `.ds-accordion__body`. Use it for a short list of questions, never for navigation.\n- `.ds-progress`: a `.ds-progress__label` line (what is counted at the left, the figure at the right) over a ruled `.ds-progress__track` whose `.ds-progress__bar` is filled with the accent to a quarter, or `--50`, `--75`, `--100`. Use it for one count against a known whole.\n- `.ds-tooltip`: a boxed `?` beside a form label (give it `tabindex=\"0\"`) holding `.ds-tooltip__text`, an inverted hard-edged note shown under it on hover or focus, or with `is-open`. Use it for one sentence of help on a field.\n\n## Never\n\n- `block-gap <= 32px`: blocks sit a line or a rule apart.\n- `content-width <= 70%`: the sheet is a narrow column in the middle of a wide window.\n- `letter-spacing <= 0px`: no text is tracked.\n- `font-size <= 29px`: the hero headline is 29px.\n- `font-size >= 13px`: small text is 13px.\n- `font-families <= 2`: one sans and a monospace.\n- `line-height >= 1.4`: body text is set at 1.45.\n- `line-height <= 1.5`: and no looser.\n- `uppercase-text <= 0%`: nothing is uppercased.\n- `underlined-links <= 40%`: only links inside running text are underlined.\n- `border-radius <= 0px`: every box and control is square.\n- `box-shadow-blur <= 0px`: shadows only draw second frames; nothing is soft.\n- `text-shadow = none`: text is flat.\n- `gradient-fills <= 0%`: every fill is one flat colour.\n- `transition = none`: states change instantly.\n- `animation = none`: nothing moves.\n- `border-width <= 2px`: every rule is 2px.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen: a new block of a page is a `.ds-page__section` under a `.ds-page__label`; anything with a number and a price is a row of `.ds-table`, not a card; a boxed sum or a box to act from copies `.ds-panel` with a `.ds-sum`; a set of choices copies `.ds-tabs` (words on a rule, the current one on a heavy underscore); a status copies the underscored `.ds-badge--success`; a message copies `.ds-notice` (centred, between two rules). Use only the tokens in `tokens.css` and the `--size-*` and `--space-*` tokens in `components.css`, and pair each text token with its own fill as listed above. When in doubt do less: a table before a grid, a rule before a box, a native control before a custom one, and no radius, shadow, gradient, picture, icon or transition at all.\n",
    "components.css": "/* Layout tokens (structure part). Read from the references: one centred\n   sheet much narrower than the window, 8px page margin, rows 4px apart,\n   12px between paragraphs, 20px between blocks. */\n:root {\n  --size-page: 940px;\n  --size-sidebar: 240px;\n  --size-field: 300px;\n  --size-qty: 56px;\n  --size-dialog: 400px;\n  --size-menu: 200px;\n  --size-num: 80px;\n  --space-1: 2px;\n  --space-2: 4px;\n  --space-3: 8px;\n  --space-4: 12px;\n  --space-5: 20px;\n  --space-6: 32px;\n}\n\n/* ---------- shell ---------- */\n.ds-page {\n  margin: 0;\n  padding: var(--space-3);\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n/* The sheet: one centred column that holds everything, header and footer too. */\n.ds-page__frame {\n  box-sizing: border-box;\n  width: 100%;\n  max-width: var(--size-page);\n  margin: 0 auto;\n  background: var(--color-canvas);\n  border-radius: var(--radius-page);\n}\n/* ---------- views: one screen of the example site shows at a time ---------- */\n.ds-view { display: none; }\n.ds-view:target, .ds-page:not(:has(.ds-view:target)) .ds-view--home { display: block; }\n.ds-view:target { scroll-margin-top: 100vh; }\n\n.ds-page__body {\n  padding: var(--space-4) var(--space-4) var(--space-6);\n}\n.ds-page__columns {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) var(--size-sidebar);\n  gap: var(--space-5);\n  align-items: start;\n}\n.ds-page__main {\n  min-width: 0;\n}\n.ds-page__section {\n  margin: 0 0 var(--space-5);\n}\n.ds-page__section--last {\n  margin-bottom: 0;\n}\n/* The caption of a block: a bold line with a further link at its right, on a rule. */\n.ds-page__label {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  align-items: baseline;\n  gap: 0 var(--space-4);\n  margin: 0 0 var(--space-3);\n  padding: 0 0 var(--space-1);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-page__more {\n  font-family: var(--font-body);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n}\n.ds-page__note {\n  margin: var(--space-3) 0 0;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-price {\n  font-weight: var(--weight-bold);\n  color: var(--color-heading);\n  white-space: nowrap;\n}\n\n/* ---------- links ---------- */\n.ds-link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration);\n}\n.ds-link:visited,\n.ds-link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-link:hover,\n.ds-link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-link:active,\n.ds-link.is-active {\n  color: var(--color-link-active);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-link:focus-visible,\n.ds-link.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-link--quiet,\n.ds-link--quiet:visited,\n.ds-link--quiet.is-visited {\n  color: var(--color-link-quiet);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-link--quiet:hover,\n.ds-link--quiet.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-link--strong {\n  font-weight: var(--weight-bold);\n}\n.ds-links {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-1) var(--space-4);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n\n/* ---------- brand: the mark on a small button-dressed tile, then the name, centred ---------- */\n.ds-brand {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-3);\n  color: var(--color-heading);\n  text-decoration: none;\n}\n.ds-brand__mark {\n  flex: none;\n  display: block;\n  box-sizing: content-box;\n  width: var(--text-h1);\n  height: var(--text-h1);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  background-color: var(--color-button);\n  background: var(--fill-button);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-text);\n}\n.ds-brand__mark svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-brand__name {\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-brand:hover .ds-brand__name,\n.ds-brand.is-hover .ds-brand__name {\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-brand:focus-visible,\n.ds-brand.is-focus {\n  outline: var(--focus-ring);\n}\n\n/* ---------- nav: a centred letterhead, then one filled line of links ---------- */\n.ds-nav {\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-nav__head {\n  padding: var(--space-4) var(--space-4) var(--space-3);\n  text-align: center;\n}\n.ds-nav__tagline {\n  margin: var(--space-2) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-nav__bar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  list-style: none;\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__item {\n  display: block;\n}\n.ds-nav__link {\n  display: block;\n  padding: var(--space-1) var(--space-4);\n  color: var(--color-bar-text);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-nav__link:focus-visible,\n.ds-nav__link.is-focus {\n  outline: var(--focus-ring);\n}\n/* The page you are on: an inverted block. One selector per view, and the home\n   link when the address names no view; an item belongs to its department. */\n.ds-nav__link.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#shop\"],\n.ds-page:has(#shop:target) .ds-nav__link[href=\"#shop\"],\n.ds-page:has(#department:target) .ds-nav__link[href=\"#department\"],\n.ds-page:has(#item:target) .ds-nav__link[href=\"#department\"],\n.ds-page:has(#basket:target) .ds-nav__link[href=\"#basket\"],\n.ds-page:has(#checkout:target) .ds-nav__link[href=\"#checkout\"] {\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n\n/* ---------- breadcrumb ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n  margin: 0 0 var(--space-4);\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-small);\n}\n.ds-breadcrumb__link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-breadcrumb__link:hover,\n.ds-breadcrumb__link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-breadcrumb__sep {\n  color: var(--color-text-muted);\n}\n.ds-breadcrumb__current {\n  font-weight: var(--weight-bold);\n  color: var(--color-text);\n}\n\n/* ---------- hero: a centred statement, a line, the button ---------- */\n.ds-hero {\n  margin: 0 0 var(--space-5);\n  padding: var(--space-5) var(--space-4);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  text-align: center;\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-3);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-hero__lead {\n  max-width: 64ch;\n  margin: 0 auto var(--space-4);\n  font-size: var(--text-large);\n}\n.ds-hero__actions {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  align-items: baseline;\n  gap: var(--space-3) var(--space-4);\n}\n\n/* ---------- page header ---------- */\n.ds-page-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-end;\n  gap: var(--space-4);\n  margin: 0 0 var(--space-5);\n  padding: 0 0 var(--space-3);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n}\n.ds-page-header__main {\n  min-width: 0;\n}\n.ds-page-header__title {\n  margin: 0 0 var(--space-1);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-page-header__text {\n  margin: 0;\n  color: var(--color-text);\n}\n.ds-page-header__action {\n  flex: none;\n}\n\n/* ---------- stats: figures in a centred row, the number over its label ---------- */\n.ds-stats {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  margin: 0 0 var(--space-5);\n  padding: 0;\n  list-style: none;\n  text-align: center;\n}\n.ds-stat {\n  min-width: 0;\n  padding: 0 var(--space-3);\n  border-left: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-stat:first-child {\n  border-left: 0;\n}\n.ds-stat__value {\n  display: block;\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  color: var(--color-heading);\n}\n.ds-stat__label {\n  display: block;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n\n/* ---------- prose ---------- */\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: 0 0 var(--space-3);\n  font-family: var(--font-heading);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-prose h1 {\n  font-size: var(--text-h1);\n}\n.ds-prose h2 {\n  margin-top: var(--space-5);\n  font-size: var(--text-h2);\n}\n.ds-prose h3 {\n  margin-top: var(--space-4);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n}\n.ds-prose p {\n  margin: 0 0 var(--space-4);\n}\n.ds-prose ul,\n.ds-prose ol {\n  margin: 0 0 var(--space-4);\n  padding: 0 0 0 var(--space-6);\n}\n.ds-prose ul {\n  list-style: disc;\n}\n.ds-prose code {\n  font-family: var(--font-mono);\n  font-size: var(--text-base);\n}\n.ds-prose strong {\n  font-weight: var(--weight-bold);\n}\n.ds-prose > :first-child {\n  margin-top: 0;\n}\n.ds-prose > :last-child {\n  margin-bottom: 0;\n}\n\n/* ---------- buttons ---------- */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-button {\n  display: inline-block;\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  background: var(--fill-button);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-body);\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  transition: var(--transition);\n  cursor: pointer;\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  box-shadow: var(--shadow-control-hover);\n  color: var(--color-button-hover-text);\n}\n.ds-button:active,\n.ds-button.is-active {\n  border-color: var(--color-border-strong);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-button--secondary,\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n}\n.ds-button--danger,\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  border-color: var(--color-danger);\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  border-color: var(--color-border-muted);\n  background: var(--color-disabled);\n  box-shadow: none;\n  color: var(--color-disabled-text);\n  cursor: default;\n}\n\n.ds-button--small {\n  padding: 0 var(--space-2);\n  font-size: var(--text-small);\n}\n\n/* ---------- form: each label over its control, as the browser stacks them ---------- */\n.ds-form {\n  margin: 0;\n}\n.ds-form__title {\n  margin: 0 0 var(--space-4);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-form__row {\n  margin: 0 0 var(--space-4);\n}\n.ds-form__row--inline {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-form__label {\n  display: block;\n  margin: 0 0 var(--space-1);\n  font-weight: var(--weight-bold);\n}\n.ds-form__row--inline .ds-form__label {\n  margin: 0;\n}\n.ds-form__input {\n  box-sizing: border-box;\n  width: var(--size-field);\n  max-width: 100%;\n  margin: 0;\n  padding: var(--space-1) var(--space-2);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  line-height: var(--line-body);\n  transition: var(--transition);\n}\n.ds-form__input--wide {\n  width: 100%;\n}\n.ds-form__input--auto {\n  width: auto;\n}\n.ds-form__input--qty {\n  width: var(--size-qty);\n  text-align: right;\n}\n.ds-form__input:focus-visible,\n.ds-form__input.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-form__input:disabled,\n.ds-form__input.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n}\n.ds-form__input.is-invalid {\n  border-color: var(--color-danger);\n}\n.ds-form__error {\n  margin: var(--space-1) 0 0;\n  font-weight: var(--weight-bold);\n  color: var(--color-danger);\n}\n.ds-form__hint {\n  margin: var(--space-1) 0 0;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-form__check {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-form__checkbox {\n  margin: 0;\n}\n.ds-form__actions {\n  margin: var(--space-5) 0 0;\n}\n\n/* ---------- table: every cell ruled, as a table with a border is ---------- */\n.ds-table {\n  width: 100%;\n  border-collapse: collapse;\n  border-radius: var(--radius-panel);\n}\n.ds-table th,\n.ds-table td {\n  padding: var(--space-2) var(--space-3);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  text-align: left;\n  vertical-align: middle;\n}\n.ds-table th {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-weight: var(--weight-bold);\n  text-shadow: var(--shadow-text);\n}\n.ds-table td {\n  background: var(--color-surface);\n}\n.ds-table tr.is-alt td,\n.ds-table__row--alt td {\n  background: var(--color-surface-alt);\n}\n.ds-table th.ds-table__num,\n.ds-table td.ds-table__num {\n  width: var(--size-num);\n  text-align: right;\n  white-space: nowrap;\n}\n.ds-table td.ds-table__no {\n  font-family: var(--font-mono);\n  color: var(--color-text-muted);\n  white-space: nowrap;\n}\n.ds-table td.ds-table__act {\n  width: var(--size-num);\n  text-align: center;\n  white-space: nowrap;\n}\n.ds-table__group td,\n.ds-table__total td {\n  background: var(--color-surface-strong);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- list: plain entries, a rule between them ---------- */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-list__item {\n  padding: var(--space-3) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-list__item:first-child {\n  padding-top: 0;\n}\n.ds-list__item:last-child {\n  padding-bottom: 0;\n  border-bottom: 0;\n}\n.ds-list__title {\n  color: var(--color-link);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  line-height: var(--line-heading);\n  text-decoration: var(--link-decoration);\n}\n.ds-list__title:visited,\n.ds-list__title.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-list__title:hover,\n.ds-list__title.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-list__excerpt {\n  margin: var(--space-1) 0 0;\n}\n.ds-list__meta {\n  margin: var(--space-1) 0 0;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n\n/* ---------- panel: a ruled box with a title line ---------- */\n.ds-panel {\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__title {\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-panel__body {\n  padding: var(--space-3);\n}\n.ds-panel__text {\n  margin: 0 0 var(--space-3);\n}\n.ds-panel__text:last-child {\n  margin-bottom: 0;\n}\n/* Lines of a sum: what on the left, how much on the right. */\n.ds-sum {\n  margin: 0 0 var(--space-3);\n  padding: 0;\n  list-style: none;\n}\n.ds-sum__row {\n  display: flex;\n  justify-content: space-between;\n  align-items: baseline;\n  gap: var(--space-3);\n  padding: var(--space-1) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-sum__row--total {\n  border-bottom: 0;\n  font-weight: var(--weight-bold);\n  color: var(--color-heading);\n}\n\n/* ---------- grid: bare cells, a name, a line and a price ---------- */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: var(--space-3);\n}\n.ds-grid__cell {\n  min-width: 0;\n  padding: var(--space-3);\n  background: var(--color-fill-1);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n  text-align: center;\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 0 var(--space-1);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading);\n}\n.ds-grid__text {\n  margin: 0 0 var(--space-2);\n}\n.ds-grid__text:last-child {\n  margin-bottom: 0;\n}\n\n/* ---------- tabs: words on a rule, the current one underscored heavily ---------- */\n.ds-tabs {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0 var(--space-5);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-tabs__item {\n  margin: 0 0 calc(var(--border-width) * -1);\n}\n.ds-tabs__tab {\n  display: block;\n  padding: var(--space-1) 0;\n  border-bottom: var(--border-width-strong) var(--border-style) transparent;\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-tabs__tab:focus-visible,\n.ds-tabs__tab.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-tabs__tab.is-current {\n  border-bottom-color: var(--color-border-strong);\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-tabs__body {\n  padding: var(--space-4) 0 0;\n}\n\n/* ---------- badge: a count, a tag, a status word on a heavy underscore ---------- */\n.ds-badge {\n  padding: 0 var(--space-2);\n  border-radius: var(--radius-pill);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-badge--alt,\n.ds-badge--tag,\n.ds-badge--success,\n.ds-badge--warning,\n.ds-badge--danger {\n  padding: 0;\n  background: transparent;\n  color: var(--color-text);\n  border-bottom: var(--border-width-strong) var(--border-style) currentColor;\n  font-weight: var(--weight-body);\n  white-space: nowrap;\n}\n.ds-badge--alt {\n  border-bottom-color: var(--color-accent-alt);\n}\n.ds-badge--tag {\n  padding: 0 var(--space-2);\n  border: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-badge--success {\n  color: var(--color-success);\n}\n.ds-badge--warning {\n  color: var(--color-warning);\n}\n.ds-badge--danger {\n  color: var(--color-danger);\n}\n\n/* ---------- sidebar: the right column: basket, departments, small print ---------- */\n.ds-sidebar {\n  min-width: 0;\n}\n.ds-sidebar__block {\n  margin: 0 0 var(--space-5);\n}\n.ds-sidebar__block:last-child {\n  margin-bottom: 0;\n}\n.ds-sidebar__title {\n  margin: 0 0 var(--space-2);\n  padding: 0 0 var(--space-1);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  color: var(--color-heading-alt);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-sidebar__list li {\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-1) 0;\n}\n.ds-sidebar__link {\n  color: var(--color-link-quiet);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-sidebar__link:visited,\n.ds-sidebar__link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-sidebar__link:hover,\n.ds-sidebar__link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-sidebar__link.is-current {\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-sidebar__count {\n  color: var(--color-text-muted);\n}\n.ds-sidebar__text {\n  margin: 0;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-sidebar__search {\n  display: flex;\n  gap: var(--space-2);\n}\n.ds-sidebar__search .ds-form__input {\n  flex: 1;\n  width: auto;\n  min-width: 0;\n}\n.ds-sidebar__search .ds-button {\n  flex: none;\n}\n\n/* ---------- notice: a centred sentence between two rules ---------- */\n.ds-notices {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\n}\n.ds-notice {\n  margin: 0;\n  padding: var(--space-3) var(--space-4);\n  border-style: var(--border-style);\n  border-color: var(--color-border-strong);\n  border-width: var(--border-width) 0;\n  border-radius: var(--radius-panel);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  text-align: center;\n}\n.ds-notice__title {\n  font-weight: var(--weight-bold);\n}\n.ds-notice--error {\n  border-color: var(--color-danger);\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n}\n\n/* ---------- pagination: words and numbers in a centred line, the current one boxed ---------- */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  align-items: baseline;\n  gap: var(--space-2) var(--space-3);\n  margin: 0;\n  padding: var(--space-4) 0 0;\n  list-style: none;\n}\n.ds-pagination__link {\n  display: block;\n  padding: 0 var(--space-2);\n  border: var(--border-width) var(--border-style) transparent;\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-pagination__link:focus-visible,\n.ds-pagination__link.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-pagination__link.is-current {\n  border-color: var(--color-border);\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-text-muted);\n  text-decoration: none;\n}\n\n/* ---------- dialog: a heavy-ruled box with a title line, in the page flow ---------- */\n.ds-dialog__backdrop {\n  box-sizing: border-box;\n  padding: var(--space-5) var(--space-4);\n  background: var(--color-overlay);\n}\n.ds-dialog {\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  max-width: 100%;\n  margin: 0 auto;\n  background: var(--fill-panel);\n  border: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n  text-align: center;\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-dialog__body {\n  padding: var(--space-4);\n}\n.ds-dialog__text {\n  margin: 0 0 var(--space-4);\n}\n.ds-dialog__actions {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: var(--space-3);\n}\n\n/* ---------- empty: a centred sentence and a button between faint rules ---------- */\n.ds-empty {\n  padding: var(--space-5) var(--space-4);\n  border-style: var(--border-style);\n  border-color: var(--color-border-muted);\n  border-width: var(--border-width) 0;\n  text-align: center;\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-3);\n  color: var(--color-text-muted);\n}\n\n/* ---------- footer: centred small print under a heavy rule ---------- */\n.ds-footer {\n  padding: var(--space-4);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-size: var(--text-small);\n  text-align: center;\n}\n.ds-footer__text {\n  margin: 0 0 var(--space-2);\n}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: var(--space-1) var(--space-4);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__link {\n  color: var(--color-bar-alt-text);\n  text-decoration: var(--link-decoration);\n}\n.ds-footer__link:hover,\n.ds-footer__link.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n\n/* ---------- narrow windows: the sheet takes the window, one column, the page before its side column ---------- */\n/* ---------- components of the period ---------- */\n.ds-accordion {\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-accordion__item {\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-accordion__title {\n  padding: var(--space-2) 0;\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n  cursor: pointer;\n}\n.ds-accordion__title:focus-visible,\n.ds-accordion__title.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-accordion__body {\n  max-width: 86ch;\n  margin: 0;\n  padding: 0 0 var(--space-3) var(--space-4);\n}\n.ds-progress {\n  margin: 0 0 var(--space-4);\n}\n.ds-progress__label {\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-3);\n  margin: 0 0 var(--space-2);\n  font-weight: var(--weight-bold);\n}\n.ds-progress__track {\n  height: var(--space-4);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  background: var(--color-input);\n}\n.ds-progress__bar {\n  width: 25%;\n  height: 100%;\n  background: var(--fill-accent);\n}\n.ds-progress__bar--50 {\n  width: 50%;\n}\n.ds-tooltip {\n  position: relative;\n  display: inline-block;\n  padding: 0 var(--space-2);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  color: var(--color-text);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n  text-transform: none;\n  cursor: help;\n}\n.ds-tooltip:focus-visible {\n  outline: var(--focus-ring);\n}\n.ds-tooltip__text {\n  display: none;\n  position: absolute;\n  z-index: 2;\n  top: 100%;\n  left: 0;\n  box-sizing: border-box;\n  width: var(--size-menu);\n  margin: var(--space-2) 0 0;\n  padding: var(--space-2) var(--space-3);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  font-family: var(--font-body);\n  text-align: left;\n}\n.ds-tooltip:hover .ds-tooltip__text,\n.ds-tooltip:focus .ds-tooltip__text,\n.ds-tooltip.is-open .ds-tooltip__text {\n  display: block;\n}\n\n@media (max-width: 800px) {\n  .ds-page {\n    padding: 0;\n  }\n  .ds-page__body {\n    padding: var(--space-4) var(--space-3) var(--space-5);\n  }\n  .ds-page__columns {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .ds-nav__link {\n    padding: var(--space-1) var(--space-3);\n  }\n  .ds-hero {\n    padding: var(--space-4) 0;\n  }\n  .ds-hero__title {\n    font-size: var(--text-h1);\n  }\n  .ds-page-header {\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .ds-stats {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: var(--space-4) 0;\n  }\n  .ds-stat:nth-child(odd) {\n    border-left: 0;\n  }\n  .ds-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n  .ds-table__extra {\n    display: none;\n  }\n  .ds-table th,\n  .ds-table td {\n    padding: var(--space-1) var(--space-2);\n  }\n  .ds-table th.ds-table__num,\n  .ds-table td.ds-table__num,\n  .ds-table td.ds-table__act {\n    width: auto;\n  }\n  .ds-dialog__backdrop {\n    padding: var(--space-3);\n  }\n}\n",
    "specimen.html": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>chronoskin: seeds by post. Web brutalism, 2014 to 2019: specimen</title>\n<link rel=\"stylesheet\" href=\"tokens.css\">\n<link rel=\"stylesheet\" href=\"components.css\">\n</head>\n<body class=\"ds-page\" data-component=\"shell\">\n<div class=\"ds-page__frame\">\n\n  <header class=\"ds-nav\" data-component=\"nav\">\n    <div class=\"ds-nav__head\">\n      <a class=\"ds-brand\" data-component=\"brand\" href=\"#shop\"><span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.8\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" aria-hidden=\"true\"><rect x=\"3.5\" y=\"3.5\" width=\"17\" height=\"17\"/><line x1=\"3.5\" y1=\"20.5\" x2=\"20.5\" y2=\"3.5\"/></svg></span><span class=\"ds-brand__name\">chronoskin</span></a>\n      <p class=\"ds-nav__tagline\">Vegetable seed in plain packets, posted on Mondays. One shed, one person, since 2014.</p>\n    </div>\n    <ul class=\"ds-nav__bar\">\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#shop\">the list</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#department\">roots</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#basket\">basket (3)</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#checkout\">pay and post</a></li>\n    </ul>\n  </header>\n\n  <!-- View 1, the home page: what the shop is, its figures, the four departments, what to sow now, the basket beside it. -->\n  <section class=\"ds-view ds-view--home\" id=\"shop\">\n    <div class=\"ds-page__body\">\n      <section class=\"ds-hero\" data-component=\"hero\">\n        <h1 class=\"ds-hero__title\">Seed, a packet, a price. Nothing else.</h1>\n        <p class=\"ds-hero__lead\">Two hundred and fourteen kinds of vegetable seed, each with a number, a weight and a price. No pictures, no account, no newsletter. Order by Sunday night and it is in the post on Monday.</p>\n        <div class=\"ds-hero__actions\">\n          <a class=\"ds-button\" href=\"#department\">See the whole list</a>\n          <a class=\"ds-link\" href=\"#basket\">or look in your basket</a>\n        </div>\n      </section>\n\n      <ul class=\"ds-stats\" data-component=\"stats\">\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">214</span> <span class=\"ds-stat__label\">kinds in stock</span></li>\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">1.80</span> <span class=\"ds-stat__label\">for most packets</span></li>\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">2.50</span> <span class=\"ds-stat__label\">post, any order</span></li>\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">0</span> <span class=\"ds-stat__label\">pictures on this site</span></li>\n      </ul>\n\n      <div class=\"ds-page__columns\">\n        <main class=\"ds-page__main\">\n          <section class=\"ds-page__section\" data-component=\"grid\">\n            <h2 class=\"ds-page__label\">Departments <a class=\"ds-link ds-page__more\" href=\"#department\">all 214 on one page</a></h2>\n            <div class=\"ds-grid\">\n              <div class=\"ds-grid__cell\">\n                <h3 class=\"ds-grid__title\">Roots</h3>\n                <p class=\"ds-grid__text\">Carrot, beet, parsnip, radish. 46 kinds.</p>\n                <p class=\"ds-grid__text\"><span class=\"ds-price\">from 1.40</span></p>\n                <p class=\"ds-grid__text\"><a class=\"ds-link\" href=\"#department\">Open</a></p>\n              </div>\n              <div class=\"ds-grid__cell ds-grid__cell--2\">\n                <h3 class=\"ds-grid__title\">Leaves</h3>\n                <p class=\"ds-grid__text\">Lettuce, chard, kale, spinach. 71 kinds.</p>\n                <p class=\"ds-grid__text\"><span class=\"ds-price\">from 1.40</span></p>\n                <p class=\"ds-grid__text\"><a class=\"ds-link\" href=\"#department\">Open</a></p>\n              </div>\n              <div class=\"ds-grid__cell ds-grid__cell--3\">\n                <h3 class=\"ds-grid__title\">Pods</h3>\n                <p class=\"ds-grid__text\">Peas and beans, dwarf and climbing. 58 kinds.</p>\n                <p class=\"ds-grid__text\"><span class=\"ds-price\">from 2.20</span></p>\n                <p class=\"ds-grid__text\"><a class=\"ds-link\" href=\"#department\">Open</a></p>\n              </div>\n              <div class=\"ds-grid__cell ds-grid__cell--4\">\n                <h3 class=\"ds-grid__title\">Herbs</h3>\n                <p class=\"ds-grid__text\">Annual and perennial, for a pot or a bed. 39 kinds.</p>\n                <p class=\"ds-grid__text\"><span class=\"ds-price\">from 1.60</span></p>\n                <p class=\"ds-grid__text\"><a class=\"ds-link\" href=\"#department\">Open</a></p>\n              </div>\n            </div>\n          </section>\n\n          <section class=\"ds-page__section\">\n            <h2 class=\"ds-page__label\">To sow in March <a class=\"ds-link ds-page__more\" href=\"#department\">the full roots list</a></h2>\n            <table class=\"ds-table\">\n              <thead>\n                <tr><th>No.</th><th>Seed</th><th class=\"ds-table__extra\">Packet</th><th class=\"ds-table__num\">Price</th><th>Basket</th></tr>\n              </thead>\n              <tbody>\n                <tr><td class=\"ds-table__no\">101</td><td><a class=\"ds-link\" href=\"#item\">Carrot, early stump-rooted</a></td><td class=\"ds-table__extra\">2 g</td><td class=\"ds-table__num\">1.80</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                <tr class=\"ds-table__row--alt\"><td class=\"ds-table__no\">118</td><td><a class=\"ds-link\" href=\"#item\">Beetroot, round red</a> <span class=\"ds-badge ds-badge--alt\">new</span></td><td class=\"ds-table__extra\">4 g</td><td class=\"ds-table__num\">1.80</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                <tr><td class=\"ds-table__no\">204</td><td><a class=\"ds-link is-visited\" href=\"#item\">Lettuce, cut and come again</a></td><td class=\"ds-table__extra\">1 g</td><td class=\"ds-table__num\">1.40</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                <tr class=\"ds-table__row--alt\"><td class=\"ds-table__no\">312</td><td><a class=\"ds-link\" href=\"#item\">Pea, first early, round seeded</a></td><td class=\"ds-table__extra\">60 g</td><td class=\"ds-table__num\">2.60</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                <tr><td class=\"ds-table__no\">407</td><td><a class=\"ds-link\" href=\"#item\">Parsley, plain leaved</a></td><td class=\"ds-table__extra\">2 g</td><td class=\"ds-table__num\">1.60</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n              </tbody>\n            </table>\n          </section>\n\n          <section class=\"ds-page__section ds-page__section--last\" data-component=\"list\">\n            <h2 class=\"ds-page__label\">Notes from the shed</h2>\n            <ul class=\"ds-list\">\n              <li class=\"ds-list__item\">\n                <a class=\"ds-list__title\" href=\"#department\">This year's beetroot has arrived</a>\n                <p class=\"ds-list__excerpt\">Germination tested at 92 in every hundred. Three kinds, all at the old price.</p>\n                <p class=\"ds-list__meta\">9 March 2017 | roots | nos. 117 to 119</p>\n              </li>\n              <li class=\"ds-list__item\">\n                <a class=\"ds-list__title\" href=\"#checkout\">Post now goes on Mondays only</a>\n                <p class=\"ds-list__excerpt\">One trip to the post office a week keeps the postage at 2.50 for everybody.</p>\n                <p class=\"ds-list__meta\">20 February 2017 | post</p>\n              </li>\n              <li class=\"ds-list__item\">\n                <a class=\"ds-list__title is-visited\" href=\"#item\">Why the packets are plain</a>\n                <p class=\"ds-list__excerpt\">A printed packet costs more than the seed in it. The number on the label is all you need.</p>\n                <p class=\"ds-list__meta\">2 January 2017 | the shop</p>\n              </li>\n            </ul>\n          </section>\n        </main>\n\n        <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n          <div class=\"ds-sidebar__block\">\n            <div class=\"ds-panel\" data-component=\"panel\">\n              <h2 class=\"ds-panel__title\">Your basket</h2>\n              <div class=\"ds-panel__body\">\n                <ul class=\"ds-sum\">\n                  <li class=\"ds-sum__row\"><span>2 x no. 101</span><span>3.60</span></li>\n                  <li class=\"ds-sum__row\"><span>1 x no. 312</span><span>2.60</span></li>\n                  <li class=\"ds-sum__row\"><span>Post</span><span>2.50</span></li>\n                  <li class=\"ds-sum__row ds-sum__row--total\"><span>Total</span><span>8.70</span></li>\n                </ul>\n                <a class=\"ds-button ds-button--secondary\" href=\"#basket\">Open the basket</a>\n              </div>\n            </div>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Find a number</h2>\n            <form class=\"ds-sidebar__search\" action=\"#\">\n              <input class=\"ds-form__input\" type=\"text\" value=\"118\" aria-label=\"Find a seed by number or name\">\n              <button class=\"ds-button\" type=\"button\">Go</button>\n            </form>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Departments</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li><a class=\"ds-sidebar__link\" href=\"#department\">Roots</a> <span class=\"ds-sidebar__count\">46</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#department\">Leaves</a> <span class=\"ds-sidebar__count\">71</span></li>\n              <li><a class=\"ds-sidebar__link is-visited\" href=\"#department\">Pods</a> <span class=\"ds-sidebar__count\">58</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#department\">Herbs</a> <span class=\"ds-sidebar__count\">39</span></li>\n              <li><a class=\"ds-sidebar__link is-hover\" href=\"#department\">New this year</a> <span class=\"ds-sidebar__count\">12</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#department\">Last of the stock</a> <span class=\"ds-sidebar__count\">7</span></li>\n            </ul>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">The small print</h2>\n            <div class=\"ds-accordion\" data-component=\"accordion\">\n              <details class=\"ds-accordion__item\" open>\n                <summary class=\"ds-accordion__title\">Post and returns</summary>\n                <p class=\"ds-accordion__body\">Second class, in a paper envelope, on Mondays. Seed that does not come up is replaced or refunded.</p>\n              </details>\n              <details class=\"ds-accordion__item\">\n                <summary class=\"ds-accordion__title\">How seed is tested</summary>\n                <p class=\"ds-accordion__body\">A hundred seeds of every kind on wet paper each January. The count that came up is on <a class=\"ds-sidebar__link\" href=\"#item\">its page</a>.</p>\n              </details>\n              <details class=\"ds-accordion__item\">\n                <summary class=\"ds-accordion__title\">Paying by cheque</summary>\n                <p class=\"ds-accordion__body\">The order is held ten days and posted on the Monday after the cheque arrives. Choose it at <a class=\"ds-sidebar__link\" href=\"#checkout\">pay and post</a>.</p>\n              </details>\n            </div>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <p class=\"ds-sidebar__text\">Prices are in pounds and include tax. Seed that does not come up is replaced or refunded, whichever you ask for.</p>\n          </div>\n        </aside>\n      </div>\n    </div>\n  </section>\n\n  <!-- View 2: one department. Path, page header, tabs over the full table, pagination, and the empty state of the sale. -->\n  <section class=\"ds-view\" id=\"department\">\n    <div class=\"ds-page__body\">\n      <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n        <li><a class=\"ds-breadcrumb__link\" href=\"#shop\">the list</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li><a class=\"ds-breadcrumb__link\" href=\"#department\">departments</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li class=\"ds-breadcrumb__current\">roots</li>\n      </ol>\n      <div class=\"ds-page-header\" data-component=\"page-header\">\n        <div class=\"ds-page-header__main\">\n          <h1 class=\"ds-page-header__title\">Roots</h1>\n          <p class=\"ds-page-header__text\">Forty-six kinds, numbered 101 to 146. Sow where they are to grow.</p>\n        </div>\n        <div class=\"ds-page-header__action\"><a class=\"ds-button ds-button--secondary\" href=\"#department\">Print this list</a></div>\n      </div>\n\n      <div class=\"ds-page__columns\">\n        <div class=\"ds-page__main\">\n          <section class=\"ds-page__section\" data-component=\"tabs\">\n            <ul class=\"ds-tabs\">\n              <li class=\"ds-tabs__item\"><span class=\"ds-tabs__tab is-current\" aria-current=\"true\">all 46</span></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#department\">carrot</a></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#department\">beetroot</a></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#department\">radish</a></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#department\">the rest</a></li>\n            </ul>\n            <div class=\"ds-tabs__body\">\n              <table class=\"ds-table\" data-component=\"table\">\n                <thead>\n                  <tr><th>No.</th><th>Seed</th><th class=\"ds-table__extra\">Packet</th><th>Stock</th><th class=\"ds-table__num\">Price</th><th>Basket</th></tr>\n                </thead>\n                <tbody>\n                  <tr class=\"ds-table__group\"><td colspan=\"6\">Carrot</td></tr>\n                  <tr><td class=\"ds-table__no\">101</td><td><a class=\"ds-link\" href=\"#item\">Early stump-rooted</a></td><td class=\"ds-table__extra\">2 g</td><td><span class=\"ds-badge ds-badge--success\">in stock</span></td><td class=\"ds-table__num\">1.80</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                  <tr class=\"ds-table__row--alt\"><td class=\"ds-table__no\">102</td><td><a class=\"ds-link\" href=\"#item\">Maincrop, long</a></td><td class=\"ds-table__extra\">2 g</td><td><span class=\"ds-badge ds-badge--success\">in stock</span></td><td class=\"ds-table__num\">1.80</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                  <tr><td class=\"ds-table__no\">103</td><td><a class=\"ds-link is-visited\" href=\"#item\">Round, for pots</a></td><td class=\"ds-table__extra\">1 g</td><td><span class=\"ds-badge ds-badge--warning\">9 left</span></td><td class=\"ds-table__num\">2.10</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                  <tr class=\"ds-table__row--alt\"><td class=\"ds-table__no\">104</td><td><a class=\"ds-link\" href=\"#item\">Yellow, late keeping</a></td><td class=\"ds-table__extra\">2 g</td><td><span class=\"ds-badge ds-badge--danger\">sold out</span></td><td class=\"ds-table__num\">1.80</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small is-disabled\" type=\"button\" disabled>Add</button></td></tr>\n                  <tr class=\"ds-table__group\"><td colspan=\"6\">Beetroot</td></tr>\n                  <tr><td class=\"ds-table__no\">117</td><td><a class=\"ds-link\" href=\"#item\">Long, for slicing</a></td><td class=\"ds-table__extra\">4 g</td><td><span class=\"ds-badge ds-badge--success\">in stock</span></td><td class=\"ds-table__num\">1.80</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                  <tr class=\"ds-table__row--alt\"><td class=\"ds-table__no\">118</td><td><a class=\"ds-link\" href=\"#item\">Round red</a> <span class=\"ds-badge ds-badge--alt\">new</span></td><td class=\"ds-table__extra\">4 g</td><td><span class=\"ds-badge ds-badge--success\">in stock</span></td><td class=\"ds-table__num\">1.80</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                  <tr><td class=\"ds-table__no\">119</td><td><a class=\"ds-link\" href=\"#item\">Golden</a></td><td class=\"ds-table__extra\">3 g</td><td><span class=\"ds-badge ds-badge--warning\">4 left</span></td><td class=\"ds-table__num\">2.10</td><td class=\"ds-table__act\"><button class=\"ds-button ds-button--small\" type=\"button\">Add</button></td></tr>\n                </tbody>\n              </table>\n              <ul class=\"ds-pagination\" data-component=\"pagination\">\n                <li><a class=\"ds-pagination__link\" href=\"#department\">previous</a></li>\n                <li><span class=\"ds-pagination__link is-current\" aria-current=\"page\">1</span></li>\n                <li><a class=\"ds-pagination__link\" href=\"#department\">2</a></li>\n                <li><a class=\"ds-pagination__link\" href=\"#department\">3</a></li>\n                <li><a class=\"ds-pagination__link\" href=\"#department\">4</a></li>\n                <li><a class=\"ds-pagination__link\" href=\"#department\">next</a></li>\n              </ul>\n            </div>\n          </section>\n\n          <section class=\"ds-page__section ds-page__section--last\">\n            <h2 class=\"ds-page__label\">Roots in the sale</h2>\n            <div class=\"ds-empty\" data-component=\"empty\">\n              <p class=\"ds-empty__text\">No roots are reduced at the moment. Last year's seed goes in the sale in June.</p>\n              <a class=\"ds-button ds-button--secondary\" href=\"#shop\">Back to the list</a>\n            </div>\n          </section>\n        </div>\n\n        <aside class=\"ds-sidebar\">\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Departments</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li><a class=\"ds-sidebar__link is-current\" href=\"#department\">Roots</a> <span class=\"ds-sidebar__count\">46</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#department\">Leaves</a> <span class=\"ds-sidebar__count\">71</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#department\">Pods</a> <span class=\"ds-sidebar__count\">58</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#department\">Herbs</a> <span class=\"ds-sidebar__count\">39</span></li>\n            </ul>\n          </div>\n          <div class=\"ds-sidebar__block\" data-component=\"badge\">\n            <h2 class=\"ds-sidebar__title\">What the marks mean</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li><span class=\"ds-badge ds-badge--success\">in stock</span> <span class=\"ds-sidebar__count\">20 or more</span></li>\n              <li><span class=\"ds-badge ds-badge--warning\">9 left</span> <span class=\"ds-sidebar__count\">under 20</span></li>\n              <li><span class=\"ds-badge ds-badge--danger\">sold out</span> <span class=\"ds-sidebar__count\">until autumn</span></li>\n              <li><span class=\"ds-badge ds-badge--tag\">F1</span> <span class=\"ds-sidebar__count\">a hybrid</span></li>\n              <li><span><span class=\"ds-badge\">3</span> in your basket</span></li>\n            </ul>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Sowing roots</h2>\n            <p class=\"ds-sidebar__text\">Thinly, in drills a finger deep, from March under cover and from April in the open. Do not transplant.</p>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <div class=\"ds-panel\">\n              <h2 class=\"ds-panel__title\">Your basket</h2>\n              <div class=\"ds-panel__body\">\n                <ul class=\"ds-sum\">\n                  <li class=\"ds-sum__row\"><span>3 packets</span><span>6.20</span></li>\n                  <li class=\"ds-sum__row ds-sum__row--total\"><span>With post</span><span>8.70</span></li>\n                </ul>\n                <a class=\"ds-button ds-button--secondary\" href=\"#basket\">Open the basket</a>\n              </div>\n            </div>\n          </div>\n        </aside>\n      </div>\n    </div>\n  </section>\n\n  <!-- View 3: one item. What it is in running text, the box you buy it from, what goes with it. -->\n  <section class=\"ds-view\" id=\"item\">\n    <div class=\"ds-page__body\">\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-breadcrumb__link\" href=\"#shop\">the list</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li><a class=\"ds-breadcrumb__link\" href=\"#department\">roots</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li class=\"ds-breadcrumb__current\">no. 101</li>\n      </ol>\n      <div class=\"ds-page-header\">\n        <div class=\"ds-page-header__main\">\n          <h1 class=\"ds-page-header__title\">No. 101. Carrot, early stump-rooted</h1>\n          <p class=\"ds-page-header__text\">A short, blunt carrot for the first sowing of the year. 2 g, about 1,400 seeds.</p>\n        </div>\n        <div class=\"ds-page-header__action\"><span class=\"ds-badge ds-badge--success\">in stock</span></div>\n      </div>\n\n      <div class=\"ds-page__columns\">\n        <div class=\"ds-page__main\">\n          <section class=\"ds-page__section\" data-component=\"typography\">\n            <div class=\"ds-prose\">\n              <h1>What you get</h1>\n              <p>One plain paper packet marked <code>101</code>, holding two grams of seed harvested in 2016 and tested in January at <strong>88 in every hundred</strong>. That is enough for a row of about nine metres.</p>\n              <h2>How to sow it</h2>\n              <p>Carrots are sown where they are to grow. They do not move well and they do not like fresh manure.</p>\n              <ul>\n                <li>Under a cloche from late February, in the open from the end of March.</li>\n                <li>In drills a finger deep and a hand apart.</li>\n                <li>Thin to a thumb's width once the first true leaf shows.</li>\n              </ul>\n              <h3>When it is ready</h3>\n              <p>Ten to twelve weeks after sowing. Pull the largest first and leave the rest to fill out.</p>\n            </div>\n          </section>\n\n          <section class=\"ds-page__section\">\n            <h2 class=\"ds-page__label\">The year for no. 101</h2>\n            <table class=\"ds-table\">\n              <thead>\n                <tr><th>Job</th><th>From</th><th>Until</th><th class=\"ds-table__num\">Weeks</th></tr>\n              </thead>\n              <tbody>\n                <tr><td>Sow under cover</td><td>late February</td><td>March</td><td class=\"ds-table__num\">5</td></tr>\n                <tr class=\"ds-table__row--alt\"><td>Sow in the open</td><td>late March</td><td>July</td><td class=\"ds-table__num\">16</td></tr>\n                <tr><td>Pull</td><td>June</td><td>October</td><td class=\"ds-table__num\">20</td></tr>\n                <tr class=\"ds-table__row--alt\"><td>Store in sand</td><td>October</td><td>January</td><td class=\"ds-table__num\">14</td></tr>\n              </tbody>\n            </table>\n          </section>\n\n          <section class=\"ds-page__section ds-page__section--last\" data-component=\"links\">\n            <h2 class=\"ds-page__label\">People who sow this also sow</h2>\n            <ul class=\"ds-links\">\n              <li><a class=\"ds-link\" href=\"#item\">no. 102, maincrop carrot</a></li>\n              <li><a class=\"ds-link is-visited\" href=\"#item\">no. 131, summer radish</a></li>\n              <li><a class=\"ds-link is-hover\" href=\"#item\">no. 204, cutting lettuce</a></li>\n              <li><a class=\"ds-link is-active\" href=\"#item\">no. 312, first early pea</a></li>\n              <li><a class=\"ds-link ds-link--quiet\" href=\"#department\">all roots</a></li>\n            </ul>\n          </section>\n        </div>\n\n        <aside class=\"ds-sidebar\">\n          <div class=\"ds-sidebar__block\">\n            <div class=\"ds-panel\">\n              <h2 class=\"ds-panel__title\">Buy no. 101</h2>\n              <div class=\"ds-panel__body\">\n                <form class=\"ds-form\" action=\"#\">\n                  <div class=\"ds-form__row\">\n                    <label class=\"ds-form__label\" for=\"b-size\">Packet</label>\n                    <select class=\"ds-form__input ds-form__input--wide\" id=\"b-size\">\n                      <option>2 g, 1.80</option>\n                      <option>10 g, 6.50</option>\n                      <option>50 g, 24.00</option>\n                    </select>\n                  </div>\n                  <div class=\"ds-form__row ds-form__row--inline\">\n                    <label class=\"ds-form__label\" for=\"b-qty\">How many</label>\n                    <input class=\"ds-form__input ds-form__input--qty\" id=\"b-qty\" type=\"text\" value=\"2\">\n                  </div>\n                  <ul class=\"ds-sum\">\n                    <li class=\"ds-sum__row ds-sum__row--total\"><span>2 packets</span><span>3.60</span></li>\n                  </ul>\n                  <div class=\"ds-buttons\">\n                    <a class=\"ds-button\" href=\"#basket\">Add to basket</a>\n                  </div>\n                </form>\n              </div>\n            </div>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <p class=\"ds-notice\"><span class=\"ds-notice__title\">In your basket.</span> You already have 2 of these.</p>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">The facts</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li><span>Harvested</span> <span class=\"ds-sidebar__count\">2016</span></li>\n              <li><span>Tested</span> <span class=\"ds-sidebar__count\">January 2017</span></li>\n              <li><span>Came up</span> <span class=\"ds-sidebar__count\">88 in 100</span></li>\n              <li><span>Seeds to a gram</span> <span class=\"ds-sidebar__count\">about 700</span></li>\n              <li><span>Treated</span> <span class=\"ds-sidebar__count\">no</span></li>\n            </ul>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Other carrots</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li><a class=\"ds-sidebar__link\" href=\"#item\">102 Maincrop, long</a> <span class=\"ds-sidebar__count\">1.80</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#item\">103 Round, for pots</a> <span class=\"ds-sidebar__count\">2.10</span></li>\n              <li><a class=\"ds-sidebar__link\" href=\"#item\">104 Yellow, late</a> <span class=\"ds-sidebar__count\">1.80</span></li>\n            </ul>\n          </div>\n        </aside>\n      </div>\n    </div>\n  </section>\n\n  <!-- View 4: the basket. The lines as a table with their quantities, the four things you can do, the confirmation for emptying it. -->\n  <section class=\"ds-view\" id=\"basket\">\n    <div class=\"ds-page__body\">\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-breadcrumb__link\" href=\"#shop\">the list</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li class=\"ds-breadcrumb__current\">basket</li>\n      </ol>\n      <div class=\"ds-page-header\">\n        <div class=\"ds-page-header__main\">\n          <h1 class=\"ds-page-header__title\">Your basket</h1>\n          <p class=\"ds-page-header__text\">Three packets of two kinds. Kept in this browser until Sunday night.</p>\n        </div>\n        <div class=\"ds-page-header__action\"><a class=\"ds-button\" href=\"#checkout\">Pay and post</a></div>\n      </div>\n\n      <div class=\"ds-page__columns\">\n        <div class=\"ds-page__main\">\n          <section class=\"ds-page__section\">\n            <table class=\"ds-table\">\n              <thead>\n                <tr><th>No.</th><th>Seed</th><th class=\"ds-table__extra\">Packet</th><th>How many</th><th class=\"ds-table__num\">Price</th><th class=\"ds-table__extra\">Basket</th></tr>\n              </thead>\n              <tbody>\n                <tr><td class=\"ds-table__no\">101</td><td><a class=\"ds-link\" href=\"#item\">Carrot, early stump-rooted</a></td><td class=\"ds-table__extra\">2 g</td><td><input class=\"ds-form__input ds-form__input--qty\" type=\"text\" value=\"2\" aria-label=\"How many of no. 101\"></td><td class=\"ds-table__num\">3.60</td><td class=\"ds-table__act ds-table__extra\"><button class=\"ds-button ds-button--small ds-button--danger\" type=\"button\">Remove</button></td></tr>\n                <tr class=\"ds-table__row--alt\"><td class=\"ds-table__no\">312</td><td><a class=\"ds-link\" href=\"#item\">Pea, first early, round seeded</a></td><td class=\"ds-table__extra\">60 g</td><td><input class=\"ds-form__input ds-form__input--qty\" type=\"text\" value=\"1\" aria-label=\"How many of no. 312\"></td><td class=\"ds-table__num\">2.60</td><td class=\"ds-table__act ds-table__extra\"><button class=\"ds-button ds-button--small ds-button--danger\" type=\"button\">Remove</button></td></tr>\n                <tr><td class=\"ds-table__no\"></td><td>Post, second class, any number of packets</td><td class=\"ds-table__extra\"></td><td></td><td class=\"ds-table__num\">2.50</td><td class=\"ds-table__extra\"></td></tr>\n                <tr class=\"ds-table__total\"><td class=\"ds-table__no\"></td><td>Total, tax included</td><td class=\"ds-table__extra\"></td><td>3</td><td class=\"ds-table__num\">8.70</td><td class=\"ds-table__extra\"></td></tr>\n              </tbody>\n            </table>\n            <p class=\"ds-page__note\">To take a line out on a small screen, set its number to 0 and update.</p>\n          </section>\n\n          <section class=\"ds-page__section\" data-component=\"buttons\">\n            <div class=\"ds-buttons\">\n              <a class=\"ds-button\" href=\"#checkout\">Pay and post</a>\n              <button class=\"ds-button ds-button--secondary\" type=\"button\">Update the numbers</button>\n              <button class=\"ds-button ds-button--danger\" type=\"button\">Empty the basket</button>\n              <button class=\"ds-button is-disabled\" type=\"button\" disabled>Use a voucher</button>\n            </div>\n          </section>\n\n          <section class=\"ds-page__section ds-page__section--last\" data-component=\"dialog\">\n            <div class=\"ds-dialog__backdrop\">\n              <div class=\"ds-dialog\" role=\"dialog\" aria-labelledby=\"dlg-title\">\n                <h3 class=\"ds-dialog__title\" id=\"dlg-title\">Empty the basket?</h3>\n                <div class=\"ds-dialog__body\">\n                  <p class=\"ds-dialog__text\">All three packets will be taken out. Nothing has been paid for, so nothing else changes.</p>\n                  <div class=\"ds-dialog__actions\">\n                    <button class=\"ds-button ds-button--danger\" type=\"button\">Empty it</button>\n                    <a class=\"ds-button ds-button--secondary\" href=\"#basket\">Keep it</a>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </section>\n        </div>\n\n        <aside class=\"ds-sidebar\">\n          <div class=\"ds-sidebar__block\">\n            <div class=\"ds-panel\">\n              <h2 class=\"ds-panel__title\">What you will pay</h2>\n              <div class=\"ds-panel__body\">\n                <ul class=\"ds-sum\">\n                  <li class=\"ds-sum__row\"><span>3 packets</span><span>6.20</span></li>\n                  <li class=\"ds-sum__row\"><span>Post</span><span>2.50</span></li>\n                  <li class=\"ds-sum__row ds-sum__row--total\"><span>Total</span><span>8.70</span></li>\n                </ul>\n                <a class=\"ds-button\" href=\"#checkout\">Pay and post</a>\n              </div>\n            </div>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">When it goes</h2>\n            <p class=\"ds-sidebar__text\">Orders paid by Sunday midnight are posted on Monday 20 March and usually arrive by Wednesday.</p>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Saved for later</h2>\n            <p class=\"ds-sidebar__text\">Nothing saved. <a class=\"ds-sidebar__link\" href=\"#department\">Look through the roots</a></p>\n          </div>\n        </aside>\n      </div>\n    </div>\n  </section>\n\n  <!-- View 5: pay and post. The two answers the form can give, the form with its error, the order beside it. -->\n  <section class=\"ds-view\" id=\"checkout\">\n    <div class=\"ds-page__body\">\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-breadcrumb__link\" href=\"#shop\">the list</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li><a class=\"ds-breadcrumb__link\" href=\"#basket\">basket</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li class=\"ds-breadcrumb__current\">pay and post</li>\n      </ol>\n      <div class=\"ds-page-header\">\n        <div class=\"ds-page-header__main\">\n          <h1 class=\"ds-page-header__title\">Pay and post</h1>\n          <p class=\"ds-page-header__text\">One page. No account is made and nothing is kept after the parcel arrives.</p>\n        </div>\n        <div class=\"ds-page-header__action\"><a class=\"ds-button ds-button--secondary\" href=\"#basket\">Back to the basket</a></div>\n      </div>\n\n      <div class=\"ds-page__columns\">\n        <div class=\"ds-page__main\">\n          <section class=\"ds-page__section\" data-component=\"notice\">\n            <div class=\"ds-notices\">\n<div class=\"ds-progress\" data-component=\"progress\">\n                <p class=\"ds-progress__label\"><span>Step 2 of 4: where it goes</span> <span>50%</span></p>\n                <div class=\"ds-progress__track\"><div class=\"ds-progress__bar ds-progress__bar--50\"></div></div>\n              </div>\n              <p class=\"ds-notice\"><span class=\"ds-notice__title\">Monday's post.</span> Pay by Sunday midnight and this order leaves on Monday 20 March.</p>\n              <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__title\">Not sent.</span> One line below needs another look. No money has been taken.</p>\n            </div>\n          </section>\n\n          <section class=\"ds-page__section ds-page__section--last\" data-component=\"form\">\n            <form class=\"ds-form\" action=\"#\">\n              <h2 class=\"ds-form__title\">Where it goes</h2>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"c-name\">Name</label>\n                <input class=\"ds-form__input\" id=\"c-name\" type=\"text\" value=\"Jonas Pell\">\n              </div>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"c-addr\">Address</label>\n                <textarea class=\"ds-form__input ds-form__input--wide\" id=\"c-addr\" rows=\"4\">4 Marsh Lane\nAlder Point</textarea>\n                <p class=\"ds-form__hint\">As you would write it on an envelope.</p>\n              </div>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"c-code\">Postcode <span class=\"ds-tooltip\" data-component=\"tooltip\" tabindex=\"0\">?<span class=\"ds-tooltip__text\" role=\"tooltip\">Both halves, as on an envelope. It is only used for the label.</span></span></label>\n                <input class=\"ds-form__input is-invalid\" id=\"c-code\" type=\"text\" value=\"AP4\">\n                <p class=\"ds-form__error\">That is only half a postcode.</p>\n              </div>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"c-pay\">Pay by</label>\n                <select class=\"ds-form__input ds-form__input--auto\" id=\"c-pay\">\n                  <option>Card</option>\n                  <option>Bank transfer</option>\n                  <option>Cheque in the post</option>\n                </select>\n              </div>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> Send me one e-mail when it is posted</label>\n              </div>\n              <div class=\"ds-form__actions ds-buttons\">\n                <button class=\"ds-button\" type=\"button\">Pay 8.70</button>\n                <a class=\"ds-button ds-button--secondary\" href=\"#basket\">Change the order</a>\n              </div>\n            </form>\n          </section>\n        </div>\n\n        <aside class=\"ds-sidebar\">\n          <div class=\"ds-sidebar__block\">\n            <div class=\"ds-panel\">\n              <h2 class=\"ds-panel__title\">This order</h2>\n              <div class=\"ds-panel__body\">\n                <ul class=\"ds-sum\">\n                  <li class=\"ds-sum__row\"><span>2 x no. 101</span><span>3.60</span></li>\n                  <li class=\"ds-sum__row\"><span>1 x no. 312</span><span>2.60</span></li>\n                  <li class=\"ds-sum__row\"><span>Post</span><span>2.50</span></li>\n                  <li class=\"ds-sum__row ds-sum__row--total\"><span>Total</span><span>8.70</span></li>\n                </ul>\n                <p class=\"ds-panel__text\"><a class=\"ds-link\" href=\"#basket\">Change it</a></p>\n              </div>\n            </div>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Post and returns</h2>\n            <p class=\"ds-sidebar__text\">Second class, in a paper envelope. If seed does not come up, write within the season and say whether you want more seed or your money.</p>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Paying by cheque</h2>\n            <p class=\"ds-sidebar__text\">The order is held for ten days and posted on the Monday after the cheque arrives.</p>\n          </div>\n        </aside>\n      </div>\n    </div>\n  </section>\n\n  <footer class=\"ds-footer\" data-component=\"footer\">\n    <p class=\"ds-footer__text\">chronoskin sells seed by post. Written, packed and posted by one person, 2014 to 2017.</p>\n    <ul class=\"ds-footer__links\">\n      <li><a class=\"ds-footer__link\" href=\"#shop\">the list</a></li>\n      <li><a class=\"ds-footer__link\" href=\"#department\">roots</a></li>\n      <li><a class=\"ds-footer__link\" href=\"#basket\">basket</a></li>\n      <li><a class=\"ds-footer__link\" href=\"#checkout\">pay and post</a></li>\n    </ul>\n  </footer>\n\n</div>\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.brutalism.shop.s06.p01.t03.u11\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"brutalism\",\n    \"years\": [\n      2014,\n      2019\n    ]\n  },\n  \"archetype\": \"shop\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1440,\n    \"fluid\": true,\n    \"responsive\": true\n  },\n  \"source\": \"https://chrono.skin/s/v1-br-613b\",\n  \"short\": \"v1-br-613b\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #ffffff;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #f7f7f7;\n  --color-surface-strong: #efefef;\n  --color-bar: #ffffff;\n  --color-bar-text: #000000;\n  --color-bar-alt: #ffffff;\n  --color-bar-alt-text: #000000;\n  --color-inverse: #000000;\n  --color-inverse-text: #ffffff;\n  --color-text: #000000;\n  --color-text-muted: #767676;\n  --color-heading: #000000;\n  --color-heading-alt: #000080;\n  --color-link: #0000ee;\n  --color-link-quiet: #0000ee;\n  --color-link-visited: #800080;\n  --color-link-hover: #000080;\n  --color-link-active: #ff0000;\n  --color-border: #000000;\n  --color-border-strong: #000000;\n  --color-border-muted: #808080;\n  --color-accent: #000080;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #ff0000;\n  --color-fill-1: #ffffff;\n  --color-fill-2: #f7f7f7;\n  --color-fill-3: #efefef;\n  --color-fill-4: #ffffff;\n  --color-button: #efefef;\n  --color-button-text: #000000;\n  --color-button-hover-text: #000000;\n  --color-button-secondary: #ffffff;\n  --color-button-secondary-text: #000000;\n  --color-input: #ffffff;\n  --color-input-text: #000000;\n  --color-input-border: #767676;\n  --color-disabled: #efefef;\n  --color-disabled-text: #808080;\n  --color-danger: #ff0000;\n  --color-danger-surface: #ffffff;\n  --color-success: #008000;\n  --color-warning: #808000;\n  --color-notice: #ffffff;\n  --color-notice-text: #000000;\n  --color-focus: #000000;\n  --color-shadow: #000000;\n  --color-overlay: #efefef;\n}\n\n/* @part type */\n:root {\n  --font-body: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-heading: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-ui: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-mono: Menlo, Consolas, monospace;\n  --text-base: 16px;\n  --text-small: 13px;\n  --text-ui: 16px;\n  --text-large: 18px;\n  --text-display: 29px;\n  --text-h1: 26px;\n  --text-h2: 18px;\n  --text-h3: 16px;\n  --line-body: 1.45;\n  --line-heading: 1.2;\n  --line-display: 1.1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 700;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: none;\n}\n\n/* @part surface */\n:root {\n  --border-width: 2px;\n  --border-width-strong: 2px;\n  --border-style: solid;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: 0 0 0 3px var(--color-canvas), 0 0 0 5px var(--color-border);\n  --shadow-control: none;\n  --shadow-control-hover: inset 0 -2px 0 var(--color-button-hover-text);\n  --shadow-control-pressed: inset 0 0 0 2px var(--color-border-strong);\n  --shadow-dialog: 0 0 0 4px var(--color-border-strong);\n  --shadow-text: none;\n  --fill-page: var(--color-inverse);\n  --fill-bar: var(--color-bar);\n  --fill-bar-alt: var(--color-bar-alt);\n  --fill-inverse: var(--color-inverse);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-surface);\n  --fill-button: var(--color-button);\n  --fill-button-hover: var(--color-button);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: var(--color-input);\n  --focus-ring: 2px solid var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
