{
  "id": "v1-hp-7616",
  "long_id": "v1.home-pages-90s.landing.s07.p06.t01.u06",
  "name": "Personal home page: the band page, 1999",
  "era": {
    "slug": "home-pages-90s",
    "code": "hp",
    "name": "Personal home pages",
    "years": [
      1996,
      2001
    ],
    "description": "The amateur web of 1996 to 2001: tiled patterned backgrounds, bright text on black or deep colours, centred everything, big coloured headings, ruled dividers, link lists, visitor counters, guestbooks and web rings, all in the browser default fonts."
  },
  "archetype": "landing",
  "mode": "mix",
  "viewport": {
    "width": 800,
    "fluid": false
  },
  "summary": "The home page of a small band, as one of its members built it on free web space between 1996 and 2001: the name in wide engraved capitals on a dark harlequin tile, a menu bar with a list that drops from one of its cells, a poster box beside the next date, a strip of figures and three equal columns of news, a vote and songs to fetch. Text is small pale Helvetica on deep violet with mint and pink capitals for headings, periwinkle underlined links, flat 2px and 4px frames in cyan with a black line inside them and bars that glow in the middle. Gig tables, a one-at-a-time photo viewer, a web ring and a mailing list form are its furniture; the kind moved to hosted band profiles after 2001.",
  "url": "https://chrono.skin/s/v1-hp-7616",
  "preview_url": "https://chrono.skin/s/v1-hp-7616/specimen.html",
  "files": {
    "STYLE.md": "# Personal home page: the band page, 1999\n\n## Summary\n\nThe home page of a small band, as one of its members built it on free web space between 1996 and 2001: the name in wide engraved capitals on a dark harlequin tile, a menu bar with a list that drops from one of its cells, a poster box beside the next date, a strip of figures and three equal columns of news, a vote and songs to fetch. Text is small pale Helvetica on deep violet with mint and pink capitals for headings, periwinkle underlined links, flat 2px and 4px frames in cyan with a black line inside them and bars that glow in the middle. Gig tables, a one-at-a-time photo viewer, a web ring and a mailing list form are its furniture; the kind moved to hosted band profiles after 2001.\n\n## Layout\n\n- Fixed, not fluid: `--size-page` is 760px, centred in an 800px window. `.ds-page__frame` has no fill and no border: every box stands on `--fill-page`, the tile. Text is left-aligned; nothing is centred but button rows inside message boxes and picture captions.\n- `.ds-nav` is written once at the top: `.ds-nav__top` (the `.ds-brand` at `--text-display` at the left, `.ds-nav__aside` with an italic tagline and one small line right-aligned at the foot of the name) and under it `.ds-nav__links`, one bar of five equal cells in a `--border-width-strong` frame. One cell is a `.ds-menu`: its list drops under it on hover or focus.\n- The specimen is one example site, a band's page, of five views.\n- Home view, `.ds-page__main`, is four rows `--space-5` apart: `.ds-page__poster` (the `.ds-hero` at three parts, a `.ds-panel` with the next date at two, equal in height); the `.ds-stat` strip of four figures; `.ds-page__trio`, three equal columns that end together, each a `.ds-heading` over one box (the `.ds-list` of dated news, a vote drawn with `.ds-progress`, a panel of songs with a one-field form and the web ring line); the `.ds-construction` strip; a heading over the `.ds-grid` of four prints.\n- Inner pages keep the header and footer and drop the poster, the figures and the three columns. `.ds-page__inner` opens with `.ds-page__head`: the `.ds-breadcrumb`, the `.ds-page-header` (title and one italic line at the left, a button at the right, a thick line under) and, on the dates page, the `.ds-tabs` row. Below it: the table, page numbers and a `.ds-page__pair` of two boxes; or `.ds-page__columns`, `.ds-prose` and a `--size-side` (190px) `.ds-sidebar` at the right; or `.ds-page__poster` again with the `.ds-carousel` at three parts and a panel at two, then the grid and the empty state; or notices, the form and the message box in one column.\n- Views: `home`; `gigs` (tabs, the table of dates with its badge key, page numbers, two boxes with a tooltip and a progress bar); `band` (running text, the sidebar, link states); `photos` (the carousel, a list of other nights, four prints, the empty state of a night with no photos); `join` (notices, the form, the message box for leaving the list).\n- Spacing: `--space-1` 2px between figures, digits and tabs; `--space-2` 5px cell and strip padding; `--space-3` 8px between a title and its block, between buttons and form rows; `--space-4` 12px box padding, paragraph spacing, between prints; `--space-5` 18px between blocks and columns, poster padding; `--space-6` 26px list indent and the space under the page.\n- Fixed sizes: `--size-menu` 170px drop-down list, `--size-label` 150px form labels, `--size-field` 240px inputs, `--size-area` 340px textarea, `--size-check` 15px, `--size-dialog` 380px, `--size-icon` 38px, `--size-thumb` 84px height of a print, `--size-day` 72px day block, `--size-slide` 210px height of the carousel picture, `--size-tip` 170px tooltip.\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\nThese are the conventions of the whole era; every layout and token set of it follows them.\n\n- The page and the sheet are of one lightness: `--color-page` and `--color-canvas` are both dark or both light, and `--fill-page` is a quiet tile built from palette tokens. `--color-text`, `--color-text-muted`, `--color-heading`, `--color-heading-alt`, every link colour, `--color-accent-alt`, `--color-danger`, `--color-success` and `--color-warning` are legible on the page, the canvas, all three surfaces and all four `--color-fill-*` blocks, at 2:1 or better.\n- Fills that bring their own text: `--fill-bar` with `--color-bar-text` (the table of sections, table heads, the dialog title), `--fill-bar-alt` with `--color-bar-alt-text` (panel and sidebar title strips), `--fill-inverse` with `--color-inverse-text` (counter digits, awards, the current tab), `--fill-accent` with `--color-accent-text` (the current section, the \"NEW!\" badge, the current page number), `--color-notice` with `--color-notice-text` (notices and the two stripes of the construction strip), `--color-danger-surface` with `--color-danger`. A link on one of these takes the fill's text colour (`.ds-link--plain`).\n- Status colours double as fills: a status badge and the destructive button are filled with `--color-success`, `--color-warning` or `--color-danger` and lettered in `--color-canvas`.\n- `--color-surface-strong` is the ground that shows between the cells of a table; `--color-surface-alt` is alternate rows, inline code and the empty state.\n- Headings are coloured: `--color-heading` (yellow here) for the name, page titles, h1 and h3; `--color-heading-alt` (lime) for section titles, h2, taglines, dates and form labels. `--color-accent-alt` (magenta) is the italic \"Updated!\" word, bullets and list markers.\n- The rainbow bar is six hard steps: `--color-danger`, `--color-warning`, `--color-heading`, `--color-success`, `--color-link`, `--color-link-visited`.\n- Type here: `--font-body` and `--font-heading` are Times New Roman at 16px, the unchanged browser default; headings 19, 24 and 32px bold, the name 48px. `--font-ui` Arial 13px sets buttons, controls, table heads, the section cells and badges; `--font-mono` Courier New sets counter digits, news dates and the textarea. Links are always underlined. Italic is written literally for taglines, lead lines and the footer note.\n- Surface here: `--border-style` `ridge`, 4px for boxes and 6px (`--border-width-strong`) for the section table, the welcome box, tables, panels, pictures, awards and the dialog. No shadows, no radius, flat fills, no transitions. `--fill-page` is a starfield of 1px dots in the text, heading and link colours over `--color-page`.\n- Written literally in `components.css`: `outset` and `inset` bevels on buttons, the brand tile and form controls (drawn in the control's own colour), `dotted` rules inside lists, the 45 degree turn of a bullet, and the slow two-step `.ds-blink`, which only runs inside `prefers-reduced-motion: no-preference`.\n\n## Components\n\n- `.ds-page`: on `<body>`; the tiled page and body type. `.ds-page__frame` the 760px column; `.ds-page__main` and `.ds-page__inner` stack blocks `--space-5` apart; `.ds-page__head` stacks path, page header and tabs; `.ds-page__poster` three parts to two; `.ds-page__trio` three equal columns; `.ds-page__columns` text plus sidebar; `.ds-page__pair` two equal boxes; `.ds-section` a heading with its block.\n- `.ds-nav`: the header. `.ds-nav__top` holds the brand and `.ds-nav__aside` (`.ds-nav__tagline`, `.ds-nav__note`); `.ds-nav__links` is the menu bar of `.ds-nav__item` cells with `.ds-nav__link` in `--fill-bar`; the cell of the view that shows takes `--fill-accent` (one selector per view, or `is-current`).\n- `.ds-menu`: a drop-down under a cell of the bar. Put it on the `.ds-nav__item`, give the cell's link `.ds-menu__label` (it adds the small triangle) and follow it with `.ds-menu__list` of `.ds-menu__link` lines; the list shows on hover, on focus inside it, or with `is-open`.\n- `.ds-brand`: mark and name. `.ds-brand__mark` is a tile dressed like the button (`--fill-button`, `--color-button-text`, outset bevel, `--radius-control`, `--shadow-control`) holding the mark with square caps; `.ds-brand__name` is the name at `--text-display` in `--color-heading`. Name and mark are placeholders for the installing project's own.\n- `.ds-hero`: the poster box on `--fill-panel` in a thick frame with `--shadow-dialog`: `.ds-hero__title`, `.ds-hero__lead`, `.ds-hero__action` (a `.ds-button--large` and a secondary button), `.ds-hero__hint`.\n- `.ds-gig`: the next date inside a panel: `.ds-gig__date` (a block on `--fill-inverse` with `.ds-gig__day` and `.ds-gig__month`) beside `.ds-gig__text` with `.ds-gig__place`.\n- `.ds-page-header`: `.ds-page-header__text` with `.ds-page-header__title` and the italic `.ds-page-header__lead`, `.ds-page-header__action` at the right, a thick line under.\n- `.ds-heading`: a section title in capitals with a thick line under it.\n- `.ds-rule`: a plain rule; `.ds-rule--short` is 60% wide; `.ds-rule--rainbow` is a bar of six colours. `.ds-construction` with `.ds-construction__text` is the striped strip.\n- `.ds-prose`: running text; styles `h1`, `h2`, `h3`, `p`, `ul`, `ol`, `strong`, `code`; `.ds-prose__lead`, `.ds-prose__code`.\n- `.ds-link`: every link; states `is-visited`, `is-hover`, `is-active`, `is-focus`; `.ds-link--quiet` small, `.ds-link--strong` bold, `.ds-link--plain` on a coloured fill. `.ds-links` wraps a line of them. `.ds-icon` holds a small drawing.\n- `.ds-bullets`: a link list with small coloured squares, `.ds-bullets__item` holding a `.ds-bullets__text`.\n- `.ds-button`: a bevelled key; `.ds-button--secondary`, `.ds-button--danger`, `.ds-button--large`; states `is-hover`, `is-pressed`, `is-focus`, `is-disabled`. `.ds-buttons` lays out a row.\n- `.ds-form`: two columns, right-aligned `.ds-form__label` and `.ds-form__field`; `.ds-form__input` (`--short`, `is-error`), `.ds-form__select`, `.ds-form__textarea`, `.ds-form__check`, `.ds-form__hint`, `.ds-form__error`, `.ds-form__actions`.\n- `.ds-table`: one thick frame, rows parted by dotted lines: `.ds-table__head` (`--num`), `.ds-table__cell` (`--num`, `--date`, `--group`), `.ds-table__row--alt`, `.ds-table__desc`, `.ds-table__caption`.\n- `.ds-stat`: the strip of four figures; each `.ds-stat__item` is a `.ds-stat__value` over a `.ds-stat__label`.\n- `.ds-list`: dated news in a framed box: `.ds-list__item` with a `.ds-list__meta` date over a `.ds-list__body`; `.ds-list__more` under it.\n- `.ds-panel`: a thick-framed box: `.ds-panel__title` strip, `.ds-panel__body`, `.ds-panel__text`, `.ds-panel__form` (one field and a button on a line). `.ds-ring` with `.ds-ring__item` is the bracketed line of a web ring.\n- `.ds-grid`: four prints to a row: `.ds-grid__cell` (`--2`, `--3`, `--4` pick the fill) is a coloured card holding a sunken `.ds-grid__pic`, a `.ds-grid__title` link and a `.ds-grid__text` file size.\n- `.ds-carousel`: one picture at a time, as a slide show page was: `.ds-carousel__slide`, `.ds-carousel__caption`, and `.ds-carousel__nav` with two buttons, the `.ds-carousel__dots` squares (`.ds-carousel__dot`, the showing one `is-current`) and `.ds-carousel__count`. Static: the buttons are links to the next page.\n- `.ds-tabs`: a row of `.ds-tabs__item` / `.ds-tabs__tab` cells standing on a line, the current one (`is-current`) in `--fill-inverse`.\n- `.ds-badge`: a solid \"NEW!\" label; `.ds-badge--text` an italic coloured word, `.ds-badge--count` a muted count, `.ds-badge--success`, `.ds-badge--warning`, `.ds-badge--danger` status labels; `.ds-badges` the key line.\n- `.ds-tooltip`: a word with a dotted underline; its `.ds-tooltip__tip` child is a small box on `--color-notice` that shows above it on hover, on focus (give the trigger `tabindex=\"0\"`) or with `is-open`.\n- `.ds-progress`: `.ds-progress__label` (with `.ds-progress__value` at its right) over a sunken `.ds-progress__track` holding a `.ds-progress__bar` of blocks in `--fill-accent`; its length is `.ds-progress__bar--10` to `--100` in tenths. Use it for votes, funds and anything counted towards a total.\n- `.ds-counter`: the visitor counter, `.ds-counter__digit` boxes on `--fill-inverse`.\n- `.ds-sidebar`: a column of `.ds-sidebar__block` boxes, each a `.ds-sidebar__title` strip over a `.ds-sidebar__list` of `.ds-sidebar__item` lines.\n- `.ds-notice`: a line on `--color-notice`; `.ds-notice__label`; `.ds-notice--error`. `.ds-notices` stacks them.\n- `.ds-pagination`: a centred line: `.ds-pagination__label`, `.ds-pagination__link` with `is-current` and `is-disabled`.\n- `.ds-breadcrumb`: a small path, `.ds-breadcrumb__item` separated by a coloured mark, the last `is-current`.\n- `.ds-dialog`: a message box in the page flow: `.ds-dialog__title` bar, `.ds-dialog__body`, `.ds-dialog__actions`. No backdrop.\n- `.ds-empty`: `.ds-empty__title`, `.ds-empty__text` and a button on `--color-surface-alt`.\n- `.ds-footer`: a thick line, then `.ds-footer__row` (`.ds-footer__links` with `.ds-footer__item` at the left, `.ds-footer__count` with the counter at the right), the italic `.ds-footer__note` and `.ds-footer__legal`.\n- `.ds-view`: one screen of the example site; `.ds-view--home` shows when the address names none.\n- Left out as not of the period: `.ds-accordion`, `.ds-switch`, `.ds-avatar`.\n\n## Never\n\n- `content-width <= 760px`: everything fits a 760px column.\n- `font-size <= 48px`: the name is the largest text.\n- `font-size >= 13px`: small print is 13px.\n- `font-weight >= 400`: regular and bold only.\n- `font-families <= 3`: Times, Arial and Courier.\n- `uppercase-text <= 0%`: capitals are typed, never transformed.\n- `border-radius <= 0px`: every box and button is square.\n- `box-shadow-blur <= 0px`: the second frames are hard rings, never soft.\n- `text-shadow = none`: text is flat.\n- `border-width <= 3px`: the frame line is the thickest.\n- `transition = none`: nothing eases on hover.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. A new section is a `.ds-heading` over one framed box; a new box is a `.ds-panel`; a new figure joins the `.ds-stat` strip; anything counted towards a total is a `.ds-progress`. Keep text left-aligned on the tile, keep headings in tracked capitals with the hard drop under them, keep links underlined, and never add radius, soft shadows, hover transitions, a second menu bar or a pale page.\n",
    "components.css": "/* Layout tokens (structure part). A band's page of 1999: a 760px column set\n   straight on the tile of an 800px window. The name and a menu bar with a\n   drop-down, a poster box beside the next date, a strip of figures, three\n   equal columns and a row of photographs. */\n:root {\n  --size-page: 760px;\n  --size-side: 190px;\n  --size-menu: 170px;\n  --size-label: 150px;\n  --size-field: 240px;\n  --size-area: 340px;\n  --size-check: 15px;\n  --size-dialog: 380px;\n  --size-icon: 38px;\n  --size-thumb: 84px;\n  --size-day: 72px;\n  --size-slide: 210px;\n  --size-tip: 170px;\n  --space-1: 2px;\n  --space-2: 5px;\n  --space-3: 8px;\n  --space-4: 12px;\n  --space-5: 18px;\n  --space-6: 26px;\n}\n\n/* ---------- shell: no sheet, the boxes stand on the tile ---------- */\n.ds-page {\n  margin: 0;\n  padding: 0;\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n.ds-page__frame {\n  box-sizing: border-box;\n  width: var(--size-page);\n  margin: 0 auto;\n  padding: var(--space-4) 0 var(--space-6);\n  border-radius: var(--radius-page);\n}\n.ds-page__main,\n.ds-page__inner {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  min-width: 0;\n  padding: var(--space-5) 0 0;\n}\n.ds-page__head {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\n}\n/* The poster and the next date: three parts to two. */\n.ds-page__poster {\n  display: grid;\n  grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);\n  gap: var(--space-5);\n  align-items: stretch;\n}\n/* Three equal columns that end together. */\n.ds-page__trio {\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  gap: var(--space-5);\n  align-items: stretch;\n}\n.ds-page__trio .ds-section > :last-child {\n  flex: 1;\n}\n.ds-page__columns {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) var(--size-side);\n  column-gap: var(--space-5);\n  align-items: start;\n}\n.ds-page__pair {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n  gap: var(--space-5);\n  align-items: start;\n}\n.ds-section {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\n  min-width: 0;\n}\n\n/* Section title: a coloured line of capitals with a thick line under it. */\n.ds-heading {\n  margin: 0;\n  padding: 0 0 var(--space-1);\n  color: var(--color-heading-alt);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  text-shadow: var(--shadow-text);\n}\n\n/* ---------- nav: the name at the left, a line at the right, the menu bar under ---------- */\n.ds-nav {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\n}\n.ds-nav__top {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-5);\n}\n.ds-brand {\n  display: flex;\n  flex: none;\n  align-items: center;\n  gap: var(--space-4);\n  color: var(--color-heading);\n  text-decoration: none;\n}\n.ds-brand__mark {\n  display: flex;\n  flex: none;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  width: var(--text-display);\n  height: var(--text-display);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width) outset var(--color-button);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n}\n.ds-brand__mark svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-brand__name {\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-transform: var(--heading-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__aside {\n  min-width: 0;\n  text-align: right;\n}\n.ds-nav__tagline {\n  display: block;\n  color: var(--color-heading-alt);\n  font-size: var(--text-large);\n  font-style: italic;\n}\n.ds-nav__note {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n/* The menu bar: one row of equal cells with lines between them. */\n.ds-nav__links {\n  display: flex;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  background: var(--fill-bar);\n  border: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  box-shadow: var(--shadow-panel);\n}\n.ds-nav__item {\n  position: relative;\n  display: flex;\n  flex: 1;\n}\n.ds-nav__item + .ds-nav__item {\n  border-left: var(--border-width) var(--border-style) var(--color-border-strong);\n}\n.ds-nav__link {\n  flex: 1;\n  padding: var(--space-3) var(--space-1);\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: center;\n  text-transform: var(--ui-transform);\n  text-decoration: var(--link-decoration-quiet);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\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(#gigs:target) .ds-nav__link[href=\"#gigs\"],\n.ds-page:has(#band:target) .ds-nav__link[href=\"#band\"],\n.ds-page:has(#photos:target) .ds-nav__link[href=\"#photos\"],\n.ds-page:has(#join:target) .ds-nav__link[href=\"#join\"] {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  text-decoration: none;\n}\n\n/* ---------- menu: the list that drops from a cell of the bar ---------- */\n.ds-menu {\n  position: relative;\n}\n.ds-menu__label::after {\n  content: \" \\25BE\";\n}\n.ds-menu__list {\n  display: none;\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 5;\n  box-sizing: border-box;\n  width: var(--size-menu);\n  margin: 0;\n  padding: var(--space-1);\n  list-style: none;\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  box-shadow: var(--shadow-dialog);\n  text-align: left;\n}\n.ds-menu:hover .ds-menu__list,\n.ds-menu:focus-within .ds-menu__list,\n.ds-menu.is-open .ds-menu__list {\n  display: block;\n}\n.ds-menu__link {\n  display: block;\n  padding: var(--space-1) var(--space-2);\n  color: var(--color-link);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  text-transform: var(--ui-transform);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-menu__link:hover,\n.ds-menu__link.is-hover {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n\n/* ---------- hero: the poster ---------- */\n.ds-hero {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  padding: var(--space-5);\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width-strong) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-hero__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-hero__lead {\n  margin: var(--space-3) 0 var(--space-4);\n  font-size: var(--text-large);\n}\n.ds-hero__action {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-hero__hint {\n  margin: var(--space-4) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* ---------- the next date: a day block and the place beside it ---------- */\n.ds-gig {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-4);\n}\n.ds-gig__date {\n  flex: none;\n  box-sizing: border-box;\n  width: var(--size-day);\n  padding: var(--space-2) 0;\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  text-align: center;\n}\n.ds-gig__day {\n  display: block;\n  font-family: var(--font-mono);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-display);\n}\n.ds-gig__month {\n  display: block;\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-gig__text {\n  min-width: 0;\n}\n.ds-gig__place {\n  display: block;\n  color: var(--color-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- page header: title at the left, action at the right, a thick line under ---------- */\n.ds-page-header {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-4);\n  padding: 0 0 var(--space-3);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n}\n.ds-page-header__text {\n  flex: 1;\n  min-width: 0;\n}\n.ds-page-header__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-page-header__lead {\n  margin: var(--space-1) 0 0;\n  color: var(--color-heading-alt);\n  font-style: italic;\n}\n.ds-page-header__action {\n  flex: none;\n}\n\n/* ---------- table: one frame, rows parted by dotted lines ---------- */\n.ds-table {\n  width: 100%;\n  border-collapse: collapse;\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width-strong) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n  font-size: var(--text-base);\n}\n.ds-table__head {\n  padding: var(--space-2) var(--space-3);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  text-align: left;\n  text-shadow: var(--shadow-text);\n  text-transform: var(--ui-transform);\n}\n.ds-table__cell {\n  padding: var(--space-2) var(--space-3);\n  border-top: var(--border-width) dotted var(--color-border-muted);\n  text-align: left;\n  vertical-align: top;\n}\n.ds-table__cell--num,\n.ds-table__head--num {\n  text-align: right;\n}\n.ds-table__cell--date {\n  color: var(--color-heading-alt);\n  font-family: var(--font-mono);\n  font-weight: var(--weight-bold);\n  white-space: nowrap;\n}\n.ds-table__row--alt .ds-table__cell {\n  background: var(--color-surface-alt);\n}\n.ds-table__cell--group {\n  background: var(--color-fill-1);\n  text-align: center;\n}\n.ds-table__desc {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-table__caption {\n  caption-side: bottom;\n  padding: var(--space-3) 0 0;\n  color: var(--color-text);\n  font-size: var(--text-small);\n  text-align: left;\n}\n\n/* ---------- stats: a strip of four figures ---------- */\n.ds-stat {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: var(--space-1);\n  margin: 0;\n  padding: var(--space-1);\n  list-style: none;\n  background: var(--color-surface-strong);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  text-align: center;\n}\n.ds-stat__item {\n  padding: var(--space-2) var(--space-3);\n  background: var(--color-surface);\n}\n.ds-stat__value {\n  display: block;\n  color: var(--color-heading);\n  font-family: var(--font-mono);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n.ds-stat__label {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* ---------- list: dated news, the date over each item ---------- */\n.ds-list {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  list-style: none;\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n  font-size: var(--text-base);\n}\n.ds-list__item {\n  padding: var(--space-2) 0;\n  border-bottom: var(--border-width) dotted var(--color-border-muted);\n}\n.ds-list__item:last-child {\n  border-bottom: 0;\n}\n.ds-list__meta {\n  display: block;\n  color: var(--color-heading-alt);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-list__body {\n  display: block;\n  min-width: 0;\n}\n.ds-list__more {\n  margin: 0;\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  text-align: center;\n}\n\n/* ---------- panel: a framed box with a title strip ---------- */\n.ds-panel {\n  display: flex;\n  flex-direction: column;\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__title {\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-panel__body {\n  flex: 1;\n  padding: var(--space-3) var(--space-4);\n}\n.ds-panel__text {\n  margin: 0 0 var(--space-3);\n}\n.ds-panel__text:last-child {\n  margin: 0;\n}\n.ds-panel__form {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0 0 var(--space-3);\n}\n.ds-panel__form .ds-form__input {\n  flex: 1;\n  width: 50%;\n  min-width: 0;\n}\n.ds-panel__body .ds-bullets {\n  margin: 0 0 var(--space-3);\n}\n/* The web ring line: previous, random, next. */\n.ds-ring {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-weight: var(--weight-bold);\n}\n.ds-ring__item::before {\n  content: \"[ \";\n  color: var(--color-text-muted);\n}\n.ds-ring__item::after {\n  content: \" ]\";\n  color: var(--color-text-muted);\n}\n\n/* ---------- grid: four prints, each on its own coloured card ---------- */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: var(--space-4);\n}\n.ds-grid__cell {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-1);\n  min-width: 0;\n  padding: var(--space-2);\n  background: var(--color-fill-1);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-panel);\n  text-align: center;\n}\n.ds-grid__cell--2 {\n  background: var(--color-fill-2);\n}\n.ds-grid__cell--3 {\n  background: var(--color-fill-3);\n}\n.ds-grid__cell--4 {\n  background: var(--color-fill-4);\n}\n.ds-grid__pic {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: var(--size-thumb);\n  margin: 0 0 var(--space-1);\n  background: var(--color-surface-alt);\n  color: var(--color-heading);\n  border: var(--border-width) inset var(--color-border);\n}\n.ds-grid__pic svg {\n  display: block;\n  width: var(--size-icon);\n  height: var(--size-icon);\n}\n.ds-grid__title {\n  margin: 0;\n  font-weight: var(--weight-bold);\n}\n.ds-grid__text {\n  margin: 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* ---------- carousel: one print at a time, arrows and squares under it ---------- */\n.ds-carousel {\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width-strong) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n  text-align: center;\n}\n.ds-carousel__slide {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: var(--size-slide);\n  background: var(--color-fill-2);\n  color: var(--color-heading);\n}\n.ds-carousel__slide svg {\n  display: block;\n  width: calc(var(--size-icon) * 3);\n  height: calc(var(--size-icon) * 3);\n}\n.ds-carousel__caption {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  font-style: italic;\n}\n.ds-carousel__nav {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-2) var(--space-3);\n  background: var(--color-surface-alt);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-carousel__dots {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-carousel__dot {\n  display: block;\n  width: var(--space-3);\n  height: var(--space-3);\n  background: var(--color-border);\n}\n.ds-carousel__dot.is-current {\n  background: var(--fill-accent);\n}\n.ds-carousel__count {\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* ---------- tabs: a row of cells standing on a line ---------- */\n.ds-tabs {\n  display: flex;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-tabs__item {\n  display: flex;\n}\n.ds-tabs__tab {\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-alt);\n  color: var(--color-link);\n  font-weight: var(--weight-bold);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-tabs__tab.is-current {\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  text-decoration: none;\n}\n\n/* ---------- sidebar: a column of small boxes ---------- */\n.ds-sidebar {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n}\n.ds-sidebar__block {\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  box-shadow: var(--shadow-panel);\n}\n.ds-sidebar__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-base);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  list-style: none;\n  font-size: var(--text-small);\n}\n.ds-sidebar__item {\n  padding: var(--space-1) 0;\n}\n.ds-sidebar__item + .ds-sidebar__item {\n  border-top: var(--border-width) dotted var(--color-border-muted);\n}\n\n/* ---------- footer: a thick line, the links and the counter, the small print ---------- */\n.ds-footer {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-2);\n  margin: var(--space-5) 0 0;\n  padding: var(--space-3) 0 0;\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  font-size: var(--text-small);\n}\n.ds-footer__row {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-4);\n}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__item + .ds-footer__item::before {\n  content: \"|\";\n  padding: 0 var(--space-3);\n  color: var(--color-text-muted);\n}\n.ds-footer__count {\n  flex: none;\n  margin: 0;\n  color: var(--color-heading-alt);\n}\n.ds-footer__note {\n  margin: 0;\n  color: var(--color-heading-alt);\n  font-style: italic;\n}\n.ds-footer__legal {\n  margin: 0;\n  color: var(--color-text-muted);\n}\n\n/* ---------- views: one screen of the example site shows at a time ---------- */\n.ds-view { display: none; }\n.ds-view:target, .ds-page:not(:has(.ds-view:target)) .ds-view--home { display: block; }\n.ds-view:target { scroll-margin-top: 100vh; }\n\n/* ---------- rules: the plain one and the bar of six colours ---------- */\n.ds-rule {\n  box-sizing: border-box;\n  width: 100%;\n  height: 0;\n  margin: 0 auto;\n  border: 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-rule--short {\n  width: 60%;\n}\n.ds-rule--rainbow {\n  height: var(--space-2);\n  border: 0;\n  background: linear-gradient(90deg, var(--color-danger) 0 16.66%, var(--color-warning) 16.66% 33.33%, var(--color-heading) 33.33% 50%, var(--color-success) 50% 66.66%, var(--color-link) 66.66% 83.33%, var(--color-link-visited) 83.33%);\n}\n\n/* ---------- under construction: a strip of diagonal stripes ---------- */\n.ds-construction {\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2);\n  background: repeating-linear-gradient(-45deg, var(--color-notice) 0 var(--space-4), var(--color-notice-text) var(--space-4) calc(var(--space-4) * 2));\n  border: var(--border-width) var(--border-style) var(--color-border);\n  text-align: center;\n}\n.ds-construction__text {\n  display: inline-block;\n  padding: var(--space-1) var(--space-4);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\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\n/* ---------- links ---------- */\n.ds-link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration);\n  transition: var(--transition);\n}\n.ds-link:visited,\n.ds-link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-link:hover,\n.ds-link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-link:active,\n.ds-link.is-active {\n  color: var(--color-link-active);\n}\n.ds-link:focus-visible,\n.ds-link.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-link--quiet,\n.ds-link--quiet:visited,\n.ds-link--quiet.is-visited {\n  color: var(--color-link-quiet);\n  font-size: var(--text-small);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-link--strong {\n  font-weight: var(--weight-bold);\n}\n/* A link on a bar, a notice or another coloured fill takes that fill's text colour. */\n.ds-link--plain,\n.ds-link--plain:visited,\n.ds-link--plain:hover,\n.ds-link--plain.is-hover {\n  color: inherit;\n  text-decoration: underline;\n}\n.ds-links {\n  margin: 0 0 var(--space-4);\n}\n.ds-icon {\n  display: inline-block;\n  width: var(--text-large);\n  height: var(--text-large);\n  vertical-align: middle;\n  color: var(--color-accent-alt);\n}\n.ds-icon svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n\n/* ---------- bullets: a link list with small coloured squares ---------- */\n.ds-bullets {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  text-align: left;\n}\n.ds-bullets__item {\n  display: flex;\n  align-items: baseline;\n  gap: var(--space-3);\n  padding: var(--space-1) 0;\n}\n.ds-bullets__item::before {\n  content: \"\";\n  flex: none;\n  width: var(--space-3);\n  height: var(--space-3);\n  background: var(--color-accent-alt);\n}\n.ds-bullets__item:nth-child(3n+2)::before {\n  background: var(--color-heading-alt);\n}\n.ds-bullets__item:nth-child(3n)::before {\n  background: var(--color-warning);\n}\n.ds-bullets__text {\n  min-width: 0;\n}\n\n/* ---------- prose ---------- */\n.ds-prose {\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  line-height: var(--line-body);\n  text-align: left;\n}\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: var(--space-5) 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-prose h1 {\n  margin-top: 0;\n  font-size: var(--text-h1);\n}\n.ds-prose h2 {\n  color: var(--color-heading-alt);\n  font-size: var(--text-h2);\n}\n.ds-prose h3 {\n  font-size: var(--text-h3);\n}\n.ds-prose p {\n  margin: 0 0 var(--space-4);\n}\n.ds-prose ul,\n.ds-prose ol {\n  margin: 0 0 var(--space-4);\n  padding: 0 0 0 var(--space-6);\n}\n.ds-prose li::marker {\n  color: var(--color-accent-alt);\n}\n.ds-prose strong {\n  color: var(--color-heading-alt);\n  font-weight: var(--weight-bold);\n}\n.ds-prose code {\n  padding: 0 var(--space-1);\n  background: var(--color-surface-alt);\n  font-family: var(--font-mono);\n  font-size: var(--text-base);\n}\n.ds-prose__lead {\n  color: var(--color-heading-alt);\n  font-size: var(--text-large);\n  font-style: italic;\n}\n.ds-prose__code {\n  margin: 0 0 var(--space-4);\n  padding: var(--space-3);\n  overflow: hidden;\n  background: var(--color-surface-alt);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-muted);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  white-space: pre-wrap;\n}\n\n/* ---------- buttons: bevelled keys in their own colour ---------- */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-button {\n  display: inline-block;\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-1) var(--space-4);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width) outset var(--color-button);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  transition: var(--transition);\n  cursor: default;\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  color: var(--color-button-hover-text);\n  box-shadow: var(--shadow-control-hover);\n}\n.ds-button:active,\n.ds-button.is-pressed {\n  border-style: inset;\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-button--secondary,\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n  border-color: var(--color-button-secondary);\n}\n.ds-button--large {\n  padding: var(--space-2) var(--space-5);\n  font-size: var(--text-large);\n  font-weight: var(--weight-bold);\n}\n/* Destructive action: the danger colour as the fill, the sheet colour as the label. */\n.ds-button--danger,\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: var(--color-danger);\n  color: var(--color-canvas);\n  border-color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  border-color: var(--color-disabled);\n  box-shadow: none;\n}\n\n/* ---------- form: labels at the left, fields at the right ---------- */\n.ds-form {\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  column-gap: var(--space-3);\n  row-gap: var(--space-3);\n  align-items: baseline;\n  margin: 0;\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  text-align: left;\n}\n.ds-form__label {\n  color: var(--color-heading-alt);\n  font-weight: var(--weight-bold);\n  text-align: right;\n}\n.ds-form__field {\n  min-width: 0;\n}\n.ds-form__input,\n.ds-form__select,\n.ds-form__textarea {\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-1) var(--space-2);\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: var(--border-width) inset var(--color-input-border);\n  border-radius: var(--radius-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  transition: var(--transition);\n}\n.ds-form__input {\n  width: var(--size-field);\n  max-width: 100%;\n}\n.ds-form__input--short {\n  width: calc(var(--size-field) / 2);\n}\n.ds-form__textarea {\n  display: block;\n  width: var(--size-area);\n  max-width: 100%;\n  font-family: var(--font-mono);\n}\n.ds-form__input:focus-visible,\n.ds-form__select:focus-visible,\n.ds-form__textarea:focus-visible,\n.ds-form__input.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-form__input.is-error {\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__check {\n  appearance: none;\n  box-sizing: border-box;\n  width: var(--size-check);\n  height: var(--size-check);\n  margin: 0 var(--space-2) 0 0;\n  padding: var(--space-1);\n  vertical-align: middle;\n  background-color: var(--color-input);\n  border: var(--border-width) inset var(--color-input-border);\n  border-radius: var(--radius-control);\n}\n/* The tick is a block of the field's text colour inside the field's own fill. */\n.ds-form__check:checked::before,\n.ds-form__check.is-checked::before {\n  content: \"\";\n  display: block;\n  width: 100%;\n  height: 100%;\n  background-color: var(--color-input-text);\n}\n.ds-form__hint {\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-form__error {\n  display: block;\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-form__actions {\n  grid-column: 2;\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  padding: var(--space-2) 0 0;\n}\n\n/* ---------- badge ---------- */\n.ds-badge {\n  display: inline-block;\n  padding: 0 var(--space-2);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  border-radius: var(--radius-pill);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-body);\n  text-transform: var(--ui-transform);\n  vertical-align: baseline;\n}\n/* A loud italic word with no box. */\n.ds-badge--text {\n  padding: 0;\n  background: transparent;\n  color: var(--color-accent-alt);\n  font-style: italic;\n}\n.ds-badge--count {\n  padding: 0;\n  background: transparent;\n  color: var(--color-text-muted);\n  font-weight: var(--weight-body);\n  text-transform: none;\n}\n/* Status labels: the status colour as the fill, the sheet colour as the word. */\n.ds-badge--success {\n  background: var(--color-success);\n  color: var(--color-canvas);\n}\n.ds-badge--warning {\n  background: var(--color-warning);\n  color: var(--color-canvas);\n}\n.ds-badge--danger {\n  background: var(--color-danger);\n  color: var(--color-canvas);\n}\n.ds-badges {\n  display: block;\n  padding: 0 0 var(--space-2);\n}\n\n/* ---------- notice ---------- */\n.ds-notices {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\n}\n.ds-notice {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  text-align: left;\n}\n.ds-notice--error {\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n  border-color: var(--color-danger);\n}\n.ds-notice__label {\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- dialog: a message box in the page flow ---------- */\n.ds-dialog {\n  position: static;\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  max-width: 100%;\n  margin: 0 auto;\n  padding: 0;\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-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  text-transform: var(--ui-transform);\n}\n.ds-dialog__body {\n  margin: 0;\n  padding: var(--space-4) var(--space-4) var(--space-3);\n  text-align: center;\n}\n.ds-dialog__actions {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-3);\n  padding: 0 var(--space-3) var(--space-4);\n}\n\n/* ---------- empty state ---------- */\n.ds-empty {\n  padding: var(--space-4);\n  background: var(--color-surface-alt);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-muted);\n  font-size: var(--text-base);\n  text-align: center;\n}\n.ds-empty__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-3);\n}\n\n/* ---------- pagination ---------- */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  align-items: baseline;\n  gap: var(--space-3);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n}\n.ds-pagination__label {\n  color: var(--color-heading-alt);\n  font-style: italic;\n  font-weight: var(--weight-body);\n}\n.ds-pagination__link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-pagination__link.is-current {\n  padding: 0 var(--space-2);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  text-decoration: none;\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-disabled-text);\n  text-decoration: none;\n}\n\n/* ---------- breadcrumb: \"you are here\", small ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-small);\n}\n.ds-breadcrumb__item + .ds-breadcrumb__item::before {\n  content: \">\";\n  padding: 0 var(--space-3);\n  color: var(--color-accent-alt);\n  font-weight: var(--weight-bold);\n}\n.ds-breadcrumb__item.is-current {\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- tooltip: the small box a pointer brings up, as a title text did ---------- */\n.ds-tooltip {\n  position: relative;\n  display: inline-block;\n  color: var(--color-heading-alt);\n  text-decoration: underline dotted;\n  cursor: help;\n}\n.ds-tooltip__tip {\n  display: none;\n  position: absolute;\n  left: 0;\n  bottom: 100%;\n  z-index: 4;\n  box-sizing: border-box;\n  width: var(--size-tip);\n  padding: var(--space-1) var(--space-2);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-style: normal;\n  font-weight: var(--weight-body);\n  line-height: var(--line-heading);\n  letter-spacing: 0;\n  text-align: left;\n  text-transform: none;\n}\n/* A tip whose word sits near the right edge opens leftward. */\n.ds-tooltip--end .ds-tooltip__tip {\n  left: auto;\n  right: 0;\n}\n.ds-tooltip:hover .ds-tooltip__tip,\n.ds-tooltip:focus .ds-tooltip__tip,\n.ds-tooltip:focus-within .ds-tooltip__tip,\n.ds-tooltip.is-open .ds-tooltip__tip {\n  display: block;\n}\n\n/* ---------- progress: a sunken track filled with blocks, as an installer drew it ---------- */\n.ds-progress {\n  display: block;\n  margin: 0 0 var(--space-3);\n}\n.ds-progress:last-child {\n  margin: 0;\n}\n.ds-progress__label {\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-3);\n  font-size: var(--text-small);\n}\n.ds-progress__value {\n  flex: none;\n  color: var(--color-heading-alt);\n  font-family: var(--font-mono);\n  font-weight: var(--weight-bold);\n}\n.ds-progress__track {\n  display: block;\n  box-sizing: content-box;\n  height: var(--space-4);\n  padding: var(--space-1);\n  background: var(--color-surface-strong);\n  border: var(--border-width) inset var(--color-border);\n}\n.ds-progress__bar {\n  display: block;\n  width: 50%;\n  height: 100%;\n  background: repeating-linear-gradient(90deg, transparent 0 var(--space-3), var(--color-surface-strong) var(--space-3) calc(var(--space-3) + var(--space-1))), var(--fill-accent);\n}\n.ds-progress__bar--10 { width: 10%; }\n.ds-progress__bar--30 { width: 30%; }\n.ds-progress__bar--60 { width: 60%; }\n.ds-progress__bar--70 { width: 70%; }\n\n/* ---------- counter: boxed digits ---------- */\n.ds-counter {\n  display: inline-flex;\n  gap: var(--space-1);\n  padding: var(--space-1);\n  vertical-align: middle;\n  background: var(--color-surface-strong);\n  border: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-counter__digit {\n  display: block;\n  padding: 0 var(--space-1);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-family: var(--font-mono);\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n",
    "specimen.html": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>chronoskin: a band's home page, 1996 to 2001: specimen</title>\n<link rel=\"stylesheet\" href=\"tokens.css\">\n<link rel=\"stylesheet\" href=\"components.css\">\n</head>\n<body class=\"ds-page\" data-component=\"shell\">\n\n<div class=\"ds-page__frame\">\n\n  <header class=\"ds-nav\" data-component=\"nav\">\n    <div class=\"ds-nav__top\">\n      <a class=\"ds-brand\" data-component=\"brand\" href=\"#\">\n        <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M12.00 2.00L13.66 5.82L17.00 3.34L16.53 7.47L20.66 7.00L18.18 10.34L22.00 12.00L18.18 13.66L20.66 17.00L16.53 16.53L17.00 20.66L13.66 18.18L12.00 22.00L10.34 18.18L7.00 20.66L7.47 16.53L3.34 17.00L5.82 13.66L2.00 12.00L5.82 10.34L3.34 7.00L7.47 7.47L7.00 3.34L10.34 5.82ZM9.4 12a2.6 2.6 0 1 0 5.2 0a2.6 2.6 0 1 0 -5.2 0Z\"/></svg></span>\n        <span class=\"ds-brand__name\">chronoskin</span>\n      </a>\n      <div class=\"ds-nav__aside\">\n        <span class=\"ds-nav__tagline\">Four people, three chords, one van.</span>\n        <span class=\"ds-nav__note\">The official home page. Made by the drummer.</span>\n      </div>\n    </div>\n    <ul class=\"ds-nav__links\">\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#home\">Home</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#gigs\">Gigs</a></li>\n      <li class=\"ds-nav__item ds-menu\">\n        <a class=\"ds-nav__link ds-menu__label\" href=\"#band\">The Band</a>\n        <ul class=\"ds-menu__list\">\n          <li><a class=\"ds-menu__link\" href=\"#band\">Who we are</a></li>\n          <li><a class=\"ds-menu__link\" href=\"#photos\">Gig photos</a></li>\n          <li><a class=\"ds-menu__link\" href=\"#gigs\">Where we play</a></li>\n          <li><a class=\"ds-menu__link\" href=\"#join\">Write to us</a></li>\n        </ul>\n      </li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#photos\">Photos</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#join\">Mailing List</a></li>\n    </ul>\n  </header>\n\n  <section class=\"ds-view ds-view--home\" id=\"home\">\n    <main class=\"ds-page__main\">\n\n      <div class=\"ds-page__poster\">\n        <section class=\"ds-hero\" data-component=\"hero\">\n          <h1 class=\"ds-hero__title\">The demo tape is out!</h1>\n          <p class=\"ds-hero__lead\">Five songs, recorded in a garage in two days. Hear three of them here, then come and see chronoskin play them much too loud.</p>\n          <div class=\"ds-hero__action\">\n            <a class=\"ds-button ds-button--large\" href=\"#gigs\">See the Gig Dates</a>\n            <a class=\"ds-button ds-button--secondary\" href=\"#join\">Join the Mailing List</a>\n          </div>\n          <p class=\"ds-hero__hint\">Last updated: Tuesday 9 November 1999. Turn your speakers up.</p>\n        </section>\n\n        <section class=\"ds-panel\" data-component=\"panel\">\n          <h2 class=\"ds-panel__title\">Next gig</h2>\n          <div class=\"ds-panel__body\">\n            <div class=\"ds-gig\">\n              <div class=\"ds-gig__date\"><span class=\"ds-gig__day\">20</span><span class=\"ds-gig__month\">Nov 1999</span></div>\n              <div class=\"ds-gig__text\">\n                <span class=\"ds-gig__place\">The Railway Arms</span>\n                Station Road, upstairs room. Doors at 8, on stage at 9.30.\n              </div>\n            </div>\n            <p class=\"ds-panel__text\">Three pounds on the door, <span class=\"ds-tooltip ds-tooltip--end\" tabindex=\"0\">AA<span class=\"ds-tooltip__tip\" role=\"tooltip\">AA means all ages: no bar in the room, so anybody can come in.</span></span>. Two other bands play first. <span class=\"ds-badge\">NEW!</span></p>\n            <p class=\"ds-panel__text\"><a class=\"ds-link ds-link--strong\" href=\"#gigs\">All the dates for the winter</a></p>\n          </div>\n        </section>\n      </div>\n\n      <ul class=\"ds-stat\" data-component=\"stats\">\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">47</span> <span class=\"ds-stat__label\">gigs played since 1997</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">212</span> <span class=\"ds-stat__label\">names on the mailing list</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">5</span> <span class=\"ds-stat__label\">songs on the demo tape</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">1</span> <span class=\"ds-stat__label\">van, mostly working</span></li>\n      </ul>\n\n      <div class=\"ds-page__trio\">\n        <section class=\"ds-section\">\n          <h2 class=\"ds-heading\">News</h2>\n          <ul class=\"ds-list\" data-component=\"list\">\n            <li class=\"ds-list__item\"><span class=\"ds-list__meta\">09 Nov 99</span> <span class=\"ds-list__body\">Two new dates in December. <a class=\"ds-link\" href=\"#gigs\">See the list</a> <span class=\"ds-badge\">NEW!</span></span></li>\n            <li class=\"ds-list__item\"><span class=\"ds-list__meta\">31 Oct 99</span> <span class=\"ds-list__body\"><a class=\"ds-link\" href=\"#photos\">Photos from the Halloween gig</a> are up. <span class=\"ds-badge ds-badge--text\">Updated!</span></span></li>\n            <li class=\"ds-list__item\"><span class=\"ds-list__meta\">12 Oct 99</span> <span class=\"ds-list__body\">The tape is copied and has a cover. <a class=\"ds-link is-visited\" href=\"#join\">How to get one</a></span></li>\n            <li class=\"ds-list__item\"><span class=\"ds-list__meta\">26 Sep 99</span> <span class=\"ds-list__body\">We have a new bass player. <a class=\"ds-link\" href=\"#band\">Say hello</a></span></li>\n          </ul>\n        </section>\n\n        <section class=\"ds-section\">\n          <h2 class=\"ds-heading\">Your vote</h2>\n          <div class=\"ds-panel\">\n            <h3 class=\"ds-panel__title\">Which song opens the next tape?</h3>\n            <div class=\"ds-panel__body\">\n              <div class=\"ds-progress\">\n                <span class=\"ds-progress__label\">Late Bus Home <span class=\"ds-progress__value\">60%</span></span>\n                <span class=\"ds-progress__track\"><span class=\"ds-progress__bar ds-progress__bar--60\"></span></span>\n              </div>\n              <div class=\"ds-progress\">\n                <span class=\"ds-progress__label\">Paper Round <span class=\"ds-progress__value\">30%</span></span>\n                <span class=\"ds-progress__track\"><span class=\"ds-progress__bar ds-progress__bar--30\"></span></span>\n              </div>\n              <div class=\"ds-progress\">\n                <span class=\"ds-progress__label\">Seven Sisters <span class=\"ds-progress__value\">10%</span></span>\n                <span class=\"ds-progress__track\"><span class=\"ds-progress__bar ds-progress__bar--10\"></span></span>\n              </div>\n              <p class=\"ds-panel__text\"><a class=\"ds-link\" href=\"#join\">Cast your vote</a> (83 so far)</p>\n            </div>\n          </div>\n        </section>\n\n        <section class=\"ds-section\">\n          <h2 class=\"ds-heading\">Listen</h2>\n          <div class=\"ds-panel\">\n            <h3 class=\"ds-panel__title\">From the demo tape</h3>\n            <div class=\"ds-panel__body\">\n              <ul class=\"ds-bullets\">\n                <li class=\"ds-bullets__item\"><span class=\"ds-bullets__text\"><a class=\"ds-link\" href=\"#home\">Late Bus Home</a> <span class=\"ds-badge ds-badge--count\">(WAV, 410 K)</span></span></li>\n                <li class=\"ds-bullets__item\"><span class=\"ds-bullets__text\"><a class=\"ds-link\" href=\"#home\">Paper Round</a> <span class=\"ds-badge ds-badge--count\">(WAV, 388 K)</span></span></li>\n                <li class=\"ds-bullets__item\"><span class=\"ds-bullets__text\"><a class=\"ds-link is-visited\" href=\"#home\">Seven Sisters</a> <span class=\"ds-badge ds-badge--count\">(MID, 22 K)</span></span></li>\n              </ul>\n              <p class=\"ds-panel__text\">Dates by e-mail, once a month:</p>\n              <form class=\"ds-panel__form\" action=\"#join\">\n                <input class=\"ds-form__input\" type=\"text\" value=\"you@example.net\" aria-label=\"Your e-mail\">\n                <button class=\"ds-button\" type=\"button\">Join</button>\n              </form>\n              <ul class=\"ds-ring\">\n                <li class=\"ds-ring__item\"><a class=\"ds-link\" href=\"#home\">Prev</a></li>\n                <li class=\"ds-ring__item\"><a class=\"ds-link\" href=\"#home\">Random</a></li>\n                <li class=\"ds-ring__item\"><a class=\"ds-link\" href=\"#home\">Next</a></li>\n              </ul>\n              <p class=\"ds-panel__text\"><span class=\"ds-badge ds-badge--count\">Site 9 of 27 in the garage bands web ring.</span></p>\n            </div>\n          </div>\n        </section>\n      </div>\n\n      <p class=\"ds-construction\"><span class=\"ds-construction__text\">Under construction: the lyrics page is coming when the singer writes them down</span></p>\n\n      <section class=\"ds-section\">\n        <h2 class=\"ds-heading\">From the last gig</h2>\n        <div class=\"ds-grid\" data-component=\"grid\">\n          <div class=\"ds-grid__cell\">\n            <a class=\"ds-grid__pic\" href=\"#photos\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"7\" r=\"3\"/><path d=\"M12 10v7M7 21l5-4 5 4M6 13h12\"/></svg></a>\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#photos\">The singer</a></p>\n            <p class=\"ds-grid__text\">sing1.jpg, 24 K</p>\n          </div>\n          <div class=\"ds-grid__cell ds-grid__cell--2\">\n            <a class=\"ds-grid__pic\" href=\"#photos\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><circle cx=\"8\" cy=\"17\" r=\"4\"/><path d=\"M11 14l9-10M17 4l3 3\"/></svg></a>\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#photos\">Guitar, close up</a></p>\n            <p class=\"ds-grid__text\">gtr2.jpg, 31 K</p>\n          </div>\n          <div class=\"ds-grid__cell ds-grid__cell--3\">\n            <a class=\"ds-grid__pic\" href=\"#photos\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><ellipse cx=\"12\" cy=\"9\" rx=\"8\" ry=\"3\"/><path d=\"M4 9v7c0 4 16 4 16 0V9M7 3l4 5M17 3l-4 5\"/></svg></a>\n            <p class=\"ds-grid__title\"><a class=\"ds-link is-visited\" href=\"#photos\">Behind the drums</a></p>\n            <p class=\"ds-grid__text\">drum.jpg, 19 K</p>\n          </div>\n          <div class=\"ds-grid__cell ds-grid__cell--4\">\n            <a class=\"ds-grid__pic\" href=\"#photos\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><path d=\"M2 9h14v8H2zM16 12h3l3 2v3h-6M6 19v1M18 19v1\"/></svg></a>\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#photos\">The van</a></p>\n            <p class=\"ds-grid__text\">van.jpg, 27 K</p>\n          </div>\n        </div>\n      </section>\n\n    </main>\n  </section>\n\n  <section class=\"ds-view\" id=\"gigs\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"You are here\">\n          <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#gigs\">Gigs</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Winter 1999</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\" data-component=\"page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">Gig dates</h1>\n            <p class=\"ds-page-header__lead\">Where chronoskin plays this winter, and what it costs to get in.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#join\">Book Us for Your Party</a>\n          </div>\n        </header>\n        <ul class=\"ds-tabs\" data-component=\"tabs\">\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab is-current\" href=\"#gigs\">Coming up</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#gigs\">Played in 1999</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#gigs\">Played in 1998</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#gigs\">The first year</a></li>\n        </ul>\n      </div>\n\n      <table class=\"ds-table\" data-component=\"table\">\n        <caption class=\"ds-table__caption\">\n          <span class=\"ds-badges\" data-component=\"badge\">Key: <span class=\"ds-badge ds-badge--success\">ON SALE</span> tickets on the door <span class=\"ds-badge ds-badge--warning\">FEW LEFT</span> small room, come early <span class=\"ds-badge ds-badge--danger\">OFF</span> cancelled <span class=\"ds-badge\">NEW!</span> added this week</span>\n          Times are when we go on, not when the doors open. <a class=\"ds-link\" href=\"#join\">Ask us if you are not sure</a>\n        </caption>\n        <thead>\n          <tr>\n            <th class=\"ds-table__head\" scope=\"col\">Date</th>\n            <th class=\"ds-table__head\" scope=\"col\">Where</th>\n            <th class=\"ds-table__head\" scope=\"col\">With</th>\n            <th class=\"ds-table__head\" scope=\"col\">Tickets</th>\n            <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">On stage</th>\n            <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Price</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr>\n            <td class=\"ds-table__cell ds-table__cell--date\">Sat 20 Nov</td>\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#gigs\">The Railway Arms</a> <span class=\"ds-table__desc\">Upstairs room, all ages.</span></td>\n            <td class=\"ds-table__cell\">two bands from the college</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">ON SALE</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">9.30</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">3.00</td>\n          </tr>\n          <tr class=\"ds-table__row--alt\">\n            <td class=\"ds-table__cell ds-table__cell--date\">Fri 26 Nov</td>\n            <td class=\"ds-table__cell\"><a class=\"ds-link is-visited\" href=\"#gigs\">The Old Fire Station</a> <span class=\"ds-table__desc\">Youth club night. Holds eighty.</span></td>\n            <td class=\"ds-table__cell\">a disco after</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">FEW LEFT</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">8.00</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">2.00</td>\n          </tr>\n          <tr>\n            <td class=\"ds-table__cell ds-table__cell--date\">Sat 04 Dec</td>\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#gigs\">Students' Union, bar two</a> <span class=\"ds-badge\">NEW!</span> <span class=\"ds-table__desc\">Over eighteens, bring your card.</span></td>\n            <td class=\"ds-table__cell\">nobody yet</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">ON SALE</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">10.15</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">4.00</td>\n          </tr>\n          <tr class=\"ds-table__row--alt\">\n            <td class=\"ds-table__cell ds-table__cell--date\">Sat 11 Dec</td>\n            <td class=\"ds-table__cell\">The Boat House <span class=\"ds-table__desc\">The roof came in. Sorry.</span></td>\n            <td class=\"ds-table__cell\">was to be the big one</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">OFF</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">0.00</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">0.00</td>\n          </tr>\n          <tr>\n            <td class=\"ds-table__cell ds-table__cell--date\">Fri 31 Dec</td>\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#gigs\">The Railway Arms</a> <span class=\"ds-badge\">NEW!</span> <span class=\"ds-table__desc\">New Year's Eve. We play at midnight.</span></td>\n            <td class=\"ds-table__cell\">everybody we know</td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">FEW LEFT</span></td>\n            <td class=\"ds-table__cell ds-table__cell--num\">11.45</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">5.00</td>\n          </tr>\n          <tr>\n            <td class=\"ds-table__cell ds-table__cell--group\" colspan=\"6\">Want chronoskin at your school, club or party? <a class=\"ds-link\" href=\"#join\">Write to us!</a></td>\n          </tr>\n        </tbody>\n      </table>\n\n      <ol class=\"ds-pagination\" data-component=\"pagination\">\n        <li class=\"ds-pagination__label\">Dates, page:</li>\n        <li><span class=\"ds-pagination__link is-disabled\">&lt;&lt; Back</span></li>\n        <li><span class=\"ds-pagination__link is-current\">1</span></li>\n        <li><a class=\"ds-pagination__link\" href=\"#gigs\">2</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#gigs\">3</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#gigs\">Next &gt;&gt;</a></li>\n      </ol>\n\n      <div class=\"ds-page__pair\">\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">How to find the Railway Arms</h2>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__text\">Out of the station, turn left, and it is the pub with the green door. The room is up the stairs at the back. There is nowhere to park, so share a lift or take the <span class=\"ds-tooltip\" tabindex=\"0\">N7<span class=\"ds-tooltip__tip\" role=\"tooltip\">The night bus. The last one leaves the station at ten to one.</span></span>.</p>\n          </div>\n        </section>\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Saving for a real studio</h2>\n          <div class=\"ds-panel__body\">\n            <div class=\"ds-progress\">\n              <span class=\"ds-progress__label\">Door money put by so far <span class=\"ds-progress__value\">70%</span></span>\n              <span class=\"ds-progress__track\"><span class=\"ds-progress__bar ds-progress__bar--70\"></span></span>\n            </div>\n            <p class=\"ds-panel__text\">Every ticket goes towards one day in a studio with a proper desk.</p>\n          </div>\n        </section>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"band\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"You are here\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#band\">The Band</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Who We Are</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">The band</h1>\n            <p class=\"ds-page-header__lead\">Who plays what, and how it all began.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button ds-button--secondary\" href=\"#photos\">See the Photos</a>\n          </div>\n        </header>\n      </div>\n\n      <div class=\"ds-page__columns\">\n        <article class=\"ds-prose\" data-component=\"typography\">\n          <h1>Started in a shed, still in a shed</h1>\n          <p class=\"ds-prose__lead\">The short story, for people who have never heard us.</p>\n          <p>chronoskin began in the spring of 1997 when two of us were given guitars and nobody was given lessons. We play fast, short songs about <strong>buses, weather and Sunday jobs</strong>, and we have never played a song longer than three minutes.</p>\n          <h2>Who plays what</h2>\n          <p>There are four of us. The page you are reading is typed by the drummer, by hand, and saved as <code>band.html</code> on a free host. On stage you will see:</p>\n          <ul>\n            <li>one voice and one guitar, both a little out of tune;</li>\n            <li>a second guitar that does the difficult parts;</li>\n            <li>a bass, since September, and drums.</li>\n          </ul>\n          <h3>How the links look</h3>\n          <p class=\"ds-links\" data-component=\"links\">\n            <a class=\"ds-link\" href=\"#band\">A link you have not followed</a>,\n            <a class=\"ds-link is-visited\" href=\"#band\">one you have visited</a>,\n            <a class=\"ds-link is-hover\" href=\"#band\">one under the pointer</a>,\n            <a class=\"ds-link is-active\" href=\"#band\">one as you click it</a>,\n            <a class=\"ds-link ds-link--strong\" href=\"#band\">a bold link</a> and\n            <a class=\"ds-link ds-link--quiet\" href=\"#band\">a small link</a>.\n          </p>\n          <h3>Come and say hello</h3>\n          <p>We stay behind after every gig to carry the amplifiers, so that is the time to find us. Or put your name on the <a class=\"ds-link\" href=\"#join\">mailing list</a> and we will write to you first.</p>\n        </article>\n\n        <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n          <section class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Fact file</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\">Formed: April 1997</li>\n              <li class=\"ds-sidebar__item\">Gigs so far: 47</li>\n              <li class=\"ds-sidebar__item\">Longest song: 2 min 51</li>\n              <li class=\"ds-sidebar__item\">Tapes: <a class=\"ds-link\" href=\"#home\">one</a></li>\n            </ul>\n          </section>\n          <section class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">The four</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#photos\">Voice and guitar</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#photos\">Lead guitar</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link is-visited\" href=\"#photos\">Bass</a> <span class=\"ds-badge ds-badge--text\">New!</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#photos\">Drums</a> <span class=\"ds-badge ds-badge--count\">(and this page)</span></li>\n            </ul>\n          </section>\n          <section class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Read next</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#gigs\">Where we play next</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#join\">Get the tape</a></li>\n            </ul>\n          </section>\n        </aside>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"photos\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"You are here\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#photos\">Photos</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Halloween 1999</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">Gig photos</h1>\n            <p class=\"ds-page-header__lead\">One at a time, so they load on a slow modem.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#join\">Send Us Your Photos</a>\n          </div>\n        </header>\n      </div>\n\n      <div class=\"ds-page__poster\">\n        <section class=\"ds-carousel\" aria-label=\"Halloween gig, picture 3 of 6\">\n          <div class=\"ds-carousel__slide\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" aria-hidden=\"true\"><circle cx=\"7\" cy=\"7\" r=\"2\"/><path d=\"M7 9v6M4 21l3-6 3 6M4 12h6\"/><circle cx=\"17\" cy=\"7\" r=\"2\"/><path d=\"M17 9v6M14 21l3-6 3 6M14 11l6 2\"/><path d=\"M1 22h22\"/></svg></div>\n          <p class=\"ds-carousel__caption\">The last song. Somebody's coat is on the amplifier.</p>\n          <div class=\"ds-carousel__nav\">\n            <a class=\"ds-button\" href=\"#photos\">&lt;&lt; Back</a>\n            <ul class=\"ds-carousel__dots\" aria-hidden=\"true\">\n              <li class=\"ds-carousel__dot\"></li>\n              <li class=\"ds-carousel__dot\"></li>\n              <li class=\"ds-carousel__dot is-current\"></li>\n              <li class=\"ds-carousel__dot\"></li>\n              <li class=\"ds-carousel__dot\"></li>\n              <li class=\"ds-carousel__dot\"></li>\n            </ul>\n            <span class=\"ds-carousel__count\">3 of 6</span>\n            <a class=\"ds-button\" href=\"#photos\">Next &gt;&gt;</a>\n          </div>\n        </section>\n\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Other nights</h2>\n          <div class=\"ds-panel__body\">\n            <ul class=\"ds-bullets\">\n              <li class=\"ds-bullets__item\"><span class=\"ds-bullets__text\"><a class=\"ds-link\" href=\"#photos\">Halloween at the Fire Station</a> <span class=\"ds-badge ds-badge--count\">(6)</span></span></li>\n              <li class=\"ds-bullets__item\"><span class=\"ds-bullets__text\"><a class=\"ds-link is-visited\" href=\"#photos\">The college summer ball</a> <span class=\"ds-badge ds-badge--count\">(9)</span></span></li>\n              <li class=\"ds-bullets__item\"><span class=\"ds-bullets__text\"><a class=\"ds-link\" href=\"#photos\">Our first gig, 1997</a> <span class=\"ds-badge ds-badge--count\">(4)</span></span></li>\n              <li class=\"ds-bullets__item\"><span class=\"ds-bullets__text\"><a class=\"ds-link\" href=\"#photos\">In the shed</a> <span class=\"ds-badge ds-badge--text\">Silly!</span></span></li>\n              <li class=\"ds-bullets__item\"><span class=\"ds-bullets__text\"><a class=\"ds-link\" href=\"#photos\">Loading the van</a> <span class=\"ds-badge ds-badge--count\">(3)</span></span></li>\n              <li class=\"ds-bullets__item\"><span class=\"ds-bullets__text\"><a class=\"ds-link\" href=\"#photos\">The tape cover, both sides</a> <span class=\"ds-badge ds-badge--count\">(2)</span></span></li>\n            </ul>\n            <p class=\"ds-panel__text\">Every picture is under 40 K. Click one of the small prints below to jump straight to it.</p>\n            <p class=\"ds-panel__text\">Photographs by friends of the band. Ask before you use one on your own page.</p>\n          </div>\n        </section>\n      </div>\n\n      <div class=\"ds-grid\">\n        <div class=\"ds-grid__cell\">\n          <a class=\"ds-grid__pic\" href=\"#photos\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"7\" r=\"3\"/><path d=\"M12 10v7M7 21l5-4 5 4M6 13h12\"/></svg></a>\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#photos\">1. The singer</a></p>\n          <p class=\"ds-grid__text\">sing1.jpg, 24 K</p>\n        </div>\n        <div class=\"ds-grid__cell ds-grid__cell--2\">\n          <a class=\"ds-grid__pic\" href=\"#photos\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><circle cx=\"8\" cy=\"17\" r=\"4\"/><path d=\"M11 14l9-10M17 4l3 3\"/></svg></a>\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#photos\">2. Guitar</a></p>\n          <p class=\"ds-grid__text\">gtr2.jpg, 31 K</p>\n        </div>\n        <div class=\"ds-grid__cell ds-grid__cell--3\">\n          <a class=\"ds-grid__pic\" href=\"#photos\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><path d=\"M3 21l4-12 4 8 3-5 7 9z\"/><circle cx=\"17\" cy=\"5\" r=\"2\"/></svg></a>\n          <p class=\"ds-grid__title\"><a class=\"ds-link is-visited\" href=\"#photos\">3. The last song</a></p>\n          <p class=\"ds-grid__text\">last.jpg, 29 K</p>\n        </div>\n        <div class=\"ds-grid__cell ds-grid__cell--4\">\n          <a class=\"ds-grid__pic\" href=\"#photos\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><ellipse cx=\"12\" cy=\"9\" rx=\"8\" ry=\"3\"/><path d=\"M4 9v7c0 4 16 4 16 0V9M7 3l4 5M17 3l-4 5\"/></svg></a>\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#photos\">4. Drums</a></p>\n          <p class=\"ds-grid__text\">drum.jpg, 19 K</p>\n        </div>\n      </div>\n\n      <section class=\"ds-section\">\n        <h2 class=\"ds-heading\">The Railway Arms, October</h2>\n        <div class=\"ds-empty\" data-component=\"empty\">\n          <h3 class=\"ds-empty__title\">No photos of this one yet</h3>\n          <p class=\"ds-empty__text\">Nobody in the band had a camera. If you took one, we would love to put it here with your name under it.</p>\n          <a class=\"ds-button\" href=\"#join\">Send Us Your Photos</a>\n        </div>\n      </section>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"join\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"You are here\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#join\">Mailing List</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Put Your Name Down</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">Mailing list</h1>\n            <p class=\"ds-page-header__lead\">One letter a month: the dates, the news, nothing else.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button ds-button--secondary\" href=\"#home\">Back to the Front Page</a>\n          </div>\n        </header>\n      </div>\n\n      <div class=\"ds-notices\" data-component=\"notice\">\n        <p class=\"ds-notice\"><span class=\"ds-notice__label\">Please note:</span> the tape is free to anybody on the list who comes to a gig and asks.</p>\n        <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__label\">Oops!</span> Your name was not added. Please type an e-mail address and try again.</p>\n      </div>\n\n      <form class=\"ds-form\" data-component=\"form\" action=\"#join\">\n        <label class=\"ds-form__label\" for=\"j-name\">Your name:</label>\n        <div class=\"ds-form__field\">\n          <input class=\"ds-form__input\" id=\"j-name\" type=\"text\" value=\"A. Listener\">\n        </div>\n        <label class=\"ds-form__label\" for=\"j-mail\">Your e-mail:</label>\n        <div class=\"ds-form__field\">\n          <input class=\"ds-form__input is-error\" id=\"j-mail\" type=\"text\">\n          <span class=\"ds-form__error\">We need an address to write to.</span>\n        </div>\n        <label class=\"ds-form__label\" for=\"j-town\">Nearest town:</label>\n        <div class=\"ds-form__field\">\n          <input class=\"ds-form__input ds-form__input--short\" id=\"j-town\" type=\"text\">\n          <span class=\"ds-form__hint\">(so we know where to play)</span>\n        </div>\n        <label class=\"ds-form__label\" for=\"j-how\">You heard us:</label>\n        <div class=\"ds-form__field\">\n          <select class=\"ds-form__select\" id=\"j-how\">\n            <option>At a gig</option>\n            <option>On the demo tape</option>\n            <option>A friend played it to me</option>\n            <option>Never, I just surfed in</option>\n          </select>\n        </div>\n        <span class=\"ds-form__label\">Also:</span>\n        <div class=\"ds-form__field\">\n          <label><input class=\"ds-form__check\" type=\"checkbox\" checked>Count my vote for the next tape</label>\n        </div>\n        <label class=\"ds-form__label\" for=\"j-note\">Anything to say?</label>\n        <div class=\"ds-form__field\">\n          <textarea class=\"ds-form__textarea\" id=\"j-note\" rows=\"4\">Please play near</textarea>\n        </div>\n        <div class=\"ds-form__actions\" data-component=\"buttons\">\n          <button class=\"ds-button\" type=\"button\">Put Me on the List</button>\n          <button class=\"ds-button ds-button--secondary\" type=\"button\">Clear</button>\n          <button class=\"ds-button\" type=\"button\" disabled>Preview</button>\n          <button class=\"ds-button ds-button--danger\" type=\"button\">Take Me off the List</button>\n        </div>\n      </form>\n\n      <section class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n        <h2 class=\"ds-dialog__title\" id=\"d-title\">Leave the mailing list?</h2>\n        <p class=\"ds-dialog__body\">We will stop writing to you at once. You can put your name down again whenever you like.</p>\n        <div class=\"ds-dialog__actions\">\n          <button class=\"ds-button ds-button--danger\" type=\"button\">Take Me Off</button>\n          <button class=\"ds-button ds-button--secondary\" type=\"button\">Stay on the List</button>\n        </div>\n      </section>\n\n    </div>\n  </section>\n\n  <footer class=\"ds-footer\" data-component=\"footer\">\n    <div class=\"ds-footer__row\">\n      <ul class=\"ds-footer__links\">\n        <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n        <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#gigs\">Gigs</a></li>\n        <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#band\">The Band</a></li>\n        <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#photos\">Photos</a></li>\n        <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#join\">Mailing List</a></li>\n      </ul>\n      <p class=\"ds-footer__count\">You are visitor <span class=\"ds-counter\"><span class=\"ds-counter__digit\">0</span><span class=\"ds-counter__digit\">0</span><span class=\"ds-counter__digit\">8</span><span class=\"ds-counter__digit\">4</span><span class=\"ds-counter__digit\">1</span><span class=\"ds-counter__digit\">2</span></span></p>\n    </div>\n    <p class=\"ds-footer__note\">chronoskin is best heard loud and best viewed at 800x600.</p>\n    <p class=\"ds-footer__legal\">Words, songs and layout copyright 1997 to 1999 chronoskin. Made with a text editor on a free host.</p>\n  </footer>\n\n</div>\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.home-pages-90s.landing.s07.p06.t01.u06\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"home-pages-90s\",\n    \"years\": [\n      1996,\n      2001\n    ]\n  },\n  \"archetype\": \"landing\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 800,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-hp-7616\",\n  \"short\": \"v1-hp-7616\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #140006;\n  --color-canvas: #260010;\n  --color-surface: #33000f;\n  --color-surface-alt: #4d0a1c;\n  --color-surface-strong: #661428;\n  --color-bar: #990022;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #000000;\n  --color-bar-alt-text: #ffd24d;\n  --color-inverse: #e8d8d8;\n  --color-inverse-text: #33000f;\n  --color-text: #f0e0d0;\n  --color-text-muted: #b89898;\n  --color-heading: #ffd24d;\n  --color-heading-alt: #ff6680;\n  --color-link: #ff4d4d;\n  --color-link-quiet: #c0c0c0;\n  --color-link-visited: #cc8866;\n  --color-link-hover: #ffffff;\n  --color-link-active: #ffd24d;\n  --color-border: #804050;\n  --color-border-strong: #cc0033;\n  --color-border-muted: #4d1a26;\n  --color-accent: #ffd24d;\n  --color-accent-text: #140006;\n  --color-accent-alt: #b0c4de;\n  --color-fill-1: #4d0013;\n  --color-fill-2: #3d1f00;\n  --color-fill-3: #2b1040;\n  --color-fill-4: #1a1a2e;\n  --color-button: #660018;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffd24d;\n  --color-button-secondary: #2a2a2a;\n  --color-button-secondary-text: #e8d8d8;\n  --color-input: #000000;\n  --color-input-text: #f0e0d0;\n  --color-input-border: #804050;\n  --color-disabled: #2e1a1e;\n  --color-disabled-text: #7a5c62;\n  --color-danger: #ff7733;\n  --color-danger-surface: #401200;\n  --color-success: #7acc52;\n  --color-warning: #ffaa33;\n  --color-notice: #3d2b00;\n  --color-notice-text: #ffe9a6;\n  --color-focus: #ffd24d;\n  --color-shadow: #000000;\n  --color-overlay: rgba(0, 0, 0, 0.75);\n}\n\n/* @part type */\n:root {\n  --font-body: \"Times New Roman\", Times, serif;\n  --font-heading: \"Times New Roman\", Times, serif;\n  --font-ui: Arial, Helvetica, sans-serif;\n  --font-mono: \"Courier New\", Courier, monospace;\n  --text-base: 16px;\n  --text-small: 13px;\n  --text-ui: 13px;\n  --text-large: 19px;\n  --text-display: 48px;\n  --text-h1: 32px;\n  --text-h2: 24px;\n  --text-h3: 19px;\n  --line-body: 1.2;\n  --line-heading: 1.1;\n  --line-display: 1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 400;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: -0.08em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: underline;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 3px;\n  --border-style: solid;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: 0 0 0 2px var(--color-canvas), 0 0 0 3px var(--color-border);\n  --shadow-control: none;\n  --shadow-control-hover: 0 0 0 1px var(--color-focus);\n  --shadow-control-pressed: none;\n  --shadow-dialog: 0 0 0 3px var(--color-canvas), 0 0 0 4px var(--color-border-strong);\n  --shadow-text: none;\n  --fill-page: repeating-linear-gradient(45deg, color-mix(in srgb, var(--color-border-muted) 60%, transparent) 0 1px, transparent 1px 14px), repeating-linear-gradient(-45deg, color-mix(in srgb, var(--color-border-muted) 60%, transparent) 0 1px, transparent 1px 14px), var(--color-page);\n  --fill-bar: linear-gradient(var(--color-bar), color-mix(in srgb, var(--color-bar) 50%, black));\n  --fill-bar-alt: linear-gradient(var(--color-bar-alt), color-mix(in srgb, var(--color-bar-alt) 78%, white));\n  --fill-inverse: var(--color-inverse);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-surface);\n  --fill-button: linear-gradient(color-mix(in srgb, var(--color-button) 70%, white) 0 1px, var(--color-button) 1px);\n  --fill-button-hover: color-mix(in srgb, var(--color-button) 82%, white);\n  --fill-button-secondary: linear-gradient(color-mix(in srgb, var(--color-button-secondary) 70%, white) 0 1px, var(--color-button-secondary) 1px);\n  --fill-input: var(--color-input);\n  --focus-ring: 1px solid var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
