{
  "id": "v1-sk-5555",
  "long_id": "v1.skeuomorphism.landing.s05.p05.t05.u05",
  "name": "Skeuomorphism landing (one phone app, device on a counter)",
  "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": "landing",
  "mode": "pure",
  "viewport": {
    "width": 1280,
    "fluid": false
  },
  "summary": "The page of a single phone app from the years when web pages imitated physical materials: the app's glossy tile and name, a headline, one large key, and beside them a phone drawn in the page with the app running on its screen. It was the common shape for the site of an app sold through a phone's store between about 2010 and 2013, built as one fixed column on a softly textured page, with a press page, a list of versions and a support form behind it. The richness is in the surfaces: a glossy bar hanging from the top of the window, convex keys, icon tiles with a hard gloss line, engraved type and hairline edges with a bright line beside them.",
  "url": "https://chrono.skin/s/v1-sk-5555",
  "preview_url": "https://chrono.skin/s/v1-sk-5555/specimen.html",
  "files": {
    "STYLE.md": "# Skeuomorphism landing (one phone app, device on a counter)\n\n## Summary\n\nThe page of a single phone app from the years when web pages imitated physical materials: the app's glossy tile and name, a headline, one large key, and beside them a phone drawn in the page with the app running on its screen. It was the common shape for the site of an app sold through a phone's store between about 2010 and 2013, built as one fixed column on a softly textured page, with a press page, a list of versions and a support form behind it. The richness is in the surfaces: a glossy bar hanging from the top of the window, convex keys, icon tiles with a hard gloss line, engraved type and hairline edges with a bright line beside them.\n\n## Layout\n\n- Fixed centred column: `--size-page` is 920px (`.ds-page__wrap`). Only the page texture and the dark footer band run the full window width.\n- Navigation is one glossy bar `--size-nav` (40px) high and exactly as wide as the column, hanging from the top edge of the window with its lower corners rounded. It is cut into segments by etched lines: the `.ds-brand` first, then one segment per section, the current one pressed in; at the right end a small text link and one small key. It is written once, above the views, and the footer band once below them.\n- Order of the home page: the hero, two columns bottom-aligned on the page texture (the copy at the left: app tile and name, headline, lead, the large key with one link, and under an etched rule a field and a key that send the link; the phone at the right, `--size-phone` 256px wide, cut off at its foot); directly under it, touching the phone's foot, the `.ds-stats` counter plate across the whole column; a `.ds-page__title` on the page texture; the `.ds-grid` sheet of four feature rows, two to a line; then `.ds-page__columns`: a wide column with a title and a sheet holding the `.ds-list`, and a `--size-side` (280px) column with a title and the price `.ds-panel`. Both columns are one height: the rows of the list share whatever the price card adds. Then the footer band.\n- Section headings on the home page (`.ds-page__title`) stand on the page texture above their sheet, `--space-6` above and `--space-3` below. Sheets have no headings of their own.\n- Inner pages keep the navigation bar, the column and the footer band; the hero, the counter plate and the feature sheet are left out. The breadcrumb stands on the page texture (`.ds-page__trail`) under the bar. Below it the whole page is one `.ds-page__sheet`: it opens with `.ds-page-header` (a small app tile, title and one line, keys at the right), then, where a subject has several pages, the `.ds-tabs` strip across the sheet, then `.ds-row` parts. Every row has a label column at the left (`--size-label`, 200px: a heading and a small note, or a `.ds-sidebar` block of links) and its content at the right (`.ds-row__body`: a table, running text, a form, a well). Rows are parted by a hairline; every second or the last row is tinted (`.ds-row--tint`). There is no side column on an inner page: what a sidebar would hold goes in the label column of a row. A full-bleed strip, such as the `.ds-quotes` of the press page, may stand between the page header and the first row.\n- Views. The specimen is a five-screen site, one `.ds-view` showing at a time. `home` is the app's page: hero with the phone, counter plate, feature rows, the latest notes and the price. `versions` is the list of versions: the notes of the newest one as running text, then the table of all versions with its labels and pagination. `press` is the press page: three quotes, the press kit as a table with its links, and the questions asked often. `support` is the Write to us tab: notices, the letter form with its keys, and the alert that the destructive key opens. `questions` is the Your questions tab: the empty well of letters waiting and the list of answered ones. The navigation leads to the first four; `questions` is reached from the tool link and the tabs and keeps Support pressed. Each view needs one `:has()` selector in the navigation rule of `components.css`.\n- Spacing scale: `--space-1` 4px (badge and code padding, between tabs), `--space-2` 8px (cell padding, between keys), `--space-3` 12px (table cells, list rows, under a page title), `--space-4` 16px (control side padding, panel padding, icon gaps), `--space-5` 24px (sheet and row padding, between columns), `--space-6` 32px (above a page title, hero side room), `--space-7` 48px (hero top padding, above the footer band).\n- Control heights: `--size-pill` 22px (small keys, badges), `--size-control` 30px (keys, fields, tabs), `--size-control-large` 44px (the hero key and the footer key). `--size-tile` 84px is the app tile of the hero and `--size-tile-small` 48px that of a page header; `--size-glyph` 52px a feature's icon tile; `--size-screen` 344px the phone's screen; `--size-hair` 1px the offset of every highlight and engraving.\n\n## Typography and colour roles\n\n- One humanist sans-serif for everything (`--font-body`, `--font-heading`, `--font-ui`: Myriad Pro, falling back to Gill Sans, Calibri and Trebuchet MS) and `--font-mono` for code. The references used commercial humanist and rounded faces; this stack is the nearest that needs no licence.\n- Sizes: `--text-base` 15px at `--line-body` 1.45; `--text-small` 13px for meta, badges, table heads and the footer; `--text-ui` 14px semibold for keys, navigation and tabs; `--text-large` 19px for the hero lead and large keys; `--text-h3` 17px, `--text-h2` 22px, `--text-h1` 30px; `--text-display` 42px semibold with tight tracking for the hero headline and the price.\n- `--color-page` is the pinstriped page; `--color-canvas` and `--color-surface` the sheets; `--color-surface-alt` the tint of every second row and of sheet feet; `--color-surface-strong` the top of a page header and the tab strip.\n- `--color-bar` with `--fill-bar` and `--color-bar-text`: the navigation bar, the bar on the phone's screen, the alert, the current page number. `--color-bar-alt` with `--fill-bar-alt` and `--color-bar-alt-text`: the counter plate, table heads, panel title strips, tabs that are not current, group rows on the phone. `--color-inverse` with `--fill-inverse` and `--color-inverse-text`: the footer band only.\n- Text on the page texture and on sheets is `--color-text`; headings `--color-heading`; the app name in the hero and sidebar titles `--color-heading-alt`. Links are `--color-link`, underlined only on hover.\n- `--color-button` is the one primary colour: the keys, the app tiles and the brand tile. `--color-accent` is for badges, `--color-accent-alt` for \"new\" markers. `--color-fill-1` to `--color-fill-4` colour the icon tiles of the feature rows and nothing else; the glyph on them is `--color-inverse-text`. `--color-success`, `--color-warning` and `--color-danger` are for status badges and the destructive key.\n- Surface: smooth convex gradients, bright at the upper edge and darker at the foot (`--fill-button`, `--fill-bar`, `--fill-bar-alt`), with a one-pixel inner highlight and a short drop shadow (`--shadow-control`). Corners: `--radius-control` 5px for keys, fields and tabs, `--radius-panel` 10px for sheets, the bar and the plate, `--radius-page` 12px for icon tiles, `--radius-pill` 13px for badges. Sheets lie on the page with `--shadow-panel`, a hairline ring and a 4px shadow; the phone and the alert cast `--shadow-dialog`.\n- Engraving: light text on a dark or coloured fill takes `--shadow-text`. Dark text on the page texture or on a light gloss takes a light line one pixel below, written in `components.css` as `0 var(--size-hair) 0 var(--color-canvas)`.\n- One-off values built in `components.css` from tokens: the phone (body from `--color-canvas` and `--color-surface-alt` with `--color-border-strong` edges, shoulders of `--radius-page` plus `--space-5`, a status strip mixed from `--color-shadow` and `--color-inverse`); the hard gloss line of the feature icon tiles (`--color-canvas` over the fill colour in the upper half, `--color-shadow` at the foot); the gloss of the danger key and the status badges; the light pool behind the phone (a radial gradient of `--color-canvas`); border colours darkened toward `--color-shadow`; `uppercase` with 1px tracking for sidebar titles; italics for quotes.\n\n## Components\n\n- `.ds-page`: on `<body>`. Paints the textured page. `.ds-page__wrap` is the 920px column of a view; `.ds-page__title` a heading on the page texture above a sheet; `.ds-page__sheet` a sheet (`--color-canvas`, `--radius-panel`, `--shadow-panel`); `.ds-page__columns` the two columns of the home page, `.ds-page__main` and `.ds-page__side`, of one height; `.ds-page__trail` the breadcrumb's place above an inner sheet; `.ds-page__foot` the tinted strip at the foot of a sheet (a link left, a count right).\n- `.ds-view`: one screen of the site, a `<section>` with an id; only the one named in the address shows, and `.ds-view--home` when none is named.\n- `.ds-row`: one part of an inner sheet: `.ds-row__label` (with `.ds-row__title` and `.ds-row__note`, or a `.ds-sidebar`) and `.ds-row__body`; `.ds-row--tint` for the tinted ones; `.ds-row__foot` a line under the body's main block (pagination or links left, a count right).\n- `.ds-nav`: the hanging bar. `.ds-nav__items` holds `.ds-nav__item` segments (an optional `.ds-nav__glyph` before the word); the current segment is pressed in, by `is-current` or, in the specimen, by one selector per view. `.ds-nav__items--tools` is the group at the right end with a `.ds-nav__tool` text link and one `.ds-button--small`.\n- `.ds-brand`: the first segment of the bar. `.ds-brand__mark` is a 26px 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 at 17px, always `--weight-bold`, engraved. Both are placeholders for the installing project's own name and logo.\n- `.ds-hero`: `.ds-hero__copy` with `.ds-hero__app` (the `.ds-hero__tile` app tile, `.ds-hero__name` and a `.ds-hero__kicker` line), `.ds-hero__title`, `.ds-hero__lead`, `.ds-hero__actions` (one `.ds-button--large` and one link), `.ds-hero__send` (a field and a secondary key under an etched rule) and `.ds-hero__note`; and `.ds-hero__stage` holding `.ds-hero__phone`, whose `.ds-hero__screen` shows `.ds-hero__status`, `.ds-hero__topbar` and `.ds-hero__rows` of `.ds-hero__group` and `.ds-hero__row` (with `.ds-hero__row-meta`). Once, at the top of the home page; the counter plate follows it with no gap.\n- `.ds-page-header`: the head of an inner sheet: `.ds-page-header__tile`, `.ds-page-header__copy` with `.ds-page-header__title` (30px) and one `.ds-page-header__text` line, and `.ds-page-header__actions` with at most two keys of the normal height.\n- `.ds-prose`: running text: h1, h2, h3, paragraphs, lists, `code`, links. `.ds-prose__lead` is a 19px opening line.\n- `.ds-link`: text link; states `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` for breadcrumbs and meta links. `.ds-links` is a wrapping row of links.\n- `.ds-button`: convex key, 30px high. `.ds-button--secondary` the light key; `.ds-button--danger` the same key in `--color-danger` for a destructive action; `.ds-button--large` the 44px key of the hero and footer; `.ds-button--small` a 22px 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`: `.ds-form__row` with a `.ds-form__label` column (`--size-field`) and a `.ds-form__field`. `.ds-form__input` and `.ds-form__textarea` are inset wells, `.ds-form__select` a light key. `is-error` with `.ds-form__error`; `.ds-form__hint`; `.ds-form__check` with `.ds-form__checkbox`; `.ds-form__actions`, where `.ds-form__actions-end` pushes the destructive key to the right edge.\n- `.ds-table`: framed table with a light engraved `.ds-table__head`; `.ds-table__row` with `is-first` and `is-alt`; `.ds-table__cell`, `.ds-table__cell--name` for the bold leading column, `is-numeric` for right-aligned figures.\n- `.ds-list`: rows as on a phone, edge to edge in a sheet: `.ds-list__item` (`is-first` on the first) with a round `.ds-list__icon`, `.ds-list__body` (`.ds-list__title`, `.ds-list__meta`), an optional badge and a `.ds-list__chevron`.\n- `.ds-panel`: the price card: `.ds-panel__title` strip, `.ds-panel__body` with `.ds-panel__price`, `.ds-panel__text` and a ruled `.ds-panel__list` of `.ds-panel__line`, and a tinted `.ds-panel__foot` holding the key.\n- `.ds-stat`: one figure, `.ds-stat__value` beside its `.ds-stat__label` on one line. Four of them make the `.ds-stats` row, the counter plate under the hero (`--fill-bar-alt`, etched grooves between the figures, `is-first` on the first).\n- `.ds-grid`: one sheet of four `.ds-grid__cell` feature rows, two to a line, parted by hairlines. Each has a glossy `.ds-grid__icon` tile in `--color-fill-1` (`.ds-grid__cell--2`, `--3`, `--4` for the other fills) with a `.ds-grid__glyph`, and a `.ds-grid__body` with `.ds-grid__title`, `.ds-grid__text` and `.ds-grid__more`.\n- `.ds-quotes`: a strip of three `.ds-quote` columns (`is-first` on the first), each a `.ds-quote__text` in italics and a `.ds-quote__source`.\n- `.ds-tabs`: a tinted strip across the sheet under the page header; `.ds-tabs__tab` stands on its lower edge and the `is-current` one is the sheet's own paper.\n- `.ds-badge`: glossy lozenge 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`: a block of links in the label column of a row: `.ds-sidebar__title` (small capitals), `.ds-sidebar__list` of ruled `.ds-sidebar__item` (`is-first` on the first), each a link and a `.ds-sidebar__meta` line.\n- `.ds-notice`: rounded message; `.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`: one joined strip of small keys, `.ds-pagination__link` (`is-first` on the first); `is-current` is pressed in and takes the bar colour, `is-disabled` is flat.\n- `.ds-breadcrumb`: small engraved trail with `.ds-breadcrumb__sep` and `.ds-breadcrumb__current`.\n- `.ds-dialog`: a phone alert: a rounded box in the bar fill with a pale edge, a centred `.ds-dialog__title`, `.ds-dialog__body` with `.ds-dialog__text`, and `.ds-dialog__actions` with two keys of equal width, the confirming one last. `.ds-dialog__backdrop` is the dimmed area behind it.\n- `.ds-empty`: a well sunk into the sheet with `.ds-empty__icon`, `.ds-empty__title`, `.ds-empty__text` and one secondary key.\n- `.ds-footer`: the dark band: `.ds-footer__inner` holds `.ds-footer__copy` (`.ds-footer__title`, `.ds-footer__links` of `.ds-footer__link`, `.ds-footer__note`) and one large secondary key.\n\n## Never\n\n- `content-width <= 940px`: everything stays inside the 920px column.\n- `block-gap <= 48px`: the largest gap between blocks is the 48px above the footer band.\n- `row-gap <= 12px`: list and table rows touch.\n- `font-size <= 42px`: the hero headline and the price are the largest text.\n- `font-size >= 13px`: meta text is the smallest.\n- `font-weight >= 400`: no light weights; headlines are semibold.\n- `font-families <= 2`: one humanist sans-serif and a monospace.\n- `line-height <= 1.5`: body text is set at 1.45.\n- `underlined-links <= 10%`: links are coloured, not underlined, until hovered.\n- `uppercase-text <= 5%`: capitals are for the small sidebar titles only.\n- `letter-spacing <= 1px`: only the small capital titles are tracked.\n- `border-radius <= 36px`: the phone's shoulders are the largest radius; sheets are 10px and keys 5px.\n- `border-width <= 1px`: every edge is a hairline; weight comes from gradients and shadows.\n- `box-shadow-blur <= 8px`: only the phone and the alert cast an 8px shadow; sheets cast 4px.\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. A new feature is another `.ds-grid__cell` with one of the four fills on its icon tile; new content on the home page is another titled sheet in the column; new content on an inner page is another `.ds-row` with its label at the left, never a side column. A raised thing (a key, a tile, the bar, a title strip) takes a `--fill-*` gradient, a 1px border darkened toward `--color-shadow` and `--shadow-control`; a sunk thing (a field, a well, a current segment) takes a flat fill and an inset shadow. Text on a gloss is engraved by one pixel: dark above on dark fills, light below on light ones. Do not add flat coloured rectangles, wide soft shadows, borders thicker than 1px, a second type family or new colours.\n",
    "components.css": ":root {\n  --size-page: 920px;\n  --size-nav: 40px;\n  --size-label: 200px;\n  --size-side: 280px;\n  --size-phone: 256px;\n  --size-screen: 344px;\n  --size-tile: 84px;\n  --size-tile-small: 48px;\n  --size-glyph: 52px;\n  --size-pill: 22px;\n  --size-control: 30px;\n  --size-control-large: 44px;\n  --size-icon: 16px;\n  --size-field: 110px;\n  --size-dialog: 280px;\n  --size-well: 48px;\n  --size-hair: 1px;\n  --space-1: 4px;\n  --space-2: 8px;\n  --space-3: 12px;\n  --space-4: 16px;\n  --space-5: 24px;\n  --space-6: 32px;\n  --space-7: 48px;\n}\n\n/* shell: textured page, one fixed column; the navigation hangs from the top of the window */\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__title {\n  margin: var(--space-6) 0 var(--space-3);\n  padding: 0 var(--space-1);\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-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n  text-transform: var(--heading-transform);\n}\n.ds-page__sheet {\n  overflow: hidden;\n  border-radius: var(--radius-panel);\n  background: var(--color-canvas);\n  box-shadow: var(--shadow-panel);\n}\n.ds-page__columns {\n  display: flex;\n  align-items: stretch;\n  gap: var(--space-5);\n  margin: var(--space-5) 0 0;\n}\n.ds-page__main {\n  display: flex;\n  flex: 1 1 0;\n  flex-direction: column;\n  min-width: 0;\n}\n.ds-page__main .ds-page__title { margin-top: 0; }\n.ds-page__main .ds-page__sheet {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n}\n.ds-page__main .ds-list {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n}\n.ds-page__main .ds-list__item { flex: 1 1 auto; }\n.ds-page__side {\n  display: flex;\n  flex: 0 0 var(--size-side);\n  flex-direction: column;\n  width: var(--size-side);\n}\n.ds-page__side .ds-page__title { margin-top: 0; }\n.ds-page__side .ds-panel { flex: 1 1 auto; }\n.ds-page__trail {\n  padding: var(--space-5) var(--space-1) var(--space-3);\n}\n.ds-page__foot {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-4);\n  padding: var(--space-3) var(--space-5);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--color-surface-alt);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\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/* nav: a glossy bar the width of the column, hanging from the top edge, cut into segments by etched lines */\n.ds-nav {\n  display: flex;\n  align-items: stretch;\n  width: var(--size-page);\n  height: var(--size-nav);\n  margin: 0 auto;\n  overflow: hidden;\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-bar) 60%, var(--color-shadow));\n  border-top: 0;\n  border-radius: 0 0 var(--radius-panel) var(--radius-panel);\n  background: var(--fill-bar);\n  box-shadow: inset 0 calc(var(--size-hair) * -1) 0 color-mix(in srgb, var(--color-bar-text) 16%, transparent), var(--shadow-panel);\n  color: var(--color-bar-text);\n}\n.ds-brand {\n  display: flex;\n  flex: 0 0 auto;\n  align-items: center;\n  gap: var(--space-2);\n  padding: 0 var(--space-5) 0 var(--space-4);\n  border-right: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 30%, transparent);\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: calc(var(--size-pill) + var(--space-1));\n  height: calc(var(--size-pill) + var(--space-1));\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-h3);\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: stretch;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-nav__items > li { display: flex; }\n.ds-nav__items--tools {\n  align-items: center;\n  gap: var(--space-4);\n  margin-left: auto;\n  padding: 0 var(--space-3) 0 0;\n}\n.ds-nav__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: 0 var(--space-5);\n  border-right: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 30%, transparent);\n  box-shadow: inset var(--size-hair) 0 0 color-mix(in srgb, var(--color-bar-text) 14%, transparent);\n  color: var(--color-bar-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: 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-icon);\n  height: var(--size-icon);\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=\"#home\"],\n.ds-page:has(#home:target) .ds-nav__item[href=\"#home\"],\n.ds-page:has(#press:target) .ds-nav__item[href=\"#press\"],\n.ds-page:has(#versions:target) .ds-nav__item[href=\"#versions\"],\n.ds-page:has(#support:target) .ds-nav__item[href=\"#support\"],\n.ds-page:has(#questions:target) .ds-nav__item[href=\"#support\"] {\n  background: color-mix(in srgb, var(--color-shadow) 28%, transparent);\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-nav__item:focus-visible,\n.ds-nav__item.is-focus { outline: var(--focus-ring); }\n.ds-nav__tool {\n  color: var(--color-bar-text);\n  font-size: var(--text-small);\n  opacity: 0.85;\n  text-decoration: var(--link-decoration-quiet);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__tool:hover,\n.ds-nav__tool.is-hover { opacity: 1; text-decoration: var(--link-decoration-hover); }\n\n/* hero: the app's tile, name and pitch at the left; a phone standing on the counter plate at the right */\n.ds-hero {\n  display: flex;\n  align-items: flex-end;\n  gap: var(--space-6);\n  padding: var(--space-7) var(--space-6) 0 var(--space-5);\n}\n.ds-hero__copy {\n  flex: 1 1 0;\n  min-width: 0;\n  padding: 0 0 var(--space-7);\n}\n.ds-hero__app {\n  display: flex;\n  align-items: center;\n  gap: var(--space-4);\n  margin: 0 0 var(--space-5);\n}\n.ds-hero__tile {\n  display: flex;\n  flex: 0 0 auto;\n  align-items: center;\n  justify-content: center;\n  width: var(--size-tile);\n  height: var(--size-tile);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-button) 55%, var(--color-shadow));\n  border-radius: calc(var(--radius-page) + var(--space-1));\n  background: var(--fill-button);\n  box-shadow: var(--shadow-control), var(--shadow-panel);\n  color: var(--color-button-text);\n}\n.ds-hero__tile svg {\n  width: var(--size-glyph);\n  height: var(--size-glyph);\n}\n.ds-hero__kicker {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\n}\n.ds-hero__name {\n  display: block;\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n  text-transform: var(--heading-transform);\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-3);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-hero__lead {\n  margin: 0 0 var(--space-5);\n  color: var(--color-text);\n  font-size: var(--text-large);\n  line-height: var(--line-body);\n  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\n}\n.ds-hero__actions {\n  display: flex;\n  align-items: center;\n  gap: var(--space-4);\n}\n.ds-hero__send {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin: var(--space-5) 0 0;\n  padding: var(--space-4) 0 0;\n  border-top: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 12%, transparent);\n  box-shadow: inset 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 60%, transparent);\n}\n.ds-hero__send .ds-form__input { flex: 0 1 calc(var(--size-label) + var(--space-5)); }\n.ds-hero__note {\n  margin: var(--space-2) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\n}\n.ds-hero__stage {\n  display: flex;\n  flex: 0 0 auto;\n  align-items: flex-end;\n  justify-content: center;\n  padding: 0 var(--space-6);\n  background: radial-gradient(ellipse 50% 50% at 50% 55%, color-mix(in srgb, var(--color-canvas) 85%, transparent) 0, transparent 100%);\n}\n.ds-hero__phone {\n  position: relative;\n  width: var(--size-phone);\n  padding: var(--space-7) var(--space-3) calc(var(--space-7) + var(--space-3));\n  border: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  border-bottom: 0;\n  border-radius: calc(var(--radius-page) + var(--space-5)) calc(var(--radius-page) + var(--space-5)) 0 0;\n  background: linear-gradient(to right, color-mix(in srgb, var(--color-surface-strong) 60%, var(--color-shadow)) 0, var(--color-surface-alt) 3%, var(--color-canvas) 50%, var(--color-surface-alt) 97%, color-mix(in srgb, var(--color-surface-strong) 60%, var(--color-shadow)) 100%);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas), var(--shadow-dialog);\n}\n.ds-hero__phone::before {\n  content: \"\";\n  position: absolute;\n  top: calc(var(--space-5) - var(--space-1));\n  left: calc(50% - var(--space-5));\n  width: var(--space-7);\n  height: var(--space-2);\n  border-radius: var(--space-1);\n  background: color-mix(in srgb, var(--color-shadow) 55%, var(--color-surface-strong));\n  box-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-hero__phone::after {\n  content: \"\";\n  position: absolute;\n  bottom: var(--space-3);\n  left: calc(50% - var(--space-4));\n  width: var(--space-6);\n  height: var(--space-6);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: 50%;\n  background: linear-gradient(to bottom, var(--color-surface-alt) 0, var(--color-canvas) 100%);\n  box-shadow: inset 0 var(--size-hair) var(--space-1) color-mix(in srgb, var(--color-shadow) 14%, transparent);\n}\n.ds-hero__screen {\n  height: var(--size-screen);\n  overflow: hidden;\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 80%, var(--color-surface-strong));\n  background: var(--color-surface);\n}\n.ds-hero__status {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 0 var(--space-2);\n  background: color-mix(in srgb, var(--color-shadow) 85%, var(--color-inverse));\n  color: var(--color-inverse-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}\n.ds-hero__topbar {\n  padding: var(--space-2) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-bar) 60%, 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) 30%, transparent);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  text-align: center;\n  text-shadow: var(--shadow-text);\n}\n.ds-hero__rows {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-hero__group {\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-hero__row {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-2);\n  padding: var(--space-2) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n.ds-hero__row-meta {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n}\n\n/* stats: the counter plate the phone stands on, figures parted by etched grooves */\n.ds-stats {\n  position: relative;\n  display: flex;\n  margin: 0;\n  padding: 0;\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  background: var(--fill-bar-alt);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas), var(--shadow-panel);\n  list-style: none;\n}\n.ds-stat {\n  display: flex;\n  flex: 1 1 0;\n  align-items: baseline;\n  gap: var(--space-2);\n  min-width: 0;\n  padding: var(--space-3) var(--space-5);\n  border-left: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 16%, transparent);\n  box-shadow: inset var(--size-hair) 0 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\n}\n.ds-stat.is-first {\n  border-left: 0;\n  box-shadow: none;\n}\n.ds-stat__value {\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-display);\n  line-height: var(--line-heading);\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-stat__label {\n  color: var(--color-bar-alt-text);\n  font-size: var(--text-small);\n  opacity: 0.8;\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n\n/* grid: feature rows, two to a line on one sheet, each led by a glossy icon tile in a block colour */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(2, 1fr);\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  border-radius: var(--radius-panel);\n  background: var(--color-canvas);\n  box-shadow: var(--shadow-panel);\n  list-style: none;\n}\n.ds-grid__cell {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-4);\n  padding: var(--space-5);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--fill-panel);\n}\n.ds-grid__cell:nth-child(odd) { border-left: 0; }\n.ds-grid__cell:nth-child(-n+2) { border-top: 0; }\n.ds-grid__icon {\n  display: flex;\n  flex: 0 0 auto;\n  align-items: center;\n  justify-content: center;\n  width: var(--size-glyph);\n  height: var(--size-glyph);\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-page);\n  background-color: var(--color-fill-1);\n  background-image: linear-gradient(to bottom, color-mix(in srgb, var(--color-canvas) 45%, transparent) 0, color-mix(in srgb, var(--color-canvas) 12%, transparent) 50%, transparent 50%, color-mix(in srgb, var(--color-shadow) 22%, transparent) 100%);\n  box-shadow: var(--shadow-control);\n  color: var(--color-inverse-text);\n}\n.ds-grid__cell--2 .ds-grid__icon {\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 .ds-grid__icon {\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 .ds-grid__icon {\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__glyph {\n  width: calc(var(--size-glyph) - var(--space-5));\n  height: calc(var(--size-glyph) - var(--space-5));\n}\n.ds-grid__body {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-grid__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-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-grid__text { margin: 0 0 var(--space-1); }\n.ds-grid__more {\n  color: var(--color-link);\n  font-size: var(--text-small);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-grid__more:hover,\n.ds-grid__more.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n\n/* quotes: three columns of kind words on one sheet, parted by hairlines */\n.ds-quotes {\n  display: flex;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-quote {\n  flex: 1 1 0;\n  min-width: 0;\n  padding: var(--space-5);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--fill-panel);\n  text-align: center;\n}\n.ds-quote.is-first { border-left: 0; }\n.ds-quote__text {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\n  font-size: var(--text-base);\n  font-style: italic;\n}\n.ds-quote__source {\n  display: block;\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  font-style: normal;\n}\n\n/* rows: an inner sheet is cut into rows, a label column at the left and the content at the right */\n.ds-row {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-5);\n  padding: var(--space-5);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--fill-panel);\n}\n.ds-row__label {\n  flex: 0 0 var(--size-label);\n  width: var(--size-label);\n}\n.ds-row__title {\n  margin: 0 0 var(--space-1);\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-row__note {\n  margin: 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-row__body {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-row--tint { background: var(--color-surface-alt); }\n.ds-row__label .ds-badges { margin: var(--space-3) 0 0; }\n.ds-row__foot {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-4);\n  margin: var(--space-3) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* page header: the head of an inner sheet, a small app tile, title and one line, keys at the right */\n.ds-page-header {\n  display: flex;\n  align-items: center;\n  gap: var(--space-4);\n  padding: var(--space-5);\n  background: linear-gradient(to bottom, var(--color-surface-strong) 0, var(--color-canvas) 100%);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-page-header__tile {\n  display: flex;\n  flex: 0 0 auto;\n  align-items: center;\n  justify-content: center;\n  width: var(--size-tile-small);\n  height: var(--size-tile-small);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-button) 55%, var(--color-shadow));\n  border-radius: var(--radius-page);\n  background: var(--fill-button);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-text);\n}\n.ds-page-header__tile svg {\n  width: calc(var(--size-tile-small) - var(--space-4));\n  height: calc(var(--size-tile-small) - var(--space-4));\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-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n  text-transform: var(--heading-transform);\n}\n.ds-page-header__text {\n  margin: var(--space-1) 0 0;\n  color: var(--color-text);\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/* 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: 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: 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: 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/* form: label column, inset wells */\n.ds-form { margin: 0; }\n.ds-form__row {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-3);\n  margin: 0 0 var(--space-3);\n}\n.ds-form__label {\n  flex: 0 0 var(--size-field);\n  padding-top: var(--space-1);\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n}\n.ds-form__field {\n  flex: 1 1 0;\n  min-width: 0;\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) 12%, transparent), 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, 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  width: auto;\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) * 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  padding-top: var(--space-1);\n}\n.ds-form__checkbox { margin: 0; }\n.ds-form__actions {\n  display: flex;\n  gap: var(--space-2);\n  margin: var(--space-4) 0 0;\n  padding-left: calc(var(--size-field) + var(--space-3));\n}\n.ds-form__actions-end { margin-left: auto; }\n\n/* table: hairline rows straight on the sheet, a light engraved head */\n.ds-table {\n  width: 100%;\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-collapse: separate;\n  border-spacing: 0;\n  border-radius: var(--radius-control);\n  overflow: hidden;\n}\n.ds-table__head {\n  padding: var(--space-2) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\n  background: var(--fill-bar-alt);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas);\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-align: left;\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n  text-transform: var(--ui-transform);\n  white-space: nowrap;\n}\n.ds-table__cell {\n  padding: var(--space-2) var(--space-3);\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: top;\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__cell--name { color: var(--color-heading); font-weight: var(--weight-bold); }\n.ds-table__head.is-numeric,\n.ds-table__cell.is-numeric { text-align: right; }\n\n/* list: phone-style rows, a round glyph, title, meta and a chevron */\n.ds-list {\n  margin: 0;\n  padding: 0;\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-3) var(--space-5);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--fill-panel);\n}\n.ds-list__item.is-first { border-top: 0; }\n.ds-list__icon {\n  flex: 0 0 auto;\n  width: var(--size-control);\n  height: var(--size-control);\n  padding: calc(var(--space-2) - var(--size-hair));\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: 50%;\n  background: var(--fill-button-secondary);\n  box-shadow: 0 var(--size-hair) 0 var(--color-canvas);\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  font-weight: var(--weight-bold);\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.ds-list__chevron {\n  flex: 0 0 auto;\n  width: var(--space-3);\n  height: var(--space-3);\n  color: var(--color-border-strong);\n}\n\n/* badge: a glossy lozenge */\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/* panel: the price card, a title strip, a body and a foot that holds the key */\n.ds-panel {\n  display: flex;\n  flex-direction: column;\n  margin: 0;\n  overflow: hidden;\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  background: var(--fill-bar-alt);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas);\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-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n  text-transform: var(--ui-transform);\n}\n.ds-panel__body {\n  flex: 1 1 auto;\n  padding: var(--space-4);\n}\n.ds-panel__text { margin: 0 0 var(--space-3); }\n.ds-panel__price {\n  margin: 0 0 var(--space-1);\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-panel__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-panel__line {\n  padding: var(--space-2) 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  color: var(--color-heading);\n}\n.ds-panel__foot {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-3) var(--space-4);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--color-surface-alt);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* tabs: a strip across the sheet under the page header, the current tab cut out of it */\n.ds-tabs {\n  display: flex;\n  align-items: flex-end;\n  gap: var(--space-1);\n  margin: 0;\n  padding: var(--space-2) var(--space-5) 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--color-surface-strong);\n  box-shadow: inset 0 calc(var(--size-hair) * -1) 0 var(--color-border-strong);\n  list-style: none;\n}\n.ds-tabs__tab {\n  display: block;\n  height: var(--size-control);\n  padding: 0 var(--space-4);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-bottom: 0;\n  border-radius: var(--radius-control) var(--radius-control) 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(--size-control);\n  text-decoration: none;\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\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  position: relative;\n  background: var(--color-surface);\n  color: var(--color-heading);\n}\n.ds-tabs + .ds-row { border-top: 0; }\n\n/* sidebar: a block of links in the label column of a row */\n.ds-sidebar { margin: 0; }\n.ds-sidebar__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-body);\n  letter-spacing: var(--size-hair);\n  text-transform: uppercase;\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-sidebar__item {\n  padding: var(--space-1) 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-sidebar__item.is-first { border-top: 0; padding-top: 0; }\n.ds-sidebar__meta {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\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/* pagination: one joined strip of small keys */\n.ds-pagination {\n  display: inline-flex;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  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-left: var(--border-width) var(--border-style) var(--color-border-strong);\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));\n  text-align: center;\n  text-decoration: none;\n  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\n}\n.ds-pagination__link.is-first { border-left: 0; }\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover { color: var(--color-link-hover); }\n.ds-pagination__link.is-current {\n  background: color-mix(in srgb, var(--color-bar) 88%, var(--color-shadow));\n  box-shadow: var(--shadow-control-pressed);\n  color: var(--color-bar-text);\n  text-shadow: var(--shadow-text);\n}\n.ds-pagination__link.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  text-shadow: none;\n}\n\n/* breadcrumb: an engraved trail on the page texture */\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  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\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/* dialog: a phone alert, centred text over two keys of equal width */\n.ds-dialog__backdrop {\n  display: flex;\n  justify-content: center;\n  padding: var(--space-5);\n  border-radius: var(--radius-control);\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  overflow: hidden;\n  border: var(--border-width-strong) var(--border-style) color-mix(in srgb, var(--color-bar-text) 55%, var(--color-bar));\n  border-radius: var(--radius-panel);\n  background: var(--fill-bar);\n  box-shadow: var(--shadow-dialog);\n  color: var(--color-bar-text);\n  text-align: center;\n  text-shadow: var(--shadow-text);\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-4) var(--space-4) var(--space-1);\n  font-family: var(--font-ui);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n.ds-dialog__body { padding: 0 var(--space-4) var(--space-4); }\n.ds-dialog__text { margin: 0; }\n.ds-dialog__actions {\n  display: flex;\n  gap: var(--space-2);\n  padding: 0 var(--space-3) var(--space-3);\n}\n.ds-dialog__actions .ds-button { flex: 1 1 0; }\n\n/* empty state: a well sunk into the sheet */\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/* footer: a dark band across the window, the key once more, quiet links */\n.ds-footer {\n  margin: var(--space-7) 0 0;\n  padding: var(--space-5) 0 var(--space-6);\n  border-top: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-inverse) 60%, var(--color-shadow));\n  background: var(--fill-inverse);\n  box-shadow: inset 0 var(--size-hair) 0 color-mix(in srgb, var(--color-inverse-text) 14%, transparent);\n  color: var(--color-inverse-text);\n  font-size: var(--text-small);\n  text-shadow: var(--shadow-text);\n}\n.ds-footer__inner {\n  display: flex;\n  align-items: center;\n  gap: var(--space-5);\n  width: var(--size-page);\n  margin: 0 auto;\n}\n.ds-footer__copy {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-footer__title {\n  margin: 0 0 var(--space-1);\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}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-4);\n  margin: 0 0 var(--space-1);\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__link {\n  color: var(--color-inverse-text);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-footer__link:hover,\n.ds-footer__link.is-hover { text-decoration: var(--link-decoration-hover); }\n.ds-footer__note {\n  margin: 0;\n  color: color-mix(in srgb, var(--color-inverse-text) 60%, transparent);\n}\n",
    "specimen.html": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>chronoskin, skeuomorphism phone app page 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  <a class=\"ds-brand\" data-component=\"brand\" href=\"#\">\n    <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M12 3a9 9 0 1 1-9 9\"/><path d=\"M12 17a5 5 0 1 1 5-5\"/><circle cx=\"12\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/></svg></span>\n    <span class=\"ds-brand__name\">chronoskin</span>\n  </a>\n  <ul class=\"ds-nav__items\">\n    <li><a class=\"ds-nav__item\" href=\"#home\">The app</a></li>\n    <li><a class=\"ds-nav__item\" href=\"#versions\">What is new</a></li>\n    <li><a class=\"ds-nav__item\" href=\"#press\">Press and questions</a></li>\n    <li><a class=\"ds-nav__item\" href=\"#support\">Support</a></li>\n  </ul>\n  <ul class=\"ds-nav__items ds-nav__items--tools\">\n    <li><a class=\"ds-nav__tool\" href=\"#questions\">Your questions</a></li>\n    <li><a class=\"ds-button ds-button--small\" href=\"#home\">Get it, 1.99</a></li>\n  </ul>\n</header>\n\n<section class=\"ds-view ds-view--home\" id=\"home\">\n  <div class=\"ds-page__wrap\">\n\n    <div class=\"ds-hero\" data-component=\"hero\">\n      <div class=\"ds-hero__copy\">\n        <div class=\"ds-hero__app\">\n          <span class=\"ds-hero__tile\"><svg viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 34c2-12 10-20 22-20 4 0 7 2 8 5l5 2-5 2c-1 9-8 15-18 15H8z\"/><path d=\"M8 34l10-8\"/><circle cx=\"32\" cy=\"20\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M22 38v5M28 37v6\"/></svg></span>\n          <div>\n            <span class=\"ds-hero__name\">chronoskin</span>\n            <span class=\"ds-hero__kicker\">A field notebook for birds. Version 2.1 for the phone.</span>\n          </div>\n        </div>\n        <h1 class=\"ds-hero__title\">Every bird you meet, written down before it flies.</h1>\n        <p class=\"ds-hero__lead\">Tap a name, tap a number, and the sighting is in the book with the place, the hour and the weather.</p>\n        <div class=\"ds-hero__actions\">\n          <a class=\"ds-button ds-button--large\" href=\"#versions\">Get the app for 1.99\n            <svg class=\"ds-button__icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M8 2v9M4 7l4 4 4-4M3 14h10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n          </a>\n          <a class=\"ds-link\" href=\"#press\">Read what the papers said</a>\n        </div>\n        <form class=\"ds-hero__send\" action=\"#home\">\n          <input class=\"ds-form__input is-focus\" type=\"text\" value=\"odile@example.org\" aria-label=\"Your address\">\n          <button class=\"ds-button ds-button--secondary\" type=\"button\">Send the link to my phone</button>\n        </form>\n        <p class=\"ds-hero__note\">One letter with the link and nothing after it.</p>\n      </div>\n      <div class=\"ds-hero__stage\" aria-hidden=\"true\">\n        <div class=\"ds-hero__phone\">\n          <div class=\"ds-hero__screen\">\n            <div class=\"ds-hero__status\"><span>Carrier</span><span>7:42</span><span>82%</span></div>\n            <div class=\"ds-hero__topbar\">This morning</div>\n            <ul class=\"ds-hero__rows\">\n              <li class=\"ds-hero__group\">Mill pond, light rain</li>\n              <li class=\"ds-hero__row\"><span>Wren<span class=\"ds-hero__row-meta\">In the reeds, singing</span></span><span class=\"ds-badge ds-badge--count\">2</span></li>\n              <li class=\"ds-hero__row\"><span>Goldfinch<span class=\"ds-hero__row-meta\">On the teasels</span></span><span class=\"ds-badge ds-badge--count\">5</span></li>\n              <li class=\"ds-hero__row\"><span>Kingfisher<span class=\"ds-hero__row-meta\">First of the year</span></span><span class=\"ds-badge\">New</span></li>\n              <li class=\"ds-hero__group\">Lane to the church</li>\n              <li class=\"ds-hero__row\"><span>Dunnock<span class=\"ds-hero__row-meta\">Under the hedge</span></span><span class=\"ds-badge ds-badge--count\">1</span></li>\n              <li class=\"ds-hero__row\"><span>Song thrush<span class=\"ds-hero__row-meta\">On the wall</span></span><span class=\"ds-badge ds-badge--count\">1</span></li>\n            </ul>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <ul class=\"ds-stats\" data-component=\"stats\">\n      <li class=\"ds-stat is-first\"><span class=\"ds-stat__value\">612</span><span class=\"ds-stat__label\">birds in the book</span></li>\n      <li class=\"ds-stat\"><span class=\"ds-stat__value\">4.5</span><span class=\"ds-stat__label\">stars from 1,280 readers</span></li>\n      <li class=\"ds-stat\"><span class=\"ds-stat__value\">31</span><span class=\"ds-stat__label\">countries</span></li>\n      <li class=\"ds-stat\"><span class=\"ds-stat__value\">9 MB</span><span class=\"ds-stat__label\">no signal needed</span></li>\n    </ul>\n\n    <h2 class=\"ds-page__title\">What it does in the field</h2>\n    <ul class=\"ds-grid\" data-component=\"grid\">\n      <li class=\"ds-grid__cell\">\n        <span class=\"ds-grid__icon\"><svg class=\"ds-grid__glyph\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 3h14v18H5zM9 8h6M9 12h6M9 16h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></span>\n        <div class=\"ds-grid__body\">\n          <h3 class=\"ds-grid__title\">Two taps to a sighting</h3>\n          <p class=\"ds-grid__text\">The birds you see most rise to the top of the list, so a wren is never more than a thumb away.</p>\n          <a class=\"ds-grid__more\" href=\"#versions\">How the list learns</a>\n        </div>\n      </li>\n      <li class=\"ds-grid__cell ds-grid__cell--2\">\n        <span class=\"ds-grid__icon\"><svg class=\"ds-grid__glyph\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 21s-7-7-7-12a7 7 0 0 1 14 0c0 5-7 12-7 12z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linejoin=\"round\"/><circle cx=\"12\" cy=\"9\" r=\"2\" fill=\"currentColor\"/></svg></span>\n        <div class=\"ds-grid__body\">\n          <h3 class=\"ds-grid__title\">The place fills itself in</h3>\n          <p class=\"ds-grid__text\">Pond, lane or headland, with the hour and the weather. It works with no signal at all.</p>\n          <a class=\"ds-grid__more is-hover\" href=\"#press\">What it keeps, and where</a>\n        </div>\n      </li>\n      <li class=\"ds-grid__cell ds-grid__cell--3\">\n        <span class=\"ds-grid__icon\"><svg class=\"ds-grid__glyph\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20V10M10 20V4M16 20v-8M22 20H2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"/></svg></span>\n        <div class=\"ds-grid__body\">\n          <h3 class=\"ds-grid__title\">A year at a glance</h3>\n          <p class=\"ds-grid__text\">First swallow, last fieldfare, and how this spring compares with the one before.</p>\n          <a class=\"ds-grid__more\" href=\"#versions\">New in version 2.1</a>\n        </div>\n      </li>\n      <li class=\"ds-grid__cell ds-grid__cell--4\">\n        <span class=\"ds-grid__icon\"><svg class=\"ds-grid__glyph\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 3v12M7 8l5-5 5 5M4 15v6h16v-6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></span>\n        <div class=\"ds-grid__body\">\n          <h3 class=\"ds-grid__title\">Your book stays yours</h3>\n          <p class=\"ds-grid__text\">Send the whole notebook to yourself as one plain file whenever you like.</p>\n          <a class=\"ds-grid__more\" href=\"#support\">Moving to a new phone</a>\n        </div>\n      </li>\n    </ul>\n\n    <div class=\"ds-page__columns\">\n      <div class=\"ds-page__main\">\n        <h2 class=\"ds-page__title\">Lately</h2>\n        <div class=\"ds-page__sheet\">\n          <ul class=\"ds-list\" data-component=\"list\">\n            <li class=\"ds-list__item is-first\">\n              <svg class=\"ds-list__icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M8 2l1.8 3.8 4.2.5-3.1 2.8.8 4.1L8 11.2 4.3 13.2l.8-4.1L2 6.3l4.2-.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=\"#versions\">Version 2.1 counts the year for you</a><span class=\"ds-list__meta\">12 May &middot; year lists, first and last dates</span></div>\n              <span class=\"ds-badge ds-badge--new\">New</span><svg class=\"ds-list__chevron\" viewBox=\"0 0 12 12\" aria-hidden=\"true\"><path d=\"M4 1l5 5-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n            </li>\n            <li class=\"ds-list__item\">\n              <svg class=\"ds-list__icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 2h10v12H3zM6 6h4M6 9h4\" 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=\"#press\">A notebook that keeps up with a warbler</a><span class=\"ds-list__meta\">3 May &middot; from the Harbour Gazette</span></div>\n              <span class=\"ds-badge\">Press</span><svg class=\"ds-list__chevron\" viewBox=\"0 0 12 12\" aria-hidden=\"true\"><path d=\"M4 1l5 5-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n            </li>\n            <li class=\"ds-list__item\">\n              <svg class=\"ds-list__icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M2 4l4-2 4 2 4-2v10l-4 2-4-2-4 2zM6 2v10M10 4v10\" 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=\"#versions\">Forty more birds of the north coast</a><span class=\"ds-list__meta\">21 April &middot; version 2.0.2</span></div>\n              <span class=\"ds-badge ds-badge--count\">40</span><svg class=\"ds-list__chevron\" viewBox=\"0 0 12 12\" aria-hidden=\"true\"><path d=\"M4 1l5 5-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n            </li>\n            <li class=\"ds-list__item\">\n              <svg class=\"ds-list__icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 13l6-6M10 2a3.5 3.5 0 0 0 4 4l-2 2-4-4z\" 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=\"#support\">Moving your book to a new phone</a><span class=\"ds-list__meta\">9 April &middot; from the help desk</span></div>\n              <svg class=\"ds-list__chevron\" viewBox=\"0 0 12 12\" aria-hidden=\"true\"><path d=\"M4 1l5 5-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n            </li>\n          </ul>\n          <div class=\"ds-page__foot\">\n            <a class=\"ds-link\" href=\"#versions\">Every version since the first</a>\n            <span>4 of 23 notes</span>\n          </div>\n        </div>\n      </div>\n      <div class=\"ds-page__side\">\n        <h2 class=\"ds-page__title\">The price</h2>\n        <div class=\"ds-panel\" data-component=\"panel\">\n          <h3 class=\"ds-panel__title\">chronoskin for the phone</h3>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__price\">1.99</p>\n            <p class=\"ds-panel__text\">Once. Every bird list and every update after it is included.</p>\n            <ul class=\"ds-panel__list\">\n              <li class=\"ds-panel__line\">612 birds of 31 countries</li>\n              <li class=\"ds-panel__line\">Works with no signal</li>\n              <li class=\"ds-panel__line\">Your book, as one plain file</li>\n            </ul>\n          </div>\n          <div class=\"ds-panel__foot\">\n            <a class=\"ds-button is-hover\" href=\"#versions\">Get the app</a>\n            <span>9 MB</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"versions\">\n  <div class=\"ds-page__wrap\">\n    <div class=\"ds-page__trail\">\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">chronoskin</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n        <li class=\"ds-breadcrumb__current\">What is new</li>\n      </ol>\n    </div>\n    <div class=\"ds-page__sheet\">\n      <header class=\"ds-page-header\" data-component=\"page-header\">\n        <span class=\"ds-page-header__tile\"><svg viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 34c2-12 10-20 22-20 4 0 7 2 8 5l5 2-5 2c-1 9-8 15-18 15H8z\"/><path d=\"M8 34l10-8\"/><circle cx=\"32\" cy=\"20\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M22 38v5M28 37v6\"/></svg></span>\n        <div class=\"ds-page-header__copy\">\n          <h1 class=\"ds-page-header__title\">What is new</h1>\n          <p class=\"ds-page-header__text\">Version 2.1 came out on 12 May. Updates are free for everyone who has the app.</p>\n        </div>\n        <div class=\"ds-page-header__actions\">\n          <a class=\"ds-button ds-button--secondary\" href=\"#support\">Report a fault</a>\n          <a class=\"ds-button\" href=\"#home\">Get version 2.1</a>\n        </div>\n      </header>\n      <div class=\"ds-row\">\n        <div class=\"ds-row__label\">\n          <h2 class=\"ds-row__title\">Version 2.1</h2>\n          <p class=\"ds-row__note\">12 May, 9 MB</p>\n        </div>\n        <div class=\"ds-row__body\">\n          <div class=\"ds-prose\" data-component=\"typography\">\n            <h1>The year, counted for you</h1>\n            <p class=\"ds-prose__lead\">Open the new Year page and the book has already done the sums.</p>\n            <p>Every sighting you have written down now feeds a list for the year: <strong>how many kinds, the first date and the last</strong>. Nothing needs setting up. The <a href=\"#press\">questions page</a> says what is counted and what is left out.</p>\n            <h2>Also in this version</h2>\n            <ul>\n              <li>Forty birds of the north coast, with their winter names</li>\n              <li>A larger count key for cold fingers</li>\n              <li>The weather line now notes wind as well as rain</li>\n            </ul>\n            <h3>For the careful</h3>\n            <p>The book you send yourself is one plain file named <code>sightings.csv</code>, a line to a bird, readable by any table program.</p>\n          </div>\n        </div>\n      </div>\n      <div class=\"ds-row ds-row--tint\">\n        <div class=\"ds-row__label\">\n          <h2 class=\"ds-row__title\">Every version</h2>\n          <p class=\"ds-row__note\">Newest first. A version marked Fault has a known problem that the next one mends.</p>\n          <div class=\"ds-badges\" data-component=\"badge\">\n            <span class=\"ds-badge\">23</span>\n            <span class=\"ds-badge ds-badge--success\">Current</span>\n            <span class=\"ds-badge ds-badge--warning\">In review</span>\n            <span class=\"ds-badge ds-badge--danger\">Fault</span>\n          </div>\n        </div>\n        <div class=\"ds-row__body\">\n          <table class=\"ds-table\" data-component=\"table\">\n            <thead>\n              <tr><th class=\"ds-table__head\">Version</th><th class=\"ds-table__head\">Out on</th><th class=\"ds-table__head\">What changed</th><th class=\"ds-table__head\">State</th><th class=\"ds-table__head is-numeric\">Size, MB</th></tr>\n            </thead>\n            <tbody>\n              <tr class=\"ds-table__row is-first\"><td class=\"ds-table__cell ds-table__cell--name\">2.2</td><td class=\"ds-table__cell\">June</td><td class=\"ds-table__cell\">Sharing a walk with a friend</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">In review</span></td><td class=\"ds-table__cell is-numeric\">9.4</td></tr>\n              <tr class=\"ds-table__row is-alt\"><td class=\"ds-table__cell ds-table__cell--name\">2.1</td><td class=\"ds-table__cell\">12 May</td><td class=\"ds-table__cell\">Year lists, wind in the weather line</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">Current</span></td><td class=\"ds-table__cell is-numeric\">9.0</td></tr>\n              <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name\">2.0.2</td><td class=\"ds-table__cell\">21 April</td><td class=\"ds-table__cell\">Forty birds of the north coast</td><td class=\"ds-table__cell\"></td><td class=\"ds-table__cell is-numeric\">8.7</td></tr>\n              <tr class=\"ds-table__row is-alt\"><td class=\"ds-table__cell ds-table__cell--name\">2.0.1</td><td class=\"ds-table__cell\">2 April</td><td class=\"ds-table__cell\">Counts above 99 were cut short</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">Fault</span></td><td class=\"ds-table__cell is-numeric\">8.1</td></tr>\n              <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name\">2.0</td><td class=\"ds-table__cell\">18 March</td><td class=\"ds-table__cell\">The place and the weather fill themselves in</td><td class=\"ds-table__cell\"></td><td class=\"ds-table__cell is-numeric\">8.1</td></tr>\n            </tbody>\n          </table>\n          <div class=\"ds-row__foot\">\n            <ul class=\"ds-pagination\" data-component=\"pagination\">\n              <li><a class=\"ds-pagination__link is-first is-disabled\" href=\"#versions\">&lsaquo; Newer</a></li>\n              <li><a class=\"ds-pagination__link is-current\" href=\"#versions\">1</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#versions\">2</a></li>\n              <li><a class=\"ds-pagination__link is-hover\" href=\"#versions\">3</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#versions\">4</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#versions\">Older &rsaquo;</a></li>\n            </ul>\n            <span>1 to 5 of 23 versions</span>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"press\">\n  <div class=\"ds-page__wrap\">\n    <div class=\"ds-page__trail\">\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">chronoskin</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n        <li class=\"ds-breadcrumb__current\">Press and questions</li>\n      </ol>\n    </div>\n    <div class=\"ds-page__sheet\">\n      <header class=\"ds-page-header\">\n        <span class=\"ds-page-header__tile\"><svg viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 34c2-12 10-20 22-20 4 0 7 2 8 5l5 2-5 2c-1 9-8 15-18 15H8z\"/><path d=\"M8 34l10-8\"/><circle cx=\"32\" cy=\"20\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M22 38v5M28 37v6\"/></svg></span>\n        <div class=\"ds-page-header__copy\">\n          <h1 class=\"ds-page-header__title\">Press and questions</h1>\n          <p class=\"ds-page-header__text\">Kind words, the press kit, and the things people ask before they buy.</p>\n        </div>\n        <div class=\"ds-page-header__actions\">\n          <a class=\"ds-button ds-button--secondary\" href=\"#support\">Write to us</a>\n        </div>\n      </header>\n      <ul class=\"ds-quotes\">\n        <li class=\"ds-quote is-first\"><p class=\"ds-quote__text\">A notebook that keeps up with a warbler. We have not opened the paper one since.</p><span class=\"ds-quote__source\">Harbour Gazette</span></li>\n        <li class=\"ds-quote\"><p class=\"ds-quote__text\">Two taps, and the wren is in the book. Nothing on the phone is quicker.</p><span class=\"ds-quote__source\">Pocket Tools Monthly</span></li>\n        <li class=\"ds-quote\"><p class=\"ds-quote__text\">It worked on the headland with no signal and cold hands. That is the whole review.</p><span class=\"ds-quote__source\">The Field Desk</span></li>\n      </ul>\n      <div class=\"ds-row\">\n        <div class=\"ds-row__label\">\n          <div class=\"ds-sidebar\" data-component=\"sidebar\">\n            <h2 class=\"ds-sidebar__title\">On this page</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item is-first\"><a class=\"ds-link\" href=\"#press\">The press kit</a><span class=\"ds-sidebar__meta\">Four files, free to print</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#press\">Asked often</a><span class=\"ds-sidebar__meta\">Five short answers</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#versions\">What is new</a><span class=\"ds-sidebar__meta\">Version 2.1, 12 May</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#support\">Write to us</a><span class=\"ds-sidebar__meta\">A person answers</span></li>\n            </ul>\n          </div>\n        </div>\n        <div class=\"ds-row__body\">\n          <table class=\"ds-table\">\n            <thead>\n              <tr><th class=\"ds-table__head\">In the press kit</th><th class=\"ds-table__head\">For</th><th class=\"ds-table__head is-numeric\">Size, MB</th></tr>\n            </thead>\n            <tbody>\n              <tr class=\"ds-table__row is-first\"><td class=\"ds-table__cell ds-table__cell--name\">The app tile, large</td><td class=\"ds-table__cell\">Print and screen</td><td class=\"ds-table__cell is-numeric\">1.2</td></tr>\n              <tr class=\"ds-table__row is-alt\"><td class=\"ds-table__cell ds-table__cell--name\">Six pictures of the screen</td><td class=\"ds-table__cell\">Reviews</td><td class=\"ds-table__cell is-numeric\">3.8</td></tr>\n              <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name\">One page of facts</td><td class=\"ds-table__cell\">Editors in a hurry</td><td class=\"ds-table__cell is-numeric\">0.1</td></tr>\n              <tr class=\"ds-table__row is-alt\"><td class=\"ds-table__cell ds-table__cell--name\">Everything, in one folder</td><td class=\"ds-table__cell\">Everyone else</td><td class=\"ds-table__cell is-numeric\">5.1</td></tr>\n            </tbody>\n          </table>\n          <div class=\"ds-row__foot\">\n            <p class=\"ds-links\" data-component=\"links\">\n              <a class=\"ds-link\" href=\"#press\">Fetch the folder</a>\n              <a class=\"ds-link is-visited\" href=\"#versions\">Version notes</a>\n              <a class=\"ds-link is-hover\" href=\"#home\">The app page</a>\n              <a class=\"ds-link is-active\" href=\"#support\">Ask for a review copy</a>\n              <a class=\"ds-link ds-link--quiet\" href=\"#questions\">Your questions</a>\n            </p>\n          </div>\n        </div>\n      </div>\n      <div class=\"ds-row ds-row--tint\">\n        <div class=\"ds-row__label\">\n          <h2 class=\"ds-row__title\">Asked often</h2>\n          <p class=\"ds-row__note\">Not here? <a class=\"ds-link\" href=\"#support\">Write to us</a> and it soon will be.</p>\n        </div>\n        <div class=\"ds-row__body\">\n          <div class=\"ds-prose\">\n            <h3>Does it work with no signal?</h3>\n            <p>Yes. The bird lists live on the phone, and the place is filled in when a signal comes back.</p>\n            <h3>Which birds does it know?</h3>\n            <p>612 of them, across 31 countries. Each version adds a region; the north coast came in 2.0.2.</p>\n            <h3>Can I get my sightings out again?</h3>\n            <p>Whenever you like, as one plain file. The <a href=\"#versions\">version notes</a> describe it.</p>\n            <h3>Do I pay again for updates?</h3>\n            <p>No. You pay 1.99 once.</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"support\">\n  <div class=\"ds-page__wrap\">\n    <div class=\"ds-page__trail\">\n      <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n        <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">chronoskin</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n        <li><a class=\"ds-link ds-link--quiet\" href=\"#support\">Support</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n        <li class=\"ds-breadcrumb__current\">Write to us</li>\n      </ol>\n    </div>\n    <div class=\"ds-page__sheet\">\n      <header class=\"ds-page-header\">\n        <span class=\"ds-page-header__tile\"><svg viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 34c2-12 10-20 22-20 4 0 7 2 8 5l5 2-5 2c-1 9-8 15-18 15H8z\"/><path d=\"M8 34l10-8\"/><circle cx=\"32\" cy=\"20\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M22 38v5M28 37v6\"/></svg></span>\n        <div class=\"ds-page-header__copy\">\n          <h1 class=\"ds-page-header__title\">Support</h1>\n          <p class=\"ds-page-header__text\">Two people answer the post, usually within a working day.</p>\n        </div>\n        <div class=\"ds-page-header__actions\">\n          <a class=\"ds-button ds-button--secondary\" href=\"#press\">Read the answers first</a>\n        </div>\n      </header>\n      <ul class=\"ds-tabs\" data-component=\"tabs\">\n        <li><a class=\"ds-tabs__tab is-current\" href=\"#support\">Write to us</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#questions\">Your questions</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#press\">Asked often</a></li>\n      </ul>\n      <div class=\"ds-row\">\n        <div class=\"ds-row__label\">\n          <h2 class=\"ds-row__title\">Write to us</h2>\n          <p class=\"ds-row__note\">Say which phone and which version, and what you saw last before it went wrong.</p>\n        </div>\n        <div class=\"ds-row__body\">\n          <div class=\"ds-notices\" data-component=\"notice\">\n            <p class=\"ds-notice\"><span class=\"ds-notice__title\">Version 2.0.1 cuts counts above 99 short.</span> Version 2.1 mends it and puts the numbers back.</p>\n            <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__title\">Not sent.</span> Check the address below and try again.</p>\n          </div>\n        </div>\n      </div>\n      <div class=\"ds-row\">\n        <div class=\"ds-row__label\">\n          <div class=\"ds-sidebar\">\n            <h2 class=\"ds-sidebar__title\">Before you write</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item is-first\"><a class=\"ds-link\" href=\"#press\">Asked often</a><span class=\"ds-sidebar__meta\">Five short answers</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#versions\">Known faults</a><span class=\"ds-sidebar__meta\">By version</span></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#questions\">Your questions</a><span class=\"ds-sidebar__meta\">Two answered</span></li>\n            </ul>\n          </div>\n        </div>\n        <div class=\"ds-row__body\">\n          <form class=\"ds-form\" data-component=\"form\" action=\"#support\">\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"s-name\">Your name</label>\n              <div class=\"ds-form__field\"><input class=\"ds-form__input\" id=\"s-name\" type=\"text\" value=\"Odile Marchetti\"></div>\n            </div>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"s-mail\">Answer to</label>\n              <div class=\"ds-form__field\">\n                <input class=\"ds-form__input is-error\" id=\"s-mail\" type=\"text\" value=\"odile@example\">\n                <p class=\"ds-form__error\">This address is missing its ending.</p>\n              </div>\n            </div>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"s-about\">It is about</label>\n              <div class=\"ds-form__field\">\n                <select class=\"ds-form__select\" id=\"s-about\"><option>A fault in the app</option><option>A bird that is missing</option><option>My purchase</option></select>\n              </div>\n            </div>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__label\" for=\"s-text\">What happened</label>\n              <div class=\"ds-form__field\">\n                <textarea class=\"ds-form__textarea\" id=\"s-text\" placeholder=\"What you did, and what the app did\"></textarea>\n                <p class=\"ds-form__hint\">A line or two is enough to start.</p>\n              </div>\n            </div>\n            <div class=\"ds-form__row\">\n              <span class=\"ds-form__label\"></span>\n              <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> Send my phone model and app version along</label>\n            </div>\n            <div class=\"ds-form__actions\" data-component=\"buttons\">\n              <button class=\"ds-button\" type=\"button\">Send</button>\n              <a class=\"ds-button ds-button--secondary\" href=\"#questions\">Cancel</a>\n              <button class=\"ds-button is-disabled\" type=\"button\" disabled>Attach a picture</button>\n              <button class=\"ds-button ds-button--danger ds-form__actions-end\" type=\"button\">Erase my letters</button>\n            </div>\n          </form>\n        </div>\n      </div>\n      <div class=\"ds-row ds-row--tint\">\n        <div class=\"ds-row__label\">\n          <h2 class=\"ds-row__title\">Erase my letters</h2>\n          <p class=\"ds-row__note\">The key above asks once before it does anything.</p>\n        </div>\n        <div class=\"ds-row__body\">\n          <div class=\"ds-dialog__backdrop\">\n            <div class=\"ds-dialog\" data-component=\"dialog\" role=\"alertdialog\" aria-labelledby=\"d-title\">\n              <h3 class=\"ds-dialog__title\" id=\"d-title\">Erase both letters?</h3>\n              <div class=\"ds-dialog__body\">\n                <p class=\"ds-dialog__text\">Your two questions and our answers are removed from the help desk for good.</p>\n              </div>\n              <div class=\"ds-dialog__actions\">\n                <a class=\"ds-button ds-button--secondary\" href=\"#support\">Keep them</a>\n                <a class=\"ds-button ds-button--danger\" href=\"#questions\">Erase</a>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"questions\">\n  <div class=\"ds-page__wrap\">\n    <div class=\"ds-page__trail\">\n      <ol class=\"ds-breadcrumb\">\n        <li><a class=\"ds-link ds-link--quiet\" href=\"#home\">chronoskin</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n        <li><a class=\"ds-link ds-link--quiet\" href=\"#support\">Support</a></li>\n        <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">&rsaquo;</li>\n        <li class=\"ds-breadcrumb__current\">Your questions</li>\n      </ol>\n    </div>\n    <div class=\"ds-page__sheet\">\n      <header class=\"ds-page-header\">\n        <span class=\"ds-page-header__tile\"><svg viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 34c2-12 10-20 22-20 4 0 7 2 8 5l5 2-5 2c-1 9-8 15-18 15H8z\"/><path d=\"M8 34l10-8\"/><circle cx=\"32\" cy=\"20\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M22 38v5M28 37v6\"/></svg></span>\n        <div class=\"ds-page-header__copy\">\n          <h1 class=\"ds-page-header__title\">Support</h1>\n          <p class=\"ds-page-header__text\">Two people answer the post, usually within a working day.</p>\n        </div>\n        <div class=\"ds-page-header__actions\">\n          <a class=\"ds-button\" href=\"#support\">Ask a question</a>\n        </div>\n      </header>\n      <ul class=\"ds-tabs\">\n        <li><a class=\"ds-tabs__tab\" href=\"#support\">Write to us</a></li>\n        <li><a class=\"ds-tabs__tab is-current\" href=\"#questions\">Your questions</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#press\">Asked often</a></li>\n      </ul>\n      <div class=\"ds-row\">\n        <div class=\"ds-row__label\">\n          <h2 class=\"ds-row__title\">Waiting</h2>\n          <p class=\"ds-row__note\">Letters we have not answered yet.</p>\n        </div>\n        <div class=\"ds-row__body\">\n          <div class=\"ds-empty\" data-component=\"empty\">\n            <svg class=\"ds-empty__icon\" viewBox=\"0 0 48 48\" aria-hidden=\"true\"><path d=\"M6 12h36v26H6zM6 13l18 14 18-14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linejoin=\"round\"/></svg>\n            <h3 class=\"ds-empty__title\">Nothing is waiting</h3>\n            <p class=\"ds-empty__text\">Every letter you sent has an answer. A new one is read within a working day.</p>\n            <a class=\"ds-button ds-button--secondary\" href=\"#support\">Write to us</a>\n          </div>\n        </div>\n      </div>\n      <div class=\"ds-row ds-row--tint\">\n        <div class=\"ds-row__label\">\n          <h2 class=\"ds-row__title\">Answered</h2>\n          <p class=\"ds-row__note\">Kept for a year, or until you erase them.</p>\n        </div>\n        <div class=\"ds-row__body\">\n          <div class=\"ds-page__sheet\">\n            <ul class=\"ds-list\">\n              <li class=\"ds-list__item is-first\">\n                <svg class=\"ds-list__icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M3 2h10v12H3zM6 6h4M6 9h4\" 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=\"#versions\">My count of 120 gulls shows as 20</a><span class=\"ds-list__meta\">Asked 4 April &middot; answered the same day by Anselm</span></div>\n                <span class=\"ds-badge ds-badge--success\">Mended in 2.1</span><svg class=\"ds-list__chevron\" viewBox=\"0 0 12 12\" aria-hidden=\"true\"><path d=\"M4 1l5 5-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n              </li>\n              <li class=\"ds-list__item\">\n                <svg class=\"ds-list__icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M2 4l4-2 4 2 4-2v10l-4 2-4-2-4 2zM6 2v10M10 4v10\" 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=\"#press\">Is the hawfinch in the book?</a><span class=\"ds-list__meta\">Asked 19 March &middot; answered 20 March by Margit</span></div>\n                <span class=\"ds-badge ds-badge--count\">2</span><svg class=\"ds-list__chevron\" viewBox=\"0 0 12 12\" aria-hidden=\"true\"><path d=\"M4 1l5 5-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n              </li>\n            </ul>\n            <div class=\"ds-page__foot\">\n              <a class=\"ds-link\" href=\"#support\">Erase my letters</a>\n              <span>2 letters</span>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n\n<footer class=\"ds-footer\" data-component=\"footer\">\n  <div class=\"ds-footer__inner\">\n    <div class=\"ds-footer__copy\">\n      <h2 class=\"ds-footer__title\">chronoskin, a field notebook for birds</h2>\n      <ul class=\"ds-footer__links\">\n        <li><a class=\"ds-footer__link\" href=\"#home\">The app</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#versions\">What is new</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#press\">Press and questions</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#support\">Support</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#questions\">Your questions</a></li>\n      </ul>\n      <p class=\"ds-footer__note\">Made by two people and a pair of field glasses. All figures on this page are examples.</p>\n    </div>\n    <a class=\"ds-button ds-button--secondary ds-button--large\" href=\"#home\">Get the app for 1.99</a>\n  </div>\n</footer>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.skeuomorphism.landing.s05.p05.t05.u05\",\n  \"library\": \"2026.10.07-2111\",\n  \"era\": {\n    \"slug\": \"skeuomorphism\",\n    \"years\": [\n      2009,\n      2013\n    ]\n  },\n  \"archetype\": \"landing\",\n  \"mode\": \"pure\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1280,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-sk-5555\",\n  \"short\": \"v1-sk-5555\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #e8e8e8;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #f6f4f7;\n  --color-surface-strong: #e9e3ee;\n  --color-bar: #9a55b8;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #d6d2dc;\n  --color-bar-alt-text: #40364a;\n  --color-inverse: #303038;\n  --color-inverse-text: #ffffff;\n  --color-text: #4a4a4f;\n  --color-text-muted: #8a8791;\n  --color-heading: #2b2530;\n  --color-heading-alt: #5a2d82;\n  --color-link: #7a3aa8;\n  --color-link-quiet: #8a8791;\n  --color-link-visited: #96709f;\n  --color-link-hover: #e03f7f;\n  --color-link-active: #b3246a;\n  --color-border: #e2dfe6;\n  --color-border-strong: #bdb7c6;\n  --color-border-muted: #f0eef2;\n  --color-accent: #e03f7f;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #f0a020;\n  --color-fill-1: #8a3aa0;\n  --color-fill-2: #2898d8;\n  --color-fill-3: #68b030;\n  --color-fill-4: #f08a1c;\n  --color-button: #e03f7f;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #ececf0;\n  --color-button-secondary-text: #40364a;\n  --color-input: #ffffff;\n  --color-input-text: #2b2530;\n  --color-input-border: #bdb7c6;\n  --color-disabled: #e6e4ea;\n  --color-disabled-text: #a9a5b0;\n  --color-danger: #c03828;\n  --color-danger-surface: #fdf0ee;\n  --color-success: #68b030;\n  --color-warning: #f0a020;\n  --color-notice: #f1eaf6;\n  --color-notice-text: #40364a;\n  --color-focus: #b78ad8;\n  --color-shadow: #1c1024;\n  --color-overlay: rgba(28, 16, 36, 0.45);\n}\n\n/* @part type */\n:root {\n  --font-body: \"Myriad Pro\", Myriad, \"Gill Sans\", \"Gill Sans MT\", Calibri, \"Trebuchet MS\", sans-serif;\n  --font-heading: \"Myriad Pro\", Myriad, \"Gill Sans\", \"Gill Sans MT\", Calibri, \"Trebuchet MS\", sans-serif;\n  --font-ui: \"Myriad Pro\", Myriad, \"Gill Sans\", \"Gill Sans MT\", Calibri, \"Trebuchet MS\", sans-serif;\n  --font-mono: \"Andale Mono\", Monaco, Consolas, monospace;\n  --text-base: 15px;\n  --text-small: 13px;\n  --text-ui: 14px;\n  --text-large: 19px;\n  --text-display: 42px;\n  --text-h1: 30px;\n  --text-h2: 22px;\n  --text-h3: 17px;\n  --line-body: 1.45;\n  --line-heading: 1.15;\n  --line-display: 1.05;\n  --weight-body: 400;\n  --weight-bold: 600;\n  --weight-heading: 600;\n  --weight-display: 600;\n  --weight-ui: 600;\n  --heading-transform: none;\n  --heading-tracking: -0.2px;\n  --display-tracking: -1px;\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: 5px;\n  --radius-panel: 10px;\n  --radius-pill: 13px;\n  --radius-page: 12px;\n  --shadow-panel: 0 0 0 1px color-mix(in srgb, var(--color-shadow) 10%, transparent), 0 1px 4px color-mix(in srgb, var(--color-shadow) 28%, transparent);\n  --shadow-control: inset 0 1px 0 color-mix(in srgb, white 50%, transparent), 0 1px 2px color-mix(in srgb, var(--color-shadow) 38%, transparent);\n  --shadow-control-hover: inset 0 1px 0 color-mix(in srgb, white 70%, transparent), 0 1px 3px color-mix(in srgb, var(--color-shadow) 50%, transparent);\n  --shadow-control-pressed: inset 0 2px 4px color-mix(in srgb, var(--color-shadow) 50%, transparent), 0 1px 0 color-mix(in srgb, white 35%, transparent);\n  --shadow-dialog: 0 0 0 1px color-mix(in srgb, var(--color-shadow) 35%, transparent), 0 3px 8px color-mix(in srgb, var(--color-shadow) 50%, transparent);\n  --shadow-text: 0 -1px 0 color-mix(in srgb, var(--color-shadow) 45%, transparent);\n  --fill-page: repeating-linear-gradient(90deg, color-mix(in srgb, white 34%, transparent) 0, color-mix(in srgb, white 34%, transparent) 2px, transparent 2px, transparent 5px, color-mix(in srgb, black 3%, transparent) 5px, color-mix(in srgb, black 3%, transparent) 6px, transparent 6px, transparent 8px), linear-gradient(to bottom, color-mix(in srgb, white 55%, transparent) 0, transparent 100%) 0 0 / 100% 320px no-repeat, var(--color-page);\n  --fill-bar: linear-gradient(to bottom, color-mix(in srgb, var(--color-bar), white 42%) 0, color-mix(in srgb, var(--color-bar), white 14%) 12%, var(--color-bar) 60%, color-mix(in srgb, var(--color-bar), black 22%) 100%);\n  --fill-bar-alt: linear-gradient(to bottom, color-mix(in srgb, var(--color-bar-alt), white 80%) 0, color-mix(in srgb, var(--color-bar-alt), white 35%) 45%, var(--color-bar-alt) 100%);\n  --fill-inverse: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M0 0h1v1H0zM4 4h1v1H4z' fill='white' fill-opacity='.07'/%3E%3Cpath d='M2 2h1v1H2zM6 6h1v1H6zM4 0h1v1H4zM0 4h1v1H0z' fill='black' fill-opacity='.2'/%3E%3C/svg%3E\"), linear-gradient(to bottom, color-mix(in srgb, var(--color-inverse), white 14%) 0, var(--color-inverse) 70%, color-mix(in srgb, var(--color-inverse), black 18%) 100%);\n  --fill-accent: linear-gradient(to bottom, color-mix(in srgb, var(--color-accent), white 34%) 0, var(--color-accent) 70%, color-mix(in srgb, var(--color-accent), black 12%) 100%);\n  --fill-panel: linear-gradient(to bottom, var(--color-surface) 0, var(--color-surface) 50%, var(--color-surface-alt) 100%);\n  --fill-button: linear-gradient(to bottom, color-mix(in srgb, var(--color-button), white 38%) 0, color-mix(in srgb, var(--color-button), white 8%) 40%, var(--color-button) 75%, color-mix(in srgb, var(--color-button), black 18%) 100%);\n  --fill-button-hover: linear-gradient(to bottom, color-mix(in srgb, var(--color-button), white 50%) 0, color-mix(in srgb, var(--color-button), white 20%) 40%, color-mix(in srgb, var(--color-button), white 8%) 75%, color-mix(in srgb, var(--color-button), black 8%) 100%);\n  --fill-button-secondary: linear-gradient(to bottom, color-mix(in srgb, var(--color-button-secondary), white 85%) 0, var(--color-button-secondary) 60%, color-mix(in srgb, var(--color-button-secondary), black 9%) 100%);\n  --fill-input: linear-gradient(to bottom, color-mix(in srgb, var(--color-input), black 10%) 0, var(--color-input) 6px);\n  --focus-ring: 3px solid color-mix(in srgb, var(--color-focus) 70%, transparent);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
