{
  "id": "v1-fl-1667",
  "long_id": "v1.flat-design.landing.s01.p06.t06.u07",
  "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": "mix",
  "viewport": {
    "width": 1280,
    "fluid": true,
    "responsive": 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-1667",
  "preview_url": "https://chrono.skin/s/v1-fl-1667/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- On a phone (760px and below) there is no menu button: `.ds-nav__links` takes a row of its own under the brand, its links spread over the full width and wrapping if they must, and the current link keeps its underline. A drop-down in that row opens under the row, aligned to its right edge, instead of under its own link. A tooltip is not placed beside its trigger: it opens as a full row under its line, inset by `--space-3`, without its arrow.\n\n## Typography and colour roles\n\nThis style combines the parts of different styles of one era. Where a note below names a value that differs from `tokens.css`, the tokens are right.\n\n- Colour family: the deep teal, sky blue and pale blue of the 2014 agency page on the greys of the 2014 newsletter page, with that page's vermilion as the one warm colour and the cyan and ink of the 2014 ride-app page; the green is the 2014 note-taking page's.\n- `--color-page` and `--color-canvas` are grey `#f2f2f2`; `--color-surface` white is every card; `--color-surface-alt` `#f9f9f9` the tab strip, a hovered table row and the foot of a dialog; `--color-surface-strong` `#e8e8e8` the quiet badge, inline code and the lines of a template drawing. `--color-bar` white with `--color-bar-text` `#3a3a3a` is the top bar and the table head. `--color-bar-alt` `#0b5472` (deep teal) with white `--color-bar-alt-text` is the rail; nothing else is put on it and its text takes no other colour, so rail links differ by opacity only.\n- Text is `--color-text` `#474747`, meta `--color-text-muted` `#9c9c9c`, headings and figures `--color-heading` `#070716`; card titles, sidebar titles and h3 are `--color-heading-alt` `#0b5472`.\n- `--color-button` `#1ca8c3` (cyan, white text) is the only action colour and also the top edge of the current tab, the current page number and the edge of the current sidebar row. Links are `--color-link` `#2c9ab7`, hover `#1fbad6`, active `#0b5472`; no link is underlined. The secondary button is `--color-button-secondary-text` `#0b5472` text and edge on white; its text must contrast with the page as well as with its own fill, because a surface set may make the fill transparent. Hovered, it swaps its two colours.\n- `--color-fill-1` (cyan) is the banner, with `--color-inverse-text` on it and the `--inverse` and `--ghost` buttons; it is the only fill that carries text. `--color-fill-1` to `--color-fill-4` are the colour blocks of number cards and template cards and the first two are the two series of a chart. A block holds an icon only, on a round plate of `--color-inverse` mixed in at 40%, or a small white sheet, never text, so a palette may make any fill pale.\n- `--color-accent` `#3ea5ce` (white text) is the default badge, the count in the rail and the account's initials; `--color-accent-alt` pale blue the second badge: a 30% tint over `--color-surface` with an outline and `--color-heading` text. Status: `--color-success` `#20c05c`, `--color-warning` `#f0a30a`, `--color-danger` `#e85c41`, all with `--color-accent-text`; the small line under a figure is `--color-success`, or `--color-danger` with `--down`.\n- `--color-notice` `#b7dded` with `--color-notice-text` `#0b5472`; the error notice is `--color-danger` on `--color-danger-surface` with a 1px border. The footer line is `--fill-inverse` `#070716` with `--color-text-muted` text.\n- One grotesque family for everything, bold for headings, after the newsletter and agency pages: `--font-body`, `--font-heading` and `--font-ui` are Helvetica Neue, Helvetica, Arial. `--font-mono` is Monaco.\n- Dense: `--text-base` 14px at `--line-body` 1.45, `--text-ui` 13px (controls, rail, tables, sidebar), `--text-small` 11px (meta, badges, table heads, labels under figures, breadcrumb, footer), `--text-large` 17px (banner lead, prose lead, the brand).\n- Headings are bold and tight: `--weight-heading` and `--weight-display` 700 with `--heading-tracking` -0.2px and `--display-tracking` -1.5px. `--text-display` 40px is the banner title only; `--text-h1` 28px page titles and figures; `--text-h2` 20px dialog and empty-state titles; `--text-h3` 15px card titles. `--weight-ui` 500 for buttons, tabs and rail links; `--weight-bold` 700 for labels, table heads, row heads and list titles. Nothing is uppercase.\n- Surface: small corners (`--radius-control` 2px, `--radius-panel` 3px, `--radius-page` 5px for the banner and template cards, `--radius-pill` 9px for badges). `--border-width` 1px; `--border-width-strong` 3px marks the current rail link, tab and sidebar row. Depth is a flat frame, never a blur: `--shadow-panel` is a 3px ring in the translucent `--color-shadow` around every card, `--shadow-control` a 1px ring around buttons and inputs that grows to 3px on hover, `--shadow-dialog` an 8px ring. `--focus-ring` is `2px dashed`. `--transition` eases ring and background in 0.15s.\n- One-off values made with `calc()` and `color-mix()` because the vocabulary has no token: the washes behind a hovered and a current rail link and the rule above the account (`--color-bar-alt-text` at 8%, 14% and 16%), the idle bars of the banner drawing (`--color-inverse` at 18%), the icon plate (`--color-inverse` at 40%), the ghost button border (`--color-inverse-text` at 55%), the hovered inverse button (`--color-inverse-text` at 85%), 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 plot of a small chart (half of `--size-chart`). Idle rail links use `opacity` 0.75, group names 0.6, the banner lead 0.85. Bar heights are percentages. The empty state's outline is dashed.\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- `.ds-menu`: a drop-down under a navigation item, written as `<details>`: `.ds-menu__toggle` (the `<summary>`, set like a `.ds-nav__link` with a small chevron) and `.ds-menu__list` of `.ds-menu__item` links in a flat `--fill-panel` box with a 1px border, `--radius-panel` corners and `--shadow-dialog` (none here). Use it for the secondary pages a top bar has no room for (help, resources, account). In a narrow window the list spans the bar's width under the wrapped links.\n- `.ds-accordion`: questions that open and close, each a `<details class=\"ds-accordion__item\">` with `.ds-accordion__head` (the `<summary>`, `--text-h3`, weight 300, a plus in `--color-link` at the right that becomes a minus when open) and `.ds-accordion__body`. Items are divided by 1px rules, with no boxes or fills. Use it for the questions under a pricing table and for help pages.\n- `.ds-tooltip`: a term with a dotted underline that shows `.ds-tooltip__tip` above it on hover or focus (give the trigger `tabindex=\"0\"`); `is-open` shows it statically. The tip is a small flat box on `--fill-inverse` with `--color-inverse-text` at `--text-small`, `--radius-control` corners and a square pointer. Use it to explain one figure or label in a sentence; never put it inside `.ds-table__wrap`, which would clip it.\n- `.ds-switch`: an on/off control drawn over a checkbox: a `<label>` holding `.ds-switch__input`, `.ds-switch__track` and `.ds-switch__label`. The track is a flat pill `--size-switch` wide in a 30% tint of `--color-text`; switched on it takes `--fill-button` and the `--size-knob` knob (in `--color-button-text`) moves to the right. States `is-on`, `is-focus`, `is-disabled`. Use it for a setting that applies at once; keep `.ds-form__checkbox` for agreeing to something in a form that is submitted. `.ds-switchrow` sets a switch and a note in a row above a block.\n- `.ds-progress`: a thin flat bar: `.ds-progress__head` with the label and `.ds-progress__value` at the right, then a `<progress class=\"ds-progress__bar\">` 8px high, `--fill-button` on a `--color-border` track with `--radius-pill` ends; `--success` fills it green. Use it for how much of a month is paid, a quota or an upload. No stripes, no animation.\n- `.ds-avatar`: a flat disc `--size-avatar` across holding two initials in `--color-accent-text` on `--fill-accent`; `--2` uses the button colours, `--3` is `--color-heading` on `--color-surface-strong`. `.ds-byline` sets it beside `.ds-byline__name` and `.ds-byline__role`. Use it for the author of a quote and for a client or account.\n- `.ds-carousel`: customer quotes, one showing at a time: hidden radio buttons `.ds-carousel__pick` come first, then `.ds-carousel__slides` holding up to four `.ds-carousel__slide` (a `.ds-carousel__quote` at `--text-h2`, weight 300, and a `.ds-byline`), then `.ds-carousel__dots` with one `<label class=\"ds-carousel__dot\">` per radio. The checked radio shows its slide and fills its dot with `--color-button`; the other dots are the text colour at 25%. It turns without script and does not move on its own.\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- `font-size >= 11px`: labels, badges and table heads are the smallest text.\n- `font-size <= 40px`: the banner title is the largest text.\n- `font-weight <= 700`: headings and figures are bold, never black.\n- `font-families <= 2`: one sans-serif family, plus monospace for code.\n- `line-height <= 1.45`: body text is set at 1.45.\n- `uppercase-text <= 0%`: labels, tabs and buttons are in sentence case.\n- `underlined-links <= 0%`: no reference underlines links.\n- `box-shadow-blur <= 0px`: the only shadows are hard edges and rings.\n- `text-shadow = none`: text is flat on every fill.\n- `gradient-fills <= 0%`: every background is one solid colour.\n- `border-width <= 4px`: rules are 2px; 4px marks a label, a figure and the tab row.\n- `border-radius <= 24px`: buttons and fields are pills of 24px; panels and tiles are square.\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. 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  --size-avatar: 40px;\n  --size-switch: 44px;\n  --size-knob: 18px;\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--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(--fill-button-hover);\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__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__close::before {\n  content: \"\";\n  display: inline-block;\n  width: calc(var(--text-h2) * 0.6);\n  height: calc(var(--text-h2) * 0.6);\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-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/* menu: a drop-down under a navigation item; a flat list in a 1px border, opened by its toggle */\n.ds-menu {\n  position: relative;\n}\n.ds-menu__toggle {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  padding: var(--space-1) 0;\n  color: var(--color-bar-text);\n  border-bottom: var(--border-width-strong) var(--border-style) transparent;\n  font-weight: var(--weight-body);\n  text-transform: var(--ui-transform);\n  list-style: none;\n  cursor: pointer;\n  transition: var(--transition);\n}\n.ds-menu__toggle::-webkit-details-marker {\n  display: none;\n}\n.ds-menu__toggle::after {\n  content: \"\";\n  width: calc(var(--space-1) + var(--border-width-strong));\n  height: calc(var(--space-1) + var(--border-width-strong));\n  margin-top: calc(0 - 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__toggle:hover,\n.ds-menu__toggle.is-hover,\n.ds-menu[open] > .ds-menu__toggle {\n  color: var(--color-link);\n}\n.ds-menu__toggle:focus-visible,\n.ds-menu__toggle.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-menu__list {\n  position: absolute;\n  top: calc(100% + var(--space-2));\n  left: 0;\n  z-index: 5;\n  min-width: var(--size-sidebar);\n  margin: 0;\n  padding: var(--space-2) 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-dialog);\n}\n.ds-menu__item {\n  display: block;\n  padding: var(--space-2) var(--space-3);\n  color: var(--color-text);\n  text-decoration: var(--link-decoration-quiet);\n  transition: var(--transition);\n}\n.ds-menu__item:hover,\n.ds-menu__item.is-hover {\n  background: var(--color-surface-alt);\n  color: var(--color-link);\n}\n.ds-menu__item:focus-visible,\n.ds-menu__item.is-focus {\n  outline: var(--focus-ring);\n}\n\n/* accordion: questions divided by 1px rules; a plus opens, a minus closes */\n.ds-accordion {\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-accordion__item {\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-accordion__head {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-3) 0;\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  list-style: none;\n  cursor: pointer;\n  transition: var(--transition);\n}\n.ds-accordion__head::-webkit-details-marker {\n  display: none;\n}\n.ds-accordion__head::after {\n  content: \"\";\n  flex: none;\n  align-self: center;\n  display: inline-block;\n  width: calc(var(--space-3) - var(--space-2) / 4);\n  height: calc(var(--space-3) - var(--space-2) / 4);\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  color: var(--color-link);\n}\n.ds-accordion__item[open] > .ds-accordion__head::after {\n  clip-path: inset(calc(50% - var(--space-2) / 8) 0);\n}\n.ds-accordion__head:hover,\n.ds-accordion__head.is-hover {\n  color: var(--color-link);\n}\n.ds-accordion__head:focus-visible,\n.ds-accordion__head.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-accordion__body {\n  max-width: 72ch;\n  padding: 0 0 var(--space-4);\n}\n.ds-accordion__body p {\n  margin: 0;\n}\n\n/* tooltip: a small flat dark box above its trigger, shown on hover or focus */\n.ds-tooltip {\n  position: relative;\n  display: inline-block;\n  border-bottom: var(--border-width) dotted currentColor;\n  cursor: help;\n}\n.ds-tooltip:focus-visible {\n  outline: var(--focus-ring);\n}\n.ds-tooltip__tip {\n  position: absolute;\n  bottom: calc(100% + var(--space-2));\n  left: 0;\n  z-index: 6;\n  display: none;\n  width: max-content;\n  max-width: min(32ch, 70vw);\n  padding: var(--space-2) var(--space-3);\n  background: var(--fill-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  letter-spacing: 0;\n  text-align: left;\n  text-transform: none;\n  white-space: normal;\n}\n.ds-tooltip__tip::after {\n  content: \"\";\n  position: absolute;\n  top: calc(100% - var(--space-1));\n  left: var(--space-3);\n  width: var(--space-2);\n  height: var(--space-2);\n  background: var(--fill-inverse);\n  transform: rotate(45deg);\n}\n.ds-tooltip:hover .ds-tooltip__tip,\n.ds-tooltip:focus .ds-tooltip__tip,\n.ds-tooltip.is-open .ds-tooltip__tip {\n  display: block;\n}\n\n/* switch: a flat pill over a checkbox; the knob slides to the right and the track takes the button colour */\n.ds-switch {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  gap: var(--space-3);\n  color: var(--color-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\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: var(--size-switch);\n  height: calc(var(--size-switch) / 2);\n  background: color-mix(in srgb, var(--color-text) 30%, transparent);\n  border-radius: var(--radius-pill);\n  transition: var(--transition);\n}\n.ds-switch__track::after {\n  content: \"\";\n  position: absolute;\n  top: calc((var(--size-switch) / 2 - var(--size-knob)) / 2);\n  left: calc((var(--size-switch) / 2 - var(--size-knob)) / 2);\n  width: var(--size-knob);\n  height: var(--size-knob);\n  background: var(--color-button-text);\n  border-radius: var(--radius-pill);\n}\n.ds-switch__input:checked + .ds-switch__track,\n.ds-switch.is-on .ds-switch__track {\n  background: var(--fill-button);\n}\n.ds-switch__input:checked + .ds-switch__track::after,\n.ds-switch.is-on .ds-switch__track::after {\n  left: calc(var(--size-switch) / 2 + (var(--size-switch) / 2 - var(--size-knob)) / 2);\n}\n.ds-switch__input:focus-visible + .ds-switch__track,\n.ds-switch.is-focus .ds-switch__track {\n  outline: var(--focus-ring);\n  outline-offset: var(--border-width-strong);\n}\n.ds-switch__input:disabled + .ds-switch__track,\n.ds-switch.is-disabled .ds-switch__track {\n  background: var(--color-disabled);\n}\n.ds-switch__label {\n  min-width: 0;\n}\n.ds-switchrow {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-2) var(--space-4);\n  margin: 0 0 var(--space-5);\n}\n\n/* progress: a thin flat bar on a track; no stripes, no gloss */\n.ds-progress {\n  font-size: var(--text-ui);\n}\n.ds-progress__head {\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-3);\n  margin-bottom: var(--space-2);\n  color: var(--color-text);\n}\n.ds-progress__value {\n  color: var(--color-text-muted);\n  font-variant-numeric: tabular-nums;\n}\n.ds-progress__bar {\n  display: block;\n  width: 100%;\n  height: var(--space-2);\n  appearance: none;\n  overflow: hidden;\n  background: var(--color-border);\n  border: 0;\n  border-radius: var(--radius-pill);\n}\n.ds-progress__bar::-webkit-progress-bar {\n  background: transparent;\n}\n.ds-progress__bar::-webkit-progress-value {\n  background: var(--fill-button);\n}\n.ds-progress__bar::-moz-progress-bar {\n  background: var(--fill-button);\n}\n.ds-progress__bar--success::-moz-progress-bar {\n  background: var(--color-success);\n}\n\n/* avatar: a flat disc with initials; .ds-byline sets it beside a name */\n.ds-avatar {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  flex: 0 0 auto;\n  width: var(--size-avatar);\n  height: var(--size-avatar);\n  background: var(--fill-accent);\n  color: var(--color-accent-text);\n  border-radius: 50%;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: 1;\n}\n.ds-avatar--2 {\n  background: var(--fill-button);\n  color: var(--color-button-text);\n}\n.ds-avatar--3 {\n  background: var(--color-surface-strong);\n  color: var(--color-heading);\n}\n.ds-byline {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  margin: 0 0 var(--space-3);\n  text-align: left;\n}\n.ds-byline__text {\n  min-width: 0;\n}\n.ds-byline__name {\n  display: block;\n  color: var(--color-heading);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n}\n.ds-byline__role {\n  display: block;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n\n/* carousel: one quote showing at a time; the dots are labels of hidden radio buttons, so it turns without script */\n.ds-carousel {\n  position: relative;\n  text-align: center;\n}\n.ds-carousel__pick {\n  position: absolute;\n  margin: 0;\n  opacity: 0;\n  pointer-events: none;\n}\n.ds-carousel__slide {\n  display: none;\n  margin: 0;\n}\n.ds-carousel__pick:nth-of-type(1):checked ~ .ds-carousel__slides > .ds-carousel__slide:nth-child(1),\n.ds-carousel__pick:nth-of-type(2):checked ~ .ds-carousel__slides > .ds-carousel__slide:nth-child(2),\n.ds-carousel__pick:nth-of-type(3):checked ~ .ds-carousel__slides > .ds-carousel__slide:nth-child(3),\n.ds-carousel__pick:nth-of-type(4):checked ~ .ds-carousel__slides > .ds-carousel__slide:nth-child(4) {\n  display: block;\n}\n.ds-carousel__quote {\n  max-width: 40ch;\n  margin: 0 auto var(--space-4);\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-carousel .ds-byline {\n  justify-content: center;\n  margin: 0;\n}\n.ds-carousel__dots {\n  display: flex;\n  justify-content: center;\n  margin-top: var(--space-4);\n}\n.ds-carousel__dot {\n  padding: var(--space-2);\n  cursor: pointer;\n}\n.ds-carousel__dot::before {\n  content: \"\";\n  display: block;\n  width: calc(var(--space-2) + var(--space-1));\n  height: calc(var(--space-2) + var(--space-1));\n  background: currentColor;\n  border-radius: 50%;\n  opacity: 0.25;\n  transition: var(--transition);\n}\n.ds-carousel__dot:hover::before,\n.ds-carousel__dot.is-hover::before {\n  opacity: 0.6;\n}\n.ds-carousel__pick:nth-of-type(1):checked ~ .ds-carousel__dots > .ds-carousel__dot:nth-child(1)::before,\n.ds-carousel__pick:nth-of-type(2):checked ~ .ds-carousel__dots > .ds-carousel__dot:nth-child(2)::before,\n.ds-carousel__pick:nth-of-type(3):checked ~ .ds-carousel__dots > .ds-carousel__dot:nth-child(3)::before,\n.ds-carousel__pick:nth-of-type(4):checked ~ .ds-carousel__dots > .ds-carousel__dot:nth-child(4)::before {\n  background: var(--color-button);\n  opacity: 1;\n}\n.ds-carousel__pick:focus-visible ~ .ds-carousel__dots {\n  outline: var(--focus-ring);\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  .ds-nav__links {\n    position: relative;\n    flex-wrap: wrap;\n    gap: 0 var(--space-4);\n  }\n  .ds-menu {\n    position: static;\n  }\n  .ds-menu__toggle {\n    padding: var(--space-2) 0;\n  }\n  .ds-menu__list {\n    top: 100%;\n    right: 0;\n  }\n  .ds-carousel__quote {\n    font-size: var(--text-h3);\n  }\n  .ds-tooltip {\n    position: static;\n  }\n  .ds-tooltip__tip,\n  .ds-tooltip--end .ds-tooltip__tip {\n    right: var(--space-3);\n    bottom: auto;\n    left: var(--space-3);\n    width: auto;\n    max-width: none;\n    margin-top: var(--space-1);\n  }\n  .ds-tooltip__tip::after {\n    display: none;\n  }\n}\n\n/* phones: the five entries spread over the whole row under the brand */\n@media (max-width: 760px) {\n  .ds-nav__links {\n    justify-content: space-between;\n    gap: 0 var(--space-2);\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=\"currentColor\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\" opacity=\".3\"/><path d=\"M15.5 8.5L21.64 14.64A10 10 0 0 1 14.64 21.64L8.5 15.5Z\" opacity=\".35\"/><rect x=\"8.5\" y=\"8.5\" width=\"7\" height=\"7\"/></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      <li>\n        <details class=\"ds-menu\">\n          <summary class=\"ds-menu__toggle\">Help</summary>\n          <ul class=\"ds-menu__list\">\n            <li><a class=\"ds-menu__item\" href=\"#home\">Getting started</a></li>\n            <li><a class=\"ds-menu__item\" href=\"#pricing\">Questions about pricing</a></li>\n            <li><a class=\"ds-menu__item\" href=\"#invoice\">Reading an invoice</a></li>\n            <li><a class=\"ds-menu__item\" href=\"#settings\">Invoice defaults</a></li>\n          </ul>\n        </details>\n      </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\n  <div class=\"ds-band ds-band--alt\">\n    <div class=\"ds-band__inner\">\n      <div class=\"ds-carousel\">\n        <input class=\"ds-carousel__pick\" type=\"radio\" name=\"voices\" id=\"voice-1\" aria-label=\"First quote\" checked>\n        <input class=\"ds-carousel__pick\" type=\"radio\" name=\"voices\" id=\"voice-2\" aria-label=\"Second quote\">\n        <input class=\"ds-carousel__pick\" type=\"radio\" name=\"voices\" id=\"voice-3\" aria-label=\"Third quote\">\n        <div class=\"ds-carousel__slides\">\n          <figure class=\"ds-carousel__slide\">\n            <blockquote class=\"ds-carousel__quote\">We used to close the month over a weekend. Now it takes the length of a coffee.</blockquote>\n            <figcaption class=\"ds-byline\">\n              <span class=\"ds-avatar\">PW</span>\n              <span class=\"ds-byline__text\"><span class=\"ds-byline__name\">Founder of a print workshop</span><span class=\"ds-byline__role\">Studio plan, five people</span></span>\n            </figcaption>\n          </figure>\n          <figure class=\"ds-carousel__slide\">\n            <blockquote class=\"ds-carousel__quote\">Clients pay a week sooner since the reminders started sending themselves.</blockquote>\n            <figcaption class=\"ds-byline\">\n              <span class=\"ds-avatar ds-avatar--2\">CS</span>\n              <span class=\"ds-byline__text\"><span class=\"ds-byline__name\">Partner at a ceramics studio</span><span class=\"ds-byline__role\">Solo plan</span></span>\n            </figcaption>\n          </figure>\n          <figure class=\"ds-carousel__slide\">\n            <blockquote class=\"ds-carousel__quote\">Our accountant asked what we had changed. One export, and nothing to retype.</blockquote>\n            <figcaption class=\"ds-byline\">\n              <span class=\"ds-avatar ds-avatar--3\">BA</span>\n              <span class=\"ds-byline__text\"><span class=\"ds-byline__name\">Bookkeeper at a design agency</span><span class=\"ds-byline__role\">Agency plan, twenty people</span></span>\n            </figcaption>\n          </figure>\n        </div>\n        <div class=\"ds-carousel__dots\">\n          <label class=\"ds-carousel__dot\" for=\"voice-1\" title=\"First quote\"></label>\n          <label class=\"ds-carousel__dot\" for=\"voice-2\" title=\"Second quote\"></label>\n          <label class=\"ds-carousel__dot\" for=\"voice-3\" title=\"Third quote\"></label>\n        </div>\n      </div>\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-switchrow\">\n        <label class=\"ds-switch\"><input class=\"ds-switch__input\" type=\"checkbox\" checked><span class=\"ds-switch__track\"></span><span class=\"ds-switch__label\">Bill once a year</span></label>\n        <span class=\"ds-badge ds-badge--success\">Two months free</span>\n      </div>\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>\n        <h2 class=\"ds-band__title\">Questions about pricing</h2>\n        <p class=\"ds-band__lead\">The four we are asked most.</p>\n        <div class=\"ds-accordion\">\n          <details class=\"ds-accordion__item\" open>\n            <summary class=\"ds-accordion__head\">Can I change plan later?</summary>\n            <div class=\"ds-accordion__body\"><p>Yes, in either direction and at any time. The new price starts with the next invoice we send you.</p></div>\n          </details>\n          <details class=\"ds-accordion__item\">\n            <summary class=\"ds-accordion__head\">What happens after the trial?</summary>\n            <div class=\"ds-accordion__body\"><p>Nothing, unless you choose a plan. Your invoices stay readable and can be exported for a year.</p></div>\n          </details>\n          <details class=\"ds-accordion__item\">\n            <summary class=\"ds-accordion__head\">Do you take a share of payments?</summary>\n            <div class=\"ds-accordion__body\"><p>No. Card processors charge their own fee; chronoskin adds nothing on top of the monthly price.</p></div>\n          </details>\n          <details class=\"ds-accordion__item\">\n            <summary class=\"ds-accordion__head\">Is there a contract?</summary>\n            <div class=\"ds-accordion__body\"><p>There is not. Plans are paid month by month and stop on the day you cancel.</p></div>\n          </details>\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\"><span class=\"ds-tooltip\" tabindex=\"0\">Outstanding<span class=\"ds-tooltip__tip\" role=\"tooltip\">Sent and not yet paid, overdue invoices included.</span></span></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 class=\"ds-progress\">\n          <div class=\"ds-progress__head\"><span>Paid so far this month</span><span class=\"ds-progress__value\">70%</span></div>\n          <progress class=\"ds-progress__bar\" value=\"70\" max=\"100\">70%</progress>\n        </div>\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            <div class=\"ds-byline\">\n              <span class=\"ds-avatar ds-avatar--2\">HP</span>\n              <span class=\"ds-byline__text\"><span class=\"ds-byline__name\">Harbour Print Workshop</span><span class=\"ds-byline__role\">Client since 2013</span></span>\n            </div>\n            <p>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-switch\"><input class=\"ds-switch__input\" type=\"checkbox\" checked><span class=\"ds-switch__track\"></span><span class=\"ds-switch__label\">Attach a PDF copy to every email</span></label>\n          <label class=\"ds-switch\"><input class=\"ds-switch__input\" type=\"checkbox\"><span class=\"ds-switch__track\"></span><span class=\"ds-switch__label\">Print bank details at the foot of the 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.p06.t06.u07\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"flat-design\",\n    \"years\": [\n      2013,\n      2016\n    ]\n  },\n  \"archetype\": \"landing\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 1280,\n    \"fluid\": true,\n    \"responsive\": true\n  },\n  \"source\": \"https://chrono.skin/s/v1-fl-1667\",\n  \"short\": \"v1-fl-1667\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #f2f2f2;\n  --color-canvas: #f2f2f2;\n  --color-surface: #ffffff;\n  --color-surface-alt: #f9f9f9;\n  --color-surface-strong: #e8e8e8;\n  --color-bar: #ffffff;\n  --color-bar-text: #3a3a3a;\n  --color-bar-alt: #0b5472;\n  --color-bar-alt-text: #ffffff;\n  --color-inverse: #070716;\n  --color-inverse-text: #ffffff;\n  --color-text: #474747;\n  --color-text-muted: #9c9c9c;\n  --color-heading: #070716;\n  --color-heading-alt: #0b5472;\n  --color-link: #2c9ab7;\n  --color-link-quiet: #9c9c9c;\n  --color-link-visited: #5e98ba;\n  --color-link-hover: #1fbad6;\n  --color-link-active: #0b5472;\n  --color-border: #dcdcdc;\n  --color-border-strong: #bababa;\n  --color-border-muted: #e8e8e8;\n  --color-accent: #3ea5ce;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #b7dded;\n  --color-fill-1: #1ca8c3;\n  --color-fill-2: #e85c41;\n  --color-fill-3: #b7dded;\n  --color-fill-4: #3b383c;\n  --color-button: #1ca8c3;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #ffffff;\n  --color-button-secondary-text: #0b5472;\n  --color-input: #ffffff;\n  --color-input-text: #222222;\n  --color-input-border: #bababa;\n  --color-disabled: #e8e8e8;\n  --color-disabled-text: #9c9c9c;\n  --color-danger: #e85c41;\n  --color-danger-surface: #f9f9f9;\n  --color-success: #20c05c;\n  --color-warning: #f0a30a;\n  --color-notice: #b7dded;\n  --color-notice-text: #0b5472;\n  --color-focus: #1fbad6;\n  --color-shadow: rgb(7 7 22 / 0.1);\n  --color-overlay: rgb(7 7 22 / 0.6);\n}\n\n/* @part type */\n:root {\n  --font-body: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-heading: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-ui: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  --font-mono: Monaco, Consolas, \"Lucida Console\", monospace;\n  --text-base: 14px;\n  --text-small: 11px;\n  --text-ui: 13px;\n  --text-large: 17px;\n  --text-display: 40px;\n  --text-h1: 28px;\n  --text-h2: 20px;\n  --text-h3: 15px;\n  --line-body: 1.45;\n  --line-heading: 1.2;\n  --line-display: 1.15;\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.2px;\n  --display-tracking: -1.5px;\n  --figure-shift: 0em;\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: 2px;\n  --border-width-strong: 4px;\n  --border-style: solid;\n  --radius-control: 24px;\n  --radius-panel: 0;\n  --radius-pill: 2px;\n  --radius-page: 0;\n  --shadow-panel: -4px 0 0 0 var(--color-border-strong);\n  --shadow-control: none;\n  --shadow-control-hover: inset 0 0 0 2px var(--color-shadow);\n  --shadow-control-pressed: inset 0 0 0 40px var(--color-shadow);\n  --shadow-dialog: 0 0 0 4px var(--color-shadow);\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: var(--color-bar);\n  --fill-bar-alt: var(--color-bar-alt);\n  --fill-inverse: var(--color-inverse);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-surface);\n  --fill-button: var(--color-button);\n  --fill-button-hover: color-mix(in srgb, var(--color-button) 88%, black);\n  --fill-button-secondary: transparent;\n  --fill-input: var(--color-input);\n  --focus-ring: 2px solid var(--color-focus);\n  --transition: background-color 0.15s linear, border-color 0.15s linear, color 0.15s linear;\n  --backdrop-blur: 0px;\n}\n"
  }
}
