{
  "id": "v1-fl-1111",
  "long_id": "v1.flat-design.landing.s01.p01.t01.u01",
  "name": "Flat design landing",
  "era": {
    "slug": "flat-design",
    "code": "fl",
    "name": "Flat design",
    "years": [
      2013,
      2016
    ],
    "description": "Product marketing, 2013 to 2016: full-width bands of solid colour, light sans-serif headings, thin one-pixel rules, and no gloss, bevel or drop shadow anywhere."
  },
  "archetype": "landing",
  "mode": "pure",
  "viewport": {
    "width": 1280,
    "fluid": true
  },
  "summary": "Flat design is the product-marketing look of 2013 to 2016: full-width bands of solid colour, light-weight sans-serif headings, thin 1px rules and no gloss, bevel, gradient or drop shadow anywhere. Pages are a white header bar, a single-colour hero with white text and two buttons, then alternating white and off-white bands holding a centred fixed column, ending in a dark multi-column footer. Colour does the work that depth did before: one blue for every action, and a few saturated block colours used as flat tiles.",
  "url": "https://chrono.skin/s/v1-fl-1111",
  "preview_url": "https://chrono.skin/s/v1-fl-1111/specimen.html",
  "files": {
    "STYLE.md": "# Flat design landing\n\n## Summary\n\nFlat design is the product-marketing look of 2013 to 2016: full-width bands of solid colour, light-weight sans-serif headings, thin 1px rules and no gloss, bevel, gradient or drop shadow anywhere. Pages are a white header bar, a single-colour hero with white text and two buttons, then alternating white and off-white bands holding a centred fixed column, ending in a dark multi-column footer. Colour does the work that depth did before: one blue for every action, and a few saturated block colours used as flat tiles.\n\n## Layout\n\n- The page is fluid: every band (`.ds-nav`, `.ds-hero`, `.ds-band`, `.ds-footer`) spans the full viewport and paints its own background. Content sits in a centred column of `--size-page` (960px), designed for a 1280px viewport. Never box the whole page in a frame.\n- Navigation is one white bar at the top, `--size-nav` (64px) tall, with a 1px bottom rule: wordmark left, links next to it, sign-in and a small outlined button on the right.\n- Sections are stacked bands. Alternate `--color-canvas` (white) and `--color-surface-alt` (#f8f8f8); use one `--color-fill-1` band per page for emphasis. Bands touch each other: the gap between them is 0, the space is inside.\n- Columns inside a band: `.ds-band__split` with a main column and a `--size-sidebar` (240px) side column, or two equal halves. Feature rows are 3 or 4 equal columns (`.ds-grid`).\n- Inner pages have no hero. Under the nav comes an off-white (`--color-surface-alt`) head made of two touching pieces: a `.ds-band--tight` strip with the `.ds-breadcrumb`, then `.ds-page-header` (title, one line of description, actions on the right), closed by a 1px rule. The working content follows in white and off-white bands in the same 960px column. A list page puts `.ds-tabs` first in the band directly under the page header, then `.ds-stat`, then the table with its pagination in `.ds-table__foot`. A detail page and a settings page use `.ds-band__split`: the work (table, action row, form) in the main column, small panels and section links in the 240px side column. The dark footer is unchanged.\n- Views. The specimen is an invoicing product with five views. `home` is the landing page: hero, the four feature tiles, running text beside a guide list and a plan panel, the emphasis band and the news list. `pricing` is an inner page with three plan panels and four answered questions. `invoices` is the list page: tabs, the month's figures, the invoice table with pagination and the status legend, and an empty estimates box. `invoice` is one invoice: its line items, the action row, the open send dialog, and amount, history and client in the side column. `settings` is the invoice defaults form with its notices beside the settings links, the last changes and a note. Below 760px the columns stack, the navigation wraps under the brand, grids fold to two columns or one, and a wide table scrolls sideways inside `.ds-table__wrap` while the page itself never does.\n- Spacing scale: `--space-1` 4px (inside pills, between a label and its field), `--space-2` 8px (between adjacent controls, button vertical padding), `--space-3` 16px (paragraph gap, cell padding, list row padding), `--space-4` 24px (grid gutter, button horizontal padding, panel padding, page side padding), `--space-5` 32px (between tab items, inset panel padding), `--space-6` 48px (column gap, gap between stacked blocks, footer padding), `--space-7` 80px (top and bottom padding of a band and of the hero).\n- Other sizes: `--size-tile` 160px (height of a colour tile), `--size-icon` 48px, `--size-dialog` 480px.\n\n## Typography and colour roles\n\n- One sans-serif family for everything (`--font-body`, `--font-heading`, `--font-ui` are the same stack). The references used commercial humanist and geometric sans faces (Segoe UI, Whitney, Gotham, Circular) and Open Sans; the stack is Open Sans, then Segoe UI, then Helvetica Neue. `--font-mono` is only for code.\n- Body is `--text-base` 15px at `--line-body` 1.55 in grey `--color-text` (#686868), not black. Headings are darker (`--color-heading` #2e2f33) and light: `--weight-heading` 300. Hierarchy comes from size and weight, never from colour blocks behind headings.\n- Sizes: `--text-display` 38px (hero title only), `--text-h1` 32px (band titles), `--text-h2` 24px, `--text-h3` 20px, `--text-large` 18px (lead lines, large buttons, list titles), `--text-ui` 14px (navigation, buttons, inputs, tables, footer), `--text-small` 12px (meta, captions, badges, breadcrumb).\n- `--weight-bold` and `--weight-ui` are 600 and are used for buttons, labels, table heads and small titles. Nothing is heavier.\n- `--color-heading-alt` (plum) is for small titles: panel title, sidebar title, h3 in prose.\n- Links are `--color-link` blue and never underlined, in any state; hover only changes the colour to `--color-link-hover`. Visited links keep the link colour. Quiet links (`--color-link-quiet`) are grey and turn blue on hover.\n- `--color-button` blue is the only action colour. `--color-accent` (coral) and `--color-accent-alt` (yellow) are for badges and markers, never for buttons. The only other filled button is the destructive one, in `--color-danger`.\n- Status colours: `--color-success` (the green of `--color-fill-4`), `--color-warning` (amber) and `--color-danger` (red) fill status pills with `--color-accent-text` on top. They mark the state of a row or record; they are not decoration and not section fills.\n- `--color-fill-1` (deep blue) fills the hero and the emphasis band. `--color-fill-1` to `--color-fill-4` fill grid tiles. Text on a fill is `--color-inverse-text`; on the yellow fill put only an icon, not running text. An icon on a fill never lies on the fill itself: `.ds-grid__icon` carries a round plate, `--color-inverse` mixed in at 40%, so the `--color-inverse-text` icon stays legible when a token set makes the fill pale (yellow, beige).\n- `--color-inverse` (#262626) is the footer. Footer text is `--color-text-muted`, footer titles `--color-inverse-text`.\n- Borders are 1px `--color-border`; `--border-width-strong` (2px) is only used for the current-item underline in navigation and tabs and under the table head.\n- One-off shades made with `color-mix()` because the vocabulary has no token: the darker inset inside a fill band and the hero blocks (`--color-inverse` at 16%), the ghost button border (`--color-inverse-text` at 50%), the footer rule (`--color-inverse-text` at 16%), the icon plate (`--color-inverse` at 40%), the `--alt` badge tint (`--color-accent-alt` at 30% over `--color-surface`), the hovered and pressed destructive button (`--color-danger` at 85% over `--color-inverse-text` and over `--color-inverse`). The hero lead uses `opacity: 0.8`.\n- There are no shadows, gradients or text shadows; every `--shadow-*` token is `none` and every `--fill-*` token is a flat colour. `--transition` is `none`.\n\n## Components\n\n- `.ds-page`: on `<body>`. Sets the font, text colour and white page. Holds bands directly; it has no width of its own.\n- `.ds-band`: full-width section with a `.ds-band__inner` column. Variants `--alt` (off-white), `--strong` (light grey), `--fill` (deep blue, white text), `--tight` (16px padding, for a breadcrumb strip). `.ds-band__title` and `.ds-band__lead` head a band. `.ds-band__split` makes columns from `.ds-band__main`, `.ds-band__side`, `.ds-band__half`; with `--level` the columns end on one line and the last `.ds-panel` of a stacked side column grows to take up the difference; `.ds-band__inset` is the darker flat panel inside a `--fill` band. `.ds-stack` stacks blocks 48px apart (`--tight`: 24px).\n- `.ds-brand`: the site's mark and name, first in the top bar, at the left. `.ds-brand__mark` is a 28px tile dressed like the primary button (`--fill-button`, `--color-button-text` for the drawing, `--radius-control`, `--shadow-control`) holding the mark as inline SVG; `.ds-brand__name` is the name in the heading font at `--text-h3` and `--weight-bold` (not the heading weight: the light headings of several token sets are too weak beside the tile) in `--color-heading`. The name and the mark are placeholders for the installing project's own name and logo.\n- `.ds-nav`: the top bar on `--fill-bar`: the `.ds-brand`, `.ds-nav__links` with `.ds-nav__link` (current item: `is-current`, blue with a 2px underline), `.ds-nav__aside` for sign-in and a small button. In the specimen the current item is marked by the view that is showing, with one `:has()` rule per view; a project sets `is-current` itself.\n- `.ds-hero`: single-colour band under the nav. `.ds-hero__title` (38px, weight 300), `.ds-hero__lead`, `.ds-hero__actions` with one `.ds-button--inverse` and one `.ds-button--ghost`. `.ds-hero__art` is an optional arrangement of flat `.ds-hero__block` rectangles standing in for a product picture. The hero runs edge to edge and has no corners; `--radius-page` rounds its blocks and the grid tiles.\n- `.ds-page-header`: head of an inner page, used instead of `.ds-hero`. A full-width off-white strip with a 1px bottom rule; `.ds-page-header__inner` is the 960px column, `.ds-page-header__copy` holds `.ds-page-header__title` (32px, weight 300) and one `.ds-page-header__text` line (18px, weight 300), `.ds-page-header__actions` sits on the right with at most one primary and one `--secondary` button. Place it directly after the breadcrumb strip.\n- `.ds-prose`: running text: h1, h2, h3, p, lists, `code`, `strong`. `.ds-prose__lead` for the first paragraph.\n- `.ds-link`: text link. States `is-visited`, `is-hover`, `is-active`, `is-focus`. `--quiet` for meta and navigation inside content; `--more` appends a small chevron for \"Learn more\" links. `.ds-linkrow` lays links in a row.\n- `.ds-button`: flat blue button, 5px radius, 14px weight 600. Variants: `--secondary` (white with a 1px blue outline), `--danger` (flat `--color-danger` red with white text, for delete and other destructive actions only; one per view), `--inverse` (white, for use on a fill), `--ghost` (transparent with a 1px white outline, on a fill only), `--large`, `--small`. States `is-hover`, `is-active`, `is-focus`, `is-disabled`. `.ds-buttonrow` spaces buttons 16px apart.\n- `.ds-form`: vertical form. `.ds-form__row` puts fields side by side; `.ds-form__field` wraps `.ds-form__label` and one of `.ds-form__input`, `.ds-form__select`, `.ds-form__textarea`. Error: `is-error` on the input plus `.ds-form__error`. `.ds-form__hint`, `.ds-form__check` with `.ds-form__checkbox`, `.ds-form__actions`, `.ds-form__submit` (full-width button).\n- `.ds-table`: data table with horizontal rules only: a 2px rule under the head, 1px between rows, alternate rows off-white, no outer border. `.ds-table__num` right-aligns numbers; `.ds-table__caption` is a small note below. Wrap it in `.ds-table__wrap` so that it scrolls on its own in a narrow window; `.ds-table__foot` is the row under it with the pagination at the left and a legend or count at the right.\n- `.ds-list`: news or post list separated by faint 1px rules. `.ds-list__item` holds `.ds-list__title`, `.ds-list__text`, `.ds-list__meta`.\n- `.ds-panel`: white box with a 1px border and `--radius-panel` corners (square here), a grey `.ds-panel__title` strip and `.ds-panel__body`. `.ds-panel__figure` is a large light numeral (a price or a count). `.ds-plans` sets three panels side by side on a pricing page.\n- `.ds-stat`: row of summary figures on an inner page, three to five across. Each `.ds-stat__item` is a `.ds-stat__figure` (38px, weight 300, the same light numeral as `.ds-panel__figure`) over a small grey `.ds-stat__label`. Items share the width equally and are divided by 1px vertical rules; there is no box, fill or icon around them.\n- `.ds-grid`: four equal columns (`--3` for three). Each `.ds-grid__cell` is a flat colour `.ds-grid__tile` (`--2`, `--3`, `--4` for the other fills) holding a line icon `.ds-grid__icon` on its darker round plate, then `.ds-grid__title`, `.ds-grid__text` and a link below the tile. The cell itself has no border or background.\n- `.ds-tabs`: row of text tabs on a 1px rule; `.ds-tabs__tab` with `is-current` gets a 2px blue underline. No boxes around tabs.\n- `.ds-badge`: fully rounded pill, 12px weight 600. Coral by default, `--alt` a 30% tint of `--color-accent-alt` over `--color-surface` with a `--border-width` outline in the full colour and `--color-heading` text (the text never lies on the accent itself, so the second accent may be light or dark), `--quiet` grey for counts. Status variants for table rows and record heads: `--success` (green: paid, done, online), `--warning` (amber: due soon, pending), `--danger` (red: overdue, failed), all with white text. `.ds-badgerow` for several.\n- `.ds-sidebar`: unboxed block with `.ds-sidebar__title`, `.ds-sidebar__list` of `.ds-sidebar__item` links and optional `.ds-sidebar__count`; the current row is `is-current`, plain bold text instead of a link.\n- `.ds-notice`: flat pale-blue message strip; `--error` is pale red with a 1px red border. `.ds-notice__title` for the bold lead-in. `.ds-noticerow` stacks notices.\n- `.ds-pagination`: row of `.ds-pagination__link`; `is-current` is a filled blue square with 5px corners, `is-disabled` is grey.\n- `.ds-breadcrumb`: 12px grey trail of `.ds-breadcrumb__item` separated by chevrons; the last item is `.ds-breadcrumb__current`.\n- `.ds-dialog`: dimmed block (`--color-overlay`) centring a flat white `.ds-dialog__box` with `.ds-dialog__head` (`.ds-dialog__title`, `.ds-dialog__close`), `.ds-dialog__body` and right-aligned `.ds-dialog__actions`. Corners are `--radius-panel`, its shadow `--shadow-dialog` (none here).\n- `.ds-empty`: centred message in a 1px bordered box on `--fill-panel`: `.ds-empty__icon`, `.ds-empty__title`, `.ds-empty__text` and one button. It stands where a list would be.\n- `.ds-footer`: dark band with `.ds-footer__cols` (four columns of `.ds-footer__title` and `.ds-footer__list` / `.ds-footer__item` / `.ds-footer__link`) and a `.ds-footer__base` row with the copyright and `.ds-footer__legal` links.\n\n## Never\n\n- `block-gap <= 80px`: the largest space between blocks is the 80px band padding.\n- `content-width <= 960px`: content stays in the centred column while bands run edge to edge.\n- `underlined-links = 0%`: no reference underlines links, in any state.\n- `font-size <= 38px`: the hero title is the largest text.\n- `font-size >= 12px`: meta text and badges are the smallest.\n- `font-weight <= 600`: headings are light (300); 600 is the heaviest weight.\n- `font-families <= 2`: one sans-serif family, plus monospace for code.\n- `line-height <= 1.6`: body text is set at 1.55.\n- `letter-spacing = 0`: text is not tracked.\n- `uppercase-text = 0%`: navigation, buttons and headings are in sentence case.\n- `box-shadow = none`: no reference has a drop shadow; boxes are separated by fill or a 1px rule.\n- `text-shadow = none`: text is flat on every surface.\n- `gradient-fills = 0%`: every background is a single solid colour.\n- `border-width <= 2px`: rules are 1px; 2px only marks the current tab or navigation item.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. A new section is a `.ds-band` with a `.ds-band__inner`; a new box is a `.ds-panel` (1px border, square corners) or a flat fill with no border, never both a fill and a shadow. Controls take `--radius-control`, containers `--radius-panel` or `--radius-page` (both 0), and only pills take `--radius-pill`. New colours of emphasis come from `--color-fill-1` to `--color-fill-4`; new actions are always `--color-button`. 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: 960px;\n  --size-nav: 64px;\n  --size-sidebar: 240px;\n  --size-tile: 160px;\n  --size-icon: 48px;\n  --size-dialog: 480px;\n  --size-field: 320px;\n  --space-1: 4px;\n  --space-2: 8px;\n  --space-3: 16px;\n  --space-4: 24px;\n  --space-5: 32px;\n  --space-6: 48px;\n  --space-7: 80px;\n}\n\n/* shell */\n.ds-page {\n  margin: 0;\n  padding: 0;\n  background: var(--fill-page);\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n}\n.ds-page *,\n.ds-page *::before,\n.ds-page *::after {\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\n/* band: a full-width strip; its inner column is the content width */\n.ds-band {\n  background: var(--color-canvas);\n  padding: var(--space-7) var(--space-4);\n}\n.ds-band--alt {\n  background: var(--color-surface-alt);\n}\n.ds-band--strong {\n  background: var(--color-surface-strong);\n}\n.ds-band--fill {\n  background: var(--color-fill-1);\n  color: var(--color-inverse-text);\n  padding-top: var(--space-6);\n  padding-bottom: var(--space-6);\n}\n.ds-band--tight {\n  padding-top: var(--space-3);\n  padding-bottom: var(--space-3);\n}\n.ds-band__inner {\n  max-width: var(--size-page);\n  margin: 0 auto;\n}\n.ds-band__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-band__lead {\n  margin: 0 0 var(--space-6);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n}\n.ds-band--fill .ds-band__title,\n.ds-band--fill .ds-band__lead {\n  color: inherit;\n}\n.ds-band__split {\n  display: flex;\n  gap: var(--space-6);\n  align-items: flex-start;\n}\n/* level: both columns end on one line; the last panel of a stacked column takes up the difference */\n.ds-band__split--level {\n  align-items: stretch;\n}\n.ds-band__split--level .ds-stack > .ds-panel:last-child {\n  flex: 1 0 auto;\n}\n.ds-band__main {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-band__side {\n  flex: 0 0 var(--size-sidebar);\n}\n.ds-band__half {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-band__inset {\n  flex: 1 1 0;\n  min-width: 0;\n  padding: var(--space-5);\n  border-radius: var(--radius-panel);\n  background: color-mix(in srgb, var(--color-inverse) 16%, transparent);\n}\n.ds-band__inset-title {\n  margin: 0 0 var(--space-2);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-band__inset-text {\n  margin: 0;\n}\n.ds-stack {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-6);\n}\n.ds-stack--tight {\n  gap: var(--space-4);\n}\n\n/* nav */\n.ds-nav {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  padding: 0 var(--space-4);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-nav__inner {\n  max-width: var(--size-page);\n  min-height: var(--size-nav);\n  margin: 0 auto;\n  display: flex;\n  align-items: center;\n  gap: var(--space-5);\n}\n.ds-brand {\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-2);\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: calc(var(--space-4) + var(--space-1));\n  height: calc(var(--space-4) + var(--space-1));\n  background-color: var(--color-button);\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}\n.ds-brand__mark svg {\n  display: block;\n  width: 80%;\n  height: 80%;\n}\n.ds-brand__name {\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-nav__links {\n  display: flex;\n  align-items: stretch;\n  gap: var(--space-4);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  flex: 1 1 auto;\n}\n.ds-nav__link {\n  display: block;\n  padding: var(--space-1) 0;\n  color: var(--color-bar-text);\n  font-weight: var(--weight-body);\n  text-decoration: var(--link-decoration-quiet);\n  text-transform: var(--ui-transform);\n  border-bottom: var(--border-width-strong) var(--border-style) transparent;\n  transition: var(--transition);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  color: var(--color-link);\n}\n.ds-nav__link.is-current {\n  color: var(--color-link);\n  border-bottom-color: var(--color-link);\n}\n/* the current view marks its navigation item; the invoice detail marks Invoices */\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#home\"] {\n  color: var(--color-link);\n  border-bottom-color: var(--color-link);\n}\n.ds-page:has(#home:target) .ds-nav__link[href=\"#home\"] {\n  color: var(--color-link);\n  border-bottom-color: var(--color-link);\n}\n.ds-page:has(#pricing:target) .ds-nav__link[href=\"#pricing\"] {\n  color: var(--color-link);\n  border-bottom-color: var(--color-link);\n}\n.ds-page:has(#invoices:target) .ds-nav__link[href=\"#invoices\"] {\n  color: var(--color-link);\n  border-bottom-color: var(--color-link);\n}\n.ds-page:has(#invoice:target) .ds-nav__link[href=\"#invoices\"] {\n  color: var(--color-link);\n  border-bottom-color: var(--color-link);\n}\n.ds-page:has(#settings:target) .ds-nav__link[href=\"#settings\"] {\n  color: var(--color-link);\n  border-bottom-color: var(--color-link);\n}\n.ds-nav__aside {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n}\n\n/* hero */\n.ds-hero {\n  background: var(--color-fill-1);\n  color: var(--color-inverse-text);\n  padding: var(--space-7) var(--space-4);\n}\n.ds-hero__inner {\n  max-width: var(--size-page);\n  margin: 0 auto;\n  display: flex;\n  align-items: center;\n  gap: var(--space-6);\n}\n.ds-hero__copy {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-3);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n}\n.ds-hero__lead {\n  margin: 0 0 var(--space-5);\n  max-width: 44ch;\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  opacity: 0.8;\n}\n.ds-hero__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  align-items: center;\n}\n.ds-hero__art {\n  flex: 0 0 40%;\n  display: grid;\n  grid-template-columns: 1fr 1fr 1fr;\n  gap: var(--space-2);\n}\n.ds-hero__block {\n  height: var(--size-tile);\n  border-radius: var(--radius-page);\n  background: color-mix(in srgb, var(--color-inverse) 16%, transparent);\n}\n.ds-hero__block--2 {\n  background: var(--color-fill-3);\n}\n.ds-hero__block--3 {\n  background: var(--color-fill-2);\n}\n.ds-hero__block--short {\n  height: var(--space-7);\n}\n.ds-hero__block--wide {\n  grid-column: span 2;\n}\n\n/* page header: the head of an inner page; continues the off-white breadcrumb strip and closes with a rule */\n.ds-page-header {\n  background: var(--color-surface-alt);\n  padding: var(--space-3) var(--space-4) var(--space-5);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-page-header__inner {\n  max-width: var(--size-page);\n  margin: 0 auto;\n  display: flex;\n  align-items: center;\n  gap: var(--space-6);\n}\n.ds-page-header__copy {\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-page-header__title .ds-badge {\n  margin-left: var(--space-2);\n}\n.ds-page-header__title {\n  margin: 0 0 var(--space-1);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-page-header__text {\n  margin: 0;\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\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/* 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  font-size: var(--text-h2);\n  margin-top: var(--space-5);\n}\n.ds-prose h3 {\n  font-size: var(--text-h3);\n  margin-top: var(--space-4);\n  color: var(--color-heading-alt);\n  font-weight: var(--weight-body);\n}\n.ds-prose p {\n  margin: 0 0 var(--space-3);\n}\n.ds-prose ul,\n.ds-prose ol {\n  margin: 0 0 var(--space-3);\n  padding-left: var(--space-4);\n}\n.ds-prose li {\n  margin-bottom: var(--space-1);\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  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__lead {\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\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}\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-link);\n}\n.ds-link--more::after {\n  content: \" \\203A\";\n}\n.ds-linkrow {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-4);\n  margin: 0 0 var(--space-3);\n}\n\n/* buttons */\n.ds-button {\n  display: inline-block;\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-body);\n  text-align: center;\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  background: var(--color-link-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: currentColor;\n}\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--color-notice);\n  color: var(--color-button-secondary-text);\n}\n.ds-button--secondary:active,\n.ds-button--secondary.is-active {\n  background: var(--color-notice);\n  color: var(--color-link-active);\n}\n.ds-button--danger {\n  background: var(--color-danger);\n  color: var(--color-button-text);\n}\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: color-mix(in srgb, var(--color-danger) 85%, var(--color-inverse-text));\n  color: var(--color-button-hover-text);\n}\n.ds-button--danger:active,\n.ds-button--danger.is-active {\n  background: color-mix(in srgb, var(--color-danger) 85%, var(--color-inverse));\n}\n.ds-button--inverse {\n  background: var(--color-inverse-text);\n  color: var(--color-fill-1);\n}\n.ds-button--inverse:hover,\n.ds-button--inverse.is-hover {\n  background: var(--color-notice);\n  color: var(--color-fill-1);\n}\n.ds-button--ghost {\n  background: transparent;\n  color: var(--color-inverse-text);\n  border-color: color-mix(in srgb, var(--color-inverse-text) 50%, transparent);\n}\n.ds-button--ghost:hover,\n.ds-button--ghost.is-hover {\n  background: transparent;\n  color: var(--color-inverse-text);\n  border-color: var(--color-inverse-text);\n}\n.ds-button--large {\n  padding: var(--space-3) var(--space-5);\n  font-size: var(--text-large);\n  line-height: var(--line-heading);\n}\n.ds-button--small {\n  padding: var(--space-1) var(--space-3);\n  font-size: var(--text-small);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  border-color: transparent;\n  cursor: default;\n}\n.ds-buttonrow {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n\n/* form */\n.ds-form {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\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-2);\n}\n.ds-form__field {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-1);\n  flex: 1 1 0;\n  min-width: 0;\n}\n.ds-form__label {\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\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  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-body);\n  line-height: var(--line-body);\n  transition: var(--transition);\n}\n.ds-form__textarea {\n  min-height: var(--space-7);\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: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}\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  gap: var(--space-3);\n}\n.ds-form__submit {\n  flex: 1 1 auto;\n}\n.ds-linkrow:last-child {\n  margin-bottom: 0;\n}\n\n/* table: rules between rows, no vertical lines, no outer box */\n.ds-table {\n  width: 100%;\n  border-collapse: collapse;\n  border-radius: var(--radius-panel);\n  background: var(--color-surface);\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);\n  text-align: left;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-table thead th {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  font-weight: var(--weight-bold);\n}\n.ds-table tbody th {\n  color: var(--color-heading);\n  font-weight: var(--weight-body);\n}\n.ds-table tbody tr:nth-child(even) td,\n.ds-table tbody tr:nth-child(even) th {\n  background: var(--color-surface-alt);\n}\n.ds-table .ds-table__num {\n  text-align: right;\n  font-variant-numeric: tabular-nums;\n}\n.ds-table__caption {\n  caption-side: bottom;\n  padding-top: var(--space-2);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n  text-align: left;\n}\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  margin-top: var(--space-4);\n}\n\n/* list */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-list__item {\n  padding: var(--space-3) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-list__item:first-child {\n  border-top: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-list__title {\n  display: block;\n  color: var(--color-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-list__title:hover,\n.ds-list__title.is-hover {\n  color: var(--color-link);\n}\n.ds-list__text {\n  margin: var(--space-1) 0 0;\n}\n.ds-list__meta {\n  display: block;\n  margin-top: var(--space-1);\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* panel */\n.ds-panel {\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__title {\n  margin: 0;\n  padding: var(--space-3) var(--space-4);\n  background: var(--color-surface-strong);\n  color: var(--color-heading-alt);\n  border-radius: calc(var(--radius-panel) - var(--border-width)) calc(var(--radius-panel) - var(--border-width)) 0 0;\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}\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__figure {\n  display: block;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n}\n\n.ds-panel__title .ds-badge {\n  float: right;\n}\n.ds-plans {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: var(--space-4);\n}\n\n/* stats: light numerals in a row, divided by vertical rules; no boxes */\n.ds-stat {\n  display: flex;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-stat__item {\n  flex: 1 1 0;\n  min-width: 0;\n  padding: 0 var(--space-4);\n  border-left: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-stat__item:first-child {\n  padding-left: 0;\n  border-left: 0;\n}\n.ds-stat__figure {\n  display: block;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  font-variant-numeric: tabular-nums;\n}\n.ds-stat__label {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-ui);\n}\n\n/* grid: solid colour tiles with the caption underneath */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: var(--space-4);\n}\n.ds-grid--3 {\n  grid-template-columns: repeat(3, 1fr);\n}\n.ds-grid__cell {\n  min-width: 0;\n}\n.ds-grid__tile {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: var(--size-tile);\n  margin-bottom: var(--space-3);\n  background: var(--color-fill-1);\n  color: var(--color-inverse-text);\n  border-radius: var(--radius-page);\n}\n.ds-grid__tile--2 {\n  background: var(--color-fill-2);\n}\n.ds-grid__tile--3 {\n  background: var(--color-fill-3);\n}\n.ds-grid__tile--4 {\n  background: var(--color-fill-4);\n}\n.ds-grid__icon {\n  width: var(--size-icon);\n  height: var(--size-icon);\n  box-sizing: content-box;\n  padding: var(--space-3);\n  background: color-mix(in srgb, var(--color-inverse) 40%, transparent);\n  border-radius: 50%;\n}\n.ds-grid__title {\n  margin: 0 0 var(--space-1);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-body);\n  line-height: var(--line-heading);\n}\n.ds-grid__text {\n  margin: 0 0 var(--space-2);\n}\n\n/* tabs: text row on a rule, current tab marked by a strong underline */\n.ds-tabs {\n  display: flex;\n  gap: var(--space-5);\n  margin: 0 0 var(--space-5);\n  padding: 0;\n  list-style: none;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-tabs__tab {\n  display: block;\n  margin-bottom: calc(0 - var(--border-width));\n  padding: var(--space-2) 0;\n  color: var(--color-text);\n  border-bottom: var(--border-width-strong) var(--border-style) transparent;\n  text-decoration: var(--link-decoration-quiet);\n  text-transform: var(--ui-transform);\n  transition: var(--transition);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link);\n}\n.ds-tabs__tab.is-current {\n  color: var(--color-heading);\n  font-weight: var(--weight-ui);\n  border-bottom-color: var(--color-button);\n}\n\n/* badge */\n.ds-badge {\n  display: inline-block;\n  padding: 0 var(--space-2);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\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  vertical-align: middle;\n  white-space: nowrap;\n}\n.ds-badge--alt {\n  background: color-mix(in srgb, var(--color-accent-alt) 30%, var(--color-surface));\n  color: var(--color-heading);\n  outline: var(--border-width) var(--border-style) var(--color-accent-alt);\n  outline-offset: calc(var(--border-width) * -1);\n}\n.ds-badge--quiet {\n  background: var(--color-surface-strong);\n  color: var(--color-text);\n}\n.ds-badge--success {\n  background: var(--color-success);\n  color: var(--color-accent-text);\n}\n.ds-badge--warning {\n  background: var(--color-warning);\n  color: var(--color-accent-text);\n}\n.ds-badge--danger {\n  background: var(--color-danger);\n  color: var(--color-accent-text);\n}\n.ds-badgerow {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-2);\n}\n\n/* sidebar */\n.ds-sidebar {\n  font-size: var(--text-ui);\n}\n.ds-sidebar__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading-alt);\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}\n.ds-sidebar__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-sidebar__item {\n  padding: var(--space-1) 0;\n}\n.ds-sidebar__item.is-current {\n  color: var(--color-heading);\n  font-weight: var(--weight-bold);\n}\n.ds-sidebar__count {\n  float: right;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\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-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: var(--border-width) var(--border-style) var(--color-danger);\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  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: var(--space-5);\n  padding: var(--space-1) var(--space-2);\n  color: var(--color-link);\n  border: var(--border-width) var(--border-style) transparent;\n  border-radius: var(--radius-control);\n  text-align: center;\n  text-decoration: var(--link-decoration-quiet);\n  transition: var(--transition);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  border-color: var(--color-border);\n}\n.ds-pagination__link.is-current {\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  font-weight: var(--weight-ui);\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-disabled-text);\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-size: var(--text-small);\n}\n.ds-breadcrumb__item + .ds-breadcrumb__item::before {\n  content: \"\\203A\";\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/* dialog: a flat white box on a dimmed block; no shadow */\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-radius: var(--radius-panel);\n}\n.ds-dialog__box {\n  width: 100%;\n  max-width: var(--size-dialog);\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-dialog__head {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: var(--space-4) var(--space-5) 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-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-dialog__close {\n  color: var(--color-text-muted);\n  font-size: var(--text-h2);\n  line-height: 1;\n  text-decoration: none;\n}\n.ds-dialog__body {\n  padding: var(--space-3) var(--space-5) var(--space-4);\n}\n.ds-dialog__body p {\n  margin: 0;\n}\n.ds-dialog__actions {\n  display: flex;\n  justify-content: flex-end;\n  gap: var(--space-2);\n  padding: var(--space-3) var(--space-5);\n  border-top: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n\n/* empty state */\n.ds-empty {\n  padding: var(--space-6) var(--space-4);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  background: var(--fill-panel);\n  box-shadow: var(--shadow-panel);\n  text-align: center;\n}\n.ds-empty__icon {\n  width: var(--size-icon);\n  height: var(--size-icon);\n  margin-bottom: var(--space-3);\n  color: var(--color-border-strong);\n}\n.ds-empty__title {\n  margin: 0 0 var(--space-1);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-4);\n}\n\n/* footer */\n.ds-footer {\n  background: var(--fill-inverse);\n  color: var(--color-text-muted);\n  padding: var(--space-6) var(--space-4) var(--space-5);\n  font-size: var(--text-ui);\n}\n.ds-footer__inner {\n  max-width: var(--size-page);\n  margin: 0 auto;\n}\n.ds-footer__cols {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: var(--space-4);\n}\n.ds-footer__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-inverse-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-base);\n  font-weight: var(--weight-body);\n  line-height: var(--line-heading);\n}\n.ds-footer__list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__item {\n  padding: var(--space-1) 0;\n}\n.ds-footer__link {\n  color: var(--color-text-muted);\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-inverse-text);\n}\n.ds-footer__base {\n  display: flex;\n  justify-content: space-between;\n  margin-top: var(--space-6);\n  padding-top: var(--space-3);\n  border-top: var(--border-width) var(--border-style) color-mix(in srgb, var(--color-inverse-text) 16%, transparent);\n  font-size: var(--text-small);\n}\n.ds-footer__legal {\n  display: flex;\n  gap: var(--space-4);\n}\n\n/* narrow windows: columns stack, the navigation wraps under the brand, wide tables scroll inside their own box */\n@media (max-width: 760px) {\n  .ds-band {\n    padding: var(--space-6) var(--space-3);\n  }\n  .ds-band--tight {\n    padding-top: var(--space-3);\n    padding-bottom: var(--space-3);\n  }\n  .ds-band__split {\n    flex-direction: column;\n    align-items: stretch;\n    gap: var(--space-5);\n  }\n  .ds-band__side,\n  .ds-band__main,\n  .ds-band__half,\n  .ds-band__inset {\n    flex: 0 0 auto;\n  }\n  .ds-band__lead {\n    margin-bottom: var(--space-5);\n  }\n  .ds-nav {\n    padding: var(--space-2) var(--space-3) 0;\n  }\n  .ds-nav__inner {\n    flex-wrap: wrap;\n    justify-content: space-between;\n    gap: var(--space-2) var(--space-3);\n    min-height: 0;\n  }\n  .ds-nav__links {\n    order: 3;\n    flex: 0 0 100%;\n    gap: var(--space-4);\n  }\n  .ds-nav__link {\n    padding: var(--space-2) 0;\n  }\n  .ds-hero {\n    padding: var(--space-6) var(--space-3);\n  }\n  .ds-hero__inner {\n    flex-direction: column;\n    align-items: stretch;\n    gap: var(--space-5);\n  }\n  .ds-hero__copy,\n  .ds-hero__art {\n    flex: 0 0 auto;\n  }\n  .ds-hero__block {\n    height: var(--space-7);\n  }\n  .ds-hero__block--short {\n    height: var(--space-6);\n  }\n  .ds-page-header {\n    padding-left: var(--space-3);\n    padding-right: var(--space-3);\n  }\n  .ds-page-header__inner {\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-grid,\n  .ds-grid--3 {\n    grid-template-columns: repeat(2, 1fr);\n    gap: var(--space-4) var(--space-3);\n  }\n  .ds-grid__tile {\n    height: var(--space-7);\n  }\n  .ds-grid__icon {\n    width: var(--space-5);\n    height: var(--space-5);\n    padding: var(--space-2);\n  }\n  .ds-plans {\n    grid-template-columns: 1fr;\n  }\n  .ds-stat {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: var(--space-4) 0;\n  }\n  .ds-stat__item {\n    padding: 0 var(--space-3);\n  }\n  .ds-stat__item:nth-child(odd) {\n    padding-left: 0;\n    border-left: 0;\n  }\n  .ds-stat__figure {\n    font-size: var(--text-h1);\n  }\n  .ds-tabs {\n    gap: var(--space-4);\n    overflow-x: auto;\n  }\n  .ds-tabs__tab {\n    white-space: nowrap;\n  }\n  .ds-table {\n    min-width: 64ch;\n  }\n  .ds-form__row {\n    flex-direction: column;\n    gap: var(--space-3);\n  }\n  .ds-dialog {\n    padding: var(--space-4) var(--space-3);\n  }\n  .ds-dialog__head {\n    padding: var(--space-3) var(--space-3) 0;\n  }\n  .ds-dialog__body {\n    padding: var(--space-3);\n  }\n  .ds-dialog__actions {\n    flex-wrap: wrap;\n    padding: var(--space-3);\n  }\n  .ds-footer {\n    padding: var(--space-5) var(--space-3) var(--space-4);\n  }\n  .ds-footer__cols {\n    grid-template-columns: 1fr 1fr;\n  }\n  .ds-footer__base {\n    flex-wrap: wrap;\n    gap: var(--space-2) var(--space-4);\n    margin-top: var(--space-5);\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: flat design landing 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__inner\">\n    <a class=\"ds-brand\" data-component=\"brand\" href=\"#home\">\n      <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M12 3a9 9 0 1 1-9 9\"/><path d=\"M12 17a5 5 0 1 1 5-5\"/><circle cx=\"12\" cy=\"12\" r=\"1.4\" fill=\"currentColor\" stroke=\"none\"/></svg></span>\n      <span class=\"ds-brand__name\">chronoskin</span>\n    </a>\n    <ul class=\"ds-nav__links\">\n      <li><a class=\"ds-nav__link\" href=\"#home\">Product</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#pricing\">Pricing</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#invoices\">Invoices</a></li>\n      <li><a class=\"ds-nav__link\" href=\"#settings\">Settings</a></li>\n    </ul>\n    <div class=\"ds-nav__aside\">\n      <a class=\"ds-link\" href=\"#invoices\">Sign in</a>\n      <a class=\"ds-button ds-button--secondary ds-button--small\" href=\"#pricing\">Try it free</a>\n    </div>\n  </div>\n</header>\n\n<section class=\"ds-view ds-view--home\" id=\"home\">\n  <div class=\"ds-hero\" data-component=\"hero\">\n    <div class=\"ds-hero__inner\">\n      <div class=\"ds-hero__copy\">\n        <h1 class=\"ds-hero__title\">Invoices sent, tracked and paid from one tidy place</h1>\n        <p class=\"ds-hero__lead\">chronoskin keeps the books for small studios, so the month closes itself while you get on with the work.</p>\n        <div class=\"ds-hero__actions\">\n          <a class=\"ds-button ds-button--inverse ds-button--large\" href=\"#pricing\">Start a free trial</a>\n          <a class=\"ds-button ds-button--ghost ds-button--large\" href=\"#invoices\">See how it works</a>\n        </div>\n      </div>\n      <div class=\"ds-hero__art\" aria-hidden=\"true\">\n        <div class=\"ds-hero__block ds-hero__block--wide\"></div>\n        <div class=\"ds-hero__block ds-hero__block--2\"></div>\n        <div class=\"ds-hero__block ds-hero__block--3 ds-hero__block--short\"></div>\n        <div class=\"ds-hero__block ds-hero__block--wide ds-hero__block--short\"></div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-band\">\n    <div class=\"ds-band__inner\">\n      <h2 class=\"ds-band__title\">Everything the month needs</h2>\n      <p class=\"ds-band__lead\">Four tools that share one ledger.</p>\n      <div class=\"ds-grid\" data-component=\"grid\">\n        <div class=\"ds-grid__cell\">\n          <div class=\"ds-grid__tile\">\n            <svg class=\"ds-grid__icon\" viewBox=\"0 0 48 48\" width=\"48\" height=\"48\" aria-hidden=\"true\"><path d=\"M12 6h24v36H12z M18 16h12 M18 24h12 M18 32h7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n          </div>\n          <h3 class=\"ds-grid__title\">Invoices</h3>\n          <p class=\"ds-grid__text\">Send a bill in under a minute and see when it is opened.</p>\n          <a class=\"ds-link ds-link--more\" href=\"#invoices\">See the list</a>\n        </div>\n        <div class=\"ds-grid__cell\">\n          <div class=\"ds-grid__tile ds-grid__tile--2\">\n            <svg class=\"ds-grid__icon\" viewBox=\"0 0 48 48\" width=\"48\" height=\"48\" aria-hidden=\"true\"><path d=\"M6 14h36v22H6z M6 21h36 M12 29h8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n          </div>\n          <h3 class=\"ds-grid__title\">Payments</h3>\n          <p class=\"ds-grid__text\">Cards and bank transfers land in the same ledger.</p>\n          <a class=\"ds-link ds-link--more\" href=\"#invoice\">Open an invoice</a>\n        </div>\n        <div class=\"ds-grid__cell\">\n          <div class=\"ds-grid__tile ds-grid__tile--3\">\n            <svg class=\"ds-grid__icon\" viewBox=\"0 0 48 48\" width=\"48\" height=\"48\" aria-hidden=\"true\"><path d=\"M8 40V8 M8 40h32 M16 40V26 M24 40V16 M32 40V30\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n          </div>\n          <h3 class=\"ds-grid__title\">Reports</h3>\n          <p class=\"ds-grid__text\">Cash flow by week, client or project, ready to export.</p>\n          <a class=\"ds-link ds-link--more\" href=\"#invoices\">See the month</a>\n        </div>\n        <div class=\"ds-grid__cell\">\n          <div class=\"ds-grid__tile ds-grid__tile--4\">\n            <svg class=\"ds-grid__icon\" viewBox=\"0 0 48 48\" width=\"48\" height=\"48\" aria-hidden=\"true\"><circle cx=\"24\" cy=\"24\" r=\"17\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M24 13v11l8 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n          </div>\n          <h3 class=\"ds-grid__title\">Time</h3>\n          <p class=\"ds-grid__text\">Track hours on any device and bill them in one step.</p>\n          <a class=\"ds-link ds-link--more\" href=\"#pricing\">Compare plans</a>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-band ds-band--alt\">\n    <div class=\"ds-band__inner ds-band__split ds-band__split--level\">\n      <div class=\"ds-band__main\">\n        <article class=\"ds-prose\" data-component=\"typography\">\n          <h1>Built for the last day of the month</h1>\n          <p class=\"ds-prose__lead\">Most bookkeeping is done in a hurry. chronoskin is laid out for that hour.</p>\n          <p>Every screen shows one thing: what is owed, what is paid, or what is late. There are no dashboards to configure and <strong>nothing to install</strong>.</p>\n          <h2>What you get on day one</h2>\n          <ul>\n            <li>Unlimited invoices and estimates</li>\n            <li>Automatic reminders for late payers</li>\n            <li>A ledger your accountant can read</li>\n          </ul>\n          <h3>For developers</h3>\n          <p>Create an invoice from your own app with a single call to <code>POST /v1/invoices</code> and receive a webhook when it is paid.</p>\n        </article>\n      </div>\n\n      <div class=\"ds-band__side ds-stack\">\n        <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n          <h2 class=\"ds-sidebar__title\">Guides</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">8</span><a class=\"ds-link\" href=\"#pricing\">Getting started</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">14</span><a class=\"ds-link\" href=\"#invoices\">Invoices and estimates</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">6</span><a class=\"ds-link\" href=\"#settings\">Taxes</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">11</span><a class=\"ds-link\" href=\"#settings\">Integrations</a></li>\n          </ul>\n        </aside>\n\n        <section class=\"ds-panel\" data-component=\"panel\">\n          <h2 class=\"ds-panel__title\">Studio plan</h2>\n          <div class=\"ds-panel__body\">\n            <span class=\"ds-panel__figure\">$19</span>\n            <p>per month for up to five people. Cancel whenever you like.</p>\n            <a class=\"ds-button ds-button--secondary\" href=\"#pricing\">See all plans</a>\n          </div>\n        </section>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-band ds-band--fill\">\n    <div class=\"ds-band__inner ds-band__split\">\n      <div class=\"ds-band__side\">\n        <h2 class=\"ds-band__title\">From the team</h2>\n        <p class=\"ds-band__inset-text\">Notes on what shipped and what is next.</p>\n      </div>\n      <div class=\"ds-band__inset\">\n        <h3 class=\"ds-band__inset-title\">chronoskin now exports straight to your accountant</h3>\n        <p class=\"ds-band__inset-text\">4 May 2015. A single export produces the ledger, the receipts and the tax summary in the layout most practices ask for.</p>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-band\">\n    <div class=\"ds-band__inner\">\n      <h2 class=\"ds-band__title\">Product news</h2>\n      <p class=\"ds-band__lead\">What changed in the last three months.</p>\n      <ul class=\"ds-list\" data-component=\"list\">\n        <li class=\"ds-list__item\">\n          <a class=\"ds-list__title\" href=\"#invoices\">Recurring invoices now pause themselves</a>\n          <p class=\"ds-list__text\">A schedule stops when a client falls two payments behind.</p>\n          <span class=\"ds-list__meta\">12 March 2015 · Product news · 4 comments</span>\n        </li>\n        <li class=\"ds-list__item\">\n          <a class=\"ds-list__title\" href=\"#settings\">Twelve new currencies for estimates</a>\n          <p class=\"ds-list__text\">Quote in the client's currency and settle in your own.</p>\n          <span class=\"ds-list__meta\">2 March 2015 · Product news · 9 comments</span>\n        </li>\n        <li class=\"ds-list__item\">\n          <a class=\"ds-list__title\" href=\"#pricing\">How a two-person studio closes its books in an hour</a>\n          <p class=\"ds-list__text\">A short interview with the founders of a print workshop.</p>\n          <span class=\"ds-list__meta\">19 February 2015 · Customers · 2 comments</span>\n        </li>\n      </ul>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"pricing\">\n  <div class=\"ds-band ds-band--tight ds-band--alt\">\n    <div class=\"ds-band__inner\">\n      <ol class=\"ds-breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Home</a></li>\n        <li class=\"ds-breadcrumb__item ds-breadcrumb__current\">Pricing</li>\n      </ol>\n    </div>\n  </div>\n  <header class=\"ds-page-header\">\n    <div class=\"ds-page-header__inner\">\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Pricing</h1>\n        <p class=\"ds-page-header__text\">One price per studio, whatever you bill. Thirty days free on every plan.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button\" href=\"#invoices\">Start a free trial</a>\n      </div>\n    </div>\n  </header>\n\n  <div class=\"ds-band\">\n    <div class=\"ds-band__inner\">\n      <div class=\"ds-plans\">\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Solo plan</h2>\n          <div class=\"ds-panel__body\">\n            <span class=\"ds-panel__figure\">$9</span>\n            <p>per month for one person. Unlimited invoices, five clients.</p>\n            <a class=\"ds-button ds-button--secondary\" href=\"#invoices\">Choose Solo</a>\n          </div>\n        </section>\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Studio plan <span class=\"ds-badge\">Most chosen</span></h2>\n          <div class=\"ds-panel__body\">\n            <span class=\"ds-panel__figure\">$19</span>\n            <p>per month for up to five people. Unlimited clients and reminders.</p>\n            <a class=\"ds-button\" href=\"#invoices\">Choose Studio</a>\n          </div>\n        </section>\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Agency plan</h2>\n          <div class=\"ds-panel__body\">\n            <span class=\"ds-panel__figure\">$49</span>\n            <p>per month for twenty people. Projects, time tracking and reports.</p>\n            <a class=\"ds-button ds-button--secondary\" href=\"#invoices\">Choose Agency</a>\n          </div>\n        </section>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-band ds-band--alt\">\n    <div class=\"ds-band__inner ds-stack\">\n      <div class=\"ds-band__split\">\n        <div class=\"ds-band__half ds-prose\">\n          <h2>Can I change plan later?</h2>\n          <p>Yes, in either direction and at any time. The new price starts with the next invoice we send you.</p>\n          <h2>What happens after the trial?</h2>\n          <p>Nothing, unless you choose a plan. Your invoices stay readable and can be exported for a year.</p>\n        </div>\n        <div class=\"ds-band__half ds-prose\">\n          <h2>Do you take a share of payments?</h2>\n          <p>No. Card processors charge their own fee; chronoskin adds nothing on top of the monthly price.</p>\n          <h2>Is there a contract?</h2>\n          <p>There is not. Plans are paid month by month and stop on the day you cancel.</p>\n        </div>\n      </div>\n      <p class=\"ds-linkrow\" data-component=\"links\">\n        <a class=\"ds-link\" href=\"#settings\">Taxes and receipts</a>\n        <a class=\"ds-link is-visited\" href=\"#invoices\">How billing works</a>\n        <a class=\"ds-link is-hover\" href=\"#pricing\">Discounts for charities</a>\n        <a class=\"ds-link is-active\" href=\"#home\">Ask the team</a>\n        <a class=\"ds-link ds-link--quiet\" href=\"#home\">Terms of service</a>\n      </p>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"invoices\">\n  <div class=\"ds-band ds-band--tight ds-band--alt\">\n    <div class=\"ds-band__inner\">\n      <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Home</a></li>\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#invoices\">Invoices</a></li>\n        <li class=\"ds-breadcrumb__item ds-breadcrumb__current\">March 2015</li>\n      </ol>\n    </div>\n  </div>\n  <header class=\"ds-page-header\" data-component=\"page-header\">\n    <div class=\"ds-page-header__inner\">\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Invoices</h1>\n        <p class=\"ds-page-header__text\">Everything billed in March, with what is still owed.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#settings\">Defaults</a>\n        <a class=\"ds-button\" href=\"#invoice\">New invoice</a>\n      </div>\n    </div>\n  </header>\n\n  <div class=\"ds-band\">\n    <div class=\"ds-band__inner\">\n      <ul class=\"ds-tabs\" data-component=\"tabs\">\n        <li><a class=\"ds-tabs__tab is-current\" href=\"#invoices\">All invoices</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#invoices\">Unpaid</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#invoices\">Overdue</a></li>\n        <li><a class=\"ds-tabs__tab\" href=\"#invoices\">Drafts</a></li>\n      </ul>\n      <div class=\"ds-stack\">\n        <ul class=\"ds-stat\" data-component=\"stats\">\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__figure\">$18,420</span><span class=\"ds-stat__label\">Billed this month</span></li>\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__figure\">$12,960</span><span class=\"ds-stat__label\">Paid</span></li>\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__figure\">$4,180</span><span class=\"ds-stat__label\">Outstanding</span></li>\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__figure\">3</span><span class=\"ds-stat__label\">Invoices overdue</span></li>\n        </ul>\n        <div>\n          <div class=\"ds-table__wrap\">\n            <table class=\"ds-table\" data-component=\"table\">\n              <caption class=\"ds-table__caption\">Amounts in US dollars. Showing 5 of 23 invoices.</caption>\n              <thead>\n                <tr>\n                  <th scope=\"col\">Invoice</th>\n                  <th scope=\"col\">Client</th>\n                  <th scope=\"col\">Due</th>\n                  <th scope=\"col\">Status</th>\n                  <th scope=\"col\" class=\"ds-table__num\">Amount</th>\n                </tr>\n              </thead>\n              <tbody>\n              <tr><th scope=\"row\"><a class=\"ds-link\" href=\"#invoice\">0142</a></th><td>Harbour Print Workshop</td><td>28 March 2015</td><td><span class=\"ds-badge ds-badge--warning\">Due soon</span></td><td class=\"ds-table__num\">$1,280.00</td></tr>\n              <tr><th scope=\"row\"><a class=\"ds-link\" href=\"#invoice\">0141</a></th><td>Linden &amp; Vale</td><td>21 March 2015</td><td><span class=\"ds-badge ds-badge--success\">Paid</span></td><td class=\"ds-table__num\">$3,400.00</td></tr>\n              <tr><th scope=\"row\"><a class=\"ds-link\" href=\"#invoice\">0140</a></th><td>Northgate Ceramics</td><td>14 March 2015</td><td><span class=\"ds-badge ds-badge--danger\">Overdue</span></td><td class=\"ds-table__num\">$640.00</td></tr>\n              <tr><th scope=\"row\"><a class=\"ds-link\" href=\"#invoice\">0139</a></th><td>Field Office</td><td>12 March 2015</td><td><span class=\"ds-badge ds-badge--success\">Paid</span></td><td class=\"ds-table__num\">$2,150.00</td></tr>\n              <tr><th scope=\"row\"><a class=\"ds-link\" href=\"#invoice\">0138</a></th><td>Quarry Lane Books</td><td>9 March 2015</td><td><span class=\"ds-badge ds-badge--success\">Paid</span></td><td class=\"ds-table__num\">$975.00</td></tr>\n              </tbody>\n            </table>\n          </div>\n          <div class=\"ds-table__foot\">\n            <ul class=\"ds-pagination\" data-component=\"pagination\">\n              <li><a class=\"ds-pagination__link is-disabled\" href=\"#invoices\">‹ Previous</a></li>\n              <li><a class=\"ds-pagination__link is-current\" href=\"#invoices\">1</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#invoices\">2</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#invoices\">3</a></li>\n              <li><a class=\"ds-pagination__link\" href=\"#invoices\">Next ›</a></li>\n            </ul>\n            <div class=\"ds-badgerow\" data-component=\"badge\">\n              <span class=\"ds-badge\">New</span>\n              <span class=\"ds-badge ds-badge--alt\">Beta</span>\n              <span class=\"ds-badge ds-badge--quiet\">12</span>\n              <span class=\"ds-badge ds-badge--success\">Paid</span>\n              <span class=\"ds-badge ds-badge--warning\">Due soon</span>\n              <span class=\"ds-badge ds-badge--danger\">Overdue</span>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-band ds-band--alt\">\n    <div class=\"ds-band__inner\">\n      <h2 class=\"ds-band__title\">Estimates</h2>\n      <p class=\"ds-band__lead\">Quotes you have sent that are not invoices yet.</p>\n      <div class=\"ds-empty\" data-component=\"empty\">\n        <svg class=\"ds-empty__icon\" viewBox=\"0 0 48 48\" width=\"48\" height=\"48\" aria-hidden=\"true\"><path d=\"M6 30l7-20h22l7 20v10H6z M6 30h12l2 5h8l2-5h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n        <h3 class=\"ds-empty__title\">No estimates yet</h3>\n        <p class=\"ds-empty__text\">Estimates you send to clients will appear here until they are accepted.</p>\n        <a class=\"ds-button\" href=\"#invoice\">Create the first one</a>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"invoice\">\n  <div class=\"ds-band ds-band--tight ds-band--alt\">\n    <div class=\"ds-band__inner\">\n      <ol class=\"ds-breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Home</a></li>\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#invoices\">Invoices</a></li>\n        <li class=\"ds-breadcrumb__item ds-breadcrumb__current\">0142</li>\n      </ol>\n    </div>\n  </div>\n  <header class=\"ds-page-header\">\n    <div class=\"ds-page-header__inner\">\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Invoice 0142 <span class=\"ds-badge ds-badge--warning\">Due soon</span></h1>\n        <p class=\"ds-page-header__text\">Harbour Print Workshop, due 28 March 2015.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#invoices\">Back to the list</a>\n      </div>\n    </div>\n  </header>\n\n  <div class=\"ds-band\">\n    <div class=\"ds-band__inner ds-band__split ds-band__split--level\">\n      <div class=\"ds-band__main ds-stack\">\n        <div class=\"ds-table__wrap\">\n          <table class=\"ds-table\">\n            <caption class=\"ds-table__caption\">Hours are billed in quarters. Tax is not charged on this invoice.</caption>\n            <thead>\n              <tr>\n                <th scope=\"col\">Item</th>\n                <th scope=\"col\" class=\"ds-table__num\">Hours</th>\n                <th scope=\"col\" class=\"ds-table__num\">Rate</th>\n                <th scope=\"col\" class=\"ds-table__num\">Amount</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr><th scope=\"row\">Poster series, design</th><td class=\"ds-table__num\">9.00</td><td class=\"ds-table__num\">$80.00</td><td class=\"ds-table__num\">$720.00</td></tr>\n              <tr><th scope=\"row\">Proofs and corrections</th><td class=\"ds-table__num\">3.50</td><td class=\"ds-table__num\">$80.00</td><td class=\"ds-table__num\">$280.00</td></tr>\n              <tr><th scope=\"row\">Print supervision</th><td class=\"ds-table__num\">2.00</td><td class=\"ds-table__num\">$80.00</td><td class=\"ds-table__num\">$160.00</td></tr>\n              <tr><th scope=\"row\">Paper samples</th><td class=\"ds-table__num\">1.00</td><td class=\"ds-table__num\">$120.00</td><td class=\"ds-table__num\">$120.00</td></tr>\n            </tbody>\n          </table>\n        </div>\n\n        <div class=\"ds-buttonrow\" data-component=\"buttons\">\n          <a class=\"ds-button\" href=\"#invoice\">Send invoice</a>\n          <a class=\"ds-button is-hover\" href=\"#invoice\">Preview</a>\n          <a class=\"ds-button ds-button--secondary\" href=\"#invoice\">Download PDF</a>\n          <a class=\"ds-button ds-button--danger\" href=\"#invoices\">Delete draft</a>\n          <button class=\"ds-button\" type=\"button\" disabled>Mark as paid</button>\n        </div>\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\">Send this invoice?</h2>\n              <a class=\"ds-dialog__close\" href=\"#invoice\" aria-label=\"Close\">×</a>\n            </div>\n            <div class=\"ds-dialog__body\">\n              <p>Invoice 0142 for $1,280.00 will be emailed to the client today.</p>\n            </div>\n            <div class=\"ds-dialog__actions\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#invoice\">Cancel</a>\n              <a class=\"ds-button\" href=\"#invoices\">Send invoice</a>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"ds-band__side ds-stack\">\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Amount due</h2>\n          <div class=\"ds-panel__body\">\n            <span class=\"ds-panel__figure\">$1,280</span>\n            <p>Due in 6 days, on 28 March 2015. Terms: 14 days.</p>\n            <a class=\"ds-link ds-link--more\" href=\"#settings\">Change the terms</a>\n          </div>\n        </section>\n        <aside class=\"ds-sidebar\">\n          <h2 class=\"ds-sidebar__title\">History</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">14 March</span>Draft created</li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">15 March</span>Two items added</li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">20 March</span>Terms set to 14 days</li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">22 March</span>Ready to send</li>\n          </ul>\n        </aside>\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Client</h2>\n          <div class=\"ds-panel__body\">\n            <p>Harbour Print Workshop<br>Unit 4, Tannery Yard<br>accounts@harbourprint.example</p>\n            <a class=\"ds-link ds-link--more\" href=\"#invoices\">All invoices for this client</a>\n          </div>\n        </section>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"settings\">\n  <div class=\"ds-band ds-band--tight ds-band--alt\">\n    <div class=\"ds-band__inner\">\n      <ol class=\"ds-breadcrumb\">\n        <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Home</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\">Invoice defaults</li>\n      </ol>\n    </div>\n  </div>\n  <header class=\"ds-page-header\">\n    <div class=\"ds-page-header__inner\">\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Invoice defaults</h1>\n        <p class=\"ds-page-header__text\">These details are printed on every new invoice.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#invoices\">Back to invoices</a>\n      </div>\n    </div>\n  </header>\n\n  <div class=\"ds-band\">\n    <div class=\"ds-band__inner ds-band__split ds-band__split--level\">\n      <div class=\"ds-band__side ds-stack\">\n        <aside class=\"ds-sidebar\">\n          <h2 class=\"ds-sidebar__title\">Settings</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#settings\">Studio details</a></li>\n            <li class=\"ds-sidebar__item is-current\">Invoice defaults</li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#settings\">Taxes</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#settings\">Reminders</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#pricing\">Plan and billing</a></li>\n          </ul>\n        </aside>\n        <aside class=\"ds-sidebar\">\n          <h2 class=\"ds-sidebar__title\">Last changes</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">2 March</span>Payment terms</li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">18 February</span>Reply-to email</li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">6 January</span>Note to clients</li>\n          </ul>\n        </aside>\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">Good to know</h2>\n          <div class=\"ds-panel__body\">\n            <p>Changes apply from the next invoice you send. Drafts pick them up when you open them.</p>\n            <a class=\"ds-link ds-link--more\" href=\"#invoices\">See your drafts</a>\n          </div>\n        </section>\n      </div>\n\n      <div class=\"ds-band__main ds-stack ds-stack--tight\">\n        <div class=\"ds-noticerow\" data-component=\"notice\">\n          <p class=\"ds-notice\"><span class=\"ds-notice__title\">Heads up.</span> Invoices already sent keep the details they were sent with.</p>\n          <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__title\">We could not save the defaults.</span> Check the highlighted field and try again.</p>\n        </div>\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\">First name</span><input class=\"ds-form__input\" type=\"text\" value=\"Marta\"></label>\n            <label class=\"ds-form__field\"><span class=\"ds-form__label\">Last name</span><input class=\"ds-form__input is-focus\" type=\"text\" placeholder=\"Last name\"></label>\n          </div>\n          <label class=\"ds-form__field\"><span class=\"ds-form__label\">Reply-to email</span><input class=\"ds-form__input is-error\" type=\"text\" value=\"marta@studio\"><span class=\"ds-form__error\">Enter a complete email address.</span></label>\n          <label class=\"ds-form__field\"><span class=\"ds-form__label\">Payment terms</span>\n            <select class=\"ds-form__select\"><option>Due in 14 days</option><option>Due in 30 days</option><option>Due on receipt</option></select>\n          </label>\n          <label class=\"ds-form__field\"><span class=\"ds-form__label\">Note to clients</span><textarea class=\"ds-form__textarea\" rows=\"3\" placeholder=\"Thank you for your business\"></textarea><span class=\"ds-form__hint\">Optional. Shown at the foot of each invoice.</span></label>\n          <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> <span>Send a reminder when an invoice is late. <a class=\"ds-link\" href=\"#settings\">Edit the reminder</a></span></label>\n          <div class=\"ds-form__actions\">\n            <button class=\"ds-button\" type=\"submit\">Save defaults</button>\n            <a class=\"ds-button ds-button--secondary\" href=\"#invoices\">Cancel</a>\n          </div>\n        </form>\n      </div>\n    </div>\n  </div>\n</section>\n\n<footer class=\"ds-footer\" data-component=\"footer\">\n  <div class=\"ds-footer__inner\">\n    <div class=\"ds-footer__cols\">\n      <div>\n        <h2 class=\"ds-footer__title\">Product</h2>\n        <ul class=\"ds-footer__list\">\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">Overview</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#invoices\">Invoices</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#pricing\">Pricing</a></li>\n        </ul>\n      </div>\n      <div>\n        <h2 class=\"ds-footer__title\">Company</h2>\n        <ul class=\"ds-footer__list\">\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">About</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">Jobs</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">Press</a></li>\n        </ul>\n      </div>\n      <div>\n        <h2 class=\"ds-footer__title\">Support</h2>\n        <ul class=\"ds-footer__list\">\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#pricing\">Questions</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#settings\">Settings</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">Contact us</a></li>\n        </ul>\n      </div>\n      <div>\n        <h2 class=\"ds-footer__title\">Developers</h2>\n        <ul class=\"ds-footer__list\">\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">Documentation</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">Libraries</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">Changelog</a></li>\n        </ul>\n      </div>\n    </div>\n    <div class=\"ds-footer__base\">\n      <span>© 2015 chronoskin</span>\n      <span class=\"ds-footer__legal\">\n        <a class=\"ds-footer__link\" href=\"#home\">Privacy</a>\n        <a class=\"ds-footer__link\" href=\"#home\">Terms</a>\n        <a class=\"ds-footer__link\" href=\"#home\">Cookies</a>\n      </span>\n    </div>\n  </div>\n</footer>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.flat-design.landing.s01.p01.t01.u01\",\n  \"library\": \"2026.10.07-2111\",\n  \"era\": {\n    \"slug\": \"flat-design\",\n    \"years\": [\n      2013,\n      2016\n    ]\n  },\n  \"archetype\": \"landing\",\n  \"mode\": \"pure\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1280,\n    \"fluid\": true\n  },\n  \"source\": \"https://chrono.skin/s/v1-fl-1111\",\n  \"short\": \"v1-fl-1111\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #ffffff;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #f8f8f8;\n  --color-surface-strong: #efefef;\n  --color-bar: #ffffff;\n  --color-bar-text: #2e2f33;\n  --color-bar-alt: #efefef;\n  --color-bar-alt-text: #686868;\n  --color-inverse: #262626;\n  --color-inverse-text: #ffffff;\n  --color-text: #686868;\n  --color-text-muted: #919496;\n  --color-heading: #2e2f33;\n  --color-heading-alt: #503750;\n  --color-link: #007ee5;\n  --color-link-quiet: #919496;\n  --color-link-visited: #007ee5;\n  --color-link-hover: #2895f1;\n  --color-link-active: #1570a6;\n  --color-border: #d9dadc;\n  --color-border-strong: #c1c3c6;\n  --color-border-muted: #efefef;\n  --color-accent: #d65a3e;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #f8c433;\n  --color-fill-1: #1570a6;\n  --color-fill-2: #d65a3e;\n  --color-fill-3: #f8c433;\n  --color-fill-4: #2ebd59;\n  --color-button: #1d81e2;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #ffffff;\n  --color-button-secondary-text: #007ee5;\n  --color-input: #ffffff;\n  --color-input-text: #2e2f33;\n  --color-input-border: #c1c3c6;\n  --color-disabled: #efefef;\n  --color-disabled-text: #919496;\n  --color-danger: #e81020;\n  --color-danger-surface: #fff8f8;\n  --color-success: #2ebd59;\n  --color-warning: #f59b23;\n  --color-notice: #e3f2ff;\n  --color-notice-text: #1570a6;\n  --color-focus: #007ee5;\n  --color-shadow: rgb(0 0 0 / 0.15);\n  --color-overlay: rgb(0 0 0 / 0.35);\n}\n\n/* @part type */\n:root {\n  --font-body: \"Open Sans\", \"Segoe UI\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-heading: \"Open Sans\", \"Segoe UI\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-ui: \"Open Sans\", \"Segoe UI\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-mono: Menlo, Consolas, \"Liberation Mono\", monospace;\n  --text-base: 15px;\n  --text-small: 12px;\n  --text-ui: 14px;\n  --text-large: 18px;\n  --text-display: 38px;\n  --text-h1: 32px;\n  --text-h2: 24px;\n  --text-h3: 20px;\n  --line-body: 1.55;\n  --line-heading: 1.3;\n  --line-display: 1.25;\n  --weight-body: 400;\n  --weight-bold: 600;\n  --weight-heading: 300;\n  --weight-display: 300;\n  --weight-ui: 600;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --ui-transform: none;\n  --link-decoration: none;\n  --link-decoration-hover: none;\n  --link-decoration-quiet: none;\n}\n\n/* @part surface */\n:root {\n  --border-width: 1px;\n  --border-width-strong: 2px;\n  --border-style: solid;\n  --radius-control: 5px;\n  --radius-panel: 0;\n  --radius-pill: 500px;\n  --radius-page: 0;\n  --shadow-panel: none;\n  --shadow-control: none;\n  --shadow-control-hover: none;\n  --shadow-control-pressed: none;\n  --shadow-dialog: none;\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: var(--color-bar);\n  --fill-bar-alt: var(--color-bar-alt);\n  --fill-inverse: var(--color-inverse);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-surface);\n  --fill-button: var(--color-button);\n  --fill-button-hover: var(--color-link-hover);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: var(--color-input);\n  --focus-ring: 1px solid var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
