diff --git a/assets/sass/heading.scss b/assets/sass/heading.scss
new file mode 100644
index 0000000..31339d1
--- /dev/null
+++ b/assets/sass/heading.scss
@@ -0,0 +1,10 @@
+.heading {
+ .heading-anchor {
+ opacity: 0;
+ transition: opacity 0.2s ease;
+ }
+}
+
+.heading:hover .heading-anchor {
+ opacity: 1;
+}
diff --git a/assets/sass/main.scss b/assets/sass/main.scss
index 29d16de..2325a91 100644
--- a/assets/sass/main.scss
+++ b/assets/sass/main.scss
@@ -6,6 +6,7 @@ $width-max: 60rem;
@import "fonts";
@import "common";
+@import "heading";
@import "image";
@import "header";
diff --git a/layouts/_default/_markup/render-heading.html b/layouts/_default/_markup/render-heading.html
new file mode 100644
index 0000000..4c8a0db
--- /dev/null
+++ b/layouts/_default/_markup/render-heading.html
@@ -0,0 +1,4 @@
+
+ {{ .Text | safeHTML }}
+ #
+
diff --git a/layouts/_default/_markup/render-image.html b/layouts/_default/_markup/render-image.html
new file mode 100644
index 0000000..ade3e86
--- /dev/null
+++ b/layouts/_default/_markup/render-image.html
@@ -0,0 +1,6 @@
+{{ partial "image.html" (dict
+ "path" .Destination
+ "caption" .Text
+ "alt" .Title
+ )
+}}
diff --git a/layouts/_default/_markup/render-link.html b/layouts/_default/_markup/render-link.html
new file mode 100644
index 0000000..9ec19f7
--- /dev/null
+++ b/layouts/_default/_markup/render-link.html
@@ -0,0 +1,9 @@
+
+ {{ .Text | safeHTML }}
+
diff --git a/layouts/partials/image.html b/layouts/partials/image.html
index d7f08dc..c27a2f2 100644
--- a/layouts/partials/image.html
+++ b/layouts/partials/image.html
@@ -1,10 +1,14 @@
{{- $path := .path -}}
-{{- $alt := .alt -}}
{{- $caption := .caption -}}
+{{- $alt := default .caption .alt -}}
{{ if $path }}
-
+
{{ with $caption }}
{{ . }}
{{ end }}
diff --git a/treefmt.nix b/treefmt.nix
index a4ce36e..30beb9d 100755
--- a/treefmt.nix
+++ b/treefmt.nix
@@ -32,5 +32,7 @@
".envrc"
"public/**"
"static/**"
+ # FIXME: https://github.com/NiklasPor/prettier-plugin-go-template/issues/120
+ "layouts/_default/_markup/render-heading.html"
];
}