topic
Topic anchor inside a section. A horizontal cut: the topic above, the section's topics as a scale below.
Marks a topic WITHIN a section, where divider marks the boundary BETWEEN sections. The lower band shows the section's other topics with the current one lit — its column filled with the upper band's own field and capped with a bright top bar, so the topic named above reaches down into its place in the scale; every label sits centered in its column — and the audience knows not just what this is but where it sits and what is still ahead. The track is derived from the deck — every topic slide's own heading — so it is written once and cannot go stale. The track's ceiling is a property of the SECTION rather than of this slide, so it is stated here rather than in capacity: four sibling topics is the sweet spot, six is comfortable, and past nine the track stops being countable at a glance and the section wants splitting with a second divider. Below two there is no scale to draw and the track is suppressed.
When to use
- A topic inside a long section. A section that runs more than a handful of slides loses the audience between its dividers. A
topicre-anchors them without spending a full section break, and shows what is still ahead. - When the room needs the finding, not the label. The
factvariant promotes the claim to the display line and demotes the name to a label, so the audience leaves the anchor already knowing the answer and the following slides show the work. - Serialized or reviewed decks. A board pack read asynchronously benefits most: the derived track means a reader who opens at slide 30 can see the shape of the section they landed in.
When not to use
- A section with one topic, or with ten. Below two there is no scale to draw and the track is suppressed, leaving a slide that is a
divider lightwith extra chrome — usedivider light. Past nine the track has ramped its labels down twice and still runs out of room; a section with ten topics is two sections, so split it with anotherdivider. If what you want is the deck's contents rather than one section's, that isagenda. - A full sentence as the heading. The heading is also this topic's label in every sibling slide's track. A sentence reads as a headline here and overflows its column there. Short noun phrase; put the sentence in the claim.
- More than one per two or three content slides. A topic anchor is a breath, not a separator. Firing it between every slide makes it chrome and costs it the authority that makes it work.
- Carrying a fact that appears nowhere else. An anchor is deletable without losing information — the section proves the claim on the slides that follow. If the number lives ONLY on this slide, it is a
big-number, not atopic.
Common mistakes
- Authoring the sibling list by hand on every topic slide. Don't — it is derived.
lib/transformers/topic-track.jsreads the## headingof everytopicslide in the section and builds the track, so renaming a topic is a one-slide edit. Where the derived labels genuinely are not what you want, override the whole scale with one directive —<!-- _track: Cost to win | [Payback] -->— and that slide then stops contributing its name to its siblings' tracks. - Expecting a track on a topic slide that sits before the deck's first
divider. The track is scoped to a section, and a section starts at adivider— any divider,lightincluded, matching how the section progress rail counts. A topic slide with no divider above it renders as a single dark canvas — the band, the seam and the shelf reserve are all dropped, so it composes rather than reserving room for a track that is not there. It keeps the DEFAULT type hierarchy; it does NOT becomefact. - Reaching for
factand leaving the claim as a fragment or a label.factputs the claim at display size, so it must be a whole sentence that states something — and one sentence, not three. Start it with the number (Fourteen months blended, …) rather than bolding the figure; two typographic registers inside one display line is one too many. - A long single-word topic name in a section at or near the nine-topic ceiling. The track's columns are equal by construction, so at nine a word longer than about eleven characters breaks rather than widening its column (the gallery's stress slide sets
Postmortems, which is at the edge and fits). Either shorten the name — the heading register is two to four short words anyway — or split the section, which is what a nine-topic section usually wants. - Writing the override as a markdown list, the way it used to work. A list on a
topicslide is content now, not the track: the slide renders your list AND derives its own track below it. Move the labels into<!-- _track: Cost to win | Lifetime value | [Payback] -->and delete the list. The bracketed label is the topic this slide is on — bold does nothing, and an override that marks none draws with no column lit.npm run lint:deckflags both shapes. - Putting
_trackon atopic factslide.factis one flat canvas and drops the track, so the directive draws NOTHING there — and it still opts the slide out of derivation, which quietly removes this topic's name from every sibling's scale. Measured: a three-topic section whosefactslide carries_trackleaves its two siblings showing a two-topic track. Drop the directive and the slide goes back to contributing its heading; dropfactif what you wanted was the scale.npm run lint:deckflags it. - Expecting the two-band composition under
color-mode: darkor in a dark-mode export. It flattens, and that is the whole anchor family's behavior rather than this component's quirk: the deck-widedarkcanvas replaces a sovereign anchor's own field, sodividerloses its spectrum rail andtitleandclosinglose--surface-inversein exactly the same way (measured in Chromium; the committeddivider.gallery.dark.pdfshows it). The track still draws and still lights the current topic, so the slide keeps saying where you are — it says it on one flat field instead of across a cut. If you need the cut, that is light mode.
Authoring
<!-- _class: topic -->
`Section 02 · Unit economics`
## Payback
Fourteen months blended, against a nine-month plan.Slots
| Slot | Selector | Required | Description |
|---|---|---|---|
eyebrow | p:first-of-type > code | no | The section this topic sits in, as inline code. Mono caps, top-left. Usually the divider's own label — Section 02 · Unit economics. |
heading | h2 | yes | The topic's name. Write it as a short noun phrase (Payback, Cost to win) — two to four words. It is also the label this topic contributes to every sibling slide's derived track, so a full sentence reads as a headline on this slide and overflows its column on the others. |
claim | h2 + p | no | One sentence of context under the name. In the default it supports the heading; under fact it becomes the slide's display line. |
track | ul.tile-track > li | no | DERIVED, not authored — lib/transformers/topic-track.js builds it from the headings of every topic slide in this section and lights the current one. Override it with the _track DIRECTIVE, never with a list: <!-- _track: Cost to win | Lifetime value | [Payback] --> names the labels outright, pipe-separated, with the topic THIS slide is on in square brackets. Reach for it only where derivation cannot — labels shorter than the headings, or a section whose later topics are not written yet; an overridden slide then contributes no name to its siblings' tracks. Mark nothing and the scale draws with no column lit; mark twice and the first wins. A markdown list on a topic slide is NOT a track — it renders as content and the slide still derives its own, which npm run lint:deck flags. In the GALLERY every sample names its own track, because a gallery slide has no section around it and derivation needs one — the composition is identical either way. At the nine-topic ceiling a column is about a tenth of the slide and its inset halves, so a word the length of Postmortems still fits whole; a single word longer than that BREAKS — the track keeps its equal columns rather than letting one word widen them, which is the lesser of the two failures. Keep ceiling-count sections to short labels, or split the section. |
basis | p:last-of-type > code | no | What the claim rests on — source, period, method. A trailing inline-code paragraph on a foot rule. Belongs with fact, where the slide asserts something; on the default the claim is supporting text and rarely needs provenance. |
Anatomy
┌─────────────────────────────────────────┐
│ [dark background] │
│ SECTION 02 - UNIT ECONOMICS │
│ │
│ │
│ Topic name │
│ One sentence of context. │
│ │
│ ------------------------------------- │
│ Cost to win Lifetime [Payback] │
└─────────────────────────────────────────┘Variant decision rule
- default (no modifier) — The audience needs to know where they are in the section — the topic named, with its siblings as a scale below.
fact— The topic's finding matters more than its name. Drops the track and the cut, promotes the claim to the display line, and adds a provenance line at the foot.
Variants
fact — fact
One flat canvas. The claim becomes the display line, the name a label on a rule, and a mono basis line states what the claim rests on.
<!-- _class: topic fact -->
`Section 02 · Unit economics`
## Payback
Fourteen months blended, against a nine-month plan.
`CAC ÷ monthly gross margin · 14 cohorts · FY26 actuals`Related
- dividerthe boundary BETWEEN sections, rather than a topic inside one
- agendathe deck's sections, listed once, as a contents page
- big-numberthe metric IS the slide, not an anchor before the evidence