Slides & theming
Every doc is a deck — one slide per heading, four layout markers — and six built-in themes that retint everything, SVG included.
Slides — one heading, one slide
Any document renders as a deck with avo slides. Each top-level heading
(#/##) starts a new slide and is its title. Everything until the next
heading — prose and every block — stays on that slide, so a slide can hold
several blocks. (###+ headings stay in the slide body.)
# Why now
A sentence of context, then any blocks under this heading.
```drivers
items:
- { title: Slow, body: "p95 hit 2.4s.", icon: clock, accent: amber }
```
# The fix
Next heading → next slide. This one stacks two blocks.A normal Avodado doc (sections under ## headings) already presents cleanly
— no special markup needed. To author for slides, write one ## heading
per slide and keep each to one idea: a heading plus one strong visual
(a diagram, drivers, stats, pyramid, quadrant, timeline) reads
better than dense prose.
Layout markers
Vertical alignment is automatic — light slides center; heavier slides top-align. Four heading markers override it (the marker is stripped from the displayed title):
| Marker | Effect |
|---|---|
## Title {top} | Force top alignment |
## Title {center} | Force centering |
## Title {bottom} | Force bottom alignment |
## Title {split} | Consulting layout — prose left, exhibit right |
The mechanics
- The
metablock is the cover slide; every non-cover slide gets a footer (deck title · page number). - Long sections paginate automatically — each slide has a content budget weighted by block item counts, and a hero-scale block (a big diagram, a many-card grid) splits onto its own slide with the same section title.
- A doc with no headings at all falls back to one slide per block.
avo build— andavo studio's Site mode — emit both views of every doc: the page plus a companion deck at<slug>.slides.html, linked by a Doc | Slides toggle on each page — so a doc is a deck with no extra command. Studio's Present mode shows the current doc's deck without even saving.
Consulting-style decks
For an executive deck, hold every slide to assertion → exhibit → takeaway:
- Action titles. Each
##is a full-sentence assertion the slide proves ("Checkout latency is costing us conversions"), never a topic label. {split}layout. 1–3 short punchy paragraphs left, exactly one strong block right — the block is the evidence for the title's claim.- Open each part with a
divider(kicker: PART 2, an assertion as the title) — a clean full-band break slide. - The money slide is a
bignumber— when one metric carries the whole argument, give it its own{split}slide. - Close with
takeaways— the 2–4 things the room must remember.
The six built-in themes
Pass a theme to the renderer or set one with avo theme:
| Theme | Look |
|---|---|
textbook | Warm classic (default) — cream paper, deep academic navy + terracotta, serif display & body, large headings |
minimal | Clean modern — white, near-black ink, single blue accent, geometric sans |
soft | Modern light — indigo accent, rounded surfaces, sans display |
dark | Full dark mode |
teal | Teal + amber highlight |
slate | Slate sans — Helvetica display, teal highlight |
Themes override CSS variables on the .docskin root, so SVG diagrams
retint along with the prose — no per-block code changes, no SVG
regeneration.
Custom themes
A theme file picks a base theme and overrides any friendly color (primary,
accent, ink, paper, …) or font slot (display, body, mono):
avo theme new sunset # scaffold a blank theme to fill in
avo theme install ./my.theme.json # add it globally (~/.avodado/themes)
avo theme use sunset # activate for the project
avo theme use sunset --global # …or as the default for every projectavo theme lists global + project themes together. No rebuild — just
re-render. Full command reference: CLI · Config.
Avodado Studio
The one local surface — Edit visually, browse the built Site with live reload, Present the current doc as slides — while the files on disk stay the source of truth.
Author with AI
The authoring skill, four editor adapters, a copy-paste system prompt, and an MCP server — same files, many editors.