Top-level heading (h1)
This is the first paragraph after a top-level heading. It exists to show what default body copy looks like next to the hero band above. The prose column is constrained to ~65ch so long lines stay readable.
A second paragraph follows. Inline emphasis: italic text, bold text,
bold-italic, ~~strikethrough~~, and a span of inline code to check
how monospace glyphs sit inside running prose.
Section heading (h2)
Section headings should clearly separate blocks of content. The next paragraph contains a regular internal link and an external one to Spamhaus. Bare URLs are auto-linkified by the goldmark Linkify extension — for example, https://docs.spamhaus.com/ should render as a clickable link without explicit Markdown syntax.
Subsection heading (h3)
A subsection sits under a section. Body copy here is identical to the rest of the page — line-height ~1.65, navy text, sans-serif. Use h3 sparingly; deep nesting of headings tends to confuse readers.
Sub-subsection heading (h4)
We do not currently style h4 explicitly. If markdown authors reach for it, this is what they get — likely the browser default sizing. If this looks wrong we can add a rule.
Lists
Unordered list
- First item — short and to the point.
- Second item — slightly longer so the wrap behaviour is visible.
- Third item with a nested list:
- Nested A
- Nested B with even deeper nesting:
- Deeply nested 1
- Deeply nested 2
- Nested C
- Fourth top-level item, after the nested block, to confirm vertical rhythm resumes correctly.
Ordered list
- Sign in to your account at https://account.spamhaus.com/.
- Open Security & sign-in from the dashboard.
- Choose one of:
- Authenticator app (TOTP)
- Hardware security key (WebAuthn)
- Recovery codes
- Confirm and save your changes.
Mixed task-style list
- An unchecked task (rendered by goldmark as a literal
[ ]unless the TaskList extension is enabled — currently it is not). - A checked task (likewise).
Blockquote
Privacy is not a product feature. It is a baseline obligation we owe to every account holder, and a constraint that shapes every decision we make about data retention, telemetry, and third-party integrations.
— paraphrased from the Spamhaus engineering handbook.
A nested blockquote, for completeness:
Outer level.
Inner level — quoting someone else inside a quote.
Code
Inline code: curl -X POST https://api.spamhaus.com/v1/auth/token.
Fenced code block (no language hint):
GET /api/v1/oauth2/userinfo HTTP/1.1
Host: account.spamhaus.com
Authorization: Bearer <access_token>
Fenced code block with a language hint (we don't ship syntax highlighting, but the language tag should not break rendering):
#!/usr/bin/env bash
set -euo pipefail
TOKEN=$(curl -fsS \
-d 'grant_type=client_credentials' \
-u "$CLIENT_ID:$CLIENT_SECRET" \
https://account.spamhaus.com/api/v1/oauth2/token \
| jq -r .access_token)
echo "$TOKEN"
Indented code (legacy style, four-space indent):
function ping() {
return fetch('/api/v1/ping').then(r => r.json());
}
Tables
Tables are enabled via the goldmark Table extension. They are not styled by
the current .sh-prose rules, so this is the place to decide what we want.
| Column A | Column B | Column C |
|---|---|---|
help |
Help & support | /ui/page/help |
privacy |
Privacy policy | /ui/page/privacy |
terms |
Terms of service | /ui/page/terms |
Right-aligned numerics:
| Metric | Count |
|---|---|
| Active sessions | 142 |
| Pending invitations | 3 |
| Trusted devices total | 1,287 |
Horizontal rule
Section breaks can be expressed with --- on their own line:
The rule above should render as a thin divider with vertical breathing room.
Inline elements grab-bag
A keyboard hint: press Cmd + K to open the search bar.
(Raw HTML inside markdown is escaped by default in our renderer — <kbd>
will render as literal text, not as a styled key. That is intentional.)
A footnote-style reference[^1] is similarly not enabled — it would appear as literal text unless we turn on the goldmark Footnote extension.
[^1]: Footnote bodies, when enabled, sit at the bottom of the document.
Long-paragraph stress test
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quis lectus arcu. Suspendisse potenti. In hac habitasse platea dictumst. Praesent in ipsum eu nisi tristique sodales. Ut sed sapien volutpat, congue lectus eget, sodales nibh. Sed ultrices, urna eget volutpat tristique, mauris quam lacinia mauris, ut malesuada quam dolor a nibh. Vivamus eu accumsan sapien, non viverra mauris. Mauris faucibus eros et lacus convallis, vitae lobortis nisl tincidunt. Cras sed dapibus est. Phasellus sodales tortor a sapien faucibus, vel cursus risus tincidunt. Etiam vehicula consectetur lectus, eu aliquet enim porttitor sed. Aenean nec finibus tellus.
Contact
Data-protection enquiries: [email protected].