Blog
Writing a post
This is a demo post, not a real one. It exists so the team can see what the blog handles and how to write for it.
Every post is a single Markdown file in the repository. Push it and the site rebuilds.

Plain writing
Paragraphs are paragraphs. Bold works, and so do links, which pick up the site's red. A blank line starts a new paragraph.
Lists are bullet lists
A bold lead-in, followed by the rest of the point
Nested lists work too
Sub-headings are h3
Math is written between dollar signs. Inline, the loop invariant
And something with a fraction and a sum, to check the type sits well against Formular:
The glyph heading is a heading with a marker
Write ### Heading {glyphs} and it becomes the row with the three shapes.
Code, charts and embeds
Fenced code with the verus language gets the highlighted card:
fn max(a: u64, b: u64) -> (r: u64)
ensures r >= a, r >= b, r == a || r == b,
{
if a >= b { a } else { b }
}
A chart is one line, {% chart "part3-fig1" %}, and it comes with the mobile card:
Raw HTML passes straight through, so anything that needs a custom embed can have one. This is a plain HTML block:
Sizing figures and embeds
An image on its own line sits in the text column at its natural width, capped to the column:
For control over width and a caption, use the figure shortcode. Widths are column (the text column), wide (1200px) and full (edge to edge):

Embeds take an explicit height and a width, which is what an animated dashboard needs. Same-origin charts still auto-fit; anything hosted elsewhere keeps the height you give it. On phones an embed becomes a tap-to-open card by default, or set mobile: "inline" to keep it in the page:
A canvas or any script-driven piece can be written straight into the file as HTML, sized by its own attributes:
Sections
A line with three dashes starts a new section, which is the larger gap you see above this heading.


