{
  "id": "v1-bb-111b",
  "long_id": "v1.bulletin-board-forums.forum.s01.p01.t01.u11",
  "name": "Bulletin board forum, 2002 to 2007",
  "era": {
    "slug": "bulletin-board-forums",
    "code": "bb",
    "name": "Bulletin-board forums",
    "years": [
      2002,
      2007
    ],
    "description": "Hosted forum software, 2002 to 2007: full-width tables of boards and topics with one-pixel gaps, tinted cells, a dark title bar on every block, and everything set in 10 and 11px Verdana."
  },
  "archetype": "forum",
  "mode": "mix",
  "viewport": {
    "width": 1024,
    "fluid": true
  },
  "summary": "This is the look of hosted bulletin-board software in the first half of the 2000s: a white sheet on a grey page, filled edge to edge with dense tables of boards, topics and counts in 10px and 11px Verdana. Colour comes from one cold blue family, a navy primary bar with a short highlight at its top edge, a slate secondary bar and three pale blue-grey cell surfaces, with orange and dark red used only as small markers. Every box is square, flat and separated from its neighbour by a one-pixel white gap or a one-pixel rule; there are no shadows, no rounded corners and no motion.",
  "url": "https://chrono.skin/s/v1-bb-111b",
  "preview_url": "https://chrono.skin/s/v1-bb-111b/specimen.html",
  "files": {
    "STYLE.md": "# Bulletin board forum, 2002 to 2007\n\n## Summary\n\nThis is the look of hosted bulletin-board software in the first half of the 2000s: a white sheet on a grey page, filled edge to edge with dense tables of boards, topics and counts in 10px and 11px Verdana. Colour comes from one cold blue family, a navy primary bar with a short highlight at its top edge, a slate secondary bar and three pale blue-grey cell surfaces, with orange and dark red used only as small markers. Every box is square, flat and separated from its neighbour by a one-pixel white gap or a one-pixel rule; there are no shadows, no rounded corners and no motion.\n\n## Layout\n\n- The page is fluid. `--size-page` is `100%`; `.ds-page` has `--space-5` (10px) of padding, so the sheet `.ds-page__frame` takes about 98% of the viewport at every width. Designed at 1024px. Never centre a narrow column.\n- Order from the top: masthead (wordmark left, three stacked tool links right), primary navigation bar, sub-navigation strip, then `.ds-page__body`, then the footer band and one legal line, both inside the sheet. No text sits on the page colour.\n- `.ds-page__body` holds the views; inside a view, `.ds-view__body` is a single column of blocks `--space-5` apart. An optional two-column area, `.ds-layout`, puts a `--size-sidebar` (200px) sidebar on the left of the board table.\n- Board table columns: status `--size-status` (28px), board (fluid), each count `--size-count` (56px), last post `--size-last` (150px). Body rows are at least `--size-row` (34px); bars and title strips are `--size-bar` (22px).\n- Spacing scale: `--space-1` 1px, `--space-2` 2px, `--space-3` 4px, `--space-4` 6px, `--space-5` 10px, `--space-6` 16px.\n  - `--space-1`: the gap between cells and rows inside any bordered block (table, panel, list, grid, form), and the vertical padding of buttons and inputs.\n  - `--space-2`: vertical padding of bars and title strips, gap between stacked small lines.\n  - `--space-3`: vertical padding of cells, gap between inline items (breadcrumb, footer links).\n  - `--space-4`: horizontal padding of cells, strips and panel bodies; gap between buttons.\n  - `--space-5`: page padding, body padding, and the gap between neighbouring blocks. This is the only block gap.\n  - `--space-6`: indent of lists and sub-items, padding of dialog and empty-state bodies, horizontal padding of tabs.\n- Inner pages (a board, a topic, a settings page) keep the masthead, both navigation bars and the footer, and drop the hero and the board sidebar: `.ds-page__body` is one full-width column. From the top: `.ds-breadcrumb`, then `.ds-page-header` in place of the hero (title and one line of description on the left, the main action bottom-aligned on the right, no fill and no rule), then `.ds-tabs` when the page has several views, then the working block (`.ds-table`, `.ds-list` or `.ds-form`) at full width, then `.ds-pagination` right-aligned under it. All of these are `--space-5` apart, like every other block. A statistics strip (`.ds-stat`) belongs at the foot of an index page, above the who-is-online panel.\n- A thread is a stack of `.ds-post` blocks, each a `--size-last` (150px) author cell beside a fluid message cell, with a slate date strip above and a pale tool strip below. Under the last post, `.ds-toolbar` puts the topic buttons on the left and the page numbers on the right.\n- Some inner pages have a menu of their own (control panel, help): they keep the breadcrumb and page header at full width and then use `.ds-layout`: the menu in the `--size-sidebar` column, the working blocks beside it.\n- Views. The specimen is a six-screen example board; the primary bar has one item per view and marks the current one. `index` (home) is the board index: welcome block, announcement, sidebar beside the board table and the active topics list, then statistics and who is online. `board` is one board: sub-board grid, tabs, topic table, legend and page numbers. `topic` is a thread: three posts, the delete confirmation that a post's Delete link opens, and the topic buttons. `post` is the reply form with its error notice and a review of the latest posts. `panel` is the member's control panel: account menu, activity figures, subscribed topics and an empty inbox. `rules` is the help page: contents menu, the rules as long text, and related links.\n- Form rows are a `--size-label` (24%) label cell and a field cell; text inputs are `--size-field` (280px) unless `--wide`. A dialog is `--size-dialog` (56%) wide, centred in the flow.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- One family for everything: `--font-body`, `--font-heading` and `--font-ui` are the same Verdana stack. `--font-mono` (Courier New) is for inline code only.\n- Sizes: `--text-small` 10px for descriptions, meta, counts captions, strips and sub-navigation, and it carries most of the text on a page; `--text-base` and `--text-ui` 11px for running text, numbers, buttons, inputs and navigation; `--text-h2` 12px for bar and strip titles; `--text-h1` and `--text-large` 13px for the page heading, the hero title and board and topic titles; `--text-display` 16px for the wordmark only. Nothing is larger than 16px.\n- Line height is `normal` everywhere. Headings are bold, never uppercase, with no tracking.\n- Weight: `--weight-ui` is 700 for navigation, tabs and the primary button; the secondary button and inputs use `--weight-body`.\n- Links in running text are `--color-link` and underlined. Titles of boards and topics, breadcrumb links, moderator and member names use `--color-link-quiet` (navy), also underlined (`--link-decoration-quiet`). Only links that sit on a bar (navigation, sub-navigation, tabs) have no underline until hovered. Hover turns any link `--color-link-hover` (orange).\n- Surfaces: `--color-page` outside the sheet; `--color-canvas` is the sheet and, through `--fill-panel`, the white that shows in the 1px gaps between cells. `--color-surface` is the main cell, `--color-surface-alt` the status, count and last-post cells and form labels, `--color-surface-strong` the category rows, panel and sidebar title strips, form action row and current page number.\n- Bars: `--fill-bar` (navy `--color-bar` with a lighter top edge) for the primary navigation, table heads and the title of a main board, list, form or dialog, always with `--color-bar-text`. `--fill-bar-alt` (flat slate) for the sub-navigation strip, date strips, panel sub-strips, the closing strip of a table, idle tabs and quiet badges. `--fill-inverse` for the footer band.\n- Borders: blocks have a 1px `--color-border` outline; `--color-border-muted` is for rules inside a box and the breadcrumb outline; `--color-border-strong` at `--border-width-strong` (2px) is only for the rule under the navigation bar and tabs and for the dialog outline. Inputs use `--color-input-border`.\n- Markers: `--color-accent` for new-post icons and the badge; `--color-accent-alt` for emphasised text that is not an error; `--color-danger` and `--color-danger-surface` for errors; `--color-notice` for announcements. `--color-success` (dark green) and `--color-warning` (amber) are the two member-group name colours of the era; here they tint status badges only. Status badges are a `color-mix()` of 30% of the status colour (`--color-success`, `--color-warning`, `--color-danger`) over `--color-surface`, with `--color-text` and a 1px outline in the status colour, so they read under every palette. The destructive button is the error pair: `--color-danger` text on `--color-danger-surface` with a `--color-danger` outline.\n- `--color-fill-1` to `--color-fill-4` repeat the pale surfaces; the style has no decorative block colours.\n- One-off mixes outside the token set: the status badge tints described above; the dashed edge of `.ds-notice` is `color-mix()` of `--color-accent` and `--color-notice` in equal parts; the secondary button uses the `outset` border style and `inset` when pressed, and the notice uses `dashed`, instead of `--border-style`.\n- The references used Verdana with Geneva, Arial and Helvetica fallbacks, all system fonts; no substitution was needed.\n\n- `--fill-bar` is a vertical gradient that starts 30% darker than the bar colour, passes the bar colour at 40% and ends 30% lighter at the foot: the bars glow from below.\n- `--fill-button` runs from a 30% lighter top to the button colour; `--fill-button-hover` from the button colour to 25% darker.\n- `--fill-panel` is `--color-border`: the 1px gaps between cells are light blue lines, so every cell looks outlined.\n- `--fill-bar-alt`, `--fill-inverse` and `--fill-accent` are flat.\n- Borders are `--border-width` 1px solid, `--border-width-strong` 2px. All `--radius-*` are 0, every `--shadow-*` is `none`.\n- `--focus-ring` is a 1px dotted line; `--transition` is `none`.\n\n## Components\n\n- `.ds-page`: on `<body>`. Wrap everything in `.ds-page__frame`; `.ds-page__body` holds the views. Each view is a `.ds-view` section (`.ds-view--home` for the index) and its blocks go in `.ds-view__body`. `.ds-page__legal` is the small print at the foot of the sheet, under the footer. `.ds-layout` with `.ds-layout__main` makes the sidebar-plus-main area. `.ds-icon` sizes an inline SVG icon, `.ds-sprite` hides the SVG symbol sheet, `.ds-block` puts a span on its own line.\n- `.ds-nav`: the site header. `.ds-nav__head` holds `.ds-nav__brand` (the `.ds-brand` with a `.ds-nav__tagline` line under it) and `.ds-nav__tools`. `.ds-nav__menu` is the primary bar of `.ds-nav__link` items; the current one takes `is-current` and becomes a pale cell; in the specimen the same dress is applied by one `:has()` rule per view. `.ds-nav__sub` is the slate strip of `.ds-nav__sublink` items for account links.\n- `.ds-brand`: the site's mark and name at the left of the masthead, linking to the index; one per page. `.ds-brand__mark` is a small square tile dressed like the primary button (`--fill-button` over `--color-button`, a `--border-width` outline in `--color-border-strong`, `--radius-control`, `--shadow-control`) with the mark drawn in `--color-button-text`; it is 1.5 times `--text-display`, so it follows the type set. `.ds-brand__name` is the name in `--font-heading` at `--text-display` and `--weight-display`, with `--display-tracking` and `--heading-transform`, coloured `--color-heading` for the white masthead it sits on. The name `chronoskin` and its mark are placeholders for the installing project's own name and logo: replace both, keep the tile.\n- `.ds-breadcrumb`: one pale bordered line under the header, with `.ds-breadcrumb__link`, `.ds-breadcrumb__sep` and `.ds-breadcrumb__current`.\n- `.ds-hero`: the welcome block at the top of an index page. A 13px bold `.ds-hero__title`, a 10px `.ds-hero__lead`, the main action in `.ds-hero__action`, and board totals right-aligned in `.ds-hero__aside`. It has no fill and ends in a 1px rule. Never make it a banner.\n- `.ds-page-header`: the head of an inner page, used instead of `.ds-hero` on every page below the index. `.ds-page-header__title` is 13px bold navy, `.ds-page-header__desc` one 10px line (description, moderators), `.ds-page-header__action` holds one primary button at the right. No box, no fill.\n- `.ds-prose`: long text such as rules or a post body: h1, h2, h3, p, ul, strong, code, hr.\n- `.ds-link`: every link in text. States `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` for navy tool, meta and name links; `.ds-link--strong` for bold.\n- `.ds-button`: primary action, blue with white bold text and a navy 1px border. `.ds-button--secondary` is the plain grey raised system button. `.ds-button--danger` is for a destructive action (delete, ban, prune): error-red text on the pale error surface with a red outline; use it once per confirmation, next to a secondary button. `is-hover`, `is-active`, `is-focus`, `is-disabled` (or `disabled`). Group buttons in `.ds-buttons`.\n- `.ds-form`: a bordered block of rows. `.ds-form__title` (primary bar), `.ds-form__row` with `.ds-form__label` (plus `.ds-form__hint`) and `.ds-form__field`; controls take `.ds-form__input` (`--wide`, `--auto`, `is-invalid`, `is-disabled`), errors `.ds-form__error`, checkboxes `.ds-form__check` and `.ds-form__checkbox`, buttons in `.ds-form__actions`.\n- `.ds-table`: the board or topic index and any data table. `th` is the primary bar (`.ds-table__head--left` for the first text column); `.ds-table__group` is a category row; cells `.ds-table__status` (`is-read`), `.ds-table__num`, `.ds-table__last`; inside the main cell `.ds-table__title`, `.ds-table__desc`, `.ds-table__meta`. End a board with a `.ds-table__foot` row.\n- `.ds-infobar`: the 10px line of tools and time zone under a table; `.ds-infobar__side` is right-aligned.\n- `.ds-list`: topic or post rows outside a table. `.ds-list__head` (primary bar), `.ds-list__date` (slate strip between groups), `.ds-list__item` (`is-alt` for the alternate row) with `.ds-list__title`, `.ds-list__meta`, `.ds-list__aside`.\n- `.ds-post`: one message of a thread. `.ds-post__head` is the slate strip with the date and post number; `.ds-post__author` the pale cell with `.ds-post__name` and `.ds-post__meta` lines; `.ds-post__body` holds `.ds-post__text` paragraphs, a `.ds-post__quote` with its `.ds-post__cite`, inline `.ds-post__code` and the `.ds-post__sig` signature under a faint rule; `.ds-post__foot` is the pale strong strip of quiet tool links. `.ds-toolbar` is the row under a thread: `.ds-buttons` left, `.ds-pagination` right.\n- `.ds-panel`: any titled box, such as statistics or who is online. `.ds-panel__title` is a pale strong strip; add `.ds-panel__title--bar` for a main block. `.ds-panel__sub` is a slate sub-strip, `.ds-panel__body` (`--alt`) the cells, `.ds-panel__line` a paragraph.\n- `.ds-grid`: four equal cells with 1px gaps in one bordered block, for sub-boards or statistics. `.ds-grid__title`, `.ds-grid__cell` (`--2`, `--3`, `--4` for the other fills), `.ds-grid__name`, `.ds-grid__meta`. Cells never have gaps wider than 1px or their own borders.\n- `.ds-stat`: summary figures as one bordered strip of equal count cells with 1px gaps, never separate cards. `.ds-stat__title` is an optional pale strong strip across the top; each `.ds-stat__item` is a centred `--color-surface-alt` cell with a 13px bold navy `.ds-stat__value` over a 10px muted `.ds-stat__label`. Use three to six items.\n- `.ds-tabs`: a row of square slate `.ds-tabs__tab` items on a 2px navy rule; `is-current` takes the primary bar fill. Use for views of one list.\n- `.ds-badge`: a small square orange label, 10px bold. `.ds-badge--quiet` is slate. The status variants `.ds-badge--success` (solved, online, approved), `.ds-badge--warning` (pending, awaiting) and `.ds-badge--danger` (locked, banned, overdue) are a pale tint of the status colour with body text and a 1px outline in that colour. Put a status badge after a title or in a table cell. `.ds-new` is bold dark red text for a \"new\" remark. `.ds-legend` with `.ds-legend__item` (`is-read`) and `.ds-legend__label` explains the status icons.\n- `.ds-sidebar`: a column of `.ds-sidebar__block` boxes, each with `.ds-sidebar__title`, a `.ds-sidebar__list` of `.ds-sidebar__item` (`--head` for a group link, `--sub` for an indented one) and an optional slate `.ds-sidebar__foot` with a `.ds-sidebar__footlink`.\n- `.ds-notice`: a pale yellow centred line with a dashed edge for announcements. `.ds-notice--error` is the salmon error box with a solid red edge and a `.ds-notice__title`.\n- `.ds-pagination`: right-aligned under a list. `.ds-pagination__label`, then small bordered `.ds-pagination__link` boxes; `is-current` for the current page.\n- `.ds-dialog`: a confirmation box in the page flow, 2px navy outline, `.ds-dialog__title` bar, `.ds-dialog__body` with `.ds-dialog__text` and `.ds-dialog__actions`. `.ds-dialog__backdrop` is a flat band in the page colour. It never floats over the page.\n- `.ds-empty`: a bordered block with one centred message (`.ds-empty__body`, `.ds-empty__text`) and one button, for a list that has nothing in it yet. `.ds-empty__title` is an optional pale strong strip naming the list.\n- `.ds-footer`: the navy band closing the sheet, a `.ds-footer__row` of `.ds-footer__link` items with `.ds-footer__sep` between them.\n\n## Never\n\n- `row-gap <= 1px`: rows touch or are separated by a 1px line.\n- `block-gap <= 20px`: neighbouring blocks are 10px apart; 20px is the widest measured.\n- `content-width >= 90%`: the board fills the viewport; no reference used less than 95%.\n- `font-size <= 16px`: the largest text in any reference is 16px, and only the wordmark uses it.\n- `font-size >= 10px`: 10px is the smallest and the most common size.\n- `font-families <= 2`: one sans-serif stack, plus monospace for code.\n- `letter-spacing <= 1px`: at most one reference tracks its headings, by 1px; this pack uses none.\n- `uppercase-text <= 0%`: no reference transforms text to uppercase.\n- `underlined-links >= 50%`: between 54% and 98% of link text is underlined in the references.\n- `border-radius <= 0px`: every box is square.\n- `box-shadow = none`: no shadow.\n- `text-shadow = none`: no text shadow.\n- `gradient-fills <= 20%`: gradients are on primary bars and the primary button only.\n- `transition = none`: states switch at once.\n- `animation = none`: nothing moves.\n- `border-width <= 2px`: 1px, with 2px on emphasised edges.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen: a new titled box from `.ds-panel`, a new row layout from `.ds-table` or `.ds-list`, a new strip from `.ds-nav__sub`. Build it as a 1px `--color-border` outline on `--fill-panel`, with cells in the three surface colours separated by `--space-1`, and a title in `--fill-bar` or `--color-surface-strong`. Use tokens only: no raw colours or lengths, no new radius, shadow or transition, no font size outside the type tokens, and `--space-5` as the gap to the next block.\n",
    "components.css": "/* Layout tokens (structure part). Gaps, paddings and column widths measured\n   on four board indexes captured 2004 to 2005. */\n:root {\n  --size-page: 100%;\n  --size-sidebar: 200px;\n  --size-status: 28px;\n  --size-count: 56px;\n  --size-last: 150px;\n  --size-row: 34px;\n  --size-bar: 22px;\n  --size-icon: 16px;\n  --size-label: 24%;\n  --size-field: 280px;\n  --size-dialog: 56%;\n  --space-1: 1px;\n  --space-2: 2px;\n  --space-3: 4px;\n  --space-4: 6px;\n  --space-5: 10px;\n  --space-6: 16px;\n}\n\n/* ---------- shell ---------- */\n.ds-page {\n  margin: 0;\n  padding: var(--space-5);\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n/* The sheet every block sits on. */\n.ds-page__frame {\n  width: var(--size-page);\n  box-sizing: border-box;\n  background: var(--color-canvas);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n}\n.ds-page__body {\n  padding: var(--space-5);\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/* The single column of blocks inside a view, one block gap apart. */\n.ds-view__body {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n}\n/* Small print, inside the sheet so it never sits on the page colour. */\n.ds-page__legal {\n  margin: 0;\n  padding: var(--space-4) var(--space-5);\n  text-align: center;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-sprite {\n  position: absolute;\n}\n.ds-icon {\n  width: var(--size-icon);\n  height: var(--size-icon);\n  vertical-align: middle;\n}\n.ds-block {\n  display: block;\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/* Dark links for tools, meta and member names. */\n.ds-link--quiet,\n.ds-link--quiet:visited,\n.ds-link--quiet.is-visited {\n  color: var(--color-link-quiet);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-link--quiet:hover,\n.ds-link--quiet.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-link--strong {\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- nav: masthead, primary bar, sub-navigation strip ---------- */\n.ds-nav {\n  display: block;\n}\n.ds-nav__head {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-end;\n  gap: var(--space-5);\n  padding: var(--space-5) var(--space-5) var(--space-4);\n}\n.ds-nav__brand {\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  gap: var(--space-2);\n}\n/* The site's mark and name. The tile is dressed like the primary button, so\n   every palette and surface set reskins it. */\n.ds-brand {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-4);\n  text-decoration: none;\n}\n.ds-brand__mark {\n  display: flex;\n  flex: none;\n  align-items: center;\n  justify-content: center;\n  width: calc(var(--text-display) * 1.5);\n  height: calc(var(--text-display) * 1.5);\n  box-sizing: border-box;\n  background: var(--color-button);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n}\n.ds-brand__mark svg {\n  display: block;\n  width: 76%;\n  height: 76%;\n}\n.ds-brand__name {\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-nav__tagline {\n  display: block;\n  font-size: var(--text-small);\n  font-style: italic;\n  color: var(--color-text-muted);\n}\n.ds-nav__tools {\n  display: flex;\n  flex-direction: column;\n  align-items: flex-end;\n  gap: var(--space-2);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-nav__menu {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0 var(--space-3);\n  list-style: none;\n  background: var(--fill-bar);\n  border-top: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__link {\n  display: block;\n  padding: var(--space-3) var(--space-5);\n  color: var(--color-bar-text);\n  line-height: var(--line-heading);\n  text-decoration: none;\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-nav__link.is-current {\n  background: var(--color-surface);\n  color: var(--color-heading);\n}\n/* The current view's item, and the index item when no view is named. */\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#index\"] {\n  background: var(--color-surface);\n  color: var(--color-heading);\n}\n.ds-page:has(#index:target) .ds-nav__link[href=\"#index\"] {\n  background: var(--color-surface);\n  color: var(--color-heading);\n}\n.ds-page:has(#board:target) .ds-nav__link[href=\"#board\"] {\n  background: var(--color-surface);\n  color: var(--color-heading);\n}\n.ds-page:has(#topic:target) .ds-nav__link[href=\"#topic\"] {\n  background: var(--color-surface);\n  color: var(--color-heading);\n}\n.ds-page:has(#post:target) .ds-nav__link[href=\"#post\"] {\n  background: var(--color-surface);\n  color: var(--color-heading);\n}\n.ds-page:has(#panel:target) .ds-nav__link[href=\"#panel\"] {\n  background: var(--color-surface);\n  color: var(--color-heading);\n}\n.ds-page:has(#rules:target) .ds-nav__link[href=\"#rules\"] {\n  background: var(--color-surface);\n  color: var(--color-heading);\n}\n.ds-nav__sub {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  margin: 0;\n  padding: var(--space-2) var(--space-6);\n  list-style: none;\n  background: var(--fill-bar-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n}\n.ds-nav__sublink {\n  color: var(--color-bar-alt-text);\n  text-decoration: none;\n}\n.ds-nav__sublink:hover,\n.ds-nav__sublink.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n\n/* ---------- breadcrumb ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n  margin: 0;\n  padding: var(--space-3) var(--space-4);\n  list-style: none;\n  background: var(--color-fill-4);\n  border: var(--border-width) var(--border-style) var(--color-border-muted);\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n}\n.ds-breadcrumb__link {\n  color: var(--color-link-quiet);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-breadcrumb__link:hover,\n.ds-breadcrumb__link.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-breadcrumb__sep {\n  color: var(--color-text-muted);\n  font-weight: var(--weight-body);\n}\n.ds-breadcrumb__current {\n  color: var(--color-text);\n}\n\n/* ---------- hero: the welcome block ---------- */\n.ds-hero {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-end;\n  gap: var(--space-6);\n  padding: 0 0 var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n  border-radius: var(--radius-page);\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-hero__lead {\n  margin: 0;\n  font-size: var(--text-small);\n}\n.ds-hero__aside {\n  flex: none;\n  font-size: var(--text-small);\n  text-align: right;\n}\n.ds-hero__action {\n  margin: var(--space-4) 0 0;\n}\n\n/* ---------- page header: the head of an inner page ---------- */\n.ds-page-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-end;\n  gap: var(--space-6);\n}\n.ds-page-header__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-page-header__desc {\n  margin: 0;\n  font-size: var(--text-small);\n}\n.ds-page-header__action {\n  flex: none;\n}\n\n/* ---------- info line above or below a board ---------- */\n.ds-infobar {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-end;\n  gap: var(--space-5);\n  font-size: var(--text-small);\n}\n.ds-infobar__side {\n  text-align: right;\n}\n\n/* ---------- table: the board index ---------- */\n.ds-table {\n  width: 100%;\n  box-sizing: border-box;\n  border-collapse: separate;\n  border-spacing: var(--space-1);\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-table th {\n  height: var(--size-bar);\n  padding: 0 var(--space-4);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  text-align: center;\n  text-shadow: var(--shadow-text);\n  white-space: nowrap;\n}\n.ds-table .ds-table__head--left {\n  text-align: left;\n}\n.ds-table td {\n  height: var(--size-row);\n  padding: var(--space-3) var(--space-4);\n  background: var(--color-surface);\n  font-size: var(--text-small);\n  vertical-align: middle;\n}\n.ds-table .ds-table__num,\n.ds-table .ds-table__last,\n.ds-table .ds-table__status {\n  background: var(--color-surface-alt);\n}\n.ds-table .ds-table__num {\n  width: var(--size-count);\n  font-size: var(--text-base);\n  text-align: center;\n  white-space: nowrap;\n}\n.ds-table .ds-table__last {\n  width: var(--size-last);\n  text-align: right;\n  white-space: nowrap;\n}\n.ds-table .ds-table__status {\n  width: var(--size-status);\n  padding: var(--space-3);\n  text-align: center;\n  color: var(--color-accent);\n}\n.ds-table .ds-table__status.is-read {\n  color: var(--color-bar-alt);\n}\n/* Category row: the strongest surface, heading text. */\n.ds-table .ds-table__group td {\n  height: var(--size-bar);\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n/* Closing strip of a board. */\n.ds-table .ds-table__foot td {\n  height: var(--space-4);\n  padding: 0;\n  background: var(--fill-bar-alt);\n}\n.ds-table__title {\n  color: var(--color-link-quiet);\n  font-size: var(--text-large);\n  font-weight: var(--weight-bold);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-table__title:hover,\n.ds-table__title.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-table__desc {\n  display: block;\n  padding: var(--space-1) 0 0;\n}\n.ds-table__meta {\n  display: block;\n  color: var(--color-text-muted);\n}\n\n/* ---------- panel ---------- */\n.ds-panel {\n  display: grid;\n  gap: var(--space-1);\n  padding: var(--space-1);\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__title {\n  display: flex;\n  align-items: center;\n  min-height: var(--size-bar);\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n/* Primary bar as the title strip: main boards, dialogs. */\n.ds-panel__title--bar {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  text-shadow: var(--shadow-text);\n}\n.ds-panel__sub {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-panel__body {\n  padding: var(--space-4);\n  background: var(--color-surface);\n  font-size: var(--text-small);\n}\n.ds-panel__body--alt {\n  background: var(--color-surface-alt);\n}\n.ds-panel__line {\n  margin: 0 0 var(--space-2);\n}\n\n/* ---------- grid: cells with one-pixel gaps ---------- */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: var(--space-1);\n  padding: var(--space-1);\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n}\n.ds-grid__title {\n  grid-column: 1 / -1;\n  display: flex;\n  align-items: center;\n  min-height: var(--size-bar);\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n}\n.ds-grid__cell {\n  padding: var(--space-4);\n  background: var(--color-fill-1);\n  border-radius: var(--radius-page);\n  font-size: var(--text-small);\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__name {\n  display: block;\n  margin: 0 0 var(--space-2);\n  color: var(--color-link-quiet);\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-grid__name:hover,\n.ds-grid__name.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-grid__meta {\n  display: block;\n  color: var(--color-text-muted);\n}\n\n/* ---------- stats: a strip of count cells ---------- */\n.ds-stat {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-1);\n  margin: 0;\n  padding: var(--space-1);\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-stat__title {\n  flex: 0 0 100%;\n  display: flex;\n  align-items: center;\n  min-height: var(--size-bar);\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-stat__item {\n  flex: 1 1 0;\n  padding: var(--space-3) var(--space-4);\n  background: var(--color-surface-alt);\n  text-align: center;\n}\n.ds-stat__value {\n  display: block;\n  color: var(--color-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-bold);\n}\n.ds-stat__label {\n  display: block;\n  padding: var(--space-1) 0 0;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n\n/* ---------- tabs ---------- */\n.ds-tabs {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-tabs__tab {\n  display: block;\n  padding: var(--space-3) var(--space-6);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  text-decoration: none;\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-tabs__tab.is-current {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n}\n\n/* ---------- badge and legend ---------- */\n.ds-badge {\n  display: inline-block;\n  padding: 0 var(--space-3);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  border-radius: var(--radius-pill);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-badge--quiet {\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n}\n/* Status labels: a tint of the status colour over the cell surface, with body\n   text and the status colour as the outline, so they read under any palette. */\n.ds-badge--success,\n.ds-badge--warning,\n.ds-badge--danger {\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-success);\n}\n.ds-badge--success {\n  background: color-mix(in srgb, var(--color-success) 30%, var(--color-surface));\n}\n.ds-badge--warning {\n  background: color-mix(in srgb, var(--color-warning) 30%, var(--color-surface));\n  border-color: var(--color-warning);\n}\n.ds-badge--danger {\n  background: color-mix(in srgb, var(--color-danger) 30%, var(--color-surface));\n  border-color: var(--color-danger);\n}\n.ds-new {\n  color: var(--color-accent-alt);\n  font-weight: var(--weight-bold);\n}\n.ds-legend {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-6);\n  margin: 0;\n  padding: var(--space-3) 0;\n  list-style: none;\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-legend__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  color: var(--color-accent);\n}\n.ds-legend__item.is-read {\n  color: var(--color-bar-alt);\n}\n.ds-legend__label {\n  color: var(--color-text);\n}\n\n/* ---------- two-column area ---------- */\n.ds-layout {\n  display: grid;\n  grid-template-columns: var(--size-sidebar) minmax(0, 1fr);\n  gap: var(--space-5);\n  align-items: start;\n}\n.ds-layout__main {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n}\n\n/* ---------- sidebar ---------- */\n.ds-sidebar {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n}\n.ds-sidebar__block {\n  background: var(--color-surface);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n}\n.ds-sidebar__title {\n  display: flex;\n  align-items: center;\n  min-height: var(--size-bar);\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-strong);\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: var(--space-3) var(--space-4) var(--space-4);\n  list-style: none;\n}\n.ds-sidebar__item {\n  padding: var(--space-2) 0;\n  font-size: var(--text-small);\n}\n.ds-sidebar__item--head {\n  padding-top: var(--space-3);\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n}\n.ds-sidebar__item--sub {\n  padding-left: var(--space-6);\n  font-weight: var(--weight-bold);\n}\n.ds-sidebar__foot {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  text-align: center;\n}\n.ds-sidebar__footlink {\n  color: var(--color-bar-alt-text);\n  text-decoration: var(--link-decoration-quiet);\n}\n\n/* ---------- list: topic rows ---------- */\n.ds-list {\n  display: grid;\n  gap: var(--space-1);\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);\n  border-radius: var(--radius-panel);\n}\n.ds-list__head {\n  display: flex;\n  align-items: center;\n  min-height: var(--size-bar);\n  box-sizing: border-box;\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n}\n.ds-list__date {\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-list__item {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) auto;\n  column-gap: var(--space-5);\n  align-items: center;\n  padding: var(--space-3) var(--space-4);\n  background: var(--color-surface);\n}\n.ds-list__item.is-alt {\n  background: var(--color-fill-3);\n}\n.ds-list__title {\n  color: var(--color-link-quiet);\n  font-size: var(--text-large);\n  font-weight: var(--weight-bold);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-list__title:hover,\n.ds-list__title.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-list__meta {\n  display: block;\n  padding: var(--space-1) 0 0;\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-list__aside {\n  font-size: var(--text-small);\n  text-align: right;\n  white-space: nowrap;\n}\n\n/* ---------- post: one message of a thread ---------- */\n.ds-post {\n  display: grid;\n  grid-template-columns: var(--size-last) minmax(0, 1fr);\n  gap: var(--space-1);\n  padding: var(--space-1);\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-post__head {\n  grid-column: 1 / -1;\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-5);\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-post__author {\n  padding: var(--space-3) var(--space-4);\n  background: var(--color-surface-alt);\n  font-size: var(--text-small);\n}\n.ds-post__name {\n  color: var(--color-link-quiet);\n  font-size: var(--text-large);\n  font-weight: var(--weight-bold);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-post__name:hover,\n.ds-post__name.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-post__meta {\n  display: block;\n  color: var(--color-text-muted);\n}\n.ds-post__body {\n  padding: var(--space-4);\n  background: var(--color-surface);\n  font-size: var(--text-base);\n}\n.ds-post__text {\n  margin: 0 0 var(--space-4);\n}\n.ds-post__code {\n  font-family: var(--font-mono);\n  font-size: var(--text-base);\n}\n.ds-post__quote {\n  margin: 0 0 var(--space-4);\n  padding: var(--space-3) var(--space-4);\n  background: var(--color-surface-alt);\n  border: var(--border-width) var(--border-style) var(--color-border-muted);\n  font-size: var(--text-small);\n}\n.ds-post__cite {\n  display: block;\n  font-weight: var(--weight-bold);\n}\n.ds-post__sig {\n  margin: 0;\n  padding: var(--space-3) 0 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border-muted);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-post__foot {\n  grid-column: 1 / -1;\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-5);\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-strong);\n  font-size: var(--text-small);\n}\n/* Topic tools on the left, page numbers on the right. */\n.ds-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  align-items: center;\n  gap: var(--space-5);\n}\n\n/* ---------- typography ---------- */\n.ds-prose {\n  padding: var(--space-4);\n  background: var(--color-surface);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  font-size: var(--text-base);\n  line-height: var(--line-body);\n}\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: 0 0 var(--space-3);\n  font-family: var(--font-heading);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-prose h1 {\n  color: var(--color-heading);\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  color: var(--color-text);\n  font-size: var(--text-h3);\n}\n.ds-prose p {\n  margin: 0 0 var(--space-4);\n}\n.ds-prose ul {\n  margin: 0 0 var(--space-4);\n  padding: 0 0 0 var(--space-6);\n}\n.ds-prose strong {\n  font-weight: var(--weight-bold);\n}\n.ds-prose code {\n  padding: 0 var(--space-2);\n  background: var(--color-surface-alt);\n  font-family: var(--font-mono);\n  font-size: var(--text-base);\n}\n.ds-prose hr {\n  height: 0;\n  margin: var(--space-4) 0;\n  border: 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n\n/* ---------- buttons ---------- */\n.ds-button {\n  display: inline-block;\n  padding: var(--space-1) var(--space-4);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\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-body);\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  transition: var(--transition);\n  cursor: pointer;\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  color: var(--color-button-hover-text);\n  box-shadow: var(--shadow-control-hover);\n}\n.ds-button:active,\n.ds-button.is-active {\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/* The plain raised system button. */\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-input-border);\n  font-weight: var(--weight-body);\n}\n.ds-button--secondary:active,\n.ds-button--secondary.is-active {\n  background: var(--color-disabled);\n}\n/* Destructive action: the error pair, error text on the error surface with\n   an error outline. It does not depend on the primary button's colours. */\n.ds-button--danger,\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n  border-color: var(--color-danger);\n  text-shadow: none;\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  border-style: var(--border-style);\n  border-color: var(--color-disabled-text);\n  cursor: default;\n}\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-4);\n}\n\n/* ---------- form ---------- */\n.ds-form {\n  display: grid;\n  gap: var(--space-1);\n  margin: 0;\n  padding: var(--space-1);\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n}\n.ds-form__title {\n  display: flex;\n  align-items: center;\n  min-height: var(--size-bar);\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n}\n.ds-form__row {\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  gap: var(--space-1);\n}\n.ds-form__label {\n  padding: var(--space-3) var(--space-4);\n  background: var(--color-surface-alt);\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n}\n.ds-form__hint {\n  display: block;\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n  color: var(--color-text-muted);\n}\n.ds-form__field {\n  padding: var(--space-3) var(--space-4);\n  background: var(--color-surface);\n  font-size: var(--text-base);\n}\n.ds-form__input {\n  box-sizing: border-box;\n  width: var(--size-field);\n  max-width: 100%;\n  margin: 0;\n  padding: var(--space-1) var(--space-2);\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-body);\n}\n.ds-form__input--wide {\n  width: 100%;\n}\n.ds-form__input--auto {\n  width: auto;\n}\n.ds-form__input:focus-visible,\n.ds-form__input.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-form__input:disabled,\n.ds-form__input.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n}\n.ds-form__input.is-invalid {\n  border-color: var(--color-danger);\n}\n.ds-form__error {\n  display: block;\n  margin: var(--space-2) 0 0;\n  color: var(--color-danger);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-form__check {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-form__checkbox {\n  margin: 0;\n}\n.ds-form__actions {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  gap: var(--space-4);\n  padding: var(--space-3);\n  background: var(--color-surface-strong);\n}\n\n/* ---------- notice ---------- */\n/* The edge is a half mix of the accent and the notice colour. */\n.ds-notice {\n  margin: 0;\n  padding: var(--space-4) var(--space-5);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-accent) 50%, var(--color-notice));\n  border-radius: var(--radius-panel);\n  font-size: var(--text-small);\n  text-align: center;\n}\n.ds-notice--error {\n  background: var(--color-danger-surface);\n  color: var(--color-text);\n  border-style: var(--border-style);\n  border-color: var(--color-danger);\n  text-align: left;\n}\n.ds-notice__title {\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- pagination ---------- */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-end;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-small);\n}\n.ds-pagination__label {\n  padding: 0 var(--space-3) 0 0;\n  color: var(--color-text-muted);\n}\n.ds-pagination__link {\n  display: block;\n  padding: var(--space-1) var(--space-3);\n  background: var(--color-surface);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  color: var(--color-link);\n  text-decoration: var(--link-decoration);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-pagination__link.is-current {\n  background: var(--color-surface-strong);\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n\n/* ---------- dialog: a message box in the page flow ---------- */\n.ds-dialog {\n  display: grid;\n  gap: var(--space-1);\n  width: var(--size-dialog);\n  box-sizing: border-box;\n  margin: 0 auto;\n  padding: var(--space-1);\n  background: var(--fill-panel);\n  border: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-dialog__title {\n  display: flex;\n  align-items: center;\n  min-height: var(--size-bar);\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  text-shadow: var(--shadow-text);\n}\n.ds-dialog__body {\n  padding: var(--space-6) var(--space-5);\n  background: var(--color-surface);\n  font-size: var(--text-base);\n  text-align: center;\n}\n.ds-dialog__text {\n  margin: 0 0 var(--space-5);\n}\n.ds-dialog__actions {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-4);\n}\n.ds-dialog__backdrop {\n  padding: var(--space-5);\n  background: var(--color-overlay);\n}\n\n/* ---------- empty state: a single message row ---------- */\n.ds-empty {\n  display: grid;\n  gap: var(--space-1);\n  padding: var(--space-1);\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n}\n.ds-empty__title {\n  display: flex;\n  align-items: center;\n  min-height: var(--size-bar);\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-empty__body {\n  padding: var(--space-6) var(--space-5);\n  background: var(--color-surface);\n  font-size: var(--text-base);\n  text-align: center;\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-4);\n}\n\n/* ---------- footer ---------- */\n.ds-footer {\n  padding: var(--space-4) var(--space-5);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n  text-align: center;\n}\n.ds-footer__row {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: var(--space-3);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__link {\n  color: var(--color-inverse-text);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-footer__link:hover,\n.ds-footer__link.is-hover {\n  color: var(--color-bar-text);\n}\n.ds-footer__sep {\n  color: var(--color-bar-alt);\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: bulletin board forum specimen</title>\n<link rel=\"stylesheet\" href=\"tokens.css\">\n<link rel=\"stylesheet\" href=\"components.css\">\n</head>\n<body class=\"ds-page\" data-component=\"shell\">\n\n<svg class=\"ds-sprite\" width=\"0\" height=\"0\" aria-hidden=\"true\">\n  <symbol id=\"i-board\" viewBox=\"0 0 16 16\">\n    <path d=\"M1 2h14v9H8l-3 3v-3H1z\" fill=\"currentColor\"/>\n  </symbol>\n  <symbol id=\"i-locked\" viewBox=\"0 0 16 16\">\n    <path d=\"M1.5 2.5h13v8H8l-2.5 2.5v-2.5h-4z\" fill=\"none\" stroke=\"currentColor\"/>\n    <path d=\"M6 5h4v3H6z\" fill=\"currentColor\"/>\n  </symbol>\n</svg>\n\n<div class=\"ds-page__frame\">\n\n  <header class=\"ds-nav\" data-component=\"nav\">\n    <div class=\"ds-nav__head\">\n      <div class=\"ds-nav__brand\">\n        <a class=\"ds-brand\" data-component=\"brand\" href=\"#\">\n          <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M12 3a9 9 0 1 1-9 9\"/><path d=\"M12 17a5 5 0 1 1 5-5\"/><circle cx=\"12\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/></svg></span>\n          <span class=\"ds-brand__name\">chronoskin</span>\n        </a>\n        <span class=\"ds-nav__tagline\">Repairs, restorations and bench talk since 2002</span>\n      </div>\n      <ul class=\"ds-nav__tools\">\n        <li><a class=\"ds-link\" href=\"#board\">Topics since your last visit</a></li>\n        <li><a class=\"ds-link\" href=\"#panel\">Your topics</a></li>\n        <li><a class=\"ds-link\" href=\"#board\">Unanswered topics</a></li>\n      </ul>\n    </div>\n    <ul class=\"ds-nav__menu\">\n      <li><a class=\"ds-nav__link\" href=\"#index\">Board index</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#board\">Topics</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#topic\">Latest thread</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#post\">Post reply</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#panel\">Control panel</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#rules\">Rules</a></li>\n    </ul>\n    <ul class=\"ds-nav__sub\">\n      <li><a class=\"ds-nav__sublink\" href=\"#panel\">Your profile</a></li>\n      <li><a class=\"ds-nav__sublink\" href=\"#panel\">Private messages</a></li>\n      <li><a class=\"ds-nav__sublink\" href=\"#panel\">Subscriptions</a></li>\n      <li><a class=\"ds-nav__sublink\" href=\"#board\">New posts</a></li>\n      <li><a class=\"ds-nav__sublink\" href=\"#rules\">Posting guide</a></li>\n      <li><a class=\"ds-nav__sublink\" href=\"#rules\">Help</a></li>\n      <li><a class=\"ds-nav__sublink\" href=\"#index\">Log out</a></li>\n    </ul>\n  </header>\n\n  <div class=\"ds-page__body\">\n\n    <section class=\"ds-view ds-view--home\" id=\"index\">\n    <div class=\"ds-view__body\">\n\n          <section class=\"ds-hero\" data-component=\"hero\">\n            <div>\n              <h1 class=\"ds-hero__title\">Welcome to the chronoskin boards.</h1>\n              <p class=\"ds-hero__lead\">If this is your first visit, read the <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#rules\">help pages</a> first. You need an account before you can post; reading is open to everyone. Pick a board below to start.</p>\n              <p class=\"ds-hero__action\"><a class=\"ds-button\" href=\"#rules\">Read the board rules</a></p>\n            </div>\n            <div class=\"ds-hero__aside\">\n              <span class=\"ds-block\">Members: 4,812, Topics: 21,340, Posts: 187,455</span>\n              <span class=\"ds-block\">The time now is 09:41 PM.</span>\n              <span class=\"ds-block\">You last visited: 14 Mar 2005, 07:02 PM.</span>\n            </div>\n          </section>\n\n          <p class=\"ds-notice\" data-component=\"notice\">The boards will be read-only on Sunday from 02:00 to 04:00 while the server is moved. <a class=\"ds-link ds-link--strong\" href=\"#topic\">Read the announcement</a>.</p>\n\n          <div class=\"ds-layout\">\n\n            <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n              <div class=\"ds-sidebar__block\">\n                <h2 class=\"ds-sidebar__title\">Boards</h2>\n                <ul class=\"ds-sidebar__list\">\n                  <li class=\"ds-sidebar__item ds-sidebar__item--head\"><a class=\"ds-link\" href=\"#board\">The workbench</a></li>\n                  <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#board\">Radios and receivers</a></li>\n                  <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#board\">Test equipment</a></li>\n                  <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#board\">Clocks and movements</a></li>\n                  <li class=\"ds-sidebar__item ds-sidebar__item--head\"><a class=\"ds-link\" href=\"#board\">Materials</a></li>\n                  <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#board\">Cabinets and finishes</a></li>\n                  <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#board\">Parts and sources</a></li>\n                  <li class=\"ds-sidebar__item ds-sidebar__item--head\"><a class=\"ds-link\" href=\"#board\">The back room</a></li>\n                  <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#board\">Introductions</a></li>\n                  <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#board\">Off the bench</a></li>\n                </ul>\n              </div>\n              <div class=\"ds-sidebar__block\">\n                <h2 class=\"ds-sidebar__title\">Recent guides</h2>\n                <ul class=\"ds-sidebar__list\">\n                  <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#rules\">Re-capping a valve receiver, step by step</a> <span class=\"ds-block\">By hollis_w</span></li>\n                  <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#rules\">Reading a faded schematic</a> <span class=\"ds-block\">By m.teague</span></li>\n                  <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#rules\">Matching old cabinet lacquer</a> <span class=\"ds-block\">By pendle</span></li>\n                </ul>\n                <p class=\"ds-sidebar__foot\"><a class=\"ds-sidebar__footlink\" href=\"#rules\">View all guides</a></p>\n              </div>\n              <div class=\"ds-sidebar__block\">\n                <h2 class=\"ds-sidebar__title\">Busiest this week</h2>\n                <ul class=\"ds-sidebar__list\">\n                  <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">m.teague</a> <span class=\"ds-block\">41 posts in 12 topics</span></li>\n                  <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">quietfuse</a> <span class=\"ds-block\">28 posts in 6 topics</span></li>\n                  <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">anselm</a> <span class=\"ds-block\">19 posts in 9 topics</span></li>\n                  <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">ruth_a</a> <span class=\"ds-block\">15 posts in 4 topics</span></li>\n                </ul>\n                <p class=\"ds-sidebar__foot\"><a class=\"ds-sidebar__footlink\" href=\"#panel\">Members list</a></p>\n              </div>\n            </aside>\n\n            <div class=\"ds-layout__main\">\n\n              <table class=\"ds-table\" data-component=\"table\">\n                <thead>\n                  <tr>\n                    <th scope=\"col\"></th>\n                    <th class=\"ds-table__head--left\" scope=\"col\">Board</th>\n                    <th scope=\"col\">Topics</th>\n                    <th scope=\"col\">Posts</th>\n                    <th scope=\"col\">Last post</th>\n                  </tr>\n                </thead>\n                <tbody>\n                  <tr class=\"ds-table__group\"><td colspan=\"5\">The workbench</td></tr>\n                  <tr>\n                    <td class=\"ds-table__status\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"New posts\"><use href=\"#i-board\"/></svg></td>\n                    <td><a class=\"ds-table__title\" href=\"#board\">Radios and receivers</a>\n                      <span class=\"ds-table__desc\">Fault finding, alignment and restoration of domestic sets.</span>\n                      <span class=\"ds-table__meta\">Moderators: <a class=\"ds-link ds-link--quiet\" href=\"#panel\">hollis_w</a>, <a class=\"ds-link ds-link--quiet\" href=\"#panel\">m.teague</a></span></td>\n                    <td class=\"ds-table__num\">5,208</td>\n                    <td class=\"ds-table__num\">48,917</td>\n                    <td class=\"ds-table__last\">Today, 09:12 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">quietfuse</a></span></td>\n                  </tr>\n                  <tr>\n                    <td class=\"ds-table__status\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"New posts\"><use href=\"#i-board\"/></svg></td>\n                    <td><a class=\"ds-table__title\" href=\"#board\">Test equipment</a>\n                      <span class=\"ds-table__desc\">Meters, scopes, signal generators and bench supplies. Please give the model number in the topic title.</span>\n                      <span class=\"ds-table__meta\">Moderator: <a class=\"ds-link ds-link--quiet\" href=\"#panel\">m.teague</a></span></td>\n                    <td class=\"ds-table__num\">2,744</td>\n                    <td class=\"ds-table__num\">19,630</td>\n                    <td class=\"ds-table__last\">Today, 08:47 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">anselm</a></span></td>\n                  </tr>\n                  <tr>\n                    <td class=\"ds-table__status is-read\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"No new posts\"><use href=\"#i-board\"/></svg></td>\n                    <td><a class=\"ds-table__title\" href=\"#board\">Clocks and movements</a>\n                      <span class=\"ds-table__desc\">Mechanical and synchronous clocks, timers and chart drives.</span>\n                      <span class=\"ds-table__meta\">Moderator: <a class=\"ds-link ds-link--quiet\" href=\"#panel\">pendle</a></span></td>\n                    <td class=\"ds-table__num\">913</td>\n                    <td class=\"ds-table__num\">7,052</td>\n                    <td class=\"ds-table__last\">13 Mar 2005, 11:20 AM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">ruth_a</a></span></td>\n                  </tr>\n                  <tr class=\"ds-table__group\"><td colspan=\"5\">The back room</td></tr>\n                  <tr>\n                    <td class=\"ds-table__status is-read\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"No new posts\"><use href=\"#i-board\"/></svg></td>\n                    <td><a class=\"ds-table__title\" href=\"#board\">Introductions</a>\n                      <span class=\"ds-table__desc\">New here? Say hello and tell us what is on your bench.</span></td>\n                    <td class=\"ds-table__num\">1,387</td>\n                    <td class=\"ds-table__num\">9,441</td>\n                    <td class=\"ds-table__last\">12 Mar 2005, 06:35 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">dovecote</a></span></td>\n                  </tr>\n                  <tr>\n                    <td class=\"ds-table__status is-read\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"Board is locked\"><use href=\"#i-locked\"/></svg></td>\n                    <td><a class=\"ds-table__title\" href=\"#board\">Archive 2002 to 2003</a>\n                      <span class=\"ds-table__desc\">Read-only topics from the old board.</span></td>\n                    <td class=\"ds-table__num\">6,119</td>\n                    <td class=\"ds-table__num\">52,870</td>\n                    <td class=\"ds-table__last\">30 Dec 2003, 10:02 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">hollis_w</a></span></td>\n                  </tr>\n                  <tr class=\"ds-table__foot\"><td colspan=\"5\"></td></tr>\n                </tbody>\n              </table>\n\n              <div class=\"ds-infobar\">\n                <span><a class=\"ds-link ds-link--quiet\" href=\"#index\">Mark all boards read</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#rules\">The moderating team</a></span>\n                <ul class=\"ds-legend\">\n                  <li class=\"ds-legend__item\"><svg class=\"ds-icon\" aria-hidden=\"true\"><use href=\"#i-board\"/></svg><span class=\"ds-legend__label\">New posts</span></li>\n                  <li class=\"ds-legend__item is-read\"><svg class=\"ds-icon\" aria-hidden=\"true\"><use href=\"#i-board\"/></svg><span class=\"ds-legend__label\">No new posts</span></li>\n                  <li class=\"ds-legend__item is-read\"><svg class=\"ds-icon\" aria-hidden=\"true\"><use href=\"#i-locked\"/></svg><span class=\"ds-legend__label\">Locked board</span></li>\n                </ul>\n                <span class=\"ds-infobar__side\">All times are GMT.</span>\n              </div>\n\n              <ul class=\"ds-list\" data-component=\"list\">\n                <li class=\"ds-list__head\">Active topics</li>\n                <li class=\"ds-list__date\">Today</li>\n                <li class=\"ds-list__item\">\n                  <div><a class=\"ds-list__title\" href=\"#topic\">Bench supply hums at low load</a> <span class=\"ds-badge\" data-component=\"badge\">New</span>\n                    <span class=\"ds-list__meta\">Started by <a class=\"ds-link\" href=\"#panel\">quietfuse</a> in <a class=\"ds-link\" href=\"#board\">Test equipment</a></span></div>\n                  <div class=\"ds-list__aside\"><a class=\"ds-link\" href=\"#topic\">31 replies</a> <span class=\"ds-block\">1,204 views</span></div>\n                </li>\n                <li class=\"ds-list__item is-alt\">\n                  <div><a class=\"ds-list__title\" href=\"#topic\">Which lacquer for a walnut cabinet?</a> <span class=\"ds-badge ds-badge--quiet\">Sticky</span>\n                    <span class=\"ds-list__meta\">Started by <a class=\"ds-link\" href=\"#panel\">pendle</a> in <a class=\"ds-link\" href=\"#board\">Cabinets and finishes</a></span></div>\n                  <div class=\"ds-list__aside\"><a class=\"ds-link\" href=\"#topic\">62 replies</a> <span class=\"ds-block\">3,870 views</span></div>\n                </li>\n                <li class=\"ds-list__date\">13 March 2005</li>\n                <li class=\"ds-list__item\">\n                  <div><a class=\"ds-list__title\" href=\"#topic\">Dial cord keeps slipping after restringing</a>\n                    <span class=\"ds-list__meta\">Started by <a class=\"ds-link\" href=\"#panel\">ruth_a</a> in <a class=\"ds-link\" href=\"#board\">Radios and receivers</a></span></div>\n                  <div class=\"ds-list__aside\"><a class=\"ds-link\" href=\"#topic\">14 replies</a> <span class=\"ds-block\">498 views</span></div>\n                </li>\n                <li class=\"ds-list__item is-alt\">\n                  <div><a class=\"ds-list__title\" href=\"#topic\">Source for cloth-covered mains flex</a>\n                    <span class=\"ds-list__meta\">Started by <a class=\"ds-link\" href=\"#panel\">dovecote</a> in <a class=\"ds-link\" href=\"#board\">Parts and sources</a></span></div>\n                  <div class=\"ds-list__aside\"><a class=\"ds-link\" href=\"#topic\">9 replies</a> <span class=\"ds-block\">311 views</span></div>\n                </li>\n              </ul>\n\n            </div>\n          </div>\n\n          <div class=\"ds-stat\" data-component=\"stats\">\n            <h2 class=\"ds-stat__title\">Board statistics</h2>\n            <div class=\"ds-stat__item\"><span class=\"ds-stat__value\">4,812</span><span class=\"ds-stat__label\">Members</span></div>\n            <div class=\"ds-stat__item\"><span class=\"ds-stat__value\">21,340</span><span class=\"ds-stat__label\">Topics</span></div>\n            <div class=\"ds-stat__item\"><span class=\"ds-stat__value\">187,455</span><span class=\"ds-stat__label\">Posts</span></div>\n            <div class=\"ds-stat__item\"><span class=\"ds-stat__value\">58</span><span class=\"ds-stat__label\">Online now</span></div>\n            <div class=\"ds-stat__item\"><span class=\"ds-stat__value\">412</span><span class=\"ds-stat__label\">Most ever online</span></div>\n          </div>\n\n          <section class=\"ds-panel\" data-component=\"panel\">\n            <h2 class=\"ds-panel__title ds-panel__title--bar\">Who is online</h2>\n            <p class=\"ds-panel__sub\">Currently active: 58 (21 members and 37 guests)</p>\n            <div class=\"ds-panel__body\">\n              <p class=\"ds-panel__line\">Most users ever online was 412, on 02 Nov 2004 at 08:31 PM.</p>\n              <p class=\"ds-panel__line\"><a class=\"ds-link\" href=\"#panel\">anselm</a>, <a class=\"ds-link\" href=\"#panel\">dovecote</a>, <a class=\"ds-link ds-link--strong\" href=\"#panel\">hollis_w</a>, <a class=\"ds-link\" href=\"#panel\">ivo_k</a>, <a class=\"ds-link ds-link--strong\" href=\"#panel\">m.teague</a>, <a class=\"ds-link\" href=\"#panel\">pendle</a>, <a class=\"ds-link\" href=\"#panel\">quietfuse</a>, <a class=\"ds-link\" href=\"#panel\">ruth_a</a>, <a class=\"ds-link\" href=\"#panel\">saltmarsh</a>, <a class=\"ds-link\" href=\"#panel\">tobias_k</a></p>\n            </div>\n            <div class=\"ds-panel__body ds-panel__body--alt\">\n              <p class=\"ds-panel__line\">Our members have made 187,455 posts in 21,340 topics. <span class=\"ds-new\">Welcome to our newest member,</span> <a class=\"ds-link ds-link--strong\" href=\"#panel\">saltmarsh</a>.</p>\n            </div>\n          </section>\n\n    </div>\n    </section>\n\n    <section class=\"ds-view\" id=\"board\">\n    <div class=\"ds-view__body\">\n\n      <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n        <li><a class=\"ds-breadcrumb__link\" href=\"#index\">chronoskin</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li><a class=\"ds-breadcrumb__link\" href=\"#index\">The workbench</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li class=\"ds-breadcrumb__current\">Test equipment</li>\n      </ol>\n\n      <div class=\"ds-page-header\" data-component=\"page-header\">\n        <div>\n          <h1 class=\"ds-page-header__title\">Test equipment</h1>\n          <p class=\"ds-page-header__desc\">Meters, scopes, signal generators and bench supplies. Moderator: <a class=\"ds-link ds-link--quiet\" href=\"#panel\">m.teague</a></p>\n        </div>\n        <div class=\"ds-page-header__action\"><a class=\"ds-button\" href=\"#post\">New topic</a></div>\n      </div>\n\n          <div class=\"ds-grid\" data-component=\"grid\">\n            <h2 class=\"ds-grid__title\">Sub-boards of Test equipment</h2>\n            <div class=\"ds-grid__cell\">\n              <a class=\"ds-grid__name\" href=\"#board\">Meters and bridges</a>\n              <span class=\"ds-grid__meta\">412 topics, 3,906 posts</span>\n              <span class=\"ds-grid__meta\">Last post today, 07:55 PM</span>\n            </div>\n            <div class=\"ds-grid__cell ds-grid__cell--2\">\n              <a class=\"ds-grid__name\" href=\"#board\">Oscilloscopes</a>\n              <span class=\"ds-grid__meta\">688 topics, 5,120 posts</span>\n              <span class=\"ds-grid__meta\">Last post today, 06:10 PM</span>\n            </div>\n            <div class=\"ds-grid__cell ds-grid__cell--3\">\n              <a class=\"ds-grid__name\" href=\"#board\">Signal generators</a>\n              <span class=\"ds-grid__meta\">203 topics, 1,477 posts</span>\n              <span class=\"ds-grid__meta\">Last post 12 Mar 2005</span>\n            </div>\n            <div class=\"ds-grid__cell ds-grid__cell--4\">\n              <a class=\"ds-grid__name\" href=\"#board\">Bench supplies</a>\n              <span class=\"ds-grid__meta\">1,950 topics, 8,233 posts</span>\n              <span class=\"ds-grid__meta\">Last post 11 Mar 2005</span>\n            </div>\n          </div>\n\n          <ul class=\"ds-tabs\" data-component=\"tabs\">\n            <li><a class=\"ds-tabs__tab is-current\" href=\"#board\" aria-current=\"true\">All topics</a></li>\n            <li><a class=\"ds-tabs__tab\" href=\"#board\">Unanswered</a></li>\n            <li><a class=\"ds-tabs__tab\" href=\"#board\">Solved</a></li>\n            <li><a class=\"ds-tabs__tab\" href=\"#board\">Your subscriptions</a></li>\n          </ul>\n\n          <table class=\"ds-table\">\n            <thead>\n              <tr>\n                <th scope=\"col\"></th>\n                <th class=\"ds-table__head--left\" scope=\"col\">Topic</th>\n                <th scope=\"col\">Replies</th>\n                <th scope=\"col\">Views</th>\n                <th scope=\"col\">Last post</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td class=\"ds-table__status\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"New posts\"><use href=\"#i-board\"/></svg></td>\n                <td><a class=\"ds-table__title\" href=\"#topic\">Bench supply hums at low load</a> <span class=\"ds-badge\">New</span>\n                  <span class=\"ds-table__meta\">Started by <a class=\"ds-link ds-link--quiet\" href=\"#panel\">quietfuse</a></span></td>\n                <td class=\"ds-table__num\">31</td>\n                <td class=\"ds-table__num\">1,204</td>\n                <td class=\"ds-table__last\">Today, 08:47 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">anselm</a></span></td>\n              </tr>\n              <tr>\n                <td class=\"ds-table__status is-read\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"No new posts\"><use href=\"#i-board\"/></svg></td>\n                <td><a class=\"ds-table__title\" href=\"#topic\">Calibrating a moving-coil meter without a standard</a> <span class=\"ds-badge ds-badge--success\">Solved</span>\n                  <span class=\"ds-table__meta\">Started by <a class=\"ds-link ds-link--quiet\" href=\"#panel\">ivo_k</a></span></td>\n                <td class=\"ds-table__num\">18</td>\n                <td class=\"ds-table__num\">942</td>\n                <td class=\"ds-table__last\">Today, 05:30 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">m.teague</a></span></td>\n              </tr>\n              <tr>\n                <td class=\"ds-table__status is-read\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"No new posts\"><use href=\"#i-board\"/></svg></td>\n                <td><a class=\"ds-table__title\" href=\"#topic\">Signal generator drifts for the first hour</a> <span class=\"ds-badge ds-badge--warning\">Awaiting parts</span>\n                  <span class=\"ds-table__meta\">Started by <a class=\"ds-link ds-link--quiet\" href=\"#panel\">tobias_k</a></span></td>\n                <td class=\"ds-table__num\">7</td>\n                <td class=\"ds-table__num\">265</td>\n                <td class=\"ds-table__last\">13 Mar 2005, 09:14 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">tobias_k</a></span></td>\n              </tr>\n              <tr>\n                <td class=\"ds-table__status is-read\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"Topic is locked\"><use href=\"#i-locked\"/></svg></td>\n                <td><a class=\"ds-table__title\" href=\"#topic\">Mains isolation: read before you ask</a> <span class=\"ds-badge ds-badge--danger\">Locked</span>\n                  <span class=\"ds-table__meta\">Started by <a class=\"ds-link ds-link--quiet\" href=\"#panel\">m.teague</a></span></td>\n                <td class=\"ds-table__num\">0</td>\n                <td class=\"ds-table__num\">6,318</td>\n                <td class=\"ds-table__last\">02 Jan 2005, 10:00 AM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">m.teague</a></span></td>\n              </tr>\n              <tr>\n                <td class=\"ds-table__status is-read\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"No new posts\"><use href=\"#i-board\"/></svg></td>\n                <td><a class=\"ds-table__title\" href=\"#topic\">Replacement probes for an old valve voltmeter</a>\n                  <span class=\"ds-table__meta\">Started by <a class=\"ds-link ds-link--quiet\" href=\"#panel\">saltmarsh</a></span></td>\n                <td class=\"ds-table__num\">4</td>\n                <td class=\"ds-table__num\">187</td>\n                <td class=\"ds-table__last\">11 Mar 2005, 02:41 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">dovecote</a></span></td>\n              </tr>\n              <tr class=\"ds-table__foot\"><td colspan=\"5\"></td></tr>\n            </tbody>\n          </table>\n\n      <div class=\"ds-infobar\">\n        <span><a class=\"ds-link ds-link--quiet\" href=\"#board\">Mark this board read</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#panel\">Subscribe to this board</a></span>\n        <ul class=\"ds-legend\">\n          <li class=\"ds-legend__item\"><svg class=\"ds-icon\" aria-hidden=\"true\"><use href=\"#i-board\"/></svg><span class=\"ds-legend__label\">New posts</span></li>\n          <li class=\"ds-legend__item is-read\"><svg class=\"ds-icon\" aria-hidden=\"true\"><use href=\"#i-board\"/></svg><span class=\"ds-legend__label\">No new posts</span></li>\n          <li class=\"ds-legend__item is-read\"><svg class=\"ds-icon\" aria-hidden=\"true\"><use href=\"#i-locked\"/></svg><span class=\"ds-legend__label\">Locked topic</span></li>\n        </ul>\n        <span class=\"ds-infobar__side\">137 topics in this board.</span>\n      </div>\n\n          <ul class=\"ds-pagination\" data-component=\"pagination\">\n            <li class=\"ds-pagination__label\">Page 2 of 14</li>\n            <li><a class=\"ds-pagination__link\" href=\"#board\">&laquo; Previous</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#board\">1</a></li>\n            <li><a class=\"ds-pagination__link is-current\" href=\"#board\" aria-current=\"page\">2</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#board\">3</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#board\">4</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#board\">Next &raquo;</a></li>\n          </ul>\n\n    </div>\n    </section>\n\n    <section class=\"ds-view\" id=\"topic\">\n    <div class=\"ds-view__body\">\n\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-breadcrumb__link\" href=\"#index\">chronoskin</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li><a class=\"ds-breadcrumb__link\" href=\"#board\">Test equipment</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li class=\"ds-breadcrumb__current\">Bench supply hums at low load</li>\n      </ol>\n\n      <div class=\"ds-page-header\">\n        <div>\n          <h1 class=\"ds-page-header__title\">Bench supply hums at low load</h1>\n          <p class=\"ds-page-header__desc\">Started by <a class=\"ds-link ds-link--quiet\" href=\"#panel\">quietfuse</a> on 14 Mar 2005. 31 replies, 1,204 views. <span class=\"ds-badge\">New</span></p>\n        </div>\n        <div class=\"ds-page-header__action\"><a class=\"ds-button\" href=\"#post\">Post reply</a></div>\n      </div>\n\n      <article class=\"ds-post\">\n        <div class=\"ds-post__head\"><span>14 Mar 2005, 06:02 PM</span><span>Post 1 of 32</span></div>\n        <div class=\"ds-post__author\">\n          <a class=\"ds-post__name\" href=\"#panel\">quietfuse</a>\n          <span class=\"ds-block\">Regular</span>\n          <span class=\"ds-post__meta\">Posts: 412</span>\n          <span class=\"ds-post__meta\">Joined: Aug 2003</span>\n        </div>\n        <div class=\"ds-post__body\">\n          <p class=\"ds-post__text\">I have a twin 0 to 30 V bench supply from the early seventies on the bench. Above about half an amp it is quiet. Below that the transformer hums loudly enough to hear across the room, and there is 40 mV of ripple on the output.</p>\n          <p class=\"ds-post__text\">Rectifier diodes test fine. The reservoir capacitor is original and reads <code class=\"ds-post__code\">3,900 uF</code> against a marked 4,700. Is that enough to explain it, or should I be looking at the regulator?</p>\n          <p class=\"ds-post__sig\">One fault at a time.</p>\n        </div>\n        <div class=\"ds-post__foot\">\n          <span><a class=\"ds-link ds-link--quiet\" href=\"#panel\">Profile</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#panel\">Send a private message</a></span>\n          <span><a class=\"ds-link ds-link--quiet\" href=\"#post\">Quote</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#post\">Edit</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#topic\">Delete</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#rules\">Report</a></span>\n        </div>\n      </article>\n\n      <article class=\"ds-post\">\n        <div class=\"ds-post__head\"><span>14 Mar 2005, 06:40 PM</span><span>Post 2 of 32</span></div>\n        <div class=\"ds-post__author\">\n          <a class=\"ds-post__name\" href=\"#panel\">m.teague</a>\n          <span class=\"ds-block\">Moderator</span>\n          <span class=\"ds-post__meta\">Posts: 6,105</span>\n          <span class=\"ds-post__meta\">Joined: Feb 2002</span>\n        </div>\n        <div class=\"ds-post__body\">\n          <blockquote class=\"ds-post__quote\"><span class=\"ds-post__cite\">quietfuse wrote:</span> The reservoir capacitor is original and reads 3,900 uF against a marked 4,700.</blockquote>\n          <p class=\"ds-post__text\">Capacitance is only half of it. Measure the series resistance as well; a thirty year old electrolytic can read nearly full value and still be useless. I would replace it before touching anything else.</p>\n          <p class=\"ds-post__text\">Hum that gets worse at light load usually points at the regulator hunting, not the transformer. Check the small compensation capacitor across the error amplifier while you are in there.</p>\n          <p class=\"ds-post__sig\">Put the model number in the title, please.</p>\n        </div>\n        <div class=\"ds-post__foot\">\n          <span><a class=\"ds-link ds-link--quiet\" href=\"#panel\">Profile</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#panel\">Send a private message</a></span>\n          <span><a class=\"ds-link ds-link--quiet\" href=\"#post\">Quote</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#post\">Edit</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#topic\">Delete</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#rules\">Report</a></span>\n        </div>\n      </article>\n\n      <article class=\"ds-post\">\n        <div class=\"ds-post__head\"><span>Today, 08:47 PM</span><span>Post 32 of 32</span></div>\n        <div class=\"ds-post__author\">\n          <a class=\"ds-post__name\" href=\"#panel\">anselm</a>\n          <span class=\"ds-block\">Member</span>\n          <span class=\"ds-post__meta\">Posts: 88</span>\n          <span class=\"ds-post__meta\">Joined: Jan 2005</span>\n        </div>\n        <div class=\"ds-post__body\">\n          <p class=\"ds-post__text\">Same supply here, same fault. On mine it was the minimum load resistor across the output, which had gone open. Without it the series pass transistor cannot regulate down at low current and the loop sings at mains frequency.</p>\n          <p class=\"ds-post__text\">It is a 2 W wirewound part under the rear terminal strip. <span class=\"ds-new\">Discharge the reservoir before you reach in.</span></p>\n        </div>\n        <div class=\"ds-post__foot\">\n          <span><a class=\"ds-link ds-link--quiet\" href=\"#panel\">Profile</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#panel\">Send a private message</a></span>\n          <span><a class=\"ds-link ds-link--quiet\" href=\"#post\">Quote</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#post\">Edit</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#topic\">Delete</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#rules\">Report</a></span>\n        </div>\n      </article>\n\n          <div class=\"ds-dialog__backdrop\">\n            <div class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n              <h2 class=\"ds-dialog__title\" id=\"d-title\">Confirm</h2>\n              <div class=\"ds-dialog__body\">\n                <p class=\"ds-dialog__text\">Are you sure you want to delete post 32 by anselm? This cannot be undone.</p>\n                <div class=\"ds-dialog__actions\">\n                  <a class=\"ds-button ds-button--danger\" href=\"#board\">Yes, delete it</a>\n                  <a class=\"ds-button ds-button--secondary\" href=\"#topic\">No</a>\n                </div>\n              </div>\n            </div>\n          </div>\n\n      <div class=\"ds-toolbar\">\n        <div class=\"ds-buttons\" data-component=\"buttons\">\n          <a class=\"ds-button\" href=\"#post\">Post reply</a>\n          <a class=\"ds-button ds-button--secondary\" href=\"#panel\">Subscribe</a>\n          <button class=\"ds-button\" type=\"button\" disabled>Lock topic</button>\n          <a class=\"ds-button ds-button--danger\" href=\"#board\">Delete topic</a>\n        </div>\n        <ul class=\"ds-pagination\">\n          <li class=\"ds-pagination__label\">Page 3 of 3</li>\n          <li><a class=\"ds-pagination__link\" href=\"#topic\">&laquo; Previous</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#topic\">1</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#topic\">2</a></li>\n          <li><a class=\"ds-pagination__link is-current\" href=\"#topic\" aria-current=\"page\">3</a></li>\n        </ul>\n      </div>\n\n    </div>\n    </section>\n\n    <section class=\"ds-view\" id=\"post\">\n    <div class=\"ds-view__body\">\n\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-breadcrumb__link\" href=\"#index\">chronoskin</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li><a class=\"ds-breadcrumb__link\" href=\"#board\">Test equipment</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li><a class=\"ds-breadcrumb__link\" href=\"#topic\">Bench supply hums at low load</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li class=\"ds-breadcrumb__current\">Post a reply</li>\n      </ol>\n\n      <div class=\"ds-page-header\">\n        <div>\n          <h1 class=\"ds-page-header__title\">Post a reply</h1>\n          <p class=\"ds-page-header__desc\">In the topic <a class=\"ds-link ds-link--quiet\" href=\"#topic\">Bench supply hums at low load</a>. Posting as <a class=\"ds-link ds-link--quiet\" href=\"#panel\">quietfuse</a>.</p>\n        </div>\n        <div class=\"ds-page-header__action\"><a class=\"ds-button ds-button--secondary\" href=\"#rules\">Posting guide</a></div>\n      </div>\n\n          <div class=\"ds-notice ds-notice--error\" role=\"alert\">\n            <span class=\"ds-notice__title\">Your reply was not posted.</span> You must wait 30 seconds between posts. Go back and try again in a moment.\n          </div>\n\n          <form class=\"ds-form\" data-component=\"form\" action=\"#\">\n            <h2 class=\"ds-form__title\">Post a reply</h2>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"f-subject\">Subject</label>\n              <div class=\"ds-form__field\"><input class=\"ds-form__input\" id=\"f-subject\" type=\"text\" value=\"Re: Bench supply hums at low load\"></div>\n            </div>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"f-mail\">Notify address <span class=\"ds-form__hint\">Used only for reply notices</span></label>\n              <div class=\"ds-form__field\">\n                <input class=\"ds-form__input is-invalid\" id=\"f-mail\" type=\"text\" value=\"quietfuse@\" aria-invalid=\"true\">\n                <span class=\"ds-form__error\">This is not a complete e-mail address.</span>\n              </div>\n            </div>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"f-icon\">Topic icon</label>\n              <div class=\"ds-form__field\">\n                <select class=\"ds-form__input ds-form__input--auto\" id=\"f-icon\">\n                  <option>No icon</option>\n                  <option>Question</option>\n                  <option>Solved</option>\n                </select>\n              </div>\n            </div>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"f-body\">Message <span class=\"ds-form__hint\">Board code is on, images are off</span></label>\n              <div class=\"ds-form__field\"><textarea class=\"ds-form__input ds-form__input--wide\" id=\"f-body\" rows=\"5\">Swapped the reservoir capacitor and the hum is gone above half load, but it is still there below it.</textarea></div>\n            </div>\n            <div class=\"ds-form__row\">\n              <span class=\"ds-form__label\">Options</span>\n              <div class=\"ds-form__field\">\n                <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> Notify me when a reply is posted</label>\n              </div>\n            </div>\n            <div class=\"ds-form__actions\">\n              <button class=\"ds-button\" type=\"submit\">Submit reply</button>\n              <button class=\"ds-button ds-button--secondary\" type=\"button\">Preview</button>\n              <a class=\"ds-link ds-link--quiet\" href=\"#topic\">Cancel</a>\n            </div>\n          </form>\n\n      <ul class=\"ds-list\">\n        <li class=\"ds-list__head\">Topic review, newest first</li>\n        <li class=\"ds-list__item\">\n          <div><a class=\"ds-list__title\" href=\"#topic\">anselm</a>\n            <span class=\"ds-list__meta\">On mine it was the minimum load resistor across the output, which had gone open.</span></div>\n          <div class=\"ds-list__aside\">Today, 08:47 PM <span class=\"ds-block\">Post 32</span></div>\n        </li>\n        <li class=\"ds-list__item is-alt\">\n          <div><a class=\"ds-list__title\" href=\"#topic\">tobias_k</a>\n            <span class=\"ds-list__meta\">Worth checking the mains earth bond to the chassis too; mine was loose under the paint.</span></div>\n          <div class=\"ds-list__aside\">Today, 07:15 PM <span class=\"ds-block\">Post 31</span></div>\n        </li>\n        <li class=\"ds-list__item\">\n          <div><a class=\"ds-list__title\" href=\"#topic\">m.teague</a>\n            <span class=\"ds-list__meta\">Hum that gets worse at light load usually points at the regulator hunting, not the transformer.</span></div>\n          <div class=\"ds-list__aside\">14 Mar 2005, 06:40 PM <span class=\"ds-block\">Post 2</span></div>\n        </li>\n      </ul>\n\n    </div>\n    </section>\n\n    <section class=\"ds-view\" id=\"panel\">\n    <div class=\"ds-view__body\">\n\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-breadcrumb__link\" href=\"#index\">chronoskin</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li class=\"ds-breadcrumb__current\">Control panel</li>\n      </ol>\n\n      <div class=\"ds-page-header\">\n        <div>\n          <h1 class=\"ds-page-header__title\">Control panel</h1>\n          <p class=\"ds-page-header__desc\">Signed in as quietfuse. Member since August 2003. Last visit: 14 Mar 2005, 07:02 PM.</p>\n        </div>\n        <div class=\"ds-page-header__action\"><a class=\"ds-button\" href=\"#post\">New private message</a></div>\n      </div>\n\n      <div class=\"ds-layout\">\n\n        <aside class=\"ds-sidebar\">\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Your account</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item ds-sidebar__item--head\"><a class=\"ds-link\" href=\"#panel\">Profile</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#panel\">Edit your details</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#panel\">Signature</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#panel\">Password and e-mail</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--head\"><a class=\"ds-link\" href=\"#panel\">Board options</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#panel\">Time zone and dates</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#panel\">Reply notices</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--head\"><a class=\"ds-link\" href=\"#panel\">Private messages</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#panel\">Inbox</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#panel\">Sent items</a></li>\n            </ul>\n            <p class=\"ds-sidebar__foot\"><a class=\"ds-sidebar__footlink\" href=\"#index\">Log out</a></p>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Your buddy list</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">anselm</a> <span class=\"ds-block\">Online now</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">m.teague</a> <span class=\"ds-block\">Online now</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">pendle</a> <span class=\"ds-block\">Last seen 13 Mar 2005</span></li>\n            </ul>\n            <p class=\"ds-sidebar__foot\"><a class=\"ds-sidebar__footlink\" href=\"#panel\">Edit the list</a></p>\n          </div>\n        </aside>\n\n        <div class=\"ds-layout__main\">\n\n          <div class=\"ds-stat\">\n            <h2 class=\"ds-stat__title\">Your activity</h2>\n            <div class=\"ds-stat__item\"><span class=\"ds-stat__value\">412</span><span class=\"ds-stat__label\">Posts</span></div>\n            <div class=\"ds-stat__item\"><span class=\"ds-stat__value\">37</span><span class=\"ds-stat__label\">Topics started</span></div>\n            <div class=\"ds-stat__item\"><span class=\"ds-stat__value\">3</span><span class=\"ds-stat__label\">Subscriptions</span></div>\n            <div class=\"ds-stat__item\"><span class=\"ds-stat__value\">0</span><span class=\"ds-stat__label\">Unread messages</span></div>\n          </div>\n\n          <table class=\"ds-table\">\n            <thead>\n              <tr>\n                <th scope=\"col\"></th>\n                <th class=\"ds-table__head--left\" scope=\"col\">Subscribed topic</th>\n                <th scope=\"col\">Replies</th>\n                <th scope=\"col\">Last post</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td class=\"ds-table__status\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"New posts\"><use href=\"#i-board\"/></svg></td>\n                <td><a class=\"ds-table__title\" href=\"#topic\">Bench supply hums at low load</a> <span class=\"ds-badge\">New</span>\n                  <span class=\"ds-table__meta\">In <a class=\"ds-link ds-link--quiet\" href=\"#board\">Test equipment</a></span></td>\n                <td class=\"ds-table__num\">31</td>\n                <td class=\"ds-table__last\">Today, 08:47 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">anselm</a></span></td>\n              </tr>\n              <tr>\n                <td class=\"ds-table__status is-read\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"No new posts\"><use href=\"#i-board\"/></svg></td>\n                <td><a class=\"ds-table__title\" href=\"#topic\">Which lacquer for a walnut cabinet?</a> <span class=\"ds-badge ds-badge--quiet\">Sticky</span>\n                  <span class=\"ds-table__meta\">In <a class=\"ds-link ds-link--quiet\" href=\"#board\">Cabinets and finishes</a></span></td>\n                <td class=\"ds-table__num\">62</td>\n                <td class=\"ds-table__last\">13 Mar 2005, 04:18 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">pendle</a></span></td>\n              </tr>\n              <tr>\n                <td class=\"ds-table__status is-read\"><svg class=\"ds-icon\" role=\"img\" aria-label=\"No new posts\"><use href=\"#i-board\"/></svg></td>\n                <td><a class=\"ds-table__title\" href=\"#topic\">Calibrating a moving-coil meter without a standard</a> <span class=\"ds-badge ds-badge--success\">Solved</span>\n                  <span class=\"ds-table__meta\">In <a class=\"ds-link ds-link--quiet\" href=\"#board\">Test equipment</a></span></td>\n                <td class=\"ds-table__num\">18</td>\n                <td class=\"ds-table__last\">Today, 05:30 PM <span class=\"ds-block\">by <a class=\"ds-link ds-link--quiet ds-link--strong\" href=\"#panel\">m.teague</a></span></td>\n              </tr>\n              <tr class=\"ds-table__foot\"><td colspan=\"4\"></td></tr>\n            </tbody>\n          </table>\n\n          <div class=\"ds-empty\" data-component=\"empty\">\n            <h2 class=\"ds-empty__title\">Private messages: inbox</h2>\n            <div class=\"ds-empty__body\">\n              <p class=\"ds-empty__text\">Your inbox is empty. Messages from other members will be listed here.</p>\n              <a class=\"ds-button\" href=\"#post\">Write a message</a>\n            </div>\n          </div>\n\n        </div>\n      </div>\n\n    </div>\n    </section>\n\n    <section class=\"ds-view\" id=\"rules\">\n    <div class=\"ds-view__body\">\n\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-breadcrumb__link\" href=\"#index\">chronoskin</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li><a class=\"ds-breadcrumb__link\" href=\"#rules\">Help</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&raquo;</li>\n        <li class=\"ds-breadcrumb__current\">Board rules</li>\n      </ol>\n\n      <div class=\"ds-page-header\">\n        <div>\n          <h1 class=\"ds-page-header__title\">Help and rules</h1>\n          <p class=\"ds-page-header__desc\">How the boards work and what the moderating team expects. Last revised 02 Jan 2005.</p>\n        </div>\n        <div class=\"ds-page-header__action\"><a class=\"ds-button\" href=\"#post\">Contact the team</a></div>\n      </div>\n\n      <div class=\"ds-layout\">\n\n        <aside class=\"ds-sidebar\">\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">Help contents</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item ds-sidebar__item--head\"><a class=\"ds-link\" href=\"#rules\">Board rules</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#rules\">Before you post</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#rules\">Signatures</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#rules\">Moderation</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--head\"><a class=\"ds-link\" href=\"#rules\">Using the boards</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#rules\">Board code</a></li>\n              <li class=\"ds-sidebar__item ds-sidebar__item--sub\"><a class=\"ds-link\" href=\"#rules\">Subscriptions</a></li>\n            </ul>\n            <p class=\"ds-sidebar__foot\"><a class=\"ds-sidebar__footlink\" href=\"#index\">Back to the boards</a></p>\n          </div>\n          <div class=\"ds-sidebar__block\">\n            <h2 class=\"ds-sidebar__title\">The moderating team</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">hollis_w</a> <span class=\"ds-block\">Radios and receivers</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">m.teague</a> <span class=\"ds-block\">Test equipment</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link ds-link--strong\" href=\"#panel\">pendle</a> <span class=\"ds-block\">Clocks, cabinets and finishes</span></li>\n            </ul>\n            <p class=\"ds-sidebar__foot\"><a class=\"ds-sidebar__footlink\" href=\"#post\">Send the team a message</a></p>\n          </div>\n        </aside>\n\n        <div class=\"ds-layout__main\">\n\n          <article class=\"ds-prose\" data-component=\"typography\">\n            <h1>Board rules and posting guide</h1>\n            <p>Everyone who posts here agrees to the rules below. They are short. <strong>Read them once</strong> and you will rarely need a moderator.</p>\n            <h2>Before you post</h2>\n            <p>Search first; most common faults have a long topic already. Put the make and model in the title, and say what you have measured so far. A good first post saves three replies asking for the basics.</p>\n            <ul>\n              <li>One topic per fault, in one board only.</li>\n              <li>Attach schematics as links, not as inline scans.</li>\n              <li>Mains work: say whether the set is isolated before you ask for measurements.</li>\n              <li>Wrap part numbers in <code>[code]</code> tags so they stay readable.</li>\n            </ul>\n            <hr>\n            <h3>Signatures</h3>\n            <p>Signatures are limited to three lines of text and no images. Set yours in the <a class=\"ds-link\" href=\"#panel\">control panel</a>.</p>\n            <h3>Moderation</h3>\n            <p>Moderators may edit a title to add a model number, move a topic to the right board, or lock one that has run its course. Disagree by private message, not in the topic.</p>\n          </article>\n\n          <section class=\"ds-panel\">\n            <h2 class=\"ds-panel__title\">See also</h2>\n            <div class=\"ds-panel__body\" data-component=\"links\">\n              <p class=\"ds-panel__line\"><a class=\"ds-link\" href=\"#rules\">Board code reference</a> &middot; <a class=\"ds-link is-visited\" href=\"#rules\">Mains isolation: read before you ask</a> &middot; <a class=\"ds-link is-hover\" href=\"#panel\">Setting your signature</a> &middot; <a class=\"ds-link is-active\" href=\"#rules\">The moderating team</a> &middot; <a class=\"ds-link ds-link--quiet\" href=\"#board\">Test equipment board</a></p>\n              <p class=\"ds-panel__line\">Still stuck? <a class=\"ds-link\" href=\"#post\">Ask in the boards</a> and a moderator will answer.</p>\n            </div>\n          </section>\n\n        </div>\n      </div>\n\n    </div>\n    </section>\n\n  </div>\n\n  <footer class=\"ds-footer\" data-component=\"footer\">\n    <ul class=\"ds-footer__row\">\n      <li><a class=\"ds-footer__link\" href=\"#index\">Board index</a></li>\n      <li class=\"ds-footer__sep\" aria-hidden=\"true\">-</li>\n      <li><a class=\"ds-footer__link\" href=\"#board\">Topics</a></li>\n      <li class=\"ds-footer__sep\" aria-hidden=\"true\">-</li>\n      <li><a class=\"ds-footer__link\" href=\"#panel\">Control panel</a></li>\n      <li class=\"ds-footer__sep\" aria-hidden=\"true\">-</li>\n      <li><a class=\"ds-footer__link\" href=\"#rules\">Rules</a></li>\n      <li class=\"ds-footer__sep\" aria-hidden=\"true\">-</li>\n      <li><a class=\"ds-footer__link\" href=\"#post\">Contact the team</a></li>\n    </ul>\n  </footer>\n\n  <p class=\"ds-page__legal\">chronoskin. Placeholder content for a style specimen. All times are GMT.</p>\n\n</div>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.bulletin-board-forums.forum.s01.p01.t01.u11\",\n  \"library\": \"2026.10.07-2111\",\n  \"era\": {\n    \"slug\": \"bulletin-board-forums\",\n    \"years\": [\n      2002,\n      2007\n    ]\n  },\n  \"archetype\": \"forum\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1024,\n    \"fluid\": true\n  },\n  \"source\": \"https://chrono.skin/s/v1-bb-111b\",\n  \"short\": \"v1-bb-111b\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #e5e5e5;\n  --color-canvas: #ffffff;\n  --color-surface: #f0f7fc;\n  --color-surface-alt: #dfe5ef;\n  --color-surface-strong: #cad5e6;\n  --color-bar: #003366;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #7f96bf;\n  --color-bar-alt-text: #ffffff;\n  --color-inverse: #003366;\n  --color-inverse-text: #e0eaf6;\n  --color-text: #000000;\n  --color-text-muted: #434951;\n  --color-heading: #003366;\n  --color-heading-alt: #3a5d95;\n  --color-link: #0066cc;\n  --color-link-quiet: #003366;\n  --color-link-visited: #5176b5;\n  --color-link-hover: #ff6600;\n  --color-link-active: #c60202;\n  --color-border: #a4bbdd;\n  --color-border-strong: #003366;\n  --color-border-muted: #c2cfdf;\n  --color-accent: #ff6600;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #a00000;\n  --color-fill-1: #f0f7fc;\n  --color-fill-2: #dfe5ef;\n  --color-fill-3: #edf2f5;\n  --color-fill-4: #f5f9fd;\n  --color-button: #527cb4;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #efefef;\n  --color-button-secondary-text: #000000;\n  --color-input: #ffffff;\n  --color-input-text: #000000;\n  --color-input-border: #767676;\n  --color-disabled: #dfdfdf;\n  --color-disabled-text: #767676;\n  --color-danger: #c60202;\n  --color-danger-surface: #fddbcc;\n  --color-success: #006600;\n  --color-warning: #ffa34f;\n  --color-notice: #ffffdd;\n  --color-notice-text: #000000;\n  --color-focus: #000000;\n  --color-shadow: #000000;\n  --color-overlay: #e5e5e5;\n}\n\n/* @part type */\n:root {\n  --font-body: Verdana, Geneva, Arial, Helvetica, sans-serif;\n  --font-heading: Verdana, Geneva, Arial, Helvetica, sans-serif;\n  --font-ui: Verdana, Geneva, Arial, Helvetica, sans-serif;\n  --font-mono: \"Courier New\", Courier, monospace;\n  --text-base: 11px;\n  --text-small: 10px;\n  --text-ui: 11px;\n  --text-large: 13px;\n  --text-display: 16px;\n  --text-h1: 13px;\n  --text-h2: 12px;\n  --text-h3: 11px;\n  --line-body: normal;\n  --line-heading: normal;\n  --line-display: normal;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 700;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --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: none;\n  --shadow-control: inset 0 1px 0 color-mix(in srgb, white, transparent 50%);\n  --shadow-control-hover: inset 0 1px 0 color-mix(in srgb, white, transparent 30%);\n  --shadow-control-pressed: inset 0 2px 0 color-mix(in srgb, var(--color-shadow), transparent 60%);\n  --shadow-dialog: none;\n  --shadow-text: 0 1px 0 color-mix(in srgb, var(--color-shadow), transparent 40%);\n  --fill-page: repeating-linear-gradient(135deg, var(--color-page) 0, var(--color-page) 6px, color-mix(in srgb, var(--color-page), black 10%) 6px, color-mix(in srgb, var(--color-page), black 10%) 8px);\n  --fill-bar: linear-gradient(to bottom, color-mix(in srgb, var(--color-bar), black 30%) 0%, var(--color-bar) 40%, color-mix(in srgb, var(--color-bar), white 30%) 100%);\n  --fill-bar-alt: linear-gradient(to bottom, color-mix(in srgb, var(--color-bar-alt), black 22%) 0%, var(--color-bar-alt) 40%, color-mix(in srgb, var(--color-bar-alt), white 25%) 100%);\n  --fill-inverse: linear-gradient(to bottom, color-mix(in srgb, var(--color-inverse), black 30%) 0%, var(--color-inverse) 40%, color-mix(in srgb, var(--color-inverse), white 30%) 100%);\n  --fill-accent: linear-gradient(to bottom, color-mix(in srgb, var(--color-accent), white 30%) 0%, var(--color-accent) 100%);\n  --fill-panel: var(--color-border);\n  --fill-button: linear-gradient(to bottom, color-mix(in srgb, var(--color-button), white 30%) 0%, var(--color-button) 100%);\n  --fill-button-hover: linear-gradient(to bottom, var(--color-button) 0%, color-mix(in srgb, var(--color-button), black 25%) 100%);\n  --fill-button-secondary: linear-gradient(to bottom, color-mix(in srgb, var(--color-button-secondary), white 40%) 0%, var(--color-button-secondary) 100%);\n  --fill-input: var(--color-input);\n  --focus-ring: 2px solid var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
