{
  "id": "v1-te-8b33-dc",
  "long_id": "v1.table-era-90s.docs.s08.p11.t03.u03.dc",
  "name": "Table-era department site, 1997",
  "era": {
    "slug": "table-era-90s",
    "code": "te",
    "name": "Table-era web",
    "years": [
      1996,
      2000
    ],
    "description": "The first commercial web, 1996 to 2000: narrow fixed pages built from tables, blue underlined links on white or grey, Times and Arial at their default sizes, bevelled form buttons, and flat colour strips where a designer wanted emphasis."
  },
  "archetype": "docs",
  "mode": "mix",
  "viewport": {
    "width": 800,
    "fluid": false
  },
  "density": "compact",
  "summary": "The pages of a university department, a library or a public institution as built between 1996 and 2000: a 700px sheet centred in an 800px window, a serif letterhead over one filled line of links, and a front page that is a table of contents, each row a coloured label cell with a sentence and its links beside it. Text is 13px Arial with 11px small print under bold Palatino titles; links are underlined navy, on a cream sheet with a peach bar, khaki title strips, pale yellow cells and one maroon block. It was how institutions first put their prospectus, handbook and forms on the web, written by hand in an office, until content systems and wide stylesheet layouts replaced it after 2000.",
  "url": "https://chrono.skin/s/v1-te-8b33-dc",
  "preview_url": "https://chrono.skin/s/v1-te-8b33-dc/specimen.html",
  "files": {
    "STYLE.md": "# Table-era department site, 1997\n\n## Summary\n\nThe pages of a university department, a library or a public institution as built between 1996 and 2000: a 700px sheet centred in an 800px window, a serif letterhead over one filled line of links, and a front page that is a table of contents, each row a coloured label cell with a sentence and its links beside it. Text is 13px Arial with 11px small print under bold Palatino titles; links are underlined navy, on a cream sheet with a peach bar, khaki title strips, pale yellow cells and one maroon block. It was how institutions first put their prospectus, handbook and forms on the web, written by hand in an office, until content systems and wide stylesheet layouts replaced it after 2000.\n\n## Layout\n\n- The page is fixed, not fluid, and centred: `--size-page` is 700px. `.ds-page__frame` is the sheet, with `--space-3` (8px) of padding above and `--space-4` (12px) at the sides and foot; nothing is wider than it and nothing stretches with the window.\n- The specimen is one example site, a school of clock and watch making, of four views. `.ds-nav` and `.ds-footer` are written once, outside the views; each view is a `.ds-view` section and one shows at a time.\n- Order from the top: `.ds-nav`, then the view, then the `.ds-footer` under a heavy rule. The `.ds-nav` is two rows: `.ds-nav__top` (the `.ds-brand` at the left; at the right, right-aligned, the department's name and one small line) and `.ds-nav__bar`, one filled line under a heavy rule with the text links at the left, separated by upright bars, and the small search form at the right. There is no rail, no row of tabs or keys and no second strip.\n- One label column, `--size-label` (140px), runs down the left of the home view: the session label of the welcome band and the coloured label cells of the contents ledger stand in it, and the narrow column at the foot starts on it. The home view, `.ds-page__main`, is a stack of full-width blocks with `--space-5` (18px) between them: the `.ds-hero` welcome band, the `.ds-grid` contents ledger of five rows, the `.ds-stat` line of figures between two rules, and `.ds-page__columns`, a 176px `.ds-page__side` of small `.ds-panel` boxes at the left and the dated `.ds-list` under a `.ds-heading` at the right.\n- Inner pages (a course list, a handbook section, a form) keep the `.ds-nav` and the `.ds-footer` and drop the welcome band, the ledger and the figures. `.ds-page__inner` opens with `.ds-page__head` across the full sheet, which stacks with `--space-2` between them the small `.ds-breadcrumb`, the `.ds-page-header` (serif title and one italic line at the left, one button at the right, closed by its own heavy rule in the bar colour) and, when the page has parts, the `.ds-tabs` line. Below it `.ds-page__split` sets the page itself, `.ds-page__block`, at the left and a `--size-side` (180px) `.ds-sidebar` at the right after a `--space-5` gutter: the links of that section, then one or two short notes. Blocks in `.ds-page__block` are `--space-5` apart: the `.ds-table` with its key and `.ds-pagination`, or `.ds-prose`, or `.ds-notices`, the `.ds-form` and what it opens.\n- Views: `home` is the front page (welcome band, contents ledger, figures, term dates, news). `courses` is the course list: the kinds of course as a line of choices, the table of courses with its status key, the page links and the empty state of a list not yet announced. `handbook` is one section of the student handbook as running text, including the line that shows the link states, with the contents in the sidebar and links to the sections before and after. `apply` is the application form with its notices and the boxed question that withdrawing an application opens. The link of the view that is showing is cut out of the bar in the sheet's colour, bold and not underlined; the home link is marked when the address names no view.\n- Blocks are separated by hairlines, heavy rules and outlines, never by cards with shadows or wide gutters. Everything is left-aligned except the label cells and the letterhead lines, which are right-aligned, and the session label, which is centred.\n- Spacing scale: `--space-1` 2px is the padding of strips and bars, the gap between ledger rows and the padding of controls; `--space-2` 5px is cell padding above and below, the gap between the lines of the inner-page head and between a title and its text; `--space-3` 8px is the side padding of cells and strips, box padding, paragraph spacing and the gap between buttons; `--space-4` 12px is the side margin of the sheet, the gap between boxes in a column and between choices in the `.ds-tabs` line; `--space-5` 18px is the gap between neighbouring blocks and between columns; `--space-6` 36px is the list indent and the width of a short input.\n- Fixed sizes: `--size-date` 64px date column of the news list, `--size-search` 110px search field, `--size-field` 230px text input, `--size-area` 320px textarea, `--size-check` 13px checkbox, `--size-dialog` 330px boxed question.\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- Family: a warm orange band, navy and sky blues on white, with dark green for positive status and slate for visited links.\n- `--color-page`, `--color-canvas`, `--color-surface` are white `#ffffff`; `--color-surface-alt` `#efefef` is the service strip under the top bar, the sidebar column, the strip behind the four boxes, form label cells and the dialog's button row; `--color-surface-strong` `#cccccc` carries no text.\n- `--color-bar` `#ffcc66` (orange, black text) is every title band of the main column and the 2px rule under a page header. `--color-bar-alt` `#a0d0ff` (sky blue, black text) is every sidebar title strip, the table head and the outline of notices and the figure line.\n- `--color-inverse` `#003399` (navy, white text) is the top bar, panel titles and the dialog title bar; links on it are white and underlined. The same navy is `--color-border-strong` (panel, box and dialog outlines), `--color-heading-alt` (h3, positive figures), `--color-link-quiet` and `--color-focus`.\n- Links are dark blue `--color-link` `#000099`, visited `#666699`, active `#cc0000`; hover equals the link colour.\n- `--color-accent` and `--color-accent-alt` `#cc0000` are the solid badge, the \"New!\" word and negative figures.\n- `--color-fill-1` to `--color-fill-4` are `#d8e8ff`, `#efefef`, `#ffcc66`, `#a0d0ff` and colour the four boxes of the strip; `--color-fill-1` is also the directory block, the figure line, the summary row of a table and the empty state. They carry black text and blue links.\n- `--color-warning` `#ffcc66` is a fill only and carries black text; `--color-success` `#006600` and `--color-danger` `#cc0000` carry white. Notices are pale blue `#d8e8ff`; the error notice is red text on white.\n- Borders: `--color-border` `#808080`, `--color-border-muted` `#cccccc` for the rules between table rows, the footer rule and bevels, `--color-input-border` `#cccccc` for input bevels.\n- One sans-serif throughout: `--font-body`, `--font-heading` and `--font-ui` are Arial, Helvetica. `--font-mono` is Courier New.\n- `--text-base` and `--text-ui` 12px, the size the first stylesheets of 1999 gave a sans-serif page; `--text-small` 10px for the service strip, tool links, sidebar titles, sub-categories, table head, captions, meta and legal text.\n- `--text-h3` 12px bold, `--text-h2` and `--text-large` 14px (the hero title, figures), `--text-h1` 18px for a page title, `--text-display` 22px bold (`--weight-display` 700) for the wordmark only. `--weight-ui` is 700: button labels are bold.\n- Line height `normal`; no transform, no tracking; capitals in sidebar titles are typed. All three link decorations are `underline`.\n- `--border-width` and `--border-width-strong` are both 2px, `--border-style` `solid`: every rule, row line and outline has the weight of a 2px coloured rule. There are no hairlines.\n- Boxes stand on hard black edges: `--shadow-panel` is a 1px outline in `--color-border-strong` with a 4px offset edge in `--color-shadow` behind it, neither blurred, and it frames the sheet as well as the panels; `--shadow-dialog` is a 4px offset, `--shadow-control` and `--shadow-control-hover` 1px; `--shadow-control-pressed` and `--shadow-text` are `none`. Bars are pinstriped: `--fill-bar`, `--fill-bar-alt` and `--fill-inverse` repeat two rows of the palette colour and one row of a much lighter mix of it. Every other fill is the flat palette colour (`--fill-panel` is `--color-surface`). Radius 0; `--focus-ring` is `2px solid` in `--color-focus`; `--transition` is `none`.\n- Not expressible by a token, written literally in `components.css`: the bevel of buttons and selects is `border-style: outset` and of inputs, checkboxes and pressed buttons `inset`, drawn in `--color-border-muted` and `--color-input-border`.\n\n- Family: the 1999 bookshop front, a khaki ground with a white sheet on it, pale yellow boxes, dark green and maroon, with the purple of the 1998 university page for visited links. It is the only set of this era whose page is not the colour of its content: `--color-page` is khaki `#cccc99` and `--color-canvas` white `#ffffff`, so the centred page stands in the window as a white sheet with khaki at both sides.\n- `--color-surface` is white; `--color-surface-alt` `#ffffcc` (pale yellow) is alternate rows, quiet strips and the empty state; `--color-surface-strong` is the khaki.\n- `--color-bar` `#cccc99` (khaki, black text, blue links) is the search band, the table head, panel titles and the header and footer rules. `--color-bar-alt` `#ffffcc` (pale yellow, black text) is every other title strip and the notice border.\n- `--color-inverse` `#003300` (dark green, white text) is the dialog title bar or a top bar. The same green is `--color-heading-alt` (the brand name, h3, positive figures), `--color-accent` (the solid badge, white text), `--color-border-strong`, `--color-success` and `--color-focus`.\n- Headings are maroon: `--color-heading` `#990000`. Text is black; `--color-text-muted` `#686868`.\n- Links are `--color-link` `#003399`, always underlined; visited `#680060`; active `#aa0000`; hover equals the link colour.\n- `--color-accent-alt` `#aa0000` is the \"New!\" word, prices and negative figures; `--color-danger` is the same red, as text on white and as a fill under white text.\n- `--color-fill-1` to `--color-fill-4` are `#ffffcc`, `#cccc99`, `#cc9900` (the gold of the shop's section labels), `#ffffff`. They carry black text and blue links.\n- `--color-warning` `#cc9900` is a fill only and carries black text. Notices sit on pale yellow; the error notice is red on white.\n- Borders: `--color-border` `#989898`, `--color-border-muted` `#c0c0c0` for row rules and bevels, `--color-input-border` `#c0c0c0`. Buttons are the grey of the operating system, `#efefef` and `#c0c0c0`.\n\nSpacing is compact: every `--space-*` token of the layout was multiplied by 0.8. Where the Layout section names a spacing in pixels, the tokens are right.\n\n## Components\n\n- `.ds-page`: on `<body>`; the squared ground, body type. `.ds-page__frame` is the 700px sheet in `--color-canvas`. `.ds-page__main` is the home stack; `.ds-page__columns` its two columns at the foot and `.ds-page__side` the narrow left one. On inner pages `.ds-page__inner` holds `.ds-page__head` (path, page header, choices) and `.ds-page__split`, which sets `.ds-page__block` beside the sidebar.\n- `.ds-nav`: header. `.ds-nav__top` holds the `.ds-brand` and the right-aligned `.ds-nav__tagline`, whose first line is `.ds-nav__dept`; `.ds-nav__bar` is the filled line with `.ds-nav__links` (`.ds-nav__item` / `.ds-nav__link`, bar separated) and the `.ds-nav__search` form with its `.ds-nav__field`. The link of the view that is showing is cut out of the bar (`components.css` has one selector per view for this, and `is-current` does the same by hand).\n- `.ds-brand`: the site's mark and name, at the left of `.ds-nav__top`. `.ds-brand__mark` is a square tile dressed like the button (`--fill-button` over `--color-button`, `--color-button-text` for the drawing, the `outset` bevel in `--color-border-muted`, `--radius-control`, `--shadow-control`), so every palette and surface reskins it; it holds the mark as inline SVG painted with `currentColor`, drawn with flat line caps. `.ds-brand__name` is the name in the heading family at `--text-display` in `--color-heading`. The name `chronoskin` and its mark are placeholders for the installing project's own name and logo.\n- `.ds-hero`: the welcome band, the era's page introduction: an outlined box whose left cell, `.ds-hero__label` on `--fill-inverse`, names the session (`.ds-hero__year` is its large line) and whose `.ds-hero__body` holds `.ds-hero__title` (22px serif), `.ds-hero__lead` (15px) and `.ds-hero__action`, a large button, a secondary one and a `.ds-hero__hint`. Never a tall banner or a picture.\n- `.ds-page-header`: the head of an inner page, used instead of `.ds-hero`. `.ds-page-header__text` holds `.ds-page-header__title` (22px serif) and `.ds-page-header__lead` (one italic line); `.ds-page-header__action` holds one button, bottom-aligned at the right. A heavy rule in the bar colour closes it.\n- `.ds-prose`: running text on handbook pages; styles `h1`, `h2`, `h3`, `p`, `ul`, `ol`, `strong`, `code`; `.ds-prose__lead` for a 15px lead line.\n- `.ds-link`: every link. States `is-visited`, `is-hover`, `is-active`, `is-focus`. `.ds-link--quiet` for notes, `.ds-link--strong` for bold links. `.ds-links` wraps a line of links.\n- `.ds-button`: grey bevelled button with an 11px label, on a `<button>` or, when it leads to another page, on a link. `.ds-button--secondary` is khaki for the lesser action, `.ds-button--danger` is the destructive action (withdraw, delete): the same bevel on `--color-surface` with a bold label in `--color-danger`, never a red button. `.ds-button--large` uses 15px. States `is-hover`, `is-pressed` (bevel inverts), `is-focus`, `is-disabled`. `.ds-buttons` lays out a row.\n- `.ds-form`: two-column form: bold left-aligned `.ds-form__label` in the label column and `.ds-form__field`. Controls: `.ds-form__input` (`--short` for 36px fields), `.ds-form__select`, `.ds-form__textarea` (fixed-width face), `.ds-form__check`. `.ds-form__hint` for small help, `.ds-form__error` for a bold message in the danger colour under the field (the control itself does not change), `.ds-form__actions` for the button row.\n- `.ds-table`: ruled rows with no upright lines. `.ds-table__head` (`--fill-bar`, 11px bold, `--num` right-aligned), `.ds-table__cell` with `--num` and `--code` (fixed-width face), `.ds-table__row--alt` for rows on `--color-surface-alt`, `.ds-table__caption` for the 11px line beneath.\n- `.ds-stat`: summary figures as one line between two hairlines. `.ds-stat` is the row; each `.ds-stat__item` holds a `.ds-stat__value` (22px serif in `--color-heading-alt`) over a `.ds-stat__label` (11px), with a faint rule between items. Three to five items; never coloured cells or separate cards.\n- `.ds-list`: dated entries, each `.ds-list__item` a `.ds-list__meta` date in its own 64px column and beside it a linked title over a `.ds-list__text` line, closed by a hairline; `.ds-list__more` is the small right-aligned link under the list.\n- `.ds-panel`: an outlined box: `.ds-panel__title` strip on `--fill-bar-alt`, then `.ds-panel__body`; `.ds-panel__row` is a ruled line with a label at the left and a value at the right, `.ds-panel__note` an 11px line.\n- `.ds-grid`: the contents ledger, the centrepiece of the front page: a stack of outlined rows `.ds-grid__cell` (and `--2`, `--3`, `--4` for the four fills), each a right-aligned serif `.ds-grid__title` in the coloured label cell and a `.ds-grid__text` sentence with its `.ds-grid__subs` line of small links.\n- `.ds-tabs`: the era's tabs, a line of text links over a hairline: `.ds-tabs__item` / `.ds-tabs__tab`; the current one, `is-current`, is bold on a small outlined `--color-fill-1` block.\n- `.ds-badge`: small solid maroon label. `.ds-badge--text` is a bold coloured word beside a link; `.ds-badge--count` is a grey count. Status labels are the same solid block with the word typed in capitals: `.ds-badge--success` (places open), `.ds-badge--warning` (few left), `.ds-badge--danger` (full). `.ds-badges` is the key line under a table.\n- `.ds-sidebar`: the outlined column on `--color-surface-alt` at the right of an inner page: sections of `.ds-sidebar__title` (strip on `--fill-bar-alt`) over `.ds-sidebar__list` / `.ds-sidebar__item` (ruled links; `is-current` bold) or `.ds-sidebar__text` lines.\n- `.ds-notice`: box on `--color-notice` bordered in the `--color-bar-alt` colour; `.ds-notice__label` bold lead words, `.ds-notice--error` in the danger colour. `.ds-notices` stacks several.\n- `.ds-pagination`: one line: `.ds-pagination__label` (grey, \"1 to 6 of 24\") at the left, then previous, numbered `.ds-pagination__link` and next at the right; current `is-current`, `is-disabled`.\n- `.ds-breadcrumb`: 11px path: `.ds-breadcrumb__label` (\"You are here:\"), then `.ds-breadcrumb__item` separated by \">\"; the last one `is-current`.\n- `.ds-dialog`: a 330px boxed question in the page flow: border in `--color-border-strong`, serif `.ds-dialog__title` on `--fill-inverse`, `.ds-dialog__body` and right-aligned `.ds-dialog__actions`. No backdrop.\n- `.ds-empty`: block on `--color-surface-alt` between two hairlines with `.ds-empty__title`, `.ds-empty__text` and a button, left-aligned.\n- `.ds-footer`: under a heavy rule, `.ds-footer__address` at the left, `.ds-footer__links` (bar-separated `.ds-footer__item`) at the right, and the grey `.ds-footer__legal` line across.\n- `.ds-view`: one screen of the example site; only the one named in the address shows, and `.ds-view--home` shows when none is named. It has no box of its own.\n- `.ds-heading`: serif section title over a hairline in `--color-border-strong`.\n\n## Never\n\n- `row-gap <= 8px`: ledger rows, table rows and list entries sit close.\n- `block-gap <= 18px`: neighbouring blocks are at most 18px apart.\n- `content-width <= 700px`: the page is a fixed 700px sheet.\n- `font-size >= 10px`: small print is 10px, nothing smaller.\n- `font-size <= 22px`: the wordmark is the largest text; headings stop at 18px.\n- `font-families <= 2`: Arial and Courier.\n- `font-weight >= 400`: only regular, bold and black weights were measured.\n- `underlined-links >= 95%`: every reference underlines 100% of its link text.\n- `letter-spacing = 0`: no reference tracks its text.\n- `uppercase-text <= 0%`: no reference uses text-transform; capitals are typed.\n- `border-radius <= 0px`: no reference has a rounded corner.\n- `box-shadow-blur <= 0px`: shadows are hard offset edges; nothing is blurred.\n- `text-shadow = none`: no reference has a text shadow.\n- `gradient-fills <= 8%`: only the pinstriped bars and title strips carry a pattern; every other fill is flat.\n- `border-width <= 2px`: the widest border measured in any reference is the 2px bevel of a form control.\n- `transition = none`: nothing in the references changes on hover.\n- `animation = none`: no reference has a CSS animation.\n- `border-width >= 2px`: this surface has no 1px lines; every border is 2px.\n\n## Extending\n\nDerive a new component from the nearest one in the specimen and use tokens only. A new entry on the front page is one more `.ds-grid__cell` row of the ledger; a new set of links for a section is a `.ds-sidebar` section; a new box is a `.ds-panel` with a khaki title strip; anything tabular is a `.ds-table` of ruled rows under a `--fill-bar` head; a new page starts with path, `.ds-page-header` and its heavy rule. Keep text at 13px Arial with 11px small print and bold serif titles, keep links underlined, keep labels in the 140px column at the left and a section's links in the 180px column at the right, and never add radius, blur, hover effects, a navigation rail, pictures or more whitespace than `--space-5`.\n",
    "components.css": "/* Layout tokens (structure part). A department's pages of 1997: a 700px\n   sheet centred in an 800px window, a 140px label column that the welcome\n   band, the contents ledger and the forms all share, hairlines 5px above and\n   below a row, 18px between blocks and a 180px column for a section's links. */\n:root {\n  --size-page: 700px;\n  --size-side: 180px;\n  --size-label: 140px;\n  --size-date: 64px;\n  --size-search: 110px;\n  --size-field: 230px;\n  --size-area: 320px;\n  --size-check: 13px;\n  --size-dialog: 330px;\n  --space-1: 2px;\n  --space-2: 4px;\n  --space-3: 6px;\n  --space-4: 10px;\n  --space-5: 14px;\n  --space-6: 29px;\n}\n\n/* ---------- shell ---------- */\n.ds-page {\n  margin: 0;\n  padding: var(--space-3) 0 var(--space-5);\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__frame {\n  box-sizing: border-box;\n  width: var(--size-page);\n  margin: 0 auto;\n  padding: var(--space-3) var(--space-4) var(--space-4);\n  background: var(--color-canvas);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-panel);\n}\n/* Home: full-width blocks that share one label column at the left. */\n.ds-page__main {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  padding: var(--space-4) 0 var(--space-5);\n}\n/* The foot of the home page: a narrow box at the left, the dated list at the right. */\n.ds-page__columns {\n  display: grid;\n  grid-template-columns: calc(var(--size-label) + var(--space-6)) minmax(0, 1fr);\n  column-gap: var(--space-5);\n  align-items: start;\n}\n.ds-page__side {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  min-width: 0;\n}\n/* Inner page: the head across the sheet, then the page beside its section's links. */\n.ds-page__inner {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-4);\n  padding: var(--space-3) 0 var(--space-5);\n}\n.ds-page__head {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-2);\n}\n.ds-page__split {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) var(--size-side);\n  column-gap: var(--space-5);\n  align-items: start;\n}\n.ds-page__block {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-5);\n  min-width: 0;\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 heading: serif title on a rule ---------- */\n.ds-heading {\n  margin: 0 0 var(--space-2);\n  padding: 0 0 var(--space-1);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-strong);\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\n/* ---------- nav: letterhead, then one filled line of links ---------- */\n.ds-nav {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-2);\n}\n.ds-nav__top {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-4);\n}\n/* brand: the mark on a tile dressed like the button, then the name */\n.ds-brand {\n  display: flex;\n  align-items: center;\n  gap: var(--space-3);\n  color: var(--color-heading);\n  text-decoration: none;\n}\n.ds-brand__mark {\n  display: flex;\n  flex: none;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  width: calc(var(--text-display) + var(--space-3));\n  height: calc(var(--text-display) + var(--space-3));\n  background: var(--color-button);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n}\n.ds-brand__mark svg {\n  display: block;\n  width: 100%;\n  height: 100%;\n}\n.ds-brand__name {\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-nav__tagline {\n  margin: 0;\n  text-align: right;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-nav__dept {\n  display: block;\n  color: var(--color-heading-alt);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n}\n.ds-nav__bar {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  gap: var(--space-1) var(--space-4);\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  border-top: var(--border-width-strong) var(--border-style) var(--color-border-strong);\n  text-shadow: var(--shadow-text);\n}\n.ds-nav__links {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-base);\n  font-weight: var(--weight-ui);\n  text-transform: var(--ui-transform);\n}\n.ds-nav__item + .ds-nav__item::before {\n  content: \"|\";\n  padding: 0 var(--space-2);\n}\n.ds-nav__link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-nav__link:visited,\n.ds-nav__link.is-visited {\n  color: var(--color-link-visited);\n}\n.ds-nav__link:hover,\n.ds-nav__link.is-hover {\n  color: var(--color-link-hover);\n}\n/* The current page: its link is cut out of the bar in the sheet's colour.\n   One selector per view, and the home link when the address names no view. */\n.ds-nav__link.is-current,\n.ds-page:not(:has(.ds-view:target)) .ds-nav__link[href=\"#home\"],\n.ds-page:has(#home:target) .ds-nav__link[href=\"#home\"],\n.ds-page:has(#courses:target) .ds-nav__link[href=\"#courses\"],\n.ds-page:has(#handbook:target) .ds-nav__link[href=\"#handbook\"],\n.ds-page:has(#apply:target) .ds-nav__link[href=\"#apply\"] {\n  padding: 0 var(--space-2);\n  background: var(--color-canvas);\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-nav__search {\n  display: flex;\n  align-items: center;\n  gap: var(--space-1);\n  margin: 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-nav__search .ds-nav__field {\n  width: var(--size-search);\n}\n\n/* ---------- hero: the welcome band, a session label in the label column ---------- */\n.ds-hero {\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-page);\n  box-shadow: var(--shadow-dialog);\n}\n.ds-hero__label {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  margin: 0;\n  padding: var(--space-3);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  text-align: center;\n  text-shadow: var(--shadow-text);\n}\n.ds-hero__year {\n  display: block;\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}\n.ds-hero__body {\n  min-width: 0;\n  padding: var(--space-3) var(--space-4);\n}\n.ds-hero__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-hero__lead {\n  margin: var(--space-2) 0 var(--space-3);\n  font-size: var(--text-large);\n}\n.ds-hero__action {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-hero__hint {\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- page header: serif title and one line, closed by a heavy rule ---------- */\n.ds-page-header {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: var(--space-4);\n  padding: 0 0 var(--space-2);\n  border-bottom: var(--border-width-strong) var(--border-style) var(--color-bar);\n}\n.ds-page-header__text {\n  flex: 1;\n  min-width: 0;\n}\n.ds-page-header__title {\n  margin: 0;\n  color: var(--color-heading);\n  font-family: var(--font-heading);\n  font-size: var(--text-h1);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  letter-spacing: var(--heading-tracking);\n  text-transform: var(--heading-transform);\n}\n.ds-page-header__lead {\n  margin: var(--space-1) 0 0;\n  font-size: var(--text-base);\n  font-style: italic;\n}\n.ds-page-header__action {\n  flex: none;\n}\n\n/* ---------- grid: the contents ledger, a coloured label cell and a line of text ---------- */\n.ds-grid {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-1);\n}\n.ds-grid__cell {\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-page);\n}\n.ds-grid__title {\n  display: flex;\n  align-items: center;\n  justify-content: flex-end;\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  background: var(--color-fill-1);\n  color: var(--color-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-align: right;\n}\n.ds-grid__cell--2 .ds-grid__title {\n  background: var(--color-fill-2);\n}\n.ds-grid__cell--3 .ds-grid__title {\n  background: var(--color-fill-3);\n}\n.ds-grid__cell--4 .ds-grid__title {\n  background: var(--color-fill-4);\n}\n.ds-grid__text {\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  font-size: var(--text-base);\n}\n.ds-grid__subs {\n  display: block;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- stats: figures between two rules, number over label ---------- */\n.ds-stat {\n  display: flex;\n  margin: 0;\n  padding: var(--space-2) 0;\n  list-style: none;\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-stat__item {\n  flex: 1;\n  padding: 0 var(--space-3);\n}\n.ds-stat__item + .ds-stat__item {\n  border-left: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-stat__value {\n  display: block;\n  color: var(--color-heading-alt);\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}\n.ds-stat__label {\n  display: block;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- list: dated entries, the date in a column of its own ---------- */\n.ds-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-size: var(--text-base);\n}\n.ds-list__item {\n  display: grid;\n  grid-template-columns: var(--size-date) minmax(0, 1fr);\n  column-gap: var(--space-3);\n  padding: var(--space-2) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n}\n.ds-list__meta {\n  color: var(--color-text-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-list__text {\n  display: block;\n}\n.ds-list__more {\n  margin: var(--space-2) 0 0;\n  text-align: right;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- panel: outlined box under a title strip ---------- */\n.ds-panel {\n  background: var(--fill-panel);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-panel);\n}\n.ds-panel__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-shadow: var(--shadow-text);\n}\n.ds-panel__body {\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  font-size: var(--text-base);\n}\n.ds-panel__row {\n  display: flex;\n  justify-content: space-between;\n  gap: var(--space-3);\n  padding: var(--space-1) 0;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border-muted);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-panel__note {\n  margin: var(--space-2) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- table: ruled rows, no upright lines ---------- */\n.ds-table {\n  width: 100%;\n  border-collapse: collapse;\n  background: var(--fill-panel);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n}\n.ds-table__head {\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar);\n  color: var(--color-bar-text);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  font-weight: var(--weight-bold);\n  text-align: left;\n  text-shadow: var(--shadow-text);\n}\n.ds-table__head--num {\n  text-align: right;\n}\n.ds-table__cell {\n  padding: var(--space-2) var(--space-3);\n  background: var(--color-surface);\n  border-top: var(--border-width) var(--border-style) var(--color-border-muted);\n  text-align: left;\n  vertical-align: top;\n}\n.ds-table__cell--num {\n  text-align: right;\n}\n.ds-table__cell--code {\n  font-family: var(--font-mono);\n  white-space: nowrap;\n}\n.ds-table__row--alt .ds-table__cell {\n  background: var(--color-surface-alt);\n}\n.ds-table__caption {\n  caption-side: bottom;\n  padding: var(--space-2) 0 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n  text-align: left;\n}\n\n/* ---------- tabs: a line of choices between two rules ---------- */\n.ds-tabs {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: baseline;\n  column-gap: var(--space-4);\n  margin: 0;\n  padding: var(--space-1) 0;\n  list-style: none;\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-family: var(--font-ui);\n  font-size: var(--text-base);\n  text-transform: var(--ui-transform);\n}\n.ds-tabs__item {\n  padding: 0;\n}\n.ds-tabs__tab {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-tabs__tab:hover,\n.ds-tabs__tab.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-tabs__tab.is-current {\n  padding: 0 var(--space-2);\n  background: var(--color-fill-1);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n\n/* ---------- sidebar: a section's links in an outlined column at the right ---------- */\n.ds-sidebar {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-3);\n  padding: 0 0 var(--space-2);\n  background: var(--color-surface-alt);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border);\n}\n.ds-sidebar__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-bar-alt);\n  color: var(--color-bar-alt-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-shadow: var(--shadow-text);\n}\n.ds-sidebar__list {\n  margin: 0;\n  padding: var(--space-1) var(--space-3) 0;\n  list-style: none;\n  font-size: var(--text-base);\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  font-weight: var(--weight-bold);\n}\n.ds-sidebar__text {\n  margin: 0;\n  padding: var(--space-2) var(--space-3) 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n\n/* ---------- notice ---------- */\n.ds-notices {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-2);\n}\n.ds-notice {\n  margin: 0;\n  padding: var(--space-2) var(--space-3);\n  background: var(--color-notice);\n  color: var(--color-notice-text);\n  border: var(--border-width) var(--border-style) var(--color-bar-alt);\n  border-radius: var(--radius-panel);\n  font-size: var(--text-base);\n}\n.ds-notice--error {\n  background: var(--color-danger-surface);\n  color: var(--color-danger);\n  border-color: var(--color-danger);\n}\n.ds-notice__label {\n  font-weight: var(--weight-bold);\n}\n\n/* ---------- pagination: \"page 1 of 3\" at the left, the pages at the right ---------- */\n.ds-pagination {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: baseline;\n  gap: var(--space-3);\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-base);\n}\n.ds-pagination__label {\n  flex: 1;\n  color: var(--color-text-muted);\n  font-size: var(--text-small);\n}\n.ds-pagination__link {\n  color: var(--color-link);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-pagination__link:hover,\n.ds-pagination__link.is-hover {\n  color: var(--color-link-hover);\n}\n.ds-pagination__link.is-current {\n  color: var(--color-text);\n  font-weight: var(--weight-bold);\n  text-decoration: none;\n}\n.ds-pagination__link.is-disabled {\n  color: var(--color-disabled-text);\n  text-decoration: none;\n}\n\n/* ---------- breadcrumb ---------- */\n.ds-breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-breadcrumb__label {\n  padding: 0 var(--space-2) 0 0;\n  color: var(--color-text-muted);\n}\n.ds-breadcrumb__item + .ds-breadcrumb__item::before {\n  content: \">\";\n  padding: 0 var(--space-2);\n  color: var(--color-text-muted);\n}\n.ds-breadcrumb__item.is-current {\n  color: var(--color-text);\n}\n\n/* ---------- dialog: a boxed question in the page flow ---------- */\n.ds-dialog {\n  position: static;\n  box-sizing: border-box;\n  width: var(--size-dialog);\n  margin: 0;\n  padding: 0;\n  background: var(--fill-panel);\n  color: var(--color-text);\n  border: var(--border-width) var(--border-style) var(--color-border-strong);\n  border-radius: var(--radius-panel);\n  box-shadow: var(--shadow-dialog);\n  font-size: var(--text-base);\n}\n.ds-dialog__title {\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-inverse);\n  color: var(--color-inverse-text);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n  line-height: var(--line-heading);\n  text-shadow: var(--shadow-text);\n}\n.ds-dialog__body {\n  margin: 0;\n  padding: var(--space-3);\n}\n.ds-dialog__actions {\n  display: flex;\n  justify-content: flex-end;\n  gap: var(--space-3);\n  padding: 0 var(--space-3) var(--space-3);\n}\n\n/* ---------- empty state ---------- */\n.ds-empty {\n  padding: var(--space-4) var(--space-3);\n  background: var(--color-surface-alt);\n  color: var(--color-text);\n  border-top: var(--border-width) var(--border-style) var(--color-border);\n  border-bottom: var(--border-width) var(--border-style) var(--color-border);\n  font-size: var(--text-base);\n}\n.ds-empty__title {\n  margin: 0 0 var(--space-1);\n  font-family: var(--font-heading);\n  font-size: var(--text-large);\n  font-weight: var(--weight-heading);\n}\n.ds-empty__text {\n  margin: 0 0 var(--space-3);\n}\n\n/* ---------- footer: address at the left, links at the right, under a heavy rule ---------- */\n.ds-footer {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n  column-gap: var(--space-5);\n  padding: var(--space-2) 0 0;\n  border-top: var(--border-width-strong) var(--border-style) var(--color-bar);\n  font-family: var(--font-ui);\n  font-size: var(--text-small);\n}\n.ds-footer__address {\n  margin: 0;\n  font-style: normal;\n}\n.ds-footer__links {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-end;\n  align-content: flex-start;\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.ds-footer__item + .ds-footer__item::before {\n  content: \"|\";\n  padding: 0 var(--space-2);\n}\n.ds-footer__legal {\n  grid-column: 1 / -1;\n  margin: var(--space-2) 0 0;\n  color: var(--color-text-muted);\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.ds-link--quiet.is-visited {\n  color: var(--color-link-quiet);\n  font-family: var(--font-ui);\n  text-decoration: var(--link-decoration-quiet);\n}\n.ds-link--strong {\n  font-weight: var(--weight-bold);\n}\n.ds-links {\n  margin: 0;\n}\n\n/* ---------- prose ---------- */\n.ds-prose {\n  color: var(--color-text);\n  font-family: var(--font-body);\n  font-size: var(--text-base);\n  line-height: var(--line-body);\n}\n.ds-prose h1,\n.ds-prose h2,\n.ds-prose h3 {\n  margin: var(--space-3) 0 var(--space-2);\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  margin-top: 0;\n  font-size: var(--text-h1);\n}\n.ds-prose h2 {\n  font-size: var(--text-h2);\n}\n.ds-prose h3 {\n  font-size: var(--text-h3);\n  color: var(--color-heading-alt);\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: 0 0 0 var(--space-6);\n}\n.ds-prose strong {\n  font-weight: var(--weight-bold);\n}\n.ds-prose code {\n  font-family: var(--font-mono);\n  font-size: var(--text-base);\n}\n.ds-prose__lead {\n  font-size: var(--text-large);\n}\n\n/* ---------- buttons ---------- */\n.ds-buttons {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--space-3);\n}\n.ds-button {\n  display: inline-block;\n  margin: 0;\n  padding: var(--space-1) var(--space-3);\n  background: var(--fill-button);\n  color: var(--color-button-text);\n  border: var(--border-width-strong) outset var(--color-border-muted);\n  border-radius: var(--radius-control);\n  box-shadow: var(--shadow-control);\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n  font-weight: var(--weight-ui);\n  line-height: var(--line-heading);\n  text-transform: var(--ui-transform);\n  text-decoration: none;\n  text-shadow: var(--shadow-text);\n  transition: var(--transition);\n  white-space: nowrap;\n  cursor: default;\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-pressed {\n  border-style: inset;\n  box-shadow: var(--shadow-control-pressed);\n}\n.ds-button:focus-visible,\n.ds-button.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-button--secondary,\n.ds-button--secondary:hover,\n.ds-button--secondary.is-hover {\n  background: var(--fill-button-secondary);\n  color: var(--color-button-secondary-text);\n}\n.ds-button--large {\n  font-size: var(--text-large);\n}\n/* Destructive action: the same bevel on the surface colour, the label in the\n   bold danger colour, which every palette keeps legible on its surface. */\n.ds-button--danger,\n.ds-button--danger:hover,\n.ds-button--danger.is-hover {\n  background: var(--color-surface);\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-button:disabled,\n.ds-button.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n  box-shadow: none;\n}\n\n/* ---------- form ---------- */\n.ds-form {\n  display: grid;\n  grid-template-columns: var(--size-label) minmax(0, 1fr);\n  column-gap: var(--space-3);\n  row-gap: var(--space-2);\n  align-items: baseline;\n  margin: 0;\n  font-family: var(--font-ui);\n  font-size: var(--text-ui);\n}\n.ds-form__label {\n  text-align: left;\n  font-weight: var(--weight-bold);\n}\n.ds-form__field {\n  min-width: 0;\n}\n.ds-form__input,\n.ds-form__select,\n.ds-form__textarea {\n  box-sizing: border-box;\n  margin: 0;\n  padding: var(--space-1);\n  background: var(--fill-input);\n  color: var(--color-input-text);\n  border: var(--border-width-strong) inset 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  transition: var(--transition);\n}\n.ds-form__input {\n  width: var(--size-field);\n}\n.ds-form__input--short {\n  width: var(--space-6);\n}\n.ds-form__select {\n  border-style: outset;\n  background: var(--fill-button);\n  color: var(--color-button-text);\n}\n.ds-form__textarea {\n  display: block;\n  width: var(--size-area);\n  font-family: var(--font-mono);\n}\n.ds-form__input:focus-visible,\n.ds-form__select:focus-visible,\n.ds-form__textarea:focus-visible,\n.ds-form__input.is-focus {\n  outline: var(--focus-ring);\n}\n.ds-form__input:disabled,\n.ds-form__input.is-disabled {\n  background: var(--color-disabled);\n  color: var(--color-disabled-text);\n}\n.ds-form__check {\n  appearance: none;\n  box-sizing: border-box;\n  width: var(--size-check);\n  height: var(--size-check);\n  margin: 0 var(--space-2) 0 0;\n  padding: var(--space-1);\n  vertical-align: middle;\n  background-color: var(--color-input);\n  border: var(--border-width) inset var(--color-input-border);\n  border-radius: var(--radius-control);\n}\n/* The tick is a block of the field's text colour inside the field's own\n   fill, so it reads the same on a light and on a dark page. */\n.ds-form__check:checked::before,\n.ds-form__check.is-checked::before {\n  content: \"\";\n  display: block;\n  width: 100%;\n  height: 100%;\n  background-color: var(--color-input-text);\n}\n.ds-form__hint {\n  font-size: var(--text-small);\n  color: var(--color-text-muted);\n}\n.ds-form__error {\n  display: block;\n  color: var(--color-danger);\n  font-weight: var(--weight-bold);\n}\n.ds-form__actions {\n  grid-column: 2;\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--space-3);\n  padding: var(--space-2) 0 0;\n}\n\n/* ---------- badge ---------- */\n.ds-badge {\n  display: inline-block;\n  padding: 0 var(--space-1);\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-bold);\n  line-height: var(--line-heading);\n  white-space: nowrap;\n}\n/* The usual form: a coloured word next to a link, no box. */\n.ds-badge--text {\n  padding: 0;\n  background: transparent;\n  color: var(--color-accent-alt);\n  font-size: var(--text-base);\n}\n.ds-badge--count {\n  background: transparent;\n  color: var(--color-text-muted);\n  font-weight: var(--weight-body);\n}\n/* Status labels: the same small solid block in a flat status colour. */\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-bar-alt-text);\n}\n.ds-badge--danger {\n  background: var(--color-danger);\n  color: var(--color-accent-text);\n}\n/* A key line that explains the labels. */\n.ds-badges {\n  display: block;\n  padding: 0 0 var(--space-1);\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 School of Horology: table-era department site, 1996 to 2000: 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<div class=\"ds-page__frame\">\n\n  <header class=\"ds-nav\" data-component=\"nav\">\n    <div class=\"ds-nav__top\">\n      <a class=\"ds-brand\" data-component=\"brand\" href=\"#home\">\n        <span class=\"ds-brand__mark\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9.2\"/><ellipse cx=\"12\" cy=\"12\" rx=\"4\" ry=\"9.2\"/><line x1=\"2.8\" y1=\"12\" x2=\"21.2\" y2=\"12\"/></svg></span>\n        <span class=\"ds-brand__name\">chronoskin</span>\n      </a>\n      <p class=\"ds-nav__tagline\"><span class=\"ds-nav__dept\">School of Horology</span>Faculty of Applied Science. Teaching the making and mending of clocks and watches.</p>\n    </div>\n    <div class=\"ds-nav__bar\">\n      <ul class=\"ds-nav__links\">\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#home\">Home</a></li>\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#courses\">Courses</a></li>\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#handbook\">Student Handbook</a></li>\n        <li class=\"ds-nav__item\"><a class=\"ds-nav__link\" href=\"#apply\">How to Apply</a></li>\n      </ul>\n      <form class=\"ds-nav__search\" action=\"#courses\">\n        <label for=\"n-find\">Search:</label>\n        <input class=\"ds-form__input ds-nav__field\" id=\"n-find\" type=\"text\">\n        <button class=\"ds-button\" type=\"button\">Find</button>\n      </form>\n    </div>\n  </header>\n\n  <section class=\"ds-view ds-view--home\" id=\"home\">\n    <div class=\"ds-page__main\">\n\n      <div class=\"ds-hero\" data-component=\"hero\">\n        <p class=\"ds-hero__label\">Session<span class=\"ds-hero__year\">1997/98</span>Michaelmas term</p>\n        <div class=\"ds-hero__body\">\n          <h1 class=\"ds-hero__title\">Welcome to the School of Horology</h1>\n          <p class=\"ds-hero__lead\">Forty students a year learn here to design, make and restore timekeepers, at the bench and at the drawing board. These pages hold the course lists, the handbook and the forms.</p>\n          <div class=\"ds-hero__action\">\n            <a class=\"ds-button ds-button--large\" href=\"#apply\">Apply for 1998 Entry</a>\n            <a class=\"ds-button ds-button--secondary\" href=\"#courses\">Course List</a>\n            <span class=\"ds-hero__hint\">Applications close on 15 January.</span>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"ds-grid\" data-component=\"grid\">\n        <div class=\"ds-grid__cell\">\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#courses\">Teaching</a></p>\n          <p class=\"ds-grid__text\">Three-year diploma, one-year certificate and evening classes.\n            <span class=\"ds-grid__subs\"><a class=\"ds-link\" href=\"#courses\">Course list</a> | <a class=\"ds-link\" href=\"#courses\">Timetable</a> | <a class=\"ds-link\" href=\"#courses\">Examination papers</a> <span class=\"ds-badge\">NEW</span></span></p>\n        </div>\n        <div class=\"ds-grid__cell ds-grid__cell--2\">\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#handbook\">Students</a></p>\n          <p class=\"ds-grid__text\">What every student is given on the first morning, and where to find it again.\n            <span class=\"ds-grid__subs\"><a class=\"ds-link\" href=\"#handbook\">Handbook</a> | <a class=\"ds-link\" href=\"#handbook\">Workshop rules</a> | <a class=\"ds-link\" href=\"#handbook\">Tool list</a></span></p>\n        </div>\n        <div class=\"ds-grid__cell ds-grid__cell--3\">\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#apply\">Admissions</a></p>\n          <p class=\"ds-grid__text\">Entry requirements, fees and the bench test.\n            <span class=\"ds-grid__subs\"><a class=\"ds-link\" href=\"#apply\">Application form</a> | <a class=\"ds-link\" href=\"#apply\">Open days</a> | <a class=\"ds-link\" href=\"#apply\">Bursaries</a></span></p>\n        </div>\n        <div class=\"ds-grid__cell ds-grid__cell--4\">\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#handbook\">Workshops</a></p>\n          <p class=\"ds-grid__text\">Two bench rooms, the turning shop and the timing laboratory.\n            <span class=\"ds-grid__subs\"><a class=\"ds-link\" href=\"#handbook\">Opening hours</a> | <a class=\"ds-link\" href=\"#handbook\">Booking a lathe</a> | <a class=\"ds-link\" href=\"#handbook\">Safety</a></span></p>\n        </div>\n        <div class=\"ds-grid__cell\">\n          <p class=\"ds-grid__title\"><a class=\"ds-link\" href=\"#home\">People</a></p>\n          <p class=\"ds-grid__text\">Nine teaching staff, four technicians and the school office.\n            <span class=\"ds-grid__subs\"><a class=\"ds-link\" href=\"#home\">Staff list</a> | <a class=\"ds-link\" href=\"#home\">Office hours</a> | <a class=\"ds-link\" href=\"#home\">Former students</a></span></p>\n        </div>\n      </div>\n\n      <ul class=\"ds-stat\" data-component=\"stats\">\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">118</span><span class=\"ds-stat__label\">students this session</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">24</span><span class=\"ds-stat__label\">courses taught</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">62</span><span class=\"ds-stat__label\">benches in two rooms</span></li>\n        <li class=\"ds-stat__item\"><span class=\"ds-stat__value\">1,430</span><span class=\"ds-stat__label\">books in the school library</span></li>\n      </ul>\n\n      <div class=\"ds-page__columns\">\n        <div class=\"ds-page__side\">\n          <section class=\"ds-panel\" data-component=\"panel\">\n            <h2 class=\"ds-panel__title\">Term dates</h2>\n            <div class=\"ds-panel__body\">\n              <div class=\"ds-panel__row\"><span>Michaelmas</span><span>29 Sep to 12 Dec</span></div>\n              <div class=\"ds-panel__row\"><span>Lent</span><span>12 Jan to 27 Mar</span></div>\n              <div class=\"ds-panel__row\"><span>Summer</span><span>20 Apr to 26 Jun</span></div>\n              <p class=\"ds-panel__note\">Workshops close at noon on the last day of term. <a class=\"ds-link\" href=\"#handbook\">Full calendar</a></p>\n            </div>\n          </section>\n          <section class=\"ds-panel\">\n            <h2 class=\"ds-panel__title\">School office</h2>\n            <div class=\"ds-panel__body\">\n              <div class=\"ds-panel__row\"><span>Room 2</span><span>9.30am to 12.30pm</span></div>\n              <div class=\"ds-panel__row\"><span>Library</span><span>9am to 5pm</span></div>\n            </div>\n          </section>\n        </div>\n        <section>\n          <h2 class=\"ds-heading\">News and seminars</h2>\n          <ul class=\"ds-list\" data-component=\"list\">\n            <li class=\"ds-list__item\"><span class=\"ds-list__meta\">24 Nov</span><span><a class=\"ds-link\" href=\"#handbook\">Seminar: the compensated pendulum</a><span class=\"ds-list__text\">Room 12 at 4.15pm. Tea from 4. All students welcome.</span></span></li>\n            <li class=\"ds-list__item\"><span class=\"ds-list__meta\">19 Nov</span><span><a class=\"ds-link\" href=\"#courses\">Lent term options: choose by 5 December</a><span class=\"ds-list__text\">Second-year students hand their option forms to the school office.</span></span></li>\n            <li class=\"ds-list__item\"><span class=\"ds-list__meta\">12 Nov</span><span><a class=\"ds-link is-visited\" href=\"#handbook\">New timing machine in the laboratory</a><span class=\"ds-list__text\">Book a half-hour introduction with the technicians before using it.</span></span></li>\n            <li class=\"ds-list__item\"><span class=\"ds-list__meta\">3 Nov</span><span><a class=\"ds-link\" href=\"#apply\">Open day for 1998 applicants</a><span class=\"ds-list__text\">Saturday 6 December, 10am to 3pm. Bench rooms open throughout.</span></span></li>\n          </ul>\n          <p class=\"ds-list__more\"><a class=\"ds-link\" href=\"#home\">Older news</a></p>\n        </section>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"courses\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"Path\">\n          <ol class=\"ds-breadcrumb\" data-component=\"breadcrumb\">\n            <li class=\"ds-breadcrumb__label\">You are here:</li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">School of Horology</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#courses\">Teaching</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Courses 1997/98</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\" data-component=\"page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">Courses 1997/98</h1>\n            <p class=\"ds-page-header__lead\">Every course the school teaches this session, with the places still open for Lent term.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button\" href=\"#apply\">Apply for a Place</a>\n          </div>\n        </header>\n        <ul class=\"ds-tabs\" data-component=\"tabs\">\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab is-current\" href=\"#courses\">Diploma</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#courses\">Certificate</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#courses\">Evening classes</a></li>\n          <li class=\"ds-tabs__item\"><a class=\"ds-tabs__tab\" href=\"#courses\">Summer school</a></li>\n        </ul>\n      </div>\n\n      <div class=\"ds-page__split\">\n        <div class=\"ds-page__block\">\n          <table class=\"ds-table\" data-component=\"table\">\n            <caption class=\"ds-table__caption\"><span class=\"ds-badges\" data-component=\"badge\">Key: <span class=\"ds-badge ds-badge--success\">OPEN</span> places free <span class=\"ds-badge ds-badge--warning\">FEW LEFT</span> under five places <span class=\"ds-badge ds-badge--danger\">FULL</span> waiting list only <span class=\"ds-badge\">NEW</span> first taught this session</span></caption>\n            <thead>\n              <tr>\n                <th class=\"ds-table__head\" scope=\"col\">Code</th>\n                <th class=\"ds-table__head\" scope=\"col\">Course</th>\n                <th class=\"ds-table__head\" scope=\"col\">Term</th>\n                <th class=\"ds-table__head ds-table__head--num\" scope=\"col\">Hours</th>\n                <th class=\"ds-table__head\" scope=\"col\">Places</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td class=\"ds-table__cell ds-table__cell--code\">HR101</td>\n                <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#handbook\">Bench Practice I: filing, turning and fitting</a></td>\n                <td class=\"ds-table__cell\">All year</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">180</td>\n                <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--danger\">FULL</span></td>\n              </tr>\n              <tr class=\"ds-table__row--alt\">\n                <td class=\"ds-table__cell ds-table__cell--code\">HR104</td>\n                <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#handbook\">Theory of the Escapement</a></td>\n                <td class=\"ds-table__cell\">Michaelmas</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">40</td>\n                <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">OPEN</span></td>\n              </tr>\n              <tr>\n                <td class=\"ds-table__cell ds-table__cell--code\">HR110</td>\n                <td class=\"ds-table__cell\"><a class=\"ds-link is-visited\" href=\"#handbook\">Technical Drawing for Clockmakers</a></td>\n                <td class=\"ds-table__cell\">Lent</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">36</td>\n                <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">OPEN</span></td>\n              </tr>\n              <tr class=\"ds-table__row--alt\">\n                <td class=\"ds-table__cell ds-table__cell--code\">HR205</td>\n                <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#handbook\">Wheel Cutting and Gear Trains</a></td>\n                <td class=\"ds-table__cell\">Lent</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">60</td>\n                <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">FEW LEFT</span></td>\n              </tr>\n              <tr>\n                <td class=\"ds-table__cell ds-table__cell--code\">HR212</td>\n                <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#handbook\">Quartz and Electronic Movements</a> <span class=\"ds-badge\">NEW</span></td>\n                <td class=\"ds-table__cell\">Lent</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">30</td>\n                <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--success\">OPEN</span></td>\n              </tr>\n              <tr class=\"ds-table__row--alt\">\n                <td class=\"ds-table__cell ds-table__cell--code\">HR301</td>\n                <td class=\"ds-table__cell\"><a class=\"ds-link\" href=\"#handbook\">Restoration of Antique Movements</a></td>\n                <td class=\"ds-table__cell\">Summer</td>\n                <td class=\"ds-table__cell ds-table__cell--num\">90</td>\n                <td class=\"ds-table__cell\"><span class=\"ds-badge ds-badge--warning\">FEW LEFT</span></td>\n              </tr>\n            </tbody>\n          </table>\n\n          <ol class=\"ds-pagination\" data-component=\"pagination\">\n            <li class=\"ds-pagination__label\">Courses 1 to 6 of 24</li>\n            <li><span class=\"ds-pagination__link is-disabled\">Previous</span></li>\n            <li><a class=\"ds-pagination__link is-current\" href=\"#courses\">1</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#courses\">2</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#courses\">3</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#courses\">4</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#courses\">Next</a></li>\n          </ol>\n\n          <section>\n            <h2 class=\"ds-heading\">Summer school 1998</h2>\n            <div class=\"ds-empty\" data-component=\"empty\">\n              <h3 class=\"ds-empty__title\">No summer courses have been announced yet.</h3>\n              <p class=\"ds-empty__text\">The list is settled in February. Leave your address and the school office will post it to you.</p>\n              <a class=\"ds-button\" href=\"#apply\">Ask for the List</a>\n            </div>\n          </section>\n        </div>\n\n        <aside class=\"ds-sidebar\" data-component=\"sidebar\">\n          <section>\n            <h2 class=\"ds-sidebar__title\">Teaching</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item is-current\">Courses 1997/98</li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#courses\">Timetable</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#courses\">Examination papers</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#handbook\">Reading lists</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#apply\">Fees</a></li>\n            </ul>\n          </section>\n          <section>\n            <h2 class=\"ds-sidebar__title\">Course tutor</h2>\n            <p class=\"ds-sidebar__text\">Room 4, bench room corridor. Office hours Tuesday and Thursday, 2pm to 4pm.</p>\n            <p class=\"ds-sidebar__text\"><a class=\"ds-link\" href=\"#apply\">Write to the tutor</a></p>\n          </section>\n        </aside>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"handbook\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"Path\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__label\">You are here:</li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">School of Horology</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#handbook\">Student Handbook</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">3. Workshop rules</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">Student Handbook</h1>\n            <p class=\"ds-page-header__lead\">Section 3 of 7. Revised September 1997 by the school office.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button ds-button--secondary\" href=\"#handbook\">Whole Handbook on One Page</a>\n          </div>\n        </header>\n      </div>\n\n      <div class=\"ds-page__split\">\n        <div class=\"ds-page__block\">\n          <article class=\"ds-prose\" data-component=\"typography\">\n            <h1>3. Workshop rules</h1>\n            <p class=\"ds-prose__lead\">The bench rooms are shared by three year groups. These rules keep work, tools and fingers safe.</p>\n            <h2>3.1 Your bench</h2>\n            <p>Each student is given a numbered bench and a drawer key in the first week. The number is also your locker number and the first part of your computer name, for example <code>bench27</code>.</p>\n            <ul>\n              <li>Clear the bench top at the end of every session.</li>\n              <li>Work left in a vice overnight must carry a ticket with your name.</li>\n              <li>Report a lost key to the technicians the same day.</li>\n            </ul>\n            <h2>3.2 Machines</h2>\n            <h3>Lathes and the wheel-cutting engine</h3>\n            <p>No student uses a powered machine before the technicians have signed the induction sheet. <strong>Eye protection is worn at every machine</strong>, including by anyone watching.</p>\n            <h3>How links are shown in this handbook</h3>\n            <p class=\"ds-links\" data-component=\"links\">\n              <a class=\"ds-link\" href=\"#handbook\">A section you have not read</a>,\n              <a class=\"ds-link is-visited\" href=\"#handbook\">a section you have read</a>,\n              <a class=\"ds-link is-hover\" href=\"#handbook\">a link under the pointer</a>,\n              <a class=\"ds-link is-active\" href=\"#handbook\">a link as you click it</a>,\n              <a class=\"ds-link ds-link--quiet\" href=\"#handbook\">a note or a footnote</a> and\n              <a class=\"ds-link ds-link--strong\" href=\"#handbook\">a rule you must know</a>.\n            </p>\n          </article>\n\n          <ol class=\"ds-pagination\">\n            <li class=\"ds-pagination__label\">Section 3 of 7</li>\n            <li><a class=\"ds-pagination__link\" href=\"#handbook\">Previous: 2. The school day</a></li>\n            <li><a class=\"ds-pagination__link\" href=\"#handbook\">Next: 4. Assessment</a></li>\n          </ol>\n        </div>\n\n        <aside class=\"ds-sidebar\">\n          <section>\n            <h2 class=\"ds-sidebar__title\">Contents</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link is-visited\" href=\"#handbook\">1. Who is who</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link is-visited\" href=\"#handbook\">2. The school day</a></li>\n              <li class=\"ds-sidebar__item is-current\">3. Workshop rules</li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#handbook\">4. Assessment</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#handbook\">5. The library</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#handbook\">6. Tool list</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#handbook\">7. If things go wrong</a></li>\n            </ul>\n          </section>\n          <section>\n            <h2 class=\"ds-sidebar__title\">In print</h2>\n            <p class=\"ds-sidebar__text\">Paper copies are kept at the school office and in the library, shelf mark H 0.1.</p>\n          </section>\n        </aside>\n      </div>\n\n    </div>\n  </section>\n\n  <section class=\"ds-view\" id=\"apply\">\n    <div class=\"ds-page__inner\">\n\n      <div class=\"ds-page__head\">\n        <nav aria-label=\"Path\">\n          <ol class=\"ds-breadcrumb\">\n            <li class=\"ds-breadcrumb__label\">You are here:</li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#home\">School of Horology</a></li>\n            <li class=\"ds-breadcrumb__item\"><a class=\"ds-link\" href=\"#apply\">Admissions</a></li>\n            <li class=\"ds-breadcrumb__item is-current\">Application form</li>\n          </ol>\n        </nav>\n        <header class=\"ds-page-header\">\n          <div class=\"ds-page-header__text\">\n            <h1 class=\"ds-page-header__title\">Application for 1998 entry</h1>\n            <p class=\"ds-page-header__lead\">The form reaches the admissions tutor directly. A printed copy is posted to you as a receipt.</p>\n          </div>\n          <div class=\"ds-page-header__action\">\n            <a class=\"ds-button ds-button--secondary\" href=\"#courses\">See the Courses First</a>\n          </div>\n        </header>\n      </div>\n\n      <div class=\"ds-page__split\">\n        <div class=\"ds-page__block\">\n          <div class=\"ds-notices\" data-component=\"notice\">\n            <p class=\"ds-notice\"><span class=\"ds-notice__label\">Closing date:</span> forms sent after 15 January are held for the following session.</p>\n            <p class=\"ds-notice ds-notice--error\"><span class=\"ds-notice__label\">The form was not sent:</span> the e-mail address is incomplete. Your other answers have been kept.</p>\n          </div>\n\n          <form class=\"ds-form\" data-component=\"form\" action=\"#apply\">\n            <label class=\"ds-form__label\" for=\"a-name\">Full name:</label>\n            <div class=\"ds-form__field\">\n              <input class=\"ds-form__input\" id=\"a-name\" type=\"text\" value=\"R. Okafor\">\n            </div>\n            <label class=\"ds-form__label\" for=\"a-mail\">E-mail address:</label>\n            <div class=\"ds-form__field\">\n              <input class=\"ds-form__input\" id=\"a-mail\" type=\"text\" value=\"r.okafor@\">\n              <span class=\"ds-form__error\">An address needs a name, an @ sign and a host.</span>\n            </div>\n            <label class=\"ds-form__label\" for=\"a-course\">Course applied for:</label>\n            <div class=\"ds-form__field\">\n              <select class=\"ds-form__select\" id=\"a-course\">\n                <option>Diploma (three years)</option>\n                <option>Certificate (one year)</option>\n                <option>Evening classes</option>\n              </select>\n            </div>\n            <label class=\"ds-form__label\" for=\"a-age\">Age on 1 October:</label>\n            <div class=\"ds-form__field\">\n              <input class=\"ds-form__input ds-form__input--short\" id=\"a-age\" type=\"text\" value=\"19\">\n              <span class=\"ds-form__hint\">applicants must be 17 or over</span>\n            </div>\n            <label class=\"ds-form__label\" for=\"a-why\">Bench experience:</label>\n            <div class=\"ds-form__field\">\n              <textarea class=\"ds-form__textarea\" id=\"a-why\" rows=\"5\">Two years of Saturday work in a repair shop.\nCleaned and re-bushed three longcase movements.</textarea>\n            </div>\n            <span class=\"ds-form__label\">Please send me:</span>\n            <div class=\"ds-form__field\">\n              <label><input class=\"ds-form__check\" type=\"checkbox\" checked>The printed prospectus</label><br>\n              <label><input class=\"ds-form__check\" type=\"checkbox\">Details of bursaries</label>\n            </div>\n            <div class=\"ds-form__actions\" data-component=\"buttons\">\n              <button class=\"ds-button\" type=\"button\">Send Application</button>\n              <button class=\"ds-button ds-button--secondary\" type=\"button\">Clear the Form</button>\n              <button class=\"ds-button\" type=\"button\" disabled>Attach a Reference</button>\n              <a class=\"ds-button ds-button--danger\" href=\"#apply\">Withdraw</a>\n            </div>\n          </form>\n\n          <section class=\"ds-dialog\" data-component=\"dialog\" role=\"dialog\" aria-labelledby=\"d-title\">\n            <h2 class=\"ds-dialog__title\" id=\"d-title\">Withdraw your application?</h2>\n            <p class=\"ds-dialog__body\">Your form of 3 November will be removed from the admissions list. You may <a class=\"ds-link\" href=\"#apply\">apply again</a> before the closing date.</p>\n            <div class=\"ds-dialog__actions\">\n              <a class=\"ds-button ds-button--danger\" href=\"#home\">Withdraw</a>\n              <a class=\"ds-button ds-button--secondary\" href=\"#apply\">Keep It</a>\n            </div>\n          </section>\n        </div>\n\n        <aside class=\"ds-sidebar\">\n          <section>\n            <h2 class=\"ds-sidebar__title\">Admissions</h2>\n            <ul class=\"ds-sidebar__list\">\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#apply\">Entry requirements</a></li>\n              <li class=\"ds-sidebar__item is-current\">Application form</li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#apply\">The bench test</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#apply\">Fees and bursaries</a></li>\n              <li class=\"ds-sidebar__item\"><a class=\"ds-link\" href=\"#apply\">Open days</a></li>\n            </ul>\n          </section>\n          <section>\n            <h2 class=\"ds-sidebar__title\">What happens next</h2>\n            <p class=\"ds-sidebar__text\">1. A receipt by post within a week.</p>\n            <p class=\"ds-sidebar__text\">2. An invitation to the bench test in February.</p>\n            <p class=\"ds-sidebar__text\">3. A decision by the end of March.</p>\n          </section>\n          <section>\n            <h2 class=\"ds-sidebar__title\">Admissions tutor</h2>\n            <p class=\"ds-sidebar__text\">School office, Room 2. Weekdays 9.30am to 12.30pm.</p>\n          </section>\n        </aside>\n      </div>\n\n    </div>\n  </section>\n\n  <footer class=\"ds-footer\" data-component=\"footer\">\n    <address class=\"ds-footer__address\">chronoskin School of Horology, Faculty of Applied Science.<br>School office: Room 2, weekdays 9.30am to 12.30pm.</address>\n    <ul class=\"ds-footer__links\">\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#home\">Home</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#courses\">Courses</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#handbook\">Handbook</a></li>\n      <li class=\"ds-footer__item\"><a class=\"ds-link\" href=\"#apply\">Apply</a></li>\n    </ul>\n    <p class=\"ds-footer__legal\">Pages kept by the school office for chronoskin. Last changed 24 November 1997. Comments to the webmaster.</p>\n  </footer>\n\n</div>\n\n</body>\n</html>\n",
    "style.json": "{\n  \"id\": \"v1.table-era-90s.docs.s08.p11.t03.u03.dc\",\n  \"library\": \"2026.10.09-1346\",\n  \"era\": {\n    \"slug\": \"table-era-90s\",\n    \"years\": [\n      1996,\n      2000\n    ]\n  },\n  \"archetype\": \"docs\",\n  \"mode\": \"mix\",\n  \"markup\": \"modern\",\n  \"viewport\": {\n    \"width\": 800,\n    \"fluid\": false\n  },\n  \"source\": \"https://chrono.skin/s/v1-te-8b33-dc\",\n  \"short\": \"v1-te-8b33-dc\",\n  \"density\": \"compact\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #cccc99;\n  --color-canvas: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-alt: #ffffcc;\n  --color-surface-strong: #cccc99;\n  --color-bar: #cccc99;\n  --color-bar-text: #000000;\n  --color-bar-alt: #ffffcc;\n  --color-bar-alt-text: #000000;\n  --color-inverse: #003300;\n  --color-inverse-text: #ffffff;\n  --color-text: #000000;\n  --color-text-muted: #686868;\n  --color-heading: #990000;\n  --color-heading-alt: #003300;\n  --color-link: #003399;\n  --color-link-quiet: #003399;\n  --color-link-visited: #680060;\n  --color-link-hover: #003399;\n  --color-link-active: #aa0000;\n  --color-border: #989898;\n  --color-border-strong: #003300;\n  --color-border-muted: #c0c0c0;\n  --color-accent: #003300;\n  --color-accent-text: #ffffff;\n  --color-accent-alt: #aa0000;\n  --color-fill-1: #ffffcc;\n  --color-fill-2: #cccc99;\n  --color-fill-3: #cc9900;\n  --color-fill-4: #ffffff;\n  --color-button: #efefef;\n  --color-button-text: #000000;\n  --color-button-hover-text: #000000;\n  --color-button-secondary: #c0c0c0;\n  --color-button-secondary-text: #000000;\n  --color-input: #ffffff;\n  --color-input-text: #000000;\n  --color-input-border: #c0c0c0;\n  --color-disabled: #efefef;\n  --color-disabled-text: #989898;\n  --color-danger: #aa0000;\n  --color-danger-surface: #ffffff;\n  --color-success: #003300;\n  --color-warning: #cc9900;\n  --color-notice: #ffffcc;\n  --color-notice-text: #000000;\n  --color-focus: #003300;\n  --color-shadow: #000000;\n  --color-overlay: #ffffff;\n}\n\n/* @part type */\n:root {\n  --font-body: Arial, Helvetica, sans-serif;\n  --font-heading: Arial, Helvetica, sans-serif;\n  --font-ui: Arial, Helvetica, sans-serif;\n  --font-mono: \"Courier New\", Courier, monospace;\n  --text-base: 12px;\n  --text-small: 10px;\n  --text-ui: 12px;\n  --text-large: 14px;\n  --text-display: 22px;\n  --text-h1: 18px;\n  --text-h2: 14px;\n  --text-h3: 12px;\n  --line-body: normal;\n  --line-heading: normal;\n  --line-display: 1;\n  --weight-body: 400;\n  --weight-bold: 700;\n  --weight-heading: 700;\n  --weight-display: 700;\n  --weight-ui: 700;\n  --heading-transform: none;\n  --heading-tracking: 0;\n  --display-tracking: 0;\n  --figure-shift: 0em;\n  --ui-transform: none;\n  --link-decoration: underline;\n  --link-decoration-hover: underline;\n  --link-decoration-quiet: underline;\n}\n\n/* @part surface */\n:root {\n  --border-width: 2px;\n  --border-width-strong: 2px;\n  --border-style: solid;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: 0 0 0 1px var(--color-border-strong), 4px 4px 0 1px var(--color-shadow);\n  --shadow-control: 1px 1px 0 var(--color-shadow);\n  --shadow-control-hover: 1px 1px 0 var(--color-shadow);\n  --shadow-control-pressed: none;\n  --shadow-dialog: 4px 4px 0 var(--color-shadow);\n  --shadow-text: none;\n  --fill-page: var(--color-page);\n  --fill-bar: repeating-linear-gradient(0deg, var(--color-bar) 0 2px, color-mix(in srgb, var(--color-bar) 55%, white) 2px 3px);\n  --fill-bar-alt: repeating-linear-gradient(0deg, var(--color-bar-alt) 0 2px, color-mix(in srgb, var(--color-bar-alt) 55%, white) 2px 3px);\n  --fill-inverse: repeating-linear-gradient(0deg, var(--color-inverse) 0 2px, color-mix(in srgb, var(--color-inverse) 55%, white) 2px 3px);\n  --fill-accent: var(--color-accent);\n  --fill-panel: var(--color-surface);\n  --fill-button: var(--color-button);\n  --fill-button-hover: var(--color-button);\n  --fill-button-secondary: var(--color-button-secondary);\n  --fill-input: var(--color-input);\n  --focus-ring: 2px solid var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
