{
  "id": "v1-md-6343",
  "long_id": "v1.material-design.app.s06.p03.t04.u03",
  "name": "Material list and detail tasks, 2016",
  "era": {
    "slug": "material-design",
    "code": "md",
    "name": "Material Design",
    "years": [
      2014,
      2018
    ],
    "description": "Paper and ink, 2014 to 2018: flat sheets that cast soft shadows, a coloured app bar, uppercase medium-weight buttons, two-pixel corners and one bright accent for the floating action."
  },
  "archetype": "app",
  "mode": "mix",
  "viewport": {
    "width": 1440,
    "fluid": true,
    "responsive": true
  },
  "summary": "A signed-in task or mail application in the paper-and-ink manner, built on the list-detail pattern: a coloured bar with the views, a dark strip under it that states where you are, and below that two sheets side by side, a dense two-line list with round avatars at the left and the chosen item open on a raised side sheet at the right. A floating action button rides the lower corner of the list, filters are chips, settings are rows with switches, and nothing is centred or boxed in a column. Inboxes, to-do lists, issue trackers and admin tools built on material frameworks looked like this from about 2015 to 2018.",
  "url": "https://chrono.skin/s/v1-md-6343",
  "preview_url": "https://chrono.skin/s/v1-md-6343/specimen.html",
  "files": {
    "STYLE.md": "# Material list and detail tasks, 2016\n\n## Summary\n\nA signed-in task or mail application in the paper-and-ink manner, built on the list-detail pattern: a coloured bar with the views, a dark strip under it that states where you are, and below that two sheets side by side, a dense two-line list with round avatars at the left and the chosen item open on a raised side sheet at the right. A floating action button rides the lower corner of the list, filters are chips, settings are rows with switches, and nothing is centred or boxed in a column. Inboxes, to-do lists, issue trackers and admin tools built on material frameworks looked like this from about 2015 to 2018.\n\n## Layout\n\n- The page is fluid: `--size-page` is `100%`, and the bar, the strip, the content and the footer span the window with `--space-4` (24px) at the sides. Designed at 1440px. There is no maximum content width and no drawer: sheets stretch with the window, as in an application. Running text is capped at `--size-measure` (640px).\n- Order on the home screen: `.ds-nav` (`--size-bar` 64px: brand, view links with a `--border-width-strong` line under the current one, the account at the right), `.ds-hero` (a strip in the secondary bar fill: the day's headline and one line at the left, a flat button and one raised white button at the right), then `.ds-main` with one `.ds-split`: the `.ds-pane` list sheet (5 parts) and the `.ds-sheet` side sheet (7 parts), `--space-4` apart and equal in height. Then the one-line `.ds-footer`.\n- The list sheet, top to bottom: `.ds-tabs`, `.ds-pane__tools` (filter chips and a short text field), the `.ds-list` of two-line rows (64px, the chosen row tinted with a `--size-stripe` line at its left), `.ds-pane__foot` (row count and pagination) and `.ds-pane__fab`, the floating button in its lower right corner. The side sheet: `.ds-sheet__head` (title and round icon buttons), `.ds-sheet__body` (labels, a `.ds-facts` row, text, a `.ds-checks` list) and `.ds-sheet__actions`.\n- Everything is on an 8px grid. `--space-1` 4px (helper text, meta gaps), `--space-2` 8px (between chips and flat buttons, tool strip padding, row padding), `--space-3` 16px (list row side padding, button side padding, strip padding, figure and card padding), `--space-4` 24px (gutter between sheets, page side padding, sheet padding, field gap), `--space-5` 32px (above a caption inside a sheet), `--space-6` 48px (bottom of the page, overlay padding), `--space-7` 64px and `--space-8` 80px (spare steps).\n- Heights: bar and sheet head `--size-bar` 64px; tabs, table rows and card heads `--size-row` 48px; avatars, side links and icon buttons `--size-row-dense` 40px; buttons and fields `--size-control` 36px; floating button `--size-fab` 56px. Other sizes: `--size-brand` 30px, `--size-side` 248px (settings navigation), `--size-media` 88px (colour head of a list card), `--size-meter` 6px (progress line), `--size-switch` 36px with `--size-track` 14px and `--size-thumb` 20px, `--size-stripe` 4px, `--size-search` 220px, `--size-icon` 24px, `--size-check` 18px, `--size-badge` 22px, `--size-dialog` 440px, `--size-area` 112px.\n- Inner pages (one item in full, an overview, a form, settings) have no `.ds-hero`. Under the same `.ds-nav` comes `.ds-page-header`, the same dark strip in compact form: the `.ds-breadcrumb`, the page title and one line of description at the left, one raised white button at the right. Then `.ds-main`. An item page is a `.ds-split--form` (7 to 5): the text sheet (`.ds-panel--pad`) at the left, a `.ds-stack` with a small card and the notes sheet (`.ds-sheet--bottom`) at the right. An overview page is one `.ds-stack`: `.ds-stats` (four small cards with a coloured top line), the `.ds-grid` of list cards and a `.ds-panel` with a head and the `.ds-table`. A form page is a `.ds-split--form`: the form sheet with its buttons in a ruled strip at the bottom right, and notices and the dialog at the right. A settings page is a `.ds-split--settings`: the `.ds-sidebar` navigation card (`--size-side`) at the left, cards of `.ds-settings` rows at the right. `.ds-stack--fill` lets the last block of a column take the remaining height, so both columns end together.\n- Views: the specimen is one application with five views. `inbox` is the home view: headline strip, the list sheet with tabs, chips, six tasks, pagination and the floating button, and the side sheet of the chosen task. `task` is that task in full: text, related links and labels, beside who is on it and the notes. `lists` is the overview: figures, the four list cards and the table of members. `new` is the form for a task with its actions, an information notice, an error notice and the delete dialog. `settings` has the settings navigation, the reminder switches and the calendars card, shown empty.\n- Below 900px every split becomes one column (the side sheet follows the list, the settings navigation sits above its cards), figures and list cards go two by two and the account name hides. Below 600px the bar wraps into a brand row and a full-width `.ds-nav__links` row whose links spread to both edges (the current one keeps `.is-current`), the account menu `.ds-menu--account` is pinned at the right of the brand row with its name (`.ds-menu__label`) hidden, the strip stacks its buttons under the text, list cards and form rows become one column, facts stack, and table cells marked `.ds-table__extra` are hidden.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- One family: `--font-body`, `--font-heading` and `--font-ui` are Roboto (openly licensed), then Arial. `--font-mono` is for code only.\n- Dense application text: `--text-base` and `--text-ui` are 14px on a 20px line (`--line-body` 1.43); `--text-small` 12px (captions, table heads, field labels, meta, footer); `--text-large` 18px (welcome lead, brand name, bar title); `--text-display` 34px light (`--weight-display` 300) for the welcome title only; `--text-h1` 24px (page title, figures), `--text-h2` 20px, `--text-h3` 16px bold (card titles).\n- Weights: body and headings 400, display 300, `--weight-ui` 500 for buttons, tabs and drawer links, `--weight-bold` 700 for card titles, table names, list titles, labels and badges. Nothing is heavier than 700.\n- `--ui-transform` is `uppercase` for buttons, tabs, the overline of the welcome card, `.ds-subhead` and card labels. Headings are sentence case. No tracking, no underlines in any state.\n- `--color-page` `#e9e9e9` is the desk; `--color-surface` white is every card; `--color-surface-alt` `#f9f9f9` the current table row and code block; `--color-surface-strong` `#eeeeee` hovered rows, chips, inline code, the empty-state disc.\n- `--fill-bar` (blue `#1867c0`) with `--color-bar-text` white: the app bar. Secondary text on it is `--color-bar-text` at 70%, the search field a 16% wash of it.\n- `--fill-inverse` (`#212121`) with `--color-inverse-text`: the drawer. Drawer links are the inverse text at 70%, full strength when hovered or current; the current link has a 12% wash and a `--size-stripe` stripe in `--color-accent` at its left. `--fill-bar-alt` (dark blue-grey `#263238`) with `--color-bar-alt-text`: the drawer head behind the brand.\n- `--color-text` `#333333` body, `--color-heading` the same for titles, `--color-text-muted` `#747474` for captions, card body text and meta, `--color-heading-alt` `#555555` for `.ds-subhead`.\n- `--color-button` bright blue `#2196f3` with white text: raised primary button, brand tile, chart bars, current page, checked checkbox. `--color-link` is the bar blue; hover is the bright blue. `--color-accent` amber `#ffb731` with dark `--color-accent-text`: the floating button, the account avatar, the drawer stripe, count badges. `--color-accent-alt` pink `#e91e63`: \"new\" markers, the alert dot and the chart's line series.\n- `--color-fill-1` to `--color-fill-4` (blue, orange, teal, light green) are the flat blocks: the welcome card's colour block (fill 1), the figure card tiles, the guide card heads and the list avatars. Fixed text pairs: `--color-bar-text` on fill 1 and fill 3, `--color-accent-text` on fill 2, `--color-inverse-text` on fill 4, `--color-button-text` on the primary and danger buttons and on the new, success and danger badges, `--color-accent-text` on the warning badge. Links, muted text and headings are used only on the desk and on cards.\n- `--color-border` `#d8d8d8` (table rows, action strips, the footer rule) and `--color-border-muted` `#eeeeee` (list rows, figure card foot) are hairlines; `--color-input-border` `#999999` is the single bottom line of a field. Cards are never outlined.\n- `--color-notice` (blue) with `--color-notice-text` is the information banner; `--color-danger-surface` with `--color-danger` text the error banner. `--color-danger` red `#f44336`, `--color-success` teal, `--color-warning` orange are flat badge and button fills.\n- Surface: `--radius-control` 3px, `--radius-panel` and `--radius-page` 6px, `--radius-pill` 12px, so badges are pills and chips and pagination cells are well-rounded rectangles; discs are 50%. Cards lie almost flat: `--shadow-panel` is one light shadow (4px blur, 1px drop) under every card, the bar and the drawer. Controls carry the depth: `--shadow-control` is a three-layer shadow that glows under the button (20px blur, pulled in 10px), also on the brand tile and the round marks; `--shadow-control-hover` deepens it (22px blur) for a hovered button and the floating button; `--shadow-control-pressed` drops to 5px; `--shadow-dialog` is one 22px shadow. All fills are flat; a hovered button darkens (`--fill-button-hover` is the button colour mixed with 18% black) and `--fill-input` is transparent, so a field is a bottom line only. `--border-width-strong` is 2px, `--focus-ring` a 2px line of the focus colour at 70%, `--transition` 0.3s on a decelerating curve.\n- One-off values built with `color-mix()`, `calc()` or `opacity` because the vocabulary has no token: 70% and 87% of the bar text and 70% of the inverse text for secondary text, 8%, 12% and 16% washes of them for hover, current and the search field, a 20% grey wash behind a hovered flat button or tool, a 12% danger wash, the danger colour mixed with 12% of `--color-shadow`, 24% opacity for the area under the welcome card's line, and line heights 1.18, 1.2, 1.3 and 1.5.\n\n## Components\n\n- `.ds-page` on `<body>`: the desk, family, 16px/1.6 light text.\n- `.ds-nav`: the 64px bar. `.ds-brand` at its left, `.ds-nav__links` > `.ds-nav__link` uppercase links to the views (`is-current` has full-strength text and a line on the bar's bottom edge), `.ds-nav__account` at the right with a small avatar.\n- `.ds-brand`: the application's mark and name, one link. `.ds-brand__mark` is a `--size-brand` tile dressed like the primary raised button (`--fill-button`, `--color-button-text`, `--radius-control`, `--shadow-control`) with a `--border-width` ring of `--color-bar-text` at 70%, which keeps it apart from the bar when button and bar colours are the same; `.ds-brand__name` is the name at `--text-large` in the heading font. The name `chronoskin` and its mark are placeholders for the installing project's own name and logo.\n- `.ds-hero`: the headline strip of the home screen in the secondary bar fill. `.ds-hero__body` holds `.ds-hero__title` (34px light) and `.ds-hero__lead`; `.ds-hero__actions` the main action as a raised `.ds-button--secondary`, with at most one `.ds-button--flat` beside it, which takes the strip's text colour. The primary button is not used on the strip, because under some palettes it has the strip's own colour.\n- `.ds-page-header`: the same strip on an inner page. `.ds-page-header__body` holds the breadcrumb, `.ds-page-header__title` (24px) and `.ds-page-header__text`; `.ds-page-header__actions` one raised `.ds-button--secondary`.\n- `.ds-main`, `.ds-split`, `.ds-stack`, `.ds-subhead`: the content area; a two-column grid (5 to 7; `--form` 7 to 5; `--settings` a fixed navigation column; `--start` stops the columns stretching); a column of blocks `--space-4` apart (`--fill` stretches the last); a small uppercase caption inside a sheet.\n- `.ds-pane`: the list sheet. `.ds-pane__tools` is its strip of chips with `.ds-pane__field`, `.ds-pane__foot` its foot with the row count and pagination, `.ds-pane__fab` places the floating button.\n- `.ds-sheet`: a raised sheet for the chosen item, at the side of the list. `.ds-sheet__head` with `.ds-sheet__title` and `.ds-button--icon` buttons, `.ds-sheet__body`, `.ds-sheet__actions` (`.ds-sheet__spacer` pushes the last button right). `--bottom` is the bottom sheet form with square lower corners, used for notes. `.ds-facts` is a row of three labelled values (`.ds-facts__label`, `.ds-facts__value`); `.ds-checks` a list of `.ds-form__check` rows, a finished one in `.ds-checks__done`.\n- `.ds-prose`: long-form text on a `.ds-panel--pad` sheet; styles h1 to h3, paragraphs, lists, `strong`, inline `code`, `pre` and links.\n- `.ds-link`: inline link with `is-visited`, `is-hover`, `is-active`, `is-focus`; `--quiet` is text-coloured. `.ds-links` lays several out in a row.\n- `.ds-button`: raised button, 36px tall, uppercase. `--secondary` is raised white, `--flat` has no fill or shadow and link-coloured text (inside sheets, cards and dialogs), `--fab` is the 56px accent disc holding one `.ds-icon`, `--icon` a round 40px icon button, `--danger` a raised button filled with `--color-danger` for a destructive action; `--flat` with `--danger` is its flat form. States `is-hover`, `is-active`, `is-focus`, `is-disabled`. Group with `.ds-buttons`.\n- `.ds-icon`: 24px stroked inline SVG in the current text colour.\n- `.ds-form`: stacked fields. `.ds-form__field` wraps a small `.ds-form__label` above a `.ds-form__control` (a bottom line; `--area` for a textarea, wrapped in `.ds-form__select` for a select); `.ds-form__row` puts two fields on one line. `is-focus` thickens the line; `is-invalid` on the field plus `.ds-form__error` shows an error; `.ds-form__hint` is help text; `.ds-form__check` with `.ds-form__checkbox` is a checkbox; `.ds-form__actions` right-aligns buttons inside a form.\n- `.ds-switch`: an on-off setting: a `<label>` holding `.ds-switch__input` (a checkbox) and `.ds-switch__track`, which draws the track and the round thumb; `is-on` shows the on state statically. Use it in `.ds-settings`, a list of `.ds-settings__item` rows with `.ds-settings__body` (`.ds-settings__title`, `.ds-settings__text`) at the left and the switch at the right.\n- `.ds-table`: 48px rows divided by hairlines with a small grey head, inside a `.ds-panel` under a `.ds-panel__head`. `.ds-table__num` right-aligns numbers, `.ds-table__name` sets a code name, `.ds-table__extra` marks cells a phone can do without; `tr.is-current` is tinted.\n- `.ds-list`: dense two-line rows. `.ds-list__item` holds a `.ds-list__avatar` disc (`--alt`, `--accent`, `--small`), `.ds-list__body` with `.ds-list__title` and `.ds-list__text`, each cut to one line, and `.ds-list__meta` at the right (a time above a status badge). `is-current` marks the chosen row. `.ds-list--open` lets the text wrap, for notes.\n- `.ds-panel`: a white sheet. `.ds-panel__title` and `.ds-panel__body` for a small card, `.ds-panel__head` (48px, title left, one flat button right) above a table or settings rows, `.ds-panel__actions` (`--end`) a ruled strip of buttons; `--pad` gives a text or form sheet 24px padding.\n- `.ds-stat`: one figure card with a `--border-width-strong` top line in a block colour (`--2`, `--3`, `--4`). Four sit in a `.ds-stats` row, 24px apart. `.ds-stat__value` is the number (24px) and `.ds-stat__label` the small grey caption under it.\n- `.ds-grid`: four list cards. Each `.ds-grid__cell` (`--2`, `--3`, `--4` pick the fill) is one link with a `.ds-grid__media` colour head carrying `.ds-grid__title` and `.ds-grid__count`, a `.ds-grid__text` line and a `.ds-grid__meter` progress line (`.ds-grid__meter-bar`, `--low`, `--high`).\n- `.ds-tabs`: a hairline-ruled row of uppercase `.ds-tabs__tab` along the top of a sheet; `is-current` has a line in `--color-link`.\n- `.ds-badge`: accent count; `--new` navy; `--chip` a 32px grey chip, `is-active` white and pressed in when it is the chosen filter. Status labels `--success`, `--warning`, `--danger` are flat fills with one word in sentence case. Group with `.ds-badges`.\n- `.ds-sidebar`: the navigation card of the settings page: `.ds-sidebar__title` captions above `.ds-sidebar__list` groups of 40px `.ds-sidebar__link` rows; `is-current` is link-coloured on a tint with a stripe at its left.\n- `.ds-notice`: a navy sheet with `.ds-notice__body` and a `.ds-notice__title`; `--error` is a white sheet with a top line and text in the danger colour. Group with `.ds-notices`.\n- `.ds-pagination`: a row of `.ds-pagination__link` cells; `is-current` is filled, `is-disabled` grey; previous and next are chevron icons.\n- `.ds-breadcrumb`: 13px trail of `.ds-breadcrumb__item` with `.ds-breadcrumb__link`, separated by drawn chevrons; the last carries `is-current`. Inside the page header it takes the strip's text colour.\n- `.ds-dialog`: a white sheet with the deepest shadow, `.ds-dialog__title`, `.ds-dialog__body` and right-aligned flat buttons in `.ds-dialog__actions`. Sits on `.ds-overlay`.\n- `.ds-empty`: centred `.ds-empty__mark` disc, `.ds-empty__title`, `.ds-empty__text` and one flat button, inside the card whose content is missing.\n- `.ds-footer`: one dark line: a `.ds-footer__list` of `.ds-footer__link` at the left and `.ds-footer__legal` at the right.\n- `.ds-menu`: a `<details>` whose `.ds-menu__button` (the `<summary>`: an icon, or the account's `.ds-avatar`) opens `.ds-menu__list`, a white sheet with the dialog shadow holding 48px `.ds-menu__link` rows. Use it for the account menu and the overflow (three dots) at the end of the bar; `--start` hangs the sheet from the left, for the menu button that carries the navigation on a phone.\n- `.ds-menu--account`: the account menu in the bar; its `.ds-menu__label` shows the name beside the avatar and is hidden on a phone, where only the avatar is left.\n- `.ds-avatar`: a person as a `--size-control` disc in the accent fill with one initial; use it in the bar as the account button.\n- `.ds-tooltip`: on an icon-only button, with a `.ds-tooltip__text` child naming it; the small dark label shows on hover and focus (`is-open` statically). It sits below; `--left`, `--right` and `--above` move it. Use it on the floating button and bar icons, never on a button that already has a text label.\n- `.ds-progress`: a `--size-progress` line with `.ds-progress__bar` (`--low`, `--high`) for work whose length is known; `--ring` is the small ring for work whose length is not. Put it inside the card or notice it reports on.\n- `.ds-accordion`: expansion panels inside a card: `<details class=\"ds-accordion__item\">` with a `.ds-accordion__head` summary (a chevron is drawn at its right) and a `.ds-accordion__body` paragraph. Use it for short questions and answers, closed by default.\n\n## Never\n\n- `row-gap <= 8px`: list and table rows touch and are divided by hairlines; the steps of a checklist sit 8px apart at most.\n- `block-gap <= 32px`: sheets are one 24px gutter apart.\n- `content-width >= 80%`: the two sheets fill the window; nothing is a centred column.\n- `underlined-links = 0%`: links are marked by colour and weight.\n- `font-weight <= 700`: bold is the heaviest weight.\n- `font-weight >= 300`: light is used for the welcome title only, never thinner.\n- `font-size >= 12px`: captions are the smallest text.\n- `font-size <= 34px`: the welcome title is the largest text.\n- `font-families <= 2`: one sans-serif plus the mono for code.\n- `letter-spacing = 0px`: no tracking, including on uppercase labels.\n- `uppercase-text <= 20%`: capitals are for buttons, tabs and small captions.\n- `gradient-fills = 0%`: every fill is one flat colour; depth comes from shadow.\n- `text-shadow = none`: no text has a shadow.\n- `border-radius <= 2px`: every box, tag and control has a 2px corner; only discs are round.\n- `box-shadow-blur <= 14px`: shadows are layered and tight, never a wide glow.\n- `border-width <= 4px`: hairlines are 1px, indicators and stat rules 3px, the notice stripe 4px.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen. A new kind of item is a new `.ds-list__item` in the list sheet and opens on the `.ds-sheet` beside it; a new fact about it is one more value in `.ds-facts`; a new on-off choice is a `.ds-settings__item` with a `.ds-switch`. A new overview block is a `.ds-panel` in the page's `.ds-stack`, a new view a `.ds-nav__link` and a `.ds-page-header`. Use tokens only, take heights and gaps from the `--size-*` and `--space-*` scale, and colour a block with one flat `--color-fill-*` and the text colour paired with it above. Never add a drawer, a second floating button, a centred column, an outline around a sheet, or a third sheet beside the list and its detail.\n",
    "components.css": ":root {\n  --size-page: 100%;\n  --size-menu: 208px;\n  --size-progress: 4px;\n  --size-ring: 32px;\n  --size-measure: 640px;\n  --size-side: 248px;\n  --size-bar: 64px;\n  --size-row: 48px;\n  --size-row-dense: 40px;\n  --size-control: 36px;\n  --size-fab: 56px;\n  --size-brand: 30px;\n  --size-icon: 24px;\n  --size-check: 18px;\n  --size-badge: 22px;\n  --size-stripe: 4px;\n  --size-switch: 36px;\n  --size-track: 14px;\n  --size-thumb: 20px;\n  --size-media: 88px;\n  --size-meter: 6px;\n  --size-search: 220px;\n  --size-dialog: 440px;\n  --size-area: 112px;\n  --space-1: 4px;\n  --space-2: 8px;\n  --space-3: 16px;\n  --space-4: 24px;\n  --space-5: 32px;\n  --space-6: 48px;\n  --space-7: 64px;\n  --space-8: 80px;\n}\n\n/* menu: a sheet of choices that drops from a button in the bar */\n.ds-menu {\n  position: relative;\n  display: flex;\n  align-items: center;\n  align-self: center;\n  flex: none;\n}\n.ds-menu__button {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: var(--space-2);\n  min-width: var(--size-row-dense);\n  height: var(--size-row-dense);\n  border-radius: var(--radius-pill);\n  color: inherit;\n  font-size: var(--text-small);\n  list-style: none;\n  cursor: pointer;\n  transition: var(--transition);\n}\n.ds-menu__button::-webkit-details-marker { display: none; }\n.ds-menu__button:hover,\n.ds-menu__button.is-hover,\n.ds-menu[open] > .ds-menu__button { background: color-mix(in srgb, currentColor 16%, transparent); }\n.ds-menu__button:focus-visible,\n.ds-menu__button.is-focus { outline: var(--focus-ring); }\n.ds-menu__list {\n  position: absolute;\n  z-index: 20;\n  top: 100%;\n  right: 0;\n  min-width: var(--size-menu);\n  margin: var(--space-1) 0 0;\n  padding: var(--space-2) 0;\n  list-style: none;\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-dialog);\n  color: var(--color-text);\n}\n.ds-menu__link,\n.ds-menu__link:hover {\n  display: flex;\n  align-items: center;\n  min-height: var(--size-row);\n  padding: 0 var(--space-3);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  text-decoration: none;\n  text-transform: none;\n  white-space: nowrap;\n}\n.ds-menu__link:hover,\n.ds-menu__link.is-hover { background: var(--color-surface-alt); }\n.ds-menu__link:focus-visible { outline: var(--focus-ring); outline-offset: calc(var(--border-width-strong) * -1); }\n\n/* avatar: a person as a disc with an initial */\n.ds-avatar {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex: none;\n  width: var(--size-control);\n  height: var(--size-control);\n  border-radius: 50%;\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: 1;\n}\n\n/* tooltip: the name of an icon button, shown on hover and focus */\n.ds-tooltip { position: relative; }\n.ds-tooltip__text {\n  position: absolute;\n  z-index: 30;\n  top: calc(100% + var(--space-2));\n  left: 50%;\n  transform: translateX(-50%);\n  padding: var(--space-1) var(--space-2);\n  border-radius: var(--radius-control);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-family: var(--font-body);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n  text-transform: none;\n  white-space: nowrap;\n  visibility: hidden;\n  opacity: 0;\n  pointer-events: none;\n}\n.ds-tooltip:hover > .ds-tooltip__text,\n.ds-tooltip:focus-visible > .ds-tooltip__text,\n.ds-tooltip.is-open > .ds-tooltip__text { visibility: visible; opacity: 1; }\n.ds-tooltip--left > .ds-tooltip__text {\n  top: 50%;\n  right: calc(100% + var(--space-2));\n  left: auto;\n  transform: translateY(-50%);\n}\n\n/* progress: a thin line, or a ring while the length is unknown */\n.ds-progress {\n  display: block;\n  height: var(--size-progress);\n  margin: var(--space-3) 0 var(--space-1);\n  overflow: hidden;\n  background: color-mix(in srgb, var(--color-button) 30%, transparent);\n}\n.ds-progress__bar {\n  display: block;\n  width: 60%;\n  height: 100%;\n  background: var(--fill-button);\n}\n\n/* accordion: expansion panels inside a sheet */\n.ds-accordion {\n  margin: var(--space-3) 0 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-accordion__item + .ds-accordion__item { border-top: var(--border-width) var(--border-style) var(--color-border); }\n.ds-accordion__head {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  min-height: var(--size-row);\n  color: var(--color-text);\n  font-size: var(--text-ui);\n  list-style: none;\n  cursor: pointer;\n}\n.ds-accordion__head::-webkit-details-marker { display: none; }\n.ds-accordion__head::after {\n  content: \"\";\n  flex: none;\n  width: var(--space-2);\n  height: var(--space-2);\n  margin: 0 var(--space-1);\n  border-right: var(--border-width-strong) var(--border-style) var(--color-text-muted);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-text-muted);\n  transform: rotate(45deg);\n}\n.ds-accordion__item[open] > .ds-accordion__head::after { transform: rotate(-135deg); }\n.ds-accordion__head:focus-visible { outline: var(--focus-ring); }\n.ds-accordion__body {\n  margin: 0;\n  padding: 0 0 var(--space-3);\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n}\n\n/* shell */\n.ds-page {\n  margin: 0;\n  min-width: 0;\n  width: var(--size-page);\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  -webkit-font-smoothing: antialiased;\n}\n.ds-page *,\n.ds-page *::before,\n.ds-page *::after { box-sizing: border-box; }\n\n.ds-icon {\n  width: var(--size-icon);\n  height: var(--size-icon);\n  flex: none;\n  fill: none;\n  stroke: currentColor;\n  stroke-width: 2;\n}\n\n/* nav */\n.ds-nav {\n  position: relative;\n  z-index: 2;\n  display: flex;\n  align-items: stretch;\n  gap: var(--space-4);\n  height: var(--size-bar);\n  padding: 0 var(--space-4);\n  background: var(--fill-bar);\n  box-shadow: var(--shadow-panel);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  text-shadow: var(--shadow-text);\n  backdrop-filter: blur(var(--backdrop-blur));\n}\n.ds-brand {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  color: var(--color-bar-text);\n  font-size: var(--text-large);\n  line-height: 1.2;\n  text-decoration: none;\n}\n.ds-brand__mark {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--size-brand);\n  height: var(--size-brand);\n  flex: none;\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-bar-text) 70%, transparent);\n  border-radius: var(--radius-control);\n  background: var(--color-button);\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: 72%;\n  height: 72%;\n}\n.ds-brand__name {\n  font-family: var(--font-heading);\n  font-weight: var(--weight-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-nav__links {\n  display: flex;\n  flex: 1 1 auto;\n  min-width: 0;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-nav__link {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  height: 100%;\n  padding: 0 var(--space-3);\n  border-top: var(--border-width-strong) var(--border-style) transparent;\n  border-bottom: var(--border-width-strong) var(--border-style) transparent;\n  color: color-mix(in srgb, var(--color-bar-text) 70%, transparent);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n  text-decoration: var(--link-decoration-quiet);\n  white-space: nowrap;\n  transition: var(--transition);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover { color: var(--color-bar-text); }\n.ds-nav__link.is-current {\n  border-bottom-color: var(--color-bar-text);\n  color: var(--color-bar-text);\n}\n.ds-nav__account {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  flex: none;\n  color: color-mix(in srgb, var(--color-bar-text) 87%, transparent);\n  font-size: var(--text-small);\n}\n\n/* hero and page header: the strip under the bar */\n.ds-hero,\n.ds-page-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3) var(--space-4);\n  padding: var(--space-3) var(--space-4);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n}\n.ds-hero { padding-top: var(--space-4); padding-bottom: var(--space-4); }\n.ds-hero__body,\n.ds-page-header__body { flex: 1 1 0; min-width: 0; }\n.ds-hero__title {\n  margin: 0;\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-hero__lead {\n  max-width: var(--size-measure);\n  margin: var(--space-1) 0 0;\n  color: color-mix(in srgb, var(--color-bar-alt-text) 87%, transparent);\n  font-size: var(--text-large);\n  line-height: 1.4;\n}\n.ds-hero__actions,\n.ds-page-header__actions {\n  display: flex;\n  flex: none;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n}\n.ds-page-header__title {\n  margin: var(--space-1) 0 0;\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: 1.25;\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-page-header__text {\n  max-width: var(--size-measure);\n  margin: 0;\n  color: color-mix(in srgb, var(--color-bar-alt-text) 87%, transparent);\n  font-size: var(--text-base);\n}\n\n/* layout */\n.ds-main { padding: var(--space-4) var(--space-4) var(--space-6); }\n.ds-split {\n  display: grid;\n  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);\n  gap: var(--space-4);\n  align-items: stretch;\n}\n.ds-split--form { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }\n.ds-split--settings { grid-template-columns: var(--size-side) minmax(0, 1fr); }\n.ds-split--start { align-items: start; }\n.ds-stack {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n}\n.ds-stack--fill > :last-child { flex: 1 1 auto; }\n.ds-subhead {\n  margin: var(--space-5) 0 var(--space-2);\n  color: var(--color-heading-alt);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-body);\n  text-transform: var(--ui-transform);\n}\n.ds-subhead:first-child { margin-top: 0; }\n\n/* pane: the list half of the split */\n.ds-pane {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-pane__tools {\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n  padding: var(--space-2) var(--space-3);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-pane__field {\n  flex: 1 1 var(--size-search);\n  margin-left: auto;\n}\n.ds-pane__foot {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  min-height: calc(var(--size-row) + var(--space-2));\n  margin-top: auto;\n  padding: 0 calc(var(--size-fab) + var(--space-4)) 0 var(--space-3);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-pane__fab {\n  position: absolute;\n  right: var(--space-3);\n  bottom: var(--space-4);\n}\n\n/* sheet: the side sheet and the bottom sheet */\n.ds-sheet {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  border-radius: var(--radius-page);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-sheet__head {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  min-height: var(--size-bar);\n  padding: var(--space-2) var(--space-2) var(--space-2) var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-sheet__title {\n  flex: 1 1 0;\n  min-width: 0;\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  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-sheet__body {\n  flex: 1 1 auto;\n  padding: var(--space-4);\n}\n.ds-sheet__body p { margin: 0 0 var(--space-3); }\n.ds-sheet__actions {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--space-3) var(--space-4);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-sheet__spacer { flex: 1 1 auto; }\n.ds-sheet--bottom {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.ds-facts {\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  gap: var(--space-3);\n  margin: var(--space-4) 0;\n  padding: var(--space-3) 0;\n  border-top: var(--border-width) var(--border-style) var(--color-border-muted);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-facts__label {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-facts__value {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin: 0;\n  font-weight: var(--weight-bold);\n}\n.ds-checks {\n  display: grid;\n  gap: var(--space-2);\n  margin: 0 0 var(--space-4);\n  padding: 0;\n  list-style: none;\n}\n.ds-checks__done {\n  color: var(--color-text-muted);\n  text-decoration: line-through;\n}\n\n/* typography */\n.ds-prose { max-width: var(--size-measure); }\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: var(--space-5) 0 var(--space-3);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-transform: var(--heading-transform);\n  letter-spacing: var(--heading-tracking);\n}\n.ds-prose h1 { margin-top: 0; font-size: var(--text-h1); line-height: 1.18; }\n.ds-prose h2 { font-size: var(--text-h2); }\n.ds-prose h3 { font-size: var(--text-h3); font-weight: var(--weight-bold); line-height: 1.6; margin-bottom: var(--space-2); }\n.ds-prose p { margin: 0 0 var(--space-3); }\n.ds-prose ul,\n.ds-prose ol { margin: 0 0 var(--space-3); padding-left: var(--space-4); }\n.ds-prose li { margin-bottom: var(--space-1); }\n.ds-prose strong { font-weight: var(--weight-bold); }\n.ds-prose code {\n  padding: 0 var(--space-1);\n  border-radius: var(--radius-control);\n  background: var(--color-surface-strong);\n  font-family: var(--font-mono);\n  font-size: var(--text-ui);\n}\n.ds-prose pre {\n  margin: 0 0 var(--space-3);\n  padding: var(--space-3);\n  overflow: auto;\n  border-radius: var(--radius-panel);\n  background: var(--color-surface-alt);\n  border: var(--border-width) var(--border-style) var(--color-border-muted);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  line-height: var(--line-body);\n}\n.ds-prose pre code { padding: 0; background: transparent; font-size: inherit; }\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\n/* links */\n.ds-links {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-5);\n}\n.ds-link {\n  color: var(--color-link);\n  font-weight: var(--weight-bold);\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 { color: var(--color-link-hover); text-decoration: var(--link-decoration-hover); }\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.ds-link--quiet:visited {\n  color: var(--color-link-quiet);\n  font-weight: var(--weight-body);\n  text-decoration: var(--link-decoration-quiet);\n}\n\n/* buttons */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-button {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-width: calc(var(--size-control) + var(--size-control) + var(--space-3));\n  height: var(--size-control);\n  margin: 0;\n  padding: 0 var(--space-3);\n  border: 0;\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-transform: var(--ui-transform);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\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 { box-shadow: var(--shadow-control-pressed); }\n.ds-button:focus-visible,\n.ds-button.is-focus { outline: var(--focus-ring); outline-offset: var(--border-width-strong); }\n.ds-button--secondary,\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n}\n.ds-button--flat,\n.ds-button--flat:active,\n.ds-button--flat.is-active {\n  background: transparent;\n  box-shadow: none;\n  color: var(--color-link);\n}\n.ds-button--flat:hover,\n.ds-button--flat.is-hover {\n  background: color-mix(in srgb, var(--color-text-muted) 20%, transparent);\n  box-shadow: none;\n  color: var(--color-link);\n}\n.ds-button--danger {\n  background: var(--color-danger);\n  color: var(--color-button-text);\n}\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: color-mix(in srgb, var(--color-danger) 88%, var(--color-shadow));\n  color: var(--color-button-hover-text);\n}\n.ds-button--flat.ds-button--danger,\n.ds-button--flat.ds-button--danger:active,\n.ds-button--flat.ds-button--danger.is-active {\n  background: transparent;\n  color: var(--color-danger);\n}\n.ds-button--flat.ds-button--danger:hover,\n.ds-button--flat.ds-button--danger.is-hover {\n  background: color-mix(in srgb, var(--color-danger) 12%, transparent);\n  color: var(--color-danger);\n}\n.ds-button--fab,\n.ds-button--fab:hover,\n.ds-button--fab.is-hover {\n  width: var(--size-fab);\n  min-width: 0;\n  height: var(--size-fab);\n  padding: 0;\n  border-radius: 50%;\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n}\n.ds-button--fab { box-shadow: var(--shadow-control-hover); }\n.ds-button:disabled,\n.ds-button.is-disabled,\n.ds-button.is-disabled:hover {\n  background: var(--color-disabled);\n  box-shadow: none;\n  color: var(--color-disabled-text);\n  cursor: default;\n}\n\n/* form */\n.ds-form {\n  display: grid;\n  gap: var(--space-4);\n}\n.ds-form__field { display: block; }\n.ds-form__label {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  line-height: 1.25;\n}\n.ds-form__control {\n  display: block;\n  width: 100%;\n  height: var(--size-control);\n  margin: 0;\n  padding: var(--space-1) calc(var(--radius-control) * 2);\n  border: 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control) var(--radius-control) 0 0;\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  line-height: var(--line-body);\n  appearance: none;\n  transition: var(--transition);\n}\n.ds-form__control:focus,\n.ds-form__control.is-focus {\n  outline: 0;\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-focus);\n  padding-bottom: calc(var(--space-1) - var(--border-width));\n}\n.ds-form__control--area {\n  height: var(--size-area);\n  resize: vertical;\n}\n.ds-form__select {\n  position: relative;\n  display: block;\n}\n.ds-form__select::after {\n  content: \"\";\n  position: absolute;\n  right: var(--space-1);\n  top: calc(var(--size-control) / 2 - var(--border-width-strong));\n  border: var(--size-stripe) var(--border-style) transparent;\n  border-top-color: var(--color-text-muted);\n  border-bottom: 0;\n  border-left-width: calc(var(--size-stripe) + var(--border-width));\n  border-right-width: calc(var(--size-stripe) + var(--border-width));\n  pointer-events: none;\n}\n.ds-form__hint,\n.ds-form__error {\n  display: block;\n  margin-top: var(--space-1);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  line-height: 1.25;\n}\n.ds-form__field.is-invalid .ds-form__label,\n.ds-form__error { color: var(--color-danger); }\n.ds-form__field.is-invalid .ds-form__control {\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-danger);\n  padding-bottom: calc(var(--space-1) - var(--border-width));\n}\n.ds-form__check {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  font-size: var(--text-base);\n}\n.ds-form__checkbox {\n  width: var(--size-check);\n  height: var(--size-check);\n  margin: 0;\n  flex: none;\n  accent-color: var(--color-button);\n}\n.ds-form__actions {\n  display: flex;\n  justify-content: flex-end;\n  gap: var(--space-2);\n}\n\n/* table */\n.ds-table {\n  width: 100%;\n  border-collapse: collapse;\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n  font-size: var(--text-ui);\n}\n.ds-table th,\n.ds-table td {\n  height: var(--size-row);\n  padding: 0 var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  text-align: left;\n  vertical-align: middle;\n}\n.ds-table th {\n  height: var(--size-row);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n}\n.ds-table tbody tr:last-child td { border-bottom: 0; }\n.ds-table tbody tr:hover,\n.ds-table tbody tr.is-hover { background: var(--color-surface-strong); }\n.ds-table tbody tr.is-current { background: var(--color-surface-alt); }\n.ds-table .ds-table__num { text-align: right; font-variant-numeric: tabular-nums; }\n.ds-table__name { font-family: var(--font-mono); font-size: var(--text-small); }\n\n/* badge */\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-flex;\n  align-items: center;\n  justify-content: center;\n  min-width: var(--size-badge);\n  height: var(--size-badge);\n  padding: 0 var(--space-2);\n  border-radius: var(--radius-pill);\n  background: var(--fill-accent);\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: 1;\n}\n.ds-badge--new { background: var(--color-accent-alt); color: var(--color-button-text); }\n.ds-badge--success { background: var(--color-success); color: var(--color-button-text); }\n.ds-badge--warning { background: var(--color-warning); color: var(--color-accent-text); }\n.ds-badge--danger { background: var(--color-danger); color: var(--color-button-text); }\n.ds-badge--chip {\n  height: var(--space-5);\n  padding: 0 calc(var(--space-2) + var(--space-1));\n  background: var(--color-surface-strong);\n  color: var(--color-text);\n  font-weight: var(--weight-body);\n}\n\n/* pagination */\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  font-family: var(--font-ui);\n}\n.ds-pagination__link {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  min-width: var(--size-control);\n  height: var(--size-control);\n  padding: 0 var(--space-2);\n  border-radius: var(--radius-pill);\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  transition: var(--transition);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover { background: color-mix(in srgb, var(--color-text-muted) 20%, transparent); }\n.ds-pagination__link.is-current {\n  background: var(--fill-button);\n  color: var(--color-button-text);\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-disabled-text);\n  background: transparent;\n}\n\n/* breadcrumb */\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  line-height: var(--line-body);\n}\n.ds-breadcrumb__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n}\n.ds-breadcrumb__item + .ds-breadcrumb__item::before {\n  content: \"\";\n  width: calc(var(--space-1) + var(--border-width-strong));\n  height: calc(var(--space-1) + var(--border-width-strong));\n  border-top: var(--border-width) var(--border-style) currentColor;\n  border-right: var(--border-width) var(--border-style) currentColor;\n  transform: rotate(45deg);\n}\n.ds-breadcrumb__link { color: inherit; text-decoration: var(--link-decoration-quiet); }\n.ds-breadcrumb__link:hover { color: var(--color-link-hover); }\n.ds-breadcrumb__item.is-current { color: var(--color-text); }\n\n/* dialog */\n.ds-overlay {\n  display: flex;\n  justify-content: center;\n  padding: var(--space-6) var(--space-4);\n  background: var(--color-overlay);\n}\n.ds-dialog {\n  width: 100%;\n  max-width: var(--size-dialog);\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-4) var(--space-4) 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: 1.6;\n}\n.ds-dialog__body {\n  padding: var(--space-3) var(--space-4) var(--space-4);\n  color: var(--color-text-muted);\n  font-size: var(--text-base);\n}\n.ds-dialog__body p { margin: 0; }\n.ds-dialog__actions {\n  display: flex;\n  justify-content: flex-end;\n  gap: var(--space-2);\n  padding: var(--space-2);\n}\n\n/* empty */\n.ds-empty {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: var(--space-6) var(--space-4);\n  color: var(--color-text-muted);\n  text-align: center;\n}\n.ds-empty__mark {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--size-fab);\n  height: var(--size-fab);\n  margin-bottom: var(--space-3);\n  border-radius: 50%;\n  background: var(--color-surface-strong);\n  color: var(--color-disabled-text);\n}\n.ds-empty__title {\n  margin: 0;\n  color: var(--color-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: 1.6;\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-3);\n  font-size: var(--text-ui);\n}\n\n/* controls of this layout */\n.ds-button .ds-icon { margin: 0 var(--space-2) 0 calc(var(--space-1) * -1); }\n.ds-button--fab .ds-icon { margin: 0; }\n.ds-button--icon,\n.ds-button--icon:hover,\n.ds-button--icon.is-hover {\n  width: var(--size-row-dense);\n  min-width: 0;\n  height: var(--size-row-dense);\n  padding: 0;\n  border-radius: 50%;\n  background: transparent;\n  box-shadow: none;\n  color: var(--color-text-muted);\n}\n.ds-button--icon .ds-icon { margin: 0; }\n.ds-button--icon:hover,\n.ds-button--icon.is-hover { background: color-mix(in srgb, var(--color-text-muted) 20%, transparent); }\n.ds-hero .ds-button--flat,\n.ds-hero .ds-button--flat:hover,\n.ds-page-header .ds-button--flat,\n.ds-page-header .ds-button--flat:hover { color: var(--color-bar-alt-text); }\n.ds-hero .ds-button--flat:hover,\n.ds-page-header .ds-button--flat:hover { background: color-mix(in srgb, var(--color-bar-alt-text) 16%, transparent); }\n.ds-badge--chip { text-decoration: none; }\n.ds-badge--chip.is-active {\n  background: var(--fill-button-secondary);\n  box-shadow: var(--shadow-control-pressed);\n  color: var(--color-button-secondary-text);\n  font-weight: var(--weight-bold);\n}\n.ds-page-header .ds-breadcrumb { color: color-mix(in srgb, var(--color-bar-alt-text) 70%, transparent); }\n.ds-page-header .ds-breadcrumb__link:hover,\n.ds-page-header .ds-breadcrumb__item.is-current { color: var(--color-bar-alt-text); }\n.ds-panel .ds-table {\n  border-radius: 0;\n  background: transparent;\n  box-shadow: none;\n}\n.ds-overlay { border-radius: var(--radius-panel); align-items: center; }\n.ds-form__row {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: var(--space-4);\n}\n\n/* switch */\n.ds-switch {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  flex: none;\n  width: var(--size-switch);\n  height: var(--size-thumb);\n  cursor: pointer;\n}\n.ds-switch__input {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  opacity: 0;\n  cursor: pointer;\n}\n.ds-switch__track {\n  width: 100%;\n  height: var(--size-track);\n  border-radius: var(--radius-pill);\n  background: var(--color-border-strong);\n  transition: var(--transition);\n}\n.ds-switch__track::after {\n  content: \"\";\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: var(--size-thumb);\n  height: var(--size-thumb);\n  border-radius: 50%;\n  background: var(--fill-button-secondary);\n  box-shadow: var(--shadow-control);\n  transition: var(--transition);\n}\n.ds-switch__input:checked + .ds-switch__track,\n.ds-switch.is-on .ds-switch__track { background: color-mix(in srgb, var(--color-button) 50%, transparent); }\n.ds-switch__input:checked + .ds-switch__track::after,\n.ds-switch.is-on .ds-switch__track::after {\n  left: calc(100% - var(--size-thumb));\n  background: var(--fill-button);\n}\n.ds-switch__input:focus-visible + .ds-switch__track,\n.ds-switch.is-focus .ds-switch__track { outline: var(--focus-ring); outline-offset: var(--border-width-strong); }\n.ds-settings {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-settings__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-4);\n  min-height: calc(var(--size-row) + var(--space-3));\n  padding: var(--space-2) var(--space-4);\n}\n.ds-settings__item + .ds-settings__item { border-top: var(--border-width) var(--border-style) var(--color-border-muted); }\n.ds-settings__body { flex: 1 1 0; min-width: 0; }\n.ds-settings__title { display: block; color: var(--color-text); font-weight: var(--weight-bold); }\n.ds-settings__text {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* panel */\n.ds-panel {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__head {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  min-height: var(--size-row);\n  padding: var(--space-1) var(--space-2) var(--space-1) var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-panel__title {\n  margin: 0;\n  padding: var(--space-3) var(--space-4) 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: 1.3;\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-panel__head .ds-panel__title { padding: 0; }\n.ds-panel__body {\n  flex: 1 1 auto;\n  padding: var(--space-3) var(--space-4) var(--space-4);\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n  line-height: 1.43;\n}\n.ds-panel__body p { margin: 0 0 var(--space-3); }\n.ds-panel__body p:last-child { margin-bottom: 0; }\n.ds-panel__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n  padding: var(--space-2);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-panel__actions--end { justify-content: flex-end; padding: var(--space-3) var(--space-4); }\n.ds-panel--pad .ds-panel__body {\n  padding: var(--space-4);\n  color: var(--color-text);\n  font-size: inherit;\n  line-height: inherit;\n}\n\n/* stats */\n.ds-stats {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: var(--space-4);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-stat {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  padding: var(--space-3) var(--space-4);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-fill-1);\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-stat--2 { border-top-color: var(--color-fill-2); }\n.ds-stat--3 { border-top-color: var(--color-fill-3); }\n.ds-stat--4 { border-top-color: var(--color-fill-4); }\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-heading);\n  line-height: 1.25;\n  font-variant-numeric: tabular-nums;\n}\n.ds-stat__label {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  line-height: var(--line-body);\n}\n\n/* grid: cards of task lists */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: var(--space-4);\n}\n.ds-grid__cell {\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  border-radius: var(--radius-page);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n  color: var(--color-text);\n  text-decoration: none;\n  transition: var(--transition);\n}\n.ds-grid__cell:hover,\n.ds-grid__cell.is-hover { box-shadow: var(--shadow-control-hover); }\n.ds-grid__media {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-2);\n  min-height: var(--size-media);\n  padding: var(--space-3);\n  background: var(--color-fill-1);\n  color: var(--color-bar-text);\n}\n.ds-grid__cell--2 .ds-grid__media { background: var(--color-fill-2); color: var(--color-accent-text); }\n.ds-grid__cell--3 .ds-grid__media { background: var(--color-fill-3); color: var(--color-bar-text); }\n.ds-grid__cell--4 .ds-grid__media { background: var(--color-fill-4); color: var(--color-inverse-text); }\n.ds-grid__title {\n  margin: 0;\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-grid__count {\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  white-space: nowrap;\n}\n.ds-grid__text {\n  flex: 1 1 auto;\n  margin: 0;\n  padding: var(--space-3) var(--space-3) var(--space-2);\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n  line-height: 1.43;\n}\n.ds-grid__meter {\n  height: var(--size-meter);\n  margin: 0 var(--space-3) var(--space-3);\n  border-radius: var(--radius-pill);\n  background: var(--color-surface-strong);\n  overflow: hidden;\n}\n.ds-grid__meter-bar {\n  display: block;\n  width: 60%;\n  height: 100%;\n  background: var(--fill-button);\n}\n.ds-grid__meter-bar--low { width: 25%; }\n.ds-grid__meter-bar--high { width: 85%; }\n\n/* list: dense two-line rows */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-list__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  min-height: calc(var(--size-row) + var(--space-3));\n  padding: var(--space-2) var(--space-3) var(--space-2) calc(var(--space-3) - var(--size-stripe));\n  border-left: var(--size-stripe) var(--border-style) transparent;\n  transition: var(--transition);\n}\n.ds-list__item + .ds-list__item { border-top: var(--border-width) var(--border-style) var(--color-border-muted); }\n.ds-list__item:hover,\n.ds-list__item.is-hover { background: var(--color-surface-alt); }\n.ds-list__item.is-current {\n  border-left-color: var(--color-link);\n  background: var(--color-surface-alt);\n}\n.ds-list__avatar {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--size-row-dense);\n  height: var(--size-row-dense);\n  flex: none;\n  border-radius: 50%;\n  background: var(--color-fill-3);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: 1;\n}\n.ds-list__avatar--alt { background: var(--color-fill-1); }\n.ds-list__avatar--accent { background: var(--color-fill-2); color: var(--color-accent-text); }\n.ds-list__avatar--small {\n  width: var(--size-icon);\n  height: var(--size-icon);\n  font-size: var(--text-small);\n}\n.ds-list__body { flex: 1 1 0; min-width: 0; }\n.ds-list__title {\n  display: block;\n  overflow: hidden;\n  color: var(--color-link-quiet);\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n  line-height: 1.4;\n  text-decoration: var(--link-decoration-quiet);\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.ds-list__title:hover { color: var(--color-link-hover); }\n.ds-list__text {\n  display: block;\n  overflow: hidden;\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n  line-height: 1.43;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.ds-list__meta {\n  display: flex;\n  flex-direction: column;\n  align-items: flex-end;\n  gap: var(--space-1);\n  flex: none;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  line-height: 1.25;\n}\n.ds-pane .ds-list { padding-bottom: var(--space-4); }\n.ds-list--open .ds-list__title,\n.ds-list--open .ds-list__text { white-space: normal; }\n.ds-list--open .ds-list__item { align-items: flex-start; }\n\n/* sidebar */\n.ds-sidebar {\n  align-self: start;\n  min-width: 0;\n  padding: var(--space-2) 0;\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n  font-family: var(--font-ui);\n}\n.ds-sidebar__title {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  color: var(--color-heading-alt);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-body);\n  text-transform: var(--ui-transform);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-sidebar__link {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-2);\n  height: var(--size-row-dense);\n  padding: 0 var(--space-4) 0 calc(var(--space-4) - var(--size-stripe));\n  border-left: var(--size-stripe) var(--border-style) transparent;\n  color: var(--color-link-quiet);\n  font-size: var(--text-ui);\n  text-decoration: var(--link-decoration-quiet);\n  transition: var(--transition);\n}\n.ds-sidebar__link:hover,\n.ds-sidebar__link.is-hover { background: var(--color-surface-strong); }\n.ds-sidebar__link.is-current {\n  border-left-color: var(--color-link);\n  background: var(--color-surface-alt);\n  color: var(--color-link);\n  font-weight: var(--weight-bold);\n}\n\n/* notice */\n.ds-notices {\n  display: grid;\n  gap: var(--space-3);\n}\n.ds-notice {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-3);\n  padding: var(--space-3) var(--space-4);\n  border-radius: var(--radius-panel);\n  background: var(--color-notice);\n  box-shadow: var(--shadow-panel);\n  color: var(--color-notice-text);\n  font-size: var(--text-ui);\n  line-height: 1.43;\n}\n.ds-notice__body { flex: 1 1 0; min-width: 0; }\n.ds-notice__title {\n  display: block;\n  font-size: var(--text-base);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-body);\n}\n.ds-notice--error {\n  border-top: var(--border-width-strong) var(--border-style) var(--color-danger);\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n}\n\n/* tabs */\n.ds-tabs {\n  display: flex;\n  margin: 0;\n  padding: 0 var(--space-2);\n  list-style: none;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n}\n.ds-tabs__tab {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  height: var(--size-row);\n  padding: 0 var(--space-3);\n  margin-bottom: calc(var(--border-width) * -1);\n  border-bottom: var(--border-width-strong) var(--border-style) transparent;\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  white-space: nowrap;\n  transition: var(--transition);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover { color: var(--color-text); }\n.ds-tabs__tab.is-current {\n  color: var(--color-text);\n  border-bottom-color: var(--color-link);\n}\n\n/* footer */\n.ds-footer {\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  gap: var(--space-2) var(--space-4);\n  padding: var(--space-3) var(--space-4);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-size: var(--text-small);\n}\n.ds-footer__list {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2) var(--space-4);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__link {\n  color: color-mix(in srgb, var(--color-inverse-text) 70%, transparent);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-footer__link:hover,\n.ds-footer__link.is-hover { color: var(--color-inverse-text); }\n.ds-footer__legal {\n  margin: 0 0 0 auto;\n  color: color-mix(in srgb, var(--color-inverse-text) 70%, transparent);\n}\n\n/* views */\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.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#inbox\"],\n.ds-page:has(#inbox:target) .ds-nav__link[href=\"#inbox\"],\n.ds-page:has(#task:target) .ds-nav__link[href=\"#inbox\"],\n.ds-page:has(#lists:target) .ds-nav__link[href=\"#lists\"],\n.ds-page:has(#new:target) .ds-nav__link[href=\"#new\"],\n.ds-page:has(#settings:target) .ds-nav__link[href=\"#settings\"] {\n  border-bottom-color: var(--color-bar-text);\n  color: var(--color-bar-text);\n}\n\n@media (max-width: 900px) {\n  .ds-nav__account { display: none; }\n  .ds-split,\n  .ds-split--form,\n  .ds-split--settings { grid-template-columns: minmax(0, 1fr); }\n  .ds-stats,\n  .ds-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n  .ds-sidebar { align-self: stretch; }\n  .ds-footer__legal { margin-left: 0; }\n}\n@media (max-width: 600px) {\n  .ds-nav {\n    flex-wrap: wrap;\n    gap: 0;\n    height: auto;\n    padding: 0 var(--space-3);\n  }\n  .ds-brand { width: 100%; height: var(--size-row); padding-top: var(--space-2); }\n  .ds-nav__links {\n    height: var(--size-row);\n    margin-left: calc(var(--space-2) * -1);\n    overflow: auto;\n  }\n  .ds-nav__link { padding: 0 var(--space-2); }\n  .ds-hero,\n  .ds-page-header {\n    flex-direction: column;\n    align-items: flex-start;\n    padding: var(--space-3);\n  }\n  .ds-hero__title { font-size: var(--text-h1); }\n  .ds-hero__lead { font-size: var(--text-base); }\n  .ds-main { padding: var(--space-3) var(--space-3) var(--space-5); }\n  .ds-pane__foot { white-space: nowrap; }\n  .ds-stats,\n  .ds-grid { gap: var(--space-3); }\n  .ds-grid { grid-template-columns: minmax(0, 1fr); }\n  .ds-stat { padding: var(--space-3); }\n  .ds-facts { grid-template-columns: minmax(0, 1fr); gap: var(--space-2); }\n  .ds-form__row { grid-template-columns: minmax(0, 1fr); }\n  .ds-sheet__head { padding-left: var(--space-3); }\n  .ds-sheet__body { padding: var(--space-3); }\n  .ds-sheet__actions { padding: var(--space-3); }\n  .ds-panel--pad .ds-panel__body { padding: var(--space-3); }\n  .ds-panel__head { padding-left: var(--space-3); }\n  .ds-panel__actions--end { padding: var(--space-3); }\n  .ds-settings__item { padding: var(--space-2) var(--space-3); gap: var(--space-3); }\n  .ds-table th,\n  .ds-table td { padding: 0 var(--space-2); }\n  .ds-table .ds-table__extra { display: none; }\n  .ds-tabs { overflow: auto; }\n  .ds-links { gap: var(--space-3) var(--space-4); }\n  .ds-overlay { padding: var(--space-4) var(--space-3); }\n}\n\n/* the account menu keeps the bar's top right corner on a phone */\n@media (max-width: 600px) {\n  .ds-nav { position: relative; }\n  .ds-nav > .ds-menu--account {\n    position: absolute;\n    top: var(--space-2);\n    right: var(--space-3);\n  }\n  .ds-menu__label { display: none; }\n}\n\n.ds-menu--account { margin-left: var(--space-2); }\n.ds-menu--account .ds-menu__button { padding: 0 var(--space-2) 0 var(--space-1); color: var(--color-bar-text); }\n\n/* phones: the links spread across the bar */\n@media (max-width: 600px) {\n  .ds-nav__links {\n    flex: 1 1 100%;\n    justify-content: space-between;\n    margin-right: calc(var(--space-2) * -1);\n  }\n}\n",
    "specimen.html": "<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>chronoskin tasks</title>\n<link rel=\"stylesheet\" href=\"tokens.css\">\n<link rel=\"stylesheet\" href=\"components.css\">\n</head>\n<body class=\"ds-page\" data-component=\"shell\">\n\n<header class=\"ds-nav\" data-component=\"nav\">\n  <a class=\"ds-brand\" data-component=\"brand\" href=\"#\">\n    <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M4 3h8.5v8.5H21V21H4z\"/><path d=\"M14.5 3l6.5 6.5h-6.5z\" fill-opacity=\"0.55\"/></svg></span>\n    <span class=\"ds-brand__name\">chronoskin</span>\n  </a>\n  <ul class=\"ds-nav__links\">\n    <li><a class=\"ds-nav__link\" href=\"#inbox\">Inbox</a></li>\n    <li><a class=\"ds-nav__link\" href=\"#lists\">Lists</a></li>\n    <li><a class=\"ds-nav__link\" href=\"#new\">New task</a></li>\n    <li><a class=\"ds-nav__link\" href=\"#settings\">Settings</a></li>\n  </ul>\n  <details class=\"ds-menu ds-menu--account\" data-component=\"menu\">\n    <summary class=\"ds-menu__button\" aria-label=\"Account\"><span class=\"ds-avatar\" data-component=\"avatar\">A</span><span class=\"ds-menu__label\">Anouk Verhey</span></summary>\n    <ul class=\"ds-menu__list\">\n      <li><a class=\"ds-menu__link\" href=\"#settings\">Settings</a></li>\n      <li><a class=\"ds-menu__link\" href=\"#lists\">Your lists</a></li>\n      <li><a class=\"ds-menu__link\" href=\"#new\">New task</a></li>\n    </ul>\n  </details>\n</header>\n\n<section class=\"ds-view ds-view--home\" id=\"inbox\">\n\n  <div class=\"ds-hero\" data-component=\"hero\">\n    <div class=\"ds-hero__body\">\n      <h1 class=\"ds-hero__title\">Five tasks for today</h1>\n      <p class=\"ds-hero__lead\">Two are overdue. The print shop closes at four, so start with the posters.</p>\n    </div>\n    <div class=\"ds-hero__actions\">\n      <a class=\"ds-button ds-button--flat\" href=\"#lists\">See all lists</a>\n      <a class=\"ds-button ds-button--secondary\" href=\"#new\">New task</a>\n    </div>\n  </div>\n\n  <div class=\"ds-main\">\n    <div class=\"ds-split\">\n\n      <section class=\"ds-pane\">\n        <ul class=\"ds-tabs\" data-component=\"tabs\">\n          <li><a class=\"ds-tabs__tab is-current\" href=\"#inbox\">Today <span class=\"ds-badge\">5</span></a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#inbox\">This week</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#inbox\">Mine</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#inbox\">Done</a></li>\n        </ul>\n        <div class=\"ds-pane__tools\">\n          <a class=\"ds-badge ds-badge--chip is-active\" href=\"#inbox\">All lists</a>\n          <a class=\"ds-badge ds-badge--chip\" href=\"#inbox\">Open day</a>\n          <a class=\"ds-badge ds-badge--chip\" href=\"#inbox\">Workshop</a>\n          <label class=\"ds-pane__field\">\n            <input class=\"ds-form__control\" type=\"text\" placeholder=\"Find a task\" aria-label=\"Find a task\">\n          </label>\n        </div>\n        <ul class=\"ds-list\" data-component=\"list\">\n          <li class=\"ds-list__item is-current\">\n            <span class=\"ds-list__avatar ds-list__avatar--alt\">J</span>\n            <span class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#task\">Collect the posters from the print shop</a>\n              <span class=\"ds-list__text\">Jonas Abara. Forty copies, paid in advance.</span>\n            </span>\n            <span class=\"ds-list__meta\">Today, 16:00 <span class=\"ds-badge ds-badge--danger\">Overdue</span></span>\n          </li>\n          <li class=\"ds-list__item\">\n            <span class=\"ds-list__avatar ds-list__avatar--accent\">A</span>\n            <span class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#task\">Book the hall for the open day</a>\n              <span class=\"ds-list__text\">Anouk Verhey. Ask about the side room too.</span>\n            </span>\n            <span class=\"ds-list__meta\">Today <span class=\"ds-badge ds-badge--warning\">Waiting</span></span>\n          </li>\n          <li class=\"ds-list__item\">\n            <span class=\"ds-list__avatar\">S</span>\n            <span class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#task\">Sharpen the plane irons</a>\n              <span class=\"ds-list__text\">Sorin Okonkwo. Both benches, before Thursday class.</span>\n            </span>\n            <span class=\"ds-list__meta\">Today <span class=\"ds-badge ds-badge--success\">Started</span></span>\n          </li>\n          <li class=\"ds-list__item\">\n            <span class=\"ds-list__avatar ds-list__avatar--alt\">J</span>\n            <span class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#task\">Order sandpaper and glue</a>\n              <span class=\"ds-list__text\">Jonas Abara. Three grits, two litres.</span>\n            </span>\n            <span class=\"ds-list__meta\">Today</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <span class=\"ds-list__avatar ds-list__avatar--accent\">A</span>\n            <span class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#task\">Write the welcome sheet</a>\n              <span class=\"ds-list__text\">Anouk Verhey. One page, large type.</span>\n            </span>\n            <span class=\"ds-list__meta\">Today <span class=\"ds-badge ds-badge--new\">New</span></span>\n          </li>\n          <li class=\"ds-list__item\">\n            <span class=\"ds-list__avatar\">L</span>\n            <span class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#task\">Check the first aid box</a>\n              <span class=\"ds-list__text\">Leila Marchetti. Plasters ran out last month.</span>\n            </span>\n            <span class=\"ds-list__meta\">Tomorrow</span>\n          </li>\n        </ul>\n        <div class=\"ds-pane__foot\">\n          <span>1 to 6 of 14</span>\n          <ul class=\"ds-pagination\" data-component=\"pagination\">\n            <li><a class=\"ds-pagination__link is-disabled\" href=\"#inbox\" aria-label=\"Previous\">\n              <svg class=\"ds-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M15 6l-6 6 6 6\" stroke=\"currentColor\" fill=\"none\"/></svg>\n            </a></li>\n            <li><a class=\"ds-pagination__link is-current\" href=\"#inbox\">1</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#inbox\">2</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#inbox\">3</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#inbox\" aria-label=\"Next\">\n              <svg class=\"ds-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 6l6 6-6 6\" stroke=\"currentColor\" fill=\"none\"/></svg>\n            </a></li>\n          </ul>\n        </div>\n        <a class=\"ds-button ds-button--fab ds-pane__fab ds-tooltip ds-tooltip--left\" href=\"#new\" aria-label=\"New task\"><span class=\"ds-tooltip__text\" role=\"tooltip\">New task</span>\n          <svg class=\"ds-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 5v14M5 12h14\" stroke=\"currentColor\" fill=\"none\"/></svg>\n        </a>\n      </section>\n\n      <aside class=\"ds-sheet\">\n        <div class=\"ds-sheet__head\">\n          <h2 class=\"ds-sheet__title\">Collect the posters from the print shop</h2>\n          <a class=\"ds-button ds-button--icon\" href=\"#task\" aria-label=\"Open the task\">\n            <svg class=\"ds-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M14 5h5v5M19 5l-8 8M10 7H5v12h12v-5\" stroke=\"currentColor\" fill=\"none\"/></svg>\n          </a>\n          <a class=\"ds-button ds-button--icon\" href=\"#inbox\" aria-label=\"Close\">\n            <svg class=\"ds-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" fill=\"none\"/></svg>\n          </a>\n        </div>\n        <div class=\"ds-sheet__body\">\n          <div class=\"ds-badges\">\n            <span class=\"ds-badge ds-badge--danger\">Overdue</span>\n            <span class=\"ds-badge ds-badge--chip\">Open day</span>\n            <span class=\"ds-badge ds-badge--chip\">Errand</span>\n          </div>\n          <div class=\"ds-facts\">\n            <div><span class=\"ds-facts__label\">Assigned to</span><p class=\"ds-facts__value\"><span class=\"ds-list__avatar ds-list__avatar--small ds-list__avatar--alt\">J</span> Jonas Abara</p></div>\n            <div><span class=\"ds-facts__label\">Due</span><p class=\"ds-facts__value\">Today, 16:00</p></div>\n            <div><span class=\"ds-facts__label\">List</span><p class=\"ds-facts__value\">Open day</p></div>\n          </div>\n          <p>The shop holds the order under the workshop's name. Take the van: the tubes do not fit in a bicycle basket. Leave ten posters at the library on the way back.</p>\n          <p class=\"ds-subhead\">Steps</p>\n          <span class=\"ds-progress\" data-component=\"progress\" role=\"progressbar\" aria-label=\"Two of four steps done\"><span class=\"ds-progress__bar\"></span></span>\n          <ul class=\"ds-checks\">\n            <li><label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> <span class=\"ds-checks__done\">Confirm the order is ready</span></label></li>\n            <li><label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> <span class=\"ds-checks__done\">Borrow the van key</span></label></li>\n            <li><label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\"> <span>Collect before four</span></label></li>\n            <li><label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\"> <span>Drop ten at the library</span></label></li>\n          </ul>\n        </div>\n        <div class=\"ds-sheet__actions\">\n          <a class=\"ds-button\" href=\"#inbox\">Mark as done</a>\n          <a class=\"ds-button ds-button--flat\" href=\"#task\">Open</a>\n          <span class=\"ds-sheet__spacer\"></span>\n          <a class=\"ds-button ds-button--flat\" href=\"#new\">Edit</a>\n        </div>\n      </aside>\n\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"task\">\n\n  <header class=\"ds-page-header\" data-component=\"page-header\">\n    <div class=\"ds-page-header__body\">\n      <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#inbox\">Inbox</a></li>\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#lists\">Open day</a></li>\n        <li class=\"ds-breadcrumb__item is-current\">Posters</li>\n      </ol>\n      <h1 class=\"ds-page-header__title\">Collect the posters from the print shop</h1>\n      <p class=\"ds-page-header__text\">Due today at 16:00, assigned to Jonas Abara.</p>\n    </div>\n    <div class=\"ds-page-header__actions\">\n      <a class=\"ds-button ds-button--secondary\" href=\"#inbox\">Mark as done</a>\n    </div>\n  </header>\n\n  <div class=\"ds-main\">\n    <div class=\"ds-split ds-split--form\">\n\n      <div class=\"ds-panel ds-panel--pad\">\n        <div class=\"ds-panel__body\">\n          <article class=\"ds-prose\" data-component=\"typography\">\n            <h1>What needs doing</h1>\n            <p>The shop holds the order under the workshop's name. Take the van: the tubes do not fit in a bicycle basket. The reference on the receipt is <code>WS 2291</code>.</p>\n            <h2>On the way back</h2>\n            <p>Leave ten posters at the library desk and ask them to put two in the window. The rest go in the store room, flat, not rolled. The <a href=\"#lists\">open day list</a> has the other errands.</p>\n            <ul>\n              <li>Check the date on every poster before you leave the shop.</li>\n              <li>Keep the receipt for the treasurer.</li>\n              <li>Return the van key to the hook.</li>\n            </ul>\n            <h3>If the shop is shut</h3>\n            <p>Ring the bell at the side door. They work late on weekdays.</p>\n          </article>\n          <p class=\"ds-subhead\">Related</p>\n          <div class=\"ds-links\" data-component=\"links\">\n            <a class=\"ds-link\" href=\"#task\">Book the hall</a>\n            <a class=\"ds-link is-visited\" href=\"#task\">Write the welcome sheet</a>\n            <a class=\"ds-link is-hover\" href=\"#task\">Order sandpaper</a>\n            <a class=\"ds-link is-active\" href=\"#lists\">Open day list</a>\n          </div>\n          <p class=\"ds-subhead\">Labels</p>\n          <div class=\"ds-badges\" data-component=\"badge\">\n            <span class=\"ds-badge\">3</span>\n            <span class=\"ds-badge ds-badge--new\">New</span>\n            <span class=\"ds-badge ds-badge--success\">Started</span>\n            <span class=\"ds-badge ds-badge--warning\">Waiting</span>\n            <span class=\"ds-badge ds-badge--danger\">Overdue</span>\n            <span class=\"ds-badge ds-badge--chip\">Errand</span>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"ds-stack ds-stack--fill\">\n        <div class=\"ds-panel\" data-component=\"panel\">\n          <h3 class=\"ds-panel__title\">Who is on it</h3>\n          <div class=\"ds-panel__body\">\n            <p>Jonas has the van until five. Anouk can take over if the hall booking runs late.</p>\n            <div class=\"ds-accordion\" data-component=\"accordion\">\n              <details class=\"ds-accordion__item\">\n                <summary class=\"ds-accordion__head\">If Jonas is delayed</summary>\n                <p class=\"ds-accordion__body\">Anouk takes the van key from the hook and collects before four.</p>\n              </details>\n              <details class=\"ds-accordion__item\">\n                <summary class=\"ds-accordion__head\">Who to ring</summary>\n                <p class=\"ds-accordion__body\">The print shop desk. The number is on the receipt in the office tray.</p>\n              </details>\n              <details class=\"ds-accordion__item\">\n                <summary class=\"ds-accordion__head\">Receipts</summary>\n                <p class=\"ds-accordion__body\">Hand the receipt to the treasurer the same day.</p>\n              </details>\n            </div>\n          </div>\n          <div class=\"ds-panel__actions\">\n            <a class=\"ds-button ds-button--flat\" href=\"#new\">Reassign</a>\n            <a class=\"ds-button ds-button--flat\" href=\"#lists\">Open the list</a>\n          </div>\n        </div>\n        <div class=\"ds-sheet ds-sheet--bottom\">\n          <div class=\"ds-sheet__head\">\n            <h2 class=\"ds-sheet__title\">Notes</h2>\n            <a class=\"ds-button ds-button--flat\" href=\"#new\">Add a note</a>\n          </div>\n          <ul class=\"ds-list ds-list--open\">\n            <li class=\"ds-list__item\">\n              <span class=\"ds-list__avatar ds-list__avatar--alt\">J</span>\n              <span class=\"ds-list__body\">\n                <span class=\"ds-list__title\">Jonas Abara</span>\n                <span class=\"ds-list__text\">Shop says ready after two. Going at half past three.</span>\n              </span>\n              <span class=\"ds-list__meta\">11:40</span>\n            </li>\n            <li class=\"ds-list__item\">\n              <span class=\"ds-list__avatar ds-list__avatar--accent\">A</span>\n              <span class=\"ds-list__body\">\n                <span class=\"ds-list__title\">Anouk Verhey</span>\n                <span class=\"ds-list__text\">Library wants twelve, not ten.</span>\n              </span>\n              <span class=\"ds-list__meta\">09:15</span>\n            </li>\n            <li class=\"ds-list__item\">\n              <span class=\"ds-list__avatar\">S</span>\n              <span class=\"ds-list__body\">\n                <span class=\"ds-list__title\">Sorin Okonkwo</span>\n                <span class=\"ds-list__text\">Van key is on the hook by the lathe.</span>\n              </span>\n              <span class=\"ds-list__meta\">Mon</span>\n            </li>\n          </ul>\n        </div>\n      </div>\n\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"lists\">\n\n  <header class=\"ds-page-header\">\n    <div class=\"ds-page-header__body\">\n      <ol class=\"ds-breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#inbox\">Inbox</a></li>\n        <li class=\"ds-breadcrumb__item is-current\">Lists</li>\n      </ol>\n      <h1 class=\"ds-page-header__title\">Lists</h1>\n      <p class=\"ds-page-header__text\">Every task belongs to one list. Four are active this month.</p>\n    </div>\n    <div class=\"ds-page-header__actions\">\n      <a class=\"ds-button ds-button--secondary\" href=\"#new\">New task</a>\n    </div>\n  </header>\n\n  <div class=\"ds-main\">\n    <div class=\"ds-stack\">\n\n      <ul class=\"ds-stats\" data-component=\"stats\">\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">14</span><span class=\"ds-stat__label\">Open tasks</span></li>\n        <li class=\"ds-stat ds-stat--2\"><span class=\"ds-stat__value\">5</span><span class=\"ds-stat__label\">Due today</span></li>\n        <li class=\"ds-stat ds-stat--3\"><span class=\"ds-stat__value\">2</span><span class=\"ds-stat__label\">Overdue</span></li>\n        <li class=\"ds-stat ds-stat--4\"><span class=\"ds-stat__value\">31</span><span class=\"ds-stat__label\">Done this month</span></li>\n      </ul>\n\n      <div class=\"ds-grid\" data-component=\"grid\">\n        <a class=\"ds-grid__cell\" href=\"#inbox\">\n          <span class=\"ds-grid__media\"><span class=\"ds-grid__title\">Open day</span><span class=\"ds-grid__count\">6 open</span></span>\n          <span class=\"ds-grid__text\">Hall, posters, welcome sheet and the tea urn.</span>\n          <span class=\"ds-grid__meter\"><span class=\"ds-grid__meter-bar\"></span></span>\n        </a>\n        <a class=\"ds-grid__cell ds-grid__cell--2\" href=\"#inbox\">\n          <span class=\"ds-grid__media\"><span class=\"ds-grid__title\">Workshop</span><span class=\"ds-grid__count\">4 open</span></span>\n          <span class=\"ds-grid__text\">Tools, stock and the Thursday evening class.</span>\n          <span class=\"ds-grid__meter\"><span class=\"ds-grid__meter-bar ds-grid__meter-bar--high\"></span></span>\n        </a>\n        <a class=\"ds-grid__cell ds-grid__cell--3\" href=\"#inbox\">\n          <span class=\"ds-grid__media\"><span class=\"ds-grid__title\">Building</span><span class=\"ds-grid__count\">3 open</span></span>\n          <span class=\"ds-grid__text\">Roof gutter, first aid box and the back door lock.</span>\n          <span class=\"ds-grid__meter\"><span class=\"ds-grid__meter-bar ds-grid__meter-bar--low\"></span></span>\n        </a>\n        <a class=\"ds-grid__cell ds-grid__cell--4\" href=\"#inbox\">\n          <span class=\"ds-grid__media\"><span class=\"ds-grid__title\">Accounts</span><span class=\"ds-grid__count\">1 open</span></span>\n          <span class=\"ds-grid__text\">Receipts, the grant report and the year end.</span>\n          <span class=\"ds-grid__meter\"><span class=\"ds-grid__meter-bar ds-grid__meter-bar--high\"></span></span>\n        </a>\n      </div>\n\n      <div class=\"ds-panel\">\n        <div class=\"ds-panel__head\">\n          <h2 class=\"ds-panel__title\">Who has what</h2>\n          <a class=\"ds-button ds-button--flat\" href=\"#settings\">Manage members</a>\n        </div>\n        <table class=\"ds-table\" data-component=\"table\">\n          <thead>\n            <tr><th>Member</th><th class=\"ds-table__extra\">Main list</th><th>Next due</th><th class=\"ds-table__num\">Open</th><th class=\"ds-table__num ds-table__extra\">Overdue</th><th class=\"ds-table__num ds-table__extra\">Done this month</th></tr>\n          </thead>\n          <tbody>\n            <tr><td><a class=\"ds-link ds-link--quiet\" href=\"#inbox\">Anouk Verhey</a></td><td class=\"ds-table__extra\">Open day</td><td><span class=\"ds-badge ds-badge--warning\">Today</span></td><td class=\"ds-table__num\">5</td><td class=\"ds-table__num ds-table__extra\">0</td><td class=\"ds-table__num ds-table__extra\">11</td></tr>\n            <tr class=\"is-current\"><td><a class=\"ds-link ds-link--quiet\" href=\"#inbox\">Jonas Abara</a></td><td class=\"ds-table__extra\">Open day</td><td><span class=\"ds-badge ds-badge--danger\">Overdue</span></td><td class=\"ds-table__num\">4</td><td class=\"ds-table__num ds-table__extra\">2</td><td class=\"ds-table__num ds-table__extra\">8</td></tr>\n            <tr><td><a class=\"ds-link ds-link--quiet\" href=\"#inbox\">Sorin Okonkwo</a></td><td class=\"ds-table__extra\">Workshop</td><td><span class=\"ds-badge ds-badge--success\">Thursday</span></td><td class=\"ds-table__num\">3</td><td class=\"ds-table__num ds-table__extra\">0</td><td class=\"ds-table__num ds-table__extra\">9</td></tr>\n            <tr><td><a class=\"ds-link ds-link--quiet\" href=\"#inbox\">Leila Marchetti</a></td><td class=\"ds-table__extra\">Building</td><td><span class=\"ds-badge ds-badge--success\">Tomorrow</span></td><td class=\"ds-table__num\">2</td><td class=\"ds-table__num ds-table__extra\">0</td><td class=\"ds-table__num ds-table__extra\">3</td></tr>\n          </tbody>\n        </table>\n      </div>\n\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"new\">\n\n  <header class=\"ds-page-header\">\n    <div class=\"ds-page-header__body\">\n      <ol class=\"ds-breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#inbox\">Inbox</a></li>\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#lists\">Workshop</a></li>\n        <li class=\"ds-breadcrumb__item is-current\">New task</li>\n      </ol>\n      <h1 class=\"ds-page-header__title\">New task</h1>\n      <p class=\"ds-page-header__text\">Say what needs doing, who does it and by when.</p>\n    </div>\n  </header>\n\n  <div class=\"ds-main\">\n    <div class=\"ds-split ds-split--form\">\n\n      <div class=\"ds-panel ds-panel--pad\">\n        <div class=\"ds-panel__body\">\n          <form class=\"ds-form\" data-component=\"form\">\n            <label class=\"ds-form__field\">\n              <span class=\"ds-form__label\">Task</span>\n              <input class=\"ds-form__control\" type=\"text\" value=\"Oil the bench vices\">\n            </label>\n            <div class=\"ds-form__row\">\n              <label class=\"ds-form__field\">\n                <span class=\"ds-form__label\">List</span>\n                <span class=\"ds-form__select\">\n                  <select class=\"ds-form__control\">\n                    <option>Workshop</option>\n                    <option>Open day</option>\n                    <option>Building</option>\n                    <option>Accounts</option>\n                  </select>\n                </span>\n              </label>\n              <label class=\"ds-form__field is-invalid\">\n                <span class=\"ds-form__label\">Due</span>\n                <input class=\"ds-form__control\" type=\"text\" value=\"31 June\">\n                <span class=\"ds-form__error\">June has 30 days. Pick another date.</span>\n              </label>\n            </div>\n            <label class=\"ds-form__field\">\n              <span class=\"ds-form__label\">Notes</span>\n              <textarea class=\"ds-form__control ds-form__control--area\">All six, front and tail. The oil can is on the shelf above the grinder.</textarea>\n              <span class=\"ds-form__hint\">Plain text. Others on the list can read this.</span>\n            </label>\n            <label class=\"ds-form__check\">\n              <input class=\"ds-form__checkbox\" type=\"checkbox\" checked>\n              <span>Remind me the day before</span>\n            </label>\n          </form>\n        </div>\n        <div class=\"ds-panel__actions ds-panel__actions--end ds-buttons\" data-component=\"buttons\">\n          <button class=\"ds-button ds-button--danger\" type=\"button\">Delete</button>\n          <button class=\"ds-button ds-button--secondary\" type=\"button\">Save as draft</button>\n          <button class=\"ds-button is-disabled\" type=\"button\" disabled>Assign</button>\n          <a class=\"ds-button\" href=\"#inbox\">Add task</a>\n        </div>\n      </div>\n\n      <div class=\"ds-stack ds-stack--fill\">\n        <div class=\"ds-notices\" data-component=\"notice\">\n          <div class=\"ds-notice\">\n            <div class=\"ds-notice__body\">\n              <strong class=\"ds-notice__title\">Sorin is away next week</strong>\n              Tasks you assign to him will wait until the 14th.\n            </div>\n          </div>\n          <div class=\"ds-notice ds-notice--error\">\n            <div class=\"ds-notice__body\">\n              <strong class=\"ds-notice__title\">The task was not saved</strong>\n              The due date is not a real date.\n            </div>\n          </div>\n        </div>\n        <div class=\"ds-overlay\">\n          <div class=\"ds-dialog\" role=\"dialog\" aria-labelledby=\"dialog-title\" data-component=\"dialog\">\n            <h3 class=\"ds-dialog__title\" id=\"dialog-title\">Delete this task?</h3>\n            <div class=\"ds-dialog__body\">\n              <p>Its notes and steps go with it. Others on the list will no longer see it.</p>\n            </div>\n            <div class=\"ds-dialog__actions\">\n              <a class=\"ds-button ds-button--flat\" href=\"#new\">Keep it</a>\n              <a class=\"ds-button ds-button--flat ds-button--danger\" href=\"#inbox\">Delete</a>\n            </div>\n          </div>\n        </div>\n      </div>\n\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"settings\">\n\n  <header class=\"ds-page-header\">\n    <div class=\"ds-page-header__body\">\n      <ol class=\"ds-breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#inbox\">Inbox</a></li>\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#settings\">Settings</a></li>\n        <li class=\"ds-breadcrumb__item is-current\">Reminders</li>\n      </ol>\n      <h1 class=\"ds-page-header__title\">Settings</h1>\n      <p class=\"ds-page-header__text\">How and when chronoskin tells you about your tasks.</p>\n    </div>\n  </header>\n\n  <div class=\"ds-main\">\n    <div class=\"ds-split ds-split--settings ds-split--start\">\n\n      <nav class=\"ds-sidebar\" data-component=\"sidebar\">\n        <h2 class=\"ds-sidebar__title\">Settings</h2>\n        <ul class=\"ds-sidebar__list\">\n          <li><a class=\"ds-sidebar__link is-current\" href=\"#settings\">Reminders</a></li>\n          <li><a class=\"ds-sidebar__link\" href=\"#settings\">Account</a></li>\n          <li><a class=\"ds-sidebar__link\" href=\"#settings\">Members <span class=\"ds-badge\">4</span></a></li>\n          <li><a class=\"ds-sidebar__link\" href=\"#settings\">Calendars</a></li>\n        </ul>\n        <h2 class=\"ds-sidebar__title\">Go to</h2>\n        <ul class=\"ds-sidebar__list\">\n          <li><a class=\"ds-sidebar__link\" href=\"#inbox\">Inbox</a></li>\n          <li><a class=\"ds-sidebar__link\" href=\"#lists\">Lists</a></li>\n        </ul>\n      </nav>\n\n      <div class=\"ds-stack\">\n        <div class=\"ds-panel\">\n          <div class=\"ds-panel__head\">\n            <h2 class=\"ds-panel__title\">Reminders</h2>\n          </div>\n          <ul class=\"ds-settings\">\n            <li class=\"ds-settings__item\">\n              <span class=\"ds-settings__body\"><span class=\"ds-settings__title\">Morning summary</span><span class=\"ds-settings__text\">One message at eight with the tasks due that day.</span></span>\n              <label class=\"ds-switch\"><input class=\"ds-switch__input\" type=\"checkbox\" checked aria-label=\"Morning summary\"><span class=\"ds-switch__track\"></span></label>\n            </li>\n            <li class=\"ds-settings__item\">\n              <span class=\"ds-settings__body\"><span class=\"ds-settings__title\">Day before</span><span class=\"ds-settings__text\">A reminder at six in the evening for tomorrow's tasks.</span></span>\n              <label class=\"ds-switch\"><input class=\"ds-switch__input\" type=\"checkbox\" checked aria-label=\"Day before\"><span class=\"ds-switch__track\"></span></label>\n            </li>\n            <li class=\"ds-settings__item\">\n              <span class=\"ds-settings__body\"><span class=\"ds-settings__title\">When someone adds a note</span><span class=\"ds-settings__text\">Only for tasks assigned to you.</span></span>\n              <label class=\"ds-switch\"><input class=\"ds-switch__input\" type=\"checkbox\" aria-label=\"When someone adds a note\"><span class=\"ds-switch__track\"></span></label>\n            </li>\n            <li class=\"ds-settings__item\">\n              <span class=\"ds-settings__body\"><span class=\"ds-settings__title\">Quiet at weekends</span><span class=\"ds-settings__text\">Hold everything from Friday evening to Monday morning.</span></span>\n              <label class=\"ds-switch\"><input class=\"ds-switch__input\" type=\"checkbox\" aria-label=\"Quiet at weekends\"><span class=\"ds-switch__track\"></span></label>\n            </li>\n          </ul>\n          <div class=\"ds-panel__actions ds-panel__actions--end\">\n            <a class=\"ds-button ds-button--flat\" href=\"#settings\">Reset</a>\n            <a class=\"ds-button\" href=\"#inbox\">Save</a>\n          </div>\n        </div>\n        <div class=\"ds-panel\">\n          <div class=\"ds-panel__head\">\n            <h2 class=\"ds-panel__title\">Calendars</h2>\n          </div>\n          <div class=\"ds-empty\" data-component=\"empty\">\n            <span class=\"ds-empty__mark\">\n              <svg class=\"ds-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 6h14v13H5zM5 10h14M9 4v4M15 4v4\" stroke=\"currentColor\" fill=\"none\"/></svg>\n            </span>\n            <h3 class=\"ds-empty__title\">No calendar connected</h3>\n            <p class=\"ds-empty__text\">Connect one and due dates appear beside your appointments.</p>\n            <a class=\"ds-button ds-button--flat\" href=\"#settings\">Connect a calendar</a>\n          </div>\n        </div>\n      </div>\n\n    </div>\n  </div>\n</section>\n\n<footer class=\"ds-footer\" data-component=\"footer\">\n  <ul class=\"ds-footer__list\">\n    <li><a class=\"ds-footer__link\" href=\"#inbox\">Inbox</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#lists\">Lists</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#new\">New task</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#settings\">Settings</a></li>\n  </ul>\n  <p class=\"ds-footer__legal\">chronoskin is a sample task list for a small workshop.</p>\n</footer>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.material-design.app.s06.p03.t04.u03\",\n  \"library\": \"2026.10.09-1036\",\n  \"era\": {\n    \"slug\": \"material-design\",\n    \"years\": [\n      2014,\n      2018\n    ]\n  },\n  \"archetype\": \"app\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1440,\n    \"fluid\": true,\n    \"responsive\": true\n  },\n  \"source\": \"https://chrono.skin/s/v1-md-6343\",\n  \"short\": \"v1-md-6343\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #f3f3f3;\n  --color-canvas: #f3f3f3;\n  --color-surface: #ffffff;\n  --color-surface-alt: #fafafa;\n  --color-surface-strong: #e3e3e3;\n  --color-bar: #80cbc4;\n  --color-bar-text: #212121;\n  --color-bar-alt: #455a64;\n  --color-bar-alt-text: #ffffff;\n  --color-inverse: #455a64;\n  --color-inverse-text: #ffffff;\n  --color-text: #212121;\n  --color-text-muted: #757575;\n  --color-heading: #212121;\n  --color-heading-alt: #444444;\n  --color-link: #46873b;\n  --color-link-quiet: #212121;\n  --color-link-visited: #46873b;\n  --color-link-hover: #46873b;\n  --color-link-active: #455a64;\n  --color-border: #dcdcdc;\n  --color-border-strong: #757575;\n  --color-border-muted: #ebebec;\n  --color-accent: #64ffda;\n  --color-accent-text: #212121;\n  --color-accent-alt: #455a64;\n  --color-fill-1: #80cbc4;\n  --color-fill-2: #64ffda;\n  --color-fill-3: #6ab344;\n  --color-fill-4: #455a64;\n  --color-button: #46873b;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #ffffff;\n  --color-button-secondary-text: #212121;\n  --color-input: #ffffff;\n  --color-input-text: #212121;\n  --color-input-border: #757575;\n  --color-disabled: #e3e3e3;\n  --color-disabled-text: #767777;\n  --color-danger: #c2185b;\n  --color-danger-surface: #ffffff;\n  --color-success: #46873b;\n  --color-warning: #ffc400;\n  --color-notice: #e3e3e3;\n  --color-notice-text: #212121;\n  --color-focus: #46873b;\n  --color-shadow: #000000;\n  --color-overlay: rgb(0 0 0 / 0.4);\n}\n\n/* @part type */\n:root {\n  --font-body: Roboto, Arial, Tahoma, sans-serif;\n  --font-heading: Roboto, Arial, Tahoma, sans-serif;\n  --font-ui: Roboto, Arial, Tahoma, sans-serif;\n  --font-mono: \"Roboto Mono\", Menlo, Consolas, \"Liberation Mono\", monospace;\n  --text-base: 14px;\n  --text-small: 12px;\n  --text-ui: 14px;\n  --text-large: 18px;\n  --text-display: 34px;\n  --text-h1: 24px;\n  --text-h2: 20px;\n  --text-h3: 16px;\n  --line-body: 1.43;\n  --line-heading: 1.3;\n  --line-display: 1.2;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 400;\n  --weight-display: 300;\n  --weight-ui: 500;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: uppercase;\n  --link-decoration: none;\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: 3px;\n  --border-style: solid;\n  --radius-control: 2px;\n  --radius-panel: 2px;\n  --radius-pill: 2px;\n  --radius-page: 2px;\n  --shadow-panel: 0 2px 4px -1px color-mix(in srgb, var(--color-shadow) 20%, transparent), 0 4px 5px 0 color-mix(in srgb, var(--color-shadow) 14%, transparent), 0 1px 10px 0 color-mix(in srgb, var(--color-shadow) 12%, transparent);\n  --shadow-control: 0 3px 5px -1px color-mix(in srgb, var(--color-shadow) 20%, transparent), 0 6px 10px 0 color-mix(in srgb, var(--color-shadow) 14%, transparent), 0 1px 14px 0 color-mix(in srgb, var(--color-shadow) 12%, transparent);\n  --shadow-control-hover: 0 5px 5px -3px color-mix(in srgb, var(--color-shadow) 20%, transparent), 0 8px 10px 1px color-mix(in srgb, var(--color-shadow) 14%, transparent), 0 3px 14px 2px color-mix(in srgb, var(--color-shadow) 12%, transparent);\n  --shadow-control-pressed: 0 2px 4px -1px color-mix(in srgb, var(--color-shadow) 20%, transparent), 0 4px 5px 0 color-mix(in srgb, var(--color-shadow) 14%, transparent);\n  --shadow-dialog: 0 7px 8px -4px color-mix(in srgb, var(--color-shadow) 22%, transparent), 0 12px 14px 2px color-mix(in srgb, var(--color-shadow) 16%, transparent);\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: var(--color-bar);\n  --fill-bar-alt: var(--color-bar-alt);\n  --fill-inverse: var(--color-inverse);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-surface);\n  --fill-button: var(--color-button);\n  --fill-button-hover: color-mix(in srgb, var(--color-button) 88%, black);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: transparent;\n  --focus-ring: 3px solid var(--color-focus);\n  --transition: box-shadow 0.15s cubic-bezier(0, 0, 0.2, 1), background-color 0.15s cubic-bezier(0, 0, 0.2, 1), color 0.15s cubic-bezier(0, 0, 0.2, 1);\n  --backdrop-blur: 0px;\n}\n"
  }
}
