Le contenu que vous recherchez n'existe pas.
@@ -11,9 +17,19 @@diff --git a/config/_default/related.yaml b/config/_default/related.yaml
new file mode 100644
index 00000000..9195cfdf
--- /dev/null
+++ b/config/_default/related.yaml
@@ -0,0 +1,24 @@
+includeNewer: true
+threshold: 10
+toLower: true
+indices:
+ - name: oeuvres
+ weight: 120
+ - name: franchises
+ weight: 110
+ - name: tags
+ cardinalityThreshold: 5
+ weight: 100
+ - name: keywords
+ cardinalityThreshold: 5
+ weight: 90
+ - name: genres
+ weight: 80
+ - name: personnages_de_fiction
+ weight: 70
+ - name: personnalites
+ weight: 60
+ - name: animaux
+ weight: 20
+ - name: entreprises
+ weight: 20
diff --git a/themes/2026/assets/css/content.css b/themes/2026/assets/css/content.css
index eb896243..2fc40174 100644
--- a/themes/2026/assets/css/content.css
+++ b/themes/2026/assets/css/content.css
@@ -131,7 +131,7 @@ body > main:has(> article:first-child):has(> aside) > article:first-child {
line-height: 1.85;
}
-body > main:has(> article:first-child):has(> aside) > article:first-child > :not(figure):not(table):not(pre):not(.highlight):not(section.article-books) {
+body > main:has(> article:first-child):has(> aside) > article:first-child > :not(figure):not(table):not(pre):not(.highlight):not(section.article-books):not(section.article-related) {
max-width: 74ch;
}
@@ -303,6 +303,146 @@ main > article li + li {
margin-top: 0.35rem;
}
+main > article > section.article-related {
+ margin-top: var(--space-6);
+ border-top: 1px solid var(--color-border);
+ padding-top: var(--space-4);
+}
+
+main > article > section.article-related > header {
+ margin-top: 0;
+}
+
+main > article > section.article-related > header > h2 {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 0;
+ font-size: 1rem;
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+}
+
+main > article > section.article-related > header > h2::before {
+ display: none;
+}
+
+main > article > section.article-related > nav.articles-list {
+ --articles-related-flow-gap: 0.72rem;
+ margin-top: var(--space-3);
+}
+
+main > article > section.article-related > nav.articles-list > ol {
+ padding-left: 0;
+ grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
+ gap: var(--space-4);
+}
+
+main > article > section.article-related > nav.articles-list > ol > li,
+main > article > section.article-related > nav.articles-list > ol > li + li {
+ margin-top: 0;
+}
+
+main > article > section.article-related > nav.articles-list article {
+ border-top: 0;
+ padding-top: 0;
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header {
+ margin-top: 0;
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header > a {
+ display: block;
+ color: inherit;
+ text-decoration: none;
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header > a > figure {
+ margin: 0;
+ min-height: 0;
+ aspect-ratio: 340 / 191;
+ overflow: hidden;
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header > a > figure img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ display: block;
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header > p {
+ margin-top: var(--articles-related-flow-gap);
+ font-size: 0.78rem;
+ letter-spacing: 0.05em;
+ text-transform: uppercase;
+ color: var(--color-text-muted);
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header > p > a {
+ color: inherit;
+ text-decoration: none;
+ font-family: var(--font-heading);
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header > p > a:is(:hover, :focus-visible) {
+ color: var(--color-link-hover);
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header > h3 {
+ margin-top: var(--articles-related-flow-gap);
+ margin-bottom: 0;
+ padding-top: 0;
+ position: static;
+ font-size: clamp(1rem, 1.5vw, 1.12rem);
+ line-height: 1.15;
+ text-transform: none;
+ letter-spacing: 0.01em;
+ color: var(--color-heading);
+ font-weight: 400;
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header > h3::before {
+ display: none;
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header > h3 > a {
+ color: var(--color-heading);
+ text-decoration: none;
+}
+
+main > article > section.article-related > nav.articles-list > ol > li article > header:has(> p) > h3 {
+ margin-top: calc(var(--articles-related-flow-gap) * 0.4);
+}
+
+main > article > section.article-related > nav.articles-list article > p:nth-of-type(1) {
+ display: none;
+}
+
+main > article > section.article-related > nav.articles-list article > p:last-child {
+ margin-top: var(--articles-related-flow-gap);
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--space-1);
+ font-size: 0.76rem;
+ color: var(--color-text-muted);
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+ font-family: var(--font-heading);
+}
+
+main > article > section.article-related > nav.articles-list article > p:last-child > a {
+ color: inherit;
+ text-decoration: underline;
+ text-decoration-thickness: 1px;
+ text-underline-offset: 0.15em;
+}
+
+main > article > section.article-related > nav.articles-list article > p:last-child > a:is(:hover, :focus-visible) {
+ color: inherit;
+ filter: brightness(1.2);
+}
+
main > article > footer.article-footer {
margin-top: var(--space-6);
border-top: 1px solid var(--color-border);
diff --git a/themes/2026/layouts/404.html b/themes/2026/layouts/404.html
index 92217af6..15c83d0c 100644
--- a/themes/2026/layouts/404.html
+++ b/themes/2026/layouts/404.html
@@ -1,9 +1,15 @@
{{ define "main" }}
-{{- $recentPages := first 6 (site.RegularPages.ByDate.Reverse) -}}
- Le contenu que vous recherchez n'existe pas.Page introuvable
-Derniers articles
Derniers articles
+ {{ .Title }}
+ {{ partialCached "header-brand.html" $page.Site $page.Site.Title ($page.Site.Params.logo | default "logo-large.png") }}
+ {{ $title }}
{{- if $hasMetaBlock -}}
Attribution: {{- if index $attribution "isURL" -}}{{ partial "render/link.html" (dict "Destination" (index $attribution "url") "Page" $ "Text" (index $attribution "label")) }}{{- else -}}{{ . | markdownify }}{{- end -}}
+Attribution: {{- if index $attribution "isURL" -}}{{ partial "render/link.html" (dict "Destination" (index $attribution "url") "Page" $page "Text" (index $attribution "label")) }}{{- else -}}{{ . | markdownify }}{{- end -}}
{{- end -}} {{- with $coverPrompt -}}