MARKUPDOWN SPECIFICATION

MUD-SPEC
v0.5 Alpha

Every component below shows .mud source beside its HTML output — the same compiler pipeline on every Grav page. Built for humans, agents, and anyone tired of Twig soup.

Contents

- Design tokens (@@@)

- Theme Expo — CSS & presets

- hero

- video

- gallery / carousel

1. Design principles

  • Plain text first — diff-friendly, Git-native, agent-editable.
  • Two block families — presentation (:::) vs execution (++:::). Do not mix semantics.
  • Component-aware — fences map to semantic HTML regions and theme CSS.
  • Deployed realities — Grav discovers .mud via grav-mud-alpha; no .md cosplay required.

2. Block families

  • Design tokens@@@@@@ — page theme name, layout mode, optional CSS variables
  • Layout fences::: type::: — hero, cards, pricing, docs blocks (this page)
  • Plugin fences — same ::: grammar, rendered by addons via onMudFenceRender (Forumz, grav-mud-zine, GetGRAV!, …)
  • NEXT Object Notation++ label::: — structured config (hubs, ports, nested keys)
  • Spec examples::: example — this page: source + live HTML preview

3. Grav frontmatter

Every page is default.mud (or pagename.mud) with YAML frontmatter:

  • format: mud-spec — theme body class + compiler path
  • process.markdown: false — Grav must not re-parse compiled HTML
  • process.twig: true — optional Twig in frontmatter only

See Language for a gentler intro; this page is the full component catalog.

4. Design tokens (@@@)

cmp-tokens

Page-level design context

Opens the .mud-page wrapper with data-mud-layout. Optional motion: on enables scroll reveals on sections (honors prefers-reduced-motion).

.mud source
@@@
name: grav-official
layout: spec-doc
motion: on
@@@

::: hero
mascot: none
eyebrow: Tokens active
title: Layout
accent: spec-doc
lead: The compiler wraps all following fences until the page ends.
:::
HTML output

Tokens active

Layout
spec-doc

The compiler wraps all following fences until the page ends.

Use layout: promo on marketing pages; spec-doc on reference docs like this one.

5. hero

cmp-hero

Promo hero band

Eyebrow, split title + accent, lead (markdown), CTA links. Set mascot: none on light Grav themes.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: hero
mascot: none
eyebrow: Grav MUD (Alpha)
title: Human/AI
accent: Design Language
lead: One `.mud` file. Full landing section. Zero template soup.
cta:
  - [MUD Spec](/spec) primary
  - [Services](/services)
:::
HTML output

Grav MUD (Alpha)

Human/AI
Design Language

One .mud file. Full landing section. Zero template soup.

cmp-hero-fullscreen

Fullscreen visual hero (v0.6)

variant="fullscreen" with background, overlay, align, and animate. Theme renders .hero-media + .hero-scrim + .hero-inner.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: hero {variant="fullscreen"}
background: https://picsum.photos/1920/1080?random=99
overlay: 0.55
overlay-color: #0a0a12
align: center
height: 100dvh
animate: fade-up
mascot: none
eyebrow: FutureVision Labs
title: Build the
accent: vibe
lead: One `.mud` file. Full-screen hero. Zero template guilt.
cta:
  - [Get started](/get-started) primary
  - [See the spec](/spec)
:::
HTML output

FutureVision Labs

Build the
vibe

One .mud file. Full-screen hero. Zero template guilt.

Also supports variant="banner" (~40vh). Alias subtitle:lead:.

cmp-hero-scroll

Scroll-driven hero (Apple-style)

Sticky fullscreen hero while you scroll scroll-length viewports. Copy fades, bg zooms, scrim deepens. Presets fade, zoom, cinematic.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: hero {variant="fullscreen"}
background: https://picsum.photos/1920/1080?random=scroll
overlay: 0.5
overlay-color: #0a0a12
align: center
scroll-hero: cinematic
scroll-length: 1.35
mascot: none
eyebrow: Scroll story
title: Pin the hero
accent: while you scroll
lead: Same vibe as high-end product pages — no GSAP, just sticky + CSS vars.
:::
HTML output

Scroll story

Pin the hero
while you scroll

Same vibe as high-end product pages — no GSAP, just sticky + CSS vars.

Aliases scroll-hero: applecinematic. Disabled when prefers-reduced-motion.

cmp-hero-split

Split hero — media + copy

Image or video left, copy right. media-side: right flips columns.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: hero {variant="split"}
media: https://picsum.photos/960/1080?random=split
media-side: left
mascot: none
eyebrow: Phase C
title: Split
accent: layout
lead: Product shot beside the pitch — stacks on mobile.
cta:
  - [See fullscreen](/spec#cmp-hero-fullscreen) primary
:::
HTML output

Phase C

Split
layout

Product shot beside the pitch — stacks on mobile.

cmp-motion

Section motion presets

Per-fence animate="stagger" or page-level motion: on for default fade-up on cards, quotes, manifesto, etc.

.mud source
@@@
name: demo
layout: promo
motion: on
@@@

::: cards {animate="stagger"}
title: Staggered cards
card:
  title: fade-up
  body: Default when motion is on.
card:
  title: stagger
  body: Explicit on the fence.
:::
HTML output

Staggered cards

fade-up

Default when motion is on.

stagger

Explicit on the fence.

6. quote

cmp-quote

Pull quote

Blockquote with cite and optional footnote.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: quote
quote: "Markdown told you what to say. MUD tells Grav how to show it."
cite: — Team DC, FutureVision Labs
note: PoC / pitch fork. Not an official Grav Core release. Yet.
:::
HTML output
"Markdown told you what to say. MUD tells Grav how to show it."
— Team DC, FutureVision Labs

PoC / pitch fork. Not an official Grav Core release. Yet.

7. cards

cmp-cards

Card grid

Repeat card: blocks with title and body (markdown).

.mud source
@@@
name: grav-official
layout: promo
@@@

::: cards
title: Why fences exist
card:
  title: Declared structure
  body: Sections are named — not guessed from H2 soup.
card:
  title: AI-safe edits
  body: Agents patch `::: hero` blocks without touching Twig.
card:
  title: Real `.mud`
  body: Registered before Grav page scan — not renamed Markdown.
:::
HTML output

Why fences exist

Declared structure

Sections are named — not guessed from H2 soup.

AI-safe edits

Agents patch ::: hero blocks without touching Twig.

Real .mud

Registered before Grav page scan — not renamed Markdown.

8. timeline

cmp-timeline

Roadmap / changelog

event: blocks with date and text.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: timeline
title: Alpha roadmap
event:
  date: Now
  text: Flagship gravmud.site, Services pricing, this MUD-SPEC page.
event:
  date: Next
  text: Admin blueprint, Flex parity, shared parser with Code Designer.
:::
HTML output

Alpha roadmap

  1. Flagship gravmud.site, Services pricing, this MUD-SPEC page.

  2. Admin blueprint, Flex parity, shared parser with Code Designer.

9. compare

cmp-compare

Before / after table

row: blocks with left, right, optional highlight: true.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: compare
title: MUD vs plain Markdown
left: Plain .md
right: Grav MUD (.mud)
row:
  left: Free-form prose only
  right: Declared layout sections
row:
  left: Theme guesses structure
  right: Compiler emits semantic HTML
row:
  left: ".md cosplay"
  right: Real `.mud` extension
  highlight: true
:::
HTML output

MUD vs plain Markdown

Plain .mdGrav MUD (.mud)
Free-form prose onlyDeclared layout sections
Theme guesses structureCompiler emits semantic HTML
".md cosplay"Real .mud extension

10. pricing

cmp-pricing

Agency tier cards

plan: blocks with price, features (list), highlight, and CTA link.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: pricing
title: Grav MUD Services (sample)
plan:
  name: MUD Seed
  price: from $149
  features:
    - Single landing `.mud`
    - Theme wiring
  cta: [Contact](/get-started)
plan:
  name: MUD Studio
  price: from $449
  highlight: true
  features:
    - Multi-page site
    - Spec + Services blocks
  cta: [Contact](/get-started) primary
:::
HTML output

Grav MUD Services (sample)

MUD Seed

from $149

11. code

cmp-code

Documentation code sample

Escaped pre block with optional lang and caption.

.mud source
::: code
title: Minimal page
lang: mud
body: |
  @@@
  name: grav-official
  layout: promo
  @@@

  ::: hero
  title: Hello
  accent: MUD
  :::
caption: Copy into user/pages/…/default.mud and clear Grav cache.
:::
HTML output

Minimal page

mud
@@@
name: grav-official
layout: promo
@@@

::: hero
title: Hello
accent: MUD
:::

Copy into user/pages/…/default.mud and clear Grav cache.

11b. video

Responsive 16:9 embeds — self-hosted files, YouTube, or Vimeo. Use src for native MP4/WebM, youtube / vimeo for IDs, or url for auto-detect.

cmp-video-youtube

YouTube embed

Pass a video ID, short link, or full watch URL. Uses privacy-enhanced youtube-nocookie.com.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: video
title: Grav MUD overview
youtube: dQw4w9WgXcQ
caption: Replace with your show reel, demo walkthrough, or client testimonial.
:::
HTML output

Grav MUD overview

Watch on YouTube

Replace with your show reel, demo walkthrough, or client testimonial.

cmp-video-vimeo

Vimeo embed

Numeric Vimeo ID or full vimeo.com URL.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: video
title: Agency reel
vimeo: 76979871
:::
HTML output

Agency reel

cmp-video-native

Native self-hosted video

Drop MP4/WebM into user/media/ or a page folder. Optional poster image and loop.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: video
title: Product demo
src: /user/media/demo.mp4
poster: /user/themes/grav-mud-site/images/hero-mascot.png
caption: Host on Grav — no third-party player required.
:::
HTML output

Product demo

Host on Grav — no third-party player required.

cmp-video-url

Auto-detect from URL

One url: field — compiler picks YouTube, Vimeo, or native file by pattern.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: video
url: https://www.youtube.com/watch?v=dQw4w9WgXcQ
:::
HTML output
Watch on YouTube

Image grid and featured-work carousel — no Twig, no page builder. List paths with optional captions (src | caption). Absolute paths (/user/pages/…) and external URLs both work.

cmp-gallery

Portfolio gallery

Responsive grid. Add lightbox="true" on the opening fence for click-to-enlarge.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: gallery {columns="3" lightbox="true"}
title: Selected work
- https://picsum.photos/800/600?random=11 | Ink study
- https://picsum.photos/800/600?random=12 | Client commission
- https://picsum.photos/800/600?random=13 | Personal piece
:::
HTML output
cmp-carousel

Featured carousel

Hero reel with prev/next, dots, and optional autoplay (seconds). aspect defaults to 16/9.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: carousel {autoplay="6" aspect="16/9"}
title: Reel
- https://picsum.photos/1280/720?random=21 | Environment concept
- https://picsum.photos/1280/720?random=22 | Character turnaround
- https://picsum.photos/1280/720?random=23 | Cover art WIP
:::
HTML output
cmp-carousel-3d

3D coverflow carousel

Ring on a circle (PLRPOD-style) — slides on a 3D hub, hub rotates. Front arc only for small sets (no cube). variant="3d" (aliases: coverflow, cover).

.mud source
@@@
name: grav-official
layout: promo
@@@

::: carousel {variant="3d" autoplay="7"}
title: Portfolio reel
- https://picsum.photos/900/600?random=31 | Character bust
- https://picsum.photos/900/600?random=32 | Environment matte
- https://picsum.photos/900/600?random=33 | Prop sheet
- https://picsum.photos/900/600?random=34 | Cover art
:::
HTML output

12. callout

cmp-callout

Legacy doc callout

Short-form fence — variant as second token on the opening line.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: callout note
Grav MUD Alpha still supports legacy **callout** fences alongside Design Spec blocks. Variants: note, warn, tip.
:::
HTML output

12b. ticker

Horizontal marquee strip — same energy as Team DC plugin docs on GitHub Pages. Duplicate track for seamless loop; honors prefers-reduced-motion.

cmp-ticker

Scrolling ticker

List items with - bullets. Set speed: (seconds per loop, default 30). Content repeats for seamless scroll.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: ticker
speed: 24
- flat-file json
- board crud admin2
- evvytink parity
- mambers bridge
- optional mud fences
:::
HTML output

Drop one under a hero band on spec pages, plugin docs, or promo landings.

13. Plugin fences (addons)

Core alpha documents portable layout fences on this page — hero, cards, gallery, ticker, embeds, and the rest.

Addon plugins register their own ::: fence types at compile time via onMudFenceRender (same hook as Forumz). They are not part of the alpha spec catalog; each plugin ships its own docs.

AddonFences (examples)Where to read
grav-mud-zinespread, deck, pullquote, masthead, columns, …GravFans sample · Docs/MUD-ZINE-LAYOUT-SPEC.md
forumzforum, forum-thread, …Forumz docs
GetGRAV!getgrav-hero, getgrav-rsvp, …grav-mud-goggrav plugin

Magazine pages use layout: magazine in @@@ plus grav-mud-zine enabled. The ::: flipzine embed lives in alpha (PDF reader) — not the zine layout addon.

cmp-flipzine

FlipZine embed (core alpha)

PDF flip reader — built into grav-mud-alpha. Aliases ::: zine, ::: flipbook (embed only, not magazine spreads).

.mud source
@@@
name: grav-official
layout: promo
@@@

::: flipzine
slug: gwenbot-guide
title: FlipZine reader
caption: Powered by **FlipZine.Live** — PDF in, page-flip out.
height: 480
:::
HTML output

FlipZine reader

Powered by FlipZine.Live — PDF in, page-flip out.

Open full reader →

14. manifesto

cmp-manifesto

Closing pitch block

Title + multiline body: with | and HTML signoff.

.mud source
@@@
name: grav-official
layout: promo
@@@

::: manifesto
title: One paragraph pitch
body: |
  Grav won by staying flat and fast. **Grav MUD** adds a design language layer without becoming a page-builder monolith — content stays text, layouts stay declared, themes stay CSS.
signoff: <strong>Grav MUD (Alpha)</strong> · <a href="/get-started">Get started</a>
:::
HTML output

One paragraph pitch

Grav won by staying flat and fast. Grav MUD adds a design language layer without becoming a page-builder monolith — content stays text, layouts stay declared, themes stay CSS.

Grav MUD (Alpha) · Get started

15. The ::: example fence

This entire reference page is built from ::: example blocks. Each entry declares:

  • title — human label
  • id — anchor for the table of contents
  • desc — short explanation
  • body: | — the .mud snippet to compile for the preview panel
  • caption — optional footnote

The compiler recursively runs body through the same pipeline as a full page (auto-wrapping @@@ grav-official when omitted).

16. Version

  • v0.5 Alpha — Grav flagship site, example fence, MUD-SPEC page, video embeds (native + YouTube/Vimeo), gallery + carousel, ticker, halved Services pricing
  • v0.3 — Design Spec fences, @@@ tokens, grav-mud-site theme
  • Code Designer MUD-SPEC v0.1 — TS parser + export pipeline reference

Ship it

You wanted comprehensive. You got source | output on every fence that matters for gravmud.site. Paste a block into your .mud, clear cache, done.

Questions? Get Started · Grav MUD Services

Powered by Grav MUD Alpha v0.7.2 · MarkUpDown Design Spec (.mud) · NEXT Object Notation