# Brief: Presentation

Read this before writing. Then read `theme.css` for the classes and open `exemplar.html`
to see a complete, correct deck, including the navigation script.

## Purpose

A deck supports a spoken argument and then survives without the speaker. Each slide
makes one point, stated in its heading, so that reading only the headings gives the
argument. Speaker notes carry what would otherwise be said aloud.

## Audience

A live audience in a meeting, then the same people and their colleagues reading it
later on a laptop or phone. Design for the reader: the deck must make sense scrolled
top to bottom without narration.

## Structure

The document is `<main class="so-deck">` containing `<section class="so-slide" id="s1">`
... `id="sN"`, one per slide, plus fixed chrome: a `.so-progressbar`, a `.so-deck-nav`
with previous and next buttons, a `.so-slide-counter`, and a `.so-help` hint. Each slide
wraps its content in `.so-slide-inner` and carries a `.so-slide-num`.

Slides, in this order:

1. **Title** (`.so-slide.is-title`): kicker, title, one-line thesis as `.so-lede`,
   presenter, date, audience. Logo optional.
2. **Agenda**: three to six items matching the section dividers.
3. **Content slides**: eight to twenty. Use `.so-slide.is-section` as a divider before
   each topic. Within a topic, one point per slide. Layouts: bullets (max five), `.so-cols`
   two-column, `.so-big` for a single number with a one-line explanation, `.so-table`
   for comparisons, `.so-figure` for an inline SVG chart, `.so-callout` for the one
   sentence a skimmer must not miss.
4. **Summary and asks**: the thesis in three bullets, then the decisions requested with
   owner and date.
5. **End** (`.so-slide.is-end`): where the deck and supporting documents live, and the
   `.so-footer` with the brand footer text.

Every slide may include `<aside class="so-slide-notes">` with speaker notes. They are
hidden on screen, toggled with the `n` key, and printed under each slide.

## Navigation script

Copy the inline script from the exemplar. It implements: arrow keys, Page Up/Down,
Space, Home, and End to move between slides; `n` to toggle notes; `?` to show the help
hint; previous and next buttons; a counter ("4 / 14") and progress bar updated on
scroll; and the current slide's `id` kept in the URL hash so a link opens on that slide.
It uses no network access, no storage, and no external libraries. Do not add
`fetch`, timers that poll, or auto-advance.

## Tone

Headings are assertions ("Deploy volume recovered to 26 per week"), not topics
("Deploys"). Bullets are fragments, at most five per slide, at most two lines each.
Numbers carry the argument; put the comparison next to the number. Notes are written
in full sentences in the speaker's voice.

## Evidence to include

- One number per claim, with its baseline or target on the same slide.
- The source of each chart or table in small text under it.
- Dates on every ask and milestone.

## Avoid

- More than one idea per slide, or more than 40 words of body text on a slide.
- Slides that only make sense with narration; put the narration in the notes.
- Transitions, animation, auto-advance, embedded video, or external fonts.
- Text under 1rem on screen, or color as the only carrier of meaning in a chart.

## Theme classes

Shared: `.so-kicker`, `.so-lede`, `.so-callout.is-*`, `.so-table`, `.so-figure`, `.so-facts`,
`.so-badge.is-*`, `.so-footer`, `.so-brand`.
Presentation-specific: `.so-deck` (`.show-notes`), `.so-slide.is-{title,section,end}`,
`.so-slide-inner`, `.so-slide-num`, `.so-slide-notes`, `.so-slide-counter`, `.so-deck-nav`,
`.so-progressbar`, `.so-help`, `.so-cols`, `.so-big`.

Print: the theme sets landscape pages, one slide per page, notes under each slide, and
hides the fixed chrome. Check the print preview before publishing.

Inline `brand.css` then `theme.css` in `<head>`, in that order. Do not add colors; use
the tokens.
