{
  "id": "v1-w9-6121-dc",
  "long_id": "v1.windows-9x.portal.s06.p01.t02.u01.dc",
  "name": "Desktop grey control panel, plum, 1999",
  "era": {
    "slug": "windows-9x",
    "code": "w9",
    "name": "Desktop grey",
    "years": [
      1995,
      2001
    ],
    "description": "Web pages dressed as the desktop of 1995 to 2001: silver-grey windows with a navy title bar, raised and sunken bevels on every button and field, a small pixel-sized sans, and dialogs, tabs and tree lists borrowed from the operating system."
  },
  "archetype": "portal",
  "mode": "mix",
  "viewport": {
    "width": 800,
    "fluid": false
  },
  "density": "compact",
  "summary": "The member centre of an Internet provider laid out as the control panel of a late 1990s desktop: one window with a bar of flat link keys, an information pane at the left that names the page under a coloured rule and offers related links, and at the right a field of large icons with a line of description each, or the property sheet, list view or statement the icon opens. This pack shows it in a plum scheme: pink-grey windows with a wine title bar that fades toward rose, cushioned edges without a black line, softly shaded keys and bars, a dotted mauve desktop and a text serif throughout. Account pages, intranet settings and hosting panels used this web-view form of the desktop from 1997 to 2001.",
  "url": "https://chrono.skin/s/v1-w9-6121-dc",
  "preview_url": "https://chrono.skin/s/v1-w9-6121-dc/specimen.html",
  "files": {
    "STYLE.md": "# Desktop grey control panel, plum, 1999\n\n## Summary\n\nThe member centre of an Internet provider laid out as the control panel of a late 1990s desktop: one window with a bar of flat link keys, an information pane at the left that names the page under a coloured rule and offers related links, and at the right a field of large icons with a line of description each, or the property sheet, list view or statement the icon opens. This pack shows it in a plum scheme: pink-grey windows with a wine title bar that fades toward rose, cushioned edges without a black line, softly shaded keys and bars, a dotted mauve desktop and a text serif throughout. Account pages, intranet settings and hosting panels used this web-view form of the desktop from 1997 to 2001.\n\n## Layout\n\n- Fixed, not fluid: `--size-page` is 768px, one window (`.ds-page__window`, also a `.ds-window`) centred on the desktop of an 800px screen with a `--space-6` margin above and below.\n- The specimen is one example site, the member centre, of four views. `.ds-nav` (title bar and the bar of link keys) and `.ds-footer` (status bar) are written once, inside the window and outside the views; each view is a `.ds-view` and one shows at a time.\n- Every view is `.ds-page__columns`: the information pane `.ds-page__info` (`--size-info`, 196px, a white well) at the left and the working pane at the right, `--space-2` apart and stretched to the same height.\n- Home view: the information pane holds the `.ds-hero` (large icon, title, lead, one line and the default key, closed by a thick rule in the accent colour), the `.ds-sidebar` block of links and a small note pushed to its foot. The working pane is a `.ds-pane` whose well is the `.ds-grid` of twelve applets, three to a row. Under the columns, `--space-4` apart: the `.ds-stat` row of four read-outs and a `.ds-panel` group box with the `.ds-list` of recent activity.\n- Inner pages keep the title bar, the link keys, the status bar and both panes, and drop the icons, the read-outs and the activity list. The information pane opens with the `.ds-breadcrumb` (small links), then the `.ds-page-header` in the hero's place (large icon, title, one line and one key, closed by the same thick rule), then property rows, a group box or a `.ds-sidebar` of tasks. The working pane is `.ds-page__main`, a column `--space-4` apart; tabs come first in it, after any notices, with their `.ds-sheet`.\n- Views: `home` is the control panel. `account` is a property sheet: two notices, five tabs over a sheet with two group boxes (the form, and three radio buttons), and the row of keys. `users` is the list view of users with status labels, a selected row and a total row, the pagination keys beside the key of status labels, then the confirmation dialog beside the empty state of the invitations pane. `billing` is the list view of statements over an explanation of the plan in a well, with the hours meter in the information pane. The link key of the view that is showing stays pressed and bold; the Control Panel key is marked when the address names no view.\n- Fixed sizes: `--size-ctl` 16px caption button and `--size-glyph` 8px glyph; `--size-icon` 32px and `--size-icon-small` 16px icons; `--size-check` 13px check box and radio button; `--size-label` 104px form label column; `--size-field` 200px text field; `--size-dialog` 316px; `--size-button` 75px least key width; `--size-block` 8px progress block.\n- Spacing scale: `--space-0` 1px is the hairline step (tick inset, row padding in trees); `--space-1` 2px the gap between keys and the padding of bars; `--space-2` 4px the padding of keys, the gap between an icon and its word and between panes; `--space-3` 6px cell and field padding and the gap between keys in a row; `--space-4` 8px the gap between blocks inside a window and the padding of group boxes; `--space-5` 12px the padding of sheets and dialogs; `--space-6` 16px the margin of the desktop round the window and the gutter of two-column sheets.\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- Two families and a code face. `--font-body` and `--font-ui` are a wide screen sans (Verdana, then Geneva, Arial), the face of the software company pages among the references; `--font-heading` is Times New Roman, bold for headings and regular (`--weight-display` 400) for the 28px welcome title; `--font-mono` is Lucida Console.\n- Sizes: `--text-base` and `--text-ui` 12px; `--text-small` 11px; `--text-large` 14px; `--text-h3` 14px, `--text-h2` 17px, `--text-h1` 21px; `--text-display` 28px. Line height 1.4 in text, 1.15 in headings and keys. Links in text are underlined; quiet links, labels of desktop icons and titles are not (`--link-decoration-quiet` is `none`).\n- Colour: cream windows (`--color-canvas`) and ivory wells on a slate blue desktop; forest green title bar and selection; headings forest green, second headings and icons rust; links blue with plum visited. Block colours are straw, sage, rose and pale blue. The lesser key (`--color-button-secondary`) is a shade darker than the window.\n- Surface: edges are a dark 1px line with a 2px light edge at the top left and a 2px shadow at the bottom right, 3px in all (`--border-width-strong`). The title bar is flat. The desktop (`--fill-page`) is a 4px checker of the page colour and a darker mix of it, and the inactive title bar (`--fill-inverse`) and the secondary bar (`--fill-bar-alt`: taskbar, toolbars, column heads) a 2px checker, as a 256-colour screen dithered them. A window throws a hard 3px shadow in `--color-shadow` and a dialog a 4px one, with no blur. The focus ring is a 1px dashed line.\n- This layout keeps the conventions the first layout of the era (the file manager) set for which text token sits on which fill and which edge token dresses what. They are repeated here.\n- The era's rule for which text sits on which fill, the same in every layout of the era and to be kept by every token set:\n  - The desktop (`--fill-page` over `--color-page`) is always dark enough to carry `--color-bar-text`. Text written straight on the desktop (icon labels, small print) uses `--color-bar-text`.\n  - The window face is `--color-canvas`; raised parts inside a window (sheets, notes, dialogs) are `--fill-panel`. Both carry `--color-text`, `--color-text-muted`, `--color-heading`, `--color-heading-alt` and the link colours.\n  - A sunken well (list view, tree, document, read-out, empty list) is `--color-surface` and carries the same text and link tokens as the window face, so every palette keeps text and links legible on both. `--color-surface-alt` is the alternate row and the fill of inline code and of a pressed toolbar key; `--color-surface-strong` is a group or total row. They carry `--color-text`.\n  - A title bar is `--fill-bar` with `--color-bar-text`; the title bar of a window without the focus is `--fill-inverse` with `--color-inverse-text`.\n  - Menu bar, toolbar and column heads are `--fill-bar-alt` with `--color-bar-alt-text`.\n  - The selection (current tree row, selected table row, open menu, selected list-box row, progress blocks, the plain badge) is `--fill-accent` with `--color-accent-text`. Links and icons inside a selection inherit that colour.\n  - Keys are `--fill-button` with `--color-button-text` (`--color-button-hover-text` under the pointer); the lesser key is `--fill-button-secondary` with `--color-button-secondary-text`; a disabled key is `--color-disabled` with `--color-disabled-text`. The destructive key is `--fill-button` with a bold label in `--color-danger`.\n  - Fields and the path field are `--fill-input` with `--color-input-text`; links inside the path field use the link tokens, so a palette keeps `--color-input` close to `--color-surface`. `--color-input-border` outlines the check box.\n  - `--color-fill-1` to `--color-fill-4` carry `--color-text` (icons drawn on them) and, in the help layout, `--color-link`.\n  - Notices are `--color-notice` with `--color-notice-text` inside a line of `--color-border-strong`; the error notice is `--color-danger` on `--color-danger-surface`.\n  - Status labels print `--color-success`, `--color-warning` and `--color-danger` as text and frame on `--color-surface`, so each status colour must read on the well colour; none of them is used as a fill under text.\n  - Icons are inline SVG painted with `currentColor`: `--color-heading-alt` by default, the surrounding text colour on keys, title bars, block colours and selections.\n- Edges, the same in every layout of the era. Nothing has a border of its own except thin lines; every raised or sunken edge is a `box-shadow` token drawn inside the box:\n  - `--shadow-panel`: the raised frame of a window. `--shadow-dialog`: the frame of a dialog.\n  - `--shadow-control`: every raised key: buttons, toolbar keys, caption buttons, column heads, tabs and their sheet, pagination keys, the brand tile.\n  - `--shadow-control-pressed`: everything sunken: fields, the path field, wells, read-outs, status cells, the check box, the progress bar, a pressed key, the current pagination key. Note that fields take the pressed token, not `--shadow-control`.\n  - `--border-width-strong` is the thickness of those edges: padding that must clear an edge is written `calc(var(--border-width-strong) + var(--space-N))`.\n  - `--border-width`, `--border-style` and `--color-border` draw the thin lines: group boxes, the etched rule (`--color-border` over `--color-border-muted`), toolbar separators, table row lines (`--color-surface-alt`), the frame of notices, badges and the default button (`--color-border-strong`).\n  - `--color-border`, `--color-border-strong` and `--color-border-muted` are the three shades the edge tokens are built from: the mid shadow, the darkest outer line and the light edge. A palette sets them as a bevel set for its window face.\n- Not expressible by a token and written literally in `components.css`: the `dotted` guide lines of the tree (and of topic lists), the `solid` strokes of the caption-button glyphs, and `clip-path` on the current tab, which cuts off its lower edge so that it joins the sheet.\n- All radii are 0 and are still applied through `--radius-control`, `--radius-panel`, `--radius-pill` and `--radius-page`. `--shadow-text` is applied to title bars and buttons. `--transition` is `none`; `--backdrop-blur` is `0px` and nothing is translucent.\n\nSpacing is compact: every `--space-*` token of the layout was multiplied by 0.8. Where the Layout section names a spacing in pixels, the tokens are right.\n\n## Components\n\n- `.ds-page`: on `<body>`; the desktop. `.ds-page__window` is the one window at `--size-page`; `.ds-page__body` stacks the blocks of a view; `.ds-page__columns` is the information pane beside the working pane; `.ds-page__info` is the information pane, a white well; `.ds-page__main` is the working column of an inner page.\n- `.ds-nav`: the chrome of the window, written once: the title bar (a `.ds-window__title` holding the `.ds-brand`, the caption and the caption buttons) and `.ds-nav__links`, one bar on `--fill-bar-alt` that starts with `.ds-nav__grip`, a thin raised strip. A `.ds-nav__link` is a flat key, a small icon and a word, that rises under the pointer (`is-hover`); the key of the current view (`is-current`, or one selector per view) stays pressed on `--color-surface-alt` and is bold. `.ds-nav__fill` pushes Help and Sign Out to the right.\n- `.ds-brand`: the site's mark and name at the left of the title bar. `.ds-brand__mark` is the window's icon: a small tile dressed like the default button (`--fill-button`, `--color-button-text`, a line of `--color-border-strong`, `--radius-control`, `--shadow-control`) holding the mark as inline SVG with a 3 unit stroke and square caps. `.ds-brand__name` is the name in `--font-heading` at `--text-ui`, in the bar's text colour. The name `chronoskin` and its mark are placeholders for the installing project's own name and logo.\n- `.ds-hero`: the head of the information pane on the home page, the era's page introduction: a large icon, `.ds-hero__title` at `--text-display` in `--color-heading-alt`, `.ds-hero__lead` at `--text-large`, a muted `.ds-hero__text` line and `.ds-hero__action` with the default key, closed by a rule `--border-width-strong` thick in `--color-accent`.\n- `.ds-page-header`: the same head on an inner page: a large icon, `.ds-page-header__text` with `.ds-page-header__title` (`--text-h1`) and `.ds-page-header__lead`, and `.ds-page-header__action` with one secondary key, closed by the same rule.\n- `.ds-breadcrumb`: the path, small links at `--text-small` at the top of the information pane with a `>` between the `.ds-breadcrumb__item`s; the last is `is-current`, bold and in `--color-text`.\n- `.ds-sidebar`: a block of links in the information pane: `.ds-sidebar__title` in bold `--color-heading-alt` and a `.ds-sidebar__list` of `.ds-sidebar__item`s, each a small icon and a `.ds-link`. `.ds-sidebar__note` is a small muted line pushed to the foot of the pane.\n- `.ds-grid`: the applets: a white well of three columns. Each `.ds-grid__cell` is a link: a `.ds-grid__icon` tile (a 32px icon in `--color-text` on one of the four block colours: `--2`, `--3`, `--4` on the cell) beside `.ds-grid__body` with an underlined `.ds-grid__title` in `--color-link` and a small muted `.ds-grid__text`.\n- `.ds-pane` with `.ds-pane__title`: a raised caption strip, like a column head, over a well.\n- `.ds-list`: rows on the window face: a small icon, `.ds-list__text` (a link and one line) and a right-aligned `.ds-list__meta`. `.ds-list__item` is the row.\n- `.ds-panel`: a group box, the same thing as `.ds-group`: a `<fieldset>` with its `.ds-panel__title` legend cut into the frame and a `.ds-panel__body`.\n- `.ds-footer`: the status bar of the window, a `.ds-status` row: one wide cell with the site line and quiet links, then short cells.\n- `.ds-window`: the raised frame of a window (`--fill-panel`, `--shadow-panel`). `.ds-window__title` is the title bar (`--fill-bar`, bold `--font-ui` in `--color-bar-text`), `.ds-window__title--inactive` the bar of a window without the focus, `.ds-window__caption` the title text, `.ds-window__controls` the group of caption buttons. `.ds-window__ctl` is one caption button, a small raised square with its glyph drawn in CSS: `--min`, `--max`, `--close`. `.ds-window__body` pads plain content.\n- `.ds-view`: one screen of the example site; only the one named in the address shows, and `.ds-view--home` when none is named. No box of its own.\n- `.ds-prose`: running text: styles `h1`, `h2`, `h3`, `p`, `ul`, `ol`, `li`, `strong` and `code`; `.ds-prose__lead` is the lead line at `--text-large`. Used inside a well.\n- `.ds-link`: every link in text, underlined. States `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` (`--color-link-quiet`, `--link-decoration-quiet`) for tool and footer links, `.ds-link--strong` for a bold link. `.ds-links` wraps a line of links.\n- `.ds-button`: a raised key at least `--size-button` wide, on a `<button>` or on a link that leads to another view. The plain class is the default button of its window: one more line of `--color-border-strong` round the key. `.ds-button--secondary` is every other key, `.ds-button--danger` the destructive one (bold `--color-danger` label, never a red key), `.ds-button--large` a bigger one. States `is-hover`, `is-pressed` (the edge turns inward), `is-focus` (ring inside the key), `is-disabled` or `disabled`. `.ds-buttons` lays out a row; a `.ds-find__fill` spacer pushes the confirming keys to the right.\n- `.ds-form`: two columns, `.ds-form__label` at the left (`--size-label`) and `.ds-form__field` at the right. Controls: `.ds-form__input` (`--short`, `--wide`), `.ds-form__select`, `.ds-form__textarea`, `.ds-form__check` inside a `.ds-form__option` label, `.ds-form__radio` (the round field with a dot) the same way. All are sunken fields. `.ds-form__hint` is a small muted line under a field, `.ds-form__error` a bold line in `--color-danger` under it (the field itself does not change), `.ds-form__actions` a right-aligned row of keys.\n- `.ds-table`: a list view: a sunken well of `--color-surface` whose column heads (`.ds-table__head`, `--num` for a right-aligned one) are raised keys. Rows are `.ds-table__row`; `.ds-table__row--alt` tints a row, `is-selected` puts it in the selection colours. `.ds-table__cell`, with `--num` for figures and `--group` for a total or group row. `.ds-table__caption` is the small line under the well.\n- `.ds-stat`: the row of summary figures; each `.ds-stat__item` is a sunken read-out with a `.ds-stat__value` (`--text-h1`, `--color-heading-alt`) over a `.ds-stat__label` (`--text-small`, muted). Three or four in a row, never large numerals or cards.\n- `.ds-tabs`: a property sheet. `.ds-tabs__item` holds a `.ds-tabs__tab`, a raised key whose lower edge slides under the sheet; the current tab (`is-current`) is taller, bold and joined to the sheet. `.ds-sheet` is the raised sheet under the tabs and always follows them.\n- `.ds-badge`: a small bold label in the selection colours with a dark line round it. `.ds-badge--count` is a plain muted count. Status: `.ds-badge--success`, `.ds-badge--warning`, `.ds-badge--danger`, the status colour as text and frame on the well colour. `.ds-badges` lays out a row of them.\n- `.ds-notice`: the pale tip box inside a dark line; `.ds-notice__label` is the bold lead word. `.ds-notice--error` is the error form. `.ds-notices` stacks several.\n- `.ds-pagination`: a row of small raised keys: `.ds-pagination__label`, then `.ds-pagination__link` for previous, the page numbers and next; `is-current` is pressed and bold, `is-disabled` greyed.\n- `.ds-dialog`: a small window `--size-dialog` wide, shown in the page flow where it would open. `.ds-dialog__title` is its title bar (with a `.ds-window__ctl--close`), `.ds-dialog__content` holds a large icon and the `.ds-dialog__body` message, `.ds-dialog__actions` centres the keys. No backdrop.\n- `.ds-empty`: an empty well with `.ds-empty__title`, `.ds-empty__text` and one secondary key.\n- `.ds-icon`: a 16px inline SVG pixel icon; `.ds-icon--large` is 32px, `.ds-icon--plain` takes the surrounding text colour.\n- `.ds-well`: a sunken field of `--color-surface` for a document or a list. `.ds-rule`: the etched line. `.ds-group` with `.ds-group__title`: a group box, a `<fieldset>` whose `<legend>` is cut into the thin frame. `.ds-props` with `.ds-props__label` and `.ds-props__value`: rows of a property page. `.ds-progress` with `.ds-progress__block` (`--empty` for the rest): a progress bar made of blocks.\n- `.ds-tree`: the tree list: `.ds-tree__item` rows, `.ds-tree__link` (icon and name, not underlined, `is-current` in the selection colours), nested `.ds-tree__list` joined by a dotted guide line.\n- `.ds-status` is a row of sunken `.ds-status__cell`s (`--wide` takes the free width).\n- `.ds-heading`: a section title at `--text-h2`. `.ds-split`: two equal columns. `.ds-stack`: a column of blocks `--space-4` apart (`.ds-stack--tight` `--space-2` apart, for radio buttons and check boxes). `.ds-find`: a row of labels, fields and a key.\n- `.ds-menu`: a pull-down under a menu-bar entry: an `<li class=\"ds-menu\">` holding a `<details>` whose `<summary class=\"ds-nav__link\">` is the entry and whose `.ds-menu__list` of `.ds-menu__item` links opens on a click, in the selection colours while open. `.ds-menu--up` opens it upward, from a task bar.\n- `.ds-avatar`: the user icon beside the signed-in name: a small raised tile holding one initial.\n\n## Never\n\n- `row-gap <= 8px`: rows of lists and list views touch or sit 1px to 4px apart.\n- `block-gap <= 16px`: blocks inside the window are 8px apart, never more than 16px.\n- `content-width <= 768px`: everything is inside the one 768px window.\n- `font-size >= 11px`: small print is 11px, nothing smaller.\n- `font-size <= 28px`: the welcome title is the largest text.\n- `font-weight >= 400`: only regular and bold.\n- `font-families <= 3`: a sans, a serif for headings and a monospace face.\n- `letter-spacing = 0`: no tracking.\n- `uppercase-text <= 0%`: no text-transform.\n- `border-radius <= 0px`: the desktop had no rounded corner.\n- `box-shadow-blur <= 0px`: every shadow is a hard 1px or 2px bevel line; nothing is blurred.\n- `text-shadow = none`: no text shadow anywhere.\n- `gradient-fills <= 3%`: the title bars are the only gradient.\n- `border-width <= 2px`: thin lines are 1px; the widest stroke is the 2px top of a caption glyph.\n- `transition = none`: nothing eases on hover.\n- `animation = none`: no CSS animation.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. Anything that holds content is a `.ds-window` with a title bar or a `.ds-group` with its caption; anything that lists is a `.ds-table`, a `.ds-tree` or a list in a `.ds-well`; anything pressed or typed into takes `--shadow-control-pressed`, anything pushed takes `--shadow-control`. Clear every edge with `calc(var(--border-width-strong) + ...)` padding, keep text at `--text-base` or `--text-ui`, and never add a radius, a blurred shadow, a gradient outside `--fill-*` tokens, a hover animation or a colour of your own.\n",
    "components.css": "/* Layout tokens (structure part). A member centre laid out as a control\n   panel, 768px wide on an 800px screen: a bar of flat link keys, an\n   information pane at the left and the icons or the working page at the right. */\n:root {\n  --size-page: 768px;\n  --size-info: 196px;\n  --size-ctl: 16px;\n  --size-glyph: 8px;\n  --size-icon: 32px;\n  --size-icon-small: 16px;\n  --size-check: 13px;\n  --size-label: 104px;\n  --size-field: 200px;\n  --size-dialog: 316px;\n  --size-button: 75px;\n  --size-block: 8px;\n  --space-0: 1px;\n  --space-1: 2px;\n  --space-2: 3px;\n  --space-3: 5px;\n  --space-4: 6px;\n  --space-5: 10px;\n  --space-6: 13px;\n}\n\n/* ---------- shell: the desktop and the control panel window ---------- */\n.ds-page {\n  margin: 0;\n  padding: var(--space-6) 0;\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n.ds-page__window {\n  width: var(--size-page);\n  margin: 0 auto;\n  background: var(--color-canvas);\n  border-radius: var(--radius-page);\n}\n.ds-page__body {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  padding: var(--space-1) 0 var(--space-4);\n}\n/* The information pane and the working pane, the same height. */\n.ds-page__columns {\n  display: grid;\n  grid-template-columns: var(--size-info) minmax(0, 1fr);\n  gap: var(--space-2);\n  align-items: stretch;\n}\n/* The information pane: a well that says where you are and what you can do. */\n.ds-page__info {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  box-sizing: border-box;\n  min-width: 0;\n  padding: calc(var(--border-width-strong) + var(--space-4));\n  background: var(--color-surface);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-page__main {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n}\n.ds-split {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n  gap: var(--space-5);\n  align-items: start;\n}\n.ds-stack {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n}\n.ds-stack--tight {\n  gap: var(--space-2);\n}\n.ds-heading {\n  margin: 0 0 var(--space-2);\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\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/* ---------- window: a raised frame with a title bar ---------- */\n.ds-window {\n  box-sizing: border-box;\n  min-width: 0;\n  padding: calc(var(--border-width-strong) + var(--space-1));\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-window__title {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  padding: var(--space-1) var(--space-1) var(--space-1) var(--space-2);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  text-shadow: var(--shadow-text);\n}\n/* A window that does not have the focus. */\n.ds-window__title--inactive {\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n}\n.ds-window__caption {\n  flex: 1;\n  min-width: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.ds-window__controls {\n  display: flex;\n  flex: none;\n  gap: var(--space-1);\n}\n/* Caption buttons: small raised squares, the glyph drawn in CSS. */\n.ds-window__ctl {\n  position: relative;\n  box-sizing: border-box;\n  width: var(--size-ctl);\n  height: calc(var(--size-ctl) - var(--space-1));\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n}\n.ds-window__ctl::before,\n.ds-window__ctl::after {\n  content: \"\";\n  position: absolute;\n  box-sizing: border-box;\n}\n.ds-window__ctl--min::before {\n  left: var(--space-2);\n  bottom: calc(var(--space-1) + var(--space-0));\n  width: calc(var(--size-glyph) - var(--space-1));\n  height: var(--space-1);\n  background: currentColor;\n}\n.ds-window__ctl--max::before {\n  left: calc(50% - var(--size-glyph) / 2);\n  top: calc(50% - var(--size-glyph) / 2);\n  width: var(--size-glyph);\n  height: var(--size-glyph);\n  border: var(--space-0) solid currentColor;\n  border-top-width: var(--space-1);\n}\n.ds-window__ctl--close::before,\n.ds-window__ctl--close::after {\n  left: calc(50% - var(--size-glyph) / 2 - var(--space-0));\n  top: calc(50% - var(--space-0));\n  width: calc(var(--size-glyph) + var(--space-1));\n  height: var(--space-1);\n  background: currentColor;\n  transform: rotate(45deg);\n}\n.ds-window__ctl--close::after {\n  transform: rotate(-45deg);\n}\n.ds-window__body {\n  padding: var(--space-4);\n}\n/* ---------- small things used everywhere ---------- */\n/* Etched line: a dark rule over a light one. */\n.ds-rule {\n  height: 0;\n  margin: var(--space-4) 0;\n  border: 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n/* Pixel icon: inline SVG painted with the text colour of its place. */\n.ds-icon {\n  display: inline-block;\n  flex: none;\n  width: var(--size-icon-small);\n  height: var(--size-icon-small);\n  vertical-align: text-bottom;\n  color: var(--color-heading-alt);\n}\n.ds-icon svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-icon--large {\n  width: var(--size-icon);\n  height: var(--size-icon);\n}\n.ds-icon--plain {\n  color: inherit;\n}\n/* Sunken well: the white field that holds lists, trees and documents. */\n.ds-well {\n  box-sizing: border-box;\n  min-width: 0;\n  padding: calc(var(--border-width-strong) + var(--space-3));\n  background: var(--color-surface);\n  color: var(--color-text);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-control-pressed);\n}\n/* Progress bar made of blocks. */\n.ds-progress {\n  display: inline-flex;\n  gap: var(--space-1);\n  box-sizing: border-box;\n  padding: calc(var(--border-width-strong) + var(--space-0));\n  background: var(--color-surface);\n  box-shadow: var(--shadow-control-pressed);\n  vertical-align: middle;\n}\n.ds-progress__block {\n  width: var(--size-block);\n  height: calc(var(--size-block) + var(--space-2));\n  background: var(--fill-accent);\n}\n.ds-progress__block--empty {\n  background: transparent;\n}\n/* Status bar: sunken cells. */\n.ds-status {\n  display: flex;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-status__cell {\n  padding: calc(var(--border-width-strong) + var(--space-0)) var(--space-3);\n  box-shadow: var(--shadow-control-pressed);\n  white-space: nowrap;\n}\n.ds-status__cell--wide {\n  flex: 1;\n  min-width: 0;\n  white-space: normal;\n}\n/* Group box: a thin frame with its caption cut into the top edge. */\n.ds-group {\n  box-sizing: border-box;\n  min-width: 0;\n  margin: 0;\n  padding: var(--space-2) var(--space-4) var(--space-4);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n}\n.ds-group__title {\n  padding: 0 var(--space-2);\n  color: var(--color-heading-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n}\n/* Property rows: a label column and a value column. */\n.ds-props {\n  display: grid;\n  grid-template-columns: max-content minmax(0, 1fr);\n  column-gap: var(--space-5);\n  row-gap: var(--space-2);\n  align-items: center;\n  margin: 0;\n}\n.ds-props__label {\n  color: var(--color-text-muted);\n}\n.ds-props__value {\n  margin: 0;\n}\n/* Tree list: nested rows joined by dotted guide lines. */\n.ds-tree {\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-tree__list {\n  margin: 0 0 0 calc(var(--size-icon-small) / 2);\n  padding: 0 0 0 var(--space-4);\n  list-style: none;\n  border-left: var(--border-width) dotted var(--color-border);\n}\n.ds-tree__item {\n  padding: var(--space-0) 0;\n}\n.ds-tree__link {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: 0 var(--space-1);\n  color: var(--color-text);\n  text-decoration: none;\n}\n.ds-tree__link:hover,\n.ds-tree__link.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-tree__link.is-current {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n.ds-tree__link.is-current .ds-icon {\n  color: inherit;\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  text-decoration: var(--link-decoration-quiet);\n}\n.ds-link--strong {\n  font-weight: var(--weight-bold);\n}\n.ds-links {\n  margin: 0;\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-5) 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-prose h1 {\n  margin-top: 0;\n  font-size: var(--text-h1);\n}\n.ds-prose h2 {\n  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 calc(var(--space-6) + var(--space-4));\n}\n.ds-prose li {\n  padding: 0 0 var(--space-1);\n}\n.ds-prose strong {\n  font-weight: var(--weight-bold);\n}\n.ds-prose code {\n  padding: 0 var(--space-1);\n  background: var(--color-surface-alt);\n  font-family: var(--font-mono);\n  font-size: var(--text-base);\n}\n.ds-prose__lead {\n  font-size: var(--text-large);\n}\n/* ---------- buttons ---------- */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n/* The primary button is the default button of a dialog: the same raised key\n   as every other, inside one more dark line. */\n.ds-button {\n  display: inline-block;\n  box-sizing: border-box;\n  min-width: var(--size-button);\n  margin: 0;\n  padding: var(--space-2) var(--space-5);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width) 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-heading);\n  text-align: center;\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  white-space: nowrap;\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  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n  outline-offset: calc(var(--space-2) * -1);\n}\n.ds-button--secondary,\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--fill-button-secondary);\n  background-clip: padding-box;\n  color: var(--color-button-secondary-text);\n  border-color: transparent;\n}\n.ds-button--large {\n  padding: var(--space-3) var(--space-6);\n  font-size: var(--text-large);\n}\n/* Destructive action: the same key, the label in the bold danger colour. */\n.ds-button--danger,\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: var(--fill-button);\n  background-clip: padding-box;\n  color: var(--color-danger);\n  border-color: transparent;\n  font-weight: var(--weight-bold);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  background-clip: padding-box;\n  color: var(--color-disabled-text);\n  border-color: transparent;\n}\n/* ---------- form ---------- */\n.ds-form {\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  column-gap: var(--space-4);\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  color: var(--color-text);\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  max-width: 100%;\n  margin: 0;\n  padding: calc(var(--border-width-strong) + var(--space-1)) calc(var(--border-width-strong) + var(--space-2));\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: 0;\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control-pressed);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-body);\n  line-height: var(--line-heading);\n  transition: var(--transition);\n}\n.ds-form__input {\n  width: var(--size-field);\n}\n.ds-form__input--short {\n  width: calc(var(--size-field) / 3);\n}\n.ds-form__textarea {\n  display: block;\n  width: 100%;\n  resize: none;\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  outline-offset: calc(var(--border-width-strong) * -1 - var(--space-0));\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__option {\n  display: inline-flex;\n  align-items: center;\n  margin: 0 var(--space-5) 0 0;\n}\n.ds-form__check {\n  appearance: none;\n  box-sizing: border-box;\n  flex: none;\n  width: var(--size-check);\n  height: var(--size-check);\n  margin: 0 var(--space-3) 0 0;\n  padding: calc(var(--border-width-strong) + var(--space-0));\n  background: var(--fill-input);\n  border: 0;\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control-pressed);\n  outline: var(--border-width) var(--border-style) var(--color-input-border);\n  outline-offset: calc(var(--border-width) * -1);\n}\n/* The tick is a block of the field's text colour inside the field's fill. */\n.ds-form__check:checked::before,\n.ds-form__check.is-checked::before {\n  content: \"\";\n  display: block;\n  width: 100%;\n  height: 100%;\n  background: var(--color-input-text);\n}\n.ds-form__hint {\n  display: block;\n  padding: var(--space-1) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-form__error {\n  display: block;\n  padding: var(--space-1) 0 0;\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-form__actions {\n  grid-column: 1 / -1;\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-end;\n  gap: var(--space-3);\n  padding: var(--space-2) 0 0;\n}\n/* ---------- table: a list view in a sunken well, raised column heads ---------- */\n.ds-table {\n  box-sizing: border-box;\n  width: 100%;\n  padding: var(--border-width-strong);\n  border-collapse: separate;\n  border-spacing: 0;\n  background: var(--color-surface);\n  color: var(--color-text);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-control-pressed);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-table__head {\n  padding: calc(var(--border-width-strong) + var(--space-0)) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\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  text-align: left;\n  white-space: nowrap;\n}\n.ds-table__head--num {\n  text-align: right;\n}\n.ds-table__cell {\n  padding: var(--space-1) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) var(--color-surface-alt);\n  text-align: left;\n  vertical-align: baseline;\n}\n.ds-table__cell--num {\n  text-align: right;\n  white-space: nowrap;\n}\n.ds-table__cell--group {\n  background: var(--color-surface-strong);\n  font-weight: var(--weight-bold);\n}\n.ds-table__row--alt .ds-table__cell {\n  background: var(--color-surface-alt);\n}\n/* The selected row of a list view. */\n.ds-table__row.is-selected .ds-table__cell {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n.ds-table__row.is-selected .ds-link,\n.ds-table__row.is-selected .ds-icon {\n  color: inherit;\n}\n.ds-table__caption {\n  caption-side: bottom;\n  padding: var(--space-2) 0 0;\n  color: var(--color-text);\n  font-size: var(--text-small);\n  text-align: left;\n}\n/* ---------- stats: sunken read-outs ---------- */\n.ds-stat {\n  display: flex;\n  gap: var(--space-2);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-stat__item {\n  flex: 1;\n  min-width: 0;\n  padding: calc(var(--border-width-strong) + var(--space-1)) calc(var(--border-width-strong) + var(--space-3));\n  background: var(--color-surface);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-stat__value {\n  display: block;\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-stat__label {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n/* ---------- tabs: a property sheet ---------- */\n.ds-tabs {\n  display: flex;\n  align-items: flex-end;\n  margin: 0;\n  padding: 0 var(--space-1);\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-tabs__item {\n  display: flex;\n  align-items: flex-end;\n}\n/* A tab is a raised key whose lower edge slides under the sheet. */\n.ds-tabs__tab {\n  display: block;\n  margin: 0 0 calc(var(--border-width-strong) * -1);\n  padding: var(--space-2) var(--space-4) calc(var(--space-2) + var(--border-width-strong));\n  background: var(--fill-panel);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control);\n  line-height: var(--line-heading);\n  text-decoration: none;\n  white-space: nowrap;\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link-hover);\n}\n/* The current tab is taller, stands in front of the sheet and loses its own\n   lower edge, so it reads as one piece with the sheet. */\n.ds-tabs__tab.is-current {\n  position: relative;\n  z-index: 1;\n  margin: 0 0 calc(var(--border-width-strong) * -2);\n  padding: var(--space-3) var(--space-4) calc(var(--space-2) + var(--border-width-strong) * 2);\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  clip-path: inset(0 0 var(--border-width-strong) 0);\n}\n.ds-sheet {\n  box-sizing: border-box;\n  min-width: 0;\n  padding: calc(var(--border-width-strong) + var(--space-5));\n  background: var(--fill-panel);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control);\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: var(--border-width) var(--border-style) var(--color-border-strong);\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  white-space: nowrap;\n}\n.ds-badge--count {\n  padding: 0;\n  background: transparent;\n  color: var(--color-text-muted);\n  border-color: transparent;\n  font-weight: var(--weight-body);\n}\n/* Status labels: the status colour as text and frame on the well colour. */\n.ds-badge--success,\n.ds-badge--warning,\n.ds-badge--danger {\n  background: var(--color-surface);\n  border-color: currentColor;\n}\n.ds-badge--success {\n  color: var(--color-success);\n}\n.ds-badge--warning {\n  color: var(--color-warning);\n}\n.ds-badge--danger {\n  color: var(--color-danger);\n}\n.ds-badges {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n}\n/* ---------- notice: the pale tip box with a dark line round it ---------- */\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-strong);\n  border-radius: var(--radius-panel);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\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/* ---------- pagination: a row of small keys ---------- */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-pagination__label {\n  padding: 0 var(--space-3) 0 0;\n}\n.ds-pagination__link {\n  display: block;\n  padding: calc(var(--border-width-strong) + var(--space-0)) calc(var(--border-width-strong) + var(--space-3));\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  box-shadow: var(--shadow-control);\n  line-height: var(--line-heading);\n  text-decoration: none;\n  cursor: default;\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-button-hover-text);\n}\n.ds-pagination__link.is-current {\n  box-shadow: var(--shadow-control-pressed);\n  font-weight: var(--weight-bold);\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-disabled-text);\n}\n/* ---------- dialog: a small window with an icon, a message and keys ---------- */\n.ds-dialog {\n  position: static;\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  max-width: 100%;\n  margin: var(--space-5) auto var(--space-2);\n  padding: calc(var(--border-width-strong) + var(--space-1));\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-dialog__title {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-2);\n  margin: 0;\n  padding: var(--space-1) var(--space-1) var(--space-1) var(--space-2);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  text-shadow: var(--shadow-text);\n}\n.ds-dialog__content {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-5);\n  padding: var(--space-5);\n}\n.ds-dialog__body {\n  flex: 1;\n  min-width: 0;\n  margin: 0;\n}\n.ds-dialog__actions {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-3);\n  padding: 0 var(--space-5) var(--space-5);\n}\n/* ---------- empty state: a message in an empty well ---------- */\n.ds-empty {\n  padding: var(--space-6) var(--space-5);\n  background: var(--color-surface);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control-pressed);\n  text-align: center;\n  font-size: var(--text-base);\n}\n.ds-empty__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-4);\n  color: var(--color-text-muted);\n}\n\n/* ---------- nav: the title bar and one bar of flat link keys ---------- */\n.ds-nav {\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-brand {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-2);\n  color: inherit;\n  text-decoration: none;\n}\n/* The mark is the window's icon: a small key dressed like the default button. */\n.ds-brand__mark {\n  display: flex;\n  flex: none;\n  box-sizing: border-box;\n  width: calc(var(--size-ctl) + var(--space-2));\n  height: calc(var(--size-ctl) + var(--space-2));\n  padding: var(--border-width-strong);\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: 100%;\n  height: 100%;\n}\n.ds-brand__name {\n  font-family: var(--font-heading);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-nav__links {\n  display: flex;\n  align-items: stretch;\n  gap: var(--space-1);\n  margin: 0;\n  padding: var(--space-1);\n  list-style: none;\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n/* The grip at the left end of the bar: a thin raised strip. */\n.ds-nav__grip {\n  flex: none;\n  width: calc(var(--border-width-strong) + var(--space-0));\n  margin: 0 var(--space-1) 0 0;\n  box-shadow: var(--shadow-control);\n}\n.ds-nav__fill {\n  flex: 1;\n}\n/* A link key is flat until the pointer is over it. */\n.ds-nav__link {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: calc(var(--border-width-strong) + var(--space-1)) var(--space-4);\n  color: var(--color-bar-alt-text);\n  line-height: var(--line-heading);\n  text-decoration: none;\n  text-transform: var(--ui-transform);\n  white-space: nowrap;\n}\n.ds-nav__link .ds-icon {\n  color: inherit;\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  box-shadow: var(--shadow-control);\n}\n/* The key of the page that is showing stays pressed. */\n.ds-nav__link.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#home\"],\n.ds-page:has(#home:target) .ds-nav__link[href=\"#home\"],\n.ds-page:has(#account:target) .ds-nav__link[href=\"#account\"],\n.ds-page:has(#users:target) .ds-nav__link[href=\"#users\"],\n.ds-page:has(#billing:target) .ds-nav__link[href=\"#billing\"] {\n  background: var(--color-surface-alt);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control-pressed);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- hero: the head of the information pane on the home page ---------- */\n.ds-hero,\n.ds-page-header {\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  gap: var(--space-3);\n  padding: 0 0 var(--space-5);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-accent);\n}\n.ds-hero__title {\n  margin: 0;\n  color: var(--color-heading-alt);\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-hero__lead {\n  margin: 0;\n  font-size: var(--text-large);\n  line-height: var(--line-heading);\n}\n.ds-hero__text {\n  margin: 0;\n  color: var(--color-text-muted);\n}\n.ds-hero__action {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  padding: var(--space-1) 0 0;\n}\n\n/* ---------- breadcrumb: the path, small links at the top of the information pane ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  line-height: var(--line-heading);\n}\n.ds-breadcrumb__item + .ds-breadcrumb__item::before {\n  content: \"\\003E\";\n  padding: 0 var(--space-2);\n}\n.ds-breadcrumb__item.is-current {\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- page header: the head of the information pane on an inner page ---------- */\n.ds-page-header__text {\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: var(--space-2) 0 0;\n}\n.ds-page-header__action {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n}\n\n/* ---------- sidebar: a block of links in the information pane ---------- */\n.ds-sidebar {\n  min-width: 0;\n}\n.ds-sidebar__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n.ds-sidebar__list {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-2);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-sidebar__item {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-3);\n}\n.ds-sidebar__note {\n  margin: auto 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* ---------- panes: a raised caption strip over a well ---------- */\n.ds-pane {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n}\n.ds-pane__title {\n  margin: 0;\n  padding: calc(var(--border-width-strong) + var(--space-0)) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\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}\n\n/* ---------- grid: the applets of the control panel, three to a row ---------- */\n.ds-grid {\n  display: grid;\n  flex: 1;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  align-content: start;\n  gap: var(--space-5) var(--space-4);\n  padding: calc(var(--border-width-strong) + var(--space-5)) calc(var(--border-width-strong) + var(--space-4));\n  background: var(--color-surface);\n  color: var(--color-text);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-grid__cell {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-4);\n  min-width: 0;\n  color: var(--color-text);\n  text-decoration: none;\n}\n/* The icon stands on a small tile of one of the four block colours. */\n.ds-grid__icon {\n  display: flex;\n  flex: none;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  width: calc(var(--size-icon) + var(--space-4));\n  height: calc(var(--size-icon) + var(--space-4));\n  background: var(--color-fill-1);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n}\n.ds-grid__cell--2 .ds-grid__icon {\n  background: var(--color-fill-2);\n}\n.ds-grid__cell--3 .ds-grid__icon {\n  background: var(--color-fill-3);\n}\n.ds-grid__cell--4 .ds-grid__icon {\n  background: var(--color-fill-4);\n}\n.ds-grid__body {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n}\n.ds-grid__title {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration);\n}\n.ds-grid__text {\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* ---------- list: rows with a small icon, a line of text and a date ---------- */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-list__item {\n  display: flex;\n  align-items: baseline;\n  gap: var(--space-3);\n  padding: var(--space-1) 0;\n}\n.ds-list__item .ds-icon {\n  align-self: center;\n}\n.ds-list__text {\n  flex: 1;\n  min-width: 0;\n}\n.ds-list__meta {\n  flex: none;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  white-space: nowrap;\n}\n\n/* ---------- panel: a group box ---------- */\n.ds-panel {\n  box-sizing: border-box;\n  min-width: 0;\n  margin: 0;\n  padding: var(--space-2) var(--space-4) var(--space-4);\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-panel__title {\n  padding: 0 var(--space-2);\n  color: var(--color-heading-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n}\n.ds-panel__body {\n  margin: 0;\n}\n\n/* ---------- search row ---------- */\n.ds-find {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-find__fill {\n  flex: 1;\n}\n\n/* ---------- radio button: the round sunken field ---------- */\n.ds-form__radio {\n  appearance: none;\n  box-sizing: border-box;\n  flex: none;\n  width: var(--size-check);\n  height: var(--size-check);\n  margin: 0 var(--space-3) 0 0;\n  padding: calc(var(--border-width-strong) + var(--space-0));\n  background: var(--fill-input);\n  border: 0;\n  border-radius: 50%;\n  box-shadow: var(--shadow-control-pressed);\n  outline: var(--border-width) var(--border-style) var(--color-input-border);\n  outline-offset: calc(var(--border-width) * -1);\n}\n.ds-form__radio:checked::before,\n.ds-form__radio.is-checked::before {\n  content: \"\";\n  display: block;\n  width: 100%;\n  height: 100%;\n  background: var(--color-input-text);\n  border-radius: 50%;\n}\n\n/* ---------- footer: the status bar of the window ---------- */\n.ds-footer {\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n\n/* ---------- menu: a pull-down under a menu-bar entry (details), opened by a click ---------- */\n.ds-menu {\n  position: relative;\n}\n.ds-menu summary {\n  list-style: none;\n  cursor: default;\n}\n.ds-menu summary::-webkit-details-marker {\n  display: none;\n}\n.ds-menu details[open] > summary {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n.ds-menu__list {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 30;\n  box-sizing: border-box;\n  min-width: 100%;\n  margin: 0;\n  padding: var(--space-1);\n  list-style: none;\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-dialog);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  text-transform: none;\n  white-space: nowrap;\n}\n/* A menu at the right end of a bar opens from its right edge. */\n.ds-menu--end .ds-menu__list {\n  left: auto;\n  right: 0;\n}\n.ds-menu--up .ds-menu__list {\n  top: auto;\n  bottom: 100%;\n}\n.ds-menu__item {\n  display: block;\n  padding: var(--space-1) var(--space-5);\n  color: inherit;\n  text-decoration: none;\n}\n.ds-menu__item:hover,\n.ds-menu__item:focus {\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n\n/* ---------- avatar: the user icon of the signed-in name, a raised tile with an initial ---------- */\n.ds-avatar {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  width: var(--size-ctl);\n  height: var(--size-ctl);\n  margin-right: var(--space-1);\n  background: var(--color-accent);\n  color: var(--color-accent-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  line-height: 1;\n  text-transform: uppercase;\n  vertical-align: middle;\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 Online Member Centre: desktop grey control panel, 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__window ds-window\">\n\n  <header class=\"ds-nav\" data-component=\"nav\">\n    <div class=\"ds-window__title\">\n      <a class=\"ds-brand\" data-component=\"brand\" href=\"#home\">\n        <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><rect x=\"4\" y=\"3\" width=\"16\" height=\"2\"/><rect x=\"6\" y=\"5\" width=\"12\" height=\"2\"/><rect x=\"8\" y=\"7\" width=\"8\" height=\"2\"/><rect x=\"10\" y=\"9\" width=\"4\" height=\"2\"/><rect x=\"11\" y=\"11\" width=\"2\" height=\"2\"/><rect x=\"10\" y=\"13\" width=\"4\" height=\"2\"/><rect x=\"8\" y=\"15\" width=\"8\" height=\"2\"/><rect x=\"6\" y=\"17\" width=\"12\" height=\"2\"/><rect x=\"4\" y=\"19\" width=\"16\" height=\"2\"/></svg></span>\n        <span class=\"ds-brand__name\">chronoskin</span>\n      </a>\n      <span class=\"ds-window__caption\">Online Member Centre</span>\n      <span class=\"ds-window__controls\" aria-hidden=\"true\">\n        <span class=\"ds-window__ctl ds-window__ctl--min\"></span>\n        <span class=\"ds-window__ctl ds-window__ctl--max\"></span>\n        <span class=\"ds-window__ctl ds-window__ctl--close\"></span>\n      </span>\n    </div>\n    <ul class=\"ds-nav__links\">\n      <li class=\"ds-nav__grip\" aria-hidden=\"true\"></li>\n      <li><a class=\"ds-nav__link\" href=\"#home\"><span class=\"ds-icon ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2l7 6h-2v6H9v-4H7v4H3V8H1z\"/></svg></span>Control Panel</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#account\"><span class=\"ds-icon ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2a3 3 0 1 0 0 6a3 3 0 0 0 0-6z M3 14c0-3 2-5 5-5s5 2 5 5z\"/></svg></span>My Account</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#users\"><span class=\"ds-icon ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5.5 3a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z M11 4a2 2 0 1 0 0 4a2 2 0 0 0 0-4z M1 14c0-3 2-5 4.5-5S10 11 10 14z M11 9c2.2 0 4 1.8 4 5h-4c0-2-.6-3.6-1.6-4.6.5-.3 1-.4 1.6-.4z\"/></svg></span>Users</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#billing\"><span class=\"ds-icon ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2 4v2h12V4z M2 8v4h12V8z M3 10h4v1H3z\"/></svg></span>Billing</a></li>\n      <li class=\"ds-nav__fill\"></li>\n      <li class=\"ds-menu ds-menu--end\"><details><summary class=\"ds-nav__link\"><span class=\"ds-icon ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M7 10h2v2H7z M5.4 6a2.6 2.6 0 1 1 4.2 2c-.5.5-.6.7-.6 1.4H7c0-1.2.3-1.7 1-2.3a.8.8 0 1 0-1.3-.6z\"/></svg></span>Help</summary><ul class=\"ds-menu__list\"><li><a class=\"ds-menu__item\" href=\"#account\">Ask the Help Desk</a></li><li><a class=\"ds-menu__item\" href=\"#billing\">Hours Meter</a></li><li><a class=\"ds-menu__item\" href=\"#users\">Family Controls</a></li><li><a class=\"ds-menu__item\" href=\"#home\">Sign Out</a></li></ul></details></li>\n    </ul>\n  </header>\n\n  <section class=\"ds-view ds-view--home\" id=\"home\">\n    <div class=\"ds-page__body\">\n      <div class=\"ds-page__columns\">\n\n        <div class=\"ds-page__info\">\n          <section class=\"ds-hero\" data-component=\"hero\">\n            <span class=\"ds-icon ds-icon--large\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 2h12v9H2z M3 3v7h10V3z M5 12h6v1h2v1H3v-1h2z\"/></svg></span>\n            <h1 class=\"ds-hero__title\">Control Panel</h1>\n            <p class=\"ds-hero__lead\">Everything about your chronoskin Online membership, in one window.</p>\n            <p class=\"ds-hero__text\">Choose an icon to see or change its settings. Signed in as <strong>quartey</strong>.</p>\n            <div class=\"ds-hero__action\">\n              <a class=\"ds-button\" href=\"#account\">My Account</a>\n            </div>\n          </section>\n          <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n            <h2 class=\"ds-sidebar__title\">See also</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5.5 3a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z M11 4a2 2 0 1 0 0 4a2 2 0 0 0 0-4z M1 14c0-3 2-5 4.5-5S10 11 10 14z M11 9c2.2 0 4 1.8 4 5h-4c0-2-.6-3.6-1.6-4.6.5-.3 1-.4 1.6-.4z\"/></svg></span><a class=\"ds-link\" href=\"#users\">Add a family member</a></li>\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2 4v2h12V4z M2 8v4h12V8z M3 10h4v1H3z\"/></svg></span><a class=\"ds-link\" href=\"#billing\">This month's statement</a></li>\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 6h12v6H2z M3 7v4h10V7z M4 8h1v1H4z M6 8h1v1H6z M8 8h1v1H8z M11 8h1v2h-1z M5 3h1v3H5z\"/></svg></span><a class=\"ds-link is-visited\" href=\"#account\">Local access numbers</a></li>\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M7 10h2v2H7z M5.4 6a2.6 2.6 0 1 1 4.2 2c-.5.5-.6.7-.6 1.4H7c0-1.2.3-1.7 1-2.3a.8.8 0 1 0-1.3-.6z\"/></svg></span><a class=\"ds-link\" href=\"#account\">Ask the help desk</a></li>\n            </ul>\n          </aside>\n          <p class=\"ds-sidebar__note\">Last sign-in: Friday 13 March 1998, 21:40, from Dublin.</p>\n        </div>\n\n        <section class=\"ds-pane\">\n          <h2 class=\"ds-pane__title\">12 object(s)</h2>\n          <div class=\"ds-grid\" data-component=\"grid\">\n            <a class=\"ds-grid__cell\" href=\"#account\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2a3 3 0 1 0 0 6a3 3 0 0 0 0-6z M3 14c0-3 2-5 5-5s5 2 5 5z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">My Account</span><span class=\"ds-grid__text\">Name, address and membership plan</span></span></a>\n            <a class=\"ds-grid__cell ds-grid__cell--2\" href=\"#users\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5.5 3a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z M11 4a2 2 0 1 0 0 4a2 2 0 0 0 0-4z M1 14c0-3 2-5 4.5-5S10 11 10 14z M11 9c2.2 0 4 1.8 4 5h-4c0-2-.6-3.6-1.6-4.6.5-.3 1-.4 1.6-.4z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Users</span><span class=\"ds-grid__text\">5 of 8 sign-in names in use</span></span></a>\n            <a class=\"ds-grid__cell ds-grid__cell--3\" href=\"#billing\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2 4v2h12V4z M2 8v4h12V8z M3 10h4v1H3z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Billing</span><span class=\"ds-grid__text\">Statements and how you pay</span></span></a>\n            <a class=\"ds-grid__cell ds-grid__cell--4\" href=\"#users\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2.6 4L8 8.4 13.4 4z M2 5v7h12V5L8 9.8z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Mailboxes</span><span class=\"ds-grid__text\">Addresses, size and forwarding</span></span></a>\n            <a class=\"ds-grid__cell ds-grid__cell--3\" href=\"#account\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M8 2.2a5.8 5.8 0 0 1 2 .4L9 5H6L5 3.2A5.8 5.8 0 0 1 8 2.2z M2.3 7l2.2-.6L7 8l-1 3 1.5 2.7A5.8 5.8 0 0 1 2.3 7z M13.7 7.5a5.8 5.8 0 0 1-3 5.5L10 10l1.2-2.5z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Web Space</span><span class=\"ds-grid__text\">2.4 of 5 MB used by your pages</span></span></a>\n            <a class=\"ds-grid__cell ds-grid__cell--4\" href=\"#account\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 6h12v6H2z M3 7v4h10V7z M4 8h1v1H4z M6 8h1v1H6z M8 8h1v1H8z M11 8h1v2h-1z M5 3h1v3H5z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Dial-Up Numbers</span><span class=\"ds-grid__text\">Find the number nearest you</span></span></a>\n            <a class=\"ds-grid__cell\" href=\"#account\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5 7V5a3 3 0 0 1 6 0v2h1v7H4V7z M6.5 7h3V5a1.5 1.5 0 0 0-3 0z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Passwords</span><span class=\"ds-grid__text\">Change yours or reset another</span></span></a>\n            <a class=\"ds-grid__cell ds-grid__cell--2\" href=\"#users\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5 1h6l4 4v6l-4 4H5l-4-4V5z M4.3 5.7L6.6 8 4.3 10.3l1.4 1.4L8 9.4l2.3 2.3 1.4-1.4L9.4 8l2.3-2.3-1.4-1.4L8 6.6 5.7 4.3z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Family Controls</span><span class=\"ds-grid__text\">Hours and sites for each user</span></span></a>\n            <a class=\"ds-grid__cell ds-grid__cell--2\" href=\"#billing\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M8 3a5 5 0 1 1 0 10A5 5 0 0 1 8 3z M7.3 4.5h1.4v3.2l2.3 1.4-.7 1.2-3-1.8z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Hours Meter</span><span class=\"ds-grid__text\">31 of 40 hours used this month</span></span></a>\n            <a class=\"ds-grid__cell ds-grid__cell--3\" href=\"#users\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 2h12v2h2v10H1z M2 3v10h10V3z M3 4h8v2H3z M3 7h3v4H3z M7 7h4v1H7z M7 9h4v1H7z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Newsgroups</span><span class=\"ds-grid__text\">Which groups each user may read</span></span></a>\n            <a class=\"ds-grid__cell ds-grid__cell--4\" href=\"#account\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M2 2h10l2 2v10H2z M4 3v4h7V3z M9 4h1v2H9z M4 9v4h8V9z M5 10h6v1H5z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Software</span><span class=\"ds-grid__text\">The dialler and browser on disk</span></span></a>\n            <a class=\"ds-grid__cell\" href=\"#account\"><span class=\"ds-grid__icon\"><span class=\"ds-icon ds-icon--large ds-icon--plain\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M7 10h2v2H7z M5.4 6a2.6 2.6 0 1 1 4.2 2c-.5.5-.6.7-.6 1.4H7c0-1.2.3-1.7 1-2.3a.8.8 0 1 0-1.3-.6z\"/></svg></span></span><span class=\"ds-grid__body\"><span class=\"ds-grid__title\">Help Desk</span><span class=\"ds-grid__text\">Open 8 to 22 every day</span></span></a>\n          </div>\n        </section>\n\n      </div>\n\n      <ul class=\"ds-stat\" data-component=\"stats\">\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">31 h 20</span> <span class=\"ds-stat__label\">on line this month, of 40 hours</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">5</span> <span class=\"ds-stat__label\">users with a mailbox</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">2.4 MB</span> <span class=\"ds-stat__label\">of web space in use</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">14.95</span> <span class=\"ds-stat__label\">due on 1 April</span></li>\n      </ul>\n\n      <fieldset class=\"ds-panel\" data-component=\"panel\">\n        <legend class=\"ds-panel__title\">Recent activity on this account</legend>\n        <div class=\"ds-panel__body\">\n          <ul class=\"ds-list\" data-component=\"list\">\n            <li class=\"ds-list__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5 7V5a3 3 0 0 1 6 0v2h1v7H4V7z M6.5 7h3V5a1.5 1.5 0 0 0-3 0z\"/></svg></span><span class=\"ds-list__text\"><a class=\"ds-link\" href=\"#users\">Password changed</a> for the user finn.</span> <span class=\"ds-list__meta\">Fri 13 Mar, 18:02</span></li>\n            <li class=\"ds-list__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2 4v2h12V4z M2 8v4h12V8z M3 10h4v1H3z\"/></svg></span><span class=\"ds-list__text\"><a class=\"ds-link\" href=\"#billing\">Statement for February</a> paid by direct debit.</span> <span class=\"ds-list__meta\">Mon 2 Mar, 6:00</span></li>\n            <li class=\"ds-list__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M8 2.2a5.8 5.8 0 0 1 2 .4L9 5H6L5 3.2A5.8 5.8 0 0 1 8 2.2z M2.3 7l2.2-.6L7 8l-1 3 1.5 2.7A5.8 5.8 0 0 1 2.3 7z M13.7 7.5a5.8 5.8 0 0 1-3 5.5L10 10l1.2-2.5z\"/></svg></span><span class=\"ds-list__text\"><a class=\"ds-link is-visited\" href=\"#account\">Web space</a> passed 2 MB. <span class=\"ds-badge\">New</span></span> <span class=\"ds-list__meta\">Sat 28 Feb, 15:44</span></li>\n            <li class=\"ds-list__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5.5 3a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z M11 4a2 2 0 1 0 0 4a2 2 0 0 0 0-4z M1 14c0-3 2-5 4.5-5S10 11 10 14z M11 9c2.2 0 4 1.8 4 5h-4c0-2-.6-3.6-1.6-4.6.5-.3 1-.4 1.6-.4z\"/></svg></span><span class=\"ds-list__text\"><a class=\"ds-link\" href=\"#users\">New user lena.jr</a> added by quartey.</span> <span class=\"ds-list__meta\">Sun 22 Feb, 11:15</span></li>\n          </ul>\n        </div>\n      </fieldset>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"account\">\n    <div class=\"ds-page__body\">\n      <div class=\"ds-page__columns\">\n\n        <div class=\"ds-page__info\">\n          <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Control Panel</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#account\">My Account</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">General</li>\n          </ol>\n          <header class=\"ds-page-header\" data-component=\"page-header\">\n            <span class=\"ds-icon ds-icon--large\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2a3 3 0 1 0 0 6a3 3 0 0 0 0-6z M3 14c0-3 2-5 5-5s5 2 5 5z\"/></svg></span>\n            <div class=\"ds-page-header__text\">\n              <h1 class=\"ds-page-header__title\">My Account Properties</h1>\n              <p class=\"ds-page-header__lead\">Who the account belongs to and how to reach you.</p>\n            </div>\n            <div class=\"ds-page-header__action\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#account\">Change Password...</a>\n            </div>\n          </header>\n          <dl class=\"ds-props\">\n            <dt class=\"ds-props__label\">Member:</dt>\n            <dd class=\"ds-props__value\">No. 104471</dd>\n            <dt class=\"ds-props__label\">Since:</dt>\n            <dd class=\"ds-props__value\">June 1996</dd>\n            <dt class=\"ds-props__label\">Plan:</dt>\n            <dd class=\"ds-props__value\">Family 40</dd>\n          </dl>\n          <aside class=\"ds-sidebar\">\n            <h2 class=\"ds-sidebar__title\">Related</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5.5 3a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z M11 4a2 2 0 1 0 0 4a2 2 0 0 0 0-4z M1 14c0-3 2-5 4.5-5S10 11 10 14z M11 9c2.2 0 4 1.8 4 5h-4c0-2-.6-3.6-1.6-4.6.5-.3 1-.4 1.6-.4z\"/></svg></span><a class=\"ds-link\" href=\"#users\">Users of this account</a></li>\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2 4v2h12V4z M2 8v4h12V8z M3 10h4v1H3z\"/></svg></span><a class=\"ds-link\" href=\"#billing\">Billing and statements</a></li>\n            </ul>\n          </aside>\n        </div>\n\n        <div class=\"ds-page__main\">\n          <div class=\"ds-notices\" data-component=\"notice\">\n            <p class=\"ds-notice\"><span class=\"ds-notice__label\">Note:</span> a change of plan takes effect on the first day of next month.</p>\n            <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__label\">Not saved.</span> The post code does not match the town. Correct it and choose Apply again.</p>\n          </div>\n          <div>\n            <ul class=\"ds-tabs\" data-component=\"tabs\">\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab is-current\" href=\"#account\">General</a></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#account\">Dial-Up</a></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#account\">Web Space</a></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#account\">Passwords</a></li>\n              <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#account\">Privacy</a></li>\n            </ul>\n            <div class=\"ds-sheet\">\n              <div class=\"ds-stack\">\n                <fieldset class=\"ds-group\">\n                  <legend class=\"ds-group__title\">Account holder</legend>\n                  <form class=\"ds-form\" data-component=\"form\" action=\"#account\">\n                    <label class=\"ds-form__label\" for=\"f-name\">Full name:</label>\n                    <div class=\"ds-form__field\">\n                      <input class=\"ds-form__input\" id=\"f-name\" type=\"text\" value=\"Lena Quartey\">\n                    </div>\n                    <label class=\"ds-form__label\" for=\"f-town\">Town:</label>\n                    <div class=\"ds-form__field\">\n                      <input class=\"ds-form__input\" id=\"f-town\" type=\"text\" value=\"Dublin\">\n                    </div>\n                    <label class=\"ds-form__label\" for=\"f-code\">Post code:</label>\n                    <div class=\"ds-form__field\">\n                      <input class=\"ds-form__input ds-form__input--short\" id=\"f-code\" type=\"text\" value=\"BT7\">\n                      <span class=\"ds-form__error\">This post code belongs to another town.</span>\n                    </div>\n                    <label class=\"ds-form__label\" for=\"f-plan\">Plan:</label>\n                    <div class=\"ds-form__field\">\n                      <select class=\"ds-form__select\" id=\"f-plan\">\n                        <option>Family 40 (40 hours, 8 users)</option>\n                        <option>Light 10 (10 hours, 2 users)</option>\n                        <option>Unmetered evenings</option>\n                      </select>\n                      <span class=\"ds-form__hint\">extra hours are charged by the minute</span>\n                    </div>\n                    <span class=\"ds-form__label\">Send me:</span>\n                    <div class=\"ds-form__field\">\n                      <label class=\"ds-form__option\"><input class=\"ds-form__check\" type=\"checkbox\" checked>The monthly statement</label>\n                      <label class=\"ds-form__option\"><input class=\"ds-form__check\" type=\"checkbox\">Service news</label>\n                    </div>\n                    <label class=\"ds-form__label\" for=\"f-note\">Note for the help desk:</label>\n                    <div class=\"ds-form__field\">\n                      <textarea class=\"ds-form__textarea\" id=\"f-note\" rows=\"3\">Please ring after six in the evening.</textarea>\n                    </div>\n                  </form>\n                </fieldset>\n                <fieldset class=\"ds-group\">\n                  <legend class=\"ds-group__title\">When the monthly hours run out</legend>\n                  <div class=\"ds-stack ds-stack--tight\">\n                    <label class=\"ds-form__option\"><input class=\"ds-form__radio\" type=\"radio\" name=\"over\" checked>Ask the account holder before going on</label>\n                    <label class=\"ds-form__option\"><input class=\"ds-form__radio\" type=\"radio\" name=\"over\">Go on and charge by the minute</label>\n                    <label class=\"ds-form__option\"><input class=\"ds-form__radio\" type=\"radio\" name=\"over\">Sign every user out until next month</label>\n                  </div>\n                </fieldset>\n              </div>\n            </div>\n          </div>\n          <div class=\"ds-buttons\" data-component=\"buttons\">\n            <button class=\"ds-button ds-button--danger\" type=\"button\">Close Account...</button>\n            <span class=\"ds-find__fill\"></span>\n            <a class=\"ds-button\" href=\"#home\">OK</a>\n            <a class=\"ds-button ds-button--secondary\" href=\"#home\">Cancel</a>\n            <button class=\"ds-button\" type=\"button\" disabled>Apply</button>\n          </div>\n        </div>\n\n      </div>\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"users\">\n    <div class=\"ds-page__body\">\n      <div class=\"ds-page__columns\">\n\n        <div class=\"ds-page__info\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Control Panel</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#users\">Users</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">All users</li>\n          </ol>\n          <header class=\"ds-page-header\">\n            <span class=\"ds-icon ds-icon--large\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5.5 3a2.5 2.5 0 1 0 0 5a2.5 2.5 0 0 0 0-5z M11 4a2 2 0 1 0 0 4a2 2 0 0 0 0-4z M1 14c0-3 2-5 4.5-5S10 11 10 14z M11 9c2.2 0 4 1.8 4 5h-4c0-2-.6-3.6-1.6-4.6.5-.3 1-.4 1.6-.4z\"/></svg></span>\n            <div class=\"ds-page-header__text\">\n              <h1 class=\"ds-page-header__title\">Users</h1>\n              <p class=\"ds-page-header__lead\">5 of 8 sign-in names are in use. Each has its own mailbox.</p>\n            </div>\n            <div class=\"ds-page-header__action\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#users\">New User...</a>\n            </div>\n          </header>\n          <p class=\"ds-links\">Select a user to see what you can do. <strong>finn</strong> is selected.</p>\n          <aside class=\"ds-sidebar\">\n            <h2 class=\"ds-sidebar__title\">User tasks</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5 7V5a3 3 0 0 1 6 0v2h1v7H4V7z M6.5 7h3V5a1.5 1.5 0 0 0-3 0z\"/></svg></span><a class=\"ds-link\" href=\"#users\">Reset the password</a></li>\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M8 3a5 5 0 1 1 0 10A5 5 0 0 1 8 3z M7.3 4.5h1.4v3.2l2.3 1.4-.7 1.2-3-1.8z\"/></svg></span><a class=\"ds-link\" href=\"#users\">Set hours on line</a></li>\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2.6 4L8 8.4 13.4 4z M2 5v7h12V5L8 9.8z\"/></svg></span><a class=\"ds-link\" href=\"#users\">Forward the mail</a></li>\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M6 2h4v1h3v2H3V3h3z M4 6h8v8H4z M6 7v6h1V7z M9 7v6h1V7z\"/></svg></span><a class=\"ds-link\" href=\"#users\">Remove this user</a></li>\n            </ul>\n          </aside>\n        </div>\n\n        <div class=\"ds-page__main\">\n          <table class=\"ds-table\" data-component=\"table\">\n            <caption class=\"ds-table__caption\">5 object(s), 1 selected. Space is the mail waiting in each mailbox.</caption>\n            <thead>\n              <tr>\n                <th class=\"ds-table__head\" scope=\"col\">Sign-in name</th>\n                <th class=\"ds-table__head\" scope=\"col\">Full name</th>\n                <th class=\"ds-table__head\" scope=\"col\">Status</th>\n                <th class=\"ds-table__head\" scope=\"col\">Last sign-in</th>\n                <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Space</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2a3 3 0 1 0 0 6a3 3 0 0 0 0-6z M3 14c0-3 2-5 5-5s5 2 5 5z\"/></svg></span> <a class=\"ds-link\" href=\"#account\">quartey</a></td>\n                <td class=\"ds-table__cell\">Lena Quartey</td>\n                <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">On line</span></td>\n                <td class=\"ds-table__cell\">Today 9:02</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">1,204 KB</td>\n              </tr>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2a3 3 0 1 0 0 6a3 3 0 0 0 0-6z M3 14c0-3 2-5 5-5s5 2 5 5z\"/></svg></span> <a class=\"ds-link\" href=\"#users\">bram</a></td>\n                <td class=\"ds-table__cell\">Bram Quartey</td>\n                <td class=\"ds-table__cell\">Signed out</td>\n                <td class=\"ds-table__cell\">Fri 13 Mar</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">388 KB</td>\n              </tr>\n              <tr class=\"ds-table__row is-selected\">\n                <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2a3 3 0 1 0 0 6a3 3 0 0 0 0-6z M3 14c0-3 2-5 5-5s5 2 5 5z\"/></svg></span> <a class=\"ds-link\" href=\"#users\">finn</a></td>\n                <td class=\"ds-table__cell\">Finn Quartey</td>\n                <td class=\"ds-table__cell\">Hours used up</td>\n                <td class=\"ds-table__cell\">Thu 12 Mar</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">96 KB</td>\n              </tr>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2a3 3 0 1 0 0 6a3 3 0 0 0 0-6z M3 14c0-3 2-5 5-5s5 2 5 5z\"/></svg></span> <a class=\"ds-link is-visited\" href=\"#users\">lena.jr</a></td>\n                <td class=\"ds-table__cell\">Lena Quartey (junior)</td>\n                <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">Hours nearly used</span></td>\n                <td class=\"ds-table__cell\">Wed 11 Mar</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">52 KB</td>\n              </tr>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2a3 3 0 1 0 0 6a3 3 0 0 0 0-6z M3 14c0-3 2-5 5-5s5 2 5 5z\"/></svg></span> <a class=\"ds-link\" href=\"#users\">shop</a></td>\n                <td class=\"ds-table__cell\">Harbour Road Seeds</td>\n                <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">Locked</span></td>\n                <td class=\"ds-table__cell\">2 Feb</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">2,210 KB</td>\n              </tr>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell ds-table__cell--group\" colspan=\"4\">Total for the account, of 10 MB</td>\n                <td class=\"ds-table__cell ds-table__cell--num ds-table__cell--group\">3,950 KB</td>\n              </tr>\n            </tbody>\n          </table>\n          <div class=\"ds-find\">\n            <ol class=\"ds-pagination\" data-component=\"pagination\">\n              <li class=\"ds-pagination__label\">Page 1 of 2:</li>\n              <li><a class=\"ds-pagination__link is-disabled\" href=\"#users\">&lt; Previous</a></li>\n              <li><a class=\"ds-pagination__link is-current\" href=\"#users\">1</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#users\">2</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#users\">Next &gt;</a></li>\n            </ol>\n            <span class=\"ds-find__fill\"></span>\n            <span class=\"ds-badges\" data-component=\"badge\"><span class=\"ds-badge\">5 users</span> <span class=\"ds-badge ds-badge--success\">On line</span> <span class=\"ds-badge ds-badge--warning\">Nearly used</span> <span class=\"ds-badge ds-badge--danger\">Locked</span></span>\n          </div>\n          <div class=\"ds-split\">\n            <section class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n              <h2 class=\"ds-dialog__title\" id=\"d-title\">Confirm User Remove <span class=\"ds-window__ctl ds-window__ctl--close\" aria-hidden=\"true\"></span></h2>\n              <div class=\"ds-dialog__content\">\n                <span class=\"ds-icon ds-icon--large\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1l7 13H1z M7 6h2v4H7z M7 11h2v2H7z\"/></svg></span>\n                <p class=\"ds-dialog__body\">Are you sure you want to remove <strong>finn</strong>? The mailbox and its 96 KB of mail are deleted with the user.</p>\n              </div>\n              <div class=\"ds-dialog__actions\">\n                <a class=\"ds-button ds-button--danger\" href=\"#users\">Yes, Remove</a>\n                <a class=\"ds-button\" href=\"#users\">No</a>\n              </div>\n            </section>\n            <section class=\"ds-pane\">\n              <h2 class=\"ds-pane__title\">Invitations waiting for an answer</h2>\n              <div class=\"ds-empty\" data-component=\"empty\">\n                <h3 class=\"ds-empty__title\">There are no items to show.</h3>\n                <p class=\"ds-empty__text\">Nobody has been invited. Three sign-in names are still free.</p>\n                <a class=\"ds-button ds-button--secondary\" href=\"#users\">New User...</a>\n              </div>\n            </section>\n          </div>\n        </div>\n\n      </div>\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"billing\">\n    <div class=\"ds-page__body\">\n      <div class=\"ds-page__columns\">\n\n        <div class=\"ds-page__info\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">Control Panel</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#billing\">Billing</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Statements</li>\n          </ol>\n          <header class=\"ds-page-header\">\n            <span class=\"ds-icon ds-icon--large\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M1 3h14v10H1z M2 4v2h12V4z M2 8v4h12V8z M3 10h4v1H3z\"/></svg></span>\n            <div class=\"ds-page-header__text\">\n              <h1 class=\"ds-page-header__title\">Billing</h1>\n              <p class=\"ds-page-header__lead\">Statements, the hours meter and how the plan is charged.</p>\n            </div>\n            <div class=\"ds-page-header__action\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#billing\">Print Statement</a>\n            </div>\n          </header>\n          <fieldset class=\"ds-group\">\n            <legend class=\"ds-group__title\">Hours this month</legend>\n            <div class=\"ds-stack ds-stack--tight\">\n              <span class=\"ds-progress\"><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block\"></span><span class=\"ds-progress__block ds-progress__block--empty\"></span><span class=\"ds-progress__block ds-progress__block--empty\"></span></span>\n              <span>31 h 20 of 40 hours used. The meter starts again on 1 April.</span>\n            </div>\n          </fieldset>\n          <aside class=\"ds-sidebar\">\n            <h2 class=\"ds-sidebar__title\">Related</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 2a3 3 0 1 0 0 6a3 3 0 0 0 0-6z M3 14c0-3 2-5 5-5s5 2 5 5z\"/></svg></span><a class=\"ds-link\" href=\"#account\">Change the plan</a></li>\n              <li class=\"ds-sidebar__item\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M8 3a5 5 0 1 1 0 10A5 5 0 0 1 8 3z M7.3 4.5h1.4v3.2l2.3 1.4-.7 1.2-3-1.8z\"/></svg></span><a class=\"ds-link\" href=\"#users\">Hours for each user</a></li>\n            </ul>\n          </aside>\n        </div>\n\n        <div class=\"ds-page__main\">\n          <table class=\"ds-table\">\n            <thead>\n              <tr>\n                <th class=\"ds-table__head\" scope=\"col\">Statement</th>\n                <th class=\"ds-table__head\" scope=\"col\">Paid by</th>\n                <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Hours</th>\n                <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Extra</th>\n                <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Amount</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr class=\"ds-table__row is-selected\">\n                <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h7l3 3v11H3z M4 2v12h8V5H9V2z M5 7h6v1H5z M5 9h6v1H5z M5 11h4v1H5z\"/></svg></span> <a class=\"ds-link\" href=\"#billing\">March 1998, so far</a></td>\n                <td class=\"ds-table__cell\">Due 1 April</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">31:20</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">0.00</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">14.95</td>\n              </tr>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h7l3 3v11H3z M4 2v12h8V5H9V2z M5 7h6v1H5z M5 9h6v1H5z M5 11h4v1H5z\"/></svg></span> <a class=\"ds-link\" href=\"#billing\">February 1998</a></td>\n                <td class=\"ds-table__cell\">Direct debit</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">43:05</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">2.78</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">17.73</td>\n              </tr>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h7l3 3v11H3z M4 2v12h8V5H9V2z M5 7h6v1H5z M5 9h6v1H5z M5 11h4v1H5z\"/></svg></span> <a class=\"ds-link is-visited\" href=\"#billing\">January 1998</a></td>\n                <td class=\"ds-table__cell\">Direct debit</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">38:40</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">0.00</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">14.95</td>\n              </tr>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" shape-rendering=\"crispEdges\" aria-hidden=\"true\"><path d=\"M3 1h7l3 3v11H3z M4 2v12h8V5H9V2z M5 7h6v1H5z M5 9h6v1H5z M5 11h4v1H5z\"/></svg></span> <a class=\"ds-link is-visited\" href=\"#billing\">December 1997</a></td>\n                <td class=\"ds-table__cell\">Cheque</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">51:12</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">10.08</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">25.03</td>\n              </tr>\n              <tr class=\"ds-table__row\">\n                <td class=\"ds-table__cell ds-table__cell--group\" colspan=\"2\">Four statements</td>\n                <td class=\"ds-table__cell ds-table__cell--num ds-table__cell--group\">164:17</td>\n                <td class=\"ds-table__cell ds-table__cell--num ds-table__cell--group\">12.86</td>\n                <td class=\"ds-table__cell ds-table__cell--num ds-table__cell--group\">72.66</td>\n              </tr>\n            </tbody>\n          </table>\n\n          <article class=\"ds-well ds-prose\" data-component=\"typography\">\n            <h1>How the Family 40 plan is charged</h1>\n            <p class=\"ds-prose__lead\">One price covers 40 hours on line each month, shared by up to 8 users.</p>\n            <p>The meter counts from the moment the modem answers until you sign out. Time spent reading mail <strong>off line</strong> is not counted.</p>\n            <h2>Extra hours</h2>\n            <p>After 40 hours each minute is charged at the rate on your statement, shown in the column <code>Extra</code>.</p>\n            <ul>\n              <li>Hours you do not use are not carried over.</li>\n              <li>The account holder can stop extra hours altogether.</li>\n            </ul>\n            <h3>Where to read more</h3>\n            <p class=\"ds-links\" data-component=\"links\">\n              <a class=\"ds-link\" href=\"#account\">Compare the three plans</a>,\n              <a class=\"ds-link is-visited\" href=\"#billing\">a statement you have opened</a>,\n              <a class=\"ds-link is-hover\" href=\"#billing\">a link under the pointer</a>,\n              <a class=\"ds-link is-active\" href=\"#billing\">a link as you click it</a> and\n              <a class=\"ds-link ds-link--quiet\" href=\"#users\">hours for each user</a>.\n            </p>\n          </article>\n        </div>\n\n      </div>\n    </div>\n  </section>\n\n  <footer class=\"ds-footer\" data-component=\"footer\">\n    <ul class=\"ds-status\">\n      <li class=\"ds-status__cell ds-status__cell--wide\">chronoskin Online, 1998. <a class=\"ds-link ds-link--quiet\" href=\"#account\">My account</a>, <a class=\"ds-link ds-link--quiet\" href=\"#users\">users</a>, <a class=\"ds-link ds-link--quiet\" href=\"#billing\">billing</a> and <a class=\"ds-link ds-link--quiet\" href=\"#billing\">terms of membership</a>.</li>\n      <li class=\"ds-status__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M5 7V5a3 3 0 0 1 6 0v2h1v7H4V7z M6.5 7h3V5a1.5 1.5 0 0 0-3 0z\"/></svg></span> <span class=\"ds-avatar\" aria-hidden=\"true\">q</span>Signed in: quartey</li>\n      <li class=\"ds-status__cell\"><span class=\"ds-icon\"><svg viewBox=\"0 0 16 16\" fill=\"currentColor\" fill-rule=\"evenodd\" aria-hidden=\"true\"><path d=\"M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z M8 2.2a5.8 5.8 0 0 1 2 .4L9 5H6L5 3.2A5.8 5.8 0 0 1 8 2.2z M2.3 7l2.2-.6L7 8l-1 3 1.5 2.7A5.8 5.8 0 0 1 2.3 7z M13.7 7.5a5.8 5.8 0 0 1-3 5.5L10 10l1.2-2.5z\"/></svg></span> Member zone</li>\n    </ul>\n  </footer>\n\n</div>\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.windows-9x.portal.s06.p01.t02.u01.dc\",\n  \"library\": \"2026.10.09-1036\",\n  \"era\": {\n    \"slug\": \"windows-9x\",\n    \"years\": [\n      1995,\n      2001\n    ]\n  },\n  \"archetype\": \"portal\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 800,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-w9-6121-dc\",\n  \"short\": \"v1-w9-6121-dc\",\n  \"density\": \"compact\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #008080;\n  --color-canvas: #c0c0c0;\n  --color-surface: #ffffff;\n  --color-surface-alt: #e8e8e8;\n  --color-surface-strong: #d0d0d0;\n  --color-bar: #000080;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #c0c0c0;\n  --color-bar-alt-text: #000000;\n  --color-inverse: #808080;\n  --color-inverse-text: #ffffff;\n  --color-text: #000000;\n  --color-text-muted: #505050;\n  --color-heading: #000000;\n  --color-heading-alt: #000080;\n  --color-link: #000080;\n  --color-link-quiet: #000000;\n  --color-link-visited: #800080;\n  --color-link-hover: #0000f0;\n  --color-link-active: #d00000;\n  --color-border: #808080;\n  --color-border-strong: #000000;\n  --color-border-muted: #dfdfdf;\n  --color-accent: #000080;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #d00000;\n  --color-fill-1: #ffffd0;\n  --color-fill-2: #98d0d0;\n  --color-fill-3: #98d0ff;\n  --color-fill-4: #ffd098;\n  --color-button: #c0c0c0;\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: #808080;\n  --color-disabled: #c0c0c0;\n  --color-disabled-text: #808080;\n  --color-danger: #a00000;\n  --color-danger-surface: #fff8e8;\n  --color-success: #006830;\n  --color-warning: #986800;\n  --color-notice: #ffffd0;\n  --color-notice-text: #000000;\n  --color-focus: #000000;\n  --color-shadow: #000000;\n  --color-overlay: rgba(0, 0, 0, 0.4);\n}\n\n/* @part type */\n:root {\n  --font-body: Verdana, Geneva, Arial, sans-serif;\n  --font-heading: \"Times New Roman\", Times, serif;\n  --font-ui: Verdana, Geneva, Arial, sans-serif;\n  --font-mono: \"Lucida Console\", Monaco, monospace;\n  --text-base: 12px;\n  --text-small: 11px;\n  --text-ui: 12px;\n  --text-large: 14px;\n  --text-display: 28px;\n  --text-h1: 21px;\n  --text-h2: 17px;\n  --text-h3: 14px;\n  --line-body: 1.4;\n  --line-heading: 1.15;\n  --line-display: 1.05;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 400;\n  --weight-ui: 400;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: none;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 2px;\n  --border-style: solid;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: inset -1px -1px var(--color-border-strong), inset 1px 1px var(--color-border-muted), inset -2px -2px var(--color-border), inset 2px 2px color-mix(in srgb, var(--color-border-muted) 25%, white);\n  --shadow-control: inset -1px -1px var(--color-border-strong), inset 1px 1px color-mix(in srgb, var(--color-border-muted) 25%, white), inset -2px -2px var(--color-border), inset 2px 2px var(--color-border-muted);\n  --shadow-control-hover: inset -1px -1px var(--color-border-strong), inset 1px 1px color-mix(in srgb, var(--color-border-muted) 25%, white), inset -2px -2px var(--color-border), inset 2px 2px var(--color-border-muted);\n  --shadow-control-pressed: inset 1px 1px var(--color-border), inset -1px -1px color-mix(in srgb, var(--color-border-muted) 25%, white), inset 2px 2px var(--color-border-strong), inset -2px -2px var(--color-border-muted);\n  --shadow-dialog: inset -1px -1px var(--color-border-strong), inset 1px 1px var(--color-border-muted), inset -2px -2px var(--color-border), inset 2px 2px color-mix(in srgb, var(--color-border-muted) 25%, white);\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: linear-gradient(90deg, var(--color-bar), color-mix(in srgb, var(--color-bar) 45%, white));\n  --fill-bar-alt: var(--color-bar-alt);\n  --fill-inverse: var(--color-inverse);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-canvas);\n  --fill-button: var(--color-button);\n  --fill-button-hover: var(--color-button);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: var(--color-input);\n  --focus-ring: 1px dotted var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
