ui: Headings kleiner + Library als Archiv-Zwilling (Sidebar weg)

- section-title 2.6→1.9rem max, 800→700; single-header h1 3→2.2rem max, 800→700;
  single-summary 1.4→1.2rem. Ruhiger, redaktioneller, site-weit.
- Library raus aus der zweispaltigen Sonderform: Übersicht = .atlas (gruppiert,
  wie Archiv-Root), Eintrag = .single (wie Essay) mit Quellen + Fuss
  (Gruppe · weitere Einträge · bearbeiten). library-nav-Partial entfernt.
- Voll CI-konform: Archiv und Library teilen jetzt dasselbe Gerüst.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 23:47:53 +02:00
parent ef024921ab
commit d5f35bb9f8
4 changed files with 75 additions and 145 deletions
+19 -40
View File
@@ -719,36 +719,15 @@ a.byline-author:hover, a.journal-author:hover { color: var(--accent); }
.dialog-hint { font-size: var(--font-size-small); color: var(--color-text-muted); align-self: center; opacity: 0.7; }
.dialog-spacer { flex: 1; }
/* ── Library/Wiki-Bereich: zentrierter Section-Header (wie Archiv) darüber,
zweispaltige Fläche (Seitenleiste + Inhalt) darunter. ── */
.wiki { display: grid; grid-template-columns: 200px 1fr; gap: 2.6em; align-items: start; }
@media (max-width: 760px) { .wiki { grid-template-columns: 1fr; gap: 1.4em; } .wiki-side { position: static; } }
.wiki-side { position: sticky; top: 1em; align-self: start; }
.wiki-nav { display: flex; flex-direction: column; gap: 0.35em; font-size: var(--font-size-small); }
.wiki-nav-home { text-decoration: none; color: var(--color-text-primary); font-weight: 600; }
.wiki-nav-home:hover { color: var(--accent); }
.wiki-nav-home.is-current { color: var(--accent); }
.wiki-filter { width: 100%; padding: 0.4em 0.7em; margin: 0.3em 0 0.4em; font: inherit; font-size: var(--font-size-small);
border: 1px solid var(--color-border); border-radius: 8px; background: var(--color-bg-primary); }
.wiki-filter:focus { outline: none; border-color: var(--accent); }
.wiki-nav-title { text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.7rem; color: var(--color-text-muted); margin: 0.8em 0 0.25em; }
.wiki-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.1em; }
.wiki-nav li a { display: block; text-decoration: none; color: var(--color-text-muted);
padding: 0.18em 0 0.18em 0.7em; border-left: 2px solid transparent; }
.wiki-nav li a:hover { color: var(--accent); }
.wiki-nav li a.is-current { color: var(--color-text-primary); font-weight: 600; border-left-color: var(--accent); }
.wiki-page { min-width: 0; }
.wiki-index { margin-top: var(--spacing-md); }
.wiki-group { margin-bottom: var(--spacing-md); }
.wiki-group h2 { font-family: var(--font-family-serif); font-size: 1.1rem; margin: 0 0 0.4em; }
.wiki-group ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.4em; }
.wiki-group li a { font-weight: 600; text-decoration: none; }
.wiki-group li a:hover { color: var(--accent); }
.wiki-foot { margin-top: var(--spacing-lg); padding-top: var(--spacing-sm); border-top: 1px solid var(--color-border);
display: flex; gap: 1.2em; flex-wrap: wrap; font-size: var(--font-size-small); color: var(--color-text-muted); }
.wiki-foot a { color: var(--color-text-muted); text-decoration: none; }
.wiki-foot a:hover { color: var(--accent); }
/* ── Library: gleiches Gerüst wie Archiv (Übersicht = .atlas, Eintrag = .single).
Eintrags-Fuss: Gruppe + weitere Einträge + bearbeiten-Link. ── */
.entry-foot { margin-top: var(--spacing-lg); padding-top: var(--spacing-sm); border-top: 1px solid var(--color-border);
display: flex; gap: 0.6em 1.2em; flex-wrap: wrap; align-items: baseline; font-size: var(--font-size-small); color: var(--color-text-muted); }
.entry-foot .entry-more { flex: 1; min-width: 14em; }
.entry-foot .entry-more a { color: var(--accent); text-decoration: none; }
.entry-foot .entry-more a:hover { text-decoration: underline; text-underline-offset: 0.2em; }
.entry-foot a { color: var(--color-text-muted); text-decoration: none; }
.entry-foot a:hover { color: var(--accent); }
/* ── Software-Landing: Werkzeuge getrennt von Texten ── */
.software-h { font-family: var(--font-family-serif); margin: var(--spacing-md) 0 var(--spacing-sm); }
@@ -1124,10 +1103,10 @@ a.byline-author:hover, a.journal-author:hover { color: var(--accent); }
}
.section-title {
font-family: var(--font-family-serif);
font-size: clamp(1.9rem, 4vw, 2.6rem);
font-weight: 800;
letter-spacing: -0.026em;
line-height: 1.05;
font-size: clamp(1.5rem, 2.6vw, 1.9rem);
font-weight: 700;
letter-spacing: -0.012em;
line-height: 1.1;
margin: 0 0 0.4rem;
}
.section-description {
@@ -1243,17 +1222,17 @@ a.byline-author:hover, a.journal-author:hover { color: var(--accent); }
}
.single-header h1 {
font-family: var(--font-family-serif);
font-size: clamp(2.1rem, 4.6vw, 3rem);
font-weight: 800;
letter-spacing: -0.028em;
line-height: 1.05;
font-size: clamp(1.7rem, 3vw, 2.2rem);
font-weight: 700;
letter-spacing: -0.015em;
line-height: 1.12;
margin: 0 0 var(--spacing-sm);
}
.single-summary {
font-family: var(--font-family-serif);
font-style: normal;
font-size: 1.4rem;
line-height: 1.4;
font-size: 1.2rem;
line-height: 1.45;
color: var(--color-text-primary);
margin: 0 0 var(--spacing-md); /* breathing room before byline */
max-width: 55ch;
-41
View File
@@ -1,41 +0,0 @@
{{- /* Library-Seitenleiste: alle Library-Seiten nach `group` gruppiert, mit Filter.
Seiten ohne `group` landen unter „Allgemein“. */ -}}
{{- $cur := .RelPermalink -}}
{{- $pages := where site.RegularPages "Section" "library" -}}
{{- $groups := dict -}}
{{- range $pages -}}
{{- $g := .Params.group | default "Allgemein" -}}
{{- $existing := index $groups $g | default slice -}}
{{- $groups = merge $groups (dict $g ($existing | append .)) -}}
{{- end -}}
<nav class="wiki-nav" aria-label="Wiki-Navigation">
<a class="wiki-nav-home{{ if .IsSection }} is-current{{ end }}" href="/wiki/">Übersicht</a>
<input class="wiki-filter" type="search" placeholder="filtern…" aria-label="Wiki filtern" autocomplete="off" />
{{- range $g, $ps := $groups }}
<div class="wiki-nav-group">
<div class="wiki-nav-title">{{ $g }}</div>
<ul>
{{- range sort $ps "Title" }}
<li><a href="{{ .RelPermalink }}"{{ if eq .RelPermalink $cur }} class="is-current" aria-current="page"{{ end }}>{{ .LinkTitle }}</a></li>
{{- end }}
</ul>
</div>
{{- end }}
</nav>
<script>
(function () {
if (window.__wikiFilter) return; window.__wikiFilter = 1;
var inp = document.querySelector('.wiki-filter'); if (!inp) return;
inp.addEventListener('input', function () {
var q = inp.value.trim().toLowerCase();
document.querySelectorAll('.wiki-nav-group').forEach(function (g) {
var any = false;
g.querySelectorAll('li').forEach(function (li) {
var hit = li.textContent.toLowerCase().indexOf(q) > -1;
li.style.display = hit ? '' : 'none'; if (hit) any = true;
});
g.style.display = any ? '' : 'none';
});
});
})();
</script>
+7 -17
View File
@@ -1,13 +1,5 @@
{{ define "main" }}
<header class="section-header">
<h1 class="section-title">{{ .Title }}</h1>
</header>
<div class="wiki">
<aside class="wiki-side">{{ partial "library-nav.html" . }}</aside>
<div class="wiki-page">
<div class="single-content">{{ .Content }}</div>
{{ .Content }}
{{ $pages := where site.RegularPages "Section" "library" }}
{{ $groups := dict }}
@@ -18,24 +10,22 @@
{{ end }}
{{ if $pages }}
<div class="wiki-index">
<section class="atlas">
{{ range $g, $ps := $groups }}
<section class="wiki-group">
<article class="atlas-section">
<h2>{{ $g }}</h2>
<ul>
<ul class="atlas-list">
{{ range sort $ps "Title" }}
<li>
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{ with .Params.summary }}<span class="text-muted"> — {{ . }}</span>{{ end }}
{{ with .Params.summary }}<span class="list-meta text-muted"> — {{ . }}</span>{{ end }}
</li>
{{ end }}
</ul>
</section>
</article>
{{ end }}
</div>
</section>
{{ else }}
<p class="text-muted"><em>Noch keine Einträge — der erste entsteht im Redaktions-Editor.</em></p>
{{ end }}
</div>
</div>
{{ end }}
+17 -15
View File
@@ -1,14 +1,10 @@
{{ define "main" }}
<header class="section-header">
<p class="section-rubric">{{ with .Params.group }}{{ . }}{{ else }}Library{{ end }}</p>
<h1 class="section-title">{{ .Title }}</h1>
{{ with .Params.summary }}<p class="section-description">{{ . }}</p>{{ end }}
<article class="single">
<header class="single-header">
<h1>{{ .Title }}</h1>
{{ with .Params.summary }}<p class="single-summary">{{ . }}</p>{{ end }}
</header>
<div class="wiki">
<aside class="wiki-side">{{ partial "library-nav.html" . }}</aside>
<div class="wiki-page">
{{ $hasToC := .Params.toc | default false }}
{{ $headers := findRE "<h[2-6]" .Content }}
{{ if and $hasToC (ge (len $headers) 2) }}
@@ -18,16 +14,22 @@
</nav>
{{ end }}
<div class="single-content wiki-content">
<div class="single-content">
{{ .Content }}
</div>
<div class="wiki-foot">
{{/* Fuss: Gruppe + weitere Einträge derselben Gruppe + bearbeiten. */}}
{{ $g := .Params.group | default "Allgemein" }}
{{ $siblings := where (where site.RegularPages "Section" "library") "Params.group" (.Params.group) }}
<div class="entry-foot">
<span class="entry-more">
<strong>{{ $g }}</strong>
{{ $others := slice }}
{{ range $siblings }}{{ if ne .RelPermalink $.RelPermalink }}{{ $others = $others | append . }}{{ end }}{{ end }}
{{ with $others }} · {{ range $i, $p := . }}{{ if $i }} · {{ end }}<a href="{{ $p.RelPermalink }}">{{ $p.LinkTitle }}</a>{{ end }}{{ end }}
</span>
{{ if .Lastmod }}<span>Zuletzt bearbeitet am {{ .Lastmod.Format "02.01.2006" }}</span>{{ end }}
{{ with .File }}
<a href="{{ site.Params.repoURL }}/_edit/branch/main/content/{{ .Path }}" rel="nofollow">bearbeiten ↗</a>
{{ end }}
</div>
</div>
{{ with .File }}<a href="{{ site.Params.repoURL }}/_edit/branch/main/content/{{ .Path }}" rel="nofollow">bearbeiten ↗</a>{{ end }}
</div>
</article>
{{ end }}