{
  "id": "v1-md-1bb2",
  "long_id": "v1.material-design.docs.s01.p11.t11.u02",
  "name": "Material paper docs, 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": "docs",
  "mode": "mix",
  "viewport": {
    "width": 1440,
    "fluid": true,
    "responsive": true
  },
  "summary": "A documentation page built from flat sheets of \"paper\": a full-width blue-grey bar that runs into the page header, a white navigation drawer, and white cards that float on a `#fafafa` page with small, soft, two- or three-layer shadows. Text is one humanist grotesque (Roboto) at 16px on a 24px line, labels and buttons are 14px medium capitals, corners are 2px, and colour comes from one saturated primary (cyan), one accent (amber) and solid block fills instead of gradients or borders. The look was standard on developer documentation, component libraries and product sites that followed the 2014 paper-and-ink guidelines, until about 2018.",
  "url": "https://chrono.skin/s/v1-md-1bb2",
  "preview_url": "https://chrono.skin/s/v1-md-1bb2/specimen.html",
  "files": {
    "STYLE.md": "# Material paper docs, 2016\n\n## Summary\n\nA documentation page built from flat sheets of \"paper\": a full-width blue-grey bar that runs into the page header, a white navigation drawer, and white cards that float on a `#fafafa` page with small, soft, two- or three-layer shadows. Text is one humanist grotesque (Roboto) at 16px on a 24px line, labels and buttons are 14px medium capitals, corners are 2px, and colour comes from one saturated primary (cyan), one accent (amber) and solid block fills instead of gradients or borders. The look was standard on developer documentation, component libraries and product sites that followed the 2014 paper-and-ink guidelines, until about 2018.\n\n## Layout\n\n- The page is fluid: `--size-page` is `100%`; the bar, the header band and the footer span the window. Designed at 1440px. The drawer plus the content column are capped at `--size-content` (1160px); running text is capped at `--size-measure` (720px).\n- Order: `.ds-nav` (one bar, `--size-bar` 64px), `.ds-hero` (same colour as the bar, no seam between them, title aligned with the content column), then `.ds-layout`: a `.ds-sidebar` drawer on the left (`--size-sidebar` 200px, white, shadowed) and `.ds-main`, then `.ds-footer`.\n- Inside `.ds-main` the page is a stack of `.ds-section` blocks. Sections are separated by a `--border-width` rule in `--color-border` and `--space-6` of padding above and below the rule; they are not boxed. Only data (tables, lists, forms, cards) sits on white sheets.\n- Everything is on an 8px grid. `--space-1` 4px (text to helper text, pagination gap), `--space-2` 8px (gap between cards in a grid, between flat buttons, card action padding), `--space-3` 16px (button side padding, paragraph gap, list row padding, card text padding), `--space-4` 24px (panel and dialog padding, table cell side padding, bar side padding, field gap), `--space-5` 32px (heading top margin, footer column gap), `--space-6` 48px (section padding, drawer to content), `--space-7` 64px (bottom of the header band), `--space-8` 80px (bottom of the page).\n- Heights: bar `--size-bar` 64px; table rows and tabs `--size-row` 48px; drawer links and avatars `--size-row-dense` 40px; buttons and text fields `--size-control` 36px; floating action button `--size-fab` 56px; two-line list rows 72px (`--size-row` + `--space-4`).\n- Other sizes: `--size-icon` 24px, `--size-check` 18px, `--size-badge` 22px, `--size-stripe` 4px (left stripe of a notice), `--size-media` 136px (colour block of a grid card), `--size-dialog` 440px, `--size-area` 96px (textarea).\n- Inner pages (guide, reference, an edit screen, saved pages) have no `.ds-hero`. The `.ds-nav` bar stays and gains the sheet shadow the header band otherwise carries (`.ds-nav--inner` on a separate page; the specimen sets it for every view but the home view). Below it the same two columns remain: the `.ds-sidebar` drawer on the left and `.ds-main`. `.ds-main` opens with `.ds-breadcrumb`, then `.ds-page-header` directly on the page (34px title, one grey line, raised buttons at the right, `--space-3` above and `--space-4` below), then `.ds-tabs` immediately under it so the tab hairline is the header's rule. Under the tabs come the white sheets, `--space-4` apart: `.ds-stats`, then `.ds-table`. An edit screen puts `.ds-columns` under the page header: the form on a `.ds-panel--form` sheet on the left, a `.ds-stack` of secondary cards on the right. A guide page is `.ds-prose` in a `.ds-section`, with its notices, a \"see also\" row of links and the pagination below.\n- Views: the specimen is one site with five views. `overview` is the home view: header band, drawer, the grid of topic cards and the updates list beside a card and a notice. `guide` is a long-form guide page with prose, notices, related links and pagination. `reference` is a reference page: breadcrumb, page header, tabs, the stat sheet, the table and its status key. `edit` is the form for one table row, with the page actions in the page header and the confirmation dialog beside the form. `saved` is the reader's saved pages, shown empty, above a list of recently viewed pages.\n- Below 900px the drawer becomes one scrolling row of links above the content, the floating button moves up to sit inside the header band, `--space-3` above its bottom edge, so it does not cover the row of links, grids and the footer go to two columns, `.ds-columns` to one and the page header stacks. Below 600px the bar (`.ds-nav`) wraps into a brand row and a row of `.ds-nav__links` with tighter link padding, the account menu `.ds-menu--account` is pinned at the right of the brand row with its name (`.ds-menu__label`) hidden, the current link keeps `.is-current`, the tabs scroll sideways, cards and stats stack, and table cells marked `.ds-table__extra` are hidden so the table fits a phone.\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, Roboto, then Segoe UI and Helvetica Neue; `--font-mono` for code only.\n- Large light headings over small text: `--text-display` 56px on `--line-display` 1.1, `--text-h1` 34px, `--text-h2` 26px, all at weight 300; `--text-h3` 18px at `--weight-bold` 500. `--line-heading` 1.3.\n- `--text-base` 15px on a 24px line (`--line-body` 1.6) at weight 400; `--text-large` 20px for the lead; `--text-small` and `--text-ui` are both 13px.\n- `--ui-transform` uppercase at `--weight-ui` 500 for buttons, tabs and navigation; no tracking.\n- Links have no underline at rest and gain one on hover (`--link-decoration-hover`); quiet links never do.\n\n- White page: `--color-page`, `--color-canvas` and `--color-surface` are all `#ffffff`; a sheet is told from the page by its shadow alone. `--color-surface-alt` `#f5f5f5`, `--color-surface-strong` `#e0e0e0`.\n- `--color-bar` coral `#ee6e73` with white text: the navigation bar and header band. `--color-bar-alt` is the lighter coral `#e57373`; `--color-inverse` blue-grey `#78909c` with white text is the footer and any inverted block.\n- Teal `#26a69a` is the colour of action: `--color-button` with white text and `--color-focus`. Links are light blue `#039be5`, hover `#2196f3`, active `#1867c0`; visited links keep the link colour.\n- `--color-accent` amber `#ffb731` with `#212121` text: floating button, indicators, count badges. `--color-accent-alt` is pink `#ff4081`.\n- Text and headings are black at 87%, secondary text `#616161`; `--color-heading-alt` is coral, so section and panel titles pick up the bar colour.\n- Block fills: coral `#ee6e73`, teal `#26a69a` and blue-grey `#78909c` carry white text, amber `#ffb731` carries `#212121`.\n- Dividers are black at 14% (`--color-border`) and `#eeeeee` (`--color-border-muted`). `--color-danger` red `#f44336`, `--color-success` deep teal `#009688`, `--color-warning` amber; the notice is `#f5f5f5` with dark text.\n\n## Components\n\n- `.ds-page` on `<body>`: `#fafafa` page, family, 16px/1.5 text.\n- `.ds-nav`: the 64px bar. `.ds-brand` sits at its left; `.ds-nav__links` > `.ds-nav__item` > `.ds-nav__link` are uppercase 14px links at 70% white; `is-current` is full white with a 2px line in `--color-bar-text` on the bar's bottom edge. `.ds-nav__links--end` holds right-hand links. `.ds-nav--inner` adds the sheet shadow on pages without a header band.\n- `.ds-brand`: the site's mark and name at the left of the toolbar, one link. `.ds-brand__mark` is a `--size-brand` (28px) 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 a palette's button and bar colours are close, holding the mark as inline SVG in the current colour; `.ds-brand__name` is the name at `--text-large` in the heading font with `--weight-heading`, `--heading-tracking` and `--heading-transform`, in `--color-bar-text` because the bar is filled with `--fill-bar`. The name `chronoskin` and its mark are placeholders for the installing project's own name and logo.\n- `.ds-hero`: header band in the bar colour. `.ds-hero__title` (56px), `.ds-hero__lead` (20px), one raised `.ds-button--secondary`, and optionally `.ds-hero__fab`, a floating button that straddles the band's bottom edge.\n- `.ds-page-header`: the head of an inner page, unboxed on the page. `.ds-page-header__body` holds `.ds-page-header__title` (34px regular, like the prose h1) and `.ds-page-header__text` (one 16px grey line); `.ds-page-header__actions` sits at the right, bottom-aligned, with one raised `.ds-button`. Never give it a fill or a rule; put `.ds-tabs` or the first sheet under it.\n- `.ds-layout`, `.ds-main`: drawer and content side by side. `.ds-section` is one ruled block of the content (`--first`, `--last`), `.ds-section__title` its 24px grey heading, `.ds-section__label` a small uppercase caption. `.ds-columns` puts two blocks side by side; `.ds-stack` piles several cards `--space-4` apart in one of the two columns, so a short column can be filled to the height of its neighbour.\n- `.ds-prose`: long-form text; styles h1 to h3, paragraphs, lists, `strong`, inline `code`, `pre` and links. `.ds-prose__lead` is the 20px opening paragraph.\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 cyan button, 36px tall, uppercase. `--secondary` is raised white, `--flat` has no fill or shadow and cyan text (use it inside cards, dialogs and empty states), `--fab` is the 56px amber disc holding one `.ds-icon`, `--danger` is a raised button filled with `--color-danger` and white text for a destructive action (delete, remove); `--flat` together with `--danger` is the flat form with danger-coloured text, for cards and dialogs. 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 on a white sheet. `.ds-form__field` wraps a small `.ds-form__label` above a `.ds-form__control`, which has no box, only a bottom line on `--fill-input` (transparent here), with its top corners at `--radius-control` and a side inset of twice that radius, so a surface set that fills its fields gets a rounded, inset field (`--area` for a textarea, wrapped in `.ds-form__select` for a select). `is-focus` thickens the line in cyan; `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 the buttons.\n- `.ds-table`: a white shadowed sheet with 48px rows divided by hairlines; small grey medium-weight 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`: a white sheet of two-line rows. `.ds-list__item` holds an optional `.ds-list__avatar` disc (`--alt`, `--accent`), `.ds-list__body` with `.ds-list__title` and `.ds-list__text`, and `.ds-list__meta` on the right.\n- `.ds-panel`: a card with `.ds-panel__title`, `.ds-panel__body` and optional `.ds-panel__actions` of flat buttons; `--form` holds a form.\n- `.ds-stat`: one summary figure. Three or more sit in a `.ds-stats` row, which is a single white shadowed sheet; the figures share it and are divided by vertical hairlines, not separate cards. `.ds-stat__value` is the number (34px regular, tabular figures) and `.ds-stat__label` the small grey medium-weight caption under it, in sentence case.\n- `.ds-grid`: four cards 8px apart. Each `.ds-grid__cell` (`--2`, `--3`, `--4` pick the fill) has a solid `.ds-grid__media` block carrying the title, a `.ds-grid__text` and `.ds-grid__actions`.\n- `.ds-tabs`: a hairline-ruled row of uppercase `.ds-tabs__tab`; `is-current` is dark with a 2px line in `--color-link`.\n- `.ds-badge`: amber count pill; `--new` is pink, `--chip` is a 32px grey chip. Status labels are the same 22px pill with a flat fill: `--success` green with white text (stable, paid, online), `--warning` orange with dark text (draft, pending, due soon), `--danger` in the danger colour with white text (removed, failed, overdue). Use them in table cells and list meta; keep the label to one or two words in sentence case. Group with `.ds-badges`.\n- `.ds-sidebar`: the drawer. `.ds-sidebar__title` is a small uppercase heading, `.ds-sidebar__list` a group of 40px `.ds-sidebar__link` rows; `is-current` is cyan on a tint.\n- `.ds-notice`: tinted block with a 4px left stripe and a `.ds-notice__title`; `--error` is a white sheet with the stripe and text in the danger colour. Group with `.ds-notices`.\n- `.ds-pagination`: a row of round `.ds-pagination__link`; `is-current` is a filled cyan disc, `is-disabled` is grey; previous and next are chevron icons.\n- `.ds-breadcrumb`: 13px grey trail of `.ds-breadcrumb__item` with `.ds-breadcrumb__link`, separated by drawn chevrons; the last carries `is-current`.\n- `.ds-dialog`: a white 2px-cornered sheet with the deepest shadow, `.ds-dialog__title`, `.ds-dialog__body` and right-aligned flat buttons in `.ds-dialog__actions`. No title bar and no close cross. Sits on `.ds-overlay`.\n- `.ds-empty`: centred `.ds-empty__mark` disc, `.ds-empty__title`, `.ds-empty__text` and one flat button, directly on the page with no box.\n- `.ds-footer`: dark grey band, four `.ds-footer__col` each topped by a faint rule, with `.ds-footer__title`, `.ds-footer__list`, `.ds-footer__link` and a `.ds-footer__legal` line.\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-switch`: an on-off setting that takes effect at once: a `<span>` or `<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. Keep the checkbox for choices that are saved with a form.\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 = 0px`: table and list rows touch and are divided by hairlines.\n- `block-gap <= 96px`: sections are at most two 48px paddings apart.\n- `content-width <= 81%`: drawer and content together stop at 1160px of a 1440px window.\n- `font-weight >= 300`: light, never thin.\n- `font-weight <= 500`: emphasis is medium, never bold.\n- `font-size >= 13px`: captions are the smallest text.\n- `font-size <= 56px`: the header band title is the largest text.\n- `letter-spacing = 0px`: no tracking.\n- `font-families <= 2`: one sans-serif plus the mono for code.\n- `gradient-fills = 0%`: every fill is one flat colour.\n- `text-shadow = none`: no text has a shadow.\n- `border-radius <= 16px`: 4px on sheets and controls, 16px on tags; nothing rounder except discs.\n- `box-shadow-blur <= 14px`: outlines and one tight lift; only the dialog reaches 14px.\n- `border-width <= 4px`: 1px dividers, 2px indicators, the 4px notice stripe.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen: anything that holds data is a white sheet like `.ds-panel` with `--radius-panel` and `--shadow-panel`; anything pressed is a `.ds-button` variant; a new strip is the bar or the footer; a new chip is a `.ds-badge--chip`. Use tokens only. Pick heights and gaps from the `--size-*` and `--space-*` scale so everything stays on the 8px grid, raise a sheet by moving to the next shadow token instead of adding a border, and colour a block with one flat `--color-fill-*` and the text colour that belongs to it. Never add a gradient, an outline around a card, an underline, a weight above 500 or a radius between 2px and a full disc.\n",
    "components.css": ":root {\n  --size-page: 100%;\n  --size-menu: 208px;\n  --size-switch: 36px;\n  --size-switch-track: 14px;\n  --size-switch-knob: 20px;\n  --size-progress: 4px;\n  --size-ring: 32px;\n  --size-brand: 28px;\n  --size-content: 1160px;\n  --size-sidebar: 200px;\n  --size-measure: 720px;\n  --size-bar: 64px;\n  --size-row: 48px;\n  --size-row-dense: 40px;\n  --size-control: 36px;\n  --size-fab: 56px;\n  --size-icon: 24px;\n  --size-check: 18px;\n  --size-badge: 22px;\n  --size-stripe: 4px;\n  --size-media: 136px;\n  --size-dialog: 440px;\n  --size-area: 96px;\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/* switch: an on-off setting drawn over a checkbox */\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-switch-knob);\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-switch-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-switch-knob);\n  height: var(--size-switch-knob);\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-switch-knob));\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\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.ds-progress--ring {\n  width: var(--size-ring);\n  height: var(--size-ring);\n  border: var(--border-width-strong) var(--border-style) color-mix(in srgb, var(--color-button) 30%, transparent);\n  border-top-color: var(--color-button);\n  border-right-color: var(--color-button);\n  border-radius: 50%;\n  background: transparent;\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  display: flex;\n  align-items: stretch;\n  height: var(--size-bar);\n  padding: 0 var(--space-4);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  text-shadow: var(--shadow-text);\n}\n.ds-brand {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin-right: var(--space-6);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\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  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-nav__links--end { flex: none; }\n.ds-nav__item { display: flex; }\n.ds-nav__link {\n  display: flex;\n  align-items: center;\n  padding: 0 var(--space-3);\n  border-bottom: var(--border-width-strong) var(--border-style) transparent;\n  border-top: 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  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  color: var(--color-bar-text);\n  border-bottom-color: var(--color-bar-text);\n}\n\n.ds-nav--inner,\n.ds-page:has(.ds-view:target:not(.ds-view--home)) .ds-nav {\n  position: relative;\n  z-index: 1;\n  box-shadow: var(--shadow-panel);\n}\n\n/* hero */\n.ds-hero {\n  position: relative;\n  padding: var(--space-6) var(--space-4) var(--space-7) calc(var(--size-sidebar) + var(--space-6));\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  box-shadow: var(--shadow-panel);\n}\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}\n.ds-hero__lead {\n  max-width: var(--size-measure);\n  margin: var(--space-2) 0 var(--space-4);\n  color: color-mix(in srgb, var(--color-bar-text) 87%, transparent);\n  font-size: var(--text-large);\n  line-height: 1.6;\n}\n.ds-hero__fab {\n  position: absolute;\n  right: var(--space-6);\n  bottom: calc(var(--size-fab) / -2);\n}\n\n/* page header */\n.ds-page-header {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-4);\n  padding: var(--space-3) 0 var(--space-4);\n}\n.ds-page-header__body { flex: 1 1 0; min-width: 0; }\n.ds-page-header__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: 1.18;\n  text-transform: var(--heading-transform);\n  letter-spacing: var(--heading-tracking);\n}\n.ds-page-header__text {\n  max-width: var(--size-measure);\n  margin: var(--space-1) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-base);\n}\n.ds-page-header__actions {\n  display: flex;\n  flex: none;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n}\n\n/* layout */\n.ds-layout {\n  display: flex;\n  align-items: stretch;\n}\n.ds-main {\n  flex: 1 1 0;\n  min-width: 0;\n  max-width: calc(var(--size-content) - var(--size-sidebar));\n  padding: var(--space-5) var(--space-6) var(--space-8);\n}\n.ds-section {\n  padding: var(--space-6) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-section--first { padding-top: var(--space-4); }\n.ds-section--last { border-bottom: 0; }\n.ds-section__title {\n  margin: 0 0 var(--space-4);\n  color: var(--color-heading-alt);\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  text-transform: var(--heading-transform);\n  letter-spacing: var(--heading-tracking);\n}\n.ds-section__label {\n  margin: var(--space-4) 0 var(--space-3);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  text-transform: var(--ui-transform);\n}\n.ds-columns {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: var(--space-4);\n  align-items: start;\n}\n.ds-stack {\n  display: grid;\n  gap: var(--space-4);\n  align-content: start;\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__lead {\n  color: var(--color-text);\n  font-size: var(--text-large);\n  line-height: 1.6;\n}\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/* list */\n.ds-list {\n  margin: 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-panel);\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-4));\n  padding: var(--space-2) var(--space-3);\n}\n.ds-list__item + .ds-list__item { border-top: var(--border-width) var(--border-style) var(--color-border-muted); }\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-weight: var(--weight-bold);\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__body { flex: 1 1 0; min-width: 0; }\n.ds-list__title {\n  display: block;\n  color: var(--color-link-quiet);\n  font-size: var(--text-base);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-list__title:hover { color: var(--color-link-hover); }\n.ds-list__text {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n  line-height: 1.43;\n}\n.ds-list__meta {\n  flex: none;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* panel */\n.ds-panel {\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__title {\n  margin: 0;\n  padding: var(--space-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.2;\n}\n.ds-panel__body {\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  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--form .ds-panel__body { color: var(--color-text); padding-top: var(--space-4); }\n\n/* stats */\n.ds-stats {\n  display: flex;\n  margin: 0 0 var(--space-4);\n  padding: 0;\n  list-style: none;\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-stat {\n  flex: 1 1 0;\n  min-width: 0;\n  padding: var(--space-3) var(--space-4);\n}\n.ds-stat + .ds-stat { border-left: var(--border-width) var(--border-style) var(--color-border); }\n.ds-stat__value {\n  display: block;\n  color: var(--color-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: 1.18;\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  font-weight: var(--weight-bold);\n  line-height: var(--line-body);\n}\n\n/* grid */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: var(--space-2);\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}\n.ds-grid__media {\n  display: flex;\n  align-items: flex-end;\n  height: var(--size-media);\n  padding: var(--space-3);\n  background: var(--color-fill-1);\n  color: var(--color-bar-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: 1.3;\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); }\n.ds-grid__cell--4 .ds-grid__media { background: var(--color-fill-4); color: var(--color-inverse-text); }\n.ds-grid__text {\n  flex: 1 1 auto;\n  margin: 0;\n  padding: var(--space-3);\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n  line-height: 1.43;\n}\n.ds-grid__actions { padding: 0 var(--space-2) var(--space-2); }\n\n/* tabs */\n.ds-tabs {\n  display: flex;\n  margin: 0 0 var(--space-4);\n  padding: 0;\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  height: var(--size-row);\n  padding: 0 var(--space-4);\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  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/* 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/* sidebar */\n.ds-sidebar {\n  flex: none;\n  width: var(--size-sidebar);\n  padding: var(--space-3) 0 var(--space-6);\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-3) var(--space-4) var(--space-2);\n  color: var(--color-heading-alt);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-body);\n  text-transform: var(--ui-transform);\n}\n.ds-sidebar__list {\n  margin: 0 0 var(--space-2);\n  padding: 0 0 var(--space-2);\n  list-style: none;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-sidebar__list:last-child { border-bottom: 0; }\n.ds-sidebar__link {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  height: var(--size-row-dense);\n  padding: 0 var(--space-4);\n  color: color-mix(in srgb, var(--color-link-quiet) 66%, transparent);\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  color: var(--color-link);\n  font-weight: var(--weight-bold);\n  background: var(--color-surface-alt);\n}\n\n/* notice */\n.ds-notices {\n  display: grid;\n  gap: var(--space-3);\n  max-width: var(--size-measure);\n}\n.ds-notice {\n  padding: var(--space-3) var(--space-4);\n  border-left: var(--size-stripe) var(--border-style) var(--color-link);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  font-size: var(--text-ui);\n  line-height: 1.43;\n}\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-left-color: var(--color-danger);\n  background: var(--color-danger-surface);\n  box-shadow: var(--shadow-panel);\n  color: var(--color-danger);\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/* footer */\n.ds-footer {\n  padding: var(--space-5) var(--space-6) var(--space-4);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-size: var(--text-small);\n}\n.ds-footer__cols {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: var(--space-5);\n}\n.ds-footer__col {\n  padding-top: var(--space-2);\n  border-top: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-inverse-text) 40%, transparent);\n}\n.ds-footer__title {\n  margin: 0 0 var(--space-3);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-body);\n}\n.ds-footer__list { margin: 0; padding: 0; list-style: none; }\n.ds-footer__link {\n  display: block;\n  color: color-mix(in srgb, var(--color-inverse-text) 70%, transparent);\n  line-height: 1.85;\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: var(--space-5) 0 0;\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=\"#overview\"],\n.ds-page:has(#overview:target) .ds-nav__link[href=\"#overview\"],\n.ds-page:has(#guide:target) .ds-nav__link[href=\"#guide\"],\n.ds-page:has(#reference:target) .ds-nav__link[href=\"#reference\"],\n.ds-page:has(#edit:target) .ds-nav__link[href=\"#reference\"],\n.ds-page:has(#saved:target) .ds-nav__link[href=\"#saved\"] {\n  color: var(--color-bar-text);\n  border-bottom-color: var(--color-bar-text);\n}\n\n@media (max-width: 900px) {\n  .ds-layout { flex-direction: column; }\n  .ds-sidebar {\n    display: flex;\n    width: 100%;\n    padding: 0 var(--space-2);\n    overflow: auto;\n  }\n  .ds-sidebar__title { display: none; }\n  .ds-sidebar__list {\n    display: flex;\n    margin: 0;\n    padding: 0;\n    border-bottom: 0;\n  }\n  .ds-sidebar__link {\n    height: var(--size-row);\n    padding: 0 var(--space-3);\n    gap: var(--space-2);\n    white-space: nowrap;\n  }\n  .ds-hero { padding-left: var(--space-4); }\n  .ds-hero__fab { bottom: var(--space-3); }\n  .ds-main { max-width: none; padding: var(--space-4) var(--space-4) var(--space-6); }\n  .ds-grid { grid-template-columns: 1fr 1fr; }\n  .ds-columns { grid-template-columns: minmax(0, 1fr); }\n  .ds-footer { padding-left: var(--space-4); padding-right: var(--space-4); }\n  .ds-footer__cols { grid-template-columns: 1fr 1fr; }\n  .ds-tabs { overflow: auto; }\n  .ds-page-header { flex-direction: column; align-items: flex-start; }\n}\n@media (max-width: 600px) {\n  .ds-nav {\n    flex-wrap: wrap;\n    height: auto;\n    padding: 0 var(--space-2);\n  }\n  .ds-brand {\n    width: 100%;\n    height: var(--size-bar);\n    margin-right: 0;\n    padding: 0 var(--space-2);\n  }\n  .ds-nav__links { min-width: 0; height: var(--size-row); }\n  .ds-nav__link { padding: 0 var(--space-2); }\n  .ds-hero { padding-top: var(--space-4); padding-bottom: var(--space-6); }\n  .ds-hero__title { font-size: var(--text-h1); }\n  .ds-hero__lead { font-size: var(--text-base); }\n  .ds-hero__fab { right: var(--space-3); }\n  .ds-main { padding: var(--space-3) var(--space-3) var(--space-6); }\n  .ds-section { padding: var(--space-5) 0; }\n  .ds-grid { grid-template-columns: minmax(0, 1fr); }\n  .ds-grid__media { height: calc(var(--size-media) / 2); }\n  .ds-stats { flex-wrap: wrap; }\n  .ds-stat { flex: 1 1 50%; padding: var(--space-3); }\n  .ds-stat:nth-child(odd) { border-left: 0; }\n  .ds-stat:nth-child(n + 3) { border-top: var(--border-width) var(--border-style) var(--color-border); }\n  .ds-table th,\n  .ds-table td { padding: 0 var(--space-2); }\n  .ds-table .ds-table__extra { display: none; }\n  .ds-tabs__tab { padding: 0 var(--space-3); }\n  .ds-links { gap: var(--space-3) var(--space-4); }\n  .ds-overlay { padding: var(--space-4) var(--space-3); }\n  .ds-footer__cols { gap: 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: calc((var(--size-bar) - var(--size-row-dense)) / 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",
    "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 documentation</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 class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#overview\">Overview</a></li>\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#guide\">Guides</a></li>\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#reference\">Reference</a></li>\n  </ul>\n  <ul class=\"ds-nav__links ds-nav__links--end\">\n    <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#saved\">Saved</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\">M</span></summary>\n    <ul class=\"ds-menu__list\">\n      <li><a class=\"ds-menu__link\" href=\"#saved\">Saved pages</a></li>\n      <li><a class=\"ds-menu__link\" href=\"#edit\">Edit grid.wide</a></li>\n      <li><a class=\"ds-menu__link\" href=\"#guide\">Guides</a></li>\n    </ul>\n  </details>\n</header>\n\n<section class=\"ds-view ds-view--home\" id=\"overview\">\n\n  <div class=\"ds-hero\" data-component=\"hero\">\n    <h1 class=\"ds-hero__title\">Layout guides</h1>\n    <p class=\"ds-hero__lead\">How to arrange sheets, bars and cards on a responsive grid, from a phone to a wide desktop window.</p>\n    <a class=\"ds-button ds-button--secondary\" href=\"#guide\">Get started</a>\n    <a class=\"ds-button ds-button--fab ds-hero__fab ds-tooltip ds-tooltip--left\" href=\"#edit\" aria-label=\"Add a breakpoint\"><span class=\"ds-tooltip__text\" role=\"tooltip\">Add a breakpoint</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  </div>\n\n  <div class=\"ds-layout\">\n\n    <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n      <h2 class=\"ds-sidebar__title\">Guides</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link is-current\" href=\"#overview\">Introduction</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Layout</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Colour</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Type</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Motion <span class=\"ds-badge ds-badge--new\">2</span></a></li>\n      </ul>\n      <h2 class=\"ds-sidebar__title\">Reference</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Breakpoints</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Spacing</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Elevation</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Tokens</a></li>\n      </ul>\n    </aside>\n\n    <div class=\"ds-main\">\n\n      <section class=\"ds-section ds-section--first\">\n        <h2 class=\"ds-section__title\">Start here</h2>\n        <div class=\"ds-grid\" data-component=\"grid\">\n          <article class=\"ds-grid__cell\">\n            <div class=\"ds-grid__media\">Surfaces</div>\n            <p class=\"ds-grid__text\">How sheets stack, split and join as the window changes.</p>\n            <div class=\"ds-grid__actions\"><a class=\"ds-button ds-button--flat\" href=\"#guide\">Read</a></div>\n          </article>\n          <article class=\"ds-grid__cell ds-grid__cell--2\">\n            <div class=\"ds-grid__media\">Elevation</div>\n            <p class=\"ds-grid__text\">Resting heights for bars, cards, buttons and dialogs.</p>\n            <div class=\"ds-grid__actions\"><a class=\"ds-button ds-button--flat\" href=\"#guide\">Read</a></div>\n          </article>\n          <article class=\"ds-grid__cell ds-grid__cell--3\">\n            <div class=\"ds-grid__media\">Breakpoints</div>\n            <p class=\"ds-grid__text\">The window sizes at which columns and gutters change.</p>\n            <div class=\"ds-grid__actions\"><a class=\"ds-button ds-button--flat\" href=\"#reference\">Look up</a></div>\n          </article>\n          <article class=\"ds-grid__cell ds-grid__cell--4\">\n            <div class=\"ds-grid__media\">Night theme</div>\n            <p class=\"ds-grid__text\">The same sheets on a dark page, with lighter text.</p>\n            <div class=\"ds-grid__actions\"><a class=\"ds-button ds-button--flat\" href=\"#guide\">Read</a></div>\n          </article>\n        </div>\n      </section>\n\n      <section class=\"ds-section ds-section--last\">\n        <h2 class=\"ds-section__title\">Updates</h2>\n        <div class=\"ds-columns\">\n          <ul class=\"ds-list\" data-component=\"list\">\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=\"#guide\">Layout guide revised</a>\n                <span class=\"ds-list__text\">New breakpoint table and margin rules.</span>\n              </span>\n              <span class=\"ds-list__meta\">12 Mar</span>\n            </li>\n            <li class=\"ds-list__item\">\n              <span class=\"ds-list__avatar ds-list__avatar--alt\">C</span>\n              <span class=\"ds-list__body\">\n                <a class=\"ds-list__title\" href=\"#guide\">Colour tool added</a>\n                <span class=\"ds-list__text\">Pick a primary and an accent and check contrast.</span>\n              </span>\n              <span class=\"ds-list__meta\">28 Feb</span>\n            </li>\n            <li class=\"ds-list__item\">\n              <span class=\"ds-list__avatar ds-list__avatar--accent\">T</span>\n              <span class=\"ds-list__body\">\n                <a class=\"ds-list__title\" href=\"#reference\">Tables for dense data</a>\n                <span class=\"ds-list__text\">Sorting, selection and a 48 unit row.</span>\n              </span>\n              <span class=\"ds-list__meta\">9 Feb</span>\n            </li>\n          </ul>\n          <div class=\"ds-stack\">\n            <div class=\"ds-panel\" data-component=\"panel\">\n              <h3 class=\"ds-panel__title\">Sample project</h3>\n              <div class=\"ds-panel__body\">\n                <p>A three screen starter with a bar, a drawer and a card list, ready to build.</p>\n              </div>\n              <div class=\"ds-panel__actions\">\n                <a class=\"ds-button ds-button--flat\" href=\"#guide\">Read the guide</a>\n                <a class=\"ds-button ds-button--flat\" href=\"#saved\">Save for later</a>\n              </div>\n            </div>\n            <div class=\"ds-notice\">\n              <strong class=\"ds-notice__title\">Version 2.4 is out</strong>\n              Margins now grow from 16 to 24 units at the tablet breakpoint.\n            </div>\n          </div>\n        </div>\n      </section>\n\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"guide\">\n  <div class=\"ds-layout\">\n\n    <aside class=\"ds-sidebar\">\n      <h2 class=\"ds-sidebar__title\">Guides</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link\" href=\"#overview\">Introduction</a></li>\n        <li><a class=\"ds-sidebar__link is-current\" href=\"#guide\">Layout</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Colour</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Type</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Motion <span class=\"ds-badge ds-badge--new\">2</span></a></li>\n      </ul>\n      <h2 class=\"ds-sidebar__title\">Reference</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Breakpoints</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Spacing</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Elevation</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Tokens</a></li>\n      </ul>\n    </aside>\n\n    <div class=\"ds-main\">\n\n      <ol class=\"ds-breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#overview\">Docs</a></li>\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#guide\">Guides</a></li>\n        <li class=\"ds-breadcrumb__item is-current\">Layout</li>\n      </ol>\n\n      <section class=\"ds-section ds-section--first\">\n        <article class=\"ds-prose\" data-component=\"typography\">\n          <h1>Building a page</h1>\n          <p class=\"ds-prose__lead\">Every screen is a stack of flat sheets. A sheet has one colour, a small corner and a shadow that says how high it floats.</p>\n          <h2>The baseline grid</h2>\n          <p>All spacing is a multiple of eight. Text sits on a four unit baseline, so a 16px paragraph takes a 24px line and a 13px caption takes sixteen. Set the gutter with <code>grid.gutter</code> and the kit works out the rest. Read the <a href=\"#reference\">breakpoint reference</a> for the full scale.</p>\n          <ul>\n            <li>Bars span the window; content keeps a fixed inset.</li>\n            <li>Cards sit eight units apart and never touch.</li>\n            <li>One floating action per screen, in the accent colour.</li>\n          </ul>\n          <h3>Installing</h3>\n          <p>Add the package, then import the sheet you need.</p>\n          <pre><code>chronoskin add layout\nchronoskin build --grid 8</code></pre>\n        </article>\n        <div class=\"ds-notices\" data-component=\"notice\">\n          <div class=\"ds-notice\">\n            <strong class=\"ds-notice__title\">Note</strong>\n            Margins grow from 16 to 24 units at the tablet breakpoint.\n          </div>\n          <div class=\"ds-notice ds-notice--error\">\n            <strong class=\"ds-notice__title\">Build failed</strong>\n            The grid has 13 columns. Use 4, 8 or 12.\n          </div>\n        </div>\n      </section>\n\n      <section class=\"ds-section\">\n        <h2 class=\"ds-section__title\">See also</h2>\n        <div class=\"ds-links\" data-component=\"links\">\n          <a class=\"ds-link\" href=\"#reference\">Breakpoints</a>\n          <a class=\"ds-link is-visited\" href=\"#overview\">Introduction</a>\n          <a class=\"ds-link is-hover\" href=\"#reference\">Spacing scale</a>\n          <a class=\"ds-link is-active\" href=\"#reference\">Elevation</a>\n          <a class=\"ds-link ds-link--quiet\" href=\"#saved\">Saved pages</a>\n        </div>\n      </section>\n\n      <section class=\"ds-section ds-section--last\">\n        <ul class=\"ds-pagination\" data-component=\"pagination\">\n          <li><a class=\"ds-pagination__link\" href=\"#overview\" 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\" href=\"#overview\">1</a></li>\n          <li><a class=\"ds-pagination__link is-current\" href=\"#guide\">2</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#guide\">3</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#guide\">4</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#guide\" 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      </section>\n\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"reference\">\n  <div class=\"ds-layout\">\n\n    <aside class=\"ds-sidebar\">\n      <h2 class=\"ds-sidebar__title\">Reference</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link is-current\" href=\"#reference\">Breakpoints</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Spacing</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Elevation</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Tokens</a></li>\n      </ul>\n      <h2 class=\"ds-sidebar__title\">Guides</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Layout</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Colour</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Type</a></li>\n      </ul>\n    </aside>\n\n    <div class=\"ds-main\">\n\n      <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#overview\">Docs</a></li>\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#reference\">Reference</a></li>\n        <li class=\"ds-breadcrumb__item is-current\">Breakpoints</li>\n      </ol>\n\n      <header class=\"ds-page-header\" data-component=\"page-header\">\n        <div class=\"ds-page-header__body\">\n          <h1 class=\"ds-page-header__title\">Breakpoints</h1>\n          <p class=\"ds-page-header__text\">The window sizes at which the grid changes its columns, gutters and margins.</p>\n        </div>\n        <div class=\"ds-page-header__actions\">\n          <a class=\"ds-button\" href=\"#edit\">Add breakpoint</a>\n        </div>\n      </header>\n\n      <ul class=\"ds-tabs\" data-component=\"tabs\">\n        <li><a class=\"ds-tabs__tab is-current\" href=\"#reference\">Columns</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#reference\">Gutters</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#reference\">Margins</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#reference\">Density</a></li>\n      </ul>\n\n      <ul class=\"ds-stats\" data-component=\"stats\">\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">5</span><span class=\"ds-stat__label\">Breakpoints</span></li>\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">12</span><span class=\"ds-stat__label\">Columns at most</span></li>\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">24</span><span class=\"ds-stat__label\">Widest gutter</span></li>\n        <li class=\"ds-stat\"><span class=\"ds-stat__value\">1,920</span><span class=\"ds-stat__label\">Largest window</span></li>\n      </ul>\n\n      <table class=\"ds-table\" data-component=\"table\">\n        <thead>\n          <tr><th>Token</th><th class=\"ds-table__extra\">Window</th><th>Status</th><th class=\"ds-table__num\">Min width</th><th class=\"ds-table__num\">Columns</th><th class=\"ds-table__num ds-table__extra\">Gutter</th></tr>\n        </thead>\n        <tbody>\n          <tr><td class=\"ds-table__name\"><a class=\"ds-link ds-link--quiet\" href=\"#edit\">grid.compact</a></td><td class=\"ds-table__extra\">Phone, upright</td><td><span class=\"ds-badge ds-badge--success\">Stable</span></td><td class=\"ds-table__num\">0</td><td class=\"ds-table__num\">4</td><td class=\"ds-table__num ds-table__extra\">16</td></tr>\n          <tr><td class=\"ds-table__name\"><a class=\"ds-link ds-link--quiet\" href=\"#edit\">grid.medium</a></td><td class=\"ds-table__extra\">Phone, sideways</td><td><span class=\"ds-badge ds-badge--success\">Stable</span></td><td class=\"ds-table__num\">600</td><td class=\"ds-table__num\">8</td><td class=\"ds-table__num ds-table__extra\">16</td></tr>\n          <tr class=\"is-current\"><td class=\"ds-table__name\"><a class=\"ds-link ds-link--quiet\" href=\"#edit\">grid.wide</a></td><td class=\"ds-table__extra\">Tablet</td><td><span class=\"ds-badge ds-badge--success\">Stable</span></td><td class=\"ds-table__num\">840</td><td class=\"ds-table__num\">12</td><td class=\"ds-table__num ds-table__extra\">24</td></tr>\n          <tr><td class=\"ds-table__name\"><a class=\"ds-link ds-link--quiet\" href=\"#edit\">grid.desk</a></td><td class=\"ds-table__extra\">Laptop</td><td><span class=\"ds-badge ds-badge--warning\">Draft</span></td><td class=\"ds-table__num\">1280</td><td class=\"ds-table__num\">12</td><td class=\"ds-table__num ds-table__extra\">24</td></tr>\n          <tr><td class=\"ds-table__name\"><a class=\"ds-link ds-link--quiet\" href=\"#edit\">grid.max</a></td><td class=\"ds-table__extra\">Large display</td><td><span class=\"ds-badge ds-badge--danger\">Removed</span></td><td class=\"ds-table__num\">1920</td><td class=\"ds-table__num\">12</td><td class=\"ds-table__num ds-table__extra\">24</td></tr>\n        </tbody>\n      </table>\n\n      <p class=\"ds-section__label\">Status key and tags</p>\n      <div class=\"ds-badges\" data-component=\"badge\">\n        <span class=\"ds-badge\">5</span>\n        <span class=\"ds-badge ds-badge--success\">Stable</span>\n        <span class=\"ds-badge ds-badge--warning\">Draft</span>\n        <span class=\"ds-badge ds-badge--danger\">Removed</span>\n        <span class=\"ds-badge ds-badge--new\">New</span>\n        <span class=\"ds-badge ds-badge--chip\">Layout</span>\n        <span class=\"ds-badge ds-badge--chip\">Version 2.4</span>\n      </div>\n\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"edit\">\n  <div class=\"ds-layout\">\n\n    <aside class=\"ds-sidebar\">\n      <h2 class=\"ds-sidebar__title\">Reference</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link is-current\" href=\"#reference\">Breakpoints</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Spacing</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Elevation</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#reference\">Tokens</a></li>\n      </ul>\n      <h2 class=\"ds-sidebar__title\">Guides</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Layout</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Colour</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Type</a></li>\n      </ul>\n    </aside>\n\n    <div class=\"ds-main\">\n\n      <ol class=\"ds-breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#reference\">Reference</a></li>\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#reference\">Breakpoints</a></li>\n        <li class=\"ds-breadcrumb__item is-current\">grid.wide</li>\n      </ol>\n\n      <header class=\"ds-page-header\">\n        <div class=\"ds-page-header__body\">\n          <h1 class=\"ds-page-header__title\">Edit grid.wide</h1>\n          <p class=\"ds-page-header__text\">The tablet breakpoint: twelve columns from 840 units up.</p>\n        </div>\n        <div class=\"ds-page-header__actions 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\">Preview</button>\n          <button class=\"ds-button is-disabled\" type=\"button\" disabled>Publish</button>\n          <a class=\"ds-button\" href=\"#reference\">Save</a>\n        </div>\n      </header>\n\n      <div class=\"ds-columns\">\n        <div class=\"ds-panel ds-panel--form\">\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\">Owner</span>\n                <input class=\"ds-form__control\" type=\"text\" value=\"Mira Okafor\">\n              </label>\n              <label class=\"ds-form__field is-invalid\">\n                <span class=\"ds-form__label\">Contact</span>\n                <input class=\"ds-form__control\" type=\"text\" value=\"mira@example\">\n                <span class=\"ds-form__error\">Enter a complete email address.</span>\n              </label>\n              <label class=\"ds-form__field\">\n                <span class=\"ds-form__label\">Applies to</span>\n                <span class=\"ds-form__select\">\n                  <select class=\"ds-form__control\">\n                    <option>Layout guide</option>\n                    <option>Colour guide</option>\n                    <option>Something else</option>\n                  </select>\n                </span>\n              </label>\n              <label class=\"ds-form__field\">\n                <span class=\"ds-form__label\">Notes</span>\n                <textarea class=\"ds-form__control ds-form__control--area\">Used by the two pane layout from 840 units up.</textarea>\n                <span class=\"ds-form__hint\">Plain text, up to 500 characters.</span>\n              </label>\n              <label class=\"ds-form__check\">\n                <input class=\"ds-form__checkbox\" type=\"checkbox\" checked>\n                <span>Tell me when this page changes</span>\n              </label>\n              <label class=\"ds-form__check\"><span class=\"ds-switch\" data-component=\"switch\"><input class=\"ds-switch__input\" type=\"checkbox\" checked><span class=\"ds-switch__track\"></span></span><span>Show on the overview page</span></label>\n              <div class=\"ds-form__actions\">\n                <a class=\"ds-button ds-button--flat\" href=\"#reference\">Cancel</a>\n                <a class=\"ds-button\" href=\"#reference\">Save</a>\n              </div>\n            </form>\n          </div>\n        </div>\n        <div class=\"ds-stack\">\n          <div class=\"ds-panel\">\n            <h3 class=\"ds-panel__title\">Where it is used</h3>\n            <div class=\"ds-panel__body\">\n              <p>Three guides and the two pane sample read this breakpoint. Changes show up there after the next build.</p>\n              <p>A build is running now.</p>\n              <span class=\"ds-progress ds-progress--ring\" data-component=\"progress\" role=\"progressbar\" aria-label=\"Build running\"></span>\n            </div>\n            <div class=\"ds-panel__actions\">\n              <a class=\"ds-button ds-button--flat\" href=\"#guide\">Open the layout guide</a>\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\">Remove grid.wide?</h3>\n              <div class=\"ds-dialog__body\">\n                <p>Layouts that use it fall back to the next smaller window. This cannot be undone.</p>\n              </div>\n              <div class=\"ds-dialog__actions\">\n                <a class=\"ds-button ds-button--flat\" href=\"#edit\">Keep it</a>\n                <a class=\"ds-button ds-button--flat ds-button--danger\" href=\"#reference\">Remove</a>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"saved\">\n  <div class=\"ds-layout\">\n\n    <aside class=\"ds-sidebar\">\n      <h2 class=\"ds-sidebar__title\">Your pages</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link is-current\" href=\"#saved\">Saved</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#saved\">History</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#saved\">Notes</a></li>\n      </ul>\n      <h2 class=\"ds-sidebar__title\">Guides</h2>\n      <ul class=\"ds-sidebar__list\">\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Layout</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Colour</a></li>\n        <li><a class=\"ds-sidebar__link\" href=\"#guide\">Type</a></li>\n      </ul>\n    </aside>\n\n    <div class=\"ds-main\">\n\n      <ol class=\"ds-breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#overview\">Docs</a></li>\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-breadcrumb__link\" href=\"#saved\">Your pages</a></li>\n        <li class=\"ds-breadcrumb__item is-current\">Saved</li>\n      </ol>\n\n      <header class=\"ds-page-header\">\n        <div class=\"ds-page-header__body\">\n          <h1 class=\"ds-page-header__title\">Saved pages</h1>\n          <p class=\"ds-page-header__text\">Guides and reference pages you bookmarked, kept in the order you saved them.</p>\n        </div>\n        <div class=\"ds-page-header__actions\">\n          <a class=\"ds-button\" href=\"#guide\">Browse the guides</a>\n        </div>\n      </header>\n\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=\"M7 4h10v16l-5-4-5 4z\" stroke=\"currentColor\" fill=\"none\"/></svg>\n        </span>\n        <h3 class=\"ds-empty__title\">Nothing saved yet</h3>\n        <p class=\"ds-empty__text\">Pages you bookmark appear here.</p>\n        <a class=\"ds-button ds-button--flat\" href=\"#guide\">Browse the guides</a>\n      </div>\n\n      <section class=\"ds-section ds-section--last\">\n        <h2 class=\"ds-section__title\">Recently viewed</h2>\n        <div class=\"ds-columns\">\n          <ul class=\"ds-list\">\n            <li class=\"ds-list__item\">\n              <span class=\"ds-list__avatar ds-list__avatar--alt\">B</span>\n              <span class=\"ds-list__body\">\n                <a class=\"ds-list__title\" href=\"#reference\">Breakpoints</a>\n                <span class=\"ds-list__text\">Reference, five window sizes.</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\">L</span>\n              <span class=\"ds-list__body\">\n                <a class=\"ds-list__title\" href=\"#guide\">Building a page</a>\n                <span class=\"ds-list__text\">Layout guide, page 2 of 4.</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\">G</span>\n              <span class=\"ds-list__body\">\n                <a class=\"ds-list__title\" href=\"#edit\">grid.wide</a>\n                <span class=\"ds-list__text\">Breakpoint, edited by Mira Okafor.</span>\n              </span>\n              <span class=\"ds-list__meta\">12 Mar</span>\n            </li>\n          </ul>\n          <div class=\"ds-panel\">\n            <h3 class=\"ds-panel__title\">Keep a page for later</h3>\n            <div class=\"ds-panel__body\">\n              <p>Press the bookmark at the top of any guide. Saved pages follow you to every device you sign in on.</p>\n              <div class=\"ds-accordion\" data-component=\"accordion\">\n                <details class=\"ds-accordion__item\">\n                  <summary class=\"ds-accordion__head\">Where are saved pages kept?</summary>\n                  <p class=\"ds-accordion__body\">With your account, so they follow you to every device you sign in on.</p>\n                </details>\n                <details class=\"ds-accordion__item\">\n                  <summary class=\"ds-accordion__head\">Can I save a reference table?</summary>\n                  <p class=\"ds-accordion__body\">Yes. Any guide or reference page can be saved.</p>\n                </details>\n                <details class=\"ds-accordion__item\">\n                  <summary class=\"ds-accordion__head\">How do I remove one?</summary>\n                  <p class=\"ds-accordion__body\">Press the bookmark again on the page, or clear it from this list.</p>\n                </details>\n              </div>\n            </div>\n            <div class=\"ds-panel__actions\">\n              <a class=\"ds-button ds-button--flat\" href=\"#guide\">Open a guide</a>\n            </div>\n          </div>\n        </div>\n      </section>\n\n    </div>\n  </div>\n</section>\n\n<footer class=\"ds-footer\" data-component=\"footer\">\n  <div class=\"ds-footer__cols\">\n    <div class=\"ds-footer__col\">\n      <h2 class=\"ds-footer__title\">Guides</h2>\n      <ul class=\"ds-footer__list\">\n        <li><a class=\"ds-footer__link\" href=\"#guide\">Layout</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#guide\">Colour</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#guide\">Type</a></li>\n      </ul>\n    </div>\n    <div class=\"ds-footer__col\">\n      <h2 class=\"ds-footer__title\">Reference</h2>\n      <ul class=\"ds-footer__list\">\n        <li><a class=\"ds-footer__link\" href=\"#reference\">Breakpoints</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#reference\">Tokens</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#edit\">Edit grid.wide</a></li>\n      </ul>\n    </div>\n    <div class=\"ds-footer__col\">\n      <h2 class=\"ds-footer__title\">Project</h2>\n      <ul class=\"ds-footer__list\">\n        <li><a class=\"ds-footer__link\" href=\"#overview\">Overview</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#overview\">Updates</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#overview\">Sample project</a></li>\n      </ul>\n    </div>\n    <div class=\"ds-footer__col\">\n      <h2 class=\"ds-footer__title\">Your pages</h2>\n      <ul class=\"ds-footer__list\">\n        <li><a class=\"ds-footer__link\" href=\"#saved\">Saved</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#saved\">History</a></li>\n        <li><a class=\"ds-footer__link\" href=\"#saved\">Notes</a></li>\n      </ul>\n    </div>\n  </div>\n  <p class=\"ds-footer__legal\">chronoskin is a sample project. Code under an open licence; documentation free to reuse.</p>\n</footer>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.material-design.docs.s01.p11.t11.u02\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"material-design\",\n    \"years\": [\n      2014,\n      2018\n    ]\n  },\n  \"archetype\": \"docs\",\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-1bb2\",\n  \"short\": \"v1-md-1bb2\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #ffffff;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #f5f5f5;\n  --color-surface-strong: #e0e0e0;\n  --color-bar: #ee6e73;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #e57373;\n  --color-bar-alt-text: #ffffff;\n  --color-inverse: #78909c;\n  --color-inverse-text: #ffffff;\n  --color-text: rgb(0 0 0 / 0.87);\n  --color-text-muted: #616161;\n  --color-heading: rgb(0 0 0 / 0.87);\n  --color-heading-alt: #ee6e73;\n  --color-link: #039be5;\n  --color-link-quiet: rgb(0 0 0 / 0.87);\n  --color-link-visited: #039be5;\n  --color-link-hover: #2196f3;\n  --color-link-active: #1867c0;\n  --color-border: rgb(0 0 0 / 0.14);\n  --color-border-strong: #9e9e9e;\n  --color-border-muted: #eeeeee;\n  --color-accent: #ffb731;\n  --color-accent-text: #212121;\n  --color-accent-alt: #ff4081;\n  --color-fill-1: #ee6e73;\n  --color-fill-2: #ffb731;\n  --color-fill-3: #26a69a;\n  --color-fill-4: #78909c;\n  --color-button: #26a69a;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #ffffff;\n  --color-button-secondary-text: #616161;\n  --color-input: #ffffff;\n  --color-input-text: rgb(0 0 0 / 0.87);\n  --color-input-border: #9e9e9e;\n  --color-disabled: #e0e0e0;\n  --color-disabled-text: #9e9e9e;\n  --color-danger: #f44336;\n  --color-danger-surface: #ffffff;\n  --color-success: #009688;\n  --color-warning: #ffb731;\n  --color-notice: #f5f5f5;\n  --color-notice-text: rgb(0 0 0 / 0.87);\n  --color-focus: #26a69a;\n  --color-shadow: #000000;\n  --color-overlay: rgb(0 0 0 / 0.54);\n}\n\n/* @part type */\n:root {\n  --font-body: Roboto, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif;\n  --font-heading: Roboto, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif;\n  --font-ui: Roboto, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif;\n  --font-mono: \"Roboto Mono\", Menlo, Consolas, \"Liberation Mono\", monospace;\n  --text-base: 15px;\n  --text-small: 13px;\n  --text-ui: 13px;\n  --text-large: 20px;\n  --text-display: 56px;\n  --text-h1: 34px;\n  --text-h2: 26px;\n  --text-h3: 18px;\n  --line-body: 1.6;\n  --line-heading: 1.3;\n  --line-display: 1.1;\n  --weight-body: 400;\n  --weight-bold: 500;\n  --weight-heading: 300;\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: underline;\n  --link-decoration-quiet: none;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 2px;\n  --border-style: solid;\n  --radius-control: 4px;\n  --radius-panel: 4px;\n  --radius-pill: 16px;\n  --radius-page: 4px;\n  --shadow-panel: 0 0 0 1px var(--color-border);\n  --shadow-control: inset 0 0 0 1px color-mix(in srgb, var(--color-shadow) 12%, transparent);\n  --shadow-control-hover: 0 1px 3px 0 color-mix(in srgb, var(--color-shadow) 20%, transparent), 0 2px 4px 0 color-mix(in srgb, var(--color-shadow) 14%, transparent);\n  --shadow-control-pressed: inset 0 0 0 1px color-mix(in srgb, var(--color-shadow) 30%, transparent);\n  --shadow-dialog: 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-text: none;\n  --fill-page: var(--color-surface);\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) 90%, white);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: color-mix(in srgb, var(--color-text) 6%, transparent);\n  --focus-ring: 3px solid color-mix(in srgb, var(--color-focus) 40%, transparent);\n  --transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1), color 0.28s cubic-bezier(0.4, 0, 0.2, 1);\n  --backdrop-blur: 0px;\n}\n"
  }
}
