{
  "id": "v1-dd-2244",
  "long_id": "v1.dev-dark.app.s02.p02.t04.u04",
  "name": "Dark developer tools issue tracker",
  "era": {
    "slug": "dev-dark",
    "code": "dd",
    "name": "Dark developer tools",
    "years": [
      2019,
      2026
    ],
    "description": "Developer products of 2019 to 2026: a near-black page, hairline borders in translucent white, small precise sans type, subtle glows and gradients behind a hero, monospace details and one bright accent."
  },
  "archetype": "app",
  "mode": "mix",
  "viewport": {
    "width": 1440,
    "fluid": false,
    "responsive": true
  },
  "summary": "This is the signed-in side of a developer tool from 2019 to 2026: an issue tracker on a blue-black page, with a rail of icon links down the left edge, a top bar whose search field is the entry to a command palette, and a work area of hairline boxes. Rows are dense and led by a status dot; ids, commits, counts and dates are set in monospace, and here the headings and controls are monospace too. The one accent colour marks the primary action and the progress of the running cycle, over a single faint glow in the first card.",
  "url": "https://chrono.skin/s/v1-dd-2244",
  "preview_url": "https://chrono.skin/s/v1-dd-2244/specimen.html",
  "files": {
    "STYLE.md": "# Dark developer tools issue tracker\n\n## Summary\n\nThis is the signed-in side of a developer tool from 2019 to 2026: an issue tracker on a blue-black page, with a rail of icon links down the left edge, a top bar whose search field is the entry to a command palette, and a work area of hairline boxes. Rows are dense and led by a status dot; ids, commits, counts and dates are set in monospace, and here the headings and controls are monospace too. The one accent colour marks the primary action and the progress of the running cycle, over a single faint glow in the first card.\n\n## Layout\n\n- Designed for a 1440px viewport, not fluid beyond it. `.ds-page` is a grid of two columns: the rail (`.ds-nav`, `--size-rail` 232px) for the whole height, and beside it `.ds-topbar` (`--size-top` 48px, sticky), the showing view and the footer line. `.ds-content` is centred in the work area, at most `--size-page` (1120px) wide, padded by `--space-5` and `--space-6`, and stacks its children `--space-5` (24px) apart.\n- Navigation is the rail on `--fill-bar-alt`: `.ds-nav__head` with the brand and a key cap, groups of links under mono group names, each link an icon or a team dot, a label and an optional count; the current link sits on a 14% wash of the rail's text colour. The account is at the foot. `.ds-topbar` on `--fill-bar` holds a mono location, `.ds-search` (the palette field with its `Ctrl K` key cap) in the middle and two small buttons at the right.\n- The home view stacks: `.ds-hero`, one card with the state of the cycle and a meter of small squares; `.ds-stat`, four figures in one ruled box; `.ds-cols` (2 to 1) with the issue list panel beside a panel of deployments and the inverted `.ds-tip`; and `.ds-grid`, four project cards under a `.ds-colhead`.\n- Inner pages have no hero. `.ds-content` opens with `.ds-page-header`: the breadcrumb, a `--text-h2` title and a meta line at the left, at most two buttons at the right, and a rule below. Then the work: `.ds-cols--side` puts a `--size-side` (300px) column of properties at the right, `.ds-cols--even` halves, `.ds-cols--menu` puts a `.ds-subnav` of sections at the left of a settings page. Tabs are underlined and sit on the head of the panel that holds the table; the pagination is in its `.ds-table__foot`.\n- Views. The specimen has four. `issues` is the home view described above. `issue` is one issue: its description as prose, the activity list and the open delete dialog in the main column; the properties sidebar, the action buttons and linked items at the right. `deploys` is the table of deployments with tabs and pagination, then an empty state beside the environments. `settings` is the workspace form under its notices, beside the section menu, with the label key and the danger zone below.\n- Spacing scale: `--space-1` 4px (rail link and small button vertical padding, meter gaps), `--space-2` 8px (list row and button vertical padding, gaps between buttons and badges), `--space-3` 12px (panel head and table cell vertical padding), `--space-4` 16px (panel, stat and card padding), `--space-5` 24px (between blocks, hero padding), `--space-6` 32px (work area side padding, around a dialog), `--space-7` 48px (below the last block).\n- Other sizes: `--size-search` 420px, `--size-id` 68px (the id column of an issue row), `--size-icon` 16px, `--size-mark` 22px, `--size-dot` 8px, `--size-glow` 420px, `--size-dialog` 440px.\n- Below 1000px the rail becomes a block across the top with its links in one row that scrolls sideways, cards stand two across and column pairs stack. Below 640px everything is one column, an issue row wraps its labels under its title, and a wide table scrolls inside `.ds-table__wrap`.\n- On a phone the rail is a bar across the top from 1000px down: `.ds-nav__links--main` is one row that scrolls sideways, `.ds-nav__group`, `.ds-nav__foot`, the `.ds-kbd` and the other link lists are not shown, and `.ds-subnav` becomes a scrolling row whose current link has an `--color-accent-alt` line under it. At 640px and below each `.ds-nav__link` keeps only its `.ds-nav__label` (icon, badge and code are not shown) with tighter padding, the `.ds-menu` in `.ds-topbar__actions` keeps only its avatar (`.ds-menu__label` is not shown) and sits at the right, and a tooltip in a panel title opens under its line.\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\nThe conventions for which text sits on which fill are those of the era's first layout and are kept here.\n\n- `--color-text`, `--color-heading` and `--color-text-muted` sit on the page, on `--fill-panel`, `--color-surface-alt` (the stat band, a hovered row, the dialog) and `--color-surface-strong` (the current chip, key caps, quiet badges, empty tally cells). `--color-bar-text` sits on `--fill-bar` (the top bar). `--color-bar-alt-text` sits on `--fill-bar-alt` (the ticker, the head of the release card, code heads, table heads, the footer), with `--color-heading` for a link or the brand on that fill. `--color-input-text` sits on `--fill-input` (form controls and every code block). `--color-inverse-text` sits on `--fill-inverse`, used once per view, for `.ds-callout`.\n- `--color-fill-1` to `--color-fill-4` never carry text. They tint the cover of a card (a gradient from 30% to 6% of the fill over transparent) and colour its drawing (70% of the fill mixed into `--color-heading`); `--color-fill-1` is the hero glow.\n- `--color-accent` marks the current link of the bar and fills the default badge through `--fill-accent`. `--color-accent-alt` is a line and text colour: the mono label of the hero, the node of each timeline entry, the dot of the current sidebar row, the \"changed\" cells of a tally, keywords in code.\n- `--color-success`, `--color-warning` and `--color-danger` are a dot, text, the lit cells of a tally, or a 12% tint with a 32% hairline and the colour as text. Added and removed lines of a diff are a 13% tint with text mixed 55% into `--color-input-text`. Nothing else is filled with them; the destructive button is a tint too.\n- Borders: `--color-border` on boxes and bars, `--color-border-strong` on the release card, secondary buttons, the timeline rule, the current chip and the dialog, `--color-border-muted` between rows inside a box. All `--border-width`; `--border-width-strong` is the line under the current link and the focus offset.\n- Type. One family for body, headings and controls, `--font-mono` for versions, dates, counts, the ticker and code. `--text-base` 15px at `--line-body` 1.5; `--text-ui` 14px for navigation, buttons, forms, tables and card text; `--text-small` 12px for badges, mono labels and dates; `--text-large` 18px for the hero lead and timeline titles. `--text-display` 64px is the hero title only; `--text-h1` 38px page titles, figures and the version on the release card; `--text-h2` 26px column heads and the lead card; `--text-h3` 16px panel and card titles. Headings are `--weight-heading` 700 with negative tracking.\n- Uppercase appears only on mono labels (`.ds-eyebrow`, table heads, sidebar titles), tracked by 6% of the font size. Links are `--color-link` without underline and gain one on hover; quiet links are `--color-link-quiet` and turn `--color-heading`.\n- Surface. `--radius-control` 8px for buttons, inputs and the brand tile, `--radius-panel` 12px for panels, code, notices, the callout and the pager, `--radius-page` 18px for the release card, grid cards and the dialog box, `--radius-pill` 4px for badges and chips. `--shadow-panel` is on panels and grid cards, `--shadow-control` (a glow in the button colour) on buttons and the brand tile, `--shadow-dialog` on the release card and the dialog.\n- One-off values written with `calc()` and `color-mix()`: the glow (24% of a fill), cover tints (30% and 6%), drawing colours (70%), status tints (12% and 32%), diff lines (13% and 55%), the notice border (22% and 40%), key cap corners (half of `--radius-control`), tally cell corners (half of `--radius-pill`), mono label tracking, the left column of `.ds-cols--menu` (72% of `--size-side`). Navigation links are at `opacity` 0.62 until current, callout text at 0.78. The empty state's outline is dashed.\n\n## Components\n\n- `.ds-page`: on `<body>`. Sets the font, text colour and page fill and makes the two-column grid; `.ds-nav`, `.ds-topbar`, the views and `.ds-footer` are its direct children.\n- `.ds-content`, `.ds-cols` (`--side`, `--even`, `--menu`), `.ds-stack`: the padded column of a view, the column pairs and a vertical stack. `.ds-panel--grow` fills spare height.\n- `.ds-brand`: the mark on a 22px tile dressed like the primary button, and the name. Placeholders for the installing project's own name and logo.\n- `.ds-nav`: the rail. `.ds-nav__head`, `.ds-nav__group`, `.ds-nav__links` (`--main` for the links that follow the view) of `.ds-nav__link` with `.ds-nav__icon`, `.ds-nav__label` and an optional badge or mono code; `.ds-nav__foot` with an avatar and `.ds-nav__who`. A project sets `is-current` on the current link.\n- `.ds-topbar`: `.ds-topbar__where`, `.ds-search` (`.ds-search__icon`, `.ds-search__text`, a `.ds-kbd`) and `.ds-topbar__actions`.\n- `.ds-hero`: home view only, one card: `.ds-hero__copy` with a `.ds-eyebrow`, `.ds-hero__title`, `.ds-hero__lead` and `.ds-hero__actions`; `.ds-hero__art` holds `.ds-meter`, a grid of `.ds-meter__cell` (`--done`, `--doing`, `--late`) over `.ds-meter__key`.\n- `.ds-page-header`: `.ds-page-header__copy` (breadcrumb, `.ds-page-header__title`, `.ds-page-header__text`, which may start with a status badge) and `.ds-page-header__actions`.\n- `.ds-prose`: h1, h2, h3, p, lists, `code`, `strong`, inside a panel; `.ds-prose__lead`.\n- `.ds-code`: code block with `.ds-code__head`, `.ds-code__name`, `.ds-code__body` and the spans `__k`, `__s`, `__c`, `__n`.\n- `.ds-eyebrow`, `.ds-mono`, `.ds-kbd`, `.ds-dot` (`--success`, `--warning`, `--danger`, `--accent`, `--ring`), `.ds-avatar`: the small parts every row is made of.\n- `.ds-link`: `is-visited`, `is-hover`, `is-active`, `is-focus`; `--quiet`, `--more`. `.ds-linkrow`.\n- `.ds-button`: `--secondary`, `--danger`, `--inverse` (on `.ds-tip` only), `--small`, `--large`; `is-hover`, `is-active`, `is-focus`, `is-disabled`. `.ds-buttonrow`.\n- `.ds-form`: `.ds-form__row`, `.ds-form__field`, `.ds-form__label`, `.ds-form__input` (`--mono`), `.ds-form__select`, `.ds-form__textarea` (`--mono`), `is-error` with `.ds-form__error`, `.ds-form__hint`, `.ds-form__check`, `.ds-form__checkbox`, `.ds-form__actions`.\n- `.ds-table`: in a panel under the tabs: mono uppercase head on `--fill-bar-alt`, hairline rows, `.ds-table__num`, `.ds-table__state`. `.ds-table__wrap`, `.ds-table__foot`.\n- `.ds-list`: issue rows in a panel. `.ds-list__group` heads a state; `.ds-list__item` is a dot, the mono `.ds-list__id`, the `.ds-list__title` link and `.ds-list__meta` (label badge, avatar, date).\n- `.ds-panel`: `.ds-panel__head`, `.ds-panel__title`, `.ds-panel__body`, `.ds-panel__rows` of `.ds-panel__row` with `.ds-panel__key`.\n- `.ds-stat`: the ruled box of four `.ds-stat__item`: a mono `.ds-stat__label` led by a dot, the `.ds-stat__figure` and a `.ds-stat__delta` (`--down`).\n- `.ds-grid`: four project cards. `.ds-grid__cell` (`--2`, `--3`, `--4`) is a link holding a mono key, `.ds-grid__title`, `.ds-grid__text`, `.ds-grid__bar` (`--50`, `--75`, `--90`) and `.ds-grid__foot`. `.ds-colhead` with `.ds-colhead__title` names the row.\n- `.ds-tabs`: underlined `.ds-tabs__tab` row on a panel head, each with an optional mono count; `is-current`.\n- `.ds-badge`: `--quiet`, `--outline`, `--new`, `--mono`; status `--success`, `--warning`, `--danger`. `.ds-badgerow`.\n- `.ds-sidebar`: the properties box: `.ds-sidebar__title`, `.ds-sidebar__list` of `.ds-sidebar__item`, each a `.ds-sidebar__key` and a link or value.\n- `.ds-subnav`: the sections of a settings page, `.ds-subnav__link` along a rule; `is-current`.\n- `.ds-activity`: `.ds-activity__item` rows of avatar, `.ds-activity__text` and a mono time.\n- `.ds-tip`: the inverted card: `.ds-tip__title`, a paragraph, one `.ds-button--inverse`.\n- `.ds-notice`: `--error`, `.ds-notice__title`, `.ds-noticerow`.\n- `.ds-pagination`: `.ds-pagination__link`, `is-current`, `is-disabled`.\n- `.ds-breadcrumb`: `.ds-breadcrumb__item`, `.ds-breadcrumb__current`.\n- `.ds-dialog`: `.ds-dialog__box`, `.ds-dialog__head`, `.ds-dialog__title`, `.ds-dialog__close`, `.ds-dialog__body`, `.ds-dialog__actions`.\n- `.ds-empty`: `.ds-empty__icon`, `.ds-empty__title`, `.ds-empty__text` and one small button, in a dashed box where a panel would be.\n- `.ds-footer`: one mono line on `--fill-bar-alt`: `.ds-footer__status`, the build, `.ds-footer__links` of `.ds-footer__link`.\n- `.ds-menu`: a drop-down behind a button in the bar (`.ds-menu__button`, `.ds-menu__list`); it lists every view, so on a phone it is the full navigation.\n- `.ds-menu__item`: one link of the drop-down; the current view carries the accent line and the stronger fill.\n- `.ds-menu__item--view`: an item of the menu that names a view of the site; the current view's item is marked by one `:has()` rule per view, like the bar links, so the menu is a second way to every view on a phone.\n- `.ds-menu__title`: a small mono label over a group of links in the drop-down.\n- `.ds-tooltip`: a small question mark beside a title; `.ds-tooltip__tip` opens on hover or focus, never by default.\n- `.ds-switch`: an on or off setting that takes effect at once, drawn over a checkbox (`.ds-switch__input`, `.ds-switch__track`, `.ds-switch__label`).\n- `.ds-progress`: a thin bar for a build, a rollout or a quota, with a mono line above (`.ds-progress__head`, `.ds-progress__value`, `.ds-progress__bar`).\n\n## Never\n\n- `block-gap <= 32px`: blocks are 24px apart.\n- `font-size >= 12px`: badges, mono labels and dates are the smallest text.\n- `font-size <= 64px`: the hero title is the largest text.\n- `font-weight <= 700`: headings are bold; nothing is heavier.\n- `font-families <= 2`: one grotesque and one monospace.\n- `line-height <= 1.5`: body text is set at 1.5.\n- `uppercase-text <= 5%`: only mono labels are uppercase.\n- `underlined-links <= 5%`: links are told apart by colour and underline on hover only.\n- `letter-spacing <= 3px`: the hero title is pulled together by 2.4px; nothing is spaced wider than that.\n- `border-width <= 2px`: rules and outlines are 1px hairlines; 2px is the line under the current link.\n- `border-radius <= 18px`: 8px on controls, 12px on panels, 18px on the largest boxes.\n- `box-shadow-blur <= 70px`: only the release card and the dialog cast a wide shadow.\n- `text-shadow = none`: text is flat on every fill.\n- `animation = none`: nothing moves by itself.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. Anything new in the work area is a `.ds-panel` with a `.ds-panel__head`, 24px from its neighbours; a new kind of record is a `.ds-list__item` or a table row led by a `.ds-dot`; a new destination is a `.ds-nav__link` with a 16px stroke icon; anything a developer would copy is `.ds-mono` or a `.ds-kbd`. Keep to the era's conventions for which text sits on which fill, tint with the fills and the status colours instead of filling with them, and use one glow and one inverted card per view. Spacing comes from the `--space-*` scale, and any one-off shade is a `color-mix()` of tokens noted next to the rule.\n",
    "components.css": ":root {\n  --size-page: 1120px;\n  --size-rail: 232px;\n  --size-top: 48px;\n  --size-side: 300px;\n  --size-search: 420px;\n  --size-mark: 22px;\n  --size-dot: 8px;\n  --size-icon: 16px;\n  --size-id: 68px;\n  --size-dialog: 440px;\n  --size-glow: 420px;\n  --space-1: 4px;\n  --space-2: 8px;\n  --space-3: 12px;\n  --space-4: 16px;\n  --space-5: 24px;\n  --space-6: 32px;\n  --space-7: 48px;\n}\n\n/* shell: a rail for the whole height at the left; the top bar, the view and a status line beside it */\n.ds-page {\n  display: grid;\n  grid-template-columns: var(--size-rail) minmax(0, 1fr);\n  grid-template-rows: auto 1fr auto;\n  min-height: 100vh;\n  margin: 0;\n  padding: 0;\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n.ds-page *,\n.ds-page *::before,\n.ds-page *::after {\n  box-sizing: border-box;\n}\n\n/* views: one screen of the example site shows at a time */\n.ds-view { display: none; }\n.ds-view:target, .ds-page:not(:has(.ds-view:target)) .ds-view--home { display: block; }\n.ds-view:target { scroll-margin-top: 100vh; }\n.ds-view {\n  grid-column: 2;\n  grid-row: 2;\n  min-width: 0;\n}\n.ds-content {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  max-width: var(--size-page);\n  margin: 0 auto;\n  padding: var(--space-5) var(--space-6) var(--space-7);\n}\n.ds-cols {\n  display: grid;\n  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);\n  gap: var(--space-5);\n  align-items: stretch;\n}\n.ds-cols--side {\n  grid-template-columns: minmax(0, 1fr) var(--size-side);\n}\n.ds-cols--menu {\n  grid-template-columns: calc(var(--size-rail) - var(--space-7)) minmax(0, 1fr);\n}\n.ds-cols--even {\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n}\n.ds-stack {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  min-width: 0;\n}\n.ds-stack > .ds-panel--grow {\n  flex: 1 0 auto;\n}\n\n/* nav: the rail on the secondary bar; workspace on top, icon links in groups, the account at the foot */\n.ds-nav {\n  grid-column: 1;\n  grid-row: 1 / span 3;\n  position: sticky;\n  top: 0;\n  display: flex;\n  flex-direction: column;\n  align-self: start;\n  min-width: 0;\n  height: 100vh;\n  padding: 0 var(--space-2);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  border-right: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-nav__head {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-2);\n  min-height: var(--size-top);\n  padding: 0 var(--space-2);\n  color: var(--color-heading);\n}\n.ds-nav__group {\n  margin: var(--space-4) 0 var(--space-1);\n  padding: 0 var(--space-2);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  letter-spacing: calc(var(--text-small) * 0.06);\n  text-transform: uppercase;\n  opacity: 0.7;\n}\n.ds-nav__links {\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  padding: var(--space-1) var(--space-2);\n  color: inherit;\n  border-radius: var(--radius-control);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-body);\n  text-decoration: var(--link-decoration-quiet);\n  text-transform: var(--ui-transform);\n  transition: var(--transition);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  background: color-mix(in srgb, var(--color-bar-alt-text) 8%, transparent);\n  color: var(--color-bar-alt-text);\n}\n.ds-nav__link.is-current {\n  background: color-mix(in srgb, var(--color-bar-alt-text) 14%, transparent);\n  color: var(--color-bar-alt-text);\n}\n.ds-page:not(:has(.ds-view:target)) .ds-nav__links--main .ds-nav__link[href=\"#issues\"],\n.ds-page:has(#issues:target) .ds-nav__links--main .ds-nav__link[href=\"#issues\"],\n.ds-page:has(#issue:target) .ds-nav__links--main .ds-nav__link[href=\"#issues\"],\n.ds-page:has(#deploys:target) .ds-nav__links--main .ds-nav__link[href=\"#deploys\"],\n.ds-page:has(#settings:target) .ds-nav__links--main .ds-nav__link[href=\"#settings\"] {\n  background: color-mix(in srgb, var(--color-bar-alt-text) 14%, transparent);\n  color: var(--color-heading);\n}\n.ds-nav__icon {\n  flex: 0 0 auto;\n  width: var(--size-icon);\n  height: var(--size-icon);\n}\n.ds-nav__label {\n  flex: 1 1 0;\n  min-width: 0;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.ds-nav__foot {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin-top: auto;\n  padding: var(--space-3) var(--space-2);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  font-size: var(--text-small);\n  line-height: var(--line-heading);\n}\n.ds-nav__who {\n  display: block;\n  color: var(--color-heading);\n  font-size: var(--text-ui);\n}\n\n/* top bar: a search field in the form of a command palette, then the one primary action */\n.ds-topbar {\n  grid-column: 2;\n  grid-row: 1;\n  position: sticky;\n  top: 0;\n  z-index: 5;\n  display: flex;\n  align-items: center;\n  gap: var(--space-4);\n  min-width: 0;\n  min-height: var(--size-top);\n  padding: var(--space-2) var(--space-6);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  -webkit-backdrop-filter: blur(var(--backdrop-blur));\n  backdrop-filter: blur(var(--backdrop-blur));\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-topbar__where {\n  flex: 0 0 auto;\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  text-shadow: var(--shadow-text);\n  opacity: 0.7;\n}\n.ds-search {\n  display: flex;\n  align-items: center;\n  flex: 0 1 var(--size-search);\n  gap: var(--space-2);\n  min-width: 0;\n  margin: 0 auto;\n  padding: var(--space-1) var(--space-2) var(--space-1) var(--space-3);\n  background: var(--fill-input);\n  color: var(--color-text-muted);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  line-height: var(--line-body);\n  text-decoration: none;\n  transition: var(--transition);\n}\n.ds-search:hover,\n.ds-search.is-hover {\n  border-color: var(--color-border-strong);\n}\n.ds-search:focus-visible,\n.ds-search.is-focus {\n  border-color: var(--color-focus);\n  outline: var(--focus-ring);\n}\n.ds-search__icon {\n  flex: 0 0 auto;\n  width: var(--size-icon);\n  height: var(--size-icon);\n}\n.ds-search__text {\n  flex: 1 1 auto;\n  min-width: 0;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.ds-topbar__actions {\n  display: flex;\n  align-items: center;\n  flex: 0 0 auto;\n  gap: var(--space-2);\n}\n\n/* hero: the state of the running cycle in one glowing card */\n.ds-hero {\n  position: relative;\n  display: flex;\n  align-items: center;\n  gap: var(--space-6);\n  padding: var(--space-5) var(--space-6);\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-panel);\n  overflow: hidden;\n}\n.ds-hero::before {\n  content: \"\";\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 70%;\n  height: var(--size-glow);\n  background: radial-gradient(ellipse 60% 50% at 80% 0, color-mix(in srgb, var(--color-fill-1) 30%, transparent), transparent 72%);\n  pointer-events: none;\n}\n.ds-hero__copy {\n  position: relative;\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-hero__title {\n  margin: var(--space-2) 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-display);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-hero__lead {\n  max-width: 56ch;\n  margin: 0 0 var(--space-4);\n  color: var(--color-text-muted);\n}\n.ds-hero__actions {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n}\n.ds-hero__art {\n  position: relative;\n  flex: 0 0 34%;\n  min-width: 0;\n}\n.ds-meter {\n  display: grid;\n  grid-template-columns: repeat(12, minmax(0, 1fr));\n  gap: var(--space-1);\n  margin: 0 0 var(--space-3);\n}\n.ds-meter__cell {\n  aspect-ratio: 1;\n  background: var(--color-surface-strong);\n  border-radius: calc(var(--radius-control) * 0.5);\n}\n.ds-meter__cell--done {\n  background: var(--color-fill-1);\n}\n.ds-meter__cell--doing {\n  background: color-mix(in srgb, var(--color-fill-1) 40%, var(--color-surface-strong));\n}\n.ds-meter__cell--late {\n  background: var(--color-warning);\n}\n.ds-meter__key {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  gap: var(--space-1) var(--space-3);\n}\n\n/* page header: breadcrumb, title and a meta line at the left, actions at the right, a rule below */\n.ds-page-header {\n  display: flex;\n  align-items: flex-end;\n  gap: var(--space-5);\n  padding-bottom: var(--space-5);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-page-header__copy {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-page-header__title {\n  margin: var(--space-2) 0 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-page-header__text {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n  margin: var(--space-2) 0 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n}\n.ds-page-header__actions {\n  display: flex;\n  flex-wrap: wrap;\n  flex: 0 0 auto;\n  align-items: center;\n  gap: var(--space-2);\n}\n\n/* stats: four figures in one ruled box */\n.ds-stat {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-stat__item {\n  min-width: 0;\n  padding: var(--space-4);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-stat__item:first-child {\n  border-left: 0;\n}\n.ds-stat__label {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  color: var(--color-text-muted);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  line-height: var(--line-heading);\n}\n.ds-stat__figure {\n  display: block;\n  margin: var(--space-2) 0 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-display);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  font-variant-numeric: tabular-nums;\n}\n.ds-stat__delta {\n  display: block;\n  color: var(--color-success);\n  font-size: var(--text-small);\n}\n.ds-stat__delta--down {\n  color: var(--color-danger);\n}\n\n/* list: issue rows; a state mark, the id, the title, labels, who and when */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-ui);\n}\n.ds-list__group {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-alt);\n  color: var(--color-heading);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n  font-weight: var(--weight-ui);\n}\n.ds-list__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  padding: var(--space-2) var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-list__item:last-child {\n  border-bottom: 0;\n}\n.ds-list__item:hover,\n.ds-list__item.is-hover {\n  background: var(--color-surface-alt);\n}\n.ds-list__id {\n  flex: 0 0 var(--size-id);\n}\n.ds-list__title {\n  flex: 1 1 0;\n  min-width: 0;\n  overflow: hidden;\n  color: var(--color-heading);\n  text-decoration: var(--link-decoration-quiet);\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.ds-list__title:hover,\n.ds-list__title.is-hover {\n  color: var(--color-link);\n}\n.ds-list__meta {\n  display: flex;\n  align-items: center;\n  flex: 0 0 auto;\n  gap: var(--space-2);\n  color: var(--color-text-muted);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n}\n\n/* grid: project cards; the key, the name, a thin bar of progress in the card's fill colour */\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  gap: var(--space-2);\n  min-width: 0;\n  padding: var(--space-4);\n  background: linear-gradient(180deg, color-mix(in srgb, var(--color-fill-1) 12%, transparent), transparent 60%), var(--color-surface);\n  color: var(--color-fill-1);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-panel);\n  text-decoration: none;\n  transition: var(--transition);\n}\n.ds-grid__cell--2 {\n  background: linear-gradient(180deg, color-mix(in srgb, var(--color-fill-2) 12%, transparent), transparent 60%), var(--color-surface);\n  color: var(--color-fill-2);\n}\n.ds-grid__cell--3 {\n  background: linear-gradient(180deg, color-mix(in srgb, var(--color-fill-3) 12%, transparent), transparent 60%), var(--color-surface);\n  color: var(--color-fill-3);\n}\n.ds-grid__cell--4 {\n  background: linear-gradient(180deg, color-mix(in srgb, var(--color-fill-4) 12%, transparent), transparent 60%), var(--color-surface);\n  color: var(--color-fill-4);\n}\n.ds-grid__cell:hover,\n.ds-grid__cell.is-hover {\n  border-color: var(--color-border-strong);\n}\n.ds-grid__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n}\n.ds-grid__text {\n  flex: 1 0 auto;\n  margin: 0;\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n}\n.ds-grid__bar {\n  display: block;\n  height: var(--space-1);\n  background: var(--color-surface-strong);\n  border-radius: var(--radius-pill);\n  overflow: hidden;\n}\n.ds-grid__bar span {\n  display: block;\n  width: 25%;\n  height: 100%;\n  background: currentColor;\n}\n.ds-grid__bar--50 span { width: 50%; }\n.ds-grid__bar--75 span { width: 75%; }\n.ds-grid__bar--90 span { width: 90%; }\n.ds-grid__foot {\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-2);\n}\n.ds-colhead {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  gap: var(--space-3);\n  margin: var(--space-2) 0 calc(var(--space-2) * -1);\n}\n.ds-colhead__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n}\n\n/* tabs: an underlined row on the head of a panel */\n.ds-tabs {\n  display: flex;\n  gap: var(--space-4);\n  margin: 0;\n  padding: 0 var(--space-4);\n  list-style: none;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-tabs__tab {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  margin-bottom: calc(var(--border-width) * -1);\n  padding: var(--space-3) 0;\n  color: var(--color-text-muted);\n  border-bottom: var(--border-width-strong) var(--border-style) transparent;\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  text-decoration: var(--link-decoration-quiet);\n  text-transform: var(--ui-transform);\n  white-space: nowrap;\n  transition: var(--transition);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-heading);\n}\n.ds-tabs__tab.is-current {\n  color: var(--color-heading);\n  border-bottom-color: var(--color-accent-alt);\n}\n\n/* sidebar: the properties of the open item, a key and a value per row */\n.ds-sidebar {\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n  font-size: var(--text-ui);\n}\n.ds-sidebar__title {\n  margin: 0;\n  padding: var(--space-3) var(--space-4);\n  color: var(--color-text-muted);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n  line-height: var(--line-heading);\n  letter-spacing: calc(var(--text-small) * 0.06);\n  text-transform: uppercase;\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  list-style: none;\n}\n.ds-sidebar__item {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--space-2) 0;\n}\n.ds-sidebar__key {\n  flex: 0 0 38%;\n  color: var(--color-text-muted);\n}\n\n/* menu: the sections of a settings page */\n.ds-subnav {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-subnav__link {\n  display: block;\n  padding: var(--space-1) var(--space-3);\n  color: var(--color-link-quiet);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n  line-height: var(--line-body);\n  text-decoration: var(--link-decoration-quiet);\n  transition: var(--transition);\n}\n.ds-subnav__link:hover,\n.ds-subnav__link.is-hover {\n  color: var(--color-heading);\n}\n.ds-subnav__link.is-current {\n  color: var(--color-heading);\n  border-left-color: var(--color-accent-alt);\n}\n\n/* activity: who did what, newest last */\n.ds-activity {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-ui);\n}\n.ds-activity__item {\n  display: flex;\n  align-items: flex-start;\n  gap: var(--space-3);\n  padding: var(--space-3) var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-activity__item:last-child {\n  border-bottom: 0;\n}\n.ds-activity__text {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-activity__text strong {\n  color: var(--color-heading);\n  font-weight: var(--weight-ui);\n}\n\n/* footer: one mono status line under the view */\n.ds-footer {\n  grid-column: 2;\n  grid-row: 3;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2) var(--space-5);\n  min-width: 0;\n  padding: var(--space-3) var(--space-6);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n}\n.ds-footer__status {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-2);\n}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  flex: 1 1 auto;\n  justify-content: flex-end;\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: var(--color-bar-alt-text);\n  text-decoration: var(--link-decoration-quiet);\n  transition: var(--transition);\n}\n.ds-footer__link:hover,\n.ds-footer__link.is-hover {\n  color: var(--color-heading);\n}\n\n/* brand: the mark on a tile dressed like the primary button, the name beside it */\n.ds-brand {\n  display: inline-flex;\n  align-items: center;\n  flex: 0 0 auto;\n  gap: var(--space-2);\n  color: inherit;\n  text-decoration: none;\n}\n.ds-brand__mark {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex: 0 0 auto;\n  width: var(--size-mark);\n  height: var(--size-mark);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\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-size: var(--text-base);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n\n/* small parts used everywhere: the mono label, the key cap, the status dot, the avatar */\n.ds-eyebrow {\n  display: block;\n  margin: 0;\n  color: var(--color-text-muted);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n  line-height: var(--line-heading);\n  letter-spacing: calc(var(--text-small) * 0.06);\n  text-transform: uppercase;\n}\n.ds-eyebrow--accent {\n  color: var(--color-accent-alt);\n}\n.ds-kbd {\n  display: inline-block;\n  padding: 0 var(--space-1);\n  background: var(--color-surface-strong);\n  color: var(--color-text-muted);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: calc(var(--radius-control) * 0.5);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  line-height: var(--line-heading);\n  white-space: nowrap;\n}\n.ds-dot {\n  display: inline-block;\n  flex: 0 0 auto;\n  width: var(--size-dot);\n  height: var(--size-dot);\n  background: var(--color-text-muted);\n  border-radius: 50%;\n}\n.ds-dot--success {\n  background: var(--color-success);\n  box-shadow: 0 0 0 var(--border-width-strong) color-mix(in srgb, var(--color-success) 22%, transparent);\n}\n.ds-dot--warning {\n  background: var(--color-warning);\n  box-shadow: 0 0 0 var(--border-width-strong) color-mix(in srgb, var(--color-warning) 22%, transparent);\n}\n.ds-dot--danger {\n  background: var(--color-danger);\n  box-shadow: 0 0 0 var(--border-width-strong) color-mix(in srgb, var(--color-danger) 22%, transparent);\n}\n.ds-dot--accent {\n  background: var(--color-accent-alt);\n}\n.ds-dot--ring {\n  background: transparent;\n  border: var(--border-width-strong) var(--border-style) var(--color-text-muted);\n}\n.ds-avatar {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  flex: 0 0 auto;\n  width: var(--size-mark);\n  height: var(--size-mark);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: 50%;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  line-height: 1;\n}\n.ds-mono {\n  color: var(--color-text-muted);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  font-variant-numeric: tabular-nums;\n  white-space: nowrap;\n}\n\n/* typography */\n.ds-prose {\n  color: var(--color-text);\n}\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: 0 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  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-prose h1 {\n  font-size: var(--text-h1);\n}\n.ds-prose h2 {\n  margin-top: var(--space-6);\n  font-size: var(--text-h2);\n}\n.ds-prose h3 {\n  margin-top: var(--space-5);\n  color: var(--color-heading-alt);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n}\n.ds-prose > :first-child {\n  margin-top: 0;\n}\n.ds-prose p {\n  margin: 0 0 var(--space-4);\n}\n.ds-prose ul,\n.ds-prose ol {\n  margin: 0 0 var(--space-4);\n  padding-left: var(--space-5);\n}\n.ds-prose li {\n  margin-bottom: var(--space-1);\n}\n.ds-prose li::marker {\n  color: var(--color-text-muted);\n}\n.ds-prose strong {\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n}\n.ds-prose code {\n  padding: 0 var(--space-1);\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  border: var(--border-width) var(--border-style) var(--color-border-muted);\n  border-radius: calc(var(--radius-control) * 0.5);\n  font-family: var(--font-mono);\n  font-size: var(--text-ui);\n}\n.ds-prose a {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration);\n}\n.ds-prose > :last-child {\n  margin-bottom: 0;\n}\n.ds-prose__lead {\n  color: var(--color-text-muted);\n  font-size: var(--text-large);\n}\n\n/* code block: a title strip on the secondary bar, lines in the mono font on the input fill */\n.ds-code {\n  min-width: 0;\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  overflow: hidden;\n}\n.ds-code__head {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  line-height: var(--line-heading);\n}\n.ds-code__name {\n  flex: 1 1 auto;\n  min-width: 0;\n}\n.ds-code__body {\n  display: block;\n  margin: 0;\n  padding: var(--space-4);\n  overflow-x: auto;\n  font-family: var(--font-mono);\n  font-size: var(--text-ui);\n  line-height: var(--line-body);\n  white-space: pre;\n}\n\n/* links */\n.ds-link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration);\n  transition: var(--transition);\n}\n.ds-link:visited,\n.ds-link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-link:hover,\n.ds-link.is-hover {\n  color: var(--color-link-hover);\n  text-decoration: var(--link-decoration-hover);\n}\n.ds-link:active,\n.ds-link.is-active {\n  color: var(--color-link-active);\n}\n.ds-link:focus-visible,\n.ds-link.is-focus {\n  outline: var(--focus-ring);\n  outline-offset: var(--border-width-strong);\n}\n.ds-link--quiet,\n.ds-link--quiet:visited {\n  color: var(--color-link-quiet);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-link--quiet:hover,\n.ds-link--quiet.is-hover {\n  color: var(--color-heading);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-link--more::after {\n  content: \" \\2192\";\n}\n.ds-linkrow {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2) var(--space-5);\n  margin: 0;\n  font-size: var(--text-ui);\n}\n\n/* buttons */\n.ds-button {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: var(--space-2);\n  margin: 0;\n  padding: var(--space-2) var(--space-4);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width) var(--border-style) transparent;\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  text-transform: var(--ui-transform);\n  white-space: nowrap;\n  cursor: pointer;\n  transition: var(--transition);\n}\n.ds-button:hover,\n.ds-button.is-hover {\n  background: var(--fill-button-hover);\n  color: var(--color-button-hover-text);\n  box-shadow: var(--shadow-control-hover);\n}\n.ds-button:active,\n.ds-button.is-active {\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n  outline-offset: var(--border-width-strong);\n}\n.ds-button--secondary {\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n  border-color: var(--color-border-strong);\n}\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--color-surface-strong);\n  color: var(--color-button-secondary-text);\n  border-color: var(--color-text-muted);\n}\n.ds-button--danger {\n  background: color-mix(in srgb, var(--color-danger) 12%, transparent);\n  color: var(--color-danger);\n  border-color: color-mix(in srgb, var(--color-danger) 45%, transparent);\n}\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: color-mix(in srgb, var(--color-danger) 22%, transparent);\n  color: var(--color-danger);\n  border-color: var(--color-danger);\n}\n.ds-button--inverse {\n  background: var(--color-inverse-text);\n  color: var(--color-inverse);\n  box-shadow: none;\n}\n.ds-button--inverse:hover,\n.ds-button--inverse.is-hover {\n  background: color-mix(in srgb, var(--color-inverse-text) 82%, var(--color-inverse));\n  color: var(--color-inverse);\n  box-shadow: none;\n}\n.ds-button--small {\n  padding: var(--space-1) var(--space-3);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  border-color: var(--color-border-muted);\n  box-shadow: none;\n  cursor: default;\n}\n.ds-buttonrow {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2);\n}\n\n/* form */\n.ds-form {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  color: var(--color-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-form__row {\n  display: flex;\n  gap: var(--space-4);\n}\n.ds-form__field {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-2);\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-form__label {\n  color: var(--color-heading);\n  font-weight: var(--weight-ui);\n}\n.ds-form__input,\n.ds-form__select,\n.ds-form__textarea {\n  width: 100%;\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: var(--border-width) var(--border-style) var(--color-input-border);\n  border-radius: var(--radius-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-body);\n  line-height: var(--line-heading);\n  transition: var(--transition);\n}\n.ds-form__input--mono,\n.ds-form__textarea--mono {\n  font-family: var(--font-mono);\n}\n.ds-form__textarea {\n  min-height: calc(var(--space-7) * 2);\n  line-height: var(--line-body);\n  resize: vertical;\n}\n.ds-form__input::placeholder,\n.ds-form__textarea::placeholder {\n  color: var(--color-text-muted);\n  opacity: 1;\n}\n.ds-form__input:hover,\n.ds-form__select:hover,\n.ds-form__textarea:hover {\n  border-color: var(--color-border-strong);\n}\n.ds-form__input:focus,\n.ds-form__select:focus,\n.ds-form__textarea:focus,\n.ds-form__input.is-focus {\n  border-color: var(--color-focus);\n  outline: var(--focus-ring);\n  outline-offset: 0;\n}\n.ds-form__input.is-error {\n  border-color: var(--color-danger);\n}\n.ds-form__error {\n  color: var(--color-danger);\n  font-size: var(--text-small);\n}\n.ds-form__hint {\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-form__check {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n}\n.ds-form__checkbox {\n  margin: 0;\n  accent-color: var(--color-button);\n}\n.ds-form__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n}\n\n/* badge: a small label; the status variants are a tint of their colour with a hairline */\n.ds-badge {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-1);\n  padding: 0 var(--space-2);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  border: var(--border-width) var(--border-style) transparent;\n  border-radius: var(--radius-pill);\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  letter-spacing: 0;\n  text-transform: var(--ui-transform);\n  vertical-align: middle;\n  white-space: nowrap;\n}\n.ds-badge--quiet {\n  background: var(--color-surface-strong);\n  color: var(--color-text);\n  border-color: var(--color-border);\n}\n.ds-badge--new {\n  background: color-mix(in srgb, var(--color-accent-alt) 12%, transparent);\n  color: var(--color-accent-alt);\n  border-color: color-mix(in srgb, var(--color-accent-alt) 32%, transparent);\n}\n.ds-badge--success {\n  background: color-mix(in srgb, var(--color-success) 12%, transparent);\n  color: var(--color-success);\n  border-color: color-mix(in srgb, var(--color-success) 32%, transparent);\n}\n.ds-badge--warning {\n  background: color-mix(in srgb, var(--color-warning) 12%, transparent);\n  color: var(--color-warning);\n  border-color: color-mix(in srgb, var(--color-warning) 32%, transparent);\n}\n.ds-badge--danger {\n  background: color-mix(in srgb, var(--color-danger) 12%, transparent);\n  color: var(--color-danger);\n  border-color: color-mix(in srgb, var(--color-danger) 32%, transparent);\n}\n.ds-badgerow {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n}\n\n/* breadcrumb */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-breadcrumb__item + .ds-breadcrumb__item::before {\n  content: \"/\";\n  margin-right: var(--space-2);\n  color: var(--color-border-strong);\n}\n.ds-breadcrumb__current {\n  color: var(--color-heading);\n}\n\n/* table: hairline rows; the head is a strip of small mono labels on the secondary bar */\n.ds-table {\n  width: 100%;\n  border-collapse: collapse;\n  color: var(--color-text);\n  font-size: var(--text-ui);\n}\n.ds-table th,\n.ds-table td {\n  padding: var(--space-3) var(--space-4);\n  text-align: left;\n  vertical-align: middle;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-table thead th {\n  padding-top: var(--space-2);\n  padding-bottom: var(--space-2);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n  letter-spacing: calc(var(--text-small) * 0.04);\n  text-transform: uppercase;\n  white-space: nowrap;\n}\n.ds-table tbody tr:last-child th,\n.ds-table tbody tr:last-child td {\n  border-bottom: 0;\n}\n.ds-table tbody th {\n  color: var(--color-heading);\n  font-weight: var(--weight-ui);\n}\n.ds-table tbody tr:hover td,\n.ds-table tbody tr:hover th,\n.ds-table tbody tr.is-hover td,\n.ds-table tbody tr.is-hover th {\n  background: var(--color-surface-alt);\n}\n.ds-table .ds-table__num {\n  text-align: right;\n  font-family: var(--font-mono);\n  font-variant-numeric: tabular-nums;\n}\n.ds-table__state {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-2);\n  white-space: nowrap;\n}\n.ds-table__wrap {\n  overflow-x: auto;\n}\n.ds-table__foot {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-3) var(--space-4);\n  color: var(--color-text-muted);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  font-size: var(--text-small);\n}\n\n/* panel: a hairline box on the surface fill */\n.ds-panel {\n  min-width: 0;\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-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  padding: var(--space-3) var(--space-4);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-panel__title {\n  margin: 0;\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-panel__body {\n  padding: var(--space-4);\n}\n.ds-panel__body p {\n  margin: 0 0 var(--space-3);\n}\n.ds-panel__body > :last-child {\n  margin-bottom: 0;\n}\n.ds-panel > .ds-code {\n  border: 0;\n  border-radius: 0 0 calc(var(--radius-panel) - var(--border-width)) calc(var(--radius-panel) - var(--border-width));\n}\n.ds-panel__rows {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-ui);\n}\n.ds-panel__row {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-2) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-panel__row:last-child {\n  border-bottom: 0;\n}\n.ds-panel__key {\n  color: var(--color-text-muted);\n}\n\n/* notice */\n.ds-notice {\n  margin: 0;\n  padding: var(--space-3) var(--space-4);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  border: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-notice-text) 22%, transparent);\n  border-radius: var(--radius-panel);\n  font-size: var(--text-ui);\n}\n.ds-notice--error {\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n  border-color: color-mix(in srgb, var(--color-danger) 40%, transparent);\n}\n.ds-notice__title {\n  font-weight: var(--weight-bold);\n}\n.ds-noticerow {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-2);\n}\n\n/* pagination */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\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  font-size: var(--text-ui);\n}\n.ds-pagination__link {\n  display: block;\n  min-width: calc(var(--space-6) - var(--space-1));\n  padding: var(--space-1) var(--space-2);\n  color: var(--color-link-quiet);\n  border: var(--border-width) var(--border-style) transparent;\n  border-radius: var(--radius-control);\n  line-height: var(--line-heading);\n  text-align: center;\n  text-decoration: var(--link-decoration-quiet);\n  font-variant-numeric: tabular-nums;\n  transition: var(--transition);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-heading);\n  border-color: var(--color-border);\n}\n.ds-pagination__link.is-current {\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  border-color: var(--color-border-strong);\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-disabled-text);\n}\n\n/* dialog: a dimmed block with the box in its middle */\n.ds-dialog {\n  display: flex;\n  justify-content: center;\n  padding: var(--space-6) var(--space-4);\n  background: var(--color-overlay);\n  border: var(--border-width) var(--border-style) var(--color-border-muted);\n  border-radius: var(--radius-panel);\n}\n.ds-dialog__box {\n  width: 100%;\n  max-width: var(--size-dialog);\n  background: var(--color-surface-alt);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-dialog__head {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-4) var(--space-4) 0;\n}\n.ds-dialog__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n}\n.ds-dialog__close {\n  color: var(--color-text-muted);\n  text-decoration: none;\n}\n.ds-dialog__close::before {\n  content: \"\";\n  display: inline-block;\n  width: calc(var(--text-base) * 0.75);\n  height: calc(var(--text-base) * 0.75);\n  background: currentColor;\n  clip-path: polygon(calc(50% - var(--space-2) / 8) 0, calc(50% + var(--space-2) / 8) 0, calc(50% + var(--space-2) / 8) calc(50% - var(--space-2) / 8), 100% calc(50% - var(--space-2) / 8), 100% calc(50% + var(--space-2) / 8), calc(50% + var(--space-2) / 8) calc(50% + var(--space-2) / 8), calc(50% + var(--space-2) / 8) 100%, calc(50% - var(--space-2) / 8) 100%, calc(50% - var(--space-2) / 8) calc(50% + var(--space-2) / 8), 0 calc(50% + var(--space-2) / 8), 0 calc(50% - var(--space-2) / 8), calc(50% - var(--space-2) / 8) calc(50% - var(--space-2) / 8));\n  rotate: 45deg;\n  vertical-align: middle;\n}\n.ds-dialog__body {\n  padding: var(--space-2) var(--space-4) var(--space-4);\n  font-size: var(--text-ui);\n}\n.ds-dialog__body p {\n  margin: 0;\n}\n.ds-dialog__actions {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-end;\n  gap: var(--space-2);\n  padding: var(--space-3) var(--space-4);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n\n/* empty state */\n.ds-empty {\n  padding: var(--space-6) var(--space-4);\n  border: var(--border-width) dashed var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  text-align: center;\n}\n.ds-empty__icon {\n  width: var(--space-6);\n  height: var(--space-6);\n  color: var(--color-text-muted);\n}\n.ds-empty__title {\n  margin: var(--space-2) 0 var(--space-1);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n}\n.ds-empty__text {\n  margin: 0 auto var(--space-4);\n  max-width: 44ch;\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n}\n.ds-panel__body > .ds-linkrow {\n  margin-top: var(--space-4);\n}\n.ds-panel__body > .ds-badgerow + p {\n  margin-top: var(--space-3);\n}\n\n/* the inverted card: the one place the palette turns over */\n.ds-tip {\n  padding: var(--space-4);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  border-radius: var(--radius-panel);\n  font-size: var(--text-ui);\n}\n.ds-tip__title {\n  display: block;\n  font-weight: var(--weight-bold);\n}\n.ds-tip .ds-mono {\n  color: inherit;\n}\n.ds-tip p {\n  margin: var(--space-1) 0 var(--space-3);\n  opacity: 0.75;\n}\n\n/* medium windows: the rail becomes a block across the top with its links in one row */\n@media (max-width: 1000px) {\n  .ds-page {\n    display: block;\n    min-height: 0;\n  }\n  .ds-nav {\n    position: static;\n    flex-direction: row;\n    align-items: center;\n    gap: var(--space-2);\n    height: auto;\n    overflow-x: auto;\n    border-right: 0;\n    border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  }\n  .ds-nav__group,\n  .ds-nav__foot,\n  .ds-nav__head .ds-kbd {\n    display: none;\n  }\n  .ds-nav__links {\n    display: flex;\n    gap: var(--space-1);\n  }\n  .ds-nav__link {\n    white-space: nowrap;\n  }\n  .ds-nav__label {\n    overflow: visible;\n  }\n  .ds-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n  .ds-cols,\n  .ds-cols--side,\n  .ds-cols--even,\n  .ds-cols--menu {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .ds-subnav {\n    display: flex;\n    overflow-x: auto;\n  }\n  .ds-subnav__link {\n    border-left: 0;\n    border-bottom: var(--border-width) var(--border-style) var(--color-border);\n    white-space: nowrap;\n  }\n  .ds-subnav__link.is-current {\n    border-bottom-color: var(--color-accent-alt);\n  }\n}\n\n/* narrow windows: everything in one column */\n@media (max-width: 640px) {\n  .ds-topbar {\n    padding: var(--space-2) var(--space-4);\n    gap: var(--space-2);\n  }\n  .ds-topbar__where,\n  .ds-search .ds-kbd {\n    display: none;\n  }\n  .ds-content {\n    gap: var(--space-4);\n    padding: var(--space-4) var(--space-4) var(--space-6);\n  }\n  .ds-hero {\n    flex-direction: column;\n    align-items: stretch;\n    gap: var(--space-4);\n    padding: var(--space-4);\n  }\n  .ds-hero__copy,\n  .ds-hero__art {\n    flex: 0 0 auto;\n  }\n  .ds-hero__title {\n    font-size: var(--text-h2);\n  }\n  .ds-stat {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n  .ds-stat__item:nth-child(odd) {\n    border-left: 0;\n  }\n  .ds-stat__item:nth-child(n + 3) {\n    border-top: var(--border-width) var(--border-style) var(--color-border);\n  }\n  .ds-list__item {\n    flex-wrap: wrap;\n    gap: var(--space-1) var(--space-2);\n    padding: var(--space-3) var(--space-4);\n  }\n  .ds-list__id {\n    flex: 0 0 auto;\n  }\n  .ds-list__title {\n    flex: 1 1 60%;\n    white-space: normal;\n  }\n  .ds-list__meta {\n    flex: 1 1 100%;\n    flex-wrap: wrap;\n  }\n  .ds-grid {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .ds-page-header {\n    flex-direction: column;\n    align-items: flex-start;\n    gap: var(--space-3);\n  }\n  .ds-page-header__copy {\n    flex: 0 0 auto;\n  }\n  .ds-tabs {\n    overflow-x: auto;\n  }\n  .ds-table {\n    min-width: 64ch;\n  }\n  .ds-form__row {\n    flex-direction: column;\n  }\n  .ds-dialog {\n    padding: var(--space-5) var(--space-3);\n  }\n  .ds-footer {\n    padding: var(--space-3) var(--space-4);\n  }\n  .ds-footer__links {\n    justify-content: flex-start;\n  }\n}\n\n/* menu: a drop-down behind a button in the bar; on a phone it is the way to every view */\n.ds-menu {\n  position: relative;\n  display: inline-block;\n  flex: 0 0 auto;\n}\n.ds-menu__button {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--space-1) var(--space-2);\n  color: var(--color-bar-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  white-space: nowrap;\n  list-style: none;\n  cursor: pointer;\n}\n.ds-menu__button::-webkit-details-marker {\n  display: none;\n}\n.ds-menu__button::after {\n  content: \"\";\n  width: var(--space-1);\n  height: var(--space-1);\n  margin-left: var(--space-1);\n  border-right: var(--border-width) var(--border-style) currentColor;\n  border-bottom: var(--border-width) var(--border-style) currentColor;\n  transform: rotate(45deg);\n}\n.ds-menu__button .ds-avatar {\n  margin: calc(var(--space-1) * -1) 0;\n}\n.ds-menu__button:focus-visible {\n  outline: var(--focus-ring);\n}\n.ds-menu[open] > .ds-menu__button {\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n}\n.ds-menu__list {\n  position: absolute;\n  top: 100%;\n  right: 0;\n  z-index: 30;\n  min-width: calc(var(--size-mark) * 9);\n  margin: var(--space-1) 0 0;\n  padding: var(--space-1);\n  list-style: none;\n  background: var(--color-surface);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n  text-align: left;\n}\n.ds-menu__title {\n  padding: var(--space-2) var(--space-2) var(--space-1);\n  color: var(--color-text-muted);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  white-space: nowrap;\n}\n.ds-menu__title--rule {\n  margin-top: var(--space-1);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-menu__item {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-4);\n  padding: var(--space-1) var(--space-2);\n  color: var(--color-text);\n  border-left: var(--border-width-strong) var(--border-style) var(--color-surface);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  text-decoration: var(--link-decoration-quiet);\n  white-space: nowrap;\n}\n.ds-menu__item:hover,\n.ds-menu__item:focus-visible {\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  border-left-color: var(--color-surface-strong);\n}\n.ds-menu__hint {\n  color: var(--color-text-muted);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n}\n\n/* tooltip: a hint that opens on hover or focus */\n.ds-tooltip {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--space-4);\n  height: var(--space-4);\n  margin-left: var(--space-1);\n  vertical-align: middle;\n  color: var(--color-text-muted);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-pill);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  line-height: 1;\n  letter-spacing: 0;\n  text-transform: none;\n  cursor: help;\n}\n.ds-tooltip:focus-visible {\n  outline: var(--focus-ring);\n}\n.ds-tooltip__tip {\n  position: absolute;\n  bottom: 100%;\n  left: 0;\n  z-index: 20;\n  display: none;\n  width: max-content;\n  max-width: calc(var(--size-mark) * 10);\n  margin-bottom: var(--space-2);\n  padding: var(--space-2) var(--space-3);\n  background: var(--color-inverse);\n  color: var(--color-inverse-text);\n  border-radius: var(--radius-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n  text-align: left;\n  white-space: normal;\n}\n.ds-tooltip:hover .ds-tooltip__tip,\n.ds-tooltip:focus .ds-tooltip__tip {\n  display: block;\n}\n\n/* switch: an on and off setting drawn over a checkbox */\n.ds-switch {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-3);\n  cursor: pointer;\n}\n.ds-switch__input {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  opacity: 0;\n  cursor: pointer;\n}\n.ds-switch__track {\n  position: relative;\n  flex: 0 0 auto;\n  width: calc(var(--space-4) * 2 + var(--space-1));\n  height: calc(var(--space-4) + var(--space-1));\n  background: var(--color-surface-strong);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-pill);\n  transition: var(--transition);\n}\n.ds-switch__track::after {\n  content: \"\";\n  position: absolute;\n  top: var(--border-width-strong);\n  bottom: var(--border-width-strong);\n  left: var(--border-width-strong);\n  width: 40%;\n  background: var(--color-text-muted);\n  border-radius: var(--radius-pill);\n}\n.ds-switch__input:checked + .ds-switch__track {\n  background: var(--color-accent);\n  border-color: var(--color-accent);\n}\n.ds-switch__input:checked + .ds-switch__track::after {\n  left: auto;\n  right: var(--border-width-strong);\n  background: var(--color-accent-text);\n}\n.ds-switch__input:focus-visible + .ds-switch__track {\n  outline: var(--focus-ring);\n}\n.ds-switch__label {\n  font-size: var(--text-ui);\n}\n\n/* progress: a thin bar for a build, a rollout or a quota */\n.ds-progress {\n  display: block;\n  min-width: 0;\n}\n.ds-progress__head {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  gap: var(--space-3);\n  margin-bottom: var(--space-2);\n  color: var(--color-text-muted);\n  font-family: var(--font-mono);\n  font-size: var(--text-small);\n  line-height: var(--line-heading);\n}\n.ds-progress__value {\n  color: var(--color-heading);\n  font-variant-numeric: tabular-nums;\n}\n.ds-progress__bar {\n  display: block;\n  width: 100%;\n  height: var(--size-dot);\n  overflow: hidden;\n  appearance: none;\n  -webkit-appearance: none;\n  background: var(--color-surface-strong);\n  color: var(--color-accent);\n  border: 0;\n  border-radius: var(--radius-pill);\n}\n.ds-progress__bar::-webkit-progress-bar {\n  background: var(--color-surface-strong);\n}\n.ds-progress__bar::-webkit-progress-value {\n  background: var(--color-accent);\n}\n.ds-progress__bar::-moz-progress-bar {\n  background: var(--color-accent);\n}\n.ds-page:not(:has(.ds-view:target)) .ds-menu__item--view[href=\"#issues\"],\n.ds-page:has(#issues:target) .ds-menu__item--view[href=\"#issues\"],\n.ds-page:has(#issue:target) .ds-menu__item--view[href=\"#issues\"],\n.ds-page:has(#deploys:target) .ds-menu__item--view[href=\"#deploys\"],\n.ds-page:has(#settings:target) .ds-menu__item--view[href=\"#settings\"] {\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n  border-left-color: var(--color-accent);\n  font-weight: var(--weight-bold);\n}\n@media (max-width: 640px) {\n  .ds-menu__label {\n    display: none;\n  }\n}\n@media (max-width: 1000px) {\n  .ds-nav__links:not(.ds-nav__links--main) {\n    display: none;\n  }\n}\n@media (max-width: 640px) {\n  .ds-nav__icon {\n    display: none;\n  }\n}\n@media (max-width: 640px) {\n  .ds-nav {\n    gap: var(--space-1);\n    padding-right: var(--space-3);\n    padding-left: var(--space-3);\n  }\n  .ds-nav .ds-nav__link {\n    padding-right: var(--space-2);\n    padding-left: var(--space-2);\n  }\n  .ds-nav .ds-nav__link > :not(.ds-nav__label) {\n    display: none;\n  }\n}\n\n/* phones: the tooltip stays inside the window; the search field takes its own row above the actions */\n@media (max-width: 640px) {\n  .ds-panel__title {\n    position: relative;\n  }\n  .ds-panel__title .ds-tooltip {\n    position: static;\n  }\n  .ds-panel__title .ds-tooltip__tip {\n    max-width: min(calc(var(--size-mark) * 10), calc(100vw - var(--space-4) * 4));\n  }\n  .ds-topbar {\n    flex-wrap: wrap;\n  }\n  .ds-search,\n  .ds-topbar__actions {\n    flex: 1 0 100%;\n  }\n  .ds-topbar__actions > .ds-menu {\n    margin-left: auto;\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: dark developer tools issue tracker specimen</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  <div class=\"ds-nav__head\">\n    <a class=\"ds-brand\" data-component=\"brand\" href=\"#issues\">\n      <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><polygon points=\"20,3 8,3 3,12 8,21 20,21 20,16.5 10.6,16.5 8.1,12 10.6,7.5 20,7.5\"/><polygon points=\"16,9.6 18.4,12 16,14.4 13.6,12\"/></svg></span>\n      <span class=\"ds-brand__name\">chronoskin</span>\n    </a>\n    <span class=\"ds-kbd\">G I</span>\n  </div>\n  <p class=\"ds-nav__group\">Workspace</p>\n  <ul class=\"ds-nav__links ds-nav__links--main\">\n    <li><a class=\"ds-nav__link\" href=\"#issues\"><svg class=\"ds-nav__icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\" aria-hidden=\"true\"><circle cx=\"8\" cy=\"8\" r=\"5.5\"/><path d=\"M5.5 8l2 2 3-4\"/></svg><span class=\"ds-nav__label\">Issues</span><span class=\"ds-badge ds-badge--quiet\">23</span></a></li>\n    <li><a class=\"ds-nav__link\" href=\"#deploys\"><svg class=\"ds-nav__icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\" aria-hidden=\"true\"><path d=\"M8 2l5.5 10h-11z\"/></svg><span class=\"ds-nav__label\">Deployments</span></a></li>\n    <li><a class=\"ds-nav__link\" href=\"#settings\"><svg class=\"ds-nav__icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\" aria-hidden=\"true\"><path d=\"M2 5h12 M2 11h12\"/><circle cx=\"6\" cy=\"5\" r=\"1.8\" fill=\"currentColor\"/><circle cx=\"10\" cy=\"11\" r=\"1.8\" fill=\"currentColor\"/></svg><span class=\"ds-nav__label\">Settings</span></a></li>\n  </ul>\n  <p class=\"ds-nav__group\">Teams</p>\n  <ul class=\"ds-nav__links\">\n    <li><a class=\"ds-nav__link\" href=\"#issues\"><span class=\"ds-dot ds-dot--accent\"></span><span class=\"ds-nav__label\">Web</span><span class=\"ds-mono\">WEB</span></a></li>\n    <li><a class=\"ds-nav__link\" href=\"#issues\"><span class=\"ds-dot ds-dot--success\"></span><span class=\"ds-nav__label\">Platform</span><span class=\"ds-mono\">PLT</span></a></li>\n    <li><a class=\"ds-nav__link\" href=\"#issues\"><span class=\"ds-dot ds-dot--warning\"></span><span class=\"ds-nav__label\">Mobile</span><span class=\"ds-mono\">MOB</span></a></li>\n  </ul>\n  <div class=\"ds-nav__foot\">\n    <span class=\"ds-avatar\" aria-hidden=\"true\">RV</span>\n    <span><span class=\"ds-nav__who\">Runa Vestergaard</span>Northwind, admin</span>\n  </div>\n</header>\n\n<div class=\"ds-topbar\">\n  <span class=\"ds-topbar__where\">northwind / web</span>\n  <a class=\"ds-search\" href=\"#issues\" aria-label=\"Search or run a command\">\n    <svg class=\"ds-search__icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\" aria-hidden=\"true\"><circle cx=\"7\" cy=\"7\" r=\"4.5\"/><path d=\"M10.5 10.5L14 14\"/></svg>\n    <span class=\"ds-search__text\">Search issues or run a command</span>\n    <span class=\"ds-kbd\">Ctrl K</span>\n  </a>\n  <div class=\"ds-topbar__actions\">\n    <a class=\"ds-button ds-button--secondary ds-button--small\" href=\"#deploys\">Deploy</a>\n    <a class=\"ds-button ds-button--small\" href=\"#issue\">New issue</a>\n    <details class=\"ds-menu\"><summary class=\"ds-menu__button\"><span class=\"ds-avatar\" aria-hidden=\"true\">RV</span><span class=\"ds-menu__label\">Runa</span></summary><ul class=\"ds-menu__list\"><li class=\"ds-menu__title\">Workspace</li><li><a class=\"ds-menu__item ds-menu__item--view\" href=\"#issues\">Issues</a></li><li><a class=\"ds-menu__item ds-menu__item--view\" href=\"#deploys\">Deployments</a></li><li><a class=\"ds-menu__item ds-menu__item--view\" href=\"#settings\">Settings</a></li><li class=\"ds-menu__title ds-menu__title--rule\">Teams</li><li><a class=\"ds-menu__item\" href=\"#issues\">Web <span class=\"ds-menu__hint\">WEB</span></a></li><li><a class=\"ds-menu__item\" href=\"#issues\">Platform <span class=\"ds-menu__hint\">PLT</span></a></li><li><a class=\"ds-menu__item\" href=\"#issues\">Mobile <span class=\"ds-menu__hint\">MOB</span></a></li><li class=\"ds-menu__title ds-menu__title--rule\">Runa Vestergaard, admin</li><li><a class=\"ds-menu__item\" href=\"#settings\">Shortcuts</a></li><li><a class=\"ds-menu__item\" href=\"#issues\">Sign out</a></li></ul></details>\n  </div>\n</div>\n\n<section class=\"ds-view ds-view--home\" id=\"issues\">\n  <div class=\"ds-content\">\n    <div class=\"ds-hero\" data-component=\"hero\">\n      <div class=\"ds-hero__copy\">\n        <span class=\"ds-eyebrow ds-eyebrow--accent\">Cycle 14 / ends Friday</span>\n        <h1 class=\"ds-hero__title\">9 of 23 issues done, 3 days left</h1>\n        <p class=\"ds-hero__lead\">The team closes about four issues a day, so this cycle lands on time if nothing new is pulled in.</p>\n        <div class=\"ds-hero__actions\">\n          <a class=\"ds-button\" href=\"#issue\">New issue</a>\n          <a class=\"ds-button ds-button--secondary is-hover\" href=\"#deploys\">See what shipped</a>\n        </div>\n      </div>\n      <div class=\"ds-hero__art\" aria-hidden=\"true\">\n        <div class=\"ds-meter\">\n          <span class=\"ds-meter__cell ds-meter__cell--done\"></span><span class=\"ds-meter__cell ds-meter__cell--done\"></span><span class=\"ds-meter__cell ds-meter__cell--done\"></span><span class=\"ds-meter__cell ds-meter__cell--done\"></span><span class=\"ds-meter__cell ds-meter__cell--done\"></span><span class=\"ds-meter__cell ds-meter__cell--done\"></span><span class=\"ds-meter__cell ds-meter__cell--done\"></span><span class=\"ds-meter__cell ds-meter__cell--done\"></span><span class=\"ds-meter__cell ds-meter__cell--done\"></span><span class=\"ds-meter__cell ds-meter__cell--doing\"></span><span class=\"ds-meter__cell ds-meter__cell--doing\"></span><span class=\"ds-meter__cell ds-meter__cell--doing\"></span>\n          <span class=\"ds-meter__cell ds-meter__cell--doing\"></span><span class=\"ds-meter__cell ds-meter__cell--doing\"></span><span class=\"ds-meter__cell ds-meter__cell--doing\"></span><span class=\"ds-meter__cell ds-meter__cell--late\"></span><span class=\"ds-meter__cell ds-meter__cell--late\"></span><span class=\"ds-meter__cell\"></span><span class=\"ds-meter__cell\"></span><span class=\"ds-meter__cell\"></span><span class=\"ds-meter__cell\"></span><span class=\"ds-meter__cell\"></span><span class=\"ds-meter__cell\"></span><span class=\"ds-meter__cell\"></span>\n        </div>\n        <div class=\"ds-meter__key\"><span class=\"ds-mono\">9 done</span><span class=\"ds-mono\">6 in progress</span><span class=\"ds-mono\">2 blocked</span><span class=\"ds-mono\">6 todo</span></div>\n      </div>\n    </div>\n\n    <ul class=\"ds-stat\" data-component=\"stats\">\n      <li class=\"ds-stat__item\"><span class=\"ds-stat__label\"><span class=\"ds-dot ds-dot--ring\"></span>Open issues</span><span class=\"ds-stat__figure\">14</span><span class=\"ds-stat__delta\">3 fewer than Monday</span></li>\n      <li class=\"ds-stat__item\"><span class=\"ds-stat__label\"><span class=\"ds-dot ds-dot--warning\"></span>In review</span><span class=\"ds-stat__figure\">5</span><span class=\"ds-stat__delta\">2 waiting on you</span></li>\n      <li class=\"ds-stat__item\"><span class=\"ds-stat__label\"><span class=\"ds-dot ds-dot--success\"></span>Deployed this week</span><span class=\"ds-stat__figure\">31</span><span class=\"ds-stat__delta\">all healthy</span></li>\n      <li class=\"ds-stat__item\"><span class=\"ds-stat__label\"><span class=\"ds-dot ds-dot--danger\"></span>Median time to close</span><span class=\"ds-stat__figure\">2.4 d</span><span class=\"ds-stat__delta ds-stat__delta--down\">0.3 d slower</span></li>\n    </ul>\n\n    <div class=\"ds-cols\">\n      <section class=\"ds-panel\" data-component=\"panel\">\n        <div class=\"ds-panel__head\">\n          <h2 class=\"ds-panel__title\">Active issues</h2>\n          <a class=\"ds-link ds-link--more\" href=\"#issues\">All 23</a>\n        </div>\n        <ul class=\"ds-list\" data-component=\"list\">\n          <li class=\"ds-list__group\"><span class=\"ds-dot ds-dot--warning\"></span>In progress <span class=\"ds-mono\">3</span></li>\n          <li class=\"ds-list__item\"><span class=\"ds-dot ds-dot--warning\"></span><span class=\"ds-mono ds-list__id\">WEB-142</span><a class=\"ds-list__title\" href=\"#issue\">Retry uploads that time out on slow connections</a><span class=\"ds-list__meta\"><span class=\"ds-badge ds-badge--danger\">Bug</span><span class=\"ds-avatar\">RV</span>12 Mar</span></li>\n          <li class=\"ds-list__item is-hover\"><span class=\"ds-dot ds-dot--warning\"></span><span class=\"ds-mono ds-list__id\">WEB-139</span><a class=\"ds-list__title\" href=\"#issue\">Export usage as CSV from the billing page</a><span class=\"ds-list__meta\"><span class=\"ds-badge ds-badge--quiet\">Feature</span><span class=\"ds-avatar\">IS</span>11 Mar</span></li>\n          <li class=\"ds-list__item\"><span class=\"ds-dot ds-dot--warning\"></span><span class=\"ds-mono ds-list__id\">PLT-88</span><a class=\"ds-list__title\" href=\"#issue\">Move session storage to the new cache cluster</a><span class=\"ds-list__meta\"><span class=\"ds-badge ds-badge--warning\">Infra</span><span class=\"ds-avatar\">KO</span>10 Mar</span></li>\n          <li class=\"ds-list__group\"><span class=\"ds-dot ds-dot--ring\"></span>Todo <span class=\"ds-mono\">4</span></li>\n          <li class=\"ds-list__item\"><span class=\"ds-dot ds-dot--ring\"></span><span class=\"ds-mono ds-list__id\">WEB-147</span><a class=\"ds-list__title\" href=\"#issue\">Keyboard shortcut list does not open on Firefox</a><span class=\"ds-list__meta\"><span class=\"ds-badge ds-badge--danger\">Bug</span><span class=\"ds-avatar\">AO</span>12 Mar</span></li>\n          <li class=\"ds-list__item\"><span class=\"ds-dot ds-dot--ring\"></span><span class=\"ds-mono ds-list__id\">WEB-145</span><a class=\"ds-list__title\" href=\"#issue\">Show the deploy that closed an issue on its page</a><span class=\"ds-list__meta\"><span class=\"ds-badge ds-badge--quiet\">Feature</span><span class=\"ds-avatar\">RV</span>11 Mar</span></li>\n          <li class=\"ds-list__item\"><span class=\"ds-dot ds-dot--ring\"></span><span class=\"ds-mono ds-list__id\">MOB-31</span><a class=\"ds-list__title\" href=\"#issue\">Offline drafts lose their labels after a sync</a><span class=\"ds-list__meta\"><span class=\"ds-badge ds-badge--danger\">Bug</span><span class=\"ds-avatar\">TN</span>9 Mar</span></li>\n          <li class=\"ds-list__item\"><span class=\"ds-dot ds-dot--ring\"></span><span class=\"ds-mono ds-list__id\">PLT-91</span><a class=\"ds-list__title\" href=\"#issue\">Rotate the signing keys before April</a><span class=\"ds-list__meta\"><span class=\"ds-badge ds-badge--warning\">Infra</span><span class=\"ds-avatar\">KO</span>8 Mar</span></li>\n        </ul>\n      </section>\n\n      <div class=\"ds-stack\">\n        <section class=\"ds-panel ds-panel--grow\">\n          <div class=\"ds-panel__head\"><h2 class=\"ds-panel__title\">Latest deployments <span class=\"ds-tooltip\" tabindex=\"0\">?<span class=\"ds-tooltip__tip\" role=\"tooltip\">Every push builds a deployment. The time is since the build finished.</span></span></h2><a class=\"ds-link ds-link--more\" href=\"#deploys\">All</a></div>\n          <div class=\"ds-panel__body\">\n            <ul class=\"ds-panel__rows\">\n              <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--success\"></span>main</span><span class=\"ds-mono\">7be02d1 / 4m</span></li>\n              <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--warning\"></span>fix/retry-uploads</span><span class=\"ds-mono\">a41f9c2 / now</span></li>\n              <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--success\"></span>feat/usage-export</span><span class=\"ds-mono\">c93a771 / 26m</span></li>\n              <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--danger\"></span>chore/bump-runtime</span><span class=\"ds-mono\">19d4e0b / 1h</span></li>\n              <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--success\"></span>docs/shortcuts</span><span class=\"ds-mono\">52f8a36 / 3h</span></li>\n            </ul>\n          </div>\n        </section>\n        <div class=\"ds-tip\">\n          <span class=\"ds-tip__title\">Close issues from a commit</span>\n          <p>Write <span class=\"ds-mono\">fixes WEB-142</span> in the message and the issue closes when the commit is deployed.</p>\n          <a class=\"ds-button ds-button--inverse ds-button--small\" href=\"#settings\">Connect a repository</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"ds-colhead\"><h2 class=\"ds-colhead__title\">Projects</h2><span class=\"ds-mono\">4 active</span></div>\n    <div class=\"ds-grid\" data-component=\"grid\">\n      <a class=\"ds-grid__cell\" href=\"#issues\">\n        <span class=\"ds-mono\">WEB / Q1</span>\n        <h3 class=\"ds-grid__title\">Resilient uploads</h3>\n        <p class=\"ds-grid__text\">Uploads survive a dropped connection.</p>\n        <span class=\"ds-grid__bar ds-grid__bar--75\"><span></span></span>\n        <span class=\"ds-grid__foot\"><span class=\"ds-mono\">9 of 12</span><span class=\"ds-mono\">due 28 Mar</span></span>\n      </a>\n      <a class=\"ds-grid__cell ds-grid__cell--2\" href=\"#issues\">\n        <span class=\"ds-mono\">WEB / Q1</span>\n        <h3 class=\"ds-grid__title\">Billing exports</h3>\n        <p class=\"ds-grid__text\">Usage and invoices as files.</p>\n        <span class=\"ds-grid__bar ds-grid__bar--50\"><span></span></span>\n        <span class=\"ds-grid__foot\"><span class=\"ds-mono\">4 of 8</span><span class=\"ds-mono\">due 4 Apr</span></span>\n      </a>\n      <a class=\"ds-grid__cell ds-grid__cell--3\" href=\"#issues\">\n        <span class=\"ds-mono\">PLT / Q1</span>\n        <h3 class=\"ds-grid__title\">Cache migration</h3>\n        <p class=\"ds-grid__text\">Sessions move to the new cluster.</p>\n        <span class=\"ds-grid__bar ds-grid__bar--90\"><span></span></span>\n        <span class=\"ds-grid__foot\"><span class=\"ds-mono\">10 of 11</span><span class=\"ds-mono\">due 21 Mar</span></span>\n      </a>\n      <a class=\"ds-grid__cell ds-grid__cell--4\" href=\"#issues\">\n        <span class=\"ds-mono\">MOB / Q2</span>\n        <h3 class=\"ds-grid__title\">Offline mode</h3>\n        <p class=\"ds-grid__text\">Drafts and comments without a signal.</p>\n        <span class=\"ds-grid__bar\"><span></span></span>\n        <span class=\"ds-grid__foot\"><span class=\"ds-mono\">3 of 14</span><span class=\"ds-mono\">due 30 May</span></span>\n      </a>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"issue\">\n  <div class=\"ds-content\">\n    <header class=\"ds-page-header\" data-component=\"page-header\">\n      <div class=\"ds-page-header__copy\">\n        <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#issues\">Issues</a></li>\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#issues\">Web</a></li>\n          <li class=\"ds-breadcrumb__item ds-breadcrumb__current\">WEB-142</li>\n        </ol>\n        <h1 class=\"ds-page-header__title\">Retry uploads that time out on slow connections</h1>\n        <p class=\"ds-page-header__text\"><span class=\"ds-badge ds-badge--warning\"><span class=\"ds-dot ds-dot--warning\"></span> In progress</span> Opened by Imre Solvang on 10 March 2025, 4 comments</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#issues\">Back to issues</a>\n        <a class=\"ds-button\" href=\"#issues\">Mark as done</a>\n      </div>\n    </header>\n\n    <div class=\"ds-cols ds-cols--side\">\n      <div class=\"ds-stack\">\n        <section class=\"ds-panel\">\n          <div class=\"ds-panel__body\">\n            <article class=\"ds-prose\" data-component=\"typography\">\n              <h1>What goes wrong</h1>\n              <p class=\"ds-prose__lead\">An upload over 20 MB fails for good when the connection stalls for more than ten seconds.</p>\n              <p>The client sends the file in one request. When that request times out the whole upload is <strong>thrown away</strong>, and the user starts again from zero.</p>\n              <h2>Proposed fix</h2>\n              <ul>\n                <li>Send the file in parts of 5 MB</li>\n                <li>Retry a failed part up to three times, waiting longer each time</li>\n                <li>Keep finished parts for an hour so a reload can resume</li>\n              </ul>\n              <h3>How to check it</h3>\n              <p>Throttle the network to 200 kbit/s, upload <code>fixtures/large.bin</code> and pull the cable for fifteen seconds.</p>\n            </article>\n          </div>\n        </section>\n\n        <section class=\"ds-panel\">\n          <div class=\"ds-panel__head\"><h2 class=\"ds-panel__title\">Activity</h2><span class=\"ds-mono\">newest last</span></div>\n          <ul class=\"ds-activity\">\n            <li class=\"ds-activity__item\"><span class=\"ds-avatar\">IS</span><span class=\"ds-activity__text\"><strong>Imre Solvang</strong> opened the issue and added the label Bug</span><span class=\"ds-mono\">10 Mar</span></li>\n            <li class=\"ds-activity__item\"><span class=\"ds-avatar\">RV</span><span class=\"ds-activity__text\"><strong>Runa Vestergaard</strong> moved it from Todo to In progress</span><span class=\"ds-mono\">11 Mar</span></li>\n            <li class=\"ds-activity__item\"><span class=\"ds-avatar\">RV</span><span class=\"ds-activity__text\"><strong>Runa Vestergaard</strong> pushed <span class=\"ds-kbd\">a41f9c2</span> to fix/retry-uploads. The preview is building.</span><span class=\"ds-mono\">now</span></li>\n          </ul>\n        </section>\n\n        <div class=\"ds-dialog\" data-component=\"dialog\">\n          <div class=\"ds-dialog__box\" role=\"dialog\" aria-labelledby=\"dialog-title\">\n            <div class=\"ds-dialog__head\">\n              <h2 class=\"ds-dialog__title\" id=\"dialog-title\">Delete WEB-142?</h2>\n              <a class=\"ds-dialog__close\" href=\"#issue\" aria-label=\"Close\"></a>\n            </div>\n            <div class=\"ds-dialog__body\">\n              <p>The issue, its 4 comments and its history are removed for everyone. The branch and its deployments stay.</p>\n            </div>\n            <div class=\"ds-dialog__actions\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#issue\">Keep it</a>\n              <a class=\"ds-button ds-button--danger\" href=\"#issues\">Delete issue</a>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"ds-stack\">\n        <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n          <h2 class=\"ds-sidebar__title\">Properties</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__key\">Status</span><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--warning\"></span><a class=\"ds-link ds-link--quiet\" href=\"#issues\">In progress</a></span></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__key\">Assignee</span><a class=\"ds-link ds-link--quiet\" href=\"#issues\">Runa Vestergaard</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__key\">Priority</span><a class=\"ds-link ds-link--quiet\" href=\"#issues\">High</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__key\">Project</span><a class=\"ds-link\" href=\"#issues\">Resilient uploads</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__key\">Cycle</span><a class=\"ds-link\" href=\"#issues\">Cycle 14</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__key\">Branch</span><span class=\"ds-mono\">fix/retry-uploads</span></li>\n          </ul>\n        </aside>\n        <section class=\"ds-panel\">\n          <div class=\"ds-panel__head\"><h2 class=\"ds-panel__title\">Actions</h2></div>\n          <div class=\"ds-panel__body\">\n            <div class=\"ds-buttonrow\" data-component=\"buttons\">\n              <a class=\"ds-button\" href=\"#issues\">Mark as done</a>\n              <a class=\"ds-button ds-button--secondary\" href=\"#issue\">Assign</a>\n              <button class=\"ds-button\" type=\"button\" disabled>Merge</button>\n              <a class=\"ds-button ds-button--danger\" href=\"#issue\">Delete</a>\n            </div>\n          </div>\n        </section>\n        <section class=\"ds-panel ds-panel--grow\">\n          <div class=\"ds-panel__head\"><h2 class=\"ds-panel__title\">Linked</h2></div>\n          <div class=\"ds-panel__body\">\n            <ul class=\"ds-panel__rows\">\n              <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--warning\"></span>Preview</span><a class=\"ds-link\" href=\"#deploys\">a41f9c2</a></li>\n              <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--ring\"></span>Blocks</span><a class=\"ds-link is-visited\" href=\"#issue\">WEB-145</a></li>\n              <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--success\"></span>Related</span><a class=\"ds-link\" href=\"#issue\">MOB-31</a></li>\n            </ul>\n          </div>\n        </section>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"deploys\">\n  <div class=\"ds-content\">\n    <header class=\"ds-page-header\">\n      <div class=\"ds-page-header__copy\">\n        <ol class=\"ds-breadcrumb\">\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#issues\">Northwind</a></li>\n          <li class=\"ds-breadcrumb__item ds-breadcrumb__current\">Deployments</li>\n        </ol>\n        <h1 class=\"ds-page-header__title\">Deployments</h1>\n        <p class=\"ds-page-header__text\">Every build of every branch, and the issues each one closed.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#settings\">Environments</a>\n        <a class=\"ds-button\" href=\"#deploys\">Deploy main</a>\n      </div>\n    </header>\n\n    <section class=\"ds-panel\">\n      <ul class=\"ds-tabs\" data-component=\"tabs\">\n        <li><a class=\"ds-tabs__tab is-current\" href=\"#deploys\">All <span class=\"ds-mono\">128</span></a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#deploys\">Production <span class=\"ds-mono\">31</span></a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#deploys\">Preview <span class=\"ds-mono\">94</span></a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#deploys\">Failed <span class=\"ds-mono\">3</span></a></li>\n      </ul>\n      <div class=\"ds-table__wrap\">\n        <table class=\"ds-table\" data-component=\"table\">\n          <thead>\n            <tr><th scope=\"col\">Branch</th><th scope=\"col\">Commit</th><th scope=\"col\">State</th><th scope=\"col\">Closes</th><th scope=\"col\">By</th><th scope=\"col\" class=\"ds-table__num\">Build, s</th><th scope=\"col\" class=\"ds-table__num\">Size, kB</th></tr>\n          </thead>\n          <tbody>\n            <tr><th scope=\"row\">fix/retry-uploads</th><td><span class=\"ds-mono\">a41f9c2</span></td><td><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--warning\"></span>Building</span></td><td><a class=\"ds-link\" href=\"#issue\">WEB-142</a></td><td>Runa V.</td><td class=\"ds-table__num\">41</td><td class=\"ds-table__num\">812</td></tr>\n            <tr class=\"is-hover\"><th scope=\"row\">main</th><td><span class=\"ds-mono\">7be02d1</span></td><td><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--success\"></span>Production</span></td><td><a class=\"ds-link\" href=\"#issue\">WEB-136</a></td><td>Imre S.</td><td class=\"ds-table__num\">38</td><td class=\"ds-table__num\">806</td></tr>\n            <tr><th scope=\"row\">feat/usage-export</th><td><span class=\"ds-mono\">c93a771</span></td><td><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--success\"></span>Preview</span></td><td><a class=\"ds-link\" href=\"#issue\">WEB-139</a></td><td>Imre S.</td><td class=\"ds-table__num\">44</td><td class=\"ds-table__num\">831</td></tr>\n            <tr><th scope=\"row\">chore/bump-runtime</th><td><span class=\"ds-mono\">19d4e0b</span></td><td><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--danger\"></span>Failed</span></td><td>none</td><td>Kofi O.</td><td class=\"ds-table__num\">12</td><td class=\"ds-table__num\">0</td></tr>\n            <tr><th scope=\"row\">docs/shortcuts</th><td><span class=\"ds-mono\">52f8a36</span></td><td><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--success\"></span>Preview</span></td><td><a class=\"ds-link\" href=\"#issue\">WEB-147</a></td><td>Ada O.</td><td class=\"ds-table__num\">36</td><td class=\"ds-table__num\">806</td></tr>\n            <tr><th scope=\"row\">spike/edge-cache</th><td><span class=\"ds-mono\">e07b115</span></td><td><span class=\"ds-table__state\"><span class=\"ds-dot\"></span>Expired</span></td><td>none</td><td>Kofi O.</td><td class=\"ds-table__num\">52</td><td class=\"ds-table__num\">904</td></tr>\n          </tbody>\n        </table>\n      </div>\n      <div class=\"ds-table__foot\">\n        <span>Showing 6 of 128 deployments</span>\n        <ul class=\"ds-pagination\" data-component=\"pagination\">\n          <li><a class=\"ds-pagination__link is-disabled\" href=\"#deploys\">Previous</a></li>\n          <li><a class=\"ds-pagination__link is-current\" href=\"#deploys\">1</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#deploys\">2</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#deploys\">3</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#deploys\">22</a></li>\n          <li><a class=\"ds-pagination__link\" href=\"#deploys\">Next</a></li>\n        </ul>\n      </div>\n    </section>\n\n    <div class=\"ds-cols ds-cols--even\">\n      <div class=\"ds-empty\" data-component=\"empty\">\n        <svg class=\"ds-empty__icon\" viewBox=\"0 0 32 32\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" aria-hidden=\"true\"><path d=\"M16 5l12 21H4z\"/><path d=\"M16 13v6 M16 22v1\"/></svg>\n        <h2 class=\"ds-empty__title\">No incidents this cycle</h2>\n        <p class=\"ds-empty__text\">A failed production deployment or a rollback would be listed here with the issue that caused it.</p>\n        <a class=\"ds-button ds-button--secondary ds-button--small\" href=\"#settings\">Set up alerts</a>\n      </div>\n      <section class=\"ds-panel\">\n        <div class=\"ds-panel__head\"><h2 class=\"ds-panel__title\">Environments</h2><a class=\"ds-link ds-link--more\" href=\"#settings\">Manage</a></div>\n        <div class=\"ds-panel__body\">\n          <ul class=\"ds-panel__rows\">\n            <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--success\"></span>Production</span><span class=\"ds-mono\">7be02d1 / 3 regions</span></li>\n            <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--success\"></span>Staging</span><span class=\"ds-mono\">c93a771 / 1 region</span></li>\n            <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot ds-dot--warning\"></span>Preview</span><span class=\"ds-mono\">12 live / expire in 14 d</span></li>\n            <li class=\"ds-panel__row\"><span class=\"ds-table__state\"><span class=\"ds-dot\"></span>Sandbox</span><span class=\"ds-mono\">paused</span></li>\n          </ul>\n        </div>\n        <div class=\"ds-panel__body\"><div class=\"ds-progress\"><div class=\"ds-progress__head\"><span>Building fix/retry-uploads, a41f9c2</span><span class=\"ds-progress__value\">step 5 of 8</span></div><progress class=\"ds-progress__bar\" value=\"62\" max=\"100\">62%</progress></div></div>\n      </section>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"settings\">\n  <div class=\"ds-content\">\n    <header class=\"ds-page-header\">\n      <div class=\"ds-page-header__copy\">\n        <ol class=\"ds-breadcrumb\">\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#issues\">Northwind</a></li>\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#settings\">Settings</a></li>\n          <li class=\"ds-breadcrumb__item ds-breadcrumb__current\">Workspace</li>\n        </ol>\n        <h1 class=\"ds-page-header__title\">Workspace settings</h1>\n        <p class=\"ds-page-header__text\">Name, address and defaults for everyone in Northwind.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#issues\">Discard changes</a>\n      </div>\n    </header>\n\n    <div class=\"ds-cols ds-cols--menu\">\n      <ul class=\"ds-subnav\">\n        <li><a class=\"ds-subnav__link is-current\" href=\"#settings\">Workspace</a></li>\n        <li><a class=\"ds-subnav__link\" href=\"#settings\">Members</a></li>\n        <li><a class=\"ds-subnav__link\" href=\"#settings\">Labels</a></li>\n        <li><a class=\"ds-subnav__link\" href=\"#settings\">Repositories</a></li>\n        <li><a class=\"ds-subnav__link\" href=\"#settings\">API keys</a></li>\n        <li><a class=\"ds-subnav__link\" href=\"#settings\">Billing</a></li>\n      </ul>\n\n      <div class=\"ds-stack\">\n        <div class=\"ds-noticerow\" data-component=\"notice\">\n          <p class=\"ds-notice\"><span class=\"ds-notice__title\">Changes apply to all 14 members.</span> Their open tabs pick them up on the next reload.</p>\n          <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__title\">The settings were not saved.</span> Fix the highlighted field and save again.</p>\n        </div>\n        <section class=\"ds-panel\">\n          <div class=\"ds-panel__head\"><h2 class=\"ds-panel__title\">General</h2><span class=\"ds-mono\">id ws_8f2c41</span></div>\n          <div class=\"ds-panel__body\">\n            <form class=\"ds-form\" data-component=\"form\" action=\"#settings\">\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__field\"><span class=\"ds-form__label\">Workspace name</span><input class=\"ds-form__input\" type=\"text\" value=\"Northwind\"></label>\n                <label class=\"ds-form__field\"><span class=\"ds-form__label\">Address</span><input class=\"ds-form__input ds-form__input--mono is-error\" type=\"text\" value=\"north wind\"><span class=\"ds-form__error\">Use lowercase letters, digits and hyphens only.</span></label>\n              </div>\n              <div class=\"ds-form__row\">\n                <label class=\"ds-form__field\"><span class=\"ds-form__label\">Issue prefix</span><input class=\"ds-form__input ds-form__input--mono is-focus\" type=\"text\" placeholder=\"WEB\"></label>\n                <label class=\"ds-form__field\"><span class=\"ds-form__label\">Cycle length</span>\n                  <select class=\"ds-form__select\"><option>Two weeks, starting Monday</option><option>One week, starting Monday</option><option>No cycles</option></select>\n                </label>\n              </div>\n              <label class=\"ds-form__field\"><span class=\"ds-form__label\">Template for new issues</span><textarea class=\"ds-form__textarea ds-form__textarea--mono\" rows=\"3\" placeholder=\"## What goes wrong&#10;## How to check it\"></textarea><span class=\"ds-form__hint\">Markdown. Shown when someone presses New issue.</span></label>\n              <label class=\"ds-switch\"><input class=\"ds-switch__input\" type=\"checkbox\" checked><span class=\"ds-switch__track\"></span><span class=\"ds-switch__label\">Close an issue when the commit that fixes it reaches production</span></label>\n              <div class=\"ds-form__actions\">\n                <button class=\"ds-button\" type=\"submit\">Save changes</button>\n                <a class=\"ds-button ds-button--secondary\" href=\"#settings\">Reset</a>\n              </div>\n            </form>\n          </div>\n        </section>\n\n        <div class=\"ds-cols ds-cols--even\">\n          <section class=\"ds-panel\">\n            <div class=\"ds-panel__head\"><h2 class=\"ds-panel__title\">Labels</h2><a class=\"ds-link ds-link--more\" href=\"#settings\">Edit</a></div>\n            <div class=\"ds-panel__body\">\n              <div class=\"ds-badgerow\" data-component=\"badge\">\n                <span class=\"ds-badge\">Release</span>\n                <span class=\"ds-badge ds-badge--quiet\">Feature</span>\n                <span class=\"ds-badge ds-badge--new\">Idea</span>\n                <span class=\"ds-badge ds-badge--success\">Shipped</span>\n                <span class=\"ds-badge ds-badge--warning\">Infra</span>\n                <span class=\"ds-badge ds-badge--danger\">Bug</span>\n              </div>\n              <p class=\"ds-linkrow\" data-component=\"links\">\n                <a class=\"ds-link\" href=\"#settings\">Import labels</a>\n                <a class=\"ds-link is-visited\" href=\"#settings\">Label guide</a>\n                <a class=\"ds-link is-hover\" href=\"#settings\">Archive unused</a>\n                <a class=\"ds-link is-active\" href=\"#settings\">Sort by use</a>\n              </p>\n            </div>\n          </section>\n          <section class=\"ds-panel\">\n            <div class=\"ds-panel__head\"><h2 class=\"ds-panel__title\">Danger zone</h2></div>\n            <div class=\"ds-panel__body\">\n              <p>Deleting the workspace removes 1,204 issues and every deployment record. This cannot be undone.</p>\n              <div class=\"ds-buttonrow\">\n                <a class=\"ds-button ds-button--secondary\" href=\"#settings\">Export everything</a>\n                <a class=\"ds-button ds-button--danger\" href=\"#settings\">Delete workspace</a>\n              </div>\n            </div>\n          </section>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n\n<footer class=\"ds-footer\" data-component=\"footer\">\n  <span class=\"ds-footer__status\"><span class=\"ds-dot ds-dot--success\"></span> chronoskin is up to date</span>\n  <span>&copy; 2025 chronoskin, build 7be02d1</span>\n  <ul class=\"ds-footer__links\">\n    <li><a class=\"ds-footer__link\" href=\"#settings\">Shortcuts</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#deploys\">Status</a></li>\n    <li><a class=\"ds-footer__link\" href=\"#settings\">Help</a></li>\n  </ul>\n</footer>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.dev-dark.app.s02.p02.t04.u04\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"dev-dark\",\n    \"years\": [\n      2019,\n      2026\n    ]\n  },\n  \"archetype\": \"app\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1440,\n    \"fluid\": false,\n    \"responsive\": true\n  },\n  \"source\": \"https://chrono.skin/s/v1-dd-2244\",\n  \"short\": \"v1-dd-2244\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #0b0e14;\n  --color-canvas: #0b0e14;\n  --color-surface: #11141b;\n  --color-surface-alt: #171b24;\n  --color-surface-strong: #282c33;\n  --color-bar: #0b0e14;\n  --color-bar-text: #dce0e5;\n  --color-bar-alt: #11141b;\n  --color-bar-alt-text: #a9afbc;\n  --color-inverse: #dce0e5;\n  --color-inverse-text: #0b0e14;\n  --color-text: #b4bac6;\n  --color-text-muted: #7d8696;\n  --color-heading: #eef1f5;\n  --color-heading-alt: #dce0e5;\n  --color-link: #3ecf8e;\n  --color-link-quiet: #a9afbc;\n  --color-link-visited: #86c2a4;\n  --color-link-hover: #74e8b4;\n  --color-link-active: #2aa872;\n  --color-border: #232831;\n  --color-border-strong: #464b57;\n  --color-border-muted: #1a1e26;\n  --color-accent: #3ecf8e;\n  --color-accent-text: #06130d;\n  --color-accent-alt: #47b7f8;\n  --color-fill-1: #3ecf8e;\n  --color-fill-2: #47b7f8;\n  --color-fill-3: #fbca00;\n  --color-fill-4: #464b57;\n  --color-button: #3ecf8e;\n  --color-button-text: #06130d;\n  --color-button-hover-text: #06130d;\n  --color-button-secondary: #171b24;\n  --color-button-secondary-text: #dce0e5;\n  --color-input: #0b0e14;\n  --color-input-text: #dce0e5;\n  --color-input-border: #343a45;\n  --color-disabled: #171b24;\n  --color-disabled-text: #5c6370;\n  --color-danger: #ff6465;\n  --color-danger-surface: #1e1318;\n  --color-success: #3ecf8e;\n  --color-warning: #fbca00;\n  --color-notice: #0e1d2c;\n  --color-notice-text: #9cd4fb;\n  --color-focus: #47b7f8;\n  --color-shadow: rgb(0 0 0 / 0.4);\n  --color-overlay: rgb(5 7 10 / 0.72);\n}\n\n/* @part type */\n:root {\n  --font-body: \"Space Grotesk\", \"Familjen Grotesk\", \"Helvetica Neue\", Arial, sans-serif;\n  --font-heading: \"Space Grotesk\", \"Familjen Grotesk\", \"Helvetica Neue\", Arial, sans-serif;\n  --font-ui: \"Space Grotesk\", \"Familjen Grotesk\", \"Helvetica Neue\", Arial, sans-serif;\n  --font-mono: \"Space Mono\", \"Fira Code\", Menlo, Consolas, monospace;\n  --text-base: 15px;\n  --text-small: 12px;\n  --text-ui: 14px;\n  --text-large: 18px;\n  --text-display: 64px;\n  --text-h1: 38px;\n  --text-h2: 26px;\n  --text-h3: 16px;\n  --line-body: 1.5;\n  --line-heading: 1.15;\n  --line-display: 1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 500;\n  --heading-transform: none;\n  --heading-tracking: -0.6px;\n  --display-tracking: -2.4px;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: none;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: none;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 2px;\n  --border-style: solid;\n  --radius-control: 8px;\n  --radius-panel: 12px;\n  --radius-pill: 4px;\n  --radius-page: 18px;\n  --shadow-panel: inset 0 1px 0 color-mix(in srgb, white 7%, transparent), 0 14px 36px -14px var(--color-shadow);\n  --shadow-control: inset 0 0 0 1px color-mix(in srgb, white 14%, transparent), 0 4px 14px color-mix(in srgb, var(--color-button) 26%, transparent);\n  --shadow-control-hover: inset 0 0 0 1px color-mix(in srgb, white 24%, transparent), 0 6px 26px color-mix(in srgb, var(--color-button) 46%, transparent);\n  --shadow-control-pressed: inset 0 2px 6px var(--color-shadow);\n  --shadow-dialog: 0 0 0 1px color-mix(in srgb, white 6%, transparent), 0 28px 70px var(--color-shadow);\n  --shadow-text: none;\n  --fill-page: linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 80%, transparent), transparent 720px) no-repeat, var(--color-page);\n  --fill-bar: var(--color-bar);\n  --fill-bar-alt: linear-gradient(180deg, color-mix(in srgb, var(--color-bar-alt) 88%, var(--color-fill-2)), var(--color-bar-alt));\n  --fill-inverse: linear-gradient(135deg, var(--color-inverse), color-mix(in srgb, var(--color-inverse) 78%, var(--color-accent)));\n  --fill-accent: var(--color-accent);\n  --fill-panel: linear-gradient(160deg, color-mix(in srgb, var(--color-surface) 93%, white), var(--color-surface) 55%);\n  --fill-button: var(--color-button);\n  --fill-button-hover: color-mix(in srgb, var(--color-button) 78%, white);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: var(--color-input);\n  --focus-ring: 2px solid var(--color-focus);\n  --transition: color 0.18s ease-out, background-color 0.18s ease-out, border-color 0.18s ease-out, box-shadow 0.18s ease-out;\n  --backdrop-blur: 0px;\n}\n"
  }
}
