{
  "id": "v1-fl-776b",
  "long_id": "v1.flat-design.landing.s07.p07.t06.u11",
  "name": "Flat design conference",
  "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": "This is the event site of flat design, common from 2013 to 2016 for conferences, meetups and festivals: a poster in two flat blocks with the dates set very large on one and the title on the other, then a page cut into numbered sections, each with a narrow label column at the left and its content at the right. Type is condensed, bold and uppercase for headings, labels and buttons, with plain running text beside it; buttons are pills, some of them only a 2px outline. Nothing has gloss, gradient or a blurred shadow, and colour comes as whole blocks, a ribbon of the four fills and one strong rule above every label.",
  "url": "https://chrono.skin/s/v1-fl-776b",
  "preview_url": "https://chrono.skin/s/v1-fl-776b/specimen.html",
  "files": {
    "STYLE.md": "# Flat design conference\n\n## Summary\n\nThis is the event site of flat design, common from 2013 to 2016 for conferences, meetups and festivals: a poster in two flat blocks with the dates set very large on one and the title on the other, then a page cut into numbered sections, each with a narrow label column at the left and its content at the right. Type is condensed, bold and uppercase for headings, labels and buttons, with plain running text beside it; buttons are pills, some of them only a 2px outline. Nothing has gloss, gradient or a blurred shadow, and colour comes as whole blocks, a ribbon of the four fills and one strong rule above every label.\n\n## Layout\n\n- The page is fluid and designed for a 1280px viewport. The poster (`.ds-hero`), the sections, the page header and the footer span the viewport and paint their own background; content sits in a centred column of `--size-page` (1080px) with `--space-4` (24px) at each side. There is no boxed page frame.\n- Navigation is a centred stack on `--fill-bar`: a thin `--fill-bar-alt` note strip (`.ds-nav__note`) with the dates at the left and one link at the right, then the `.ds-brand` alone in the middle, then the links in one centred row under a 1px rule. The current link is in `--color-link` and carries a line on the rule above it. There is no button in the header.\n- The home page opens with the poster: `.ds-hero` is a grid of one part to two. The left part is the inverted block (`--fill-inverse`) with the days at twice the display size, right-aligned; the right part is `--color-fill-1` with a small label, the title, a lead and two pill buttons, left-aligned. Under it lies `.ds-ribbon`, the four fills as one 12px stripe.\n- Everything below is a `.ds-section`, on `--color-canvas` and `--color-surface-alt` in turn. `.ds-section__inner` is a grid of a `--size-label` (220px) label column and the body, `--space-6` (60px) apart. The label column starts with a `--border-width-strong` rule in `--color-button` and holds a small number, the section title and one or two lines; the body holds the work. Sections touch each other; the space (`--space-7`, 96px) is inside. One `.ds-section--fill` on `--color-fill-1` closes the home page with a sentence and one button.\n- Inner pages have no poster and no ribbon. Under the navigation comes `.ds-page-header` on `--color-surface-alt`, cut into the same columns: the `.ds-breadcrumb` under its strong rule in the label column, the page title with one line of description in the body, the actions at the right on the same baseline. The sections follow. On a list page the label column holds the `.ds-sidebar` filter and the label key, and the body holds `.ds-tabs` standing on the table, with the pagination in `.ds-table__foot`. On a detail page the label column holds the neighbouring items and a small panel, the body the running text, the links, the action row and the dialog. A form page puts its plans in one section and the notices and form in the next.\n- Views. The specimen is a two-day conference on type and interface with four views. `home` is the poster, the idea with its four figures, the four themes, Thursday's programme and the two passes. `schedule` is the list page: themes and label key at the left, day tabs on the session table with its pagination, then the empty box for the visitor's own picks. `talk` is one session: the same morning and the speaker at the left, the description, links, the action row and the open workshop dialog at the right. `tickets` is the booking page: three passes, then the notices and the details form beside a short link list. Below 760px the label column lies above its body, the poster stacks with the dates first, grids and plans fold to one column, the figures to two, and a wide table scrolls sideways inside `.ds-table__wrap` while the page itself never does.\n- Spacing scale: `--space-1` 6px (between a label and its field, between tabs, sidebar rows), `--space-2` 12px (button vertical padding, between adjacent buttons and badges, the ribbon's height), `--space-3` 18px (paragraph gap, table cell and list row padding, above a label), `--space-4` 24px (page side padding, button horizontal padding, panel padding, between panels), `--space-5` 36px (between stacked blocks, between grid cells, the brand mark), `--space-6` 60px (between the label column and the body, the poster's inner padding, footer padding), `--space-7` 96px (section padding).\n- Other sizes: `--size-date` 320px (least width of the poster's date block), `--size-time` 96px (the time column of the programme), `--size-chip` 84px (colour chip of a theme), `--size-icon` 44px, `--size-dialog` 460px.\n- On a phone (760px and below) there is no menu button: `.ds-nav__links` stays a row of links with a `--space-4` gap and the current link keeps its mark, and `.ds-nav__note` has tighter padding. A drop-down in the links opens as a full row under them, inset by `--space-3` at each side. 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- `--border-width` 1px, `--border-width-strong` 2px for the current item.\n- Soft corners everywhere: `--radius-control` 4px, `--radius-panel` 6px, `--radius-pill` 500px for badges, `--radius-page` 8px for tiles, pictures and grid boxes.\n- This is the late, softened flat of 2015 and 2016: panels lift off the tinted page with `--shadow-panel` `0 1px 3px 0` in the faint `--color-shadow`, and a dialog floats on `--shadow-dialog` `0 12px 32px 0`. Controls and text stay shadowless.\n- `--fill-button` is the flat `--color-button`, hovered mixed 15% with white; `--fill-button-secondary` is `transparent`, so the secondary button is an outline on whatever it stands on. `--focus-ring` is a soft halo: `3px solid` in `--color-focus` at 40%. `--transition` fades colour, background and border colour in 0.3s.\n\n## Components\n\n- `.ds-page`: on `<body>`. Sets the font, text colour and page fill. Holds the header, the views and the footer; it has no width of its own.\n- `.ds-section`: full-width strip with a `.ds-section__inner` grid of `.ds-section__label` (`.ds-section__number`, `.ds-section__title`, `.ds-section__text`) and `.ds-section__body`. Variants `--alt` and `--fill`. `.ds-section__lead` is the large first sentence of a body; `.ds-section__call` sets a sentence and a button on one line. `.ds-stack` stacks blocks 36px apart (`--tight`: 24px); `.ds-cols` is a two to one split inside a body.\n- `.ds-brand`: the site's mark and name, alone in the middle of the header. `.ds-brand__mark` is a 36px tile dressed like the primary button (`--fill-button`, `--color-button-text`, `--radius-control`, `--shadow-control`) holding the mark as inline SVG; `.ds-brand__name` is the name in the heading font at `--text-h2` and `--weight-bold` in `--color-heading`. The name and the mark are placeholders for the installing project's own name and logo.\n- `.ds-nav`: the header: `.ds-nav__note` with an optional `.ds-nav__note-link`, `.ds-nav__inner` with the brand, and `.ds-nav__links` with `.ds-nav__link` (current item: `is-current`). 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`: the poster. `.ds-hero__date` holds `.ds-hero__days`, `.ds-hero__month` and `.ds-hero__place`; `.ds-hero__copy` holds `.ds-hero__kicker`, `.ds-hero__title`, `.ds-hero__lead` and `.ds-hero__actions` with one `.ds-button--inverse` and one `.ds-button--ghost`. `.ds-ribbon` with four `.ds-ribbon__part` (`--2`, `--3`, `--4`) follows it. Under 1040px the dates are set at 1.4 times `--text-display` so that they stay inside their block.\n- `.ds-page-header`: head of an inner page, used instead of `.ds-hero`. `.ds-page-header__inner` holds `.ds-page-header__trail` (the breadcrumb), `.ds-page-header__copy` with `.ds-page-header__title` and one `.ds-page-header__text` line, and `.ds-page-header__actions` with at most one primary and one `--secondary` button.\n- `.ds-prose`: running text in a 68ch measure: 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. `.ds-linkrow` lays links in a row.\n- `.ds-button`: pill button in the UI font. Variants: `--secondary` (outline), `--danger` (flat `--color-danger`, for destructive actions only; one per view), `--inverse` (on a fill), `--ghost` (outline on a fill only), `--large`, `--small`. States `is-hover`, `is-active`, `is-focus`, `is-disabled`. `.ds-buttonrow` spaces buttons.\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`.\n- `.ds-table`: data table with horizontal rules only: a strong rule under the head, alternate rows on `--color-surface-alt`. `.ds-table__num` right-aligns numbers; `.ds-table__caption` is a small note below. Wrap it in `.ds-table__wrap`; `.ds-table__foot` is the row under it with the pagination at the left.\n- `.ds-list`: the programme. Each `.ds-list__item` is a row of `.ds-list__time`, a `.ds-list__body` with `.ds-list__title`, optional `.ds-list__text` and `.ds-list__meta`, and one badge at the right.\n- `.ds-panel`: outlined box on `--fill-panel` with `--shadow-panel`; `.ds-panel__title` stands on a faint rule, `.ds-panel__body` below. `.ds-panel__figure` is a price at display size. `.ds-plans` sets three panels side by side (`--2`: two).\n- `.ds-stat`: the row of four figures. Each `.ds-stat__item` hangs from a strong rule: `.ds-stat__figure` at display size over a small `.ds-stat__label`. No boxes and no icons.\n- `.ds-grid`: two columns of `.ds-grid__cell`, each a square `.ds-grid__tile` chip (`--2`, `--3`, `--4` for the other fills) with a `.ds-grid__icon` on its plate, beside `.ds-grid__copy` with `.ds-grid__title`, `.ds-grid__text` and a link.\n- `.ds-tabs`: blocks on a strong rule in `--color-button`; `.ds-tabs__tab` is a `--color-surface-strong` block and `is-current` is filled like the primary button.\n- `.ds-badge`: small tag with `--radius-pill` corners. `--alt`, `--quiet`, and the status variants `--success`, `--warning`, `--danger`. `.ds-badgerow` for several.\n- `.ds-sidebar`: unboxed block for the label column: `.ds-sidebar__title`, `.ds-sidebar__list` of ruled `.ds-sidebar__item` rows with optional `.ds-sidebar__count`; the current row is `is-current`.\n- `.ds-notice`: flat message strip; `--error` is `--color-danger-surface` with a danger border. `.ds-notice__title` for the bold lead-in. `.ds-noticerow` stacks notices.\n- `.ds-pagination`: row of `.ds-pagination__link`; `is-current` is filled like the primary button, `is-disabled` is grey.\n- `.ds-breadcrumb`: small trail of `.ds-breadcrumb__item` separated by chevrons; the last item is `.ds-breadcrumb__current`.\n- `.ds-dialog`: dimmed block (`--color-overlay`) centring a `.ds-dialog__box` with `.ds-dialog__head` (`.ds-dialog__title`, `.ds-dialog__close`), `.ds-dialog__body` and right-aligned `.ds-dialog__actions`.\n- `.ds-empty`: centred message in an outlined box: `.ds-empty__icon`, `.ds-empty__title`, `.ds-empty__text` and one button. It stands where a list would be.\n- `.ds-footer`: the inverted block. `.ds-footer__cols` holds the `.ds-footer__name` with one `.ds-footer__text` line in the label column and three columns of `.ds-footer__title` and `.ds-footer__list` / `.ds-footer__item` / `.ds-footer__link`; `.ds-footer__base` is the last row with `.ds-footer__legal` links.\n- `.ds-menu`: a drop-down under a navigation item, written as `<details>`: `.ds-menu__toggle` is the `<summary>`, set like the navigation links with a small chevron after it, and `.ds-menu__list` holds `.ds-menu__item` links in a flat `--fill-panel` box with a `--border-width` border, `--radius-panel` corners and `--shadow-dialog`. Here it is the last item of the centred row of links, \"More\", for the pages the row has no room for. In a narrow window the list spans the row.\n- `.ds-accordion`: sections that open and close, each a `<details class=\"ds-accordion__item\">` with `.ds-accordion__head` (the `<summary>`, in the heading font, with a plus in `--color-link` at the right that becomes a minus when open) and `.ds-accordion__body`. Items are divided by rules; there are no boxes or fills. Use it under the passes for refunds and other questions before booking; the heads are set in the heading style at `--text-h3`.\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 and `--end` hangs the tip from the trigger's right edge. 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 a condition in one 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 shape `--size-switch` wide with `--radius-pill` ends 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`; `--end` puts the label left and the track at the right edge. Use it above a list or table for a filter that applies at once.\n- `.ds-switchrow`: a row holding a switch and a short note or badge, above the block it changes.\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\">` one `--space-2` high, `--fill-button` on a `--color-border` track with `--radius-pill` ends; `--success` and `--warning` fill it in the status colours. No stripes and no animation. Use it under the `.ds-stat` row for how many passes are sold.\n- `.ds-avatar`: a person or account drawn as a flat disc `--size-avatar` across with two initials, `--color-accent-text` on `--fill-accent`; `--2` uses the button colours, `--3` is `--color-heading` on `--color-surface-strong`. Use it for a speaker in `.ds-panel` and for the author of a quote.\n- `.ds-byline`: an avatar beside `.ds-byline__name` and `.ds-byline__role`, for the author of a quote, a client or an account.\n- `.ds-carousel`: slides of which one shows at a time: hidden radio buttons `.ds-carousel__pick` come first, then `.ds-carousel__slides` holding up to four `.ds-carousel__slide`, then `.ds-carousel__dots` with one `<label class=\"ds-carousel__dot\">` per radio. The checked radio shows its slide and its dot at full strength; the other dots are the text colour at 30% opacity. It turns without script and does not move on its own. Here each slide is a `.ds-carousel__quote` in the heading style at `--text-h2` with a `.ds-byline`, set left in the body of a numbered section, with the dots at the left.\n\n## Never\n\n- `block-gap <= 96px`: the largest space between blocks is the 96px section padding.\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 <= 32px`: a panel's shadow is a 3px blur and a dialog's 32px; controls have none.\n- `text-shadow = none`: text is flat on every fill.\n- `gradient-fills <= 0%`: every background is one solid colour.\n- `border-radius <= 8px`: 4px on controls, 6px on panels, 8px on tiles; badges are pills.\n- `border-width <= 3px`: rules are 1px, 2px marks the current item, and the focus halo is 3px.\n- `animation = none`: no reference has a CSS animation.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. A new part of a page is a `.ds-section` with a label column and a body, never a centred block without a label; a new box is a `.ds-panel`. Controls take `--radius-control`, boxes `--radius-panel`, tags `--radius-pill`, and chips `--radius-page`. Text goes on `--color-fill-1` and on `--fill-inverse` only; the other fills carry an icon on its plate or nothing. New actions are `--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: 1080px;\n  --size-label: 220px;\n  --size-date: 320px;\n  --size-time: 96px;\n  --size-chip: 84px;\n  --size-icon: 44px;\n  --size-dialog: 460px;\n  --space-1: 6px;\n  --space-2: 12px;\n  --space-3: 18px;\n  --space-4: 24px;\n  --space-5: 36px;\n  --space-6: 60px;\n  --space-7: 96px;\n  --size-avatar: 44px;\n  --size-switch: 44px;\n  --size-knob: 16px;\n  --size-menu: 240px;\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/* section: a full-width strip whose column is cut into a narrow label column and the body */\n.ds-section {\n  background: var(--color-canvas);\n  padding: var(--space-7) var(--space-4);\n}\n.ds-section--alt {\n  background: var(--color-surface-alt);\n}\n.ds-section--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-section__inner {\n  max-width: var(--size-page);\n  margin: 0 auto;\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  gap: var(--space-6);\n  align-items: start;\n}\n.ds-section__label {\n  min-width: 0;\n  padding-top: var(--space-3);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-button);\n}\n.ds-section--fill .ds-section__label {\n  border-top-color: currentColor;\n}\n.ds-section__number {\n  display: block;\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-section__title {\n  margin: 0 0 var(--space-2);\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-section__text {\n  margin: 0 0 var(--space-3);\n  font-size: var(--text-ui);\n}\n.ds-section--fill .ds-section__number,\n.ds-section--fill .ds-section__title {\n  color: inherit;\n}\n.ds-section__body {\n  min-width: 0;\n}\n.ds-section__lead {\n  margin: 0 0 var(--space-5);\n  max-width: 56ch;\n  color: var(--color-heading);\n  font-size: var(--text-large);\n  line-height: var(--line-body);\n}\n.ds-section--fill .ds-section__lead {\n  color: inherit;\n}\n.ds-section__call {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-4);\n}\n.ds-section__call .ds-section__lead {\n  margin-bottom: 0;\n}\n.ds-stack {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n}\n.ds-stack--tight {\n  gap: var(--space-4);\n}\n.ds-cols {\n  display: grid;\n  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);\n  gap: var(--space-5);\n  align-items: start;\n}\n\n/* nav: a note strip, the brand in the middle, the links in a centred row between two rules */\n.ds-nav {\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-nav__note {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  gap: var(--space-1) var(--space-4);\n  padding: var(--space-1) var(--space-4);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-size: var(--text-small);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__note-link {\n  color: inherit;\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-nav__inner {\n  display: flex;\n  justify-content: center;\n  padding: var(--space-4) var(--space-4) var(--space-3);\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: var(--space-5);\n  height: var(--space-5);\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: 72%;\n  height: 72%;\n}\n.ds-brand__name {\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\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  flex-wrap: wrap;\n  justify-content: center;\n  gap: 0 var(--space-5);\n  max-width: var(--size-page);\n  margin: 0 auto;\n  padding: 0 var(--space-4);\n  list-style: none;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-nav__link {\n  display: block;\n  margin-top: calc(var(--border-width) * -1);\n  padding: var(--space-2) 0;\n  color: var(--color-bar-text);\n  font-weight: var(--weight-ui);\n  text-decoration: var(--link-decoration-quiet);\n  text-transform: var(--ui-transform);\n  border-top: var(--border-width) 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-top-color: var(--color-link);\n}\n/* the current view marks its navigation item; a talk marks Schedule */\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#home\"] {\n  color: var(--color-link);\n  border-top-color: var(--color-link);\n}\n.ds-page:has(#home:target) .ds-nav__link[href=\"#home\"] {\n  color: var(--color-link);\n  border-top-color: var(--color-link);\n}\n.ds-page:has(#schedule:target) .ds-nav__link[href=\"#schedule\"] {\n  color: var(--color-link);\n  border-top-color: var(--color-link);\n}\n.ds-page:has(#talk:target) .ds-nav__link[href=\"#schedule\"] {\n  color: var(--color-link);\n  border-top-color: var(--color-link);\n}\n.ds-page:has(#tickets:target) .ds-nav__link[href=\"#tickets\"] {\n  color: var(--color-link);\n  border-top-color: var(--color-link);\n}\n\n/* hero: a poster in two flat parts, the dates on the inverted block and the title on the first fill */\n.ds-hero {\n  display: grid;\n  grid-template-columns: minmax(var(--size-date), 1fr) minmax(0, 2fr);\n  color: var(--color-inverse-text);\n}\n.ds-hero__date {\n  display: flex;\n  flex-direction: column;\n  align-items: flex-end;\n  justify-content: center;\n  padding: var(--space-6) var(--space-6) var(--space-6) var(--space-4);\n  background: var(--fill-inverse);\n  text-align: right;\n}\n.ds-hero__days {\n  display: block;\n  font-family: var(--font-heading);\n  font-size: calc(var(--text-display) * 2);\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-hero__month {\n  display: block;\n  margin-top: var(--space-2);\n  padding-top: var(--space-2);\n  border-top: var(--border-width-strong) var(--border-style) currentColor;\n  font-family: var(--font-ui);\n  font-size: var(--text-large);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  text-transform: var(--ui-transform);\n}\n.ds-hero__place {\n  display: block;\n  margin-top: var(--space-1);\n  font-size: var(--text-ui);\n  opacity: 0.8;\n}\n.ds-hero__copy {\n  padding: var(--space-7) var(--space-4) var(--space-7) var(--space-6);\n  background: var(--color-fill-1);\n}\n.ds-hero__kicker {\n  display: inline-block;\n  margin: 0 0 var(--space-3);\n  padding: 0 var(--space-2);\n  background: color-mix(in srgb, var(--color-inverse) 30%, transparent);\n  border-radius: var(--radius-pill);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-hero__title {\n  margin: 0 0 var(--space-3);\n  max-width: 16ch;\n  font-family: var(--font-heading);\n  font-size: var(--text-display);\n  font-weight: var(--weight-display);\n  line-height: var(--line-display);\n  letter-spacing: var(--display-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-hero__lead {\n  margin: 0 0 var(--space-5);\n  max-width: 46ch;\n  font-size: var(--text-large);\n  opacity: 0.85;\n}\n.ds-hero__actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  align-items: center;\n}\n/* the four fills as one flat ribbon under the poster */\n.ds-ribbon {\n  display: flex;\n  height: var(--space-2);\n}\n.ds-ribbon__part {\n  flex: 1 1 0;\n  background: var(--color-fill-1);\n}\n.ds-ribbon__part--2 {\n  background: var(--color-fill-2);\n}\n.ds-ribbon__part--3 {\n  background: var(--color-fill-3);\n}\n.ds-ribbon__part--4 {\n  background: var(--color-fill-4);\n}\n\n/* page header: the head of an inner page, cut into the same two columns as a section */\n.ds-page-header {\n  background: var(--color-surface-alt);\n  padding: var(--space-5) var(--space-4);\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: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr) auto;\n  gap: var(--space-4) var(--space-6);\n  align-items: end;\n}\n.ds-page-header__trail {\n  align-self: start;\n  min-width: 0;\n  padding-top: var(--space-3);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-button);\n}\n.ds-page-header__copy {\n  min-width: 0;\n}\n.ds-page-header__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-page-header__title .ds-badge {\n  margin-left: var(--space-2);\n}\n.ds-page-header__text {\n  margin: 0;\n  font-size: var(--text-large);\n}\n.ds-page-header__actions {\n  display: flex;\n  flex-wrap: wrap;\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\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/* 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/* 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/* list: a programme, each row a time, the session and its room */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  border-top: var(--border-width) var(--border-style) var(--color-border-strong);\n}\n.ds-list__item {\n  display: grid;\n  grid-template-columns: var(--size-time) minmax(0, 1fr) auto;\n  gap: var(--space-1) var(--space-4);\n  align-items: baseline;\n  padding: var(--space-3) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-list__item > .ds-badge {\n  justify-self: start;\n}\n.ds-list__time {\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  font-variant-numeric: tabular-nums;\n}\n.ds-list__body {\n  min-width: 0;\n}\n.ds-list__title {\n  display: block;\n  color: var(--color-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\n  text-decoration: var(--link-decoration-quiet);\n  transition: var(--transition);\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: an outlined box, its title on a rule */\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 var(--space-4);\n  padding: var(--space-3) 0 var(--space-2);\n  color: var(--color-heading-alt);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\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  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-panel__title .ds-badge {\n  float: right;\n}\n.ds-panel__body {\n  padding: var(--space-3) var(--space-4) 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  letter-spacing: var(--display-tracking);\n}\n.ds-plans {\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  gap: var(--space-4);\n}\n.ds-plans--2 {\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n/* stats: figures in a row, each hanging from a strong rule */\n.ds-stat {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: var(--space-4);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-stat__item {\n  min-width: 0;\n  padding-top: var(--space-2);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\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  margin-top: var(--space-1);\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n}\n\n/* grid: two by two, each cell a colour chip beside its text */\n.ds-grid {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: var(--space-5);\n}\n.ds-grid__cell {\n  display: flex;\n  gap: var(--space-4);\n  align-items: flex-start;\n  min-width: 0;\n}\n.ds-grid__tile {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex: 0 0 var(--size-chip);\n  height: var(--size-chip);\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-2);\n  background: color-mix(in srgb, var(--color-inverse) 40%, transparent);\n  border-radius: 50%;\n}\n.ds-grid__copy {\n  min-width: 0;\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-h3);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-grid__text {\n  margin: 0 0 var(--space-1);\n}\n\n/* tabs: blocks standing on a strong rule, the current one filled */\n.ds-tabs {\n  display: flex;\n  gap: var(--space-1);\n  margin: 0 0 var(--space-4);\n  padding: 0;\n  list-style: none;\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-button);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-tabs__tab {\n  display: block;\n  padding: var(--space-2) var(--space-4);\n  background: var(--color-surface-strong);\n  color: var(--color-text);\n  font-weight: var(--weight-ui);\n  text-decoration: var(--link-decoration-quiet);\n  text-transform: var(--ui-transform);\n  white-space: nowrap;\n  transition: var(--transition);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link);\n}\n.ds-tabs__tab.is-current {\n  background: var(--fill-button);\n  color: var(--color-button-text);\n}\n\n/* sidebar: an unboxed link list under a small title */\n.ds-sidebar {\n  font-size: var(--text-ui);\n}\n.ds-sidebar__title {\n  margin: 0 0 var(--space-1);\n  color: var(--color-heading-alt);\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  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\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  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\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/* footer: the inverted block, the brand line beside three link columns */\n.ds-footer {\n  background: var(--fill-inverse);\n  color: var(--color-text-muted);\n  padding: var(--space-6) var(--space-4) var(--space-4);\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: var(--size-label) repeat(3, minmax(0, 1fr));\n  gap: var(--space-4) var(--space-6);\n}\n.ds-footer__name {\n  margin: 0 0 var(--space-1);\n  color: var(--color-inverse-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-h2);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-footer__text {\n  margin: 0;\n}\n.ds-footer__title {\n  margin: 0 0 var(--space-1);\n  color: var(--color-inverse-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  text-transform: var(--ui-transform);\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 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  flex-wrap: wrap;\n  justify-content: space-between;\n  gap: var(--space-2) var(--space-4);\n  margin-top: var(--space-5);\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/* this layout's forms of the shared pieces */\n.ds-prose {\n  max-width: 68ch;\n}\n.ds-prose h1,\n.ds-prose h2 {\n  font-size: var(--text-h2);\n}\n.ds-prose h3 {\n  font-size: var(--text-h3);\n  font-weight: var(--weight-heading);\n}\n.ds-prose__lead {\n  color: var(--color-heading);\n  font-weight: var(--weight-body);\n}\n.ds-form__label {\n  font-family: var(--font-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-table thead th {\n  font-family: var(--font-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-breadcrumb {\n  font-family: var(--font-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-dialog__title,\n.ds-empty__title {\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n\n/* menu: a drop-down under a navigation item, a <details>; a flat list in a 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  margin-top: calc(var(--border-width) * -1);\n  padding: var(--space-2) 0;\n  color: var(--color-bar-text);\n  border-top: var(--border-width) var(--border-style) transparent;\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n  list-style: none;\n  cursor: pointer;\n  transition: var(--transition);\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::-webkit-details-marker {\n  display: none;\n}\n.ds-menu__toggle::after {\n  content: \"\";\n  flex: 0 0 auto;\n  width: calc(var(--space-1) + var(--border-width));\n  height: calc(var(--space-1) + var(--border-width));\n  margin-top: calc(0 - var(--space-1) / 2);\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:focus-visible,\n.ds-menu__toggle.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-menu__list {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 5;\n  min-width: var(--size-menu);\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  text-align: left;\n}\n.ds-menu__item {\n  display: block;\n  padding: var(--space-2) var(--space-3);\n  color: var(--color-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-body);\n  text-decoration: var(--link-decoration-quiet);\n  text-transform: var(--ui-transform);\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: sections that open and close, divided by 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  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\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  color: var(--color-text);\n}\n.ds-accordion__body p {\n  margin: 0;\n}\n\n/* tooltip: a small flat 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: an on/off control over a checkbox; the knob slides to the right and the track takes the button fill */\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);\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\n.ds-switchrow {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: flex-start;\n  gap: var(--space-2) var(--space-4);\n  margin: 0 0 var(--space-4);\n}\n\n/* progress: a thin flat bar on a track; no stripes, no gloss, no movement */\n.ds-progress {\n  font-family: var(--font-ui);\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.ds-progress__bar--warning::-moz-progress-bar {\n  background: var(--color-warning);\n}\n\n/* avatar: a flat disc with initials */\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-bold);\n  line-height: 1;\n  text-decoration: none;\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\n/* byline: an avatar beside a name and a line about the person */\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-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-bold);\n  line-height: var(--line-heading);\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 slide showing at a time; the dots are labels of hidden radio buttons, so it turns without script */\n.ds-carousel {\n  position: relative;\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__dots {\n  display: flex;\n  justify-content: flex-start;\n  margin: var(--space-3) calc(0 - var(--space-2)) 0;\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: var(--radius-pill);\n  opacity: 0.3;\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  opacity: 1;\n}\n.ds-carousel__pick:focus-visible ~ .ds-carousel__dots {\n  outline: var(--focus-ring);\n}\n\n.ds-carousel__quote {\n  max-width: 40ch;\n  margin: 0 0 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: flex-start;\n  margin: 0;\n}\n.ds-carousel__quote {\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-stat + .ds-progress,\n.ds-plans + .ds-accordion {\n  margin-top: var(--space-5);\n}\n\n/* medium windows: the dates of the hero are set smaller so that they stay inside their block */\n@media (max-width: 1040px) {\n  .ds-hero__date {\n    padding: var(--space-5) var(--space-4);\n  }\n  .ds-hero__days {\n    font-size: calc(var(--text-display) * 1.4);\n  }\n}\n\n/* narrow windows: the label column lies above its body, the poster stacks, wide tables scroll inside their own box */\n@media (max-width: 760px) {\n  .ds-section {\n    padding: var(--space-6) var(--space-3);\n  }\n  .ds-section__inner {\n    grid-template-columns: minmax(0, 1fr);\n    gap: var(--space-4);\n  }\n  .ds-cols,\n  .ds-plans,\n  .ds-plans--2,\n  .ds-grid {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .ds-nav__note {\n    padding: var(--space-1) var(--space-3);\n  }\n  .ds-nav__inner {\n    padding: var(--space-3);\n  }\n  .ds-nav__links {\n    gap: 0 var(--space-4);\n    padding: 0 var(--space-3);\n  }\n  .ds-hero {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .ds-hero__date {\n    align-items: flex-start;\n    padding: var(--space-4) var(--space-3);\n    text-align: left;\n  }\n  .ds-hero__days {\n    font-size: var(--text-display);\n  }\n  .ds-hero__copy {\n    padding: var(--space-5) var(--space-3) var(--space-6);\n  }\n  .ds-hero__title {\n    font-size: var(--text-h1);\n  }\n  .ds-page-header {\n    padding: var(--space-4) var(--space-3);\n  }\n  .ds-page-header__inner {\n    grid-template-columns: minmax(0, 1fr);\n    gap: var(--space-3);\n  }\n  .ds-page-header__title {\n    font-size: var(--text-h2);\n  }\n  .ds-stat {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n  .ds-stat__figure {\n    font-size: var(--text-h1);\n  }\n  .ds-list__item {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .ds-tabs {\n    overflow-x: auto;\n  }\n  .ds-tabs__tab {\n    padding: var(--space-2) var(--space-3);\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: repeat(2, minmax(0, 1fr));\n  }\n  .ds-nav__links {\n    position: relative;\n  }\n  .ds-menu {\n    position: static;\n  }\n  .ds-menu__list {\n    right: var(--space-3);\n    left: var(--space-3);\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",
    "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 conference 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__note\">\n    <span>14 and 15 May 2015 · The old customs hall</span>\n    <a class=\"ds-nav__note-link\" href=\"#tickets\">Passes from $180 ›</a>\n  </div>\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  </div>\n  <ul class=\"ds-nav__links\">\n    <li><a class=\"ds-nav__link\" href=\"#home\">The conference</a></li>\n    <li><a class=\"ds-nav__link\" href=\"#schedule\">Schedule</a></li>\n    <li><a class=\"ds-nav__link\" href=\"#tickets\">Tickets</a></li>\n    <li>\n      <details class=\"ds-menu\">\n        <summary class=\"ds-menu__toggle\">More</summary>\n        <ul class=\"ds-menu__list\">\n          <li><a class=\"ds-menu__item\" href=\"#home\">The hall and how to reach it</a></li>\n          <li><a class=\"ds-menu__item\" href=\"#talk\">This year's speakers</a></li>\n          <li><a class=\"ds-menu__item\" href=\"#schedule\">Workshops</a></li>\n          <li><a class=\"ds-menu__item\" href=\"#home\">Earlier years</a></li>\n        </ul>\n      </details>\n    </li>\n  </ul>\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__date\">\n      <span class=\"ds-hero__days\">14+15</span>\n      <span class=\"ds-hero__month\">May 2015</span>\n      <span class=\"ds-hero__place\">The old customs hall, by the river</span>\n    </div>\n    <div class=\"ds-hero__copy\">\n      <p class=\"ds-hero__kicker\">Fourth edition</p>\n      <h1 class=\"ds-hero__title\">Two days on type and interface</h1>\n      <p class=\"ds-hero__lead\">chronoskin is a small conference for people who draw letters and people who build screens. One room, eighteen talks, no parallel tracks.</p>\n      <div class=\"ds-hero__actions\">\n        <a class=\"ds-button ds-button--inverse ds-button--large\" href=\"#tickets\">Get a pass</a>\n        <a class=\"ds-button ds-button--ghost ds-button--large\" href=\"#schedule\">See the schedule</a>\n      </div>\n    </div>\n  </div>\n  <div class=\"ds-ribbon\" aria-hidden=\"true\">\n    <span class=\"ds-ribbon__part\"></span>\n    <span class=\"ds-ribbon__part ds-ribbon__part--2\"></span>\n    <span class=\"ds-ribbon__part ds-ribbon__part--3\"></span>\n    <span class=\"ds-ribbon__part ds-ribbon__part--4\"></span>\n  </div>\n\n  <div class=\"ds-section\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label\">\n        <span class=\"ds-section__number\">01</span>\n        <h2 class=\"ds-section__title\">The idea</h2>\n        <p class=\"ds-section__text\">Small on purpose since 2012.</p>\n      </div>\n      <div class=\"ds-section__body\">\n        <p class=\"ds-section__lead\">Everyone sits in the same hall and hears the same talks, so the conversation at lunch is about the same things. That is the whole format.</p>\n        <ul class=\"ds-stat\" data-component=\"stats\">\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__figure\">18</span><span class=\"ds-stat__label\">Talks</span></li>\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__figure\">2</span><span class=\"ds-stat__label\">Days</span></li>\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__figure\">320</span><span class=\"ds-stat__label\">Seats</span></li>\n          <li class=\"ds-stat__item\"><span class=\"ds-stat__figure\">41</span><span class=\"ds-stat__label\">Passes left</span></li>\n        </ul>\n        <div class=\"ds-progress\">\n          <div class=\"ds-progress__head\"><span>Passes sold</span><span class=\"ds-progress__value\">279 of 320</span></div>\n          <progress class=\"ds-progress__bar\" value=\"279\" max=\"320\">279 of 320</progress>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-section ds-section--alt\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label\">\n        <span class=\"ds-section__number\">02</span>\n        <h2 class=\"ds-section__title\">Four themes</h2>\n        <p class=\"ds-section__text\">Each half day keeps to one subject.</p>\n      </div>\n      <div class=\"ds-section__body\">\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=\"44\" height=\"44\" aria-hidden=\"true\"><path d=\"M10 38L24 8l14 30 M15 28h18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n            </div>\n            <div class=\"ds-grid__copy\">\n              <h3 class=\"ds-grid__title\">Letters</h3>\n              <p class=\"ds-grid__text\">Drawing type for small screens and long reading.</p>\n              <a class=\"ds-link ds-link--more\" href=\"#schedule\">Thursday morning</a>\n            </div>\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=\"44\" height=\"44\" aria-hidden=\"true\"><path d=\"M8 10h32v24H8z M8 18h32 M18 40h12 M24 34v6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n            </div>\n            <div class=\"ds-grid__copy\">\n              <h3 class=\"ds-grid__title\">Screens</h3>\n              <p class=\"ds-grid__text\">Interfaces that hold up when the content changes.</p>\n              <a class=\"ds-link ds-link--more\" href=\"#schedule\">Thursday afternoon</a>\n            </div>\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=\"44\" height=\"44\" aria-hidden=\"true\"><path d=\"M8 8h14v14H8z M26 8h14v14H26z M8 26h14v14H8z M26 26h14v14H26z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n            </div>\n            <div class=\"ds-grid__copy\">\n              <h3 class=\"ds-grid__title\">Systems</h3>\n              <p class=\"ds-grid__text\">Grids, scales and the rules a team can keep.</p>\n              <a class=\"ds-link ds-link--more\" href=\"#schedule\">Friday morning</a>\n            </div>\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=\"44\" height=\"44\" aria-hidden=\"true\"><circle cx=\"24\" cy=\"24\" r=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M24 14v10l7 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n            </div>\n            <div class=\"ds-grid__copy\">\n              <h3 class=\"ds-grid__title\">Practice</h3>\n              <p class=\"ds-grid__text\">How small studios plan, price and finish the work.</p>\n              <a class=\"ds-link ds-link--more\" href=\"#schedule\">Friday afternoon</a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-section\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label\">\n        <span class=\"ds-section__number\">03</span>\n        <h2 class=\"ds-section__title\">Thursday</h2>\n        <p class=\"ds-section__text\">Doors open at 8:30. Coffee is in the side hall all day.</p>\n        <a class=\"ds-button ds-button--secondary ds-button--small\" href=\"#schedule\">Both days</a>\n      </div>\n      <div class=\"ds-section__body\">\n        <ul class=\"ds-list\" data-component=\"list\">\n          <li class=\"ds-list__item\">\n            <span class=\"ds-list__time\">9:30</span>\n            <div class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#talk\">A typeface is a set of decisions</a>\n              <span class=\"ds-list__meta\">Ines Halvorsen · Letters · 40 minutes</span>\n            </div>\n            <span class=\"ds-badge\">Opening talk</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <span class=\"ds-list__time\">10:15</span>\n            <div class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#talk\">Numerals nobody notices</a>\n              <span class=\"ds-list__meta\">Tomas Okafor · Letters · 30 minutes</span>\n            </div>\n            <span class=\"ds-badge ds-badge--quiet\">Main hall</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <span class=\"ds-list__time\">11:15</span>\n            <div class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#talk\">Reading at arm's length</a>\n              <span class=\"ds-list__meta\">Petra Lindqvist · Letters · 30 minutes</span>\n            </div>\n            <span class=\"ds-badge ds-badge--quiet\">Main hall</span>\n          </li>\n          <li class=\"ds-list__item\">\n            <span class=\"ds-list__time\">14:00</span>\n            <div class=\"ds-list__body\">\n              <a class=\"ds-list__title\" href=\"#talk\">The empty state is the first screen</a>\n              <span class=\"ds-list__meta\">Daniel Moreau · Screens · 40 minutes</span>\n            </div>\n            <span class=\"ds-badge ds-badge--alt\">Workshop after</span>\n          </li>\n        </ul>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-section ds-section--alt\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label\">\n        <span class=\"ds-section__number\">04</span>\n        <h2 class=\"ds-section__title\">Last year</h2>\n        <p class=\"ds-section__text\">What people wrote on the way home.</p>\n      </div>\n      <div class=\"ds-section__body\">\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\">One room meant I talked to people I would have walked past in a corridor.</blockquote>\n              <figcaption class=\"ds-byline\">\n                <span class=\"ds-avatar\">TD</span>\n                <span class=\"ds-byline__text\"><span class=\"ds-byline__name\">A type designer</span><span class=\"ds-byline__role\">Came in 2014, coming again</span></span>\n              </figcaption>\n            </figure>\n            <figure class=\"ds-carousel__slide\">\n              <blockquote class=\"ds-carousel__quote\">I filled a notebook on Thursday and changed our form on the Monday.</blockquote>\n              <figcaption class=\"ds-byline\">\n                <span class=\"ds-avatar ds-avatar--2\">ID</span>\n                <span class=\"ds-byline__text\"><span class=\"ds-byline__name\">An interface designer</span><span class=\"ds-byline__role\">Studio of four</span></span>\n              </figcaption>\n            </figure>\n            <figure class=\"ds-carousel__slide\">\n              <blockquote class=\"ds-carousel__quote\">Nobody sold me anything from the stage. Two days of people showing their work.</blockquote>\n              <figcaption class=\"ds-byline\">\n                <span class=\"ds-avatar ds-avatar--3\">ST</span>\n                <span class=\"ds-byline__text\"><span class=\"ds-byline__name\">A student</span><span class=\"ds-byline__role\">On a student pass</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  </div>\n\n  <div class=\"ds-section\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label\">\n        <span class=\"ds-section__number\">05</span>\n        <h2 class=\"ds-section__title\">Passes</h2>\n        <p class=\"ds-section__text\">Lunch on both days is included.</p>\n      </div>\n      <div class=\"ds-section__body\">\n        <div class=\"ds-plans ds-plans--2\">\n          <section class=\"ds-panel\" data-component=\"panel\">\n            <h3 class=\"ds-panel__title\">Two-day pass</h3>\n            <div class=\"ds-panel__body\">\n              <span class=\"ds-panel__figure\">$240</span>\n              <p>Both days, every talk, and the Thursday evening by the river.</p>\n              <a class=\"ds-button\" href=\"#tickets\">Get this pass</a>\n            </div>\n          </section>\n          <section class=\"ds-panel\">\n            <h3 class=\"ds-panel__title\">Student pass <span class=\"ds-badge ds-badge--warning\">12 left</span></h3>\n            <div class=\"ds-panel__body\">\n              <span class=\"ds-panel__figure\">$180</span>\n              <p>The same two days for anyone enrolled in a course this year.</p>\n              <a class=\"ds-button ds-button--secondary\" href=\"#tickets\">Get this pass</a>\n            </div>\n          </section>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-section ds-section--fill\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label\">\n        <span class=\"ds-section__number\">06</span>\n        <h2 class=\"ds-section__title\">Come along</h2>\n      </div>\n      <div class=\"ds-section__body ds-section__call\">\n        <p class=\"ds-section__lead\">Sales close on 1 May or when the last seat is taken, whichever comes first.</p>\n        <a class=\"ds-button ds-button--inverse ds-button--large\" href=\"#tickets\">Get a pass</a>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"schedule\">\n  <header class=\"ds-page-header\" data-component=\"page-header\">\n    <div class=\"ds-page-header__inner\">\n      <div class=\"ds-page-header__trail\">\n        <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Conference</a></li>\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#schedule\">Schedule</a></li>\n          <li class=\"ds-breadcrumb__item ds-breadcrumb__current\">Thursday</li>\n        </ol>\n      </div>\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Schedule</h1>\n        <p class=\"ds-page-header__text\">Eighteen talks in one hall. Times are local and will not move.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button\" href=\"#tickets\">Get a pass</a>\n      </div>\n    </div>\n  </header>\n\n  <div class=\"ds-section\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label ds-stack ds-stack--tight\">\n        <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n          <h2 class=\"ds-sidebar__title\">Themes</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item is-current\"><span class=\"ds-sidebar__count\">18</span>All talks</li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">5</span><a class=\"ds-link\" href=\"#schedule\">Letters</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">4</span><a class=\"ds-link\" href=\"#schedule\">Screens</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">5</span><a class=\"ds-link\" href=\"#schedule\">Systems</a></li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">4</span><a class=\"ds-link\" href=\"#schedule\">Practice</a></li>\n          </ul>\n        </aside>\n        <div class=\"ds-badgerow\" data-component=\"badge\">\n          <span class=\"ds-badge\">Opening talk</span>\n          <span class=\"ds-badge ds-badge--alt\">Workshop</span>\n          <span class=\"ds-badge ds-badge--quiet\">40</span>\n          <span class=\"ds-badge ds-badge--success\">Seats free</span>\n          <span class=\"ds-badge ds-badge--warning\">Few left</span>\n          <span class=\"ds-badge ds-badge--danger\">Full</span>\n        </div>\n      </div>\n      <div class=\"ds-section__body\">\n        <ul class=\"ds-tabs\" data-component=\"tabs\">\n          <li><a class=\"ds-tabs__tab is-current\" href=\"#schedule\">Thursday 14</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#schedule\">Friday 15</a></li>\n          <li><a class=\"ds-tabs__tab\" href=\"#schedule\">Workshops</a></li>\n        </ul>\n        <div class=\"ds-switchrow\">\n          <label class=\"ds-switch\"><input class=\"ds-switch__input\" type=\"checkbox\"><span class=\"ds-switch__track\"></span><span class=\"ds-switch__label\">Only sessions with workshop seats</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\">Show the breaks</span></label>\n        </div>\n        <div class=\"ds-table__wrap\">\n          <table class=\"ds-table\" data-component=\"table\">\n            <caption class=\"ds-table__caption\">Workshop seats are counted separately from the hall. Showing 6 of 9 sessions.</caption>\n            <thead>\n              <tr>\n                <th scope=\"col\">Time</th>\n                <th scope=\"col\">Session</th>\n                <th scope=\"col\">Speaker</th>\n                <th scope=\"col\">Workshop</th>\n                <th scope=\"col\" class=\"ds-table__num\">Seats</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr><td>9:30</td><th scope=\"row\"><a class=\"ds-link\" href=\"#talk\">A typeface is a set of decisions</a></th><td>Ines Halvorsen</td><td><span class=\"ds-badge ds-badge--quiet\">None</span></td><td class=\"ds-table__num\">320</td></tr>\n              <tr><td>10:15</td><th scope=\"row\"><a class=\"ds-link\" href=\"#talk\">Numerals nobody notices</a></th><td>Tomas Okafor</td><td><span class=\"ds-badge ds-badge--success\">Seats free</span></td><td class=\"ds-table__num\">24</td></tr>\n              <tr><td>11:15</td><th scope=\"row\"><a class=\"ds-link\" href=\"#talk\">Reading at arm's length</a></th><td>Petra Lindqvist</td><td><span class=\"ds-badge ds-badge--warning\">Few left</span></td><td class=\"ds-table__num\">3</td></tr>\n              <tr><td>12:00</td><th scope=\"row\">Lunch in the side hall</th><td></td><td><span class=\"ds-badge ds-badge--quiet\">None</span></td><td class=\"ds-table__num\">320</td></tr>\n              <tr><td>14:00</td><th scope=\"row\"><a class=\"ds-link\" href=\"#talk\">The empty state is the first screen</a></th><td>Daniel Moreau</td><td><span class=\"ds-badge ds-badge--danger\">Full</span></td><td class=\"ds-table__num\">0</td></tr>\n              <tr><td>15:00</td><th scope=\"row\"><a class=\"ds-link\" href=\"#talk\">Forms people finish</a></th><td>Amara Whitfield</td><td><span class=\"ds-badge ds-badge--success\">Seats free</span></td><td class=\"ds-table__num\">16</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=\"#schedule\">‹ Earlier</a></li>\n            <li><a class=\"ds-pagination__link is-current\" href=\"#schedule\">1</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#schedule\">2</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#schedule\">Later ›</a></li>\n          </ul>\n          <a class=\"ds-link ds-link--quiet\" href=\"#tickets\">Workshops need a pass</a>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-section ds-section--alt\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label\">\n        <h2 class=\"ds-section__title\">Your picks</h2>\n        <p class=\"ds-section__text\">Talks you mark are kept here and printed on your badge.</p>\n      </div>\n      <div class=\"ds-section__body\">\n        <div class=\"ds-empty\" data-component=\"empty\">\n          <svg class=\"ds-empty__icon\" viewBox=\"0 0 48 48\" width=\"44\" height=\"44\" aria-hidden=\"true\"><path d=\"M14 6h20v36l-10-8-10 8z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/></svg>\n          <h3 class=\"ds-empty__title\">No talks picked yet</h3>\n          <p class=\"ds-empty__text\">Open a talk and add it to your picks to build your own two days.</p>\n          <a class=\"ds-button\" href=\"#talk\">Open the first talk</a>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"talk\">\n  <header class=\"ds-page-header\">\n    <div class=\"ds-page-header__inner\">\n      <div class=\"ds-page-header__trail\">\n        <ol class=\"ds-breadcrumb\">\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Conference</a></li>\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#schedule\">Schedule</a></li>\n          <li class=\"ds-breadcrumb__item ds-breadcrumb__current\">10:15</li>\n        </ol>\n      </div>\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Numerals nobody notices <span class=\"ds-badge ds-badge--success\">Seats free</span></h1>\n        <p class=\"ds-page-header__text\">Tomas Okafor. Thursday 14 May, 10:15, main hall.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#schedule\">Back to the schedule</a>\n      </div>\n    </div>\n  </header>\n\n  <div class=\"ds-section\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label ds-stack ds-stack--tight\">\n        <aside class=\"ds-sidebar\">\n          <h2 class=\"ds-sidebar__title\">Same morning</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">9:30</span><a class=\"ds-link\" href=\"#talk\">A set of decisions</a></li>\n            <li class=\"ds-sidebar__item is-current\"><span class=\"ds-sidebar__count\">10:15</span>Numerals</li>\n            <li class=\"ds-sidebar__item\"><span class=\"ds-sidebar__count\">11:15</span><a class=\"ds-link\" href=\"#talk\">At arm's length</a></li>\n          </ul>\n        </aside>\n        <section class=\"ds-panel\">\n          <h2 class=\"ds-panel__title\">The speaker</h2>\n          <div class=\"ds-panel__body\">\n            <div class=\"ds-byline\">\n              <span class=\"ds-avatar\">TO</span>\n              <span class=\"ds-byline__text\"><span class=\"ds-byline__name\">Tomas Okafor</span><span class=\"ds-byline__role\">Type designer</span></span>\n            </div>\n            <p>He draws type for timetables, receipts and other places where figures matter more than words.</p>\n            <a class=\"ds-link ds-link--more\" href=\"#schedule\">All speakers</a>\n          </div>\n        </section>\n      </div>\n      <div class=\"ds-section__body ds-stack\">\n        <article class=\"ds-prose\" data-component=\"typography\">\n          <h1>What the talk is about</h1>\n          <p class=\"ds-prose__lead\">Most of what people read on a screen is numbers: prices, times, counts. Hardly any typeface is drawn with them first.</p>\n          <p>The talk walks through one family of figures from sketch to release and shows where <strong>lining, old-style and tabular</strong> forms each earn their place in an interface.</p>\n          <h2>What you will take home</h2>\n          <ul>\n            <li>When a column of figures needs tabular forms and when it does not</li>\n            <li>How to check a face for figures before you license it</li>\n            <li>A short list of open families that get it right</li>\n          </ul>\n          <h3>For people who write CSS</h3>\n          <p>One declaration does most of the work: <code>font-variant-numeric: tabular-nums</code>. The second half of the talk is about the cases it misses.</p>\n        </article>\n        <p class=\"ds-linkrow\" data-component=\"links\">\n          <a class=\"ds-link\" href=\"#schedule\">Slides from last year</a>\n          <a class=\"ds-link is-visited\" href=\"#schedule\">The speaker's notes</a>\n          <a class=\"ds-link is-hover\" href=\"#schedule\">The workshop after</a>\n          <a class=\"ds-link is-active\" href=\"#tickets\">Passes</a>\n          <a class=\"ds-link ds-link--quiet\" href=\"#home\">Code of conduct</a>\n        </p>\n        <div class=\"ds-buttonrow\" data-component=\"buttons\">\n          <a class=\"ds-button\" href=\"#talk\">Add to my picks</a>\n          <a class=\"ds-button is-hover\" href=\"#talk\">Book the workshop</a>\n          <a class=\"ds-button ds-button--secondary\" href=\"#talk\">Add to calendar</a>\n          <a class=\"ds-button ds-button--danger\" href=\"#schedule\">Remove from picks</a>\n          <button class=\"ds-button\" type=\"button\" disabled>Recording</button>\n        </div>\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\">Book the workshop too?</h2>\n              <a class=\"ds-dialog__close\" href=\"#talk\" aria-label=\"Close\"></a>\n            </div>\n            <div class=\"ds-dialog__body\">\n              <p>The workshop runs from 16:30 to 18:00 in the side hall and has 24 seats. It is included in your pass.</p>\n            </div>\n            <div class=\"ds-dialog__actions\">\n              <a class=\"ds-button ds-button--secondary\" href=\"#talk\">Only the talk</a>\n              <a class=\"ds-button\" href=\"#schedule\">Book a seat</a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n\n<section class=\"ds-view\" id=\"tickets\">\n  <header class=\"ds-page-header\">\n    <div class=\"ds-page-header__inner\">\n      <div class=\"ds-page-header__trail\">\n        <ol class=\"ds-breadcrumb\">\n          <li class=\"ds-breadcrumb__item\"><a class=\"ds-link ds-link--quiet\" href=\"#home\">Conference</a></li>\n          <li class=\"ds-breadcrumb__item ds-breadcrumb__current\">Tickets</li>\n        </ol>\n      </div>\n      <div class=\"ds-page-header__copy\">\n        <h1 class=\"ds-page-header__title\">Tickets</h1>\n        <p class=\"ds-page-header__text\">One pass covers both days. 41 of 320 are left.</p>\n      </div>\n      <div class=\"ds-page-header__actions\">\n        <a class=\"ds-button ds-button--secondary\" href=\"#schedule\">See the schedule</a>\n      </div>\n    </div>\n  </header>\n\n  <div class=\"ds-section\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label\">\n        <span class=\"ds-section__number\">Step 1</span>\n        <h2 class=\"ds-section__title\">Choose a pass</h2>\n        <p class=\"ds-section__text\">Prices include lunch and tax.</p>\n      </div>\n      <div class=\"ds-section__body\">\n        <div class=\"ds-plans\">\n          <section class=\"ds-panel\">\n            <h3 class=\"ds-panel__title\">Two-day pass</h3>\n            <div class=\"ds-panel__body\">\n              <span class=\"ds-panel__figure\">$240</span>\n              <p>Every talk and the Thursday evening.</p>\n              <a class=\"ds-button\" href=\"#tickets\">Choose</a>\n            </div>\n          </section>\n          <section class=\"ds-panel\">\n            <h3 class=\"ds-panel__title\">Student pass</h3>\n            <div class=\"ds-panel__body\">\n              <span class=\"ds-panel__figure\">$180</span>\n              <p>Bring <span class=\"ds-tooltip\" tabindex=\"0\">proof of enrolment<span class=\"ds-tooltip__tip\" role=\"tooltip\">A student card or a letter from the course, dated this year.</span></span> to the door.</p>\n              <a class=\"ds-button ds-button--secondary\" href=\"#tickets\">Choose</a>\n            </div>\n          </section>\n          <section class=\"ds-panel\">\n            <h3 class=\"ds-panel__title\">Studio of four</h3>\n            <div class=\"ds-panel__body\">\n              <span class=\"ds-panel__figure\">$820</span>\n              <p>Four passes on one invoice, seats together.</p>\n              <a class=\"ds-button ds-button--secondary\" href=\"#tickets\">Choose</a>\n            </div>\n          </section>\n        </div>\n        <div class=\"ds-accordion\">\n          <details class=\"ds-accordion__item\" open>\n            <summary class=\"ds-accordion__head\">Can I get my money back?</summary>\n            <div class=\"ds-accordion__body\"><p>In full until 1 May. After that the pass can still be passed on to someone else.</p></div>\n          </details>\n          <details class=\"ds-accordion__item\">\n            <summary class=\"ds-accordion__head\">Can I pass my pass on?</summary>\n            <div class=\"ds-accordion__body\"><p>Yes, up to the morning of the first day. Send us the new name so that the badge is right.</p></div>\n          </details>\n          <details class=\"ds-accordion__item\">\n            <summary class=\"ds-accordion__head\">Do you write invoices for studios?</summary>\n            <div class=\"ds-accordion__body\"><p>One invoice for all four passes, sent the day you book.</p></div>\n          </details>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ds-section ds-section--alt\">\n    <div class=\"ds-section__inner\">\n      <div class=\"ds-section__label ds-stack ds-stack--tight\">\n        <div>\n          <span class=\"ds-section__number\">Step 2</span>\n          <h2 class=\"ds-section__title\">Your details</h2>\n          <p class=\"ds-section__text\">The name is printed on the badge exactly as you type it.</p>\n        </div>\n        <aside class=\"ds-sidebar\">\n          <h2 class=\"ds-sidebar__title\">Good to know</h2>\n          <ul class=\"ds-sidebar__list\">\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#tickets\">Refunds until 1 May</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#tickets\">Passing a pass on</a></li>\n            <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#home\">Getting to the hall</a></li>\n          </ul>\n        </aside>\n      </div>\n      <div class=\"ds-section__body ds-stack ds-stack--tight\">\n        <div class=\"ds-noticerow\" data-component=\"notice\">\n          <p class=\"ds-notice\"><span class=\"ds-notice__title\">Your pass is held for ten minutes.</span> Finish the form and it is yours.</p>\n          <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__title\">We could not book the pass.</span> Check the highlighted field and try again.</p>\n        </div>\n        <form class=\"ds-form\" data-component=\"form\" action=\"#tickets\">\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          <div class=\"ds-form__row\">\n            <label class=\"ds-form__field\"><span class=\"ds-form__label\">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\">Pass</span>\n              <select class=\"ds-form__select\"><option>Two-day pass, $240</option><option>Student pass, $180</option><option>Studio of four, $820</option></select>\n            </label>\n          </div>\n          <label class=\"ds-form__field\"><span class=\"ds-form__label\">Anything we should know</span><textarea class=\"ds-form__textarea\" rows=\"3\" placeholder=\"Food, access, a seat near the front\"></textarea><span class=\"ds-form__hint\">Optional. Read by the two people who run the hall.</span></label>\n          <label class=\"ds-form__check\"><input class=\"ds-form__checkbox\" type=\"checkbox\" checked> <span>Send me the schedule the week before. <a class=\"ds-link\" href=\"#schedule\">See it now</a></span></label>\n          <div class=\"ds-form__actions\">\n            <button class=\"ds-button\" type=\"submit\">Book the pass</button>\n            <a class=\"ds-button ds-button--secondary\" href=\"#home\">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        <p class=\"ds-footer__name\">chronoskin</p>\n        <p class=\"ds-footer__text\">Two days on type and interface, 14 and 15 May 2015.</p>\n      </div>\n      <div>\n        <h2 class=\"ds-footer__title\">Conference</h2>\n        <ul class=\"ds-footer__list\">\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">The idea</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#schedule\">Schedule</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#tickets\">Tickets</a></li>\n        </ul>\n      </div>\n      <div>\n        <h2 class=\"ds-footer__title\">Visiting</h2>\n        <ul class=\"ds-footer__list\">\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">The hall</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">Places to stay</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#home\">Access</a></li>\n        </ul>\n      </div>\n      <div>\n        <h2 class=\"ds-footer__title\">Earlier years</h2>\n        <ul class=\"ds-footer__list\">\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#schedule\">2014 talks</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#schedule\">2013 talks</a></li>\n          <li class=\"ds-footer__item\"><a class=\"ds-footer__link\" href=\"#schedule\">2012 talks</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\">Code of conduct</a>\n        <a class=\"ds-footer__link\" href=\"#home\">Privacy</a>\n        <a class=\"ds-footer__link\" href=\"#home\">Contact</a>\n      </span>\n    </div>\n  </div>\n</footer>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.flat-design.landing.s07.p07.t06.u11\",\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-776b\",\n  \"short\": \"v1-fl-776b\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #ffffff;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #f4f2f6;\n  --color-surface-strong: #e6e2ea;\n  --color-bar: #ffffff;\n  --color-bar-text: #383860;\n  --color-bar-alt: #303060;\n  --color-bar-alt-text: #ffffff;\n  --color-inverse: #202028;\n  --color-inverse-text: #ffffff;\n  --color-text: #504868;\n  --color-text-muted: #907f90;\n  --color-heading: #303060;\n  --color-heading-alt: #d05840;\n  --color-link: #d05840;\n  --color-link-quiet: #806870;\n  --color-link-visited: #b05048;\n  --color-link-hover: #e86040;\n  --color-link-active: #b05048;\n  --color-border: #dcd6e0;\n  --color-border-strong: #383860;\n  --color-border-muted: #ece8ee;\n  --color-accent: #40a898;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #f8c830;\n  --color-fill-1: #383860;\n  --color-fill-2: #e86040;\n  --color-fill-3: #f0e8d8;\n  --color-fill-4: #605068;\n  --color-button: #e86040;\n  --color-button-text: #ffffff;\n  --color-button-hover-text: #ffffff;\n  --color-button-secondary: #ffffff;\n  --color-button-secondary-text: #383860;\n  --color-input: #ffffff;\n  --color-input-text: #303060;\n  --color-input-border: #b8b0c0;\n  --color-disabled: #e6e2ea;\n  --color-disabled-text: #907f90;\n  --color-danger: #c82840;\n  --color-danger-surface: #fff8f8;\n  --color-success: #40a898;\n  --color-warning: #e8a018;\n  --color-notice: #f0e8d8;\n  --color-notice-text: #504868;\n  --color-focus: #40a898;\n  --color-shadow: rgb(32 32 40 / 0.2);\n  --color-overlay: rgb(48 48 96 / 0.55);\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: 1px;\n  --border-width-strong: 2px;\n  --border-style: solid;\n  --radius-control: 4px;\n  --radius-panel: 6px;\n  --radius-pill: 500px;\n  --radius-page: 8px;\n  --shadow-panel: 0 1px 3px 0 var(--color-shadow);\n  --shadow-control: none;\n  --shadow-control-hover: none;\n  --shadow-control-pressed: none;\n  --shadow-dialog: 0 12px 32px 0 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) 85%, white);\n  --fill-button-secondary: transparent;\n  --fill-input: var(--color-input);\n  --focus-ring: 3px solid color-mix(in srgb, var(--color-focus) 40%, transparent);\n  --transition: color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease;\n  --backdrop-blur: 0px;\n}\n"
  }
}
