{
  "id": "v1-te-5bb2-dr",
  "long_id": "v1.table-era-90s.blog.s05.p11.t11.u02.dr",
  "name": "Table-era personal home page, 1998",
  "era": {
    "slug": "table-era-90s",
    "code": "te",
    "name": "Table-era web",
    "years": [
      1996,
      2000
    ],
    "description": "The first commercial web, 1996 to 2000: narrow fixed pages built from tables, blue underlined links on white or grey, Times and Arial at their default sizes, bevelled form buttons, and flat colour strips where a designer wanted emphasis."
  },
  "archetype": "blog",
  "mode": "mix",
  "viewport": {
    "width": 800,
    "fluid": false
  },
  "density": "roomy",
  "summary": "A personal home page as people built them by hand between 1996 and 2000: one centred column on the grey page a browser showed when nobody set a colour, with a large serif name at the top, a row of bracketed links under it and horizontal rules between every section. Text is 16px Times with large bold Times headings and 10px sans-serif small print; links are the default blue, underlined, and purple once visited; boxes and rules are carved 2px grooves, bars are white or pale yellow strips, and hit counters show white digits on navy. It was the look of home pages on free hosting, of hobby and club pages and of student pages until page builders and stylesheets replaced it after 2000.",
  "url": "https://chrono.skin/s/v1-te-5bb2-dr",
  "preview_url": "https://chrono.skin/s/v1-te-5bb2-dr/specimen.html",
  "files": {
    "STYLE.md": "# Table-era personal home page, 1998\n\n## Summary\n\nA personal home page as people built them by hand between 1996 and 2000: one centred column on the grey page a browser showed when nobody set a colour, with a large serif name at the top, a row of bracketed links under it and horizontal rules between every section. Text is 16px Times with large bold Times headings and 10px sans-serif small print; links are the default blue, underlined, and purple once visited; boxes and rules are carved 2px grooves, bars are white or pale yellow strips, and hit counters show white digits on navy. It was the look of home pages on free hosting, of hobby and club pages and of student pages until page builders and stylesheets replaced it after 2000.\n\n## Layout\n\n- The page is fixed, not fluid: `--size-page` is 580px, centred by `.ds-page__frame` with a `--space-3` (8px) margin above and `--space-5` (16px) at the sides and foot inside it. Nothing is wider than 580px and nothing stretches with the window.\n- There is one column and one axis. The header, the welcome box, section titles, counters, the picture links, boxes, notices and the footer are centred on it; bulleted lists, tables, forms and running text are left-aligned inside it. There is no navigation bar, no rail and no sidebar on the home page.\n- The specimen is one example site, a personal home page, of four views. `.ds-nav` and `.ds-footer` are written once, outside the views; each view is a `.ds-view` section and one shows at a time.\n- Order from the top on the home view: `.ds-nav` (the `.ds-brand` centred, an italic tagline under it, a heavy `.ds-rule--strong`, one centred row of bracketed links, a `.ds-rule`), then `.ds-page__main`: the `.ds-hero` welcome box, the `.ds-stat` row of counters, and then section after section, each a centred `.ds-heading` over its block and divided from the next by a `.ds-rule--short` (half the column wide): the `.ds-list` of dated news, the `.ds-grid` row of four picture links, a `.ds-panel`. The `.ds-footer` opens with another `.ds-rule--strong` and repeats the links, small.\n- Inner pages (about, a links page, the guestbook) keep the `.ds-nav` and the `.ds-footer` and drop the welcome box and counters. `.ds-page__inner` opens with `.ds-page__head`, which stacks the small `.ds-breadcrumb`, the `.ds-page-header` (title and one italic line at the left, one button at the right, closed by its own `--border-width` rule) and, when the page has parts of its own, the `.ds-tabs` line. Below that the page stays one full-width column: the `.ds-table` with its `.ds-pagination`, or a list of entries, or the `.ds-notices` and the `.ds-form`, with a `.ds-rule--short` between unrelated blocks. Only a page of running text uses `.ds-page__columns`: the `.ds-prose` at the left and a `--size-side` (170px) `.ds-sidebar` at the right behind a vertical rule, after a `--space-5` gutter.\n- Views: `home` is the front page (welcome box, counters, news, picture links, the web ring box). `about` is the page of running text about the owner, with the fact file and link lists in the sidebar and the line that shows the link states. `links` is one page of the link collection: its parts as tabs, the table of pages with its status key, the page numbers, and the empty state of a part that has no links yet. `guestbook` is the entries, then the notices, the form to sign, and the message box that deleting an entry opens. The current view's link in `.ds-nav__links` is bold, in the text colour and not underlined; the home link is marked when the address names no view.\n- Blocks are separated by rules and outlines, never by cards with shadows or wide gutters.\n- Spacing scale: `--space-1` 2px is the padding of strips and controls; `--space-2` 4px is cell padding, the gap between a title and its body and between list items; `--space-3` 8px is the page margin above, the space round a rule, box padding and the gap between buttons, form rows and picture links; `--space-4` 12px is the gap between neighbouring blocks, paragraph spacing and the padding of the welcome box; `--space-5` 16px is the side margin of the sheet and the gutter beside the sidebar; `--space-6` 40px is the list indent, the gap between counters and the width of a short input.\n- Fixed sizes: `--size-side` 170px sidebar, `--size-label` 130px form label column, `--size-field` 220px text input, `--size-area` 300px textarea, `--size-check` 13px checkbox, `--size-dialog` 340px message box, `--size-icon` 36px drawing over a picture link.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- `--font-heading` is Arial Black, the face the bookshop sets its section labels in, falling back to Arial; it is used at `--weight-heading` and `--weight-display` 900, its only weight. `--font-body` and `--font-ui` are Arial, Helvetica. `--font-mono` is Lucida Console, falling back to Monaco and Courier New.\n- `--text-base` and `--text-ui` 13px; `--text-small` 11px; `--text-h3` 13px, `--text-h2` and `--text-large` 16px, `--text-h1` 18px, `--text-display` 26px for the brand name only. Headings are heavy, not large.\n- `--weight-bold` is 700 and so is `--weight-ui`: button and tab labels are bold. Line height is set like a printed catalogue, `--line-body` 1.3 and `--line-heading` 1.15; no transform, no tracking. All three link decorations are `underline`.\n\n- Family: the 1999 bookshop front, a khaki ground with a white sheet on it, pale yellow boxes, dark green and maroon, with the purple of the 1998 university page for visited links. It is the only set of this era whose page is not the colour of its content: `--color-page` is khaki `#cccc99` and `--color-canvas` white `#ffffff`, so the centred page stands in the window as a white sheet with khaki at both sides.\n- `--color-surface` is white; `--color-surface-alt` `#ffffcc` (pale yellow) is alternate rows, quiet strips and the empty state; `--color-surface-strong` is the khaki.\n- `--color-bar` `#cccc99` (khaki, black text, blue links) is the search band, the table head, panel titles and the header and footer rules. `--color-bar-alt` `#ffffcc` (pale yellow, black text) is every other title strip and the notice border.\n- `--color-inverse` `#003300` (dark green, white text) is the dialog title bar or a top bar. The same green is `--color-heading-alt` (the brand name, h3, positive figures), `--color-accent` (the solid badge, white text), `--color-border-strong`, `--color-success` and `--color-focus`.\n- Headings are maroon: `--color-heading` `#990000`. Text is black; `--color-text-muted` `#686868`.\n- Links are `--color-link` `#003399`, always underlined; visited `#680060`; active `#aa0000`; hover equals the link colour.\n- `--color-accent-alt` `#aa0000` is the \"New!\" word, prices and negative figures; `--color-danger` is the same red, as text on white and as a fill under white text.\n- `--color-fill-1` to `--color-fill-4` are `#ffffcc`, `#cccc99`, `#cc9900` (the gold of the shop's section labels), `#ffffff`. They carry black text and blue links.\n- `--color-warning` `#cc9900` is a fill only and carries black text. Notices sit on pale yellow; the error notice is red on white.\n- Borders: `--color-border` `#989898`, `--color-border-muted` `#c0c0c0` for row rules and bevels, `--color-input-border` `#c0c0c0`. Buttons are the grey of the operating system, `#efefef` and `#c0c0c0`.\n\nSpacing is roomy: every `--space-*` token of the layout was multiplied by 1.25. Where the Layout section names a spacing in pixels, the tokens are right.\n\n## Components\n\n- `.ds-page`: on `<body>`; page fill and body type. `.ds-page__frame` is the centred 580px column with its margin inside it: when a palette gives `--color-canvas` a colour of its own the frame shows as a sheet on the page. It takes `--shadow-panel`, so a surface set that outlines its boxes also outlines the sheet. `.ds-page__main` is the home column and `.ds-page__inner` the inner-page column, both with `--space-4` between blocks; `.ds-page__head` stacks path, page header and tabs; `.ds-page__columns` is the text-plus-sidebar grid of a page of running text.\n- `.ds-nav`: the header, centred. `.ds-nav__top` holds the `.ds-brand` and under it the italic `.ds-nav__tagline`; `.ds-nav__links` is one centred row of `.ds-nav__item` / `.ds-nav__link`, each item set in square brackets; the link of the view that is showing is bold, in the text colour and not underlined (`components.css` has one selector per view for this, and `is-current` does the same by hand). The row is repeated, small, in the footer. A link to a section that has no view of its own carries `.ds-nav__link--elsewhere`: it opens the nearest fitting view and is never marked as the view that is showing.\n- `.ds-brand`: the site's mark and name, centred at the top. `.ds-brand__mark` is a small square tile dressed like the button (`--fill-button` over `--color-button`, `--color-button-text` for the drawing, the `outset` bevel in `--color-border-muted`, `--radius-control`, `--shadow-control`), so every palette and surface reskins it; it holds the mark as inline SVG painted with `currentColor`, drawn with square line caps and a 2.8 unit stroke. `.ds-brand__name` is the name in the heading family at `--text-display` and `--weight-display`, in `--color-heading-alt`. The name `chronoskin` and its mark are placeholders for the installing project's own name and logo.\n- `.ds-hero`: the welcome box, the era's page introduction: a box in `--fill-bar` inside a `--border-width` groove, holding the centred `.ds-hero__title` (32px bold), `.ds-hero__lead` (two lines at most), `.ds-hero__action` (one button and a line of text links) and `.ds-hero__hint` (the 10px \"last changed\" line). Never a full-width banner and never taller than its text.\n- `.ds-page-header`: the head of an inner page, used instead of `.ds-hero`. `.ds-page-header__text` holds `.ds-page-header__title` (32px bold) and `.ds-page-header__lead` (one italic line); `.ds-page-header__action` holds one button, bottom-aligned at the right. A `--border-width` rule closes it.\n- `.ds-prose`: running text; styles `h1`, `h2`, `h3`, `p`, `ul`, `ol`, `strong`, `code`; `.ds-prose__lead` for a 19px italic lead line.\n- `.ds-link`: every link. States `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` is a small sans-serif link, `.ds-link--strong` a bold one. `.ds-links` wraps a line of links.\n- `.ds-button`: grey bevelled key with an 11px bold sans-serif label, on a `<button>` or, when it leads to another page, on a link. `.ds-button--secondary` is a darker grey for the lesser action, `.ds-button--danger` is the destructive action: the same bevel on `--color-surface` with the label in `--color-danger`, never a red button. `.ds-button--large` uses 19px. States `is-hover`, `is-pressed` (bevel inverts), `is-focus`, `is-disabled`. `.ds-buttons` lays out a row.\n- `.ds-form`: two-column form, right-aligned bold `.ds-form__label` and `.ds-form__field`, `--space-3` between rows. Controls: `.ds-form__input` (`--short` for 40px fields), `.ds-form__select`, `.ds-form__textarea`, `.ds-form__check`. `.ds-form__hint` for 10px help, `.ds-form__error` for a bold message in the danger colour under the field (the control itself does not change), `.ds-form__actions` for the button row. A select is a bevelled key in `--fill-button`; a checkbox is a small inset field in `--color-input` whose tick is a block of `--color-input-text`.\n- `.ds-table`: a table with a border: collapsed cells, every one outlined with a `--border-width` groove. `.ds-table__head` (`--fill-bar`, bold 11px sans-serif, left-aligned; `--num` right-aligned), `.ds-table__cell` with `--num`, `--up`, `--down` and `--group` (a centred full-width row on `--color-fill-3`), `.ds-table__row--alt` for lighter rows, `.ds-table__desc` for the 10px line under a linked name, `.ds-table__caption` for the centred 10px line beneath.\n- `.ds-stat`: the row of counters, centred, `--space-6` apart. Each `.ds-stat__item` is a `.ds-stat__value`, six monospaced digits in `--color-inverse-text` on `--fill-inverse` inside a groove, over a 10px `.ds-stat__label`. Three or four items; never large numerals or cards.\n- `.ds-list`: a bulleted list of dated news, left-aligned: `.ds-list__item`, `.ds-list__meta` (the date, small and muted, in brackets), `.ds-list__more` (a centred small bold link). `.ds-list--entries` is the guestbook form of it: no bullets, a faint rule under each item, `.ds-list__title` (the bold name) followed by the meta, and `.ds-list__text` under them.\n- `.ds-panel`: an outlined box, centred: `.ds-panel__title` strip in `--fill-bar-alt` with an optional small `.ds-panel__tool` link, then `.ds-panel__body` with `.ds-panel__text` lines and `.ds-panel__form`, a one-field form with its buttons on one line.\n- `.ds-grid`: one row of four picture links with `--space-3` between them: `.ds-grid__cell` and `--2`, `--3`, `--4` for the four fills, each an outlined box holding a `.ds-grid__icon` (a 36px line drawing as inline SVG in `--color-heading-alt`), a bold `.ds-grid__title` link and a 10px `.ds-grid__text`.\n- `.ds-tabs`: the era's tabs, one centred line of small links separated by bars with a rule under it, for the parts of an inner page; `.ds-tabs__item`, `.ds-tabs__tab`; the current one, `is-current`, is bold and marked with `--fill-bar-alt` like a line gone over with a highlighter.\n- `.ds-badge`: small solid label in `--fill-accent`. `.ds-badge--text` is a bold italic word in `--color-accent-alt` beside a link; `.ds-badge--count` is a muted count in brackets. Status labels are the same solid block in a flat status colour, with the word typed in capitals: `.ds-badge--success`, `.ds-badge--warning`, `.ds-badge--danger`. `.ds-badges` is the key line that explains them under a table.\n- `.ds-sidebar`: the narrow right column of a page of running text, behind a vertical `--border-width` rule. Sections of `.ds-sidebar__title` (centred strip in `--fill-bar-alt`), `.ds-sidebar__list` / `.ds-sidebar__item` with square bullets, and `.ds-sidebar__more`.\n- `.ds-notice`: a centred line on `--color-notice` inside a groove; `.ds-notice__label` bold lead word, `.ds-notice--error` in the danger colour on `--color-danger-surface` with a danger border. `.ds-notices` stacks several.\n- `.ds-pagination`: one centred line: italic `.ds-pagination__label`, bracketed back and more links, numbered `.ds-pagination__link`, current `is-current`, `is-disabled`.\n- `.ds-breadcrumb`: a small sans-serif path above the title, separated by colons; `.ds-breadcrumb__item`, last one `is-current` and bold.\n- `.ds-dialog`: a centred 340px box in the page flow with a `--color-border-strong` groove, a `.ds-dialog__title` bar in `--fill-inverse`, centred `.ds-dialog__body` and `.ds-dialog__actions`. No backdrop.\n- `.ds-empty`: an outlined block on `--color-surface-alt` with `.ds-empty__title`, `.ds-empty__text` and a button.\n- `.ds-footer`: centred, opened by a `.ds-rule--strong`: `.ds-footer__links` repeats the navigation as small bracketed `.ds-footer__item` links, then the italic `.ds-footer__note` and the small `.ds-footer__legal`.\n- `.ds-view`: one screen of the example site; only the one named in the address shows, and `.ds-view--home` shows when none is named. It has no box of its own.\n- `.ds-rule`: the horizontal rule, a `--border-width` groove across the column. `.ds-rule--short` is half as wide and centred, the divider between sections; `.ds-rule--strong` is the `--border-width-strong` rule in `--color-border-strong` under the name and above the footer. `.ds-heading`: a centred section title at `--text-h2`.\n\n## Never\n\n- `row-gap <= 10px`: list items and table rows sit close.\n- `block-gap <= 25px`: neighbouring blocks are 12px apart, or 8px on each side of a rule.\n- `content-width <= 580px`: the page is one fixed 580px column.\n- `font-size >= 10px`: small print is 10px, nothing smaller.\n- `font-size <= 26px`: the brand name is the largest text; headings stop at 18px.\n- `font-families <= 3`: Arial, Arial Black and Lucida Console.\n- `font-weight >= 400`: no light weights were measured.\n- `underlined-links >= 95%`: every reference underlines 100% of its link text.\n- `letter-spacing = 0`: no reference tracks its text.\n- `uppercase-text <= 0%`: no reference uses text-transform; capitals are typed.\n- `border-radius <= 0px`: no reference has a rounded corner.\n- `box-shadow-blur <= 0px`: shadows are hard bevel lines and the offset edge of the message box; nothing is blurred.\n- `text-shadow = none`: no reference has a text shadow.\n- `gradient-fills <= 6%`: only title strips and the top edge of form fields are shaded; every other fill is flat.\n- `border-width <= 3px`: the widest border is the 3px bevel of a control and the header and footer rules.\n- `transition = none`: nothing in the references changes on hover.\n- `animation = none`: no reference has a CSS animation.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. A new section is a centred `.ds-heading` over its block with a `.ds-rule--short` before it; a new box is a `.ds-panel` with a pale yellow title strip; a new index is a `.ds-list` or a bordered `.ds-table`; a new figure is a counter in `.ds-stat`. Keep everything on the centre axis of the one column, keep text at 16px Times with 10px or 11px sans-serif small print, keep links blue and underlined, divide with grooved rules, and never add a second column to the home page, a navigation bar, radius, blur, gradients across a box, hover effects or more whitespace than `--space-5`.\n",
    "components.css": "/* Layout tokens (structure part). Read from the 1998 and 1999 home pages and\n   welcome pages: one centred column of about 580px in an 800px window,\n   everything set on the middle axis and divided by horizontal rules, an 8px\n   page margin, 16px between paragraphs and a 40px list indent. */\n:root {\n  --size-page: 580px;\n  --size-side: 170px;\n  --size-label: 130px;\n  --size-field: 220px;\n  --size-area: 300px;\n  --size-check: 13px;\n  --size-dialog: 340px;\n  --size-icon: 36px;\n  --space-1: 3px;\n  --space-2: 5px;\n  --space-3: 10px;\n  --space-4: 15px;\n  --space-5: 20px;\n  --space-6: 50px;\n}\n\n/* ---------- shell ---------- */\n.ds-page {\n  margin: 0;\n  padding: 0;\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n/* One centred column. The margin is inside the sheet, so a canvas that\n   differs from the page keeps its text off the sheet edge. */\n.ds-page__frame {\n  width: var(--size-page);\n  margin: 0 auto;\n  padding: var(--space-3) var(--space-5) var(--space-5);\n  background: var(--color-canvas);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-panel);\n}\n/* Home page: sections under each other, a short rule between them. */\n.ds-page__main,\n.ds-page__inner {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n  padding: var(--space-3) 0 0;\n}\n/* Inner page head: path, page header and view links, stacked. */\n.ds-page__head {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-2);\n}\n/* The one two-column page: running text and a narrow column on the right. */\n.ds-page__columns {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) var(--size-side);\n  column-gap: var(--space-5);\n  align-items: start;\n}\n\n/* ---------- views: one screen of the example site shows at a time ---------- */\n.ds-view { display: none; }\n.ds-view:target, .ds-page:not(:has(.ds-view:target)) .ds-view--home { display: block; }\n.ds-view:target { scroll-margin-top: 100vh; }\n\n/* ---------- rules and section headings ---------- */\n/* The horizontal rule that divides everything on the page. */\n.ds-rule {\n  width: 100%;\n  height: 0;\n  margin: var(--space-3) auto;\n  border: 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n/* A rule half the width of the column, centred, between sections. */\n.ds-rule--short {\n  width: 50%;\n  margin: 0 auto;\n}\n/* The heavy rule under the name and above the footer. */\n.ds-rule--strong {\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n}\n/* Section title, centred over its block. */\n.ds-heading {\n  margin: 0 0 var(--space-3);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n  text-align: center;\n}\n\n/* ---------- links ---------- */\n.ds-link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration);\n  transition: var(--transition);\n}\n.ds-link:visited,\n.ds-link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-link:hover,\n.ds-link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-link:active,\n.ds-link.is-active {\n  color: var(--color-link-active);\n}\n.ds-link:focus-visible,\n.ds-link.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-link--quiet,\n.ds-link--quiet:visited,\n.ds-link--quiet.is-visited {\n  color: var(--color-link-quiet);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-link--strong {\n  font-weight: var(--weight-bold);\n}\n.ds-links {\n  margin: 0 0 var(--space-4);\n}\n\n/* ---------- nav: the name, a line under it, a row of bracketed links ---------- */\n.ds-nav {\n  padding: 0;\n  text-align: center;\n}\n.ds-nav__top {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--space-2) 0 0;\n}\n/* brand: the mark on a small bevelled tile dressed like the button, then the name */\n.ds-brand {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: var(--space-3);\n  color: var(--color-heading-alt);\n  text-decoration: none;\n}\n.ds-brand__mark {\n  display: flex;\n  flex: none;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  width: calc(var(--text-display) + var(--space-2));\n  height: calc(var(--text-display) + var(--space-2));\n  background: var(--color-button);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n}\n.ds-brand__mark svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-brand__name {\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-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  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-style: italic;\n}\n.ds-nav__links {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  column-gap: var(--space-3);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  text-transform: var(--ui-transform);\n}\n.ds-nav__item::before {\n  content: \"[ \";\n  color: var(--color-text);\n}\n.ds-nav__item::after {\n  content: \" ]\";\n  color: var(--color-text);\n}\n.ds-nav__link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-nav__link:visited,\n.ds-nav__link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  color: var(--color-link-hover);\n}\n/* The current page: its own link, bold, in the text colour, not underlined.\n   One selector per view, and the home link when the address names no view. */\n.ds-nav__link.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#home\"]:not(.ds-nav__link--elsewhere),\n.ds-page:has(#home:target) .ds-nav__link[href=\"#home\"]:not(.ds-nav__link--elsewhere),\n.ds-page:has(#about:target) .ds-nav__link[href=\"#about\"]:not(.ds-nav__link--elsewhere),\n.ds-page:has(#links:target) .ds-nav__link[href=\"#links\"]:not(.ds-nav__link--elsewhere),\n.ds-page:has(#guestbook:target) .ds-nav__link[href=\"#guestbook\"]:not(.ds-nav__link--elsewhere) {\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n\n/* ---------- hero: the welcome box ---------- */\n.ds-hero {\n  padding: var(--space-4) var(--space-5);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n  text-align: center;\n  text-shadow: var(--shadow-text);\n}\n.ds-hero__title {\n  margin: 0;\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-hero__lead {\n  margin: var(--space-2) 0 var(--space-3);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-hero__action {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: center;\n  gap: var(--space-3);\n}\n.ds-hero__hint {\n  margin: var(--space-3) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- prose ---------- */\n.ds-prose {\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  line-height: var(--line-body);\n}\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: var(--space-4) 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-prose h1 {\n  margin-top: 0;\n  font-size: var(--text-h1);\n}\n.ds-prose h2 {\n  font-size: var(--text-h2);\n}\n.ds-prose h3 {\n  font-size: var(--text-h3);\n  color: var(--color-heading-alt);\n}\n.ds-prose p {\n  margin: 0 0 var(--space-4);\n}\n.ds-prose ul,\n.ds-prose ol {\n  margin: 0 0 var(--space-4);\n  padding: 0 0 0 var(--space-6);\n}\n.ds-prose strong {\n  font-weight: var(--weight-bold);\n}\n.ds-prose code {\n  font-family: var(--font-mono);\n  font-size: var(--text-base);\n}\n.ds-prose__lead {\n  font-size: var(--text-large);\n  font-style: italic;\n}\n\n/* ---------- page header: title and one line, action at the right, a rule under ---------- */\n.ds-page-header {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-4);\n  padding: 0 0 var(--space-2);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-page-header__text {\n  flex: 1;\n  min-width: 0;\n}\n.ds-page-header__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-page-header__lead {\n  margin: 0;\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-style: italic;\n}\n.ds-page-header__action {\n  flex: none;\n}\n\n/* ---------- buttons ---------- */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-button {\n  display: inline-block;\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  transition: var(--transition);\n  cursor: default;\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  color: var(--color-button-hover-text);\n  box-shadow: var(--shadow-control-hover);\n}\n.ds-button:active,\n.ds-button.is-pressed {\n  border-style: inset;\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-button--secondary,\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n}\n.ds-button--large {\n  font-size: var(--text-large);\n}\n/* Destructive action: the same bevel on the surface colour, the label in the\n   bold danger colour, which every palette keeps legible on its surface. */\n.ds-button--danger,\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: var(--color-surface);\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  box-shadow: none;\n}\n\n/* ---------- form ---------- */\n.ds-form {\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  column-gap: var(--space-3);\n  row-gap: var(--space-3);\n  align-items: baseline;\n  margin: 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-form__label {\n  text-align: right;\n  font-weight: var(--weight-bold);\n}\n.ds-form__field {\n  min-width: 0;\n}\n.ds-form__input,\n.ds-form__select,\n.ds-form__textarea {\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-1);\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: var(--border-width-strong) inset var(--color-input-border);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  transition: var(--transition);\n}\n.ds-form__input {\n  width: var(--size-field);\n}\n.ds-form__select {\n  border-style: outset;\n  border-color: var(--color-border-muted);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n}\n.ds-form__textarea {\n  display: block;\n  width: var(--size-area);\n  font-family: var(--font-mono);\n}\n.ds-form__input:focus-visible,\n.ds-form__select:focus-visible,\n.ds-form__textarea:focus-visible,\n.ds-form__input.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-form__input:disabled,\n.ds-form__input.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n}\n.ds-form__check {\n  appearance: none;\n  box-sizing: border-box;\n  width: var(--size-check);\n  height: var(--size-check);\n  margin: 0 var(--space-2) 0 0;\n  padding: var(--space-1);\n  vertical-align: middle;\n  background-color: var(--color-input);\n  border: var(--border-width) inset var(--color-input-border);\n  border-radius: var(--radius-control);\n}\n/* The tick is a block of the field's text colour inside the field's own\n   fill, so it reads the same on a light and on a dark page. */\n.ds-form__check:checked::before,\n.ds-form__check.is-checked::before {\n  content: \"\";\n  display: block;\n  width: 100%;\n  height: 100%;\n  background-color: var(--color-input-text);\n}\n.ds-form__hint {\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-form__error {\n  display: block;\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-form__actions {\n  grid-column: 2;\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  padding: var(--space-2) 0 0;\n}\n\n/* ---------- table: every cell ruled, as a table with a border was ---------- */\n.ds-table {\n  width: 100%;\n  border-collapse: collapse;\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-table__head {\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  text-align: left;\n}\n.ds-table__cell {\n  padding: var(--space-2) var(--space-3);\n  background: var(--color-surface);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  text-align: left;\n  vertical-align: top;\n}\n.ds-table__cell--num,\n.ds-table__head--num {\n  text-align: right;\n}\n.ds-table__cell--group {\n  background: var(--color-fill-3);\n  text-align: center;\n}\n.ds-table__row--alt .ds-table__cell {\n  background: var(--color-surface-alt);\n}\n/* The line of description under a linked name. */\n.ds-table__desc {\n  display: block;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-table__caption {\n  caption-side: bottom;\n  padding: var(--space-2) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  text-align: center;\n}\n\n/* ---------- stats: a row of hit counters ---------- */\n.ds-stat {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-6);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  text-align: center;\n}\n.ds-stat__item {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: var(--space-1);\n}\n/* The figure is set like the digits of a counter: light on the inverse fill. */\n.ds-stat__value {\n  display: block;\n  padding: 0 var(--space-3);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-mono);\n  font-size: var(--text-large);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n.ds-stat__label {\n  display: block;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- list: dated news with bullets, or signed entries ---------- */\n.ds-list {\n  margin: 0;\n  padding: 0 0 0 var(--space-6);\n  list-style: disc;\n  font-size: var(--text-base);\n  text-align: left;\n}\n.ds-list__item {\n  padding: 0 0 var(--space-2);\n}\n.ds-list__meta {\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-list__more {\n  margin: var(--space-2) 0 0;\n  text-align: center;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n/* Entries of a guestbook: no bullets, a faint rule under each. */\n.ds-list--entries {\n  padding: 0;\n  list-style: none;\n}\n.ds-list--entries .ds-list__item {\n  padding: var(--space-3) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-list__title {\n  font-weight: var(--weight-bold);\n}\n.ds-list__text {\n  margin: var(--space-1) 0 0;\n}\n\n/* ---------- panel: an outlined box with a title strip ---------- */\n.ds-panel {\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n  text-align: center;\n}\n.ds-panel__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-panel__tool {\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n}\n.ds-panel__body {\n  padding: var(--space-3) var(--space-4);\n}\n.ds-panel__text {\n  margin: 0 0 var(--space-3);\n}\n/* A one-field form on one line. */\n.ds-panel__form {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: var(--space-2);\n  margin: var(--space-3) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n\n/* ---------- grid: a row of four picture links ---------- */\n.ds-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr 1fr 1fr;\n  gap: var(--space-3);\n}\n.ds-grid__cell {\n  min-width: 0;\n  padding: var(--space-3) var(--space-2);\n  background: var(--color-fill-1);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n  text-align: center;\n}\n.ds-grid__cell--2 {\n  background: var(--color-fill-2);\n}\n.ds-grid__cell--3 {\n  background: var(--color-fill-3);\n}\n.ds-grid__cell--4 {\n  background: var(--color-fill-4);\n}\n/* The little drawing over the link, in the second heading colour. */\n.ds-grid__icon {\n  display: block;\n  width: var(--size-icon);\n  height: var(--size-icon);\n  margin: 0 auto var(--space-2);\n  color: var(--color-heading-alt);\n}\n.ds-grid__icon svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-grid__title {\n  margin: 0;\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n}\n.ds-grid__text {\n  margin: var(--space-1) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- tabs: a line of links between two rules ---------- */\n.ds-tabs {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  align-items: baseline;\n  margin: 0;\n  padding: var(--space-2) 0;\n  list-style: none;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-tabs__item + .ds-tabs__item::before {\n  content: \"|\";\n  padding: 0 var(--space-2);\n  color: var(--color-text);\n}\n.ds-tabs__tab {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link-hover);\n}\n/* The current one is marked like a line gone over with a highlighter. */\n.ds-tabs__tab.is-current {\n  padding: 0 var(--space-2);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n\n/* ---------- badge ---------- */\n.ds-badge {\n  display: inline-block;\n  padding: 0 var(--space-2);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  border-radius: var(--radius-pill);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n/* The usual form: a coloured word next to a link, no box. */\n.ds-badge--text {\n  padding: 0;\n  background: transparent;\n  color: var(--color-accent-alt);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-style: italic;\n}\n.ds-badge--count {\n  padding: 0;\n  background: transparent;\n  color: var(--color-text-muted);\n  font-weight: var(--weight-body);\n}\n/* Status labels: the same small solid block in a flat status colour. */\n.ds-badge--success {\n  background: var(--color-success);\n  color: var(--color-accent-text);\n}\n.ds-badge--warning {\n  background: var(--color-warning);\n  color: var(--color-bar-alt-text);\n}\n.ds-badge--danger {\n  background: var(--color-danger);\n  color: var(--color-accent-text);\n}\n/* A key line that explains the labels. */\n.ds-badges {\n  display: block;\n  padding: 0 0 var(--space-2);\n}\n\n/* ---------- sidebar: a narrow column behind a rule ---------- */\n.ds-sidebar {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  padding: 0 0 0 var(--space-4);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-sidebar__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-2);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-base);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-align: center;\n}\n.ds-sidebar__list {\n  margin: var(--space-2) 0 0;\n  padding: 0 0 0 calc(var(--space-5) + var(--space-2));\n  list-style: square;\n  font-size: var(--text-base);\n}\n.ds-sidebar__item {\n  padding: 0 0 var(--space-2);\n}\n.ds-sidebar__more {\n  margin: 0;\n  text-align: right;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- notice ---------- */\n.ds-notices {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\n}\n.ds-notice {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  text-align: center;\n}\n.ds-notice--error {\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n  border-color: var(--color-danger);\n}\n.ds-notice__label {\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- pagination ---------- */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  align-items: baseline;\n  gap: var(--space-3);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-pagination__label {\n  font-style: italic;\n}\n.ds-pagination__link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-pagination__link.is-current {\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-disabled-text);\n  text-decoration: none;\n}\n\n/* ---------- breadcrumb: \"you are here\", small, above the title ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-breadcrumb__item + .ds-breadcrumb__item::before {\n  content: \":\";\n  padding: 0 var(--space-2);\n  color: var(--color-text);\n}\n.ds-breadcrumb__item.is-current {\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- dialog: a bordered box in the page flow ---------- */\n.ds-dialog {\n  position: static;\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  margin: 0 auto;\n  padding: 0;\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n}\n.ds-dialog__body {\n  margin: 0;\n  padding: var(--space-4) var(--space-4) var(--space-3);\n  text-align: center;\n}\n.ds-dialog__actions {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-3);\n  padding: 0 var(--space-3) var(--space-4);\n}\n\n/* ---------- empty state ---------- */\n.ds-empty {\n  padding: var(--space-5) var(--space-4);\n  background: var(--color-surface-alt);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  text-align: center;\n  font-size: var(--text-base);\n}\n.ds-empty__title {\n  margin: 0 0 var(--space-2);\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-empty__text {\n  margin: 0 0 var(--space-3);\n}\n\n/* ---------- footer: the links again, small, then who and when ---------- */\n.ds-footer {\n  padding: var(--space-3) 0 0;\n  text-align: center;\n  font-size: var(--text-base);\n}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  column-gap: var(--space-3);\n  margin: 0;\n  padding: var(--space-2) 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-footer__item::before {\n  content: \"[\";\n}\n.ds-footer__item::after {\n  content: \"]\";\n}\n.ds-footer__note {\n  margin: var(--space-2) 0 0;\n  font-style: italic;\n}\n.ds-footer__legal {\n  margin: var(--space-2) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* The current nav item also carries a text marker, so it stays plain when a token set drops bold or underline. */\n.ds-nav__link.is-current::before,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#home\"]:not(.ds-nav__link--elsewhere)::before,\n.ds-page:has(#home:target) .ds-nav__link[href=\"#home\"]:not(.ds-nav__link--elsewhere)::before,\n.ds-page:has(#about:target) .ds-nav__link[href=\"#about\"]:not(.ds-nav__link--elsewhere)::before,\n.ds-page:has(#links:target) .ds-nav__link[href=\"#links\"]:not(.ds-nav__link--elsewhere)::before,\n.ds-page:has(#guestbook:target) .ds-nav__link[href=\"#guestbook\"]:not(.ds-nav__link--elsewhere)::before {\n  content: \"> \";\n}\n",
    "specimen.html": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>chronoskin: a personal home page, 1996 to 2000: specimen</title>\n<link rel=\"stylesheet\" href=\"tokens.css\">\n<link rel=\"stylesheet\" href=\"components.css\">\n</head>\n<body class=\"ds-page\" data-component=\"shell\">\n\n<div class=\"ds-page__frame\">\n\n  <header class=\"ds-nav\" data-component=\"nav\">\n    <div class=\"ds-nav__top\">\n      <a class=\"ds-brand\" data-component=\"brand\" href=\"#\">\n        <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9.2\"/><ellipse cx=\"12\" cy=\"12\" rx=\"4\" ry=\"9.2\"/><line x1=\"2.8\" y1=\"12\" x2=\"21.2\" y2=\"12\"/></svg></span>\n        <span class=\"ds-brand__name\">chronoskin</span>\n      </a>\n      <span class=\"ds-nav__tagline\">A back-garden observatory on the Web, open since March 1997</span>\n    </div>\n    <hr class=\"ds-rule ds-rule--strong\">\n    <ul class=\"ds-nav__links\">\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#home\">Home</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#about\">About Me</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#links\">My Links</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#guestbook\">Guestbook</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link ds-nav__link--elsewhere\" href=\"#about\">Photo Album</a></li>\n      <li class=\"ds-nav__item\"><a class=\"ds-nav__link ds-nav__link--elsewhere\" href=\"#guestbook\">E-mail Me</a></li>\n    </ul>\n    <hr class=\"ds-rule\">\n  </header>\n\n  <section class=\"ds-view ds-view--home\" id=\"home\">\n    <main class=\"ds-page__main\">\n\n      <section class=\"ds-hero\" data-component=\"hero\">\n        <h1 class=\"ds-hero__title\">Welcome to My Home Page!</h1>\n        <p class=\"ds-hero__lead\">I am Robin, I watch the sky from a garden shed, and this is where I keep my notes, my pictures and every good astronomy page I have found.</p>\n        <div class=\"ds-hero__action\">\n          <a class=\"ds-button\" href=\"#guestbook\">Sign My Guestbook</a>\n          <span>or <a class=\"ds-link\" href=\"#about\">read who keeps this page</a> and <a class=\"ds-link\" href=\"#links\">see my links</a></span>\n        </div>\n        <p class=\"ds-hero__hint\">This page was last changed on Monday 14 June 1999.</p>\n      </section>\n\n      <ul class=\"ds-stat\" data-component=\"stats\">\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">004812</span> <span class=\"ds-stat__label\">visitors since March 1997</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">000047</span> <span class=\"ds-stat__label\">names in the guestbook</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">000126</span> <span class=\"ds-stat__label\">nights in the observing log</span></li>\n      </ul>\n\n      <hr class=\"ds-rule ds-rule--short\">\n\n      <section>\n        <h2 class=\"ds-heading\">What's New</h2>\n        <ul class=\"ds-list\" data-component=\"list\">\n          <li class=\"ds-list__item\"><a class=\"ds-link\" href=\"#home\">Six new pictures of the Moon</a> in the photo album <span class=\"ds-badge\">NEW</span> <span class=\"ds-list__meta\">(June 14)</span></li>\n          <li class=\"ds-list__item\"><a class=\"ds-link\" href=\"#links\">Twelve links added</a> to the page of telescope makers <span class=\"ds-list__meta\">(June 2)</span></li>\n          <li class=\"ds-list__item\"><a class=\"ds-link is-visited\" href=\"#about\">How I built the shed roof that rolls away</a> <span class=\"ds-list__meta\">(May 21)</span></li>\n          <li class=\"ds-list__item\"><a class=\"ds-link\" href=\"#home\">Observing log for April</a>, nine clear nights out of thirty <span class=\"ds-list__meta\">(May 3)</span></li>\n          <li class=\"ds-list__item\">The guestbook is working again. <a class=\"ds-link\" href=\"#guestbook\">Please sign it!</a> <span class=\"ds-badge ds-badge--text\">Thank you!</span> <span class=\"ds-list__meta\">(April 18)</span></li>\n        </ul>\n        <p class=\"ds-list__more\"><a class=\"ds-link\" href=\"#links\">Older news...</a></p>\n      </section>\n\n      <hr class=\"ds-rule ds-rule--short\">\n\n      <section>\n        <h2 class=\"ds-heading\">Rooms of the Observatory</h2>\n        <div class=\"ds-grid\" data-component=\"grid\">\n          <div class=\"ds-grid__cell\">\n            <span class=\"ds-grid__icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><path d=\"M3 10l13-6 2 4-13 6zM10 12l-4 9M10 12l5 9M10 12v9\"/></svg></span>\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#about\">My Telescope</a></p>\n            <p class=\"ds-grid__text\">A six-inch reflector, built at home.</p>\n          </div>\n          <div class=\"ds-grid__cell ds-grid__cell--2\">\n            <span class=\"ds-grid__icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><path d=\"M6 3h12v18H6zM9 8h6M9 12h6M9 16h4\"/></svg></span>\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#links\">Observing Log</a></p>\n            <p class=\"ds-grid__text\">Every clear night since 1997.</p>\n          </div>\n          <div class=\"ds-grid__cell ds-grid__cell--3\">\n            <span class=\"ds-grid__icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><path d=\"M3 5h18v14H3zM3 17l5-6 4 4 3-3 6 6\"/><circle cx=\"16\" cy=\"9\" r=\"1.5\"/></svg></span>\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#links\">Photo Album</a></p>\n            <p class=\"ds-grid__text\">Forty pictures, small files.</p>\n          </div>\n          <div class=\"ds-grid__cell ds-grid__cell--4\">\n            <span class=\"ds-grid__icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><path d=\"M15 4a8 8 0 1 0 5 13A7 7 0 0 1 15 4z\"/><path d=\"M5 5v4M3 7h4\"/></svg></span>\n            <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#links\">Sky This Month</a></p>\n            <p class=\"ds-grid__text\">What to look for, and when.</p>\n          </div>\n        </div>\n      </section>\n\n      <hr class=\"ds-rule ds-rule--short\">\n\n      <section class=\"ds-panel\" data-component=\"panel\">\n        <h2 class=\"ds-panel__title\">The Back-Garden Astronomers' Web Ring</h2>\n        <div class=\"ds-panel__body\">\n          <p class=\"ds-panel__text\">chronoskin is site 31 of 58 in the ring. <a class=\"ds-link\" href=\"#links\">[ Previous ]</a> <a class=\"ds-link\" href=\"#links\">[ Random ]</a> <a class=\"ds-link\" href=\"#links\">[ Next ]</a> <a class=\"ds-link\" href=\"#links\">[ List All ]</a></p>\n          <hr class=\"ds-rule ds-rule--short\">\n          <form class=\"ds-panel__form\" action=\"#\">\n            <label for=\"h-mail\">Tell me when this page changes:</label>\n            <input class=\"ds-form__input\" id=\"h-mail\" type=\"text\" value=\"you@example.net\">\n            <button class=\"ds-button\" type=\"button\">Join</button>\n            <button class=\"ds-button ds-button--secondary\" type=\"button\">Leave</button>\n          </form>\n        </div>\n      </section>\n\n    </main>\n  </section>\n\n  <section class=\"ds-view\" id=\"about\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"You are here\">\n          <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#about\">About Me</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">The Observatory</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\" data-component=\"page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">About Me</h1>\n            <p class=\"ds-page-header__lead\">Who keeps this page, and what is in the shed.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#guestbook\">Sign My Guestbook</a>\n          </div>\n        </header>\n      </div>\n\n      <div class=\"ds-page__columns\">\n        <article class=\"ds-prose\" data-component=\"typography\">\n          <h1>Hello!</h1>\n          <p class=\"ds-prose__lead\">I teach mathematics by day and look at the sky by night.</p>\n          <p>I have kept this page since <strong>March 1997</strong>. It began as one screen of text and a picture of the Moon, and it has grown a room at a time. Everything here is written by hand in a text editor and saved as <code>index.html</code>.</p>\n          <h2>The observatory</h2>\n          <p>The observatory is a garden shed whose roof rolls back on four wheels from a lawn mower. Inside are:</p>\n          <ul>\n            <li>a six-inch reflector on a wooden mount;</li>\n            <li>a red torch and a folding chair;</li>\n            <li>a tin of biscuits for cold nights.</li>\n          </ul>\n          <h2>Reading the links</h2>\n          <p>Links on chronoskin are underlined, and their colour tells you where you have been.</p>\n          <p class=\"ds-links\" data-component=\"links\">\n            <a class=\"ds-link\" href=\"#about\">A link you have not followed</a>,\n            <a class=\"ds-link is-visited\" href=\"#about\">one you have visited</a>,\n            <a class=\"ds-link is-hover\" href=\"#about\">one under the pointer</a>,\n            <a class=\"ds-link is-active\" href=\"#about\">one as you click it</a>,\n            <a class=\"ds-link ds-link--strong\" href=\"#about\">a bold link</a> and\n            <a class=\"ds-link ds-link--quiet\" href=\"#about\">a small link</a>.\n          </p>\n          <h3>Write to me</h3>\n          <p>I answer every letter, though not always the same week. The quickest way to say hello is the <a class=\"ds-link\" href=\"#guestbook\">guestbook</a>.</p>\n        </article>\n\n        <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n          <section>\n            <h2 class=\"ds-sidebar__title\">Fact File</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\">Lives by the sea</li>\n              <li class=\"ds-sidebar__item\">Favourite planet: <a class=\"ds-link\" href=\"#links\">Saturn</a></li>\n              <li class=\"ds-sidebar__item\">First telescope: 1984</li>\n              <li class=\"ds-sidebar__item\">On the Web since 1997</li>\n            </ul>\n          </section>\n          <section>\n            <h2 class=\"ds-sidebar__title\">On This Page</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#links\">Building the shed</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#links\">Grinding a mirror</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link is-visited\" href=\"#links\">Observing log</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#links\">Photo album</a> <span class=\"ds-badge ds-badge--count\">(40)</span></li>\n            </ul>\n          </section>\n          <section>\n            <h2 class=\"ds-sidebar__title\">Pages I Read</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#links\">Sky this week</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#links\">The mirror makers</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#links\">Comet watch</a></li>\n            </ul>\n            <p class=\"ds-sidebar__more\"><a class=\"ds-link\" href=\"#links\">All my links...</a></p>\n          </section>\n        </aside>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"links\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"You are here\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#links\">My Links</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Astronomy</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">My Links</h1>\n            <p class=\"ds-page-header__lead\">Every page here has been visited by me, more than once.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#guestbook\">Suggest a Link</a>\n          </div>\n        </header>\n        <ul class=\"ds-tabs\" data-component=\"tabs\">\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab is-current\" href=\"#links\">Astronomy</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#links\">Telescope Makers</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#links\">Home Page Help</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#links\">Friends</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#links\">Odds and Ends</a></li>\n        </ul>\n      </div>\n\n      <table class=\"ds-table\" data-component=\"table\">\n        <caption class=\"ds-table__caption\">\n          <span class=\"ds-badges\" data-component=\"badge\">Key: <span class=\"ds-badge ds-badge--success\">OK</span> working when last tried <span class=\"ds-badge ds-badge--warning\">MOVED</span> has a new address <span class=\"ds-badge ds-badge--danger\">GONE</span> no answer <span class=\"ds-badge\">NEW</span> added this month</span>\n          I try every link on the first Sunday of the month. <a class=\"ds-link\" href=\"#guestbook\">Tell me about a broken one</a>\n        </caption>\n        <thead>\n          <tr>\n            <th class=\"ds-table__head\" scope=\"col\">Page</th>\n            <th class=\"ds-table__head\" scope=\"col\">State</th>\n            <th class=\"ds-table__head\" scope=\"col\">Added</th>\n            <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Clicks</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr>\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#links\">The Sky This Week</a> <span class=\"ds-table__desc\">Rising and setting times for any town.</span></td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">OK</span></td>\n            <td class=\"ds-table__cell\">Mar 1997</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">412</td>\n          </tr>\n          <tr class=\"ds-table__row--alt\">\n            <td class=\"ds-table__cell\"><a class=\"ds-link is-visited\" href=\"#links\">A Beginner's Map of the Moon</a> <span class=\"ds-table__desc\">Forty craters you can find with binoculars.</span></td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">OK</span></td>\n            <td class=\"ds-table__cell\">Nov 1997</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">388</td>\n          </tr>\n          <tr>\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#links\">Comet Watch</a> <span class=\"ds-badge\">NEW</span> <span class=\"ds-table__desc\">Where to point tonight, with charts.</span></td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">OK</span></td>\n            <td class=\"ds-table__cell\">Jun 1999</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">36</td>\n          </tr>\n          <tr class=\"ds-table__row--alt\">\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#links\">The Variable Star Notebook</a> <span class=\"ds-table__desc\">One observer, eleven years of estimates.</span></td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">MOVED</span></td>\n            <td class=\"ds-table__cell\">Feb 1998</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">151</td>\n          </tr>\n          <tr>\n            <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#links\">Meteor Counts by Post</a> <span class=\"ds-table__desc\">Send in your tally after each shower.</span></td>\n            <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">GONE</span></td>\n            <td class=\"ds-table__cell\">Aug 1998</td>\n            <td class=\"ds-table__cell ds-table__cell--num\">97</td>\n          </tr>\n          <tr>\n            <td class=\"ds-table__cell ds-table__cell--group\" colspan=\"4\">Know a page that belongs here? <a class=\"ds-link\" href=\"#guestbook\">Suggest it in the guestbook</a></td>\n          </tr>\n        </tbody>\n      </table>\n\n      <ol class=\"ds-pagination\" data-component=\"pagination\">\n        <li class=\"ds-pagination__label\">More links:</li>\n        <li><span class=\"ds-pagination__link is-disabled\">[&lt;&lt; Back]</span></li>\n        <li><span class=\"ds-pagination__link is-current\">1</span></li>\n        <li><a class=\"ds-pagination__link\" href=\"#links\">2</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#links\">3</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#links\">4</a></li>\n        <li><a class=\"ds-pagination__link\" href=\"#links\">[More &gt;&gt;]</a></li>\n      </ol>\n\n      <hr class=\"ds-rule ds-rule--short\">\n\n      <section>\n        <h2 class=\"ds-heading\">Friends' Pages</h2>\n        <div class=\"ds-empty\" data-component=\"empty\">\n          <h3 class=\"ds-empty__title\">No friends' pages yet.</h3>\n          <p class=\"ds-empty__text\">If you keep a home page about the sky, sign the guestbook with its address and I will list it here.</p>\n          <a class=\"ds-button\" href=\"#guestbook\">Add Your Page</a>\n        </div>\n      </section>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"guestbook\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"You are here\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#guestbook\">Guestbook</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Sign</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">Guestbook</h1>\n            <p class=\"ds-page-header__lead\">Forty-seven visitors have signed since 1997. Be the next!</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button ds-button--secondary\" href=\"#home\">Back to the Front Page</a>\n          </div>\n        </header>\n      </div>\n\n      <ul class=\"ds-list ds-list--entries\">\n        <li class=\"ds-list__item\"><span class=\"ds-list__title\">Marta</span> <span class=\"ds-list__meta\">from a town in the hills, June 11, 1999</span>\n          <p class=\"ds-list__text\">Your Moon map got my daughter out of bed at four in the morning. Thank you, I think!</p></li>\n        <li class=\"ds-list__item\"><span class=\"ds-list__title\">Old Tom</span> <span class=\"ds-list__meta\">found you through the web ring, May 30, 1999</span>\n          <p class=\"ds-list__text\">Fine page. The mower wheels are a clever idea. Mine are from a pram.</p></li>\n        <li class=\"ds-list__item\"><span class=\"ds-list__title\">J. Okafor</span> <span class=\"ds-list__meta\">from the other side of the world, May 2, 1999</span>\n          <p class=\"ds-list__text\">Greetings from the southern sky. You are missing the best half! <a class=\"ds-link\" href=\"#links\">My page</a> has pictures.</p></li>\n      </ul>\n      <p class=\"ds-list__more\"><a class=\"ds-link\" href=\"#guestbook\">Read all 47 entries...</a></p>\n\n      <hr class=\"ds-rule ds-rule--short\">\n\n      <section>\n      <h2 class=\"ds-heading\">Sign the Book</h2>\n      <div class=\"ds-notices\" data-component=\"notice\">\n        <p class=\"ds-notice\"><span class=\"ds-notice__label\">Please note:</span> tags are taken out of entries, and I read each one before it appears.</p>\n        <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__label\">Oops!</span> Your entry was not added. Please give a name and try again.</p>\n      </div>\n      </section>\n\n      <form class=\"ds-form\" data-component=\"form\" action=\"#guestbook\">\n        <label class=\"ds-form__label\" for=\"g-name\">Your name:</label>\n        <div class=\"ds-form__field\">\n          <input class=\"ds-form__input\" id=\"g-name\" type=\"text\">\n          <span class=\"ds-form__error\">A name is needed, even a made-up one.</span>\n        </div>\n        <label class=\"ds-form__label\" for=\"g-mail\">E-mail:</label>\n        <div class=\"ds-form__field\">\n          <input class=\"ds-form__input\" id=\"g-mail\" type=\"text\" value=\"you@example.net\">\n          <span class=\"ds-form__hint\">(not shown on the page)</span>\n        </div>\n        <label class=\"ds-form__label\" for=\"g-how\">How did you find me?</label>\n        <div class=\"ds-form__field\">\n          <select class=\"ds-form__select\" id=\"g-how\">\n            <option>The web ring</option>\n            <option>A search engine</option>\n            <option>A friend told me</option>\n            <option>Just surfed in</option>\n          </select>\n        </div>\n        <span class=\"ds-form__label\">Also:</span>\n        <div class=\"ds-form__field\">\n          <label><input class=\"ds-form__check\" type=\"checkbox\" checked>List my home page among the friends' pages</label>\n        </div>\n        <label class=\"ds-form__label\" for=\"g-note\">Your message:</label>\n        <div class=\"ds-form__field\">\n          <textarea class=\"ds-form__textarea\" id=\"g-note\" rows=\"4\">Clear skies from</textarea>\n        </div>\n        <div class=\"ds-form__actions\" data-component=\"buttons\">\n          <button class=\"ds-button\" type=\"button\">Sign the Book</button>\n          <button class=\"ds-button ds-button--secondary\" type=\"button\">Start Again</button>\n          <button class=\"ds-button\" type=\"button\" disabled>Preview</button>\n          <button class=\"ds-button ds-button--danger\" type=\"button\">Delete My Entry</button>\n        </div>\n      </form>\n\n      <section class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n        <h2 class=\"ds-dialog__title\" id=\"d-title\">Delete your entry?</h2>\n        <p class=\"ds-dialog__body\">Your entry of June 11 will be taken out of the book. This <a class=\"ds-link\" href=\"#guestbook\">cannot be undone</a>.</p>\n        <div class=\"ds-dialog__actions\">\n          <button class=\"ds-button ds-button--danger\" type=\"button\">Delete</button>\n          <button class=\"ds-button ds-button--secondary\" type=\"button\">Keep It</button>\n        </div>\n      </section>\n\n    </div>\n  </section>\n\n  <footer class=\"ds-footer\" data-component=\"footer\">\n    <hr class=\"ds-rule ds-rule--strong\">\n    <ul class=\"ds-footer__links\">\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#about\">About Me</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#links\">My Links</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#guestbook\">Guestbook</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#links\">Photo Album</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#links\">Top of Page</a></li>\n    </ul>\n    <p class=\"ds-footer__note\">chronoskin is made by hand and looks the same in any browser, at 800 by 600 or wider.</p>\n    <p class=\"ds-footer__legal\">Words and pictures copyright 1997 to 1999 chronoskin. Maintained by <a class=\"ds-link\" href=\"#guestbook\">Robin</a>.</p>\n  </footer>\n\n</div>\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.table-era-90s.blog.s05.p11.t11.u02.dr\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"table-era-90s\",\n    \"years\": [\n      1996,\n      2000\n    ]\n  },\n  \"archetype\": \"blog\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 800,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-te-5bb2-dr\",\n  \"short\": \"v1-te-5bb2-dr\",\n  \"density\": \"roomy\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #cccc99;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #ffffcc;\n  --color-surface-strong: #cccc99;\n  --color-bar: #cccc99;\n  --color-bar-text: #000000;\n  --color-bar-alt: #ffffcc;\n  --color-bar-alt-text: #000000;\n  --color-inverse: #003300;\n  --color-inverse-text: #ffffff;\n  --color-text: #000000;\n  --color-text-muted: #686868;\n  --color-heading: #990000;\n  --color-heading-alt: #003300;\n  --color-link: #003399;\n  --color-link-quiet: #003399;\n  --color-link-visited: #680060;\n  --color-link-hover: #003399;\n  --color-link-active: #aa0000;\n  --color-border: #989898;\n  --color-border-strong: #003300;\n  --color-border-muted: #c0c0c0;\n  --color-accent: #003300;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #aa0000;\n  --color-fill-1: #ffffcc;\n  --color-fill-2: #cccc99;\n  --color-fill-3: #cc9900;\n  --color-fill-4: #ffffff;\n  --color-button: #efefef;\n  --color-button-text: #000000;\n  --color-button-hover-text: #000000;\n  --color-button-secondary: #c0c0c0;\n  --color-button-secondary-text: #000000;\n  --color-input: #ffffff;\n  --color-input-text: #000000;\n  --color-input-border: #c0c0c0;\n  --color-disabled: #efefef;\n  --color-disabled-text: #989898;\n  --color-danger: #aa0000;\n  --color-danger-surface: #ffffff;\n  --color-success: #003300;\n  --color-warning: #cc9900;\n  --color-notice: #ffffcc;\n  --color-notice-text: #000000;\n  --color-focus: #003300;\n  --color-shadow: #000000;\n  --color-overlay: #ffffff;\n}\n\n/* @part type */\n:root {\n  --font-body: Arial, Helvetica, sans-serif;\n  --font-heading: \"Arial Black\", Arial, Helvetica, sans-serif;\n  --font-ui: Arial, Helvetica, sans-serif;\n  --font-mono: \"Lucida Console\", Monaco, \"Courier New\", monospace;\n  --text-base: 13px;\n  --text-small: 11px;\n  --text-ui: 13px;\n  --text-large: 16px;\n  --text-display: 26px;\n  --text-h1: 18px;\n  --text-h2: 16px;\n  --text-h3: 13px;\n  --line-body: 1.3;\n  --line-heading: 1.15;\n  --line-display: 1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 900;\n  --weight-display: 900;\n  --weight-ui: 700;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: underline;\n}\n\n/* @part surface */\n:root {\n  --border-width: 2px;\n  --border-width-strong: 3px;\n  --border-style: inset;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: none;\n  --shadow-control: inset 1px 1px 0 color-mix(in srgb, var(--color-button) 35%, white), inset -1px -1px 0 color-mix(in srgb, var(--color-button) 60%, black);\n  --shadow-control-hover: inset 1px 1px 0 color-mix(in srgb, var(--color-button) 35%, white), inset -1px -1px 0 color-mix(in srgb, var(--color-button) 60%, black);\n  --shadow-control-pressed: inset 1px 1px 0 color-mix(in srgb, var(--color-button) 60%, black), inset -1px -1px 0 color-mix(in srgb, var(--color-button) 35%, white);\n  --shadow-dialog: 2px 2px 0 var(--color-shadow);\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: var(--color-bar);\n  --fill-bar-alt: linear-gradient(90deg, var(--color-bar-alt), color-mix(in srgb, var(--color-bar-alt) 45%, white));\n  --fill-inverse: linear-gradient(90deg, var(--color-inverse), color-mix(in srgb, var(--color-inverse) 55%, white));\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-surface);\n  --fill-button: var(--color-button);\n  --fill-button-hover: var(--color-button);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: linear-gradient(color-mix(in srgb, var(--color-input) 88%, black), var(--color-input) 4px);\n  --focus-ring: 1px dotted var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
