# Brighton Ruby decks

Static, dependency-free slide decks (conference talk + workshop) for Brighton
Ruby. Open `index.html`. Everything runs over `file://` with **no internet
connection** — fonts (Onest, Cal Sans) are self-hosted in `fonts/` and all
icons are inline SVG.

## Structure
- `index.html` — landing page; links to both decks + the offline download.
- `conference-talk.html` — "The Builder's Advantage" keynote.
- `conference-presenter.html` — synced speaker-notes popout for the keynote.
- `workshop.html` — workshop deck.
- `deck.css` / `deck.js` — shared deck runtime (scale-to-fit stage, nav, presenter sync). Used by both decks.
- `presenter.js` — presenter-window logic.
- `tokens.css` — design tokens (color + type). `fonts.css` — self-hosted `@font-face`.
- `fonts/`, `assets/` — woff2 fonts and images.
- `brian-casel-slides.zip` — the downloadable bundle (see below).
- `build-zip.sh` — rebuilds that zip.

## ⚠️ Always keep the offline zip in sync
`index.html` has a "Download codebase (.zip)" button linking to
`brian-casel-slides.zip`. It is a **pre-built snapshot of the whole
codebase**, not generated on the fly.

**After ANY change to the decks, CSS, JS, fonts, or assets, rebuild the zip:**

```bash
./build-zip.sh
```

If you don't, the download will serve a stale version. This applies to every
change from here on out — treat rebuilding the zip as part of finishing any edit.
