{
  "id": "v1-te-8a15",
  "long_id": "v1.table-era-90s.docs.s08.p10.t01.u05",
  "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
  },
  "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-8a15",
  "preview_url": "https://chrono.skin/s/v1-te-8a15/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- Two families and a code face. `--font-body` (Times New Roman, Times) sets running text, link lists, table data and the footer. `--font-heading` and `--font-ui` (Arial, Helvetica) set the wordmark, headings, title strips, the search band, forms, buttons, notices and all 10px small print. `--font-mono` (Courier New) is for code and textareas. The references used Times, Arial, Geneva, Helvetica and Verdana as installed system fonts; no substitute was needed.\n- Sizes: `--text-base` and `--text-ui` 13px; `--text-small` 10px for tool links, tab strip, captions, meta and legal text; `--text-large` and `--text-h2` 16px for directory titles, panel titles and section headings; `--text-h1` 18px for a page title; `--text-h3` 13px bold; `--text-display` 28px for the wordmark only. Line height is `normal` everywhere. Bold is 700, the wordmark included.\n- No uppercase transform and no letter spacing. Headings are distinguished by family, weight and size only.\n- Links: `--color-link` (dark blue) and always underlined, including navigation, titles and quiet links (`--link-decoration`, `--link-decoration-quiet` and `--link-decoration-hover` are all `underline`). `--color-link-visited` is a greyed violet, `--color-link-active` is red, `--color-link-hover` equals the link colour because the era had no hover effect. `--color-link-quiet` (bright blue) is for promotional links set in the sans face.\n- Text is `--color-text` black; `--color-text-muted` grey is for times and counts only. `--color-heading` is black; `--color-heading-alt` (navy) is the wordmark, tagline, h3 and positive figures.\n- `--color-success` (dark green, the one green the references print) and `--color-warning` (the title-strip yellow, the era's amber) are flat fills for status labels. Green also works as text on white; the yellow is a fill only and carries black text.\n- Fills are flat. `--color-bar` (teal) is the search band, table head and the 2px rules. `--color-bar-alt` (yellow) is every panel and sidebar title strip and the border of notices. `--color-inverse` (black, white text) is the dialog title bar only. `--color-surface-alt` (light grey) is the tab strip, alternate table rows and the empty state. `--color-fill-1` to `--color-fill-4` (pale yellow, light grey, orange, teal) colour grid cells; `--color-fill-3` is also the 2px underline of `.ds-heading`.\n- `--color-accent` (crimson) is the solid badge; `--color-accent-alt` (red) is the \"New!\" word and negative figures. `--color-danger` is error text and the error notice border on `--color-danger-surface` (pale yellow).\n- Borders: 1px `--color-border` grey for table cells, the outline of the search band and of grid cells, the sidebar rule and thin rules; 1px `--color-border-strong` black for boxed panels and dialogs; 2px bevels on controls. Radius is 0 and every shadow token is `none`. Every one of these lines is drawn with `--border-width`, `--border-width-strong` and `--border-style`, and the sheet, panels and dialogs take `--shadow-panel` and `--shadow-dialog`, so another surface set changes the frames, rules and bars of the whole page.\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`. `--border-style` (`solid`) is used for everything else.\n\n- Family: the dark home page of 1998, read from the 1998 community welcome page and the 1998 film site: a black page with white text, pure yellow links, lime, pure red and pure blue, and the greys of browser chrome. Nothing is tinted; every colour is a named colour of the period at full strength.\n- `--color-page`, `--color-canvas` and `--color-surface` are black `#000000`. `--color-surface-alt` `#181818` (the darkest grey read from the screenshots) is alternate rows, quiet strips and the empty state; `--color-surface-strong` `#686868`.\n- `--color-bar` `#0000ff` (pure blue, white text, yellow links) is the search band, the table head, panel titles and the header and footer rules. `--color-bar-alt` `#686868` (grey, white text, yellow links) is every other title strip and the notice border.\n- `--color-inverse` `#c0c0c0` (silver) with black text is the light block of a dark page: a dialog title bar or a top bar. Links placed on it take its text colour.\n- Text is white `--color-text`; `--color-text-muted` `#989898` is for times, counts and legal lines. `--color-heading` is white; `--color-heading-alt` `#00ff00` (lime) is the brand name, h3 and positive figures.\n- Links are `--color-link` `#ffff00` (yellow), always underlined; `--color-link-quiet` is lime `#00ff00`, visited is silver `#c0c0c0`, active is red `#ff0000`; hover equals the link colour.\n- `--color-accent` `#ffff00` carries black text (`--color-accent-text`): the solid badge is a yellow block. `--color-accent-alt` `#ff0000` is the \"New!\" word, prices and negative figures.\n- `--color-fill-1` to `--color-fill-4` are `#181818`, `#000000`, `#0000ff`, `#686868`. They carry white text and yellow links.\n- `--color-danger` `#ff0000` is error text on black and a fill under black text; `--color-success` `#00ff00` is a fill under black text; `--color-warning` `#ff5000` (the orange of the 1998 university page, the only amber in the new references) is a fill under white text. `--color-danger-surface` is black; notices sit on `#181818`.\n- Controls are the grey of the operating system, as on any page of the period whatever its background: `--color-button` `#c0c0c0` and `--color-button-secondary` `#989898` with black text, white form fields with black text (`--color-input`, `--color-input-text`) in a silver bevel. Disabled controls are `#686868` with silver text. The two dark references show no form controls; these are the browser defaults read from the other captures.\n- Borders: `--color-border` and `--color-border-muted` `#989898` for outlines, row rules and bevels, `--color-border-strong` `#ffffff` (the white outline the film site puts round its pictures). `--color-focus` is yellow.\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 <= 28px`: the wordmark is the largest text; headings stop at 18px.\n- `font-size >= 10px`: small print is 10px, nothing smaller.\n- `font-weight >= 400`: no light weights existed.\n- `font-families <= 3`: a serif, a sans-serif and a monospace face.\n- `underlined-links >= 95%`: links are always underlined; only a current item loses the underline.\n- `letter-spacing = 0`: no tracking anywhere.\n- `uppercase-text <= 0%`: no text-transform; capitals are typed.\n- `border-radius <= 0px`: no reference has a rounded corner.\n- `box-shadow-blur <= 0px`: the only shadows are 1px and 3px embossed edges; nothing is blurred.\n- `text-shadow = none`: no reference sets a text shadow in its markup.\n- `gradient-fills <= 8%`: only the raised strips carry a highlight and a shade line; every other fill is flat.\n- `border-width <= 3px`: rules and frames are 2px grooves; the widest border is the 3px bevel of a control.\n- `transition = none`: nothing in the references changes on hover.\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 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: 5px;\n  --space-3: 8px;\n  --space-4: 12px;\n  --space-5: 18px;\n  --space-6: 36px;\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.p10.t01.u05\",\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-8a15\",\n  \"short\": \"v1-te-8a15\"\n}\n",
    "tokens.css": "/* @part palette */\n:root {\n  --color-page: #000000;\n  --color-canvas: #000000;\n  --color-surface: #000000;\n  --color-surface-alt: #181818;\n  --color-surface-strong: #686868;\n  --color-bar: #0000ff;\n  --color-bar-text: #ffffff;\n  --color-bar-alt: #686868;\n  --color-bar-alt-text: #ffffff;\n  --color-inverse: #c0c0c0;\n  --color-inverse-text: #000000;\n  --color-text: #ffffff;\n  --color-text-muted: #989898;\n  --color-heading: #ffffff;\n  --color-heading-alt: #00ff00;\n  --color-link: #ffff00;\n  --color-link-quiet: #00ff00;\n  --color-link-visited: #c0c0c0;\n  --color-link-hover: #ffff00;\n  --color-link-active: #ff0000;\n  --color-border: #989898;\n  --color-border-strong: #ffffff;\n  --color-border-muted: #989898;\n  --color-accent: #ffff00;\n  --color-accent-text: #000000;\n  --color-accent-alt: #ff0000;\n  --color-fill-1: #181818;\n  --color-fill-2: #000000;\n  --color-fill-3: #0000ff;\n  --color-fill-4: #686868;\n  --color-button: #c0c0c0;\n  --color-button-text: #000000;\n  --color-button-hover-text: #000000;\n  --color-button-secondary: #989898;\n  --color-button-secondary-text: #000000;\n  --color-input: #ffffff;\n  --color-input-text: #000000;\n  --color-input-border: #c0c0c0;\n  --color-disabled: #686868;\n  --color-disabled-text: #c0c0c0;\n  --color-danger: #ff0000;\n  --color-danger-surface: #000000;\n  --color-success: #00ff00;\n  --color-warning: #ff5000;\n  --color-notice: #181818;\n  --color-notice-text: #ffffff;\n  --color-focus: #ffff00;\n  --color-shadow: #000000;\n  --color-overlay: #000000;\n}\n\n/* @part type */\n:root {\n  --font-body: \"Times New Roman\", Times, 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: 13px;\n  --text-small: 10px;\n  --text-ui: 13px;\n  --text-large: 16px;\n  --text-display: 28px;\n  --text-h1: 18px;\n  --text-h2: 16px;\n  --text-h3: 13px;\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: 900;\n  --weight-ui: 400;\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: 3px;\n  --border-style: groove;\n  --radius-control: 0;\n  --radius-panel: 0;\n  --radius-pill: 0;\n  --radius-page: 0;\n  --shadow-panel: -1px -1px 0 color-mix(in srgb, var(--color-canvas) 40%, white), 1px 1px 0 var(--color-border);\n  --shadow-control: none;\n  --shadow-control-hover: none;\n  --shadow-control-pressed: inset 1px 1px 0 var(--color-shadow);\n  --shadow-dialog: -1px -1px 0 color-mix(in srgb, var(--color-canvas) 40%, white), 3px 3px 0 var(--color-border);\n  --shadow-text: none;\n  --fill-page: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20'%3E%3Cpath d='M3 3h14v1h-13v13h-1z' fill='%23ffffff' fill-opacity='.38'/%3E%3Cpath d='M17 4v14h-14v-1h13v-13z' fill='%23000000' fill-opacity='.12'/%3E%3C/svg%3E\") var(--color-page);\n  --fill-bar: linear-gradient(color-mix(in srgb, var(--color-bar) 55%, white) 0 1px, var(--color-bar) 1px calc(100% - 1px), color-mix(in srgb, var(--color-bar) 70%, black) calc(100% - 1px));\n  --fill-bar-alt: linear-gradient(color-mix(in srgb, var(--color-bar-alt) 55%, white) 0 1px, var(--color-bar-alt) 1px calc(100% - 1px), color-mix(in srgb, var(--color-bar-alt) 70%, black) calc(100% - 1px));\n  --fill-inverse: linear-gradient(color-mix(in srgb, var(--color-inverse) 55%, white) 0 1px, var(--color-inverse) 1px calc(100% - 1px), color-mix(in srgb, var(--color-inverse) 70%, black) calc(100% - 1px));\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 dotted var(--color-focus);\n  --transition: none;\n  --backdrop-blur: 0px;\n}\n"
  }
}
