{
  "id": "v1-po-2212",
  "long_id": "v1.portals-2000s.portal.s02.p02.t01.u02",
  "name": "Tile portal, 2000 to 2004",
  "era": {
    "slug": "portals-2000s",
    "code": "po",
    "name": "Early-2000s portals",
    "years": [
      2000,
      2004
    ],
    "description": "Start pages and news portals, 2000 to 2004: dense fixed-width sheets cut into columns of small boxes, solid colour bars with bold white titles, 10 to 13px Arial and Verdana, and almost no empty space."
  },
  "archetype": "portal",
  "mode": "mix",
  "viewport": {
    "width": 1024,
    "fluid": false
  },
  "summary": "A start page built as a mosaic of flat tinted tiles, the form broadcasters and directory sites gave their home pages between 2000 and 2004: a 770px sheet centred on a 1024px screen, with no sidebar column and no rail, only blocks of tint of different sizes fitted together with 5px gutters. Each tile opens with a large bold title set straight on the tint, without a title bar, and holds a few lines of 10px to 11px text or links; navigation is one strip of cells across the top. It gave way from about 2005 to wider pages with gradients, rounded corners and photographs.",
  "url": "https://chrono.skin/s/v1-po-2212",
  "preview_url": "https://chrono.skin/s/v1-po-2212/specimen.html",
  "files": {
    "STYLE.md": "# Tile portal, 2000 to 2004\n\n## Summary\n\nA start page built as a mosaic of flat tinted tiles, the form broadcasters and directory sites gave their home pages between 2000 and 2004: a 770px sheet centred on a 1024px screen, with no sidebar column and no rail, only blocks of tint of different sizes fitted together with 5px gutters. Each tile opens with a large bold title set straight on the tint, without a title bar, and holds a few lines of 10px to 11px text or links; navigation is one strip of cells across the top. It gave way from about 2005 to wider pages with gradients, rounded corners and photographs.\n\n## Layout\n\n- The page is not fluid. `--size-page` is 770px; `.ds-page__frame` is a sheet of that width centred in the window (`margin: 0 auto`) and `--color-page` shows on both sides. Do not pin it to the left and do not stretch it. `.ds-page` pads the window by `--space-4` (5px).\n- Navigation is at the top and is one strip, not a masthead plus a bar: `.ds-nav__strip` holds the wordmark cell on the left and the section cells pushed to the right, divided by 1px lines; the current section is a cell filled with the accent. Under it `.ds-nav__band` is a thinner strip with service links on the left and the date on the right. There is no search box in the header: search is a tile.\n- The home page has three stages, each `--space-4` below the last. First `.ds-page__top`, two tiles side by side: the search tile (`--size-col-a`, 275px) and the `.ds-hero` filling the rest. Then `.ds-page__mosaic`, three columns of stacked tiles: `--size-col-a` 275px, `--size-col-b` 200px and the remainder (285px); every column is a `.ds-page__col`, and the last tile of a column (a `.ds-sidebar` tile included) takes `.ds-tile--grow` so the three columns end level. Then `.ds-grid`, four equal tiles across the whole sheet. Two half-width tiles inside a column go in `.ds-page__pair`.\n- No column is a sidebar. `.ds-sidebar` is a tile like the others and sits wherever a group of links is needed.\n- Inner pages keep the strip and the footer and have no search tile and no hero. `.ds-breadcrumb` replaces the service band directly under the strip (the specimen hides the band whenever an inner view is open). Then `.ds-page__band` stacks full-width blocks 5px apart: `.ds-page-header` (a tile with the title, one line of text and the page's button on the right), and where the page has them the `.ds-stat` tile and a `.ds-block` in which `.ds-tabs` sits directly on the `.ds-table` it switches. Below that `.ds-page__mosaic--inner` has two columns: a wide working column (490px) of tiles holding the list, form or article text, and a `--size-col-a` (275px) column of tiles on the right holding the section's `.ds-sidebar`, notices and small panels; the last tile of each column takes `.ds-tile--grow` so the two columns end level. An article page has no band: its headline, in the first tile of the wide column, heads the page.\n- Views. The specimen is one example site of five screens, one showing at a time, with the strip and the footer written once around them. `home` is the mosaic start page. `news` is the story list: page header, then a tile of pictured list items with pagination beside a column of news tiles. `article` is one story: article text and a tile of related links beside the section's tiles. `events` is the signed-in listings page: page header, stat tile, tabs on the table, then the selected event with its buttons, the withdraw message box and the empty past-events tile. `submit` is the form page: page header, the form tile, and notices and advice in the narrow column. The strip marks News for `news` and `article` and Listings for `events` and `submit`.\n- Spacing scale: `--space-1` 1px is the grid line between table cells and between tabs; `--space-2` 2px is the gap between index and pagination cells and the padding inside controls; `--space-3` 4px is the vertical padding of strips, cells and table cells and the gap under a tile title; `--space-4` 5px is every gutter between tiles and the top padding of a tile; `--space-5` 10px is the side and bottom padding of every tile, bar and cell and the gap between paragraphs; `--space-6` 14px is list indent and the padding around a dialog. There is no larger step.\n- Fixed sizes: `--size-figure` 240px by `--size-figure-height` 170px is the hero picture slot; `--size-thumb` 64px by `--size-thumb-height` 48px a list picture; `--size-cell` 18px an index or page-number cell (the brand tile is this plus `--space-3`); `--size-search` 170px the search input; `--size-field` 220px a form input; `--size-area` a textarea; `--size-dialog` 320px a message box.\n- Things are separated by the 5px gutter and a change of tint. Inside a tile, parts are divided by a single 1px rule in `--border-style`. Tiles have no border and no title bar; only `.ds-panel`, the table head, the current tab and the dialog carry a bar.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- `--font-body` and `--font-heading` are Arial, Helvetica, sans-serif. `--font-ui` is Verdana, used for navigation bars, tabs, buttons, inputs, table heads and all 10px text. `--font-mono` is Courier New for code. One reference set its small text in a commercial bitmap system face (MS Sans Serif); Verdana at 10px is the stand-in.\n- `--text-base` 12px is body text, sidebar links, panel text and bar titles. `--text-small` 10px (Verdana) is meta lines, the utility strip, breadcrumb, footer, hints and directory sub-links. `--text-ui` 11px is the navigation bar, tabs, buttons, inputs and table heads. `--text-large` 13px is lead paragraphs. `--text-h3` 13px, `--text-h2` 16px, `--text-h1` and `--text-display` 19px: 19px bold is the largest text on the page and is used once or twice (lead headline, article title, wordmark).\n- `--line-body` is `normal`; `--line-heading` and `--line-display` are 1.15, so a headline that wraps stays tight. Never open the leading. Headings are bold, not uppercased, not tracked.\n- `--color-page` #e5e5e5 is outside the sheet; `--color-canvas` and `--color-surface` are white. `--color-surface-alt` #eeeeee fills the sidebar column, rail panels, forms, alternate table rows, the breadcrumb and pagination strips. `--color-surface-strong` #cccccc is sidebar title strips and inactive tabs.\n- `--color-bar` #006666 with `--color-bar-text` white is the navigation bar, panel and dialog titles, table heads and the current tab; fills are flat (`--fill-bar` is the plain colour). `--color-bar-alt` #999999 with white text is the utility strip, the footer strip and the titles of `.ds-panel--alt`.\n- `--color-inverse` #4b4b4b with `--color-inverse-text` #eeeeee is used for one block per page (`.ds-panel--inverse`); links inside it take `--color-accent`.\n- `--color-text` black; `--color-text-muted` #666666 for dates, counts and captions. `--color-heading` black; `--color-heading-alt` #006666 for section strip titles and h3.\n- `--color-link` #000099, underlined (`--link-decoration`): every link in the main column, including headlines. `--color-link-quiet` black with `--link-decoration-quiet` none: sidebar, rail channel lists, breadcrumb and \"more...\" links. Links on bars are the bar text colour without underline. `--color-link-hover` #cc0000, `--color-link-active` #ff0000, `--color-link-visited` #666699.\n- `--color-accent` #ffcc00 with black text is the badge and the current navigation item's text; `--color-accent-alt` #cc0000 is promoted sidebar entries and \"updated\" marks.\n- `--color-fill-1` pale green, `--color-fill-2` pale cream, `--color-fill-3` pale lilac, `--color-fill-4` pale grey tint section strips and directory cells; each section of the main column keeps one tint.\n- Buttons are the browser button of the period: `--fill-button` #dddddd, bold, with a `--border-width-strong` outset border in `--color-border-muted`; secondary is #efefef in normal weight. Inputs are white with a 2px inset border in `--color-input-border`. `--color-danger` #cc0000 is error text, the border of an invalid field, the label of a destructive button and the fill of a failed-status badge. `--color-success` #009933 (the flat green of one reference's section markers) fills the positive status badge and colours rising figures in tables (`is-up`); `--color-warning` #e8c26b (the dull amber one reference used for its promotional buttons) is a badge fill only. `--color-danger-surface` and `--color-notice` are the two pale notice backgrounds.\n- One-off values built in `components.css` without a token: `border-style: outset` and `inset` on buttons and inputs (the vocabulary has a single `--border-style`), and `calc()` sums of two spacing steps for bullet indents and the form action offset.\n- Visited, hover, active and focus colours cannot be measured on a static capture; they are colours measured elsewhere in the references assigned to those roles.\n\n## Components\n\n- `.ds-page` on `<body>`: page colour, 5px margin and base type. Wrap everything in `.ds-page__frame`. `.ds-page__top` is the search-plus-hero row; `.ds-page__mosaic` the three columns (`--inner` for the two-column inner page); `.ds-page__col` one column; `.ds-page__pair` two half tiles; `.ds-page__band` the full-width stack of an inner page; `.ds-page__legal` the centred copyright block with `.ds-page__legal-name`. `.ds-block` groups tabs, table and caption so they touch.\n- `.ds-brand`: the site's mark and name, the first cell of the navigation strip and a link to the home page, once per page. `.ds-brand__mark` is a 22px tile (`--size-cell` plus `--space-3`) dressed like the primary button: `--fill-button` with the mark drawn in `--color-button-text`, the 2px outset bevel in `--color-border-muted`, `--radius-control` and `--shadow-control`, so every palette and surface set reskins it. The mark is inline SVG with square line caps and a 2.8 stroke. `.ds-brand__name` is the 16px bold wordmark in `--font-heading` with the heading tracking and transform, in `--color-bar-text` because the strip is the primary bar. The name `chronoskin` and its mark are placeholders for the installing project's own name and logo.\n- `.ds-nav`: `.ds-nav__strip` with the `.ds-brand` (it also takes `.ds-nav__brand`, the padding of a strip cell) and `.ds-nav__links` of `.ds-nav__item` cells; `.ds-nav__link` with `is-current` is the accent cell; in the specimen the open view marks its cell through `:has()` rules, one per view. `.ds-nav__band` holds `.ds-nav__band-links` (`.ds-nav__band-item`, `.ds-nav__band-link`) and the date; home page only.\n- `.ds-view`: one screen of the specimen (`.ds-view--home` is the start page); only the view named in the address shows. A real multi-page site does not need it.\n- `.ds-breadcrumb`: inner pages only, the first thing in the view, a 10px trail on a khaki strip under the navigation strip: quiet links, `.ds-breadcrumb__sep` (`>`), bold `.ds-breadcrumb__current`.\n- `.ds-tile`: the unit of the page. Plain is `--color-surface-alt`; `--1` to `--4` take the fills; `--grow` stretches the last tile of a column. `.ds-tile__title` is the 16px title (inside `.ds-tile__head` when it has `.ds-tile__tools` links on its right). Body helpers: `.ds-tile__text`, `.ds-tile__label` (a bold lead-in line), `.ds-tile__list` (indented link list), `.ds-tile__part` (a part below a ruled line), `.ds-tile__row`.\n- `.ds-search`: a tile that is a search form: title, `.ds-search__row` (input and button), `.ds-search__options` (radio choices), then popular searches. One per home page, top left.\n- `.ds-hero`: the top right tile of the home page. `.ds-hero__figure`, a picture slot that fills its left 240px edge to edge, and `.ds-hero__body` on a tint with the 19px `.ds-hero__title`, `.ds-hero__text` and `.ds-hero__actions`, a short list of bold links whose first is the main action (`.ds-hero__action`). No button, no banner, no overlay text.\n- `.ds-page-header`: head of an inner page, a full-width tile: `.ds-page-header__title` (19px, the only h1), one line of `.ds-page-header__text`, and `.ds-page-header__action` holding one `.ds-button` at the right.\n- `.ds-stat`: the row. One tile cut into three to five `.ds-stat__item` cells by ruled lines; each has a 19px bold `.ds-stat__value` with a 10px `.ds-stat__label` to its right. No icons and no trend arrows.\n- `.ds-prose`: article text inside a plain tile: h1, h2, h3, p, ul, ol, `code`, strong; `.ds-prose__lead` for the 13px first paragraph and `.ds-prose__byline` for the 10px credit.\n- `.ds-link`: blue link with `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` is the text colour; `.ds-link--hot` the promoted entry; `.ds-link--strong` makes a link bold, which is how this style marks the important one. `.ds-links` lays a row of links out.\n- `.ds-button`: bevelled button, bold, for the main action. `.ds-button--secondary` is the lighter one. `.ds-button--danger` keeps the bevel and sets the label in `--color-danger`; never fill a button red. `disabled` or `is-disabled` greys it; `is-active` presses the bevel in. Group with `.ds-buttons`. A link that leads to another page and looks like a button is an `<a>` with the same classes.\n- `.ds-form`: the body of a tile. Each `.ds-form__row` stacks a bold `.ds-form__label` (optional `.ds-form__hint`) above its control. Controls take `.ds-form__input` (`--small` 170px, `--auto` for selects, `--fill` beside a button in a narrow tile, `--area` for textareas); `is-invalid` plus `.ds-form__error` marks a bad field. `.ds-form__check` with `.ds-form__checkbox` for checkboxes and radios; `.ds-form__actions` is the button row above a ruled line.\n- `.ds-table`: every cell is a small khaki tile and the sheet shows between them as a 1px grid; dark `th`, `.ds-table__num` right-aligned, `is-up` (in `--color-success`) and `is-down` (in `--color-danger`) to colour a change. `.ds-table__caption` is the 10px tinted line under it.\n- `.ds-tabs`: a strip of equal-width `.ds-tabs__tab` cells inside `.ds-tabs__item`, 1px apart, across the full width of what they switch; `is-current` is the bar colour with white text.\n- `.ds-list`: items with a 64px `.ds-list__thumb` picture slot on the left, a bold `.ds-list__title` link and a 10px `.ds-list__meta` line (optional `.ds-list__text`), divided by ruled lines. `.ds-list--plain` is the one-line variant without pictures.\n- `.ds-panel`: the one box with a title bar, for things the visitor fills in: `.ds-panel__title` over an outlined `.ds-panel__body`, with `.ds-panel__text`, `.ds-panel__row` (input and button) and `.ds-panel__small`. `.ds-panel--alt` has the grey title; `.ds-panel--inverse` is the dark block, at most one per page.\n- `.ds-index` and `.ds-directory`: inside a tile, a row of 18px `.ds-index__cell` letter cells in the sheet colour, and a two-column list of categories, each a bold `.ds-directory__title` over a 10px `.ds-directory__text` line of sub-links.\n- `.ds-grid`: the closing row of the home page, four `.ds-grid__cell` tiles across the sheet tinted `--1`, `--2`, `--3` or the base fill; each has a `.ds-grid__mark` picture slot, a 13px `.ds-grid__title` link and a 10px `.ds-grid__text` line.\n- `.ds-sidebar`: a tile of grouped links: 16px `.ds-sidebar__title` over a two-column `.ds-sidebar__list` (`--single` for one column) of `.ds-sidebar__item` quiet links; `is-current` makes the open page bold.\n- `.ds-badge`: square 10px bold label on the accent. `.ds-badge--alt` is bare text in the second accent; `.ds-badge--count` a muted count in parentheses. Status labels change the fill: `.ds-badge--success` green with white text, `.ds-badge--warning` yellow with dark text, `.ds-badge--danger` red with white text. One word each, in a table's status column or after a link.\n- `.ds-notice`: outlined message with a bold `.ds-notice__title` on its own line. `.ds-notice--error` uses the danger colour for text and border. Stack several in `.ds-notices`.\n- `.ds-pagination`: a row of cells 2px apart under a list: `.ds-pagination__link` cells in the strong surface, the current page as `.ds-pagination__current` in the bar colour.\n- `.ds-dialog`: the era's message box, in the page flow: 320px box with a 1px outline, bar-coloured `.ds-dialog__title`, `.ds-dialog__body` with `.ds-dialog__text` and left-aligned `.ds-dialog__actions`. `.ds-dialog__backdrop` is the flat area it sits on.\n- `.ds-empty`: a plain tile with a centred muted `.ds-empty__text` and one button; it may sit inside a titled tile of the same tint.\n- `.ds-footer`: `.ds-footer__bar`, a grey strip of `.ds-footer__item` entries with `.ds-footer__link`, then the centred `.ds-page__legal`.\n\n## Never\n\n- `row-gap <= 10px`: list and table rows touch or are a 1px line apart.\n- `block-gap <= 10px`: neighbouring tiles sit 5px apart, never further.\n- `content-width <= 776px`: the sheet is fixed at 770px on a 1024px screen and does not stretch.\n- `palette-colours <= 18`: two olives, four khakis, two greys and one blue; no further hue.\n- `font-size <= 19px`: the largest text measured is a 19px bold headline.\n- `font-size >= 10px`: the smallest text measured is 10px.\n- `font-weight <= 700`: only regular and bold are used.\n- `font-families <= 3`: Arial, Verdana for small and interface text, and a monospace for code.\n- `letter-spacing <= 0px`: no text is tracked.\n- `uppercase-text <= 0%`: no reference uses text-transform.\n- `border-radius <= 0px`: every tile and cell is square.\n- `border-width <= 2px`: 1px dashed rules, 2px bevels on controls.\n- `box-shadow = none`: nothing casts a shadow.\n- `text-shadow = none`: text is flat.\n- `gradient-fills <= 0%`: fills are flat colour.\n- `transition = none`: states change instantly.\n- `animation = none`: nothing moves.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen. Almost anything new is a `.ds-tile`: pick a tint, open with a `.ds-tile__title`, and put a short link list, a few lines of text or a small form under it; divide parts with `.ds-tile__part`, not with nested boxes. Give it a place in the mosaic by adding it to a `.ds-page__col` and let the last tile of the column grow. Something the visitor fills in copies `.ds-panel`; a row of small choices copies `.ds-index` or `.ds-pagination` cells; a new inner page copies one of the specimen's inner views (breadcrumb, `.ds-page-header`, stat tile, tabs on a table, then two columns of tiles). Use only the tokens in `tokens.css` and the `--size-*` and `--space-*` tokens in `components.css`, and take the nearest spacing step instead of a new number. Keep tiles 5px apart, corners square and fills flat; never add a sidebar column, a title bar on a tile, a border around a tile, whitespace between sections, cards, shadows or rounded containers.\n",
    "components.css": "/* Layout tokens (structure part). A mosaic of tiles: three fixed columns\n   inside a 770px sheet, 5px gutters, 10px tile padding. */\n:root {\n  --size-page: 770px;\n  --size-col-a: 275px;\n  --size-col-b: 200px;\n  --size-figure: 240px;\n  --size-figure-height: 170px;\n  --size-thumb: 64px;\n  --size-thumb-height: 48px;\n  --size-cell: 18px;\n  --size-search: 170px;\n  --size-field: 220px;\n  --size-area: 6em;\n  --size-dialog: 320px;\n  --space-1: 1px;\n  --space-2: 2px;\n  --space-3: 4px;\n  --space-4: 5px;\n  --space-5: 10px;\n  --space-6: 14px;\n}\n\n/* ---------- shell ---------- */\n.ds-page {\n  margin: 0;\n  padding: var(--space-4);\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 fixed sheet, centred in the window. Its colour is what shows in the\n   gutters between tiles. */\n.ds-page__frame {\n  box-sizing: border-box;\n  width: var(--size-page);\n  margin: 0 auto;\n  background: var(--color-canvas);\n  border-radius: var(--radius-page);\n}\n/* Top row of the home page: the search tile beside the hero. */\n.ds-page__top {\n  display: grid;\n  grid-template-columns: var(--size-col-a) minmax(0, 1fr);\n  gap: var(--space-4);\n  padding: var(--space-4) 0 0;\n}\n/* The mosaic: three columns of stacked tiles. */\n.ds-page__mosaic {\n  display: grid;\n  grid-template-columns: var(--size-col-a) var(--size-col-b) minmax(0, 1fr);\n  gap: var(--space-4);\n  align-items: stretch;\n  padding: var(--space-4) 0;\n}\n/* Inner page: one wide working column and one column of tiles. */\n.ds-page__mosaic--inner {\n  grid-template-columns: minmax(0, 1fr) var(--size-col-a);\n}\n.ds-page__col {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n}\n/* A full-width band of the inner page, above the columns. */\n.ds-page__band {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  padding: var(--space-4) 0 0;\n}\n.ds-page__pair {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: var(--space-4);\n}\n.ds-page__legal {\n  margin: 0;\n  padding: var(--space-5) var(--space-5) var(--space-6);\n  font-size: var(--text-small);\n  color: var(--color-text);\n  text-align: center;\n}\n.ds-page__legal-name {\n  display: block;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n}\n\n/* ---------- views ---------- */\n/* The specimen is one site of several screens; one view 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/* ---------- 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}\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--hot,\n.ds-link--hot:visited,\n.ds-link--hot.is-visited {\n  color: var(--color-accent-alt);\n  text-decoration: var(--link-decoration-quiet);\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-3) var(--space-5);\n  margin: 0;\n  padding: 0 0 var(--space-5);\n}\n\n/* ---------- nav ---------- */\n/* One strip of cells: the wordmark cell, then one cell per section, divided\n   by 1px lines. Under it a thinner band of service links and the date. */\n.ds-nav {\n  display: block;\n}\n.ds-nav__strip {\n  display: flex;\n  align-items: stretch;\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__brand {\n  padding: var(--space-3) var(--space-5);\n}\n.ds-brand {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-4);\n  text-decoration: none;\n}\n/* The mark sits on a small tile dressed like the primary button. */\n.ds-brand__mark {\n  display: inline-flex;\n  flex: none;\n  box-sizing: border-box;\n  align-items: center;\n  justify-content: center;\n  width: calc(var(--size-cell) + var(--space-3));\n  height: calc(var(--size-cell) + var(--space-3));\n  padding: var(--space-1);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n}\n.ds-brand__mark svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-brand__name {\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-display);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-nav__links {\n  display: flex;\n  flex: 1 1 auto;\n  justify-content: flex-end;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  text-transform: var(--ui-transform);\n}\n.ds-nav__item {\n  display: flex;\n  border-left: var(--border-width) solid var(--color-bar-text);\n}\n.ds-nav__link {\n  display: flex;\n  align-items: center;\n  padding: var(--space-3) var(--space-5);\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.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#home\"],\n.ds-page:has(#home:target) .ds-nav__link[href=\"#home\"],\n.ds-page:has(#news:target) .ds-nav__link[href=\"#news\"],\n.ds-page:has(#article:target) .ds-nav__link[href=\"#news\"],\n.ds-page:has(#events:target) .ds-nav__link[href=\"#events\"],\n.ds-page:has(#submit:target) .ds-nav__link[href=\"#events\"] {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  text-shadow: none;\n}\n.ds-nav__band {\n  display: flex;\n  justify-content: space-between;\n  align-items: baseline;\n  gap: var(--space-5);\n  padding: var(--space-3) var(--space-5);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n/* The service band belongs to the home page: an inner page shows its\n   breadcrumb in that place. */\n.ds-page:has(.ds-view:not(.ds-view--home):target) .ds-nav__band {\n  display: none;\n}\n.ds-nav__band-links {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-nav__band-item,\n.ds-footer__item {\n  padding: 0 var(--space-4);\n  border-left: var(--border-width) solid currentColor;\n}\n.ds-nav__band-item:first-child,\n.ds-footer__item:first-child {\n  padding-left: 0;\n  border-left: 0;\n}\n.ds-nav__band-link {\n  color: var(--color-bar-alt-text);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-nav__band-link:hover,\n.ds-nav__band-link.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n\n/* ---------- breadcrumb ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  margin: 0;\n  padding: var(--space-3) var(--space-5);\n  list-style: none;\n  background: var(--color-surface-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-breadcrumb__sep {\n  color: var(--color-text-muted);\n}\n.ds-breadcrumb__current {\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- tile ---------- */\n/* The unit of the page: a flat block of tint with a large title and no\n   title bar. Tiles never touch; the sheet shows between them. */\n.ds-tile {\n  padding: var(--space-4) var(--space-5) var(--space-5);\n  background: var(--color-surface-alt);\n  border-radius: var(--radius-page);\n}\n.ds-tile--1 { background: var(--color-fill-1); }\n.ds-tile--2 { background: var(--color-fill-2); }\n.ds-tile--3 { background: var(--color-fill-3); }\n.ds-tile--4 { background: var(--color-fill-4); }\n.ds-tile--grow {\n  flex: 1 1 auto;\n}\n.ds-tile__head {\n  display: flex;\n  justify-content: space-between;\n  align-items: baseline;\n  gap: var(--space-4);\n  margin: 0 0 var(--space-3);\n}\n.ds-tile__title {\n  margin: 0 0 var(--space-3);\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-transform: var(--heading-transform);\n  letter-spacing: var(--heading-tracking);\n}\n.ds-tile__head .ds-tile__title {\n  margin: 0;\n}\n.ds-tile__tools {\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-tile__text {\n  margin: 0 0 var(--space-3);\n}\n.ds-tile__text:last-child {\n  margin-bottom: 0;\n}\n.ds-tile__label {\n  margin: 0;\n  font-weight: var(--weight-bold);\n}\n.ds-tile__list {\n  margin: 0;\n  padding: 0 0 0 var(--space-5);\n  list-style: none;\n}\n/* A part of a tile set off by a ruled line. */\n.ds-tile__part {\n  margin: var(--space-5) 0 0;\n  padding: var(--space-4) 0 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-tile__row {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  padding: var(--space-3) 0;\n}\n\n/* ---------- search tile ---------- */\n.ds-search {\n  margin: 0;\n}\n.ds-search__row {\n  display: flex;\n  align-items: center;\n  gap: var(--space-4);\n  padding: var(--space-3) 0 var(--space-4);\n}\n.ds-search__options {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2) var(--space-5);\n  padding: 0 0 var(--space-5);\n}\n\n/* ---------- hero ---------- */\n/* A picture slot filling the left of the tile, the feature text on a tint\n   to its right. */\n.ds-hero {\n  display: grid;\n  grid-template-columns: var(--size-figure) minmax(0, 1fr);\n  min-height: var(--size-figure-height);\n  background: var(--color-fill-2);\n  border-radius: var(--radius-page);\n}\n.ds-hero__figure {\n  box-sizing: border-box;\n  width: 100%;\n  height: 100%;\n  min-height: var(--size-figure-height);\n  background: var(--color-surface-strong);\n  color: var(--color-border-strong);\n}\n.ds-hero__body {\n  padding: var(--space-4) var(--space-5) var(--space-5);\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-5);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n}\n.ds-hero__text {\n  margin: 0 0 var(--space-5);\n}\n.ds-hero__actions {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-hero__action {\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- page header ---------- */\n/* Head of an inner page: one full-width tile. */\n.ds-page-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  gap: var(--space-5);\n  padding: var(--space-4) var(--space-5) var(--space-5);\n  background: var(--color-fill-1);\n  border-radius: var(--radius-page);\n}\n.ds-page-header__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-transform: var(--heading-transform);\n  letter-spacing: var(--heading-tracking);\n}\n.ds-page-header__text {\n  margin: 0;\n}\n.ds-page-header__action {\n  flex: none;\n}\n\n/* ---------- stats ---------- */\n/* One tile cut into cells by ruled lines: the figure on the left of its\n   label. */\n.ds-stat {\n  display: flex;\n  margin: 0;\n  padding: var(--space-4) 0;\n  list-style: none;\n  background: var(--color-surface-alt);\n  border-radius: var(--radius-page);\n}\n.ds-stat__item {\n  display: flex;\n  flex: 1 1 0;\n  align-items: center;\n  gap: var(--space-4);\n  min-width: 0;\n  margin: 0;\n  padding: 0 var(--space-5);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-stat__item:first-child {\n  border-left: 0;\n}\n.ds-stat__value {\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-stat__label {\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- prose ---------- */\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: 0 0 var(--space-3);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-transform: var(--heading-transform);\n  letter-spacing: var(--heading-tracking);\n}\n.ds-prose h1 { font-size: var(--text-h1); }\n.ds-prose h2 { font-size: var(--text-h2); }\n.ds-prose h3 { font-size: var(--text-h3); color: var(--color-heading-alt); }\n.ds-prose p {\n  margin: 0 0 var(--space-5);\n}\n.ds-prose ul,\n.ds-prose ol {\n  margin: 0 0 var(--space-5);\n  padding: 0 0 0 var(--space-6);\n}\n.ds-prose ul {\n  list-style: square;\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 > :last-child {\n  margin-bottom: 0;\n}\n.ds-prose__lead {\n  font-size: var(--text-large);\n}\n.ds-prose__byline {\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n\n/* ---------- buttons ---------- */\n.ds-button {\n  display: inline-block;\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2) var(--space-5);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-body);\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  transition: var(--transition);\n  cursor: pointer;\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  color: var(--color-button-hover-text);\n  box-shadow: var(--shadow-control-hover);\n}\n.ds-button:active,\n.ds-button.is-active {\n  border-style: inset;\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-button--secondary {\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n  font-weight: var(--weight-ui);\n}\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  color: var(--color-danger);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  cursor: default;\n}\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-4);\n}\n\n/* ---------- form ---------- */\n/* Labels sit above their fields; the form is the body of a tile. */\n.ds-form {\n  margin: 0;\n}\n.ds-form__row {\n  padding: 0 0 var(--space-5);\n}\n.ds-form__label {\n  display: block;\n  padding: 0 0 var(--space-2);\n  font-weight: var(--weight-bold);\n}\n.ds-form__hint {\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n  color: var(--color-text-muted);\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-2) var(--space-3);\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: var(--border-width-strong) inset var(--color-input-border);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  line-height: var(--line-body);\n}\n.ds-form__input:focus-visible,\n.ds-form__input.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-form__input--small {\n  width: var(--size-search);\n}\n.ds-form__input--auto {\n  width: auto;\n}\n/* Takes whatever its row leaves beside a button. */\n.ds-form__input--fill {\n  flex: 1 1 0;\n  width: 100%;\n  min-width: 0;\n}\n.ds-form__input--area {\n  width: 100%;\n  height: var(--size-area);\n  resize: vertical;\n}\n.ds-form__input.is-invalid {\n  border-color: var(--color-danger);\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__error {\n  display: block;\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\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  display: flex;\n  gap: var(--space-4);\n  padding: var(--space-4) 0 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n\n/* ---------- table ---------- */\n/* Every cell is its own small tile: the sheet shows as a 1px grid. */\n.ds-table {\n  width: 100%;\n  border-collapse: separate;\n  border-spacing: var(--space-1);\n  border-radius: var(--radius-panel);\n  font-size: var(--text-base);\n}\n.ds-table th {\n  padding: var(--space-3) var(--space-5);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  text-align: left;\n  text-shadow: var(--shadow-text);\n}\n.ds-table td {\n  padding: var(--space-3) var(--space-5);\n  background: var(--color-surface-alt);\n}\n.ds-table th.ds-table__num,\n.ds-table td.ds-table__num {\n  text-align: right;\n}\n.ds-table td.is-up {\n  color: var(--color-success);\n}\n.ds-table td.is-down {\n  color: var(--color-danger);\n}\n.ds-table__caption {\n  margin: 0;\n  padding: var(--space-3) var(--space-5);\n  background: var(--color-fill-1);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- tabs ---------- */\n/* A strip of equal cells, 1px apart, directly on top of what it switches. */\n.ds-tabs {\n  display: flex;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0 0 var(--space-1);\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  text-transform: var(--ui-transform);\n}\n.ds-tabs__item {\n  display: flex;\n  flex: 1 1 0;\n}\n.ds-tabs__tab {\n  display: block;\n  flex: 1 1 auto;\n  padding: var(--space-4) var(--space-5);\n  background: var(--color-surface-strong);\n  color: var(--color-link-quiet);\n  text-align: center;\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-tabs__tab.is-current {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  text-shadow: var(--shadow-text);\n}\n\n/* ---------- list ---------- */\n/* Items with a small picture slot on the left, divided by ruled lines. */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-list__item {\n  display: grid;\n  grid-template-columns: var(--size-thumb) minmax(0, 1fr);\n  column-gap: var(--space-5);\n  padding: var(--space-4) 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-list__item:first-child {\n  border-top: 0;\n  padding-top: 0;\n}\n.ds-list__thumb {\n  box-sizing: border-box;\n  width: var(--size-thumb);\n  height: var(--size-thumb-height);\n  background: var(--color-surface-strong);\n  color: var(--color-border-strong);\n}\n.ds-list__title {\n  font-weight: var(--weight-bold);\n}\n.ds-list__text {\n  display: block;\n}\n.ds-list__meta {\n  display: block;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n/* One-line variant without pictures. */\n.ds-list--plain .ds-list__item {\n  display: block;\n  padding: var(--space-2) 0;\n  border-top: 0;\n}\n.ds-list--plain .ds-list__meta {\n  display: inline;\n}\n\n/* ---------- panel ---------- */\n/* The one box with a title bar, for things the visitor fills in. */\n.ds-panel {\n  background: var(--fill-panel);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__title {\n  margin: 0;\n  padding: var(--space-3) var(--space-5);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-transform: var(--heading-transform);\n  letter-spacing: var(--heading-tracking);\n  text-shadow: var(--shadow-text);\n}\n.ds-panel__body {\n  padding: var(--space-4) var(--space-5) var(--space-5);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-top: 0;\n}\n.ds-panel__body > :first-child { margin-top: 0; }\n.ds-panel__body > :last-child { margin-bottom: 0; }\n.ds-panel__text {\n  margin: 0 0 var(--space-4);\n}\n.ds-panel__small {\n  margin: var(--space-3) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-panel__row {\n  display: flex;\n  align-items: center;\n  gap: var(--space-4);\n}\n.ds-panel--alt .ds-panel__title {\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n}\n.ds-panel--inverse {\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n}\n.ds-panel--inverse .ds-panel__title {\n  background: transparent;\n  color: var(--color-inverse-text);\n  font-size: var(--text-h2);\n  padding-top: var(--space-4);\n  padding-bottom: 0;\n}\n.ds-panel--inverse .ds-panel__body {\n  border-color: transparent;\n}\n.ds-panel--inverse .ds-link,\n.ds-panel--inverse .ds-link:visited,\n.ds-panel--inverse .ds-link.is-visited {\n  color: var(--color-accent);\n}\n\n/* ---------- index ---------- */\n/* A row of small letter cells. */\n.ds-index {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n  margin: 0 0 var(--space-5);\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-index__cell {\n  display: block;\n  box-sizing: border-box;\n  width: var(--size-cell);\n  padding: var(--space-2) 0;\n  background: var(--color-canvas);\n  color: var(--color-link-quiet);\n  text-align: center;\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-index__cell:hover,\n.ds-index__cell.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-directory {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: var(--space-5);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-directory__title {\n  display: block;\n  font-weight: var(--weight-bold);\n}\n.ds-directory__text {\n  display: block;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- grid ---------- */\n/* The closing row of the home page: four equal tiles across the sheet. */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: var(--space-4);\n  padding: 0 0 var(--space-4);\n}\n.ds-grid__cell {\n  padding: var(--space-4) var(--space-5) var(--space-5);\n  background: var(--color-fill-4);\n  border-radius: var(--radius-page);\n}\n.ds-grid__cell--1 { background: var(--color-fill-1); }\n.ds-grid__cell--2 { background: var(--color-fill-2); }\n.ds-grid__cell--3 { background: var(--color-fill-3); }\n.ds-grid__mark {\n  display: block;\n  width: var(--size-thumb-height);\n  height: var(--size-thumb-height);\n  margin: 0 0 var(--space-3);\n  background: var(--color-canvas);\n  color: var(--color-border-strong);\n}\n.ds-grid__title {\n  margin: 0;\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-grid__text {\n  margin: 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- sidebar ---------- */\n/* A tile of grouped links. */\n.ds-sidebar {\n  padding: var(--space-4) var(--space-5) var(--space-5);\n  background: var(--color-surface-alt);\n  border-radius: var(--radius-page);\n}\n.ds-sidebar__title {\n  margin: 0 0 var(--space-3);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-sidebar__list {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  column-gap: var(--space-5);\n  margin: 0;\n  padding: 0 0 0 var(--space-5);\n  list-style: none;\n}\n.ds-sidebar__list--single {\n  grid-template-columns: 1fr;\n}\n.ds-sidebar__item {\n  padding: 0;\n}\n.ds-sidebar__item.is-current {\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- badge ---------- */\n.ds-badge {\n  display: inline-block;\n  padding: 0 var(--space-3);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  border-radius: var(--radius-pill);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-body);\n  vertical-align: baseline;\n}\n.ds-badge--alt {\n  background: transparent;\n  color: var(--color-accent-alt);\n  padding: 0;\n}\n.ds-badge--count {\n  background: transparent;\n  color: var(--color-text-muted);\n  font-weight: var(--weight-body);\n  padding: 0;\n}\n.ds-badge--success {\n  background: var(--color-success);\n  color: var(--color-bar-text);\n}\n.ds-badge--warning {\n  background: var(--color-warning);\n  color: var(--color-accent-text);\n}\n.ds-badge--danger {\n  background: var(--color-danger);\n  color: var(--color-bar-text);\n}\n\n/* ---------- notice ---------- */\n.ds-notice {\n  margin: 0;\n  padding: var(--space-4) var(--space-5);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-notice--error {\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n  border-color: var(--color-danger);\n}\n.ds-notice__title {\n  display: block;\n  font-weight: var(--weight-bold);\n}\n.ds-notices {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n}\n\n/* ---------- pagination ---------- */\n/* A row of number cells, 2px apart. */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n  margin: 0;\n  padding: var(--space-4) 0 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-pagination__link,\n.ds-pagination__current {\n  display: block;\n  box-sizing: border-box;\n  min-width: var(--size-cell);\n  padding: var(--space-2) var(--space-3);\n  text-align: center;\n}\n.ds-pagination__link {\n  background: var(--color-surface-strong);\n  color: var(--color-link-quiet);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-pagination__current {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n}\n\n/* ---------- dialog ---------- */\n.ds-dialog__backdrop {\n  display: flex;\n  justify-content: center;\n  padding: var(--space-6);\n  background: var(--color-overlay);\n}\n.ds-dialog {\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  max-width: 100%;\n  background: var(--color-surface-alt);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-3) var(--space-5);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-dialog__body {\n  padding: var(--space-5);\n}\n.ds-dialog__text {\n  margin: 0 0 var(--space-5);\n}\n.ds-dialog__actions {\n  display: flex;\n  gap: var(--space-4);\n}\n\n/* ---------- empty ---------- */\n.ds-empty {\n  padding: var(--space-6) var(--space-5);\n  background: var(--color-surface-alt);\n  border-radius: var(--radius-page);\n  text-align: center;\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-4);\n  color: var(--color-text-muted);\n}\n\n/* ---------- footer ---------- */\n.ds-footer {\n  display: block;\n}\n.ds-footer__bar {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: var(--space-3) var(--space-5);\n  list-style: none;\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-footer__link {\n  color: var(--color-bar-alt-text);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-footer__link:hover,\n.ds-footer__link.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n\n/* ---------- block ---------- */\n/* Groups a tab strip, a table and its caption so they touch. */\n.ds-block {\n  display: block;\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: tile portal, 2000 to 2004: 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__strip\">\n      <a class=\"ds-brand ds-nav__brand\" data-component=\"brand\" href=\"#\">\n        <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.8\" stroke-linecap=\"square\" aria-hidden=\"true\"><path d=\"M12 3a9 9 0 1 1-9 9\"/><path d=\"M12 17a5 5 0 1 1 5-5\"/><circle cx=\"12\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/></svg></span>\n        <span class=\"ds-brand__name\">chronoskin</span>\n      </a>\n      <ul class=\"ds-nav__links\">\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#home\">Home</a></li>\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#news\">News</a></li>\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#\">Sport</a></li>\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#events\">Listings</a></li>\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#\">Your area</a></li>\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#\">Talk</a></li>\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#\">A-Z</a></li>\n      </ul>\n    </div>\n    <div class=\"ds-nav__band\">\n      <ul class=\"ds-nav__band-links\">\n        <li class=\"ds-nav__band-item\"><a class=\"ds-nav__band-link\" href=\"#\">Text only</a></li>\n        <li class=\"ds-nav__band-item\"><a class=\"ds-nav__band-link\" href=\"#\">Set as your start page</a></li>\n        <li class=\"ds-nav__band-item\"><a class=\"ds-nav__band-link\" href=\"#\">Help</a></li>\n      </ul>\n      <span>Thursday 16th October</span>\n    </div>\n  </header>\n\n  <section class=\"ds-view ds-view--home\" id=\"home\">\n  <div class=\"ds-page__top\">\n    <form class=\"ds-tile ds-tile--1 ds-search\" action=\"#\">\n      <h2 class=\"ds-tile__title\"><label for=\"q\">Search chronoskin</label></h2>\n      <div class=\"ds-search__row\">\n        <input class=\"ds-form__input ds-form__input--small\" id=\"q\" type=\"text\">\n        <button class=\"ds-button\" type=\"button\">Search</button>\n      </div>\n      <div class=\"ds-search__options\">\n        <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"radio\" name=\"scope\" checked> this site</label>\n        <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"radio\" name=\"scope\"> the Web</label>\n        <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"radio\" name=\"scope\"> listings</label>\n      </div>\n      <p class=\"ds-tile__label\">Popular searches right now:</p>\n      <ul class=\"ds-tile__list\">\n        <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">allotments</a></li>\n        <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">bus timetables</a></li>\n        <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">soup recipes</a></li>\n      </ul>\n    </form>\n\n    <section class=\"ds-hero\" data-component=\"hero\">\n      <svg class=\"ds-hero__figure\" viewBox=\"0 0 240 170\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n        <path d=\"M0 130l60-52 44 36 38-60 98 90v26H0z\" fill=\"currentColor\"/>\n        <rect x=\"176\" y=\"22\" width=\"26\" height=\"26\" fill=\"currentColor\"/>\n      </svg>\n      <div class=\"ds-hero__body\">\n        <h1 class=\"ds-hero__title\">Autumn on the allotment</h1>\n        <p class=\"ds-hero__text\">From leaf mould to late leeks, our growers explain what to dig, what to sow and what to leave well alone before the first frost.</p>\n        <ul class=\"ds-hero__actions\">\n          <li><a class=\"ds-link ds-hero__action\" href=\"#home\">Start the six-week plan</a></li>\n          <li><a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#home\">Ask the growers a question</a></li>\n          <li><a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#home\">Print the sowing calendar</a></li>\n        </ul>\n      </div>\n    </section>\n  </div>\n\n  <div class=\"ds-page__mosaic\">\n\n    <div class=\"ds-page__col\">\n      <section class=\"ds-tile\">\n        <div class=\"ds-tile__head\">\n          <h2 class=\"ds-tile__title\"><a class=\"ds-link ds-link--quiet\" href=\"#news\">News</a></h2>\n          <span class=\"ds-tile__tools\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Listen</a> | <a class=\"ds-link ds-link--quiet\" href=\"#home\">Watch</a></span>\n        </div>\n        <ul class=\"ds-list\">\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__thumb\" viewBox=\"0 0 64 48\" aria-hidden=\"true\"><path d=\"M0 40l20-18 14 10 12-16 18 20v12H0z\" fill=\"currentColor\"/></svg>\n            <div>\n              <a class=\"ds-link ds-list__title\" href=\"#article\">Viaduct to reopen after two-year repair</a>\n              <span class=\"ds-list__meta\">9.20am | 31 comments</span>\n            </div>\n          </li>\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__thumb\" viewBox=\"0 0 64 48\" aria-hidden=\"true\"><rect x=\"10\" y=\"12\" width=\"20\" height=\"26\" fill=\"currentColor\"/><rect x=\"36\" y=\"20\" width=\"18\" height=\"18\" fill=\"currentColor\"/></svg>\n            <div>\n              <a class=\"ds-link ds-list__title\" href=\"#article\">Library hours extended through winter</a>\n              <span class=\"ds-list__meta\">8.45am | 12 comments</span>\n            </div>\n          </li>\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__thumb\" viewBox=\"0 0 64 48\" aria-hidden=\"true\"><circle cx=\"32\" cy=\"24\" r=\"14\" fill=\"currentColor\"/></svg>\n            <div>\n              <a class=\"ds-link ds-list__title\" href=\"#article\">Market traders vote on Sunday opening</a>\n              <span class=\"ds-list__meta\">7.50am | 58 comments</span>\n            </div>\n          </li>\n        </ul>\n        <div class=\"ds-tile__part\">\n          <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#news\">More news...</a>\n        </div>\n      </section>\n\n      <div class=\"ds-page__pair\">\n        <section class=\"ds-tile ds-tile--3\">\n          <h2 class=\"ds-tile__title\">Sport</h2>\n          <ul class=\"ds-tile__list\">\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Rovers held at home</a></li>\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Cup draw in full</a></li>\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Fixtures and tables</a></li>\n          </ul>\n        </section>\n        <section class=\"ds-tile ds-tile--2\">\n          <h2 class=\"ds-tile__title\">Listings</h2>\n          <ul class=\"ds-tile__list\">\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#events\">On tonight</a></li>\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Cinema times</a></li>\n            <li><a class=\"ds-link ds-link--hot\" href=\"#submit\">Add your event</a></li>\n          </ul>\n        </section>\n      </div>\n\n      <aside class=\"ds-sidebar ds-tile--grow\" data-component=\"sidebar\">\n        <h2 class=\"ds-sidebar__title\">About chronoskin</h2>\n        <ul class=\"ds-sidebar__list\">\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">How we are run</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Work with us</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Our plans</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Press notices</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Complaints</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#home\">Contact us</a></li>\n        </ul>\n      </aside>\n    </div>\n\n    <div class=\"ds-page__col\">\n      <section class=\"ds-panel\" data-component=\"panel\">\n        <h2 class=\"ds-panel__title\">Where you live</h2>\n        <div class=\"ds-panel__body\">\n          <p class=\"ds-panel__text\">For local news and listings, enter your postcode or town.</p>\n          <div class=\"ds-panel__row\">\n            <input class=\"ds-form__input ds-form__input--fill\" type=\"text\" aria-label=\"Postcode or town\">\n            <button class=\"ds-button\" type=\"button\">Go</button>\n          </div>\n          <p class=\"ds-panel__small\">e.g. MB4 2QT or Ashby <span class=\"ds-badge\" data-component=\"badge\">NEW</span></p>\n        </div>\n      </section>\n\n      <section class=\"ds-tile ds-tile--4 ds-tile--grow\">\n        <h2 class=\"ds-tile__title\">Weather</h2>\n        <p class=\"ds-tile__text\">Bright spells, showers by evening.<br>Min 6&deg;C, max 13&deg;C</p>\n        <p class=\"ds-tile__text\"><a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#home\">Five-day forecast</a></p>\n        <div class=\"ds-tile__part\">\n          <p class=\"ds-tile__label\">What's on locally:</p>\n          <ul class=\"ds-tile__list\">\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Cinema</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Music</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Theatre</a></li>\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#events\">Walks and rides</a></li>\n          </ul>\n        </div>\n        <div class=\"ds-tile__part\">\n          <p class=\"ds-tile__label\">Schools:</p>\n          <ul class=\"ds-tile__list\">\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Term dates</a> <span class=\"ds-badge ds-badge--alt\">Updated</span></li>\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Closures</a> <span class=\"ds-badge ds-badge--count\">(2)</span></li>\n          </ul>\n        </div>\n      </section>\n\n      <section class=\"ds-tile\">\n        <h2 class=\"ds-tile__title\">Your say</h2>\n        <p class=\"ds-tile__text\">\"The new bus station has a roof but nowhere to sit.\" Join the <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#home\">message boards</a>.</p>\n      </section>\n    </div>\n\n    <div class=\"ds-page__col\">\n      <section class=\"ds-tile ds-tile--1 ds-tile--grow\">\n        <h2 class=\"ds-tile__title\">chronoskin directory</h2>\n        <ul class=\"ds-index\">\n          <li><a class=\"ds-index__cell\" href=\"#home\">A</a></li><li><a class=\"ds-index__cell\" href=\"#home\">B</a></li><li><a class=\"ds-index__cell\" href=\"#home\">C</a></li><li><a class=\"ds-index__cell\" href=\"#home\">D</a></li><li><a class=\"ds-index__cell\" href=\"#home\">E</a></li><li><a class=\"ds-index__cell\" href=\"#home\">F</a></li><li><a class=\"ds-index__cell\" href=\"#home\">G</a></li><li><a class=\"ds-index__cell\" href=\"#home\">H</a></li><li><a class=\"ds-index__cell\" href=\"#home\">I</a></li><li><a class=\"ds-index__cell\" href=\"#home\">J</a></li><li><a class=\"ds-index__cell\" href=\"#home\">K</a></li><li><a class=\"ds-index__cell\" href=\"#home\">L</a></li><li><a class=\"ds-index__cell\" href=\"#home\">M</a></li>\n          <li><a class=\"ds-index__cell\" href=\"#home\">N</a></li><li><a class=\"ds-index__cell\" href=\"#home\">O</a></li><li><a class=\"ds-index__cell\" href=\"#home\">P</a></li><li><a class=\"ds-index__cell\" href=\"#home\">Q</a></li><li><a class=\"ds-index__cell\" href=\"#home\">R</a></li><li><a class=\"ds-index__cell\" href=\"#home\">S</a></li><li><a class=\"ds-index__cell\" href=\"#home\">T</a></li><li><a class=\"ds-index__cell\" href=\"#home\">U</a></li><li><a class=\"ds-index__cell\" href=\"#home\">V</a></li><li><a class=\"ds-index__cell\" href=\"#home\">W</a></li><li><a class=\"ds-index__cell\" href=\"#home\">X</a></li><li><a class=\"ds-index__cell\" href=\"#home\">Y</a></li><li><a class=\"ds-index__cell\" href=\"#home\">Z</a></li>\n        </ul>\n        <ul class=\"ds-directory\">\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">Arts &amp; Books</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Poetry</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Galleries</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Reading groups</a>...</span></li>\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">Gardening</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Vegetables</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Ponds</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Pests</a>...</span></li>\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">Children</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Stories</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Games</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Things to make</a>...</span></li>\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">Health</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Sleep</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">First aid</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Eating well</a>...</span></li>\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">Food</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Recipes</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">In season</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Baking</a>...</span></li>\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">History</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Family trees</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Mills</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Canals</a>...</span></li>\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">Learning</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Evening classes</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Languages</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Revision</a>...</span></li>\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">Nature</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Garden birds</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Moorland</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Rivers</a>...</span></li>\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">Music</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Brass bands</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Gigs</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Choirs</a>...</span></li>\n          <li><a class=\"ds-link ds-link--quiet ds-directory__title\" href=\"#home\">Money</a><span class=\"ds-directory__text\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Savings</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Bills</a>, <a class=\"ds-link ds-link--quiet\" href=\"#home\">Pensions</a>...</span></li>\n        </ul>\n        <div class=\"ds-tile__part\">\n          <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#home\">View all categories...</a>\n        </div>\n      </section>\n    </div>\n  </div>\n\n  <div class=\"ds-grid\" data-component=\"grid\">\n    <div class=\"ds-grid__cell ds-grid__cell--1\">\n      <svg class=\"ds-grid__mark\" viewBox=\"0 0 48 48\" aria-hidden=\"true\"><path d=\"M10 14h28v22H10zM16 8h16v6H16z\" fill=\"currentColor\"/></svg>\n      <h3 class=\"ds-grid__title\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Shop</a></h3>\n      <p class=\"ds-grid__text\">Books, maps and recordings</p>\n    </div>\n    <div class=\"ds-grid__cell ds-grid__cell--2\">\n      <svg class=\"ds-grid__mark\" viewBox=\"0 0 48 48\" aria-hidden=\"true\"><circle cx=\"24\" cy=\"26\" r=\"13\" fill=\"currentColor\"/><rect x=\"22\" y=\"6\" width=\"4\" height=\"9\" fill=\"currentColor\"/></svg>\n      <h3 class=\"ds-grid__title\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Learning</a></h3>\n      <p class=\"ds-grid__text\">Courses for every age</p>\n    </div>\n    <div class=\"ds-grid__cell ds-grid__cell--3\">\n      <svg class=\"ds-grid__mark\" viewBox=\"0 0 48 48\" aria-hidden=\"true\"><path d=\"M8 12h32v20H8zM18 36h12v4H18z\" fill=\"currentColor\"/></svg>\n      <h3 class=\"ds-grid__title\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Young chronoskin</a></h3>\n      <p class=\"ds-grid__text\">Stories, puzzles and painting</p>\n    </div>\n    <div class=\"ds-grid__cell\">\n      <svg class=\"ds-grid__mark\" viewBox=\"0 0 48 48\" aria-hidden=\"true\"><path d=\"M16 6h16v36H16zM20 34h8v4h-8z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>\n      <h3 class=\"ds-grid__title\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">On your phone</a></h3>\n      <p class=\"ds-grid__text\">Headlines by text message</p>\n    </div>\n  </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"news\">\n  <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Home</a></li>\n    <li class=\"ds-breadcrumb__sep\">&gt;</li>\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#news\">News</a></li>\n    <li class=\"ds-breadcrumb__sep\">&gt;</li>\n    <li class=\"ds-breadcrumb__current\">Front page</li>\n  </ol>\n\n  <div class=\"ds-page__band\">\n    <div class=\"ds-page-header\">\n      <div>\n        <h1 class=\"ds-page-header__title\">News</h1>\n        <p class=\"ds-page-header__text\">Today's stories from the chronoskin newsroom, newest first.</p>\n      </div>\n      <div class=\"ds-page-header__action\">\n        <a class=\"ds-button\" href=\"#submit\">Send us a story</a>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-page__mosaic ds-page__mosaic--inner\">\n    <div class=\"ds-page__col\">\n      <section class=\"ds-tile ds-tile--grow\">\n        <div class=\"ds-tile__head\">\n          <h2 class=\"ds-tile__title\">Front page</h2>\n          <span class=\"ds-tile__tools\"><a class=\"ds-link ds-link--quiet\" href=\"#news\">Listen</a> | <a class=\"ds-link ds-link--quiet\" href=\"#news\">Watch</a></span>\n        </div>\n        <ul class=\"ds-list\" data-component=\"list\">\n            <li class=\"ds-list__item\">\n              <svg class=\"ds-list__thumb\" viewBox=\"0 0 64 48\" aria-hidden=\"true\"><path d=\"M0 40l20-18 14 10 12-16 18 20v12H0z\" fill=\"currentColor\"/></svg>\n              <div>\n                <a class=\"ds-link ds-list__title\" href=\"#article\">Viaduct to reopen after two-year repair</a>\n                <span class=\"ds-list__text\">Trains will cross the valley again from Monday week, the first since the storm damage.</span>\n                <span class=\"ds-list__meta\">9.20am | 31 comments</span>\n              </div>\n            </li>\n            <li class=\"ds-list__item\">\n              <svg class=\"ds-list__thumb\" viewBox=\"0 0 64 48\" aria-hidden=\"true\"><rect x=\"10\" y=\"12\" width=\"20\" height=\"26\" fill=\"currentColor\"/><rect x=\"36\" y=\"20\" width=\"18\" height=\"18\" fill=\"currentColor\"/></svg>\n              <div>\n                <a class=\"ds-link ds-list__title\" href=\"#article\">Library hours extended through winter</a>\n                <span class=\"ds-list__text\">The central library will stay open until eight on weekday evenings from November.</span>\n                <span class=\"ds-list__meta\">8.45am | 12 comments</span>\n              </div>\n            </li>\n            <li class=\"ds-list__item\">\n              <svg class=\"ds-list__thumb\" viewBox=\"0 0 64 48\" aria-hidden=\"true\"><circle cx=\"32\" cy=\"24\" r=\"14\" fill=\"currentColor\"/></svg>\n              <div>\n                <a class=\"ds-link ds-list__title\" href=\"#article\">Market traders vote on Sunday opening</a> <span class=\"ds-badge\">NEW</span>\n                <span class=\"ds-list__text\">Stallholders decide tonight whether the covered market opens seven days a week.</span>\n                <span class=\"ds-list__meta\">7.50am | 58 comments</span>\n              </div>\n            </li>\n            <li class=\"ds-list__item\">\n              <svg class=\"ds-list__thumb\" viewBox=\"0 0 64 48\" aria-hidden=\"true\"><path d=\"M6 38h52v4H6zM14 14h36v20H14z\" fill=\"currentColor\"/></svg>\n              <div>\n                <a class=\"ds-link ds-list__title\" href=\"#article\">Bus station roof finished, seats to follow</a>\n                <span class=\"ds-list__text\">Passengers will wait until spring for benches under the new canopy.</span>\n                <span class=\"ds-list__meta\">Yesterday | 44 comments</span>\n              </div>\n            </li>\n            <li class=\"ds-list__item\">\n              <svg class=\"ds-list__thumb\" viewBox=\"0 0 64 48\" aria-hidden=\"true\"><path d=\"M32 6l22 36H10z\" fill=\"currentColor\"/></svg>\n              <div>\n                <a class=\"ds-link ds-list__title\" href=\"#article\">Moorland path closed for nesting season</a>\n                <span class=\"ds-list__text\">Walkers are asked to use the lower track until the end of the month.</span>\n                <span class=\"ds-list__meta\">Yesterday | 9 comments</span>\n              </div>\n            </li>\n        </ul>\n        <ul class=\"ds-pagination\" data-component=\"pagination\">\n          <li><a class=\"ds-pagination__link\" href=\"#news\">&lt; Prev</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#news\">1</a></li>\n          <li><span class=\"ds-pagination__current\">2</span></li>\n          <li><a class=\"ds-pagination__link\" href=\"#news\">3</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#news\">4</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#news\">Next &gt;</a></li>\n        </ul>\n      </section>\n    </div>\n\n    <div class=\"ds-page__col\">\n      <aside class=\"ds-sidebar\">\n        <h2 class=\"ds-sidebar__title\">News</h2>\n        <ul class=\"ds-sidebar__list\">\n          <li class=\"ds-sidebar__item is-current\"><a class=\"ds-link ds-link--quiet\" href=\"#news\">Front page</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#news\">Your area</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#news\">Sport</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#news\">Business</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#news\">Weather</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#news\">In pictures</a></li>\n        </ul>\n      </aside>\n\n      <section class=\"ds-panel\">\n        <h2 class=\"ds-panel__title\">News where you live</h2>\n        <div class=\"ds-panel__body\">\n          <p class=\"ds-panel__text\">Enter your postcode or town for stories from your area.</p>\n          <div class=\"ds-panel__row\">\n            <input class=\"ds-form__input ds-form__input--fill\" type=\"text\" aria-label=\"Postcode or town\">\n            <button class=\"ds-button\" type=\"button\">Go</button>\n          </div>\n        </div>\n      </section>\n\n      <section class=\"ds-tile ds-tile--3\">\n        <h2 class=\"ds-tile__title\">Most read</h2>\n        <ul class=\"ds-tile__list\">\n          <li><a class=\"ds-link ds-link--quiet\" href=\"#article\">Viaduct to reopen</a> <span class=\"ds-badge ds-badge--count\">(1,204)</span></li>\n          <li><a class=\"ds-link ds-link--quiet\" href=\"#article\">Sunday market vote</a> <span class=\"ds-badge ds-badge--count\">(873)</span></li>\n          <li><a class=\"ds-link ds-link--quiet\" href=\"#article\">Library hours</a> <span class=\"ds-badge ds-badge--count\">(410)</span></li>\n        </ul>\n      </section>\n\n      <section class=\"ds-panel ds-panel--inverse\">\n        <h2 class=\"ds-panel__title\">Listen again</h2>\n        <div class=\"ds-panel__body\">\n          <p class=\"ds-panel__text\">The breakfast news programme is kept for seven days.</p>\n          <a class=\"ds-link ds-link--strong\" href=\"#news\">Hear this morning's edition</a>\n        </div>\n      </section>\n\n      <section class=\"ds-tile ds-tile--4 ds-tile--grow\">\n        <h2 class=\"ds-tile__title\">Your say</h2>\n        <p class=\"ds-tile__text\">\"The new bus station has a roof but nowhere to sit.\" Join the <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#news\">message boards</a>.</p>\n      </section>\n    </div>\n  </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"article\">\n  <ol class=\"ds-breadcrumb\">\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Home</a></li>\n    <li class=\"ds-breadcrumb__sep\">&gt;</li>\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#news\">News</a></li>\n    <li class=\"ds-breadcrumb__sep\">&gt;</li>\n    <li class=\"ds-breadcrumb__current\">Viaduct to reopen</li>\n  </ol>\n\n  <div class=\"ds-page__mosaic ds-page__mosaic--inner\">\n    <div class=\"ds-page__col\">\n      <section class=\"ds-tile\">\n        <article class=\"ds-prose\" data-component=\"typography\">\n          <h1>Viaduct to reopen after two-year repair</h1>\n          <p class=\"ds-prose__byline\">By the newsroom, 16 October, 9.20am | 31 comments</p>\n          <p class=\"ds-prose__lead\">Trains will cross the valley again from Monday week, two years after storm water undermined the third pier.</p>\n          <p>Engineers finished the last of the stonework on Tuesday. A test train ran in both directions yesterday and the line was handed back to the operator in the afternoon.</p>\n          <h2>What changes for passengers</h2>\n          <p>The replacement buses stop running on the Sunday night. From Monday the journey to the junction takes <strong>eleven minutes</strong> again, not forty.</p>\n          <ul>\n            <li>First train at 6.12am, last at 11.40pm</li>\n            <li>Two trains an hour on weekdays</li>\n            <li>Season tickets bought for the bus stay valid</li>\n          </ul>\n          <h3>Checking your train</h3>\n          <p>Times are on the station boards and by text message: send <code>TRAIN ASHBY</code> to the chronoskin travel line.</p>\n        </article>\n      </section>\n\n      <section class=\"ds-tile ds-tile--4 ds-tile--grow\">\n        <h2 class=\"ds-tile__title\">More on this story</h2>\n        <p class=\"ds-links\" data-component=\"links\">\n          <a class=\"ds-link\" href=\"#article\">The repair in pictures</a>\n          <a class=\"ds-link is-visited\" href=\"#article\">How the storm closed the line</a>\n          <a class=\"ds-link is-hover\" href=\"#article\">New timetable in full</a>\n          <a class=\"ds-link is-active\" href=\"#article\">Send us your photographs</a>\n          <a class=\"ds-link ds-link--quiet\" href=\"#news\">Back to the front page</a>\n        </p>\n        <div class=\"ds-tile__part\">\n          <p class=\"ds-tile__label\">Your comments:</p>\n          <p class=\"ds-tile__text\">\"Two years of the bus has taught me the name of every pothole on the valley road.\" <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#article\">Read all 31</a></p>\n        </div>\n      </section>\n    </div>\n\n    <div class=\"ds-page__col\">\n      <aside class=\"ds-sidebar\">\n        <h2 class=\"ds-sidebar__title\">News</h2>\n        <ul class=\"ds-sidebar__list\">\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#news\">Front page</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#article\">Your area</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#article\">Sport</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#article\">Business</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#article\">Weather</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#article\">In pictures</a></li>\n        </ul>\n      </aside>\n\n      <section class=\"ds-tile ds-tile--2\">\n        <h2 class=\"ds-tile__title\">Also in the news</h2>\n        <ul class=\"ds-list ds-list--plain\">\n          <li class=\"ds-list__item\"><a class=\"ds-link ds-list__title\" href=\"#article\">Library hours extended through winter</a> <span class=\"ds-list__meta\">(8.45am)</span></li>\n          <li class=\"ds-list__item\"><a class=\"ds-link ds-list__title\" href=\"#article\">Market traders vote on Sunday opening</a> <span class=\"ds-list__meta\">(7.50am)</span></li>\n          <li class=\"ds-list__item\"><a class=\"ds-link ds-list__title\" href=\"#article\">Moorland path closed for nesting season</a> <span class=\"ds-list__meta\">(yesterday)</span></li>\n        </ul>\n      </section>\n\n      <section class=\"ds-panel ds-panel--alt\">\n        <h2 class=\"ds-panel__title\">Reopening day</h2>\n        <div class=\"ds-panel__body\">\n          <p class=\"ds-panel__text\">A brass band plays the first train out. It is in the listings.</p>\n          <a class=\"ds-link ds-link--strong\" href=\"#events\">See what's on</a>\n        </div>\n      </section>\n\n      <section class=\"ds-tile ds-tile--grow\">\n        <h2 class=\"ds-tile__title\">Weather</h2>\n        <p class=\"ds-tile__text\">Bright spells, showers by evening.<br>Min 6&deg;C, max 13&deg;C</p>\n        <p class=\"ds-tile__text\"><a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#article\">Five-day forecast</a></p>\n      </section>\n    </div>\n  </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"events\">\n  <ol class=\"ds-breadcrumb\">\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Home</a></li>\n    <li class=\"ds-breadcrumb__sep\">&gt;</li>\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#events\">Listings</a></li>\n    <li class=\"ds-breadcrumb__sep\">&gt;</li>\n    <li class=\"ds-breadcrumb__current\">My events</li>\n  </ol>\n\n  <div class=\"ds-page__band\">\n    <div class=\"ds-page-header\" data-component=\"page-header\">\n      <div>\n        <h1 class=\"ds-page-header__title\">My events</h1>\n        <p class=\"ds-page-header__text\">Events you have sent to the chronoskin listings pages.</p>\n      </div>\n      <div class=\"ds-page-header__action\">\n        <a class=\"ds-button\" href=\"#submit\">Add an event</a>\n      </div>\n    </div>\n\n    <ul class=\"ds-stat\" data-component=\"stats\">\n      <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">6</span><span class=\"ds-stat__label\">Events listed</span></li>\n      <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">2</span><span class=\"ds-stat__label\">Awaiting approval</span></li>\n      <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">418</span><span class=\"ds-stat__label\">Views this week</span></li>\n      <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">27</span><span class=\"ds-stat__label\">Reminders set</span></li>\n    </ul>\n\n    <div class=\"ds-block\">\n      <ul class=\"ds-tabs\" data-component=\"tabs\">\n        <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab is-current\" href=\"#events\">Coming up</a></li>\n        <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#events\">Past</a></li>\n        <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#events\">Drafts</a></li>\n        <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#events\">Venues</a></li>\n      </ul>\n      <table class=\"ds-table\" data-component=\"table\">\n        <thead>\n          <tr><th>Event</th><th>Venue</th><th>Date</th><th class=\"ds-table__num\">Places</th><th>Status</th><th>&nbsp;</th></tr>\n        </thead>\n        <tbody>\n          <tr><td><a class=\"ds-link\" href=\"#submit\">Beginners' beekeeping</a></td><td>Ashby village hall</td><td>18 Oct</td><td class=\"ds-table__num\">24</td><td><span class=\"ds-badge ds-badge--success\">Listed</span></td><td><a class=\"ds-link\" href=\"#submit\">Edit</a></td></tr>\n          <tr><td><a class=\"ds-link\" href=\"#submit\">Canal towpath walk</a></td><td>Lock 14 car park</td><td>19 Oct</td><td class=\"ds-table__num\">40</td><td><span class=\"ds-badge ds-badge--success\">Listed</span></td><td><a class=\"ds-link\" href=\"#submit\">Edit</a></td></tr>\n          <tr><td><a class=\"ds-link\" href=\"#submit\">Brass band open rehearsal</a></td><td>Mill Lane chapel</td><td>23 Oct</td><td class=\"ds-table__num\">120</td><td><span class=\"ds-badge ds-badge--warning\">Awaiting</span></td><td><a class=\"ds-link\" href=\"#submit\">Edit</a></td></tr>\n          <tr><td><a class=\"ds-link\" href=\"#submit\">Apple pressing day</a></td><td>Community orchard</td><td>26 Oct</td><td class=\"ds-table__num\">0</td><td><span class=\"ds-badge ds-badge--danger\">Full</span></td><td><a class=\"ds-link\" href=\"#submit\">Edit</a></td></tr>\n          <tr><td><a class=\"ds-link\" href=\"#submit\">Lantern-making workshop</a></td><td>Central library</td><td>1 Nov</td><td class=\"ds-table__num\">15</td><td><span class=\"ds-badge ds-badge--success\">Listed</span></td><td><a class=\"ds-link\" href=\"#submit\">Edit</a></td></tr>\n        </tbody>\n      </table>\n      <p class=\"ds-table__caption\">Events awaiting approval appear within one working day. <a class=\"ds-link\" href=\"#events\">How listings are checked</a></p>\n    </div>\n  </div>\n\n  <div class=\"ds-page__mosaic ds-page__mosaic--inner\">\n    <div class=\"ds-page__col\">\n      <section class=\"ds-tile ds-tile--4\">\n        <h2 class=\"ds-tile__title\">Apple pressing day</h2>\n        <p class=\"ds-tile__text\">Community orchard, 26 October. All 30 places are taken and 11 people have set a reminder.</p>\n        <div class=\"ds-buttons\" data-component=\"buttons\">\n          <a class=\"ds-button\" href=\"#submit\">Edit event</a>\n          <button class=\"ds-button ds-button--secondary\" type=\"button\">Copy to a new date</button>\n          <button class=\"ds-button ds-button--danger\" type=\"button\">Withdraw</button>\n          <button class=\"ds-button is-disabled\" type=\"button\" disabled>Add places</button>\n        </div>\n      </section>\n\n      <div class=\"ds-dialog__backdrop\">\n        <div class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"dlg-title\">\n          <h2 class=\"ds-dialog__title\" id=\"dlg-title\">Withdraw event</h2>\n          <div class=\"ds-dialog__body\">\n            <p class=\"ds-dialog__text\">Take \"Apple pressing day\" off the listings pages? People with reminders will be told.</p>\n            <div class=\"ds-dialog__actions\">\n              <button class=\"ds-button ds-button--danger\" type=\"button\">Withdraw</button>\n              <a class=\"ds-button ds-button--secondary\" href=\"#events\">Keep it</a>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <section class=\"ds-tile ds-tile--grow\">\n        <h2 class=\"ds-tile__title\">Past events</h2>\n        <div class=\"ds-empty\" data-component=\"empty\">\n          <p class=\"ds-empty__text\">You have no past events yet. They move here the day after they happen.</p>\n          <a class=\"ds-button\" href=\"#submit\">Add an event</a>\n        </div>\n      </section>\n    </div>\n\n    <div class=\"ds-page__col\">\n      <aside class=\"ds-sidebar\">\n        <h2 class=\"ds-sidebar__title\">Listings</h2>\n        <ul class=\"ds-sidebar__list ds-sidebar__list--single\">\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#events\">On tonight</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#events\">This weekend</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#events\">Cinema times</a></li>\n          <li class=\"ds-sidebar__item is-current\"><a class=\"ds-link ds-link--quiet\" href=\"#events\">My events</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#submit\">Add an event</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Sign out</a></li>\n        </ul>\n      </aside>\n\n      <p class=\"ds-notice\"><span class=\"ds-notice__title\">Please note</span> Listings will be read-only on Sunday morning from 2am to 4am.</p>\n\n      <section class=\"ds-panel ds-panel--alt\">\n        <h2 class=\"ds-panel__title\">Reminders</h2>\n        <div class=\"ds-panel__body\">\n          <ul class=\"ds-list ds-list--plain\">\n            <li class=\"ds-list__item\"><a class=\"ds-link ds-list__title\" href=\"#events\">Canal towpath walk</a> <span class=\"ds-list__meta\">(3 days)</span></li>\n            <li class=\"ds-list__item\"><a class=\"ds-link ds-list__title\" href=\"#events\">Apple pressing day</a> <span class=\"ds-list__meta\">(10 days)</span></li>\n          </ul>\n        </div>\n      </section>\n\n      <section class=\"ds-tile ds-tile--2 ds-tile--grow\">\n        <h2 class=\"ds-tile__title\">This weekend</h2>\n        <ul class=\"ds-tile__list\">\n          <li><a class=\"ds-link ds-link--quiet\" href=\"#events\">Folk week opening night</a></li>\n          <li><a class=\"ds-link ds-link--quiet\" href=\"#events\">Farmers' market</a> <span class=\"ds-badge ds-badge--alt\">Updated</span></li>\n          <li><a class=\"ds-link ds-link--quiet\" href=\"#article\">First train over the viaduct</a></li>\n        </ul>\n      </section>\n    </div>\n  </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"submit\">\n  <ol class=\"ds-breadcrumb\">\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">Home</a></li>\n    <li class=\"ds-breadcrumb__sep\">&gt;</li>\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#events\">My events</a></li>\n    <li class=\"ds-breadcrumb__sep\">&gt;</li>\n    <li class=\"ds-breadcrumb__current\">Add an event</li>\n  </ol>\n\n  <div class=\"ds-page__band\">\n    <div class=\"ds-page-header\">\n      <div>\n        <h1 class=\"ds-page-header__title\">Add an event</h1>\n        <p class=\"ds-page-header__text\">Listings are free. We check each one before it appears.</p>\n      </div>\n      <div class=\"ds-page-header__action\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#events\">Back to my events</a>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-page__mosaic ds-page__mosaic--inner\">\n    <div class=\"ds-page__col\">\n      <section class=\"ds-tile ds-tile--grow\">\n        <h2 class=\"ds-tile__title\">About the event</h2>\n        <form class=\"ds-form\" data-component=\"form\" action=\"#submit\">\n          <div class=\"ds-form__row\">\n            <label class=\"ds-form__label\" for=\"f-name\">Event name</label>\n            <input class=\"ds-form__input\" id=\"f-name\" type=\"text\" value=\"Bonfire supper\">\n          </div>\n          <div class=\"ds-form__row\">\n            <label class=\"ds-form__label\" for=\"f-date\">Date</label>\n            <input class=\"ds-form__input is-invalid\" id=\"f-date\" type=\"text\" value=\"5th\">\n            <span class=\"ds-form__error\">Please give the day, month and year.</span>\n          </div>\n          <div class=\"ds-form__row\">\n            <label class=\"ds-form__label\" for=\"f-kind\">Kind of event</label>\n            <select class=\"ds-form__input ds-form__input--auto\" id=\"f-kind\">\n              <option>Food and drink</option>\n              <option>Music</option>\n              <option>Outdoors</option>\n            </select>\n          </div>\n          <div class=\"ds-form__row\">\n            <span class=\"ds-form__label\">Suitable for</span>\n            <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> Families</label>\n            <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\"> Wheelchair users</label>\n          </div>\n          <div class=\"ds-form__row\">\n            <label class=\"ds-form__label\" for=\"f-note\">Description <span class=\"ds-form__hint\">(optional)</span></label>\n            <textarea class=\"ds-form__input ds-form__input--area\" id=\"f-note\"></textarea>\n          </div>\n          <div class=\"ds-form__actions\">\n            <button class=\"ds-button\" type=\"button\">Send event</button>\n            <button class=\"ds-button ds-button--secondary\" type=\"reset\">Clear</button>\n          </div>\n        </form>\n      </section>\n    </div>\n\n    <div class=\"ds-page__col\">\n      <div class=\"ds-notices\" data-component=\"notice\">\n        <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__title\">Not saved</span> We could not read the date. Correct it and send the event again.</p>\n        <p class=\"ds-notice\"><span class=\"ds-notice__title\">Please note</span> Events sent after 4pm on Friday are checked on Monday.</p>\n      </div>\n\n      <section class=\"ds-tile ds-tile--4\">\n        <h2 class=\"ds-tile__title\">Writing a good listing</h2>\n        <p class=\"ds-tile__text\">A listing has about two lines to persuade someone to leave the house. Say what happens, where, and what it costs.</p>\n        <p class=\"ds-tile__label\">Always include:</p>\n        <ul class=\"ds-tile__list\">\n          <li>The day, date and start time</li>\n          <li>The price, or the word \"free\"</li>\n          <li>A telephone number for questions</li>\n        </ul>\n      </section>\n\n      <aside class=\"ds-sidebar ds-tile--grow\">\n        <h2 class=\"ds-sidebar__title\">Listings</h2>\n        <ul class=\"ds-sidebar__list ds-sidebar__list--single\">\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#submit\">On tonight</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#submit\">This weekend</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#submit\">Cinema times</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#events\">My events</a></li>\n          <li class=\"ds-sidebar__item is-current\"><a class=\"ds-link ds-link--quiet\" href=\"#submit\">Add an event</a></li>\n          <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Sign out</a></li>\n        </ul>\n      </aside>\n    </div>\n  </div>\n  </section>\n\n  <footer class=\"ds-footer\" data-component=\"footer\">\n    <ul class=\"ds-footer__bar\">\n      <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#\">Set as your start page</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#\">About chronoskin</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#\">Feedback</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#\">Site index</a></li>\n    </ul>\n    <p class=\"ds-page__legal\"><span class=\"ds-page__legal-name\">chronoskin</span>&copy; 2003 chronoskin. <a class=\"ds-link ds-link--quiet\" href=\"#\">Terms of use</a> | <a class=\"ds-link ds-link--quiet\" href=\"#\">Privacy</a></p>\n  </footer>\n\n</div>\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.portals-2000s.portal.s02.p02.t01.u02\",\n  \"library\": \"2026.10.07-2111\",\n  \"era\": {\n    \"slug\": \"portals-2000s\",\n    \"years\": [\n      2000,\n      2004\n    ]\n  },\n  \"archetype\": \"portal\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1024,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-po-2212\",\n  \"short\": \"v1-po-2212\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #ffffff;\n  --color-canvas: #faf8e3;\n  --color-surface: #f5f4db;\n  --color-surface-alt: #ebebb4;\n  --color-surface-strong: #b0b249;\n  --color-bar: #666633;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #999999;\n  --color-bar-alt-text: #ffffff;\n  --color-inverse: #333333;\n  --color-inverse-text: #f5f4db;\n  --color-text: #333333;\n  --color-text-muted: #666666;\n  --color-heading: #333333;\n  --color-heading-alt: #666633;\n  --color-link: #083090;\n  --color-link-quiet: #333333;\n  --color-link-visited: #666666;\n  --color-link-hover: #000000;\n  --color-link-active: #cc0000;\n  --color-border: #b0b249;\n  --color-border-strong: #666666;\n  --color-border-muted: #edebc6;\n  --color-accent: #ebebb4;\n  --color-accent-text: #333333;\n  --color-accent-alt: #083090;\n  --color-fill-1: #ebebb4;\n  --color-fill-2: #edebc6;\n  --color-fill-3: #f1eed1;\n  --color-fill-4: #f5f4db;\n  --color-button: #ffffff;\n  --color-button-text: #000000;\n  --color-button-hover-text: #000000;\n  --color-button-secondary: #f5f4db;\n  --color-button-secondary-text: #333333;\n  --color-input: #ffffff;\n  --color-input-text: #000000;\n  --color-input-border: #767676;\n  --color-disabled: #edebc6;\n  --color-disabled-text: #999999;\n  --color-danger: #cc0000;\n  --color-danger-surface: #f8e0d8;\n  --color-success: #009933;\n  --color-warning: #ffcc00;\n  --color-notice: #ffffff;\n  --color-notice-text: #333333;\n  --color-focus: #333333;\n  --color-shadow: #333333;\n  --color-overlay: #edebc6;\n}\n\n/* @part type */\n:root {\n  --font-body: Arial, Helvetica, sans-serif;\n  --font-heading: Arial, Helvetica, sans-serif;\n  --font-ui: Verdana, Arial, Helvetica, sans-serif;\n  --font-mono: \"Courier New\", Courier, monospace;\n  --text-base: 12px;\n  --text-small: 10px;\n  --text-ui: 11px;\n  --text-large: 13px;\n  --text-display: 19px;\n  --text-h1: 19px;\n  --text-h2: 16px;\n  --text-h3: 13px;\n  --line-body: normal;\n  --line-heading: 1.15;\n  --line-display: 1.15;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 400;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: none;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 2px;\n  --border-style: dashed;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: none;\n  --shadow-control: none;\n  --shadow-control-hover: none;\n  --shadow-control-pressed: inset 1px 1px 0 var(--color-shadow);\n  --shadow-dialog: none;\n  --shadow-text: none;\n  --fill-page: var(--color-page) url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Crect x='0' y='0' width='1' height='1' fill='black' fill-opacity='.3'/%3E%3Crect x='2' y='2' width='1' height='1' fill='white' fill-opacity='.3'/%3E%3C/svg%3E\");\n  --fill-bar: var(--color-bar) url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='4'%3E%3Crect x='0' y='0' width='1' height='1' fill='white' fill-opacity='.1'/%3E%3Crect x='0' y='2' width='1' height='1' fill='black' fill-opacity='.1'/%3E%3C/svg%3E\");\n  --fill-bar-alt: var(--color-bar-alt) url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='4'%3E%3Crect x='0' y='0' width='1' height='1' fill='white' fill-opacity='.1'/%3E%3Crect x='0' y='2' width='1' height='1' fill='black' fill-opacity='.1'/%3E%3C/svg%3E\");\n  --fill-inverse: var(--color-inverse) url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='4'%3E%3Crect x='0' y='0' width='1' height='1' fill='white' fill-opacity='.1'/%3E%3Crect x='0' y='2' width='1' height='1' fill='black' fill-opacity='.1'/%3E%3C/svg%3E\");\n  --fill-accent: var(--color-accent) url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='4'%3E%3Crect x='0' y='0' width='1' height='1' fill='white' fill-opacity='.1'/%3E%3Crect x='0' y='2' width='1' height='1' fill='black' fill-opacity='.1'/%3E%3C/svg%3E\");\n  --fill-panel: var(--color-surface);\n  --fill-button: var(--color-button);\n  --fill-button-hover: var(--color-button-secondary);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: var(--color-input);\n  --focus-ring: 1px dashed var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
