Structure
Table of Contents On Each Page
Every page on your report automatically includes a table of contents (TOC) on the right-hand side. This TOC is generated from the headers on the page — any section marked with ## will appear as a clickable link, making it easy for readers to jump to the content they need.
Automatic Generation
You don’t need to build the TOC yourself. It updates automatically whenever you add, remove, or rename a ## header on the page.
What Shows Up
By default, only first-level headers (##) appear in the TOC. Subheaders (###, ####) and section labels do not appear, keeping the TOC clean and scannable for readers.
Because the TOC pulls directly from your headers, clear and descriptive header names make a big difference. Aim for short, meaningful labels — for example, “Youth Outcomes” is more useful than “Section 3.” Readers will see these names in the TOC before they scroll to the content.
Columns and Grids
Columns and grids let you place content side by side rather than stacking everything vertically. This is useful for comparing metrics, pairing a chart with a summary, or making dashboards feel more polished.
The template includes several built-in layout options. The examples below show what each looks like and when to use it.
Two Columns
Use a two-column layout when you want to place two pieces of content side by side — such as a pair of stat cards, a chart next to a summary, or two related text blocks.
Wrap your content in a :::: {.two-column-grid} container, with each item inside its own ::: {} block.
Column A
This is the left column. It takes up equal space alongside Column B.
Column B
This is the right column. Both columns resize together on smaller screens and stack vertically on mobile.
Three or More Columns
Use a multi-column layout when you need to display three or more items in a row — such as a set of feature cards or key metrics. The .multi-column-section class creates an evenly spaced grid that wraps items as needed.
Metric A
First item in the grid.
Metric B
Second item in the grid.
Metric C
Third item in the grid.
Stat Card Grids
For displaying a row of key numbers or metrics, use :::: {.stat-cards-grid}. This layout automatically fits as many cards per row as space allows and adjusts on smaller screens.
Total number of program participants.
Percentage who completed the program.
Average participant satisfaction score.
- Two-column grid — best for pairing two related items side by side (e.g., a chart + summary).
- Multi-column section — best for three or more feature cards or content blocks.
- Stat card grid — best for a row of key metrics or numbers that should be scannable at a glance.
All layouts are responsive and will stack vertically on mobile devices.
Spacing
Consistent spacing keeps your report feeling organized and easy to read. The template handles most spacing automatically — headers, cards, and grids all come with built-in margins. However, there are times when you may want to fine-tune the space between elements manually.
Built-In Spacing
Most components in this template — stat cards, feature cards, callouts, and grids — already include appropriate spacing above and below them. In general, you should not need to add extra spacing between these elements. If something looks too cramped or too spread out, it is usually a sign that a header level or container class needs adjusting rather than adding manual space.
General Tips
- Don’t use empty lines or
<br>tags to create space. These are fragile and render inconsistently. Use the margin utility classes instead. - Headers create natural separation. A well-placed
##or###often provides all the spacing you need without any extra classes. - When in doubt, less is more. A clean report with consistent, moderate spacing feels more professional than one with large gaps between sections.