{
  "id": "v1-sk-6bbb",
  "long_id": "v1.skeuomorphism.app.s06.p11.t11.u11",
  "name": "Skeuomorphism app (open ledger on a desk)",
  "era": {
    "slug": "skeuomorphism",
    "code": "sk",
    "name": "Skeuomorphism",
    "years": [
      2009,
      2013
    ],
    "description": "App-era product sites, 2009 to 2013: pages that imitate materials, with linen and paper textures, bevelled glossy keys, inset wells, stitched edges and engraved text."
  },
  "archetype": "app",
  "mode": "mix",
  "viewport": {
    "width": 1280,
    "fluid": false
  },
  "summary": "A small web application dressed as the object it replaces, from the years when screens imitated physical materials: a toolbar across the window, and under it a desk on which one bound book lies open, two paper pages side by side with divider tabs standing on the upper edge. It was a common dress for to-do lists, notebooks, address books and ledgers in the browser and on tablets between about 2010 and 2013. The working parts are ordinary (a table, a list, a form) but each is drawn as stationery: ruled lines, index cards held by a clip, labels pasted on bound volumes, sheets that show the pages lying under them.",
  "url": "https://chrono.skin/s/v1-sk-6bbb",
  "preview_url": "https://chrono.skin/s/v1-sk-6bbb/specimen.html",
  "files": {
    "STYLE.md": "# Skeuomorphism app (open ledger on a desk)\n\n## Summary\n\nA small web application dressed as the object it replaces, from the years when screens imitated physical materials: a toolbar across the window, and under it a desk on which one bound book lies open, two paper pages side by side with divider tabs standing on the upper edge. It was a common dress for to-do lists, notebooks, address books and ledgers in the browser and on tablets between about 2010 and 2013. The working parts are ordinary (a table, a list, a form) but each is drawn as stationery: ruled lines, index cards held by a clip, labels pasted on bound volumes, sheets that show the pages lying under them.\n\n## Layout\n\n- Fixed width: `--size-page` is 1000px, the width of the book and of the toolbar's content. The toolbar (`.ds-nav`) and the desk (`.ds-page__desk`, the `--fill-inverse` band) run the full window width; under the desk the page texture shows, with the footer on it.\n- Navigation is the application toolbar, `--size-nav` (58px) high: the `.ds-brand` at the left, then one key per part of the application, each a glyph over a word, the current one pressed into the bar; at the right a search field, a small key and the name of the ledger. It is written once, above the desk, and the footer once below it. There is no other navigation except the divider tabs.\n- Every view is one `.ds-book` on the desk: a cover (`--space-3` of it shows round the paper) holding a `.ds-book__spread` of two `.ds-book__page` halves of equal width and height, the right one `.ds-book__page--right`; a shade down the middle makes the fold. Each page is a column with `--space-5` of margin: its blocks follow one another, a `.ds-book__title` above each block that needs a name, and what is left of the page is filled with ruled lines (`.ds-book__rest`) above the page number (`.ds-book__folio`). Nothing is placed outside the book and no block spans both pages.\n- The home view puts the hero card, the `.ds-stats` totals and the soonest `.ds-list` on the left page, and the `.ds-grid` of shelves, the `.ds-sidebar` of people and one notice on the right page.\n- Inner pages keep the toolbar, the desk and the book. The left page opens with the breadcrumb, then `.ds-page-header` (title and one line, keys at the right, a double rule under it), then the working block: the table with its pagination in a `.ds-book__foot`, the form, an empty well, or running text. The right page holds what belongs to the selection on the left: a `.ds-panel` card of facts with its keys, a list of events or labels, the open dialog. Where a subject has several pages, `.ds-tabs` stand on the top edge of the right page as dividers (the book is then `.ds-book--tabbed`); the current tab is the paper's own colour and a little taller.\n- Views. The specimen is a five-screen application, one `.ds-view` showing at a time. `desk` is the home view: today's card, the totals, what is due soonest, the shelves and who has what. `loans` is the Out now divider: the table of loans with one line marked, pagination, and on the facing page the marked loan's card and the key to the labels. `returned` is the Returned divider: an empty month on the left, last month's list on the right. `loan` is the Open entry divider: one entry as running text with its links, its facts and its history. `settings` is the settings form with its notices and keys, and on the facing page the dialog that the destructive key opens. The toolbar leads to `desk`, `loans` and `settings`; the dividers join `loans`, `returned` and `loan`, and all three keep Loans pressed in the toolbar. Each view needs one `:has()` selector in the navigation rule of `components.css`.\n- Spacing scale: `--space-1` 3px (badge padding, between page keys and tabs), `--space-2` 6px (cell and row padding, between keys), `--space-3` 10px (the cover's rim, form rows, between shelves), `--space-4` 14px (control side padding, card padding), `--space-5` 22px (page margin, above a block title, the pitch of the ruled lines), `--space-6` 30px (above the book), `--space-7` 44px (below the book).\n- Control heights: `--size-pill` 20px (small keys, badges), `--size-control` 28px (keys, fields), `--size-control-large` 38px (the keys of the hero card), `--size-tab` 30px (the current divider). `--size-thumb` 34px is the tile of a list row; `--size-hair` 1px the offset of every highlight.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- One plain sans for everything: `--font-body`, `--font-heading` and `--font-ui` are Helvetica, then Arial, Lucida Grande and Verdana; `--font-mono` Monaco.\n- Text is small and dense, pale on the dark ground: `--text-base` 11px at `--line-body` 1.42; `--text-small` 10px; `--text-ui` 11px at `--weight-ui` 700; `--text-large` 14px for the lead and the large key.\n- Headings are bold: `--weight-heading` and `--weight-display` 700. `--text-h3` 14px, `--text-h2` 18px, `--text-h1` 22px, `--text-display` 30px at `--line-display` 1.1.\n- Links are not underlined until hovered (`--link-decoration: none`, `--link-decoration-hover: underline`). No uppercase and no tracking from this part.\n\n- Green baize, mahogany and brass; the set is dark. `--color-page` #1f5c3d is the felt table; `--color-canvas` #184a31 a sheet of darker felt; `--color-surface` #1b5137 rows and cells; `--color-surface-alt` #17472f alternate rows and wells; `--color-surface-strong` #123a26 title strips.\n- `--color-bar` #5b2f18 (mahogany, ivory text #f8e9c6) is the navigation bar, table head, count badges and pressed \"current\" states; `--color-bar-alt` #8b6a3b (oak, ivory text #fff4d8) is title strips and the segmented control; `--color-inverse` #24160f (ebony, ivory text) the closing band or hero block.\n- Text is `--color-text` #d8e5d6, meta `--color-text-muted` #9cbba5, headings ivory `--color-heading` #fdf6e0, sidebar and panel titles `--color-heading-alt` #f3e4b8.\n- Links are gilt: `--color-link` #f2cf6b, paler on hover (#ffe7a0), tan when visited (#d8bb8c), white when active.\n- `--color-button` #a87722 (brass, ivory text) is the one primary action colour; the secondary key is a lighter felt, `--color-button-secondary` #2c7850 with #f6f8ee text. Fields are wells darker than the felt (`--color-input` #0f3524, pale text).\n- `--color-accent` #c0302b (the red chip) for badges, `--color-accent-alt` #2d5aa3 (the blue chip, ivory text) for \"new\" markers; `--color-success` #3f9d2f, `--color-warning` #b3741a (ivory text), `--color-danger` #f0695b on `--color-danger-surface` #4a2420. Notices are ivory cards lying on the felt: `--color-notice` #f3e6c0 with dark text #3a2a12.\n- `--color-fill-1` to `--color-fill-4` (#b02a26 red, #2c58a0 blue, #5c3a7e violet, #7b4a22 walnut) are chip and wood colours for the grid blocks only; ivory text on all four.\n\n- Felt and wood. `--fill-page` is felt: a 6px fleck of dark and light fibres and a pool of light from the top centre. `--fill-inverse` is the same fleck and light over ebony. `--fill-bar` and `--fill-bar-alt` are planks: uneven horizontal grain lines over a top-lit gradient of the bar colour.\n- Keys are polished brass: `--fill-button` runs from 45% lighter at the top through the plain colour to 22% darker, with a bright inner top edge and a soft 0 3px 7px shadow (`--shadow-control`), so they sit padded above the felt. Pressed keys take a 5px inset shade.\n- Sheets are padded cushions lying on the table: `--shadow-panel` is a dark 1px ring and a soft 0 6px 14px at 50%; `--shadow-dialog` a ring and 0 10px 20px. `--fill-panel` is flat felt.\n- Corners are large and soft: `--radius-control` 10px, `--radius-panel` 16px, `--radius-page` 20px, `--radius-pill` 16px. `--fill-accent` is a chip with a highlight across its top.\n- `--shadow-text` is a soft dark shadow one pixel below light text (0 1px 1px at 60%). `--fill-input` shades the top 6px of a well. `--transition` is none.\n\n## Components\n\n- `.ds-page`: on `<body>`. Paints the desk top. `.ds-page__desk` is the band the book lies on and wraps all views; `.ds-page__wrap` a 1000px column for anything else placed on the page texture.\n- `.ds-view`: one screen, a `<section>` with an id; only the one named in the address shows, and `.ds-view--home` when none is named.\n- `.ds-book`: the open book. `.ds-book--tabbed` when dividers stand on it. `.ds-book__spread` holds the two `.ds-book__page` halves (`.ds-book__page--right` for the second). On a page: `.ds-book__title` names a block (`is-first` when it opens the page), `.ds-book__block` adds the usual gap above a block that has no title, `.ds-book__foot` is the line under a block (pagination or a link left, a count right), `.ds-book__rest` the ruled remainder and `.ds-book__folio` the page number.\n- `.ds-nav`: the toolbar. `.ds-nav__inner` centres it; `.ds-nav__items` holds `.ds-nav__item` keys, each a `.ds-nav__glyph` over a word; the current one is pressed in, by `is-current` or, in the specimen, by one selector per view. `.ds-nav__tools` at the right holds the search field (`.ds-form__input` with `.ds-nav__search`), a small secondary key and `.ds-nav__user`.\n- `.ds-brand`: at the left of the toolbar. `.ds-brand__mark` is a 28px tile dressed as the primary key (`--fill-button`, darkened border, `--radius-control`, `--shadow-control`) holding the mark in `--color-button-text`; `.ds-brand__name` the name in the heading font at 18px, always `--weight-bold`. Both are placeholders for the installing project's own name and logo.\n- `.ds-hero`: an index card at the head of the home view's first page, with an accent rule along its top and a clip: `.ds-hero__kicker` (the date, on a strip in `--fill-bar-alt` across the head of the card), `.ds-hero__title`, `.ds-hero__lead` and `.ds-hero__actions` with one large primary key and at most one large secondary key, which wrap under each other when the type is wide. Once, and only on the home view.\n- `.ds-page-header`: the head of an inner page, on the left page under the breadcrumb: `.ds-page-header__copy` with `.ds-page-header__title` (24px bold) and one `.ds-page-header__text` line, `.ds-page-header__actions` with at most two keys, and a double rule beneath.\n- `.ds-prose`: running text: h1, h2, h3, paragraphs, lists, `code`, links. `.ds-prose__lead` is a larger opening line.\n- `.ds-link`: text link; states `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` for breadcrumbs, footer and meta links. `.ds-links` is a wrapping row.\n- `.ds-button`: a matte key, 28px high. `.ds-button--secondary` the paper-coloured key; `.ds-button--danger` the key in `--color-danger` for a destructive action; `.ds-button--large` the 38px key of the hero card; `.ds-button--small` a 20px key. States `is-hover`, `is-active`, `is-focus`, `is-disabled`. `.ds-button__icon` is a 16px glyph. `.ds-buttons` is a row.\n- `.ds-form`: labels above fields. `.ds-form__row` holds a `.ds-form__label` and one control; `.ds-form__pair` sets two rows side by side. `.ds-form__input` and `.ds-form__textarea` are inset fields, `.ds-form__select` a paper key. `is-error` with `.ds-form__error`; `.ds-form__hint`; `.ds-form__check` with `.ds-form__checkbox`; `.ds-form__actions` under a rule, where `.ds-form__actions-end` pushes the destructive key to the right edge.\n- `.ds-table`: ledger ruling without a frame: a heavy rule above the `.ds-table__head`, hairlines between rows. `.ds-table__row` with `is-first`, `is-alt` and `is-current` (the marked line, in the notice colour); `.ds-table__cell`, `.ds-table__cell--name` for the bold leading column with a `.ds-table__link`, `is-numeric` for right-aligned figures.\n- `.ds-list`: ruled lines: `.ds-list__item` with an optional `.ds-list__icon` tile, `.ds-list__body` (`.ds-list__title`, `.ds-list__meta`) and a badge at the right.\n- `.ds-panel`: a card pasted on the page: `.ds-panel__title` strip, `.ds-panel__body` with `.ds-panel__text` or a `.ds-panel__facts` list of `.ds-panel__fact` lines (`.ds-panel__term` left, `.ds-panel__value` right), then a row of keys.\n- `.ds-stat`: one total: `.ds-stat__value` (24px bold slab) over a `.ds-stat__label`. Four of them make the `.ds-stats` row, under a heavy rule and over a hairline, parted by hairlines; `is-first` on the first.\n- `.ds-grid`: four `.ds-grid__cell` shelves, two to a line, each a bound volume in `--color-fill-1` (`.ds-grid__cell--2`, `--3`, `--4` for the other fills) with a darker spine at its left. On it a pasted `.ds-grid__label` (`.ds-grid__title` link, `.ds-grid__text`), then `.ds-grid__count` and `.ds-grid__note` in `--color-inverse-text`.\n- `.ds-tabs`: divider tabs, right-aligned on the top edge of the right page: `.ds-tabs__tab`, the `is-current` one in the paper colour.\n- `.ds-badge`: a small label for a count or a word. `.ds-badge--count` is pressed in and grey, `.ds-badge--new` the marker in `--color-accent-alt`. Status labels: `.ds-badge--success`, `.ds-badge--warning` (dark text) and `.ds-badge--danger`. `.ds-badges` is a row.\n- `.ds-sidebar`: an address-book block on a page: `.ds-sidebar__title` over a heavy rule, `.ds-sidebar__list` of ruled `.ds-sidebar__item` lines, each a link at the left and `.ds-sidebar__meta` at the right.\n- `.ds-notice`: a note pasted on the page; `.ds-notice__title` the bold lead-in; `.ds-notice--error` for errors. A link inside a notice takes the notice's own text colour and an underline. `.ds-notices` wraps several.\n- `.ds-pagination`: separate small paper keys, `.ds-pagination__link`; `is-current` takes the bar colour, `is-disabled` is flat.\n- `.ds-breadcrumb`: a small trail at the head of the left page, with `.ds-breadcrumb__sep` and `.ds-breadcrumb__current`.\n- `.ds-dialog`: a sheet with a heavy frame: `.ds-dialog__title` strip, `.ds-dialog__body` with `.ds-dialog__heading` (the question, in the slab face) and `.ds-dialog__text`, and `.ds-dialog__actions` with the confirming key last. `.ds-dialog__backdrop` is the dimmed part of the page it lies on.\n- `.ds-empty`: a well sunk into the paper with `.ds-empty__icon`, `.ds-empty__title`, `.ds-empty__text` and one secondary key.\n- `.ds-footer`: one line on the page texture under the desk: `.ds-footer__links` at the left, `.ds-footer__note` at the right.\n- `.ds-switch`: glossy sliding ON/OFF switch over a checkbox (`.ds-switch__track`, inset, with a raised knob), set as rows of a `.ds-switches` list (`.ds-switches__row`, `.ds-switches__name`). Here: the Reminders row of the settings form.\n- `.ds-progress`: inset `<progress>` bar with a glossy fill and a `.ds-progress__label` line. Here: the facts panel of a loan.\n- `.ds-tooltip`: `?` key with a dark glossy bubble and arrow (`.ds-tooltip__trigger`, `.ds-tooltip__bubble`) shown on hover or focus. Here: on the \"Was due\" term.\n- `.ds-accordion`: `<details>` help list with glossy bar headings (`.ds-accordion__item`, `__head`, `__body`). Here: the right page of the settings spread.\n- `.ds-menu`: popover list with an arrow, hanging from a toolbar button (`<details>`, `.ds-menu__button`, `.ds-menu__list`, `.ds-menu__item`). Here: the header toolbar of the loans page.\n\n## Never\n\n- `content-width <= 1000px`: everything stays inside the book.\n- `row-gap <= 10px`: lines of a list or a table touch.\n- `font-size <= 30px`: the hero headline is the largest text.\n- `font-size >= 10px`: meta text is the smallest.\n- `font-weight >= 400`: no light weights.\n- `font-families <= 2`: Helvetica and a monospace.\n- `line-height <= 1.45`: body text is set at 1.42.\n- `underlined-links <= 10%`: links are gilt, not underlined, until hovered.\n- `letter-spacing <= 1px`: nothing is tracked wider than small capital titles.\n- `border-radius <= 20px`: the largest containers are 20px; nothing is rounder than the first structure's large key.\n- `border-width <= 1px`: every edge is a hairline.\n- `box-shadow-blur <= 20px`: the dialog's 20px shadow is the widest.\n- `transition = none`: states change at once.\n- `animation = none`: nothing moves.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. New content is a block on one of the two pages, under a `.ds-book__title`; if a page is full, the subject gets another divider and another view, never a third column or a block outside the book. A thing pasted on the paper (a card, a label, a note) takes `--color-surface` or `--color-notice`, `--radius-panel` and `--shadow-panel`; a thing ruled on the paper (a list, a table, totals) takes hairlines in `--color-border` and one heavy rule above. Keys stay matte. Do not add glossy two-tone gradients, wide soft shadows, large radii, a third type family or new colours.\n",
    "components.css": ":root {\n  --size-page: 1000px;\n  --size-nav: 58px;\n  --size-search: 190px;\n  --size-pill: 20px;\n  --size-control: 28px;\n  --size-control-large: 38px;\n  --size-icon: 16px;\n  --size-glyph: 22px;\n  --size-tab: 30px;\n  --size-thumb: 34px;\n  --size-well: 44px;\n  --size-dialog: 320px;\n  --size-hair: 1px;\n  --space-1: 3px;\n  --space-2: 6px;\n  --space-3: 10px;\n  --space-4: 14px;\n  --space-5: 22px;\n  --space-6: 30px;\n  --space-7: 44px;\n}\n\n/* shell: a toolbar across the window, under it the desk with one open book on it, the page texture below */\n.ds-page {\n  min-width: var(--size-page);\n  margin: 0;\n  padding: 0;\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n.ds-page *,\n.ds-page *::before,\n.ds-page *::after { box-sizing: border-box; }\n.ds-page__wrap {\n  width: var(--size-page);\n  margin: 0 auto;\n}\n.ds-page__desk {\n  padding: var(--space-6) 0 var(--space-7);\n  border-bottom: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-inverse) 55%, var(--color-shadow));\n  background: var(--fill-inverse);\n  box-shadow: inset 0 var(--space-2) var(--space-2) calc(var(--space-2) * -1) color-mix(in srgb, var(--color-shadow) 70%, transparent), 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 60%, transparent);\n}\n\n/* views: one screen of the example site shows at a time */\n.ds-view { display: none; }\n.ds-view:target, .ds-page:not(:has(.ds-view:target)) .ds-view--home { display: block; }\n.ds-view:target { scroll-margin-top: 100vh; }\n\n/* book: a cover with two pages lying open on it; divider tabs stand on the top edge of the right page */\n.ds-book {\n  width: var(--size-page);\n  margin: 0 auto;\n  padding: var(--space-3);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-inverse-text) 22%, var(--color-shadow));\n  border-radius: var(--radius-page);\n  background: color-mix(in srgb, var(--color-inverse) 62%, var(--color-shadow));\n  box-shadow: inset 0 var(--size-hair) 0 color-mix(in srgb, var(--color-inverse-text) 18%, transparent), var(--shadow-dialog);\n}\n.ds-book--tabbed { padding-top: var(--space-2); }\n.ds-book__spread {\n  display: flex;\n  align-items: stretch;\n}\n.ds-book__page {\n  display: flex;\n  flex: 1 1 0;\n  flex-direction: column;\n  min-width: 0;\n  padding: var(--space-5);\n  border-radius: var(--radius-panel) 0 0 var(--radius-panel);\n  background: linear-gradient(to left, color-mix(in srgb, var(--color-shadow) 12%, transparent) 0, transparent var(--space-5)), var(--color-canvas);\n  box-shadow: var(--shadow-panel);\n}\n.ds-book__page--right {\n  border-left: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 24%, var(--color-canvas));\n  border-radius: 0 var(--radius-panel) var(--radius-panel) 0;\n  background: linear-gradient(to right, color-mix(in srgb, var(--color-shadow) 12%, transparent) 0, transparent var(--space-5)), var(--color-canvas);\n}\n.ds-book__page > * { flex: 0 0 auto; }\n.ds-book__title {\n  margin: var(--space-5) 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.ds-book__title.is-first { margin-top: 0; }\n.ds-book__block { margin: var(--space-4) 0 0; }\n.ds-book__foot {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  margin: var(--space-3) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-book__rest {\n  flex: 1 1 auto;\n  min-height: var(--space-5);\n  margin: var(--space-5) 0 0;\n  background: repeating-linear-gradient(to bottom, transparent 0, transparent calc(var(--space-5) - var(--size-hair)), var(--color-border) calc(var(--space-5) - var(--size-hair)), var(--color-border) var(--space-5));\n}\n.ds-book__folio {\n  margin: var(--space-3) 0 0;\n  color: var(--color-text-muted);\n  font-family: var(--font-heading);\n  font-size: var(--text-small);\n  text-align: center;\n}\n\n/* nav: the application toolbar, a glyph over a word for each part, the current one pressed in */\n.ds-nav {\n  border-bottom: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-bar) 55%, var(--color-shadow));\n  background: var(--fill-bar);\n  box-shadow: inset 0 var(--size-hair) 0 color-mix(in srgb, var(--color-bar-text) 22%, transparent);\n  color: var(--color-bar-text);\n}\n.ds-nav__inner {\n  display: flex;\n  align-items: center;\n  gap: var(--space-5);\n  width: var(--size-page);\n  height: var(--size-nav);\n  margin: 0 auto;\n}\n.ds-brand {\n  display: flex;\n  flex: 0 0 auto;\n  align-items: center;\n  gap: var(--space-2);\n  color: var(--color-bar-text);\n  text-decoration: none;\n}\n.ds-brand__mark {\n  display: flex;\n  flex: 0 0 auto;\n  align-items: center;\n  justify-content: center;\n  width: var(--size-control);\n  height: var(--size-control);\n  padding: var(--space-1);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-button) 60%, var(--color-shadow));\n  border-radius: var(--radius-control);\n  background: var(--fill-button);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-text);\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-h2);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-shadow: var(--shadow-text);\n  text-transform: var(--heading-transform);\n}\n.ds-nav__items {\n  display: flex;\n  align-items: center;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-nav__item {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  gap: var(--space-1);\n  min-width: calc(var(--size-nav) + var(--space-4));\n  height: calc(var(--size-nav) - var(--space-3));\n  padding: 0 var(--space-3);\n  border: var(--border-width) var(--border-style) transparent;\n  border-radius: var(--radius-control);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  line-height: 1;\n  text-decoration: var(--link-decoration-quiet);\n  text-shadow: var(--shadow-text);\n  text-transform: var(--ui-transform);\n  transition: var(--transition);\n}\n.ds-nav__glyph {\n  flex: 0 0 auto;\n  width: var(--size-glyph);\n  height: var(--size-glyph);\n}\n.ds-nav__item:hover,\n.ds-nav__item.is-hover { background: color-mix(in srgb, var(--color-bar-text) 14%, transparent); }\n.ds-nav__item.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__item[href=\"#desk\"],\n.ds-page:has(#desk:target) .ds-nav__item[href=\"#desk\"],\n.ds-page:has(#loans:target) .ds-nav__item[href=\"#loans\"],\n.ds-page:has(#returned:target) .ds-nav__item[href=\"#loans\"],\n.ds-page:has(#loan:target) .ds-nav__item[href=\"#loans\"],\n.ds-page:has(#settings:target) .ds-nav__item[href=\"#settings\"] {\n  border-color: color-mix(in srgb, var(--color-shadow) 40%, transparent);\n  background: color-mix(in srgb, var(--color-shadow) 26%, transparent);\n  box-shadow: var(--shadow-control-pressed), 0 var(--size-hair) 0 color-mix(in srgb, var(--color-bar-text) 18%, transparent);\n}\n.ds-nav__item:focus-visible,\n.ds-nav__item.is-focus { outline: var(--focus-ring); }\n.ds-nav__tools {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  margin: 0 0 0 auto;\n}\n.ds-nav__search { width: var(--size-search); }\n.ds-nav__user {\n  white-space: nowrap;\n  color: var(--color-bar-text);\n  font-size: var(--text-small);\n  text-decoration: var(--link-decoration-quiet);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__user:hover,\n.ds-nav__user.is-hover { text-decoration: var(--link-decoration-hover); }\n\n/* hero: an index card clipped to the head of the first page: a ruled top, title, one line, the main key */\n.ds-hero {\n  position: relative;\n  padding: var(--space-5) var(--space-5) var(--space-4);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-accent);\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-hero::before {\n  content: \"\";\n  position: absolute;\n  top: calc(var(--space-3) * -1);\n  right: var(--space-6);\n  width: var(--space-3);\n  height: var(--space-6);\n  border: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-pill);\n  box-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-shadow) 25%, transparent);\n}\n.ds-hero__kicker {\n  margin: calc(var(--space-5) * -1) calc(var(--space-5) * -1) var(--space-4);\n  padding: var(--space-1) var(--space-5);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n}\n.ds-hero__lead {\n  margin: 0 0 var(--space-4);\n  color: var(--color-text);\n  font-size: var(--text-large);\n  line-height: var(--line-body);\n}\n.ds-hero__actions {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n\n/* page header: the head of an inner page of the book, title and one line, keys at the right, a double rule under it */\n.ds-page-header {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-4);\n  margin: var(--space-2) 0 var(--space-4);\n  padding: 0 0 var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\n  box-shadow: 0 var(--space-1) 0 calc(var(--size-hair) * -1) var(--color-canvas), 0 var(--space-1) 0 var(--color-border-strong);\n}\n.ds-page-header__copy {\n  flex: 1 1 0;\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-display);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-page-header__text {\n  margin: var(--space-1) 0 0;\n  color: var(--color-text-muted);\n}\n.ds-page-header__actions {\n  display: flex;\n  flex: 0 0 auto;\n  align-items: center;\n  gap: var(--space-2);\n}\n\n/* stats: the totals of the ledger, four figures in one ruled box, two to a line */\n.ds-stats {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  margin: var(--space-5) 0 0;\n  padding: 0;\n  border-top: var(--border-width-strong) var(--border-style) var(--color-heading);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\n  list-style: none;\n}\n.ds-stat {\n  min-width: 0;\n  padding: var(--space-3);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-stat.is-first {\n  border-left: 0;\n  padding-left: 0;\n}\n.ds-stat__value {\n  display: block;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-display);\n  line-height: var(--line-heading);\n}\n.ds-stat__label {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* grid: four shelves as bound volumes, each a block of colour with a paper label pasted on */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(2, 1fr);\n  gap: var(--space-3);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-grid__cell {\n  display: flex;\n  flex-direction: column;\n  padding: var(--space-3) var(--space-3) var(--space-3) var(--space-5);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-fill-1) 60%, var(--color-shadow));\n  border-radius: var(--radius-control) var(--radius-page) var(--radius-page) var(--radius-control);\n  background-color: var(--color-fill-1);\n  background-image: linear-gradient(to right, color-mix(in srgb, var(--color-shadow) 30%, transparent) 0, color-mix(in srgb, var(--color-shadow) 30%, transparent) var(--space-2), color-mix(in srgb, var(--color-canvas) 22%, transparent) var(--space-2), transparent var(--space-3), transparent 100%), linear-gradient(to bottom, color-mix(in srgb, var(--color-canvas) 14%, transparent) 0, transparent 50%, color-mix(in srgb, var(--color-shadow) 14%, transparent) 100%);\n  box-shadow: var(--shadow-control);\n  color: var(--color-inverse-text);\n}\n.ds-grid__cell--2 {\n  border-color: color-mix(in srgb, var(--color-fill-2) 60%, var(--color-shadow));\n  background-color: var(--color-fill-2);\n}\n.ds-grid__cell--3 {\n  border-color: color-mix(in srgb, var(--color-fill-3) 60%, var(--color-shadow));\n  background-color: var(--color-fill-3);\n}\n.ds-grid__cell--4 {\n  border-color: color-mix(in srgb, var(--color-fill-4) 60%, var(--color-shadow));\n  background-color: var(--color-fill-4);\n}\n.ds-grid__label {\n  padding: var(--space-2) var(--space-3);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 30%, var(--color-surface));\n  border-radius: var(--radius-panel);\n  background: var(--color-surface);\n  box-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-shadow) 30%, transparent);\n}\n.ds-grid__title {\n  display: block;\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-grid__title:hover,\n.ds-grid__title.is-hover { color: var(--color-link-hover); }\n.ds-grid__text {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-grid__count {\n  margin: var(--space-3) 0 0;\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-display);\n  line-height: var(--line-heading);\n  text-shadow: var(--shadow-text);\n}\n.ds-grid__note {\n  font-size: var(--text-small);\n  opacity: 0.85;\n  text-shadow: var(--shadow-text);\n}\n\n/* list: ledger lines, a thumb tile, title and meta, a label at the right */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border-strong);\n  list-style: none;\n}\n.ds-list__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  padding: var(--space-2) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-list__icon {\n  flex: 0 0 auto;\n  width: var(--size-thumb);\n  height: var(--size-thumb);\n  padding: var(--space-2);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  background: var(--fill-button-secondary);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-secondary-text);\n}\n.ds-list__body {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-list__title {\n  display: block;\n  color: var(--color-heading);\n  font-size: var(--text-h3);\n  line-height: var(--line-heading);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-list__title:hover,\n.ds-list__title.is-hover { color: var(--color-link-hover); }\n.ds-list__meta {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* table: ledger ruling, a heavy rule above the head, hairlines between entries, no frame */\n.ds-table {\n  width: 100%;\n  border-top: var(--border-width-strong) var(--border-style) var(--color-heading);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-collapse: separate;\n  border-spacing: 0;\n}\n.ds-table__head {\n  padding: var(--space-2) var(--space-2);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  text-align: left;\n  text-transform: var(--ui-transform);\n}\n.ds-table__cell {\n  padding: var(--space-2) var(--space-2);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--color-surface);\n  color: var(--color-text);\n  vertical-align: middle;\n}\n.ds-table__row.is-first .ds-table__cell { border-top: 0; }\n.ds-table__row.is-alt .ds-table__cell { background: var(--color-surface-alt); }\n.ds-table__row.is-current .ds-table__cell { background: var(--color-notice); color: var(--color-notice-text); }\n.ds-table__cell--name { color: var(--color-heading); font-weight: var(--weight-bold); }\n.ds-table__row.is-current .ds-table__cell--name { color: var(--color-notice-text); }\n.ds-table__link {\n  color: inherit;\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-table__link:hover,\n.ds-table__link.is-hover { color: var(--color-link-hover); }\n.ds-table__head.is-numeric,\n.ds-table__cell.is-numeric { text-align: right; }\n\n/* panel: a card pasted onto the page, a title strip and ruled lines of fact */\n.ds-panel {\n  margin: 0;\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__title {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel) var(--radius-panel) 0 0;\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-body);\n  text-transform: var(--ui-transform);\n}\n.ds-panel__body { padding: var(--space-4); }\n.ds-panel__text { margin: 0 0 var(--space-3); }\n.ds-panel__facts {\n  margin: 0 0 var(--space-4);\n  padding: 0;\n}\n.ds-panel__fact {\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-2) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-panel__term { color: var(--color-text-muted); }\n.ds-panel__value {\n  margin: 0;\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n  text-align: right;\n}\n\n/* tabs: divider tabs standing on the top edge of the right page */\n.ds-tabs {\n  display: flex;\n  align-items: flex-end;\n  justify-content: flex-end;\n  gap: var(--space-1);\n  height: var(--size-tab);\n  margin: 0;\n  padding: 0 var(--space-5);\n  list-style: none;\n}\n.ds-tabs__tab {\n  display: block;\n  height: calc(var(--size-tab) - var(--space-2));\n  padding: 0 var(--space-4);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 35%, var(--color-bar-alt));\n  border-bottom: 0;\n  border-radius: var(--radius-page) var(--radius-page) 0 0;\n  background: var(--fill-bar-alt);\n  box-shadow: inset 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 50%, transparent);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: calc(var(--size-tab) - var(--space-2));\n  text-decoration: none;\n  text-transform: var(--ui-transform);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover { color: var(--color-link-hover); }\n.ds-tabs__tab.is-current {\n  height: var(--size-tab);\n  border-color: color-mix(in srgb, var(--color-shadow) 24%, var(--color-canvas));\n  background: var(--color-canvas);\n  color: var(--color-heading);\n  line-height: var(--size-tab);\n}\n\n/* sidebar: an address-book block, a small heading and ruled names */\n.ds-sidebar { margin: var(--space-5) 0 0; }\n.ds-sidebar__title {\n  margin: 0;\n  padding: 0 0 var(--space-1);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-heading-alt);\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-sidebar__item {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-2) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-sidebar__meta {\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  text-align: right;\n}\n\n/* pagination: page numbers as plain keys, the current one inked in */\n.ds-pagination {\n  display: flex;\n  align-items: center;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-pagination__link {\n  display: block;\n  min-width: calc(var(--size-pill) + var(--space-1));\n  height: calc(var(--size-pill) + var(--space-1));\n  padding: 0 var(--space-2);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  line-height: calc(var(--size-pill) + var(--space-1) - var(--border-width) - var(--border-width));\n  text-align: center;\n  text-decoration: none;\n}\n.ds-pagination__link--prev, .ds-pagination__link--next { display: grid; place-items: center; }\n.ds-pagination__link--prev::before, .ds-pagination__link--next::before { content: \"\"; box-sizing: border-box; width: calc(var(--text-small) * 0.5); height: calc(var(--text-small) * 0.5); border-right: max(var(--border-width), calc(var(--text-small) * 0.12)) solid currentColor; border-bottom: max(var(--border-width), calc(var(--text-small) * 0.12)) solid currentColor; transform: translateX(-25%) rotate(-45deg); }\n.ds-pagination__link--prev::before { transform: translateX(25%) rotate(135deg); }\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover { color: var(--color-link-hover); }\n.ds-pagination__link.is-current {\n  border-color: color-mix(in srgb, var(--color-bar) 60%, var(--color-shadow));\n  background: var(--color-bar);\n  box-shadow: var(--shadow-control-pressed);\n  color: var(--color-bar-text);\n}\n.ds-pagination__link.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n}\n\n/* form: labels above the fields, fields the width of the page */\n.ds-form { margin: 0; }\n.ds-form__row { margin: 0 0 var(--space-3); }\n.ds-form__pair {\n  display: flex;\n  gap: var(--space-4);\n}\n.ds-form__pair .ds-form__row {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-form__label {\n  display: block;\n  margin: 0 0 var(--space-1);\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n}\n.ds-form__input,\n.ds-form__select,\n.ds-form__textarea {\n  display: block;\n  width: 100%;\n  margin: 0;\n  padding: var(--space-1) var(--space-2);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-top-color: color-mix(in srgb, var(--color-input-border) 70%, var(--color-shadow));\n  border-radius: var(--radius-control);\n  background: var(--fill-input);\n  box-shadow: inset 0 var(--size-hair) var(--space-1) color-mix(in srgb, var(--color-shadow) 10%, transparent);\n  color: var(--color-input-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-form__input,\n.ds-form__select { height: var(--size-control); }\n.ds-form__select {\n  border-color: var(--color-border-strong);\n  background: var(--fill-button-secondary);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-secondary-text);\n}\n.ds-form__textarea {\n  height: calc(var(--size-control) * 2 + var(--space-3));\n  resize: vertical;\n}\n.ds-form__input::placeholder,\n.ds-form__textarea::placeholder { color: var(--color-disabled-text); opacity: 1; }\n.ds-form__input:focus,\n.ds-form__input.is-focus,\n.ds-form__select:focus,\n.ds-form__select.is-focus,\n.ds-form__textarea:focus,\n.ds-form__textarea.is-focus {\n  outline: var(--focus-ring);\n  border-color: var(--color-focus);\n}\n.ds-form__input:disabled,\n.ds-form__input.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n}\n.ds-form__input.is-error {\n  border-color: var(--color-danger);\n  background: var(--color-danger-surface);\n}\n.ds-form__error {\n  margin: var(--space-1) 0 0;\n  color: var(--color-danger);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-form__hint {\n  margin: var(--space-1) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-form__check {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n}\n.ds-form__checkbox { margin: 0; }\n.ds-form__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n  margin: var(--space-4) 0 0;\n  padding: var(--space-3) 0 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border-strong);\n}\n.ds-button.ds-form__actions-end { margin-left: auto; }\n\n/* dialog: a sheet of paper with a title strip, lying on a dimmed part of the page */\n.ds-dialog__backdrop {\n  display: flex;\n  justify-content: center;\n  padding: var(--space-5) var(--space-4);\n  border-radius: var(--radius-panel);\n  background: var(--color-overlay);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-dialog {\n  width: var(--size-dialog);\n  max-width: 100%;\n  border: var(--border-width-strong) var(--border-style) color-mix(in srgb, var(--color-shadow) 45%, var(--color-bar-alt));\n  border-radius: var(--radius-page);\n  background: var(--color-surface);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: calc(var(--radius-page) - var(--border-width-strong)) calc(var(--radius-page) - var(--border-width-strong)) 0 0;\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-body);\n  text-transform: var(--ui-transform);\n}\n.ds-dialog__body { padding: var(--space-4); }\n.ds-dialog__heading {\n  margin: 0 0 var(--space-1);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n.ds-dialog__text { margin: 0; }\n.ds-dialog__actions {\n  display: flex;\n  justify-content: flex-end;\n  gap: var(--space-2);\n  padding: var(--space-3) var(--space-4);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: 0 0 calc(var(--radius-page) - var(--border-width-strong)) calc(var(--radius-page) - var(--border-width-strong));\n  background: var(--color-surface-alt);\n}\n\n/* footer: on the page texture under the desk, links left, a note right */\n.ds-footer {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  gap: var(--space-5);\n  width: var(--size-page);\n  margin: 0 auto;\n  padding: var(--space-5) 0 var(--space-6);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-footer__links {\n  display: flex;\n  gap: var(--space-4);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__note { margin: 0; }\n\n/* typography */\n.ds-prose { margin: 0; }\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 { margin-top: 0; font-size: var(--text-h1); }\n.ds-prose h2 { font-size: var(--text-h2); }\n.ds-prose h3 { font-size: var(--text-h3); font-weight: var(--weight-bold); }\n.ds-prose > :first-child { margin-top: 0; }\n.ds-prose > :last-child { margin-bottom: 0; }\n.ds-prose p { margin: 0 0 var(--space-3); }\n.ds-prose ul,\n.ds-prose ol {\n  margin: 0 0 var(--space-3);\n  padding: 0 0 0 var(--space-5);\n}\n.ds-prose li { margin: 0 0 var(--space-1); }\n.ds-prose strong { color: var(--color-heading); font-weight: var(--weight-bold); }\n.ds-prose a { color: var(--color-link); text-decoration: var(--link-decoration); }\n.ds-prose a:hover { color: var(--color-link-hover); text-decoration: var(--link-decoration-hover); }\n.ds-prose code {\n  padding: 0 var(--space-1);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: calc(var(--radius-control) - var(--size-hair));\n  background: var(--color-surface-alt);\n  color: var(--color-heading);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n}\n.ds-prose__lead {\n  color: var(--color-heading);\n  font-size: var(--text-large);\n}\n\n/* links */\n.ds-links {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2) var(--space-5);\n  margin: 0;\n}\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 { color: var(--color-link-visited); }\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 { color: var(--color-link-active); }\n.ds-link:focus-visible,\n.ds-link.is-focus { outline: var(--focus-ring); }\n.ds-link--quiet {\n  color: var(--color-link-quiet);\n  text-decoration: var(--link-decoration-quiet);\n}\n\n/* buttons: convex keys with a bright upper edge, text engraved */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n}\n.ds-button {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: var(--space-2);\n  height: var(--size-control);\n  margin: 0;\n  padding: 0 var(--space-4);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-button) 60%, var(--color-shadow));\n  border-radius: var(--radius-control);\n  background: var(--fill-button);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: 1;\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  text-transform: var(--ui-transform);\n  white-space: nowrap;\n  cursor: pointer;\n  transition: var(--transition);\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  box-shadow: var(--shadow-control-hover);\n  color: var(--color-button-hover-text);\n}\n.ds-button:active,\n.ds-button.is-active {\n  background: linear-gradient(var(--color-button), var(--color-button));\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus { outline: var(--focus-ring); }\n.ds-button--secondary {\n  border-color: var(--color-border-strong);\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\n}\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  border-color: color-mix(in srgb, var(--color-border-strong) 70%, var(--color-shadow));\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n}\n.ds-button--secondary:active,\n.ds-button--secondary.is-active { background: linear-gradient(var(--color-button-secondary), var(--color-button-secondary)); }\n.ds-button--danger {\n  border-color: color-mix(in srgb, var(--color-danger) 60%, var(--color-shadow));\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-danger) 70%, var(--color-canvas)) 0, var(--color-danger) 60%, color-mix(in srgb, var(--color-danger) 84%, var(--color-shadow)) 100%);\n  color: var(--color-accent-text);\n}\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-danger) 60%, var(--color-canvas)) 0, color-mix(in srgb, var(--color-danger) 92%, var(--color-canvas)) 60%, var(--color-danger) 100%);\n  color: var(--color-accent-text);\n}\n.ds-button--danger:active,\n.ds-button--danger.is-active { background: linear-gradient(var(--color-danger), var(--color-danger)); }\n.ds-button--large {\n  height: var(--size-control-large);\n  padding: 0 var(--space-5);\n  border-radius: calc(var(--radius-control) + var(--space-1));\n  font-size: var(--text-large);\n}\n.ds-button--small {\n  height: var(--size-pill);\n  padding: 0 var(--space-3);\n  font-size: var(--text-small);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  border-color: var(--color-border-strong);\n  background: var(--color-disabled);\n  box-shadow: none;\n  color: var(--color-disabled-text);\n  text-shadow: none;\n  cursor: default;\n}\n.ds-button__icon {\n  flex: 0 0 auto;\n  width: var(--size-icon);\n  height: var(--size-icon);\n}\n\n/* badge: a small label, glossy, in a status colour where it marks a state */\n.ds-badges {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n}\n.ds-badge {\n  display: inline-block;\n  min-width: var(--size-pill);\n  padding: 0 var(--space-2);\n  border-radius: var(--radius-pill);\n  background: var(--fill-accent);\n  box-shadow: inset 0 var(--size-hair) 0 color-mix(in srgb, var(--color-accent-text) 35%, transparent), 0 var(--size-hair) var(--size-hair) color-mix(in srgb, var(--color-shadow) 35%, transparent);\n  color: var(--color-accent-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-body);\n  text-align: center;\n  text-shadow: var(--shadow-text);\n  white-space: nowrap;\n}\n.ds-badge--count {\n  background: color-mix(in srgb, var(--color-bar-alt) 80%, var(--color-shadow));\n  box-shadow: var(--shadow-control-pressed);\n  color: var(--color-bar-text);\n}\n.ds-badge--new {\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-accent-alt) 70%, var(--color-canvas)) 0, var(--color-accent-alt) 100%);\n  color: var(--color-heading);\n  text-shadow: none;\n}\n.ds-badge--success {\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-success) 72%, var(--color-canvas)) 0, var(--color-success) 70%, color-mix(in srgb, var(--color-success) 88%, var(--color-shadow)) 100%);\n}\n.ds-badge--warning {\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-warning) 72%, var(--color-canvas)) 0, var(--color-warning) 70%, color-mix(in srgb, var(--color-warning) 88%, var(--color-shadow)) 100%);\n  color: var(--color-heading);\n  text-shadow: none;\n}\n.ds-badge--danger {\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-danger) 72%, var(--color-canvas)) 0, var(--color-danger) 70%, color-mix(in srgb, var(--color-danger) 88%, var(--color-shadow)) 100%);\n}\n\n/* notice */\n.ds-notices { margin: 0; }\n.ds-notice {\n  margin: 0 0 var(--space-3);\n  padding: var(--space-2) var(--space-4);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-notice) 78%, var(--color-notice-text));\n  border-radius: var(--radius-control);\n  background: var(--color-notice);\n  box-shadow: inset 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 60%, transparent);\n  color: var(--color-notice-text);\n}\n.ds-notices > .ds-notice:last-child { margin-bottom: 0; }\n.ds-notice__title { font-weight: var(--weight-bold); }\n.ds-notice .ds-link {\n  color: inherit;\n  text-decoration: underline;\n}\n.ds-notice--error {\n  border-color: color-mix(in srgb, var(--color-danger-surface) 60%, var(--color-danger));\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n}\n\n/* breadcrumb: a small trail at the head of a page of the book */\n.ds-breadcrumb {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-breadcrumb__sep { color: var(--color-text-muted); }\n.ds-breadcrumb__current { color: var(--color-heading); font-weight: var(--weight-bold); }\n\n/* empty state: a well sunk into the paper */\n.ds-empty {\n  padding: var(--space-5);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-top-color: var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  background: var(--color-surface-alt);\n  box-shadow: inset 0 var(--size-hair) var(--space-1) color-mix(in srgb, var(--color-shadow) 12%, transparent), 0 var(--size-hair) 0 var(--color-canvas);\n  text-align: center;\n}\n.ds-empty__icon {\n  width: var(--size-well);\n  height: var(--size-well);\n  margin: 0 0 var(--space-1);\n  color: var(--color-border-strong);\n}\n.ds-empty__title {\n  margin: 0 0 var(--space-1);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-3);\n  color: var(--color-text-muted);\n}\n\n/* Period components: switch, progress, tooltip, carousel, avatar, accordion, menu. Tokens only. */\n.ds-switch { display: inline-flex; flex: none; align-items: center; cursor: pointer; }\n.ds-switch input { position: absolute; opacity: 0; width: var(--size-hair); height: var(--size-hair); }\n.ds-switch__track { position: relative; display: block; flex: none; width: calc(var(--size-control) * 2); height: var(--size-pill); background: var(--fill-input); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-pill); box-shadow: var(--shadow-control-pressed); }\n.ds-switch__track::before { content: \"OFF\"; position: absolute; top: 0; right: var(--space-2); line-height: var(--size-pill); font-family: var(--font-ui); font-size: var(--text-small); font-weight: var(--weight-bold); color: var(--color-text-muted); }\n.ds-switch__track::after { content: \"\"; position: absolute; top: var(--size-hair); left: var(--size-hair); width: var(--size-control); height: var(--size-icon); background: var(--fill-button-secondary); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-pill); box-shadow: var(--shadow-control); }\n.ds-switch input:checked + .ds-switch__track { background: var(--fill-button); border-color: var(--color-button); }\n.ds-switch input:checked + .ds-switch__track::before { content: \"ON\"; left: var(--space-3); right: auto; color: var(--color-button-text); text-shadow: var(--shadow-text); }\n.ds-switch input:checked + .ds-switch__track::after { left: calc(var(--size-control) + var(--space-1)); }\n.ds-switch input:focus-visible + .ds-switch__track { outline: var(--focus-ring); }\n.ds-switches { width: 100%; max-width: calc(var(--size-control) * 11); margin: var(--space-2) 0; padding: 0; list-style: none; background: var(--color-surface); border: var(--border-width) var(--border-style) var(--color-border-strong); border-radius: var(--radius-panel); box-shadow: var(--shadow-panel); }\n.ds-switches__row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); min-height: calc(var(--size-control) + var(--space-2)); padding: var(--space-1) var(--space-3); }\n.ds-switches__row + .ds-switches__row { border-top: var(--border-width) var(--border-style) var(--color-border); }\n.ds-switches__name { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 0; font-family: var(--font-ui); font-size: var(--text-ui); font-weight: var(--weight-bold); color: var(--color-text); }\n\n.ds-progress { display: block; width: 100%; max-width: calc(var(--size-control) * 10); height: var(--size-icon); margin: var(--space-2) 0 var(--space-1); padding: 0; appearance: none; -webkit-appearance: none; background: var(--fill-input); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-pill); box-shadow: var(--shadow-control-pressed); overflow: hidden; }\n.ds-progress::-webkit-progress-bar { background: var(--fill-input); box-shadow: var(--shadow-control-pressed); }\n.ds-progress::-webkit-progress-value { background: var(--fill-button); border-radius: var(--radius-pill); box-shadow: var(--shadow-control); }\n.ds-progress::-moz-progress-bar { background: var(--fill-button); border-radius: var(--radius-pill); box-shadow: var(--shadow-control); }\n.ds-progress__label { display: block; margin: 0; font-family: var(--font-ui); font-size: var(--text-small); font-weight: var(--weight-body); color: var(--color-text-muted); }\n\n.ds-tooltip { position: relative; display: inline-flex; flex: none; align-items: center; margin-left: var(--space-1); vertical-align: middle; }\n.ds-tooltip__trigger { display: inline-flex; align-items: center; justify-content: center; width: var(--size-icon); height: var(--size-icon); padding: 0; background: var(--fill-button-secondary); color: var(--color-button-secondary-text); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-pill); box-shadow: var(--shadow-control); font-family: var(--font-ui); font-size: var(--text-small); font-weight: var(--weight-bold); line-height: 1; cursor: help; }\n.ds-tooltip__bubble { position: absolute; left: 50%; bottom: calc(100% + var(--space-3)); z-index: 5; width: max-content; max-width: calc(var(--size-control) * 8); padding: var(--space-2) var(--space-3); transform: translateX(-50%); visibility: hidden; opacity: 0; background: var(--fill-inverse); color: var(--color-inverse-text); border-radius: var(--radius-control); box-shadow: var(--shadow-control), var(--shadow-dialog); font-family: var(--font-ui); font-size: var(--text-small); font-weight: var(--weight-body); line-height: var(--line-body); letter-spacing: 0; text-align: left; text-transform: none; text-shadow: var(--shadow-text); white-space: normal; }\n.ds-tooltip__bubble::after { content: \"\"; position: absolute; left: 50%; top: 100%; width: var(--space-3); height: var(--space-3); margin: calc(var(--space-3) / -2) 0 0 calc(var(--space-3) / -2); transform: rotate(45deg); background: var(--color-inverse); }\n.ds-tooltip:hover .ds-tooltip__bubble, .ds-tooltip:focus-within .ds-tooltip__bubble { visibility: visible; opacity: 1; }\n\n.ds-accordion { margin: var(--space-3) 0 0; border: var(--border-width) var(--border-style) var(--color-border-strong); border-radius: var(--radius-panel); box-shadow: var(--shadow-control); overflow: hidden; }\n.ds-accordion__item + .ds-accordion__item { border-top: var(--border-width) var(--border-style) var(--color-border-strong); }\n.ds-accordion__head { display: block; padding: var(--space-2) var(--space-3); background: var(--fill-bar-alt); color: var(--color-bar-alt-text); box-shadow: var(--shadow-control); font-family: var(--font-ui); font-size: var(--text-ui); font-weight: var(--weight-bold); cursor: pointer; list-style: none; text-shadow: var(--shadow-text); }\n.ds-accordion__head::-webkit-details-marker { display: none; }\n.ds-accordion__head::before { content: \"\"; display: inline-block; width: 0; height: 0; margin-right: calc(var(--space-4) - calc(var(--text-ui) * 0.4)); border: calc(var(--text-ui) * 0.3) solid transparent; border-left: calc(var(--text-ui) * 0.4) solid currentColor; border-right-width: 0; vertical-align: calc(var(--text-ui) * 0.05); }\n.ds-accordion__item[open] > .ds-accordion__head::before { transform: rotate(90deg); }\n.ds-accordion__item[open] > .ds-accordion__head { border-bottom: var(--border-width) var(--border-style) var(--color-border-strong); }\n.ds-accordion__body { margin: 0; padding: var(--space-3) var(--space-4); background: var(--color-surface); color: var(--color-text); box-shadow: var(--shadow-control-pressed); font-family: var(--font-body); font-size: var(--text-base); line-height: var(--line-body); }\n\n.ds-menu { position: relative; display: inline-block; flex: none; }\n.ds-menu__button { display: inline-flex; align-items: center; height: var(--size-control); padding: 0 var(--space-3); background: var(--fill-button-secondary); color: var(--color-button-secondary-text); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-control); box-shadow: var(--shadow-control); font-family: var(--font-ui); font-size: var(--text-ui); font-weight: var(--weight-ui); cursor: pointer; list-style: none; }\n.ds-menu__button::-webkit-details-marker { display: none; }\n.ds-menu__button::after { content: \"\"; flex: none; width: 0; height: 0; border: calc(var(--text-ui) * 0.3) solid transparent; border-top: calc(var(--text-ui) * 0.36) solid currentColor; border-bottom-width: 0; margin-left: var(--space-2); }\n.ds-menu__button:hover { box-shadow: var(--shadow-control-hover); }\n.ds-menu[open] > .ds-menu__button { box-shadow: var(--shadow-control-pressed); }\n.ds-menu__list { position: absolute; top: calc(100% + var(--space-2)); right: 0; z-index: 6; min-width: calc(var(--size-control) * 6); margin: 0; padding: var(--space-1) 0; list-style: none; background: var(--color-surface); border: var(--border-width) var(--border-style) var(--color-border-strong); border-radius: var(--radius-control); box-shadow: var(--shadow-dialog); text-align: left; }\n.ds-menu__list::before { content: \"\"; position: absolute; right: var(--space-4); bottom: 100%; width: var(--space-3); height: var(--space-3); margin-bottom: calc(var(--space-3) / -2 + var(--size-hair)); transform: rotate(45deg); background: var(--color-surface); border-top: var(--border-width) var(--border-style) var(--color-border-strong); border-left: var(--border-width) var(--border-style) var(--color-border-strong); }\n.ds-menu__item { position: relative; display: block; padding: var(--space-2) var(--space-4); color: var(--color-text); font-family: var(--font-ui); font-size: var(--text-ui); text-decoration: none; white-space: nowrap; }\n.ds-menu__item:hover, .ds-menu__item:focus { background: var(--fill-button); color: var(--color-button-text); text-shadow: var(--shadow-text); }\n",
    "specimen.html": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>chronoskin, skeuomorphism lending ledger specimen</title>\n<meta name=\"viewport\" content=\"width=1280\">\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<header class=\"ds-nav\" data-component=\"nav\">\n  <div class=\"ds-nav__inner\">\n    <a class=\"ds-brand\" data-component=\"brand\" href=\"#\">\n      <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12L9 3.5H21V20.5H9Z\" stroke-width=\"2\"/><circle cx=\"9\" cy=\"12\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M12.5 7H17.6V17H12.5\" stroke-width=\"1.3\" stroke-dasharray=\"2 1.5\" stroke-linecap=\"butt\"/></svg></span>\n      <span class=\"ds-brand__name\">chronoskin</span>\n    </a>\n    <ul class=\"ds-nav__items\">\n      <li><a class=\"ds-nav__item\" href=\"#desk\"><svg class=\"ds-nav__glyph\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M3 10l8-7 8 7v9h-5v-6H8v6H3z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>Desk</a></li>\n      <li><a class=\"ds-nav__item\" href=\"#loans\"><svg class=\"ds-nav__glyph\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M4 3h12a2 2 0 0 1 2 2v14H6a2 2 0 0 1-2-2zM4 17a2 2 0 0 1 2-2h12M8 7h6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>Loans</a></li>\n      <li><a class=\"ds-nav__item\" href=\"#settings\"><svg class=\"ds-nav__glyph\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M11 7.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7zM11 2v3M11 17v3M2 11h3M17 11h3M4.6 4.6l2.1 2.1M15.3 15.3l2.1 2.1M4.6 17.4l2.1-2.1M15.3 6.7l2.1-2.1\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>Settings</a></li>\n    </ul>\n    <div class=\"ds-nav__tools\">\n      <input class=\"ds-form__input ds-nav__search is-focus\" type=\"text\" value=\"hedge\" aria-label=\"Find a thing or a person\">\n      <a class=\"ds-button ds-button--secondary ds-button--small\" href=\"#loans\">Find</a>\n      <a class=\"ds-nav__user\" href=\"#settings\">Marta&rsquo;s ledger</a>\n    </div>\n  </div>\n</header>\n\n<main class=\"ds-page__desk\">\n\n<section class=\"ds-view ds-view--home\" id=\"desk\">\n  <div class=\"ds-book\">\n    <div class=\"ds-book__spread\">\n      <div class=\"ds-book__page\">\n        <div class=\"ds-hero\" data-component=\"hero\">\n          <p class=\"ds-hero__kicker\">Tuesday, 14 May</p>\n          <h1 class=\"ds-hero__title\">Three things are due back this week.</h1>\n          <p class=\"ds-hero__lead\">Fourteen of your things are out with nine neighbours. One is a fortnight late.</p>\n          <div class=\"ds-hero__actions\">\n            <a class=\"ds-button ds-button--large\" href=\"#loans\">See what is out</a>\n            <a class=\"ds-button ds-button--secondary ds-button--large is-hover\" href=\"#loan\">Open the late one</a>\n          </div>\n        </div>\n        <ul class=\"ds-stats\" data-component=\"stats\">\n          <li class=\"ds-stat is-first\"><span class=\"ds-stat__value\">14</span><span class=\"ds-stat__label\">Out now</span></li>\n          <li class=\"ds-stat\"><span class=\"ds-stat__value\">3</span><span class=\"ds-stat__label\">Due this week</span></li>\n          <li class=\"ds-stat\"><span class=\"ds-stat__value\">1</span><span class=\"ds-stat__label\">Overdue</span></li>\n          <li class=\"ds-stat\"><span class=\"ds-stat__value\">212</span><span class=\"ds-stat__label\">Came back</span></li>\n        </ul>\n        <h2 class=\"ds-book__title\">Due back soonest</h2>\n        <ul class=\"ds-list\" data-component=\"list\">\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__icon\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M5 19l8-8M14 3a4 4 0 0 0 5 5l-3 3-5-5z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#loan\">Hedge trimmer</a><span class=\"ds-list__meta\">With Anselm since 12 April &middot; was due 30 April</span></div>\n            <span class=\"ds-badge ds-badge--danger\">Overdue</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__icon\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M4 3h12a2 2 0 0 1 2 2v14H6a2 2 0 0 1-2-2zM4 17a2 2 0 0 1 2-2h12M8 7h6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n            <div class=\"ds-list__body\"><a class=\"ds-list__title is-hover\" href=\"#loans\">A year of preserves</a><span class=\"ds-list__meta\">With Odile since 2 May &middot; due Thursday</span></div>\n            <span class=\"ds-badge ds-badge--warning\">Due soon</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__icon\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M4 9h14v7a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3zM2 9h18M9 5h4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#loans\">Jam pan, the large one</a><span class=\"ds-list__meta\">With Margit since 6 May &middot; due Friday</span></div>\n            <span class=\"ds-badge ds-badge--warning\">Due soon</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__icon\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M4 18C4 9 10 4 19 4c0 9-5 15-14 15zM4 18l8-8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#loans\">Bulb planter</a><span class=\"ds-list__meta\">With Tobias since 9 May &middot; due Sunday</span></div>\n            <span class=\"ds-badge\">New</span>\n          </li>\n        </ul>\n        <div class=\"ds-book__foot\">\n          <a class=\"ds-link\" href=\"#loans\">All fourteen loans</a>\n          <span>4 of 14</span>\n        </div>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">1</p>\n      </div>\n      <div class=\"ds-book__page ds-book__page--right\">\n        <h2 class=\"ds-book__title is-first\">The shelves</h2>\n        <ul class=\"ds-grid\" data-component=\"grid\">\n          <li class=\"ds-grid__cell\">\n            <div class=\"ds-grid__label\"><a class=\"ds-grid__title\" href=\"#loans\">Books</a><span class=\"ds-grid__text\">Cookery, gardens, maps</span></div>\n            <span class=\"ds-grid__count\">38</span><span class=\"ds-grid__note\">6 out with neighbours</span>\n          </li>\n          <li class=\"ds-grid__cell ds-grid__cell--2\">\n            <div class=\"ds-grid__label\"><a class=\"ds-grid__title\" href=\"#loans\">Tools</a><span class=\"ds-grid__text\">Shed and workbench</span></div>\n            <span class=\"ds-grid__count\">24</span><span class=\"ds-grid__note\">4 out, 1 overdue</span>\n          </li>\n          <li class=\"ds-grid__cell ds-grid__cell--3\">\n            <div class=\"ds-grid__label\"><a class=\"ds-grid__title is-hover\" href=\"#loans\">Kitchen</a><span class=\"ds-grid__text\">Pans, moulds, the mill</span></div>\n            <span class=\"ds-grid__count\">17</span><span class=\"ds-grid__note\">3 out with neighbours</span>\n          </li>\n          <li class=\"ds-grid__cell ds-grid__cell--4\">\n            <div class=\"ds-grid__label\"><a class=\"ds-grid__title\" href=\"#returned\">Garden</a><span class=\"ds-grid__text\">Planters, nets, canes</span></div>\n            <span class=\"ds-grid__count\">11</span><span class=\"ds-grid__note\">1 out with a neighbour</span>\n          </li>\n        </ul>\n        <div class=\"ds-sidebar\" data-component=\"sidebar\">\n          <h2 class=\"ds-sidebar__title\">Who has what</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#loan\">Anselm, at the mill</a><span class=\"ds-sidebar__meta\">3 things, 1 late</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#loans\">Odile, next door</a><span class=\"ds-sidebar__meta\">2 things</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#loans\">Margit, at the forge</a><span class=\"ds-sidebar__meta\">2 things</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#loans\">Tobias, by the church</a><span class=\"ds-sidebar__meta\">1 thing</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#returned\">Five others</a><span class=\"ds-sidebar__meta\">6 things</span></li>\n          </ul>\n        </div>\n        <p class=\"ds-notice ds-book__block\"><span class=\"ds-notice__title\">Reminders go out on Mondays.</span> Change the day in <a class=\"ds-link\" href=\"#settings\">settings</a>.</p>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">2</p>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"loans\">\n  <div class=\"ds-book ds-book--tabbed\">\n      <ul class=\"ds-tabs\" data-component=\"tabs\">\n        <li><a class=\"ds-tabs__tab is-current\" href=\"#loans\">Out now</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#returned\">Returned</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#loan\">Open entry</a></li>\n      </ul>\n    <div class=\"ds-book__spread\">\n      <div class=\"ds-book__page\">\n          <ol class=\"ds-breadcrumb\">\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#desk\">Desk</a></li>\n            <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n            <li class=\"ds-breadcrumb__current\">Loans</li>\n          </ol>\n          <header class=\"ds-page-header\" data-component=\"page-header\">\n            <div class=\"ds-page-header__copy\">\n              <h1 class=\"ds-page-header__title\">Out now</h1>\n              <p class=\"ds-page-header__text\">Fourteen things, the latest lent first.</p>\n            </div>\n            <div class=\"ds-page-header__actions\">\n              <details class=\"ds-menu\" data-component=\"menu\"><summary class=\"ds-menu__button\">More</summary><ul class=\"ds-menu__list\"><li><a class=\"ds-menu__item\" href=\"#settings\">Settings</a></li><li><a class=\"ds-menu__item\" href=\"#settings\">Preferences</a></li><li><a class=\"ds-menu__item\" href=\"#desk\">Back to the start</a></li></ul></details>\n              <a class=\"ds-button ds-button--secondary\" href=\"#loans\">Print</a>\n              <a class=\"ds-button\" href=\"#settings\">Remind all</a>\n            </div>\n          </header>\n          <table class=\"ds-table\" data-component=\"table\">\n            <thead>\n              <tr><th class=\"ds-table__head\">Thing</th><th class=\"ds-table__head\">With</th><th class=\"ds-table__head\">State</th><th class=\"ds-table__head is-numeric\">Days out</th></tr>\n            </thead>\n            <tbody>\n              <tr class=\"ds-table__row is-first\"><td class=\"ds-table__cell ds-table__cell--name\"><a class=\"ds-table__link\" href=\"#loan\">Bulb planter</a></td><td class=\"ds-table__cell\">Tobias</td><td class=\"ds-table__cell\"><span class=\"ds-badge\">New</span></td><td class=\"ds-table__cell is-numeric\">5</td></tr>\n              <tr class=\"ds-table__row is-alt\"><td class=\"ds-table__cell ds-table__cell--name\"><a class=\"ds-table__link\" href=\"#loan\">Jam pan, the large one</a></td><td class=\"ds-table__cell\">Margit</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">Due soon</span></td><td class=\"ds-table__cell is-numeric\">8</td></tr>\n              <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name\"><a class=\"ds-table__link\" href=\"#loan\">A year of preserves</a></td><td class=\"ds-table__cell\">Odile</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">Due soon</span></td><td class=\"ds-table__cell is-numeric\">12</td></tr>\n              <tr class=\"ds-table__row is-alt\"><td class=\"ds-table__cell ds-table__cell--name\"><a class=\"ds-table__link\" href=\"#loan\">Apple press</a></td><td class=\"ds-table__cell\">Odile</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">In hand</span></td><td class=\"ds-table__cell is-numeric\">19</td></tr>\n              <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name\"><a class=\"ds-table__link\" href=\"#loan\">Maps of the north coast</a></td><td class=\"ds-table__cell\">Margit</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">In hand</span></td><td class=\"ds-table__cell is-numeric\">23</td></tr>\n              <tr class=\"ds-table__row is-current\"><td class=\"ds-table__cell ds-table__cell--name\"><a class=\"ds-table__link\" href=\"#loan\">Hedge trimmer</a></td><td class=\"ds-table__cell\">Anselm</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">Overdue</span></td><td class=\"ds-table__cell is-numeric\">32</td></tr>\n            </tbody>\n          </table>\n          <div class=\"ds-book__foot\">\n            <ul class=\"ds-pagination\" data-component=\"pagination\">\n              <li><a class=\"ds-pagination__link ds-pagination__link--prev is-disabled\" href=\"#loans\" aria-label=\"Previous page\"></a></li>\n              <li><a class=\"ds-pagination__link is-current\" href=\"#loans\">1</a></li>\n              <li><a class=\"ds-pagination__link is-hover\" href=\"#loans\">2</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#loans\">3</a></li>\n              <li><a class=\"ds-pagination__link ds-pagination__link--next\" href=\"#loans\" aria-label=\"Next page\"></a></li>\n            </ul>\n            <span>1 to 6 of 14</span>\n          </div>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">3</p>\n      </div>\n      <div class=\"ds-book__page ds-book__page--right\">\n        <h2 class=\"ds-book__title is-first\">The marked line</h2>\n        <div class=\"ds-panel\" data-component=\"panel\">\n          <h3 class=\"ds-panel__title\">Hedge trimmer</h3>\n          <div class=\"ds-panel__body\">\n            <dl class=\"ds-panel__facts\">\n              <div class=\"ds-panel__fact\"><dt class=\"ds-panel__term\">With</dt><dd class=\"ds-panel__value\">Anselm, at the mill</dd></div>\n              <div class=\"ds-panel__fact\"><dt class=\"ds-panel__term\">Lent on</dt><dd class=\"ds-panel__value\">12 April</dd></div>\n              <div class=\"ds-panel__fact\"><dt class=\"ds-panel__term\">Was due</dt><dd class=\"ds-panel__value\">30 April</dd></div>\n              <div class=\"ds-panel__fact\"><dt class=\"ds-panel__term\">Reminders sent</dt><dd class=\"ds-panel__value\">2</dd></div>\n            </dl>\n            <div class=\"ds-buttons\">\n              <a class=\"ds-button\" href=\"#returned\">Mark as returned</a>\n              <a class=\"ds-button ds-button--secondary\" href=\"#loan\">Open the entry</a>\n            </div>\n          </div>\n        </div>\n        <h2 class=\"ds-book__title\">What the labels mean</h2>\n        <ul class=\"ds-list\">\n          <li class=\"ds-list__item\"><div class=\"ds-list__body\"><span class=\"ds-list__title\">In hand</span><span class=\"ds-list__meta\">Out, and not due for a week or more</span></div><span class=\"ds-badge ds-badge--success\">In hand</span></li>\n          <li class=\"ds-list__item\"><div class=\"ds-list__body\"><span class=\"ds-list__title\">Due soon</span><span class=\"ds-list__meta\">Due back within seven days</span></div><span class=\"ds-badge ds-badge--warning\">Due soon</span></li>\n          <li class=\"ds-list__item\"><div class=\"ds-list__body\"><span class=\"ds-list__title\">Overdue</span><span class=\"ds-list__meta\">Past its day; a reminder goes each Monday</span></div><span class=\"ds-badge ds-badge--danger\">Overdue</span></li>\n        </ul>\n        <div class=\"ds-book__foot\">\n          <div class=\"ds-badges\" data-component=\"badge\">\n            <span class=\"ds-badge\">14</span>\n            <span class=\"ds-badge ds-badge--new\">Lent today</span>\n            <span class=\"ds-badge ds-badge--success\">In hand</span>\n            <span class=\"ds-badge ds-badge--warning\">Due soon</span>\n            <span class=\"ds-badge ds-badge--danger\">Overdue</span>\n          </div>\n        </div>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">4</p>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"returned\">\n  <div class=\"ds-book ds-book--tabbed\">\n      <ul class=\"ds-tabs\">\n        <li><a class=\"ds-tabs__tab\" href=\"#loans\">Out now</a></li>\n        <li><a class=\"ds-tabs__tab is-current\" href=\"#returned\">Returned</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#loan\">Open entry</a></li>\n      </ul>\n    <div class=\"ds-book__spread\">\n      <div class=\"ds-book__page\">\n          <ol class=\"ds-breadcrumb\">\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#desk\">Desk</a></li>\n            <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#loans\">Loans</a></li>\n            <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n            <li class=\"ds-breadcrumb__current\">Returned</li>\n          </ol>\n          <header class=\"ds-page-header\">\n            <div class=\"ds-page-header__copy\">\n              <h1 class=\"ds-page-header__title\">Returned in May</h1>\n              <p class=\"ds-page-header__text\">What has come back since the first of the month.</p>\n            </div>\n            <div class=\"ds-page-header__actions\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#loans\">See what is out</a>\n            </div>\n          </header>\n          <div class=\"ds-empty\" data-component=\"empty\">\n            <svg class=\"ds-empty__icon\" viewBox=\"0 0 44 44\" aria-hidden=\"true\"><path d=\"M6 14l16-8 16 8v18l-16 8-16-8zM6 14l16 8 16-8M22 22v18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linejoin=\"round\"/></svg>\n            <h3 class=\"ds-empty__title\">Nothing has come back yet</h3>\n            <p class=\"ds-empty__text\">Three things are due this week. When one comes home, mark it and it is written here.</p>\n            <a class=\"ds-button ds-button--secondary\" href=\"#loans\">Mark something as returned</a>\n          </div>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">5</p>\n      </div>\n      <div class=\"ds-book__page ds-book__page--right\">\n        <h2 class=\"ds-book__title is-first\">Came back in April</h2>\n        <ul class=\"ds-list\">\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__icon\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M4 9h14v7a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3zM2 9h18M9 5h4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#loan\">Bread tins, a pair</a><span class=\"ds-list__meta\">Odile &middot; out 9 days &middot; back 27 April</span></div>\n            <span class=\"ds-badge ds-badge--success\">Returned</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__icon\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M4 3h12a2 2 0 0 1 2 2v14H6a2 2 0 0 1-2-2zM4 17a2 2 0 0 1 2-2h12M8 7h6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#loan\">The orchard year</a><span class=\"ds-list__meta\">Tobias &middot; out 30 days &middot; back 21 April</span></div>\n            <span class=\"ds-badge ds-badge--success\">Returned</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__icon\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M5 19l8-8M14 3a4 4 0 0 0 5 5l-3 3-5-5z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#loan\">Spirit level</a><span class=\"ds-list__meta\">Margit &middot; out 4 days &middot; back 11 April</span></div>\n            <span class=\"ds-badge ds-badge--success\">Returned</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <svg class=\"ds-list__icon\" viewBox=\"0 0 22 22\" aria-hidden=\"true\"><path d=\"M4 18C4 9 10 4 19 4c0 9-5 15-14 15zM4 18l8-8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#loan\">Fruit netting</a><span class=\"ds-list__meta\">Anselm &middot; out 41 days &middot; back 3 April</span></div>\n            <span class=\"ds-badge ds-badge--count\">Late</span>\n          </li>\n        </ul>\n        <div class=\"ds-book__foot\">\n          <a class=\"ds-link\" href=\"#returned\">Earlier months</a>\n          <span>4 of 212 since the first page</span>\n        </div>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">6</p>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"loan\">\n  <div class=\"ds-book ds-book--tabbed\">\n      <ul class=\"ds-tabs\">\n        <li><a class=\"ds-tabs__tab\" href=\"#loans\">Out now</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#returned\">Returned</a></li>\n        <li><a class=\"ds-tabs__tab is-current\" href=\"#loan\">Open entry</a></li>\n      </ul>\n    <div class=\"ds-book__spread\">\n      <div class=\"ds-book__page\">\n          <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#desk\">Desk</a></li>\n            <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#loans\">Loans</a></li>\n            <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n            <li class=\"ds-breadcrumb__current\">Hedge trimmer</li>\n          </ol>\n          <header class=\"ds-page-header\">\n            <div class=\"ds-page-header__copy\">\n              <h1 class=\"ds-page-header__title\">Hedge trimmer</h1>\n              <p class=\"ds-page-header__text\">With Anselm since 12 April. Fourteen days late.</p>\n            </div>\n            <div class=\"ds-page-header__actions\">\n              <a class=\"ds-button\" href=\"#returned\">Mark as returned</a>\n            </div>\n          </header>\n          <div class=\"ds-prose\" data-component=\"typography\">\n            <h1>The entry</h1>\n            <p>Lent over the wall on a Saturday, <strong>with the long lead and the blade guard</strong>. Anselm meant to do the mill hedge the same week; the rain had other plans. The <a href=\"#loans\">other things he has</a> are not late.</p>\n            <h2>What went with it</h2>\n            <ul>\n              <li>The long lead, on its reel</li>\n              <li>The blade guard</li>\n              <li>A pair of gauntlets, which are his to keep</li>\n            </ul>\n            <h3>How to tell it is yours</h3>\n            <p>The number scratched under the handle is <code>HT-2204</code>, and the lead has a blue plug.</p>\n          </div>\n          <div class=\"ds-book__foot\">\n            <p class=\"ds-links\" data-component=\"links\">\n              <a class=\"ds-link\" href=\"#loans\">All loans</a>\n              <a class=\"ds-link is-visited\" href=\"#returned\">Returned</a>\n              <a class=\"ds-link is-hover\" href=\"#desk\">Who has what</a>\n              <a class=\"ds-link is-active\" href=\"#settings\">Reminder day</a>\n              <a class=\"ds-link ds-link--quiet\" href=\"#loans\">Print this entry</a>\n            </p>\n          </div>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">7</p>\n      </div>\n      <div class=\"ds-book__page ds-book__page--right\">\n        <h2 class=\"ds-book__title is-first\">The facts</h2>\n        <div class=\"ds-panel\">\n          <h3 class=\"ds-panel__title\">Tools, shelf two</h3>\n          <div class=\"ds-panel__body\">\n            <dl class=\"ds-panel__facts\">\n              <div class=\"ds-panel__fact\"><dt class=\"ds-panel__term\">With</dt><dd class=\"ds-panel__value\">Anselm, at the mill</dd></div>\n              <div class=\"ds-panel__fact\"><dt class=\"ds-panel__term\">Lent on</dt><dd class=\"ds-panel__value\">12 April</dd></div>\n              <div class=\"ds-panel__fact\"><dt class=\"ds-panel__term\">Was due<span class=\"ds-tooltip\" data-component=\"tooltip\"><button class=\"ds-tooltip__trigger\" type=\"button\" aria-describedby=\"tip-due\">?</button><span class=\"ds-tooltip__bubble\" id=\"tip-due\" role=\"tooltip\">A thing is due a fortnight after it is lent.</span></span></dt><dd class=\"ds-panel__value\">30 April</dd></div>\n              <div class=\"ds-panel__fact\"><dt class=\"ds-panel__term\">State</dt><dd class=\"ds-panel__value\"><span class=\"ds-badge ds-badge--danger\">Overdue</span></dd></div>\n            </dl>\n            <progress class=\"ds-progress\" data-component=\"progress\" value=\"66\" max=\"100\">66%</progress><p class=\"ds-progress__label\">Second of three reminders sent</p>\n            <div class=\"ds-buttons\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#settings\">Remind him today</a>\n              <a class=\"ds-button ds-button--secondary\" href=\"#loans\">Give a week more</a>\n            </div>\n          </div>\n        </div>\n        <h2 class=\"ds-book__title\">What has happened</h2>\n        <ul class=\"ds-list\">\n          <li class=\"ds-list__item\"><div class=\"ds-list__body\"><span class=\"ds-list__title\">Second reminder sent</span><span class=\"ds-list__meta\">Monday 13 May, by letter</span></div><span class=\"ds-badge ds-badge--count\">2</span></li>\n          <li class=\"ds-list__item\"><div class=\"ds-list__body\"><span class=\"ds-list__title\">First reminder sent</span><span class=\"ds-list__meta\">Monday 6 May, by letter</span></div><span class=\"ds-badge ds-badge--count\">1</span></li>\n          <li class=\"ds-list__item\"><div class=\"ds-list__body\"><span class=\"ds-list__title\">Due date passed</span><span class=\"ds-list__meta\">Tuesday 30 April</span></div><span class=\"ds-badge ds-badge--danger\">Overdue</span></li>\n          <li class=\"ds-list__item\"><div class=\"ds-list__body\"><span class=\"ds-list__title\">Lent to Anselm</span><span class=\"ds-list__meta\">Saturday 12 April, for eighteen days</span></div><span class=\"ds-badge ds-badge--new\">Lent</span></li>\n        </ul>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">8</p>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"settings\">\n  <div class=\"ds-book\">\n    <div class=\"ds-book__spread\">\n      <div class=\"ds-book__page\">\n          <ol class=\"ds-breadcrumb\">\n            <li><a class=\"ds-link ds-link--quiet\" href=\"#desk\">Desk</a></li>\n            <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n            <li class=\"ds-breadcrumb__current\">Settings</li>\n          </ol>\n          <header class=\"ds-page-header\">\n            <div class=\"ds-page-header__copy\">\n              <h1 class=\"ds-page-header__title\">Settings</h1>\n              <p class=\"ds-page-header__text\">How the ledger is kept and when it writes to people.</p>\n            </div>\n            <div class=\"ds-page-header__actions\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#desk\">Back to the desk</a>\n            </div>\n          </header>\n          <div class=\"ds-notices\" data-component=\"notice\">\n            <p class=\"ds-notice\"><span class=\"ds-notice__title\">Reminders are on.</span> One letter each Monday for anything past its day.</p>\n            <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__title\">Not saved.</span> Check the address below and try again.</p>\n          </div>\n          <form class=\"ds-form ds-book__block\" data-component=\"form\" action=\"#settings\">\n            <div class=\"ds-form__pair\">\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"f-name\">Ledger name</label>\n                <input class=\"ds-form__input\" id=\"f-name\" type=\"text\" value=\"Marta&rsquo;s ledger\">\n              </div>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__label\" for=\"f-day\">Reminder day</label>\n                <select class=\"ds-form__select\" id=\"f-day\"><option>Every Monday</option><option>Every Friday</option><option>The first of the month</option></select>\n              </div>\n            </div>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"f-mail\">Reminders are signed from</label>\n              <input class=\"ds-form__input is-error\" id=\"f-mail\" type=\"text\" value=\"marta@example\">\n              <p class=\"ds-form__error\">This address is missing its ending.</p>\n            </div>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"f-note\">What a reminder says</label>\n              <textarea class=\"ds-form__textarea\" id=\"f-note\" placeholder=\"A line to go above the list of things\"></textarea>\n              <p class=\"ds-form__hint\">Kept short. The list of things is added under it.</p>\n            </div>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> Send me a copy of every reminder</label>\n            </div>\n            <div class=\"ds-form__row\">\n              <span class=\"ds-form__label\">Reminders</span>\n              <ul class=\"ds-switches\" data-component=\"switch\"><li class=\"ds-switches__row\"><span class=\"ds-switches__name\">Send reminders</span><label class=\"ds-switch\"><input type=\"checkbox\" aria-label=\"Send reminders\" checked><span class=\"ds-switch__track\"></span></label></li><li class=\"ds-switches__row\"><span class=\"ds-switches__name\">By post as well</span><label class=\"ds-switch\"><input type=\"checkbox\" aria-label=\"By post as well\"><span class=\"ds-switch__track\"></span></label></li></ul>\n            </div>\n            <div class=\"ds-form__actions\" data-component=\"buttons\">\n              <button class=\"ds-button\" type=\"button\">Save</button>\n              <a class=\"ds-button ds-button--secondary\" href=\"#desk\">Cancel</a>\n              <button class=\"ds-button is-disabled\" type=\"button\" disabled>Undo</button>\n              <button class=\"ds-button ds-button--danger ds-form__actions-end\" type=\"button\">Empty the ledger</button>\n            </div>\n          </form>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">9</p>\n      </div>\n      <div class=\"ds-book__page ds-book__page--right\">\n        <h2 class=\"ds-book__title is-first\">Empty the ledger</h2>\n        <div class=\"ds-prose\">\n          <p>The key on the facing page strikes out every entry, in hand or returned. It asks once first.</p>\n        </div>\n        <div class=\"ds-dialog__backdrop ds-book__block\">\n          <div class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n            <h3 class=\"ds-dialog__title\" id=\"d-title\">Empty the ledger</h3>\n            <div class=\"ds-dialog__body\">\n              <p class=\"ds-dialog__heading\">Strike out all 226 entries?</p>\n              <p class=\"ds-dialog__text\">Fourteen things are still out. Their lines go too, and nobody is reminded again.</p>\n            </div>\n            <div class=\"ds-dialog__actions\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#settings\">Keep the ledger</a>\n              <a class=\"ds-button ds-button--danger\" href=\"#desk\">Empty it</a>\n            </div>\n          </div>\n        </div>\n        <div class=\"ds-sidebar\">\n          <h2 class=\"ds-sidebar__title\">Lately changed</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#settings\">Reminder day moved to Monday</a><span class=\"ds-sidebar__meta\">6 May</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#settings\">A copy of every reminder</a><span class=\"ds-sidebar__meta\">2 May</span></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#desk\">Garden shelf added</a><span class=\"ds-sidebar__meta\">18 April</span></li>\n          </ul>\n        </div>\n        <h2 class=\"ds-book__title\">Questions</h2>\n        <div class=\"ds-accordion\" data-component=\"accordion\"><details class=\"ds-accordion__item\" open><summary class=\"ds-accordion__head\">Does it work offline?</summary><p class=\"ds-accordion__body\">Yes. Everything is kept on your own machine.</p></details><details class=\"ds-accordion__item\"><summary class=\"ds-accordion__head\">Can I move to another computer?</summary><p class=\"ds-accordion__body\">Copy the library folder across and open it there.</p></details><details class=\"ds-accordion__item\"><summary class=\"ds-accordion__head\">How do I get help?</summary><p class=\"ds-accordion__body\">Write to us from the support page; we answer in a day.</p></details></div>\n          <div class=\"ds-book__rest\" aria-hidden=\"true\"></div>\n          <p class=\"ds-book__folio\">10</p>\n      </div>\n    </div>\n  </div>\n</section>\n\n</main>\n\n<footer class=\"ds-footer\" data-component=\"footer\">\n  <ul class=\"ds-footer__links\">\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#desk\">Desk</a></li>\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#loans\">Loans</a></li>\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#returned\">Returned</a></li>\n    <li><a class=\"ds-link ds-link--quiet\" href=\"#settings\">Settings</a></li>\n  </ul>\n  <p class=\"ds-footer__note\">chronoskin keeps count of what you lend. All names and figures on this page are examples.</p>\n</footer>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.skeuomorphism.app.s06.p11.t11.u11\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"skeuomorphism\",\n    \"years\": [\n      2009,\n      2013\n    ]\n  },\n  \"archetype\": \"app\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1280,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-sk-6bbb\",\n  \"short\": \"v1-sk-6bbb\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #1f5c3d;\n  --color-canvas: #184a31;\n  --color-surface: #1b5137;\n  --color-surface-alt: #17472f;\n  --color-surface-strong: #123a26;\n  --color-bar: #5b2f18;\n  --color-bar-text: #f8e9c6;\n  --color-bar-alt: #8b6a3b;\n  --color-bar-alt-text: #fff4d8;\n  --color-inverse: #24160f;\n  --color-inverse-text: #fbefd2;\n  --color-text: #d8e5d6;\n  --color-text-muted: #9cbba5;\n  --color-heading: #fdf6e0;\n  --color-heading-alt: #f3e4b8;\n  --color-link: #f2cf6b;\n  --color-link-quiet: #a9c6b2;\n  --color-link-visited: #d8bb8c;\n  --color-link-hover: #ffe7a0;\n  --color-link-active: #ffffff;\n  --color-border: #2c6b4a;\n  --color-border-strong: #0c2a1b;\n  --color-border-muted: #225a3d;\n  --color-accent: #c0302b;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #2d5aa3;\n  --color-fill-1: #b02a26;\n  --color-fill-2: #2c58a0;\n  --color-fill-3: #5c3a7e;\n  --color-fill-4: #7b4a22;\n  --color-button: #a87722;\n  --color-button-text: #fffaf0;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #2c7850;\n  --color-button-secondary-text: #f6f8ee;\n  --color-input: #0f3524;\n  --color-input-text: #f6f8ee;\n  --color-input-border: #0a2618;\n  --color-disabled: #235c40;\n  --color-disabled-text: #6f9a82;\n  --color-danger: #f0695b;\n  --color-danger-surface: #4a2420;\n  --color-success: #3f9d2f;\n  --color-warning: #b3741a;\n  --color-notice: #f3e6c0;\n  --color-notice-text: #3a2a12;\n  --color-focus: #f2cf6b;\n  --color-shadow: #000000;\n  --color-overlay: rgba(0, 0, 0, 0.5);\n}\n\n/* @part type */\n:root {\n  --font-body: Helvetica, Arial, \"Lucida Grande\", Verdana, sans-serif;\n  --font-heading: Helvetica, Arial, \"Lucida Grande\", Verdana, sans-serif;\n  --font-ui: Helvetica, Arial, \"Lucida Grande\", Verdana, sans-serif;\n  --font-mono: Monaco, \"Lucida Console\", \"Courier New\", monospace;\n  --text-base: 11px;\n  --text-small: 10px;\n  --text-ui: 11px;\n  --text-large: 14px;\n  --text-display: 30px;\n  --text-h1: 22px;\n  --text-h2: 18px;\n  --text-h3: 14px;\n  --line-body: 1.42;\n  --line-heading: 1.2;\n  --line-display: 1.1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 700;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: none;\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: 1px;\n  --border-style: solid;\n  --radius-control: 10px;\n  --radius-panel: 16px;\n  --radius-pill: 16px;\n  --radius-page: 20px;\n  --shadow-panel: 0 0 0 1px color-mix(in srgb, var(--color-shadow) 22%, transparent), 0 6px 14px color-mix(in srgb, var(--color-shadow) 50%, transparent);\n  --shadow-control: inset 0 1px 0 color-mix(in srgb, white 40%, transparent), 0 3px 7px color-mix(in srgb, var(--color-shadow) 55%, transparent);\n  --shadow-control-hover: inset 0 1px 0 color-mix(in srgb, white 60%, transparent), 0 4px 9px color-mix(in srgb, var(--color-shadow) 55%, transparent);\n  --shadow-control-pressed: inset 0 2px 5px color-mix(in srgb, var(--color-shadow) 55%, transparent);\n  --shadow-dialog: 0 0 0 1px color-mix(in srgb, var(--color-shadow) 45%, transparent), 0 10px 20px color-mix(in srgb, var(--color-shadow) 60%, transparent);\n  --shadow-text: 0 1px 1px color-mix(in srgb, var(--color-shadow) 60%, transparent);\n  --fill-page: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6'%3E%3Cpath d='M0 0h1v1H0zM3 1h1v1H3zM5 3h1v1H5zM1 4h1v1H1zM4 5h1v1H4z' fill='black' fill-opacity='.14'/%3E%3Cpath d='M2 0h1v1H2zM5 1h1v1H5zM1 2h1v1H1zM3 3h1v1H3zM0 5h1v1H0z' fill='white' fill-opacity='.06'/%3E%3C/svg%3E\"), radial-gradient(ellipse 65% 100% at 50% 0, color-mix(in srgb, white 20%, transparent) 0, transparent 100%) 0 0 / 100% 640px no-repeat, var(--color-page);\n  --fill-bar: repeating-linear-gradient(0deg, color-mix(in srgb, black 10%, transparent) 0, transparent 2px, color-mix(in srgb, white 5%, transparent) 3px, transparent 5px, color-mix(in srgb, black 7%, transparent) 7px), linear-gradient(to bottom, color-mix(in srgb, var(--color-bar), white 22%) 0, var(--color-bar) 45%, color-mix(in srgb, var(--color-bar), black 26%) 100%);\n  --fill-bar-alt: repeating-linear-gradient(0deg, color-mix(in srgb, black 8%, transparent) 0, transparent 2px, color-mix(in srgb, white 7%, transparent) 4px, transparent 6px), linear-gradient(to bottom, color-mix(in srgb, var(--color-bar-alt), white 20%) 0, var(--color-bar-alt) 50%, color-mix(in srgb, var(--color-bar-alt), black 18%) 100%);\n  --fill-inverse: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6'%3E%3Cpath d='M0 0h1v1H0zM3 1h1v1H3zM5 3h1v1H5zM1 4h1v1H1zM4 5h1v1H4z' fill='black' fill-opacity='.16'/%3E%3Cpath d='M2 0h1v1H2zM5 1h1v1H5zM1 2h1v1H1zM3 3h1v1H3zM0 5h1v1H0z' fill='white' fill-opacity='.06'/%3E%3C/svg%3E\"), radial-gradient(ellipse 60% 130% at 50% 0, color-mix(in srgb, white 18%, transparent) 0, transparent 100%), var(--color-inverse);\n  --fill-accent: radial-gradient(ellipse 80% 60% at 50% 0, color-mix(in srgb, white 35%, transparent) 0, transparent 100%), var(--color-accent);\n  --fill-panel: var(--color-surface);\n  --fill-button: linear-gradient(to bottom, color-mix(in srgb, var(--color-button), white 45%) 0, color-mix(in srgb, var(--color-button), white 10%) 35%, var(--color-button) 70%, color-mix(in srgb, var(--color-button), black 22%) 100%);\n  --fill-button-hover: linear-gradient(to bottom, color-mix(in srgb, var(--color-button), white 58%) 0, color-mix(in srgb, var(--color-button), white 22%) 35%, color-mix(in srgb, var(--color-button), white 8%) 70%, color-mix(in srgb, var(--color-button), black 12%) 100%);\n  --fill-button-secondary: linear-gradient(to bottom, color-mix(in srgb, var(--color-button-secondary), white 22%) 0, var(--color-button-secondary) 50%, color-mix(in srgb, var(--color-button-secondary), black 20%) 100%);\n  --fill-input: linear-gradient(to bottom, color-mix(in srgb, var(--color-input), black 30%) 0, var(--color-input) 6px);\n  --focus-ring: 2px solid var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
