{
  "id": "v1-sk-3424",
  "long_id": "v1.skeuomorphism.landing.s03.p04.t02.u04",
  "name": "Skeuomorphism landing (single product, device and ribbon)",
  "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": "mix",
  "viewport": {
    "width": 1280,
    "fluid": false
  },
  "summary": "A single-product page from the years when web pages imitated physical materials: no navigation bar, only small glossy pills beside the site's mark and name, then a centred headline over the product shown on a large drawn screen, one big key, and a ribbon folded round a three-column feature row. It was a common shape for the sites of desktop and phone apps between about 2009 and 2013, built on one centred axis on a softly textured page. Text is small, and the richness is in the surfaces: bevelled keys, a device bezel, a ribbon with folded ends, coloured boards with a dark spine, engraved type.",
  "url": "https://chrono.skin/s/v1-sk-3424",
  "preview_url": "https://chrono.skin/s/v1-sk-3424/specimen.html",
  "files": {
    "STYLE.md": "# Skeuomorphism landing (single product, device and ribbon)\n\n## Summary\n\nA single-product page from the years when web pages imitated physical materials: no navigation bar, only small glossy pills beside the site's mark and name, then a centred headline over the product shown on a large drawn screen, one big key, and a ribbon folded round a three-column feature row. It was a common shape for the sites of desktop and phone apps between about 2009 and 2013, built on one centred axis on a softly textured page. Text is small, and the richness is in the surfaces: bevelled keys, a device bezel, a ribbon with folded ends, coloured boards with a dark spine, engraved type.\n\n## Layout\n\n- One centred axis. `--size-page` is 900px (`.ds-page__wrap`); nothing is placed beside the column, and there is no sidebar column on any page. Only the page texture and the dark footer band run the full window width.\n- Navigation is not a bar: `.ds-nav` is a row on the page texture with the `.ds-brand` at the left and six or fewer pills (`--size-pill`, 24px) at the right, one for each view. It is written once, above the views, and so is the footer band below them.\n- Order of the home page, all centred: navigation row, hero (headline, one line, the `--size-device` 640px screen on its stand, the large key and a note), the `.ds-ribbon` (it overhangs the column by `--space-3` each side and its ends fold behind) lying on the top edge of the three-column `.ds-features` sheet, a centred `.ds-page__title`, the `.ds-grid` of four boards in two rows of two, another centred title, then a `.ds-page__sheet` of `.ds-showcase` rows (one on the home page, more on the tour). Each showcase row sets words on one side and an object (`--size-object`, 330px: a list widget, a price card) on the other, the sides alternating from row to row; rows are separated by a hairline.\n- Section headings (`.ds-page__title`) stand on the page texture between blocks, centred, `--space-7` above and `--space-5` below. Sheets have no headings of their own.\n- Inner pages keep the navigation row and the axis. The hero, ribbon, features and boards are left out. The breadcrumb stands centred on the page texture (`.ds-page__trail`), `--space-3` under the navigation row and `--space-4` above the sheet. The sheet opens with `.ds-page-header` (an app tile, title and one line, keys at the right). A reading page (the tour) keeps the full 900px sheet (`.ds-page__sheet--inner`) and continues with `.ds-showcase` rows. A working page narrows the sheet to `--size-narrow` (700px, `.ds-page__sheet--narrow`): under the page header comes the `.ds-tabs` strip of centred pills when the page has siblings, then `.ds-page__section` parts: the `.ds-stats` box, a table inside a `.ds-window` frame with its pagination centred in the window's foot, a row of price cards (`.ds-plans`), the notices, the form in a `--size-form` (440px) column centred in the sheet, an open dialog on its backdrop (`.ds-page__section--last` closes the sheet). What a sidebar would hold stands under the sheet as three `.ds-sidebar` link blocks side by side (`.ds-page__blocks`), on the page texture.\n- Views. The specimen is a five-screen site, one `.ds-view` showing at a time. `home` is the product page: hero, ribbon and features, the four boards, and a closing showcase row with a price card. `tour` is the reading page: the long copy beside a list widget of passages, then the labels a passage carries, further links and the free-season card. `prices` compares the three seasons: three price cards, a table of what each includes, a notice. `log` is the signed-in log of one boat: figures, the passage table with pagination, an empty repairs window, link blocks beneath. `boat` is the boat's settings form with its notices, the row of keys and the dialog that the destructive key opens. The pill of the showing view takes the key fill, through one `:has()` selector per view in `components.css`; add one when adding a view.\n- Spacing scale: `--space-1` 3px (badge padding, sidebar rows, the blur of an inset well), `--space-2` 6px (row padding, between pills and keys), `--space-3` 12px (cell padding, form rows, the ribbon's overhang and the spine of a board), `--space-4` 18px (control side padding, board padding, between boards), `--space-5` 24px (section padding, feature padding), `--space-6` 36px (showcase padding, above the ribbon, between link blocks), `--space-7` 54px (above section titles, the gap between the two sides of a showcase row, above the footer).\n- Control heights: `--size-pill` 24px (navigation and tab pills, pagination keys), `--size-control` 30px (keys, fields), `--size-control-large` 44px (the hero key and the footer key). `--size-ribbon` is 38px; `--size-well` 56px the app tile and the empty-state well; `--size-hair` 1px the offset of every highlight and engraving.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- Leaf green and neutral grey, with slate blue for actions. `--color-page` #f4f4f4 is the light grey page; `--color-canvas` and `--color-surface` #ffffff the sheet; `--color-surface-alt` #f8f8f8 the tone a section fades to; `--color-surface-strong` #e7e8e8 toolbar strips.\n- `--color-bar` #6bb130 (green, white text) is the navigation bar, table head and pressed \"current\" states; `--color-bar-alt` #c8c8c8 with #484848 text is title strips and the segmented control; `--color-inverse` #426377 (dark slate, white text) only the closing band.\n- Text is `--color-text` #5a5a5a, meta `--color-text-muted` #8e8e8e, headings `--color-heading` #484848; sidebar and panel titles and form labels are the deep green `--color-heading-alt` #438519.\n- Links are `--color-link` #5f9e2b, darkening to `--color-link-hover` #438519; visited links turn slate #568099.\n- `--color-button` #5d7f98 slate is the one primary action colour; the secondary key is the pale grey `--color-button-secondary` #dddddd with #5a5a5a text.\n- `--color-accent` #5b9aa9 (teal slate) for badges, `--color-accent-alt` #c5cb00 (lime) for \"new\" markers; `--color-success` #5f9e2b, `--color-warning` #deed00 (highlighter yellow, dark text), `--color-danger` #591205 (maroon). Notices are the sticky-note yellow `--color-notice` #e4dd90 with #4c4f47 text.\n- `--color-fill-1` to `--color-fill-4` (#6bb130, #5d7f98, #438519, #7e7d7e) colour the grid blocks only; white text on all four.\n- One family for everything: `--font-body`, `--font-heading` and `--font-ui` are \"Helvetica Neue\", Helvetica, Arial; `--font-mono` Monaco for code.\n- `--text-base` 12px at `--line-body` 1.4; `--text-small` 11px for meta; `--text-ui` 12px at `--weight-ui` 700 for keys, navigation and table heads; `--text-large` 16px for the lead and the large key.\n- Headings are bold, not light: `--weight-heading` and `--weight-display` 700. `--text-h3` 14px, `--text-h2` 17px, `--text-h1` 27px, `--text-display` 30px at `--line-display` 1.1 for the hero headline.\n- Links in running text are underlined (`--link-decoration: underline`) and lose the underline on hover (`--link-decoration-hover: none`); quiet links, titles and navigation are never underlined.\n- No uppercase and no tracking from this part: `--ui-transform` and `--heading-transform` are none.\n- Paper and linen. `--fill-page` is paper: short fibre flecks and a soft pool of light at the top over `--color-page`. `--fill-bar` and `--fill-inverse` are linen: a 2px crosshatch weave over a top-lit gradient of the bar colour.\n- Corners are nearly square, as cut plates: `--radius-control` and `--radius-panel` 2px, `--radius-page` 3px; only `--radius-pill` 13px (navigation pills, badges, the large key) is round.\n- Keys are flat engraved plates: `--fill-button` is almost one colour (5% lighter at the top, 6% darker at the foot), and `--shadow-control` draws a second hairline just inside the border and a light line under the key, so every key has a double edge and no drop shadow; pressed keys take `--shadow-control-pressed`, an inset 3px shade. `--fill-input` is a well shaded over its top 7px.\n- Panels and the sheet are mounted, not floating: `--shadow-panel` is a 3px light mat and a hairline around it, with no blur, so each has a double frame; `--shadow-dialog` is the same frame with a hard 6px ledge below. Borders are 1px solid hairlines.\n- `--shadow-text` engraves light text with a dark line one pixel above (0 -1px 0 at 40%). `--fill-bar-alt` and `--fill-button-secondary` are near-white, top-lit gradients. `--transition` is none.\n- Pairings this structure uses: `--color-bar-text` on `--fill-bar` (navigation, table head, the current sidebar row, the month of a calendar leaf); `--color-button-text` on `--fill-button` (keys and the current navigation tab); `--color-inverse-text` on `--fill-inverse` (the hero banner) and on the four `--color-fill-*` banners; `--color-accent-text` on `--fill-accent` (badges, the strip) and on the danger key; `--color-bar-alt-text` on `--fill-bar-alt` (sub bar, breadcrumb, folder tabs, counter plates); `--color-heading-alt` on `--fill-bar-alt` and `--color-surface-strong` title strips. On the page texture only `--color-heading`, `--color-text` and `--color-text-muted` are used.\n- One-off values built in `components.css` from tokens: the sheen of a banner (a radial and a linear gradient of `--color-canvas` and `--color-shadow` at 12 to 28% over the fill colour), the two-tone gloss of an icon tile, the one-pixel top highlight of bars, banners and strips, the white engraving shadow `0 var(--size-hair) 0 var(--color-canvas)` under dark text on light glossy fills, the gloss gradients of the danger key and the status badges, border colours darkened with `color-mix()` toward `--color-shadow`, the 9 and 7 degree tilt of the two hero cards, and `dashed` for the empty state.\n\n## Components\n\n- `.ds-page`: on `<body>`. Paints the textured page. `.ds-page__wrap` is the 900px column; `.ds-page__title` a centred section heading on the page (`.ds-page__strong` for its bold part); `.ds-page__sheet` a sheet, `.ds-page__sheet--inner` the full-width sheet of a reading inner page, `.ds-page__sheet--narrow` the 700px sheet of a working inner page with `.ds-page__section` parts (`.ds-page__section--last` on the last); `.ds-view` one screen of the site (`.ds-view--home` the first); `.ds-page__trail` the centred place of the breadcrumb; `.ds-page__blocks` the row of link blocks under an inner sheet.\n- `.ds-showcase`: one row of a wide sheet (`is-first` when nothing stands above it in the sheet): `.ds-showcase__copy` and a `.ds-showcase__object`; `.ds-showcase--flip` puts the object on the left; `.ds-showcase--even` holds two equal halves; `.ds-showcase__label` is a small bold label over a group (`is-first` on the first), `.ds-showcase__text` a paragraph under a group.\n- `.ds-nav`: the row on the page: the `.ds-brand` at the left and `.ds-nav__items` of `.ds-nav__item` pills. The pill of the showing view takes the key fill (also `is-current`, for a page without views); `is-hover` darkens the edge.\n- `.ds-brand`: the site's mark and name at the left of the navigation row, on the page texture. `.ds-brand__mark` is a 27px tile dressed as the primary key (`--fill-button`, a border darkened toward `--color-shadow`, `--radius-control`, `--shadow-control`) holding the mark as inline SVG in `--color-button-text`; `.ds-brand__name` is the name in the heading font at `--text-h2` in `--color-heading`, with the light engraving line under it. The name is always set in `--weight-bold`, whatever the set's heading weight, so that it holds its own beside the tile; it keeps the heading tracking and transform. The name and mark are placeholders for the installing project's own name and logo.\n- `.ds-hero`: centred: `.ds-hero__title` (`.ds-hero__strong` for the bold product name), `.ds-hero__lead`, the drawn `.ds-hero__device` (bezel) holding `.ds-hero__screen` with `.ds-hero__bar`, `.ds-hero__body`, `.ds-hero__sources` of `.ds-hero__source` rows (`is-current` lit) and `.ds-hero__rows` of `.ds-hero__row` items with a `.ds-hero__box` (`is-done` greyed), the `.ds-hero__stand` under it, then `.ds-hero__actions` with one `.ds-button--large` and a `.ds-hero__note`. Once per page.\n- `.ds-ribbon`: the accent band folded round the top of `.ds-features`; one short line of text. Once per page, only directly above the features sheet.\n- `.ds-features`: three `.ds-feature` columns on one sheet (`is-first` on the first), each a `.ds-feature__glyph`, `.ds-feature__title`, `.ds-feature__sub` and `.ds-feature__text`, centred.\n- `.ds-page-header`: the head of the narrow inner sheet: `.ds-page-header__tile` (a bevelled app tile with `.ds-page-header__glyph`), `.ds-page-header__copy` with `.ds-page-header__title` and one `.ds-page-header__text` line, and `.ds-page-header__actions` with one primary and at most one secondary key at the normal height.\n- `.ds-prose`: running text: h1, h2, h3, paragraphs, lists, `code`, links. `.ds-prose__lead` is the opening line.\n- `.ds-link`: text link; states `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` for the breadcrumb and other secondary links. `.ds-links` is a wrapping row.\n- `.ds-button`: bevelled key. `.ds-button--secondary` the secondary key; `.ds-button--danger` the destructive key in `--color-danger`, kept apart from the others; `.ds-button--large` the 44px key of the hero and the footer, rounded by `--radius-pill`; `.ds-button--small` a 24px key. States `is-hover`, `is-active`, `is-focus`, `is-disabled`. `.ds-button__icon` is a 16px glyph; `.ds-buttons` a row.\n- `.ds-form`: `.ds-form__column` is the narrow centred column; each `.ds-form__row` has a `.ds-form__label` over its control. `.ds-form__input` and `.ds-form__textarea` are inset wells, `.ds-form__select` looks like a secondary key. `is-error` with `.ds-form__error`; `.ds-form__hint`; `.ds-form__check` with `.ds-form__checkbox`; `.ds-form__actions`, a wrapping row of keys where `.ds-form__actions-end` pushes the destructive key to the right.\n- `.ds-table`: compact ruled table that always sits in a `.ds-window` frame (`.ds-window__bar` with `.ds-window__title` and a count above, `.ds-window__foot` with the pagination below; `.ds-window__body` is the padded inside of a window that holds something other than a table, such as the empty state). `.ds-table__head` cells take the bar fill; `.ds-table__row` with `is-first` (and `is-alt` if stripes are wanted); `.ds-table__cell` with faint column rules, `is-edge` on the first column, `.ds-table__cell--name` for the leading column, `is-numeric` for numbers.\n- `.ds-list`: a small framed widget, the object of a showcase row: a dark spine down the left edge and glossy `.ds-list__item` rows (`is-first` on the first), each a `.ds-list__body` with `.ds-list__title` and `.ds-list__meta` and a count badge at the right.\n- `.ds-panel`: a centred price card: `.ds-panel__title` over a dashed rule, `.ds-panel__body` with `.ds-panel__price`, `.ds-panel__text` and one key. The object of a showcase row, or three side by side in a `.ds-plans` row, where the cards are equally tall and the keys line up along the bottom.\n- `.ds-stat`: one figure, centred: `.ds-stat__value` over `.ds-stat__label`. Three sit in one `.ds-stats` box divided by hairlines (`is-first` on the first), at the top of an inner sheet.\n- `.ds-grid`: two rows of two `.ds-grid__cell` boards with a dark spine at the left. The base board uses `--color-fill-1`; `.ds-grid__cell--2`, `--3`, `--4` the other fills. Inside: `.ds-grid__glyph` and `.ds-grid__body` with `.ds-grid__title`, `.ds-grid__text`, `.ds-grid__more`.\n- `.ds-tabs`: a tinted strip across the sheet with centred `.ds-tabs__tab` pills; `is-current` is pressed and dark, `is-hover` lightens.\n- `.ds-badge`: small tag or lozenge for a count or a word. `.ds-badge--count` is pressed into the surface, `.ds-badge--new` the \"new\" marker; `.ds-badge--success`, `.ds-badge--warning` (dark text) and `.ds-badge--danger` are the status labels. `.ds-badges` is a row.\n- `.ds-sidebar`: an unboxed link block on the page texture: `.ds-sidebar__title` over an etched rule and a `.ds-sidebar__list` of `.ds-sidebar__item` entries, each a link and a `.ds-sidebar__meta` line. Three stand side by side in `.ds-page__blocks` under an inner sheet; never as a column beside it.\n- `.ds-notice`: a rounded, centred message; `.ds-notice__title` for the bold lead-in; `.ds-notice--error` for errors. `.ds-notices` stacks them.\n- `.ds-pagination`: separate small keys, centred in the window foot. `.ds-pagination__link`; `is-current` is pressed and dark, `is-disabled` flat.\n- `.ds-breadcrumb`: at the top of every inner page, a centred trail with `.ds-breadcrumb__sep` slashes and `.ds-breadcrumb__current`.\n- `.ds-dialog`: a small window: a dark `.ds-dialog__title` bar with a round `.ds-dialog__close` at the right, a centred `.ds-dialog__body` with `.ds-dialog__heading` and `.ds-dialog__text`, and `.ds-dialog__actions` centred in a tinted strip, the confirming key last. `.ds-dialog__backdrop` is the dimmed area behind it. A destructive confirmation uses `.ds-button--danger` for the confirming key.\n- `.ds-empty`: no box: a round `.ds-empty__well` with `.ds-empty__icon`, `.ds-empty__title`, `.ds-empty__text` and one secondary key, centred. In a list or table that has nothing to show it sits in the `.ds-window__body` of that window.\n- `.ds-footer`: the dark full-width band that closes the page: `.ds-footer__call` with `.ds-footer__title` and one large secondary key, then `.ds-footer__links` of `.ds-footer__link` and a `.ds-footer__note`.\n- `.ds-switch`: glossy sliding ON/OFF switch over a checkbox (`.ds-switch__track`, inset, with a raised knob), set as rows of a `.ds-switches` list (`.ds-switches__row`, `.ds-switches__name`). Here: the Safekeeping row of the boat form.\n- `.ds-progress`: inset `<progress>` bar with a glossy fill and a `.ds-progress__label` line. Here: the \"In this log\" box.\n- `.ds-tooltip`: `?` key with a dark glossy bubble and arrow (`.ds-tooltip__trigger`, `.ds-tooltip__bubble`) shown on hover or focus. Here: beside the sync switch.\n- `.ds-carousel`: scroll-snap strip of `.ds-carousel__slide` screenshots, each with a glossy window bar, and static `.ds-carousel__dots`; `.ds-shots` with `.ds-shots__title` (`.ds-shots--inset` inside a sheet) frames it as a band. Here: a band of the tour sheet.\n- `.ds-menu`: popover list with an arrow, hanging from a toolbar button (`<details>`, `.ds-menu__button`, `.ds-menu__list`, `.ds-menu__item`). Here: the header toolbar of the log view.\n\n## Never\n\n- `content-width <= 920px`: everything stays inside the 900px column.\n- `block-gap <= 54px`: the largest gap between blocks is the 54px above a section title.\n- `row-gap <= 18px`: list and table rows touch; the two rows of boards are 18px apart.\n- `font-size <= 30px`: the hero headline is the largest text.\n- `font-size >= 11px`: meta text is the smallest.\n- `font-weight >= 400`: no light weights; headlines are bold.\n- `font-families <= 2`: one sans-serif and a monospace.\n- `line-height <= 1.45`: body text is set at 1.4.\n- `underlined-links >= 25%`: links in running text and the sidebar are underlined.\n- `uppercase-text <= 5%`: capitals are not part of this type set; at most a few small titles.\n- `letter-spacing <= 1px`: nothing is tracked beyond the small capital titles.\n- `border-radius <= 24px`: the phone's shoulders are the largest radius; keys and sheets are 6px.\n- `border-width <= 1px`: every edge is a hairline; weight comes from shadows and gradients.\n- `box-shadow-blur <= 6px`: depth comes from hard 3px ledges; the soft shadow under them stays tight.\n- `transition = none`: states change at once.\n- `animation = none`: nothing moves; the carousel is drawn at rest.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. Keep the axis: a new block is centred in the column, and a new part of the home page is another `.ds-showcase` row with its object on the side opposite the row above, or a centred `.ds-page__title` followed by a block. A new part of a working inner page is another `.ds-page__section` in the narrow sheet, and a new part of a reading page another `.ds-showcase` row; a new screen is another `.ds-view` with its pill in the navigation row and its selector in the current-pill rule; tabular content gets a `.ds-window` frame. A raised thing (a key, a tile, a bar) takes a `--fill-*` gradient, a hairline border darkened toward `--color-shadow`, a one-pixel top highlight and `--shadow-control`; a sunk thing (a field, a well, a current item) takes a flat or darker fill and `--shadow-control-pressed` or the inset well shadow. Keep each text token on the fills listed under the pairings above. Do not add a navigation bar, a side column, flat coloured rectangles, wide soft shadows, borders thicker than 1px, new font families or new colours.\n",
    "components.css": ":root {\n  --size-page: 900px;\n  --size-narrow: 700px;\n  --size-form: 440px;\n  --size-device: 640px;\n  --size-source: 170px;\n  --size-object: 330px;\n  --size-ribbon: 38px;\n  --size-pill: 24px;\n  --size-control: 30px;\n  --size-control-large: 44px;\n  --size-icon: 16px;\n  --size-glyph: 36px;\n  --size-well: 56px;\n  --size-dialog: 340px;\n  --size-hair: 1px;\n  --space-1: 3px;\n  --space-2: 6px;\n  --space-3: 12px;\n  --space-4: 18px;\n  --space-5: 24px;\n  --space-6: 36px;\n  --space-7: 54px;\n}\n\n/* shell: textured page, one centred column, everything on the axis */\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\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.ds-page__title {\n  margin: var(--space-7) 0 var(--space-5);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-display);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-align: center;\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n  text-transform: var(--heading-transform);\n}\n.ds-page__strong { font-weight: var(--weight-bold); }\n.ds-page__sheet {\n  overflow: hidden;\n  border-radius: var(--radius-page);\n  background: var(--color-canvas);\n  box-shadow: var(--shadow-panel);\n}\n.ds-page__sheet--narrow {\n  width: var(--size-narrow);\n  margin: var(--space-4) auto 0;\n}\n.ds-page__sheet--inner { margin: var(--space-4) 0 0; }\n.ds-page__section { padding: var(--space-5) var(--space-5) 0; }\n.ds-page__section--last { padding-bottom: var(--space-6); }\n.ds-page__trail {\n  display: flex;\n  justify-content: center;\n  margin: var(--space-3) 0 0;\n}\n.ds-page__blocks {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-6);\n  width: var(--size-narrow);\n  margin: var(--space-6) auto 0;\n}\n\n/* showcase: one row of the long sheet, words on one side and an object on the other, sides alternating */\n.ds-showcase {\n  display: flex;\n  align-items: center;\n  gap: var(--space-7);\n  padding: var(--space-6) var(--space-7);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--fill-panel);\n}\n.ds-showcase.is-first { border-top: 0; }\n.ds-showcase--flip { flex-direction: row-reverse; }\n.ds-showcase--even {\n  align-items: stretch;\n  gap: var(--space-6);\n}\n.ds-showcase__copy {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-showcase__object {\n  flex: 0 0 var(--size-object);\n  width: var(--size-object);\n}\n.ds-showcase__label {\n  margin: var(--space-4) 0 var(--space-2);\n  color: var(--color-heading-alt);\n  font-weight: var(--weight-bold);\n}\n.ds-showcase__label.is-first { margin-top: 0; }\n.ds-showcase__text { margin: var(--space-3) 0 0; }\n.ds-showcase__copy .ds-buttons { margin: var(--space-4) 0 0; }\n\n/* nav: no bar; brand left, a row of small glossy pills right, straight on the page */\n.ds-nav {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: var(--space-5) 0 var(--space-4);\n}\n.ds-brand {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  color: var(--color-heading);\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-h2);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\n  text-transform: var(--heading-transform);\n}\n.ds-nav__items {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-nav__item {\n  display: block;\n  height: var(--size-pill);\n  padding: 0 var(--space-3);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-pill);\n  background: var(--fill-button-secondary);\n  box-shadow: var(--shadow-control);\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(--border-width) - var(--border-width));\n  text-decoration: var(--link-decoration-quiet);\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n  text-transform: var(--ui-transform);\n  transition: var(--transition);\n}\n.ds-nav__item:hover,\n.ds-nav__item.is-hover {\n  border-color: color-mix(in srgb, var(--color-border-strong) 75%, var(--color-shadow));\n  color: var(--color-heading);\n}\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(#tour:target) .ds-nav__item[href=\"#tour\"],\n.ds-page:has(#prices:target) .ds-nav__item[href=\"#prices\"],\n.ds-page:has(#log:target) .ds-nav__item[href=\"#log\"],\n.ds-page:has(#boat:target) .ds-nav__item[href=\"#boat\"] {\n  border-color: color-mix(in srgb, var(--color-button) 65%, var(--color-shadow));\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__item:focus-visible,\n.ds-nav__item.is-focus { outline: var(--focus-ring); }\n\n/* hero: centred headline and line, the product on a large screen, the one key under it */\n.ds-hero {\n  padding: var(--space-5) 0 0;\n  text-align: center;\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-hero__strong { font-weight: var(--weight-bold); }\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__device {\n  width: var(--size-device);\n  margin: 0 auto;\n  padding: var(--space-4) var(--space-4) var(--space-5);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-page);\n  background: var(--fill-bar-alt);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas), var(--shadow-dialog);\n}\n.ds-hero__screen {\n  overflow: hidden;\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 55%, transparent);\n  background: var(--color-surface);\n  box-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n  text-align: left;\n}\n.ds-hero__bar {\n  height: var(--size-pill);\n  border-bottom: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-bar) 65%, var(--color-shadow));\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  line-height: var(--size-pill);\n  text-align: center;\n  text-shadow: var(--shadow-text);\n}\n.ds-hero__body { display: flex; }\n.ds-hero__sources {\n  flex: 0 0 var(--size-source);\n  margin: 0;\n  padding: var(--space-2) 0;\n  border-right: var(--border-width) var(--border-style) var(--color-border-strong);\n  background: var(--color-surface-strong);\n  list-style: none;\n}\n.ds-hero__source {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: var(--space-1) var(--space-3);\n  color: var(--color-heading-alt);\n  font-size: var(--text-small);\n}\n.ds-hero__source.is-current {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  text-shadow: var(--shadow-text);\n}\n.ds-hero__rows {\n  flex: 1 1 0;\n  margin: 0;\n  padding: var(--space-1) var(--space-3) var(--space-6);\n  background: var(--fill-panel);\n  list-style: none;\n}\n.ds-hero__row {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--space-2) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  color: var(--color-heading);\n  font-size: var(--text-small);\n}\n.ds-hero__row.is-done { color: var(--color-disabled-text); }\n.ds-hero__box {\n  flex: 0 0 auto;\n  width: var(--space-3);\n  height: var(--space-3);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: 50%;\n  background: var(--fill-button-secondary);\n}\n.ds-hero__stand {\n  width: 24%;\n  height: var(--space-3);\n  margin: 0 auto;\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-top: 0;\n  border-radius: 0 0 var(--radius-page) var(--radius-page);\n  background: var(--fill-bar-alt);\n  box-shadow: var(--shadow-panel);\n}\n.ds-hero__actions {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: var(--space-2);\n  margin: var(--space-5) 0 0;\n}\n.ds-hero__note {\n  margin: 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-button--large {\n  height: var(--size-control-large);\n  padding: 0 var(--space-6);\n  border-radius: var(--radius-pill);\n  font-size: var(--text-large);\n}\n\n/* ribbon: an accent band wrapped round the top of the feature sheet, its ends folded behind */\n.ds-ribbon {\n  position: relative;\n  z-index: 1;\n  height: var(--size-ribbon);\n  margin: var(--space-6) calc(var(--space-3) * -1) 0;\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(--space-1) color-mix(in srgb, var(--color-shadow) 35%, transparent);\n  color: var(--color-accent-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--size-ribbon);\n  text-align: center;\n  text-shadow: var(--shadow-text);\n}\n.ds-ribbon::before,\n.ds-ribbon::after {\n  content: \"\";\n  position: absolute;\n  top: 100%;\n  left: 0;\n  width: var(--space-3);\n  height: var(--space-3);\n  background: linear-gradient(to bottom left, color-mix(in srgb, var(--color-accent) 55%, var(--color-shadow)) 50%, transparent 50%);\n}\n.ds-ribbon::after {\n  right: 0;\n  left: auto;\n  background: linear-gradient(to bottom right, color-mix(in srgb, var(--color-accent) 55%, var(--color-shadow)) 50%, transparent 50%);\n}\n\n/* features: three centred columns on one sheet, divided by hairlines */\n.ds-features {\n  display: flex;\n  margin: 0;\n  padding: var(--space-4) 0;\n  border-radius: 0 0 var(--radius-page) var(--radius-page);\n  background: var(--color-canvas);\n  box-shadow: var(--shadow-panel);\n  list-style: none;\n}\n.ds-feature {\n  flex: 1 1 0;\n  min-width: 0;\n  padding: var(--space-3) var(--space-5);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n  text-align: center;\n}\n.ds-feature.is-first { border-left: 0; }\n.ds-feature__glyph {\n  width: var(--size-glyph);\n  height: var(--size-glyph);\n  color: var(--color-heading-alt);\n}\n.ds-feature__title {\n  margin: var(--space-1) 0 0;\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-feature__sub {\n  margin: 0 0 var(--space-2);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-feature__text { margin: 0; }\n\n/* grid: two rows of two long coloured boards, a dark spine down the left edge */\n.ds-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: var(--space-4);\n  margin: 0;\n  padding: 0;\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-4) var(--space-5) var(--space-4) calc(var(--space-5) + var(--space-3));\n  border-radius: var(--radius-page);\n  background-color: var(--color-fill-1);\n  background-image:\n    linear-gradient(to right, color-mix(in srgb, var(--color-shadow) 26%, transparent) 0, color-mix(in srgb, var(--color-shadow) 26%, transparent) var(--space-3), color-mix(in srgb, var(--color-canvas) 22%, transparent) var(--space-3), color-mix(in srgb, var(--color-canvas) 22%, transparent) calc(var(--space-3) + var(--size-hair)), transparent calc(var(--space-3) + var(--size-hair))),\n    linear-gradient(to bottom, color-mix(in srgb, var(--color-canvas) 18%, transparent) 0, transparent 70%, color-mix(in srgb, var(--color-shadow) 14%, transparent) 100%);\n  box-shadow: inset 0 var(--size-hair) 0 color-mix(in srgb, var(--color-inverse-text) 30%, transparent), var(--shadow-panel);\n  color: var(--color-inverse-text);\n  text-shadow: var(--shadow-text);\n}\n.ds-grid__cell--2 { background-color: var(--color-fill-2); }\n.ds-grid__cell--3 { background-color: var(--color-fill-3); }\n.ds-grid__cell--4 { background-color: var(--color-fill-4); }\n.ds-grid__glyph {\n  flex: 0 0 auto;\n  width: var(--size-glyph);\n  height: var(--size-glyph);\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  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n.ds-grid__text { margin: 0 0 var(--space-2); }\n.ds-grid__more {\n  color: var(--color-inverse-text);\n  font-weight: var(--weight-bold);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-grid__more:hover,\n.ds-grid__more.is-hover { text-decoration: var(--link-decoration-hover); }\n\n/* page header: the head of the narrow sheet, an app tile, title and line, keys right */\n.ds-page-header {\n  display: flex;\n  align-items: center;\n  gap: var(--space-4);\n  padding: var(--space-5) var(--space-5) var(--space-4);\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-well);\n  height: var(--size-well);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-button) 65%, 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__glyph {\n  width: var(--size-glyph);\n  height: var(--size-glyph);\n}\n.ds-page-header__copy {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-page-header__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-display);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-page-header__text {\n  margin: 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/* tabs: a centred row of pills on a tinted strip, the current one pressed dark */\n.ds-tabs {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-2);\n  margin: 0;\n  padding: var(--space-2) var(--space-5);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--color-surface-strong);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas);\n  list-style: none;\n}\n.ds-tabs__tab {\n  display: block;\n  height: var(--size-pill);\n  padding: 0 var(--space-4);\n  border-radius: var(--radius-pill);\n  color: var(--color-heading-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--size-pill);\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 { background: color-mix(in srgb, var(--color-canvas) 70%, transparent); }\n.ds-tabs__tab.is-current {\n  background: color-mix(in srgb, var(--color-bar) 85%, var(--color-shadow));\n  box-shadow: var(--shadow-control-pressed), 0 var(--size-hair) 0 var(--color-canvas);\n  color: var(--color-bar-text);\n  text-shadow: var(--shadow-text);\n}\n\n/* stats: one raised box, centred figures, hairline dividers */\n.ds-stats {\n  display: flex;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  list-style: none;\n}\n.ds-stat {\n  flex: 1 1 0;\n  min-width: 0;\n  padding: var(--space-3) var(--space-2);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n  text-align: center;\n}\n.ds-stat.is-first { border-left: 0; }\n.ds-stat__value {\n  display: block;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-display);\n  line-height: var(--line-heading);\n}\n.ds-stat__label {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* window: the frame a table lives in, title bar above, key bar below */\n.ds-window {\n  overflow: hidden;\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-window__bar {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: var(--space-1) 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  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-window__title { font-weight: var(--weight-bold); }\n.ds-window__body {\n  padding: var(--space-5) var(--space-4);\n  background: var(--color-surface);\n}\n.ds-window__foot {\n  display: flex;\n  justify-content: center;\n  padding: var(--space-2) var(--space-3);\n  border-top: var(--border-width) var(--border-style) var(--color-border-strong);\n  background: var(--color-surface-strong);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas);\n}\n\n/* table: compact rows, hairline rules, no stripes */\n.ds-table {\n  width: 100%;\n  border-collapse: separate;\n  border-spacing: 0;\n}\n.ds-table__head {\n  padding: var(--space-1) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-bar) 65%, var(--color-shadow));\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-align: left;\n  text-shadow: var(--shadow-text);\n  text-transform: var(--ui-transform);\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  border-left: var(--border-width) var(--border-style) var(--color-border-muted);\n  background: var(--color-surface);\n  color: var(--color-text);\n  vertical-align: top;\n}\n.ds-table__cell.is-edge { border-left: 0; }\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); }\n.ds-table__head.is-numeric,\n.ds-table__cell.is-numeric { text-align: right; }\n\n/* list: a small framed widget with a dark spine, glossy rows, a count at the right */\n.ds-list {\n  margin: 0;\n  padding: 0 0 0 var(--space-3);\n  overflow: hidden;\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 45%, transparent);\n  border-radius: var(--radius-panel);\n  background: var(--fill-bar);\n  box-shadow: var(--shadow-dialog);\n  list-style: none;\n}\n.ds-list__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  padding: var(--space-2) var(--space-3);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  background: var(--fill-panel);\n  box-shadow: inset 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-list__item.is-first { border-top: 0; }\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-weight: var(--weight-bold);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-list__title:hover,\n.ds-list__title.is-hover { color: var(--color-link-hover); }\n.ds-list__meta {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* panel: a centred price card, title over a dashed rule */\n.ds-panel {\n  margin: 0;\n  overflow: hidden;\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n  text-align: center;\n}\n.ds-panel__title {\n  margin: 0 var(--space-4);\n  padding: var(--space-3) 0 var(--space-2);\n  border-bottom: var(--border-width) dashed var(--color-border-strong);\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n}\n.ds-panel__body { padding: var(--space-3) var(--space-4) var(--space-4); }\n.ds-panel__price {\n  margin: 0;\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}\n.ds-panel__text { margin: 0 0 var(--space-3); }\n.ds-plans {\n  display: flex;\n  align-items: stretch;\n  gap: var(--space-4);\n}\n.ds-plans .ds-panel {\n  display: flex;\n  flex: 1 1 0;\n  flex-direction: column;\n  min-width: 0;\n}\n.ds-plans .ds-panel__body {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-items: center;\n}\n.ds-plans .ds-button { margin-top: auto; }\n\n/* sidebar: there is no side column; link blocks stand three abreast under the sheet, on the page */\n.ds-sidebar {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-sidebar__title {\n  margin: 0 0 var(--space-2);\n  padding: 0 0 var(--space-2);\n  border-bottom: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-shadow) 12%, transparent);\n  box-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 60%, transparent);\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-sidebar__item { padding: var(--space-1) 0; }\n.ds-sidebar__meta {\n  display: block;\n  color: var(--color-text);\n  font-size: var(--text-small);\n}\n\n/* notice: a rounded centred message */\n.ds-notices { margin: 0; }\n.ds-notice {\n  margin: 0 0 var(--space-2);\n  padding: var(--space-2) var(--space-4);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-notice) 80%, var(--color-notice-text));\n  border-radius: var(--radius-panel);\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  text-align: center;\n}\n.ds-notice__title { font-weight: var(--weight-bold); }\n.ds-notice--error {\n  border-color: color-mix(in srgb, var(--color-danger-surface) 65%, var(--color-danger));\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n}\n\n/* form layout: one narrow centred column, labels over the fields */\n.ds-form__column {\n  width: var(--size-form);\n  max-width: 100%;\n  margin: var(--space-4) auto 0;\n}\n.ds-form__row { margin: 0 0 var(--space-3); }\n.ds-form__label {\n  display: block;\n  margin: 0 0 var(--space-1);\n  color: var(--color-heading-alt);\n  font-weight: var(--weight-bold);\n}\n.ds-form__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n  margin: var(--space-4) 0 0;\n}\n.ds-form__actions .ds-form__actions-end { margin-left: auto; }\n\n/* pagination: separate round keys, centred */\n.ds-pagination {\n  display: flex;\n  align-items: center;\n  gap: var(--space-1);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-pagination__link {\n  display: block;\n  min-width: var(--size-pill);\n  height: var(--size-pill);\n  padding: 0 var(--space-2);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-pill);\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  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(--border-width) - var(--border-width));\n  text-align: center;\n  text-decoration: none;\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover { color: var(--color-link-hover); }\n.ds-pagination__link.is-current {\n  border-color: color-mix(in srgb, var(--color-bar) 65%, var(--color-shadow));\n  background: color-mix(in srgb, var(--color-bar) 85%, 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}\n\n/* breadcrumb: a centred trail on the page, slashes between */\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-alt); font-weight: var(--weight-bold); }\n\n/* dialog: a small window with a dark title bar, its close key at the right */\n.ds-dialog__backdrop {\n  display: flex;\n  flex: 1 1 0;\n  align-items: center;\n  justify-content: center;\n  padding: var(--space-5) var(--space-4);\n  border-radius: var(--radius-page);\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-shadow) 55%, transparent);\n  border-radius: var(--radius-panel);\n  background: var(--color-surface);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-dialog__title {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin: 0;\n  padding: var(--space-1) var(--space-2) var(--space-1) var(--space-3);\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-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-body);\n  text-shadow: var(--shadow-text);\n}\n.ds-dialog__close {\n  position: relative;\n  width: var(--size-icon);\n  height: var(--size-icon);\n  border-radius: 50%;\n  background: color-mix(in srgb, var(--color-shadow) 30%, transparent);\n  box-shadow: var(--shadow-control-pressed);\n  color: var(--color-bar-text);\n  text-shadow: none;\n}\n.ds-dialog__close::before, .ds-dialog__close::after {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n  margin: auto;\n  width: 50%;\n  height: max(var(--border-width), calc(var(--text-ui) * 0.12));\n  background: currentColor;\n  transform: rotate(45deg);\n}\n.ds-dialog__close::after {\n  transform: rotate(-45deg);\n}\n.ds-dialog__body {\n  padding: var(--space-4);\n  text-align: center;\n}\n.ds-dialog__heading {\n  margin: 0 0 var(--space-1);\n  color: var(--color-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n}\n.ds-dialog__text { margin: 0; }\n.ds-dialog__actions {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-2);\n  padding: var(--space-2) 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}\n\n/* empty state: no box; a round well with a glyph, words and a key, centred */\n.ds-empty {\n  display: flex;\n  flex: 1 1 0;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n}\n.ds-empty__well {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--size-well);\n  height: var(--size-well);\n  margin: 0 0 var(--space-2);\n  border-radius: 50%;\n  background: var(--color-surface-alt);\n  box-shadow: inset 0 var(--size-hair) var(--space-1) color-mix(in srgb, var(--color-shadow) 22%, transparent), 0 var(--size-hair) 0 var(--color-canvas);\n  color: var(--color-border-strong);\n}\n.ds-empty__icon {\n  width: 50%;\n  height: 50%;\n}\n.ds-empty__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-3);\n  color: var(--color-text-muted);\n}\n\n/* footer: a dark band across the whole window with the closing key, then quiet links */\n.ds-footer {\n  margin: var(--space-7) 0 0;\n  padding: var(--space-6) 0 var(--space-5);\n  background: var(--fill-inverse);\n  box-shadow: inset 0 var(--size-hair) var(--space-1) color-mix(in srgb, var(--color-shadow) 40%, transparent);\n  color: var(--color-inverse-text);\n  text-align: center;\n  text-shadow: var(--shadow-text);\n}\n.ds-footer__call {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: var(--space-5);\n  margin: 0 0 var(--space-5);\n}\n.ds-footer__title {\n  margin: 0;\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-display);\n  line-height: var(--line-heading);\n}\n.ds-footer__links {\n  display: flex;\n  justify-content: center;\n  gap: var(--space-4);\n  margin: 0 0 var(--space-1);\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-small);\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) 65%, transparent);\n  font-size: var(--text-small);\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); font-weight: var(--weight-display); }\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 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) - 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-h3);\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 0 var(--space-4);\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: bevelled keys, text engraved */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\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) 65%, var(--color-shadow));\n  border-radius: var(--radius-control);\n  background: var(--fill-button);\n  box-shadow: var(--shadow-control);\n  color: var(--color-button-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: 1;\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  text-transform: var(--ui-transform);\n  white-space: nowrap;\n  cursor: pointer;\n  transition: var(--transition);\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  box-shadow: var(--shadow-control-hover);\n  color: var(--color-button-hover-text);\n}\n.ds-button:active,\n.ds-button.is-active {\n  background: linear-gradient(var(--color-button), var(--color-button));\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus { outline: var(--focus-ring); }\n.ds-button--secondary {\n  border-color: var(--color-border-strong);\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n  text-shadow: 0 var(--size-hair) 0 var(--color-canvas);\n}\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  border-color: color-mix(in srgb, var(--color-border-strong) 75%, var(--color-shadow));\n  background: var(--fill-button-secondary);\n  color: var(--color-heading);\n}\n.ds-button--secondary:active,\n.ds-button--secondary.is-active { background: linear-gradient(var(--color-bar-alt), var(--color-bar-alt)); }\n.ds-button--danger {\n  border-color: color-mix(in srgb, var(--color-danger) 65%, var(--color-shadow));\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-danger) 78%, var(--color-canvas)) 0, var(--color-danger) 55%, 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) 66%, var(--color-canvas)) 0, color-mix(in srgb, var(--color-danger) 92%, var(--color-canvas)) 55%, var(--color-danger) 100%);\n  color: var(--color-accent-text);\n}\n.ds-button--danger:active,\n.ds-button--danger.is-active { background: linear-gradient(var(--color-danger), var(--color-danger)); }\n.ds-button--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: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 70%, transparent);\n  cursor: default;\n}\n.ds-button__icon {\n  width: var(--size-icon);\n  height: var(--size-icon);\n}\n\n/* form controls: inset wells */\n.ds-form { margin: 0; }\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) 75%, 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) 14%, transparent), 0 var(--size-hair) 0 var(--color-canvas);\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  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}\n.ds-form__checkbox { margin: 0; }\n\n/* badge: lozenge or tag, by the pill radius */\n.ds-badges {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-badge {\n  display: inline-block;\n  min-width: calc(var(--size-icon) + var(--space-2));\n  height: var(--size-icon);\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) 40%, 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(--size-icon);\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) 85%, var(--color-shadow));\n  box-shadow: var(--shadow-control-pressed), 0 var(--size-hair) 0 var(--color-canvas);\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) 75%, var(--color-canvas)) 0, var(--color-accent-alt) 100%);\n  color: var(--color-heading);\n  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 50%, transparent);\n}\n.ds-badge--success {\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-success) 78%, var(--color-canvas)) 0, var(--color-success) 60%, color-mix(in srgb, var(--color-success) 90%, var(--color-shadow)) 100%);\n}\n.ds-badge--warning {\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-warning) 75%, var(--color-canvas)) 0, var(--color-warning) 60%, color-mix(in srgb, var(--color-warning) 90%, var(--color-shadow)) 100%);\n  color: var(--color-heading);\n  text-shadow: 0 var(--size-hair) 0 color-mix(in srgb, var(--color-canvas) 50%, transparent);\n}\n.ds-badge--danger {\n  background: linear-gradient(to bottom, color-mix(in srgb, var(--color-danger) 78%, var(--color-canvas)) 0, var(--color-danger) 60%, color-mix(in srgb, var(--color-danger) 90%, var(--color-shadow)) 100%);\n}\n\n/* Period components: switch, progress, tooltip, carousel, avatar, accordion, menu. Tokens only. */\n.ds-switch { display: inline-flex; flex: none; align-items: center; cursor: pointer; }\n.ds-switch input { position: absolute; opacity: 0; width: var(--size-hair); height: var(--size-hair); }\n.ds-switch__track { position: relative; display: block; flex: none; width: calc(var(--size-control) * 2); height: var(--size-pill); background: var(--fill-input); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-pill); box-shadow: var(--shadow-control-pressed); }\n.ds-switch__track::before { content: \"OFF\"; position: absolute; top: 0; right: var(--space-2); line-height: var(--size-pill); font-family: var(--font-ui); font-size: var(--text-small); font-weight: var(--weight-bold); color: var(--color-text-muted); }\n.ds-switch__track::after { content: \"\"; position: absolute; top: var(--size-hair); left: var(--size-hair); width: var(--size-control); height: var(--size-icon); background: var(--fill-button-secondary); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-pill); box-shadow: var(--shadow-control); }\n.ds-switch input:checked + .ds-switch__track { background: var(--fill-button); border-color: var(--color-button); }\n.ds-switch input:checked + .ds-switch__track::before { content: \"ON\"; left: var(--space-3); right: auto; color: var(--color-button-text); text-shadow: var(--shadow-text); }\n.ds-switch input:checked + .ds-switch__track::after { left: calc(var(--size-control) + var(--space-1)); }\n.ds-switch input:focus-visible + .ds-switch__track { outline: var(--focus-ring); }\n.ds-switches { width: 100%; max-width: calc(var(--size-control) * 11); margin: var(--space-2) 0; padding: 0; list-style: none; background: var(--color-surface); border: var(--border-width) var(--border-style) var(--color-border-strong); border-radius: var(--radius-panel); box-shadow: var(--shadow-panel); }\n.ds-switches__row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); min-height: calc(var(--size-control) + var(--space-2)); padding: var(--space-1) var(--space-3); }\n.ds-switches__row + .ds-switches__row { border-top: var(--border-width) var(--border-style) var(--color-border); }\n.ds-switches__name { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 0; font-family: var(--font-ui); font-size: var(--text-ui); font-weight: var(--weight-bold); color: var(--color-text); }\n\n.ds-progress { display: block; width: 100%; max-width: calc(var(--size-control) * 10); height: var(--size-icon); margin: var(--space-2) 0 var(--space-1); padding: 0; appearance: none; -webkit-appearance: none; background: var(--fill-input); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-pill); box-shadow: var(--shadow-control-pressed); overflow: hidden; }\n.ds-progress::-webkit-progress-bar { background: var(--fill-input); box-shadow: var(--shadow-control-pressed); }\n.ds-progress::-webkit-progress-value { background: var(--fill-button); border-radius: var(--radius-pill); box-shadow: var(--shadow-control); }\n.ds-progress::-moz-progress-bar { background: var(--fill-button); border-radius: var(--radius-pill); box-shadow: var(--shadow-control); }\n.ds-progress__label { display: block; margin: 0; font-family: var(--font-ui); font-size: var(--text-small); font-weight: var(--weight-body); color: var(--color-text-muted); }\n\n.ds-tooltip { position: relative; display: inline-flex; flex: none; align-items: center; margin-left: var(--space-1); vertical-align: middle; }\n.ds-tooltip__trigger { display: inline-flex; align-items: center; justify-content: center; width: var(--size-icon); height: var(--size-icon); padding: 0; background: var(--fill-button-secondary); color: var(--color-button-secondary-text); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-pill); box-shadow: var(--shadow-control); font-family: var(--font-ui); font-size: var(--text-small); font-weight: var(--weight-bold); line-height: 1; cursor: help; }\n.ds-tooltip__bubble { position: absolute; left: 50%; bottom: calc(100% + var(--space-3)); z-index: 5; width: max-content; max-width: calc(var(--size-control) * 8); padding: var(--space-2) var(--space-3); transform: translateX(-50%); visibility: hidden; opacity: 0; background: var(--fill-inverse); color: var(--color-inverse-text); border-radius: var(--radius-control); box-shadow: var(--shadow-control), var(--shadow-dialog); font-family: var(--font-ui); font-size: var(--text-small); font-weight: var(--weight-body); line-height: var(--line-body); letter-spacing: 0; text-align: left; text-transform: none; text-shadow: var(--shadow-text); white-space: normal; }\n.ds-tooltip__bubble::after { content: \"\"; position: absolute; left: 50%; top: 100%; width: var(--space-3); height: var(--space-3); margin: calc(var(--space-3) / -2) 0 0 calc(var(--space-3) / -2); transform: rotate(45deg); background: var(--color-inverse); }\n.ds-tooltip:hover .ds-tooltip__bubble, .ds-tooltip:focus-within .ds-tooltip__bubble { visibility: visible; opacity: 1; }\n\n.ds-carousel { margin: 0; }\n.ds-carousel__slides { display: flex; gap: var(--space-3); margin: 0; padding: var(--space-1) var(--space-1) var(--space-2); list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; }\n.ds-carousel__slide { flex: none; width: calc(var(--size-control) * 7); min-height: calc(var(--size-control) * 4); padding: 0 var(--space-3) var(--space-3); overflow: hidden; scroll-snap-align: start; background: var(--fill-panel); color: var(--color-text); border: var(--border-width) var(--border-style) var(--color-border-strong); border-radius: var(--radius-panel); box-shadow: var(--shadow-panel); font-family: var(--font-body); font-size: var(--text-small); line-height: var(--line-body); text-align: left; }\n.ds-carousel__slide::before { content: \"\"; display: block; height: var(--space-4); margin: 0 calc(var(--space-3) * -1) var(--space-3); background: var(--fill-bar); border-bottom: var(--border-width) var(--border-style) var(--color-border-strong); box-shadow: var(--shadow-control); }\n.ds-carousel__slide strong { display: block; margin-bottom: var(--space-1); font-family: var(--font-heading); font-size: var(--text-base); color: var(--color-heading); }\n.ds-carousel__dots { display: flex; justify-content: center; gap: var(--space-2); margin: var(--space-1) 0 0; padding: 0; list-style: none; }\n.ds-carousel__dot { width: var(--space-3); height: var(--space-3); background: var(--fill-input); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-pill); box-shadow: var(--shadow-control-pressed); }\n.ds-carousel__dot.is-current { background: var(--fill-button); border-color: var(--color-button); box-shadow: var(--shadow-control); }\n.ds-shots { margin: var(--space-4) 0; }\n.ds-shots--inset { margin: 0; padding: var(--space-4) var(--space-5); border-top: var(--border-width) var(--border-style) var(--color-border); }\n.ds-shots__title { margin: 0 0 var(--space-3); font-family: var(--font-heading); font-size: var(--text-h3); font-weight: var(--weight-heading); line-height: var(--line-heading); color: var(--color-heading); }\n\n.ds-menu { position: relative; display: inline-block; flex: none; }\n.ds-menu__button { display: inline-flex; align-items: center; height: var(--size-control); padding: 0 var(--space-3); background: var(--fill-button-secondary); color: var(--color-button-secondary-text); border: var(--border-width) var(--border-style) var(--color-input-border); border-radius: var(--radius-control); box-shadow: var(--shadow-control); font-family: var(--font-ui); font-size: var(--text-ui); font-weight: var(--weight-ui); cursor: pointer; list-style: none; }\n.ds-menu__button::-webkit-details-marker { display: none; }\n.ds-menu__button::after { content: \"\"; flex: none; width: 0; height: 0; border: calc(var(--text-ui) * 0.3) solid transparent; border-top: calc(var(--text-ui) * 0.36) solid currentColor; border-bottom-width: 0; margin-left: var(--space-2); }\n.ds-menu__button:hover { box-shadow: var(--shadow-control-hover); }\n.ds-menu[open] > .ds-menu__button { box-shadow: var(--shadow-control-pressed); }\n.ds-menu__list { position: absolute; top: calc(100% + var(--space-2)); right: 0; z-index: 6; min-width: calc(var(--size-control) * 6); margin: 0; padding: var(--space-1) 0; list-style: none; background: var(--color-surface); border: var(--border-width) var(--border-style) var(--color-border-strong); border-radius: var(--radius-control); box-shadow: var(--shadow-dialog); text-align: left; }\n.ds-menu__list::before { content: \"\"; position: absolute; right: var(--space-4); bottom: 100%; width: var(--space-3); height: var(--space-3); margin-bottom: calc(var(--space-3) / -2 + var(--size-hair)); transform: rotate(45deg); background: var(--color-surface); border-top: var(--border-width) var(--border-style) var(--color-border-strong); border-left: var(--border-width) var(--border-style) var(--color-border-strong); }\n.ds-menu__item { position: relative; display: block; padding: var(--space-2) var(--space-4); color: var(--color-text); font-family: var(--font-ui); font-size: var(--text-ui); text-decoration: none; white-space: nowrap; }\n.ds-menu__item:hover, .ds-menu__item:focus { background: var(--fill-button); color: var(--color-button-text); text-shadow: var(--shadow-text); }\n",
    "specimen.html": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>chronoskin, skeuomorphism landing specimen, single product</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<div class=\"ds-page__wrap\">\n\n\n  <header class=\"ds-nav\" data-component=\"nav\">\n    <a class=\"ds-brand\" data-component=\"brand\" href=\"#home\">\n      <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12L9 3.5H21V20.5H9Z\" stroke-width=\"2\"/><circle cx=\"9\" cy=\"12\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M12.5 7H17.6V17H12.5\" stroke-width=\"1.3\" stroke-dasharray=\"2 1.5\" stroke-linecap=\"butt\"/></svg></span>\n      <span class=\"ds-brand__name\">chronoskin</span>\n    </a>\n    <ul class=\"ds-nav__items\">\n      <li><a class=\"ds-nav__item\" href=\"#home\">Home</a></li>\n      <li><a class=\"ds-nav__item\" href=\"#tour\">Tour</a></li>\n      <li><a class=\"ds-nav__item\" href=\"#prices\">Prices</a></li>\n      <li><a class=\"ds-nav__item\" href=\"#log\">Your log</a></li>\n      <li><a class=\"ds-nav__item\" href=\"#boat\">Boat details</a></li>\n    </ul>\n  </header>\n\n  <section class=\"ds-view ds-view--home\" id=\"home\">\n\n  <section class=\"ds-hero\" data-component=\"hero\">\n    <h1 class=\"ds-hero__title\">Keep a proper log with <span class=\"ds-hero__strong\">chronoskin</span></h1>\n    <p class=\"ds-hero__lead\">Every passage, every repair and every tin of varnish, written down once and found again in a moment.</p>\n    <div class=\"ds-hero__device\" aria-hidden=\"true\">\n      <div class=\"ds-hero__screen\">\n        <div class=\"ds-hero__bar\">chronoskin, Season log</div>\n        <div class=\"ds-hero__body\">\n          <ul class=\"ds-hero__sources\">\n            <li class=\"ds-hero__source\">Passages <span class=\"ds-badge ds-badge--count\">14</span></li>\n            <li class=\"ds-hero__source is-current\">This week <span class=\"ds-badge ds-badge--count\">5</span></li>\n            <li class=\"ds-hero__source\">Repairs <span class=\"ds-badge ds-badge--count\">3</span></li>\n            <li class=\"ds-hero__source\">Stores <span class=\"ds-badge ds-badge--count\">22</span></li>\n            <li class=\"ds-hero__source\">Crew <span class=\"ds-badge ds-badge--count\">6</span></li>\n            <li class=\"ds-hero__source\">Winter list <span class=\"ds-badge ds-badge--count\">9</span></li>\n          </ul>\n          <ul class=\"ds-hero__rows\">\n            <li class=\"ds-hero__row\"><span class=\"ds-hero__box\"></span>Round the point before the ebb</li>\n            <li class=\"ds-hero__row is-done\"><span class=\"ds-hero__box\"></span>Whip the frayed jib sheet</li>\n            <li class=\"ds-hero__row\"><span class=\"ds-hero__box\"></span>Top up the water, both tanks</li>\n            <li class=\"ds-hero__row\"><span class=\"ds-hero__box\"></span>Log engine hours at the mooring</li>\n            <li class=\"ds-hero__row\"><span class=\"ds-hero__box\"></span>Ring the yard about the cradle</li>\n          </ul>\n        </div>\n      </div>\n    </div>\n    <div class=\"ds-hero__stand\" aria-hidden=\"true\"></div>\n    <div class=\"ds-hero__actions\">\n      <a class=\"ds-button ds-button--large\" href=\"#prices\">Download chronoskin\n        <svg class=\"ds-button__icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M8 2v9M4 7l4 4 4-4M2 14h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"/></svg>\n      </a>\n      <p class=\"ds-hero__note\">Version 1.6 for desktop and pocket. Free for your first season.</p>\n    </div>\n  </section>\n\n  <div class=\"ds-ribbon\">One log, on every device you take aboard</div>\n  <ul class=\"ds-features\">\n    <li class=\"ds-feature is-first\">\n      <svg class=\"ds-feature__glyph\" viewBox=\"0 0 36 36\" aria-hidden=\"true\"><path d=\"M7 5h18l4 4v22H7z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/><path d=\"M12 14h12M12 20h12M12 26h7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/></svg>\n      <h2 class=\"ds-feature__title\">Write it once</h2>\n      <p class=\"ds-feature__sub\">A page a day, or a line</p>\n      <p class=\"ds-feature__text\">Wind, tide and miles are filled in from the passage. The rest is yours to tell.</p>\n    </li>\n    <li class=\"ds-feature\">\n      <svg class=\"ds-feature__glyph\" viewBox=\"0 0 36 36\" aria-hidden=\"true\"><circle cx=\"18\" cy=\"18\" r=\"13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/><path d=\"M23 13l-3 7-7 3 3-7z\" fill=\"currentColor\"/></svg>\n      <h2 class=\"ds-feature__title\">Take it along</h2>\n      <p class=\"ds-feature__sub\">Works far from any signal</p>\n      <p class=\"ds-feature__text\">The log lives on the device in your pocket and catches up when you are ashore.</p>\n    </li>\n    <li class=\"ds-feature\">\n      <svg class=\"ds-feature__glyph\" viewBox=\"0 0 36 36\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"13\" r=\"5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/><circle cx=\"25\" cy=\"15\" r=\"4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/><path d=\"M3 30c0-6 4-9 9-9s9 3 9 9M22 23c6-1 11 2 11 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/></svg>\n      <h2 class=\"ds-feature__title\">Share the watch</h2>\n      <p class=\"ds-feature__sub\">Crew write in the same book</p>\n      <p class=\"ds-feature__text\">Hand the log to whoever has the helm. Each entry is signed with a name.</p>\n    </li>\n  </ul>\n\n  <h2 class=\"ds-page__title\">Four books <span class=\"ds-page__strong\">in one cover</span></h2>\n\n  <ul class=\"ds-grid\" data-component=\"grid\">\n    <li class=\"ds-grid__cell\">\n      <svg class=\"ds-grid__glyph\" viewBox=\"0 0 36 36\" aria-hidden=\"true\"><path d=\"M4 26c5-6 9-6 14 0s9 6 14 0M18 4v16M18 6l9 12H18z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/></svg>\n      <div class=\"ds-grid__body\">\n        <h3 class=\"ds-grid__title\">Passages</h3>\n        <p class=\"ds-grid__text\">Departure, arrival and everything the sea did in between.</p>\n        <a class=\"ds-grid__more\" href=\"#log\">See a passage page</a>\n      </div>\n    </li>\n    <li class=\"ds-grid__cell ds-grid__cell--2\">\n      <svg class=\"ds-grid__glyph\" viewBox=\"0 0 36 36\" aria-hidden=\"true\"><path d=\"M22 5a8 8 0 0 0-8 11L4 26l6 6 10-10a8 8 0 0 0 11-8l-5 4-4-4z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/></svg>\n      <div class=\"ds-grid__body\">\n        <h3 class=\"ds-grid__title\">Repairs</h3>\n        <p class=\"ds-grid__text\">What broke, who mended it, and what it cost to put right.</p>\n        <a class=\"ds-grid__more is-hover\" href=\"#tour\">How repairs are kept</a>\n      </div>\n    </li>\n    <li class=\"ds-grid__cell ds-grid__cell--3\">\n      <svg class=\"ds-grid__glyph\" viewBox=\"0 0 36 36\" aria-hidden=\"true\"><path d=\"M6 12h24v18H6zM6 12l4-7h16l4 7M14 19h8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/></svg>\n      <div class=\"ds-grid__body\">\n        <h3 class=\"ds-grid__title\">Stores</h3>\n        <p class=\"ds-grid__text\">Tins, flares and spare shackles, counted before you cast off.</p>\n        <a class=\"ds-grid__more\" href=\"#tour\">About the stores list</a>\n      </div>\n    </li>\n    <li class=\"ds-grid__cell ds-grid__cell--4\">\n      <svg class=\"ds-grid__glyph\" viewBox=\"0 0 36 36\" aria-hidden=\"true\"><path d=\"M6 8h24v22H6zM6 15h24M12 4v7M24 4v7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/></svg>\n      <div class=\"ds-grid__body\">\n        <h3 class=\"ds-grid__title\">Winter list</h3>\n        <p class=\"ds-grid__text\">The jobs that wait for the cradle, in the order the yard wants them.</p>\n        <a class=\"ds-grid__more\" href=\"#boat\">Plan a lay-up</a>\n      </div>\n    </li>\n  </ul>\n\n  <h2 class=\"ds-page__title\"><span class=\"ds-page__strong\">Free</span> for your first season</h2>\n\n  <div class=\"ds-page__sheet\">\n    <section class=\"ds-showcase is-first\">\n      <div class=\"ds-showcase__copy\">\n        <div class=\"ds-prose\">\n          <h2>Try it for a whole summer</h2>\n          <p>Download chronoskin and keep one boat's log at no cost until the lay-up. Nothing is held back: passages, repairs, stores and the winter list are all there from the first page.</p>\n          <p>When the season ends, a skipper's season keeps the book open and binds the year into a volume you can print.</p>\n        </div>\n        <p class=\"ds-buttons\">\n          <a class=\"ds-button\" href=\"#tour\">Take the tour</a>\n          <a class=\"ds-button ds-button--secondary\" href=\"#prices\">Compare seasons</a>\n        </p>\n      </div>\n      <div class=\"ds-showcase__object\">\n        <div class=\"ds-panel\">\n          <h3 class=\"ds-panel__title\">Skipper's season</h3>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__price\">24.00</p>\n            <p class=\"ds-panel__text\">One boat, any number of crew, every update until the spring.</p>\n            <a class=\"ds-button\" href=\"#prices\">See all prices</a>\n          </div>\n        </div>\n      </div>\n    </section>\n  </div>\n\n</section>\n\n  <section class=\"ds-view\" id=\"tour\">\n\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\">/</li>\n      <li class=\"ds-breadcrumb__current\">Tour</li>\n    </ol>\n  </div>\n\n  <div class=\"ds-page__sheet ds-page__sheet--inner\">\n\n    <header class=\"ds-page-header\">\n      <div class=\"ds-page-header__tile\" aria-hidden=\"true\"><svg class=\"ds-page-header__glyph\" viewBox=\"0 0 36 36\"><path d=\"M7 5h18l4 4v22H7z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/><path d=\"M12 14h12M12 20h12M12 26h7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/></svg></div>\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">The tour</h1>\n        <p class=\"ds-page-header__text\">One day's page, from slipping the mooring to the last line of remarks.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#prices\">Prices</a>\n        <a class=\"ds-button\" href=\"#log\">Open a log</a>\n      </div>\n    </header>\n\n    <section class=\"ds-showcase\">\n      <div class=\"ds-showcase__copy\">\n        <div class=\"ds-prose\" data-component=\"typography\">\n          <h1>A log that reads like one</h1>\n          <p class=\"ds-prose__lead\">chronoskin keeps the shape of the paper book it replaces.</p>\n          <p>Each day opens on a ruled page with the date at the head. <strong>Nothing is hidden in menus</strong>; the column you need is the column you see. The <a href=\"#log\">first passage guide</a> walks through a weekend afloat.</p>\n          <h2>What the page records</h2>\n          <ul>\n            <li>Time, course and distance run</li>\n            <li>Wind, sea state and the glass</li>\n            <li>Remarks, as long as you like</li>\n          </ul>\n          <h3>For the careful</h3>\n          <p>A copy goes wherever you say. Set <code>backup = ~/Logs</code> once and forget about it.</p>\n        </div>\n      </div>\n      <div class=\"ds-showcase__object\">\n        <ul class=\"ds-list\" data-component=\"list\">\n          <li class=\"ds-list__item is-first\">\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#log\">Out past the breakwater</a><span class=\"ds-list__meta\">Saturday &middot; 18 miles &middot; fair</span></div>\n            <span class=\"ds-badge ds-badge--count\">6</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <div class=\"ds-list__body\"><a class=\"ds-list__title is-hover\" href=\"#log\">Night run to the estuary</a><span class=\"ds-list__meta\">Thursday &middot; 31 miles &middot; fresh</span></div>\n            <span class=\"ds-badge ds-badge--count\">11</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#log\">Round the lightship and home</a><span class=\"ds-list__meta\">Last week &middot; 24 miles &middot; calm</span></div>\n            <span class=\"ds-badge\">New</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <div class=\"ds-list__body\"><a class=\"ds-list__title\" href=\"#log\">Shakedown after the refit</a><span class=\"ds-list__meta\">2 May &middot; 9 miles &middot; light airs</span></div>\n            <span class=\"ds-badge ds-badge--count\">4</span>\n          </li>\n        </ul>\n      </div>\n    </section>\n    <div class=\"ds-shots ds-shots--inset\">\n      <h2 class=\"ds-shots__title\">The log, page by page</h2>\n      <div class=\"ds-carousel\" data-component=\"carousel\"><ul class=\"ds-carousel__slides\"><li class=\"ds-carousel__slide\"><strong>The shelf</strong>Every item on one page.</li><li class=\"ds-carousel__slide\"><strong>The search</strong>Find it by a word.</li><li class=\"ds-carousel__slide\"><strong>The summary</strong>Totals at a glance.</li><li class=\"ds-carousel__slide\"><strong>The export</strong>Hand a copy on.</li></ul>\n<ul class=\"ds-carousel__dots\" aria-hidden=\"true\"><li class=\"ds-carousel__dot is-current\"></li><li class=\"ds-carousel__dot\"></li><li class=\"ds-carousel__dot\"></li><li class=\"ds-carousel__dot\"></li></ul></div>\n    </div>\n\n    <section class=\"ds-showcase ds-showcase--flip\">\n      <div class=\"ds-showcase__copy\">\n        <h3 class=\"ds-showcase__label is-first\">Labels on a passage</h3>\n        <div class=\"ds-badges\" data-component=\"badge\">\n          <span class=\"ds-badge\">8</span>\n          <span class=\"ds-badge ds-badge--new\">New</span>\n          <span class=\"ds-badge ds-badge--count\">40</span>\n          <span class=\"ds-badge ds-badge--success\">Moored</span>\n          <span class=\"ds-badge ds-badge--warning\">Under way</span>\n          <span class=\"ds-badge ds-badge--danger\">Overdue</span>\n        </div>\n        <p class=\"ds-showcase__text\">A count of unread remarks, a marker for anything new since you last looked, the pages in the book, and where the boat is now. An overdue boat turns red an hour after her expected arrival.</p>\n        <h3 class=\"ds-showcase__label\">Read next</h3>\n        <p class=\"ds-links\" data-component=\"links\">\n          <a class=\"ds-link\" href=\"#log\">A sample log</a>\n          <a class=\"ds-link is-visited\" href=\"#home\">The four books</a>\n          <a class=\"ds-link is-hover\" href=\"#prices\">What a season costs</a>\n          <a class=\"ds-link is-active\" href=\"#boat\">Setting up a boat</a>\n          <a class=\"ds-link ds-link--quiet\" href=\"#tour\">Back to the top</a>\n        </p>\n      </div>\n      <div class=\"ds-showcase__object\">\n        <div class=\"ds-panel\">\n          <h3 class=\"ds-panel__title\">First season</h3>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__price\">0.00</p>\n            <p class=\"ds-panel__text\">The whole log for one boat, free until the lay-up.</p>\n            <a class=\"ds-button\" href=\"#prices\">Download chronoskin</a>\n          </div>\n        </div>\n      </div>\n    </section>\n\n  </div>\n\n  </section>\n\n  <section class=\"ds-view\" id=\"prices\">\n\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\">/</li>\n      <li class=\"ds-breadcrumb__current\">Prices</li>\n    </ol>\n  </div>\n\n  <div class=\"ds-page__sheet ds-page__sheet--narrow\">\n\n    <header class=\"ds-page-header\">\n      <div class=\"ds-page-header__tile\" aria-hidden=\"true\"><svg class=\"ds-page-header__glyph\" viewBox=\"0 0 36 36\"><path d=\"M5 5h13l13 13-13 13L5 18z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/><circle cx=\"12\" cy=\"12\" r=\"2.5\" fill=\"currentColor\"/></svg></div>\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Prices</h1>\n        <p class=\"ds-page-header__text\">One price per boat, per season. Crew never pay.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#tour\">Tour</a>\n      </div>\n    </header>\n\n    <div class=\"ds-page__section\">\n      <div class=\"ds-plans\">\n        <div class=\"ds-panel\">\n          <h3 class=\"ds-panel__title\">First season</h3>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__price\">0.00</p>\n            <p class=\"ds-panel__text\">The whole log for one boat, free until the lay-up.</p>\n            <a class=\"ds-button ds-button--secondary\" href=\"#log\">Download</a>\n          </div>\n        </div>\n        <div class=\"ds-panel\" data-component=\"panel\">\n          <h3 class=\"ds-panel__title\">Skipper's season</h3>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__price\">24.00</p>\n            <p class=\"ds-panel__text\">One boat, any number of crew, every update until the spring.</p>\n            <a class=\"ds-button\" href=\"#boat\">Buy a season</a>\n          </div>\n        </div>\n        <div class=\"ds-panel\">\n          <h3 class=\"ds-panel__title\">Club fleet</h3>\n          <div class=\"ds-panel__body\">\n            <p class=\"ds-panel__price\">96.00</p>\n            <p class=\"ds-panel__text\">Twelve boats under one burgee, with a shared stores list.</p>\n            <a class=\"ds-button ds-button--secondary\" href=\"#boat\">Buy for a club</a>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"ds-page__section\">\n      <div class=\"ds-window\">\n        <div class=\"ds-window__bar\"><span class=\"ds-window__title\">What a season includes</span><span>Per boat</span></div>\n        <table class=\"ds-table\">\n          <thead>\n            <tr><th class=\"ds-table__head\">Included</th><th class=\"ds-table__head is-numeric\">First season</th><th class=\"ds-table__head is-numeric\">Skipper's</th><th class=\"ds-table__head is-numeric\">Club fleet</th></tr>\n          </thead>\n          <tbody>\n            <tr class=\"ds-table__row is-first\"><td class=\"ds-table__cell ds-table__cell--name is-edge\">Boats</td><td class=\"ds-table__cell is-numeric\">1</td><td class=\"ds-table__cell is-numeric\">1</td><td class=\"ds-table__cell is-numeric\">12</td></tr>\n            <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name is-edge\">Crew who can write pages</td><td class=\"ds-table__cell is-numeric\">2</td><td class=\"ds-table__cell is-numeric\">8</td><td class=\"ds-table__cell is-numeric\">40</td></tr>\n            <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name is-edge\">Bound volumes kept</td><td class=\"ds-table__cell is-numeric\">1</td><td class=\"ds-table__cell is-numeric\">10</td><td class=\"ds-table__cell is-numeric\">10</td></tr>\n            <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name is-edge\">Backup copies a day</td><td class=\"ds-table__cell is-numeric\">1</td><td class=\"ds-table__cell is-numeric\">4</td><td class=\"ds-table__cell is-numeric\">4</td></tr>\n            <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name is-edge\">Price for the season</td><td class=\"ds-table__cell is-numeric\">0.00</td><td class=\"ds-table__cell is-numeric\">24.00</td><td class=\"ds-table__cell is-numeric\">96.00</td></tr>\n          </tbody>\n        </table>\n      </div>\n    </div>\n\n    <div class=\"ds-page__section ds-page__section--last\">\n      <p class=\"ds-notice\"><span class=\"ds-notice__title\">No card needed to start.</span> A season is paid for once, when the first one ends.</p>\n    </div>\n\n  </div>\n\n  </section>\n\n  <section class=\"ds-view\" id=\"log\">\n\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\">/</li>\n      <li><a class=\"ds-link ds-link--quiet\" href=\"#log\">Your boats</a></li>\n      <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n      <li class=\"ds-breadcrumb__current\">Kittiwake</li>\n    </ol>\n  </div>\n\n  <div class=\"ds-page__sheet ds-page__sheet--narrow\">\n\n    <header class=\"ds-page-header\" data-component=\"page-header\">\n      <div class=\"ds-page-header__tile\" aria-hidden=\"true\"><svg class=\"ds-page-header__glyph\" viewBox=\"0 0 36 36\"><path d=\"M18 3v20M18 6l11 15H18zM15 10l-8 11h8z\" fill=\"currentColor\"/><path d=\"M4 26h28l-4 6H8z\" fill=\"currentColor\"/></svg></div>\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Kittiwake</h1>\n        <p class=\"ds-page-header__text\">A 26 foot sloop, kept on a swinging mooring.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <details class=\"ds-menu\" data-component=\"menu\"><summary class=\"ds-menu__button\">More</summary><ul class=\"ds-menu__list\"><li><a class=\"ds-menu__item\" href=\"#boat\">Settings</a></li><li><a class=\"ds-menu__item\" href=\"#boat\">Preferences</a></li><li><a class=\"ds-menu__item\" href=\"#home\">Back to the start</a></li></ul></details>\n        <a class=\"ds-button ds-button--secondary\" href=\"#boat\">Boat details</a>\n        <a class=\"ds-button\" href=\"#tour\">New page</a>\n      </div>\n    </header>\n\n    <ul class=\"ds-tabs\" data-component=\"tabs\">\n      <li><a class=\"ds-tabs__tab is-current\" href=\"#log\">Passages</a></li>\n      <li><a class=\"ds-tabs__tab\" href=\"#log\">Repairs</a></li>\n      <li><a class=\"ds-tabs__tab is-hover\" href=\"#log\">Stores</a></li>\n      <li><a class=\"ds-tabs__tab\" href=\"#boat\">Boat details</a></li>\n    </ul>\n\n    <div class=\"ds-page__section\">\n      <ul class=\"ds-stats\" data-component=\"stats\">\n        <li class=\"ds-stat is-first\"><span class=\"ds-stat__value\">14</span><span class=\"ds-stat__label\">Passages this season</span></li>\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">312</span><span class=\"ds-stat__label\">Miles logged</span></li>\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">61.5</span><span class=\"ds-stat__label\">Engine hours</span></li>\n      </ul>\n    </div>\n\n    <div class=\"ds-page__section\">\n      <div class=\"ds-window\">\n        <div class=\"ds-window__bar\"><span class=\"ds-window__title\">Passages, this season</span><span>1 to 5 of 14</span></div>\n        <table class=\"ds-table\" data-component=\"table\">\n          <thead>\n            <tr><th class=\"ds-table__head\">Passage</th><th class=\"ds-table__head\">Sailed</th><th class=\"ds-table__head\">State</th><th class=\"ds-table__head is-numeric\">Hours</th><th class=\"ds-table__head is-numeric\">Miles</th></tr>\n          </thead>\n          <tbody>\n            <tr class=\"ds-table__row is-first\"><td class=\"ds-table__cell ds-table__cell--name is-edge\"><a class=\"ds-link\" href=\"#tour\">Out past the breakwater</a></td><td class=\"ds-table__cell\">7 June</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">Moored</span></td><td class=\"ds-table__cell is-numeric\">4.5</td><td class=\"ds-table__cell is-numeric\">18</td></tr>\n            <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name is-edge\">Night run to the estuary</td><td class=\"ds-table__cell\">5 June</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">Under way</span></td><td class=\"ds-table__cell is-numeric\">7.0</td><td class=\"ds-table__cell is-numeric\">31</td></tr>\n            <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name is-edge\">Round the lightship and home</td><td class=\"ds-table__cell\">30 May</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">Moored</span></td><td class=\"ds-table__cell is-numeric\">6.0</td><td class=\"ds-table__cell is-numeric\">24</td></tr>\n            <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name is-edge\">Delivery from the yard</td><td class=\"ds-table__cell\">11 May</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">Overdue</span></td><td class=\"ds-table__cell is-numeric\">9.5</td><td class=\"ds-table__cell is-numeric\">42</td></tr>\n            <tr class=\"ds-table__row\"><td class=\"ds-table__cell ds-table__cell--name is-edge\">Shakedown after the refit</td><td class=\"ds-table__cell\">2 May</td><td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">Moored</span></td><td class=\"ds-table__cell is-numeric\">2.0</td><td class=\"ds-table__cell is-numeric\">9</td></tr>\n          </tbody>\n        </table>\n        <div class=\"ds-window__foot\">\n          <ul class=\"ds-pagination\" data-component=\"pagination\">\n            <li><a class=\"ds-pagination__link is-disabled\" href=\"#log\">&lsaquo; Back</a></li>\n            <li><a class=\"ds-pagination__link is-current\" href=\"#log\">1</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#log\">2</a></li>\n            <li><a class=\"ds-pagination__link is-hover\" href=\"#log\">3</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#log\">On &rsaquo;</a></li>\n          </ul>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"ds-page__section ds-page__section--last\">\n      <div class=\"ds-window\">\n        <div class=\"ds-window__bar\"><span class=\"ds-window__title\">Repairs, this season</span><span>None</span></div>\n        <div class=\"ds-window__body\">\n          <div class=\"ds-empty\" data-component=\"empty\">\n    <div class=\"ds-empty__well\"><svg class=\"ds-empty__icon\" viewBox=\"0 0 28 28\" aria-hidden=\"true\"><path d=\"M5 4h14l4 4v16H5z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/><path d=\"M10 13h8M10 18h5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\"/></svg></div>\n            <h3 class=\"ds-empty__title\">No repairs yet</h3>\n            <p class=\"ds-empty__text\">Nothing has broken since the refit. When something does, write it down here.</p>\n            <a class=\"ds-button ds-button--secondary\" href=\"#boat\">Log a repair</a>\n          </div>\n        </div>\n      </div>\n    </div>\n\n  </div>\n\n  <div class=\"ds-page__blocks\">\n    <div class=\"ds-sidebar\" data-component=\"sidebar\">\n      <h2 class=\"ds-sidebar__title\">In this log</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#log\">This season</a><span class=\"ds-sidebar__meta\">14 passages, 46 pages</span></li>\n        <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#log\">Bound volumes</a><span class=\"ds-sidebar__meta\">Three earlier years</span></li>\n      </ul>\n      <progress class=\"ds-progress\" data-component=\"progress\" value=\"62\" max=\"100\">62%</progress><p class=\"ds-progress__label\">This season's book: 46 of 74 pages</p>\n    </div>\n    <div class=\"ds-sidebar\">\n      <h2 class=\"ds-sidebar__title\">Crew</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#boat\">Invite a hand</a><span class=\"ds-sidebar__meta\">They write, you sign off</span></li>\n        <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#boat\">Watch rota</a><span class=\"ds-sidebar__meta\">Who has the helm, and when</span></li>\n      </ul>\n    </div>\n    <div class=\"ds-sidebar\">\n      <h2 class=\"ds-sidebar__title\">Read next</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#tour\">Handbook</a><span class=\"ds-sidebar__meta\">Every column explained</span></li>\n        <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#tour\">Harbour notes</a><span class=\"ds-sidebar__meta\">Letters from other skippers</span></li>\n      </ul>\n    </div>\n  </div>\n\n  </section>\n\n  <section class=\"ds-view\" id=\"boat\">\n\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\">/</li>\n      <li><a class=\"ds-link ds-link--quiet\" href=\"#log\">Kittiwake</a></li>\n      <li class=\"ds-breadcrumb__sep\" aria-hidden=\"true\">/</li>\n      <li class=\"ds-breadcrumb__current\">Boat details</li>\n    </ol>\n  </div>\n\n  <div class=\"ds-page__sheet ds-page__sheet--narrow\">\n\n    <header class=\"ds-page-header\">\n      <div class=\"ds-page-header__tile\" aria-hidden=\"true\"><svg class=\"ds-page-header__glyph\" viewBox=\"0 0 36 36\"><path d=\"M18 3v20M18 6l11 15H18zM15 10l-8 11h8z\" fill=\"currentColor\"/><path d=\"M4 26h28l-4 6H8z\" fill=\"currentColor\"/></svg></div>\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Boat details</h1>\n        <p class=\"ds-page-header__text\">What is printed inside the front cover of Kittiwake's log.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#log\">Back to the log</a>\n      </div>\n    </header>\n\n    <ul class=\"ds-tabs\">\n      <li><a class=\"ds-tabs__tab\" href=\"#log\">Passages</a></li>\n      <li><a class=\"ds-tabs__tab\" href=\"#log\">Repairs</a></li>\n      <li><a class=\"ds-tabs__tab\" href=\"#log\">Stores</a></li>\n      <li><a class=\"ds-tabs__tab is-current\" href=\"#boat\">Boat details</a></li>\n    </ul>\n\n    <div class=\"ds-page__section\">\n      <div class=\"ds-notices\" data-component=\"notice\">\n        <p class=\"ds-notice\"><span class=\"ds-notice__title\">The log is backed up.</span> The last copy was made this morning.</p>\n        <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__title\">Not saved.</span> The sail number below is already in use.</p>\n      </div>\n      <form class=\"ds-form\" data-component=\"form\" action=\"#\">\n        <div class=\"ds-form__column\">\n          <div class=\"ds-form__row\">\n            <label class=\"ds-form__label\" for=\"f-name\">Boat name</label>\n            <input class=\"ds-form__input\" id=\"f-name\" type=\"text\" value=\"Kittiwake\">\n          </div>\n          <div class=\"ds-form__row\">\n            <label class=\"ds-form__label\" for=\"f-sail\">Sail number</label>\n            <input class=\"ds-form__input is-error\" id=\"f-sail\" type=\"text\" value=\"K 21\">\n            <p class=\"ds-form__error\">Another boat in your club has this number.</p>\n          </div>\n          <div class=\"ds-form__row\">\n            <label class=\"ds-form__label\" for=\"f-rig\">Rig</label>\n            <select class=\"ds-form__select\" id=\"f-rig\"><option>Sloop</option><option>Cutter</option><option>Ketch</option></select>\n          </div>\n          <div class=\"ds-form__row\">\n            <label class=\"ds-form__label\" for=\"f-note\">Notes for the crew</label>\n            <textarea class=\"ds-form__textarea\" id=\"f-note\" placeholder=\"Where the spare key hangs\"></textarea>\n            <p class=\"ds-form__hint\">Optional. Shown inside the front cover.</p>\n          </div>\n          <div class=\"ds-form__row\">\n            <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> Let the crew add pages of their own</label>\n          </div>\n          <div class=\"ds-form__row\">\n            <span class=\"ds-form__label\">Safekeeping</span>\n            <ul class=\"ds-switches\" data-component=\"switch\"><li class=\"ds-switches__row\"><span class=\"ds-switches__name\">Back up after every passage</span><label class=\"ds-switch\"><input type=\"checkbox\" aria-label=\"Back up after every passage\" checked><span class=\"ds-switch__track\"></span></label></li><li class=\"ds-switches__row\"><span class=\"ds-switches__name\">Sync when in harbour<span class=\"ds-tooltip\" data-component=\"tooltip\"><button class=\"ds-tooltip__trigger\" type=\"button\" aria-describedby=\"tip-sync\">?</button><span class=\"ds-tooltip__bubble\" id=\"tip-sync\" role=\"tooltip\">The log is sent when the boat is back in range.</span></span></span><label class=\"ds-switch\"><input type=\"checkbox\" aria-label=\"Sync when in harbour\"><span class=\"ds-switch__track\"></span></label></li></ul>\n          </div>\n          <div class=\"ds-form__actions\" data-component=\"buttons\">\n            <button class=\"ds-button\" type=\"button\">Save boat</button>\n            <a class=\"ds-button ds-button--secondary\" href=\"#log\">Cancel</a>\n            <button class=\"ds-button is-disabled\" type=\"button\" disabled>Share</button>\n            <button class=\"ds-button ds-button--danger ds-form__actions-end\" type=\"button\">Erase log</button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div class=\"ds-page__section ds-page__section--last\">\n      <div class=\"ds-dialog__backdrop\">\n        <div class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n          <h3 class=\"ds-dialog__title\" id=\"d-title\">Erase log<a class=\"ds-dialog__close\" href=\"#boat\" aria-label=\"Close\"></a></h3>\n          <div class=\"ds-dialog__body\">\n            <p class=\"ds-dialog__heading\">Erase 46 pages of this season?</p>\n            <p class=\"ds-dialog__text\">Bound volumes are kept. Loose pages cannot be brought back.</p>\n          </div>\n          <div class=\"ds-dialog__actions\">\n            <a class=\"ds-button ds-button--secondary\" href=\"#boat\">Keep the log</a>\n            <a class=\"ds-button ds-button--danger\" href=\"#log\">Erase</a>\n          </div>\n        </div>\n      </div>\n    </div>\n\n  </div>\n\n  </section>\n\n</div>\n\n<footer class=\"ds-footer\" data-component=\"footer\">\n  <div class=\"ds-footer__call\">\n    <h2 class=\"ds-footer__title\">Fair winds start with a clean page.</h2>\n    <a class=\"ds-button ds-button--secondary ds-button--large\" href=\"#prices\">Download chronoskin</a>\n  </div>\n  <ul class=\"ds-footer__links\">\n    <li><a class=\"ds-footer__link\" href=\"#home\">Home</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#tour\">Tour</a></li>\n    <li><a class=\"ds-footer__link is-hover\" href=\"#prices\">Prices</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#log\">Your log</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#boat\">Boat details</a></li>\n  </ul>\n  <p class=\"ds-footer__note\">Made by two sailors in a boat shed. All figures on this site are examples.</p>\n</footer>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.skeuomorphism.landing.s03.p04.t02.u04\",\n  \"library\": \"2026.10.09-1036\",\n  \"era\": {\n    \"slug\": \"skeuomorphism\",\n    \"years\": [\n      2009,\n      2013\n    ]\n  },\n  \"archetype\": \"landing\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1280,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-sk-3424\",\n  \"short\": \"v1-sk-3424\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #383a44;\n  --color-canvas: #454853;\n  --color-surface: #4a4d59;\n  --color-surface-alt: #424550;\n  --color-surface-strong: #33353e;\n  --color-bar: #1a1b1f;\n  --color-bar-text: #f2f3f5;\n  --color-bar-alt: #5a5e6b;\n  --color-bar-alt-text: #eceef2;\n  --color-inverse: #16171b;\n  --color-inverse-text: #ffffff;\n  --color-text: #cdd0d8;\n  --color-text-muted: #9da2af;\n  --color-heading: #f2f3f5;\n  --color-heading-alt: #dcdfe3;\n  --color-link: #74b9f2;\n  --color-link-quiet: #a4a9b5;\n  --color-link-visited: #9aa6d8;\n  --color-link-hover: #a8d8ff;\n  --color-link-active: #ffffff;\n  --color-border: #575b68;\n  --color-border-strong: #22232a;\n  --color-border-muted: #4d505c;\n  --color-accent: #ee8a22;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #7a56c2;\n  --color-fill-1: #2b84dc;\n  --color-fill-2: #ee8a22;\n  --color-fill-3: #18a546;\n  --color-fill-4: #747a88;\n  --color-button: #2b84dc;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #626675;\n  --color-button-secondary-text: #f2f3f5;\n  --color-input: #2c2e36;\n  --color-input-text: #f2f3f5;\n  --color-input-border: #1a1b1f;\n  --color-disabled: #4d505c;\n  --color-disabled-text: #868b98;\n  --color-danger: #f0553f;\n  --color-danger-surface: #3d2526;\n  --color-success: #18a546;\n  --color-warning: #b87a10;\n  --color-notice: #33475c;\n  --color-notice-text: #cfe2f7;\n  --color-focus: #74b9f2;\n  --color-shadow: #000000;\n  --color-overlay: rgba(0, 0, 0, 0.5);\n}\n\n/* @part type */\n:root {\n  --font-body: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-heading: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-ui: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-mono: Monaco, Menlo, Consolas, monospace;\n  --text-base: 12px;\n  --text-small: 11px;\n  --text-ui: 12px;\n  --text-large: 16px;\n  --text-display: 30px;\n  --text-h1: 27px;\n  --text-h2: 17px;\n  --text-h3: 14px;\n  --line-body: 1.4;\n  --line-heading: 1.2;\n  --line-display: 1.1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 700;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: none;\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: 6px;\n  --radius-panel: 6px;\n  --radius-pill: 11px;\n  --radius-page: 8px;\n  --shadow-panel: 0 3px 0 color-mix(in srgb, var(--color-shadow) 55%, transparent), 0 4px 6px color-mix(in srgb, var(--color-shadow) 45%, transparent);\n  --shadow-control: inset 0 1px 0 color-mix(in srgb, white 30%, transparent), 0 3px 0 color-mix(in srgb, var(--color-shadow) 70%, transparent), 0 4px 4px color-mix(in srgb, var(--color-shadow) 40%, transparent);\n  --shadow-control-hover: inset 0 1px 0 color-mix(in srgb, white 48%, transparent), 0 3px 0 color-mix(in srgb, var(--color-shadow) 70%, transparent), 0 4px 4px color-mix(in srgb, var(--color-shadow) 40%, transparent);\n  --shadow-control-pressed: inset 0 2px 4px color-mix(in srgb, var(--color-shadow) 60%, transparent), 0 1px 0 color-mix(in srgb, var(--color-shadow) 70%, transparent);\n  --shadow-dialog: 0 0 0 1px color-mix(in srgb, var(--color-shadow) 60%, transparent), 0 4px 0 color-mix(in srgb, var(--color-shadow) 60%, transparent), 0 5px 6px color-mix(in srgb, var(--color-shadow) 55%, transparent);\n  --shadow-text: 0 -1px 0 color-mix(in srgb, var(--color-shadow) 55%, transparent);\n  --fill-page: repeating-linear-gradient(45deg, color-mix(in srgb, black 12%, transparent) 0, color-mix(in srgb, black 12%, transparent) 1px, transparent 1px, transparent 4px), repeating-linear-gradient(-45deg, color-mix(in srgb, white 3%, transparent) 0, color-mix(in srgb, white 3%, transparent) 1px, transparent 1px, transparent 4px), linear-gradient(to bottom, color-mix(in srgb, white 10%, transparent) 0, transparent 100%) 0 0 / 100% 260px no-repeat, var(--color-page);\n  --fill-bar: linear-gradient(to bottom, color-mix(in srgb, var(--color-bar), white 26%) 0, color-mix(in srgb, var(--color-bar), white 12%) 50%, var(--color-bar) 50%, color-mix(in srgb, var(--color-bar), black 20%) 100%);\n  --fill-bar-alt: repeating-linear-gradient(0deg, color-mix(in srgb, white 5%, transparent) 0, color-mix(in srgb, white 5%, transparent) 1px, transparent 1px, transparent 2px), linear-gradient(to bottom, color-mix(in srgb, var(--color-bar-alt), white 16%) 0, var(--color-bar-alt) 50%, color-mix(in srgb, var(--color-bar-alt), black 16%) 100%);\n  --fill-inverse: repeating-linear-gradient(0deg, color-mix(in srgb, white 3%, transparent) 0, color-mix(in srgb, white 3%, transparent) 1px, transparent 1px, transparent 2px), linear-gradient(to bottom, color-mix(in srgb, var(--color-inverse), white 18%) 0, var(--color-inverse) 60%, color-mix(in srgb, var(--color-inverse), black 30%) 100%);\n  --fill-accent: linear-gradient(to bottom, color-mix(in srgb, var(--color-accent), white 26%) 0, var(--color-accent) 55%, color-mix(in srgb, var(--color-accent), black 14%) 100%);\n  --fill-panel: linear-gradient(to bottom, var(--color-surface) 0, var(--color-surface-alt) 100%);\n  --fill-button: linear-gradient(to bottom, color-mix(in srgb, var(--color-button), white 32%) 0, color-mix(in srgb, var(--color-button), white 10%) 50%, var(--color-button) 50%, color-mix(in srgb, var(--color-button), black 22%) 100%);\n  --fill-button-hover: linear-gradient(to bottom, color-mix(in srgb, var(--color-button), white 44%) 0, color-mix(in srgb, var(--color-button), white 22%) 50%, color-mix(in srgb, var(--color-button), white 10%) 50%, color-mix(in srgb, var(--color-button), black 10%) 100%);\n  --fill-button-secondary: linear-gradient(to bottom, color-mix(in srgb, var(--color-button-secondary), white 20%) 0, var(--color-button-secondary) 50%, color-mix(in srgb, var(--color-button-secondary), black 18%) 100%);\n  --fill-input: linear-gradient(to bottom, color-mix(in srgb, var(--color-input), black 30%) 0, var(--color-input) 5px);\n  --focus-ring: 2px solid var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
