Alle L2-Diagramme und aktualisierte Plates/Teil-Trenner als JPG Q90 einbetten, TOC-Setext-Fallen (Bild+---) beheben und PDF mit neuem Cover neu bauen.
7.2 KiB
Design System — Deep Signal v2
Buch: Agentenbasierte KI-unterstützte Softwareentwicklung
Autor: Martin Richardt
Version: 2.0 (2026-07)
Geltungsbereich: Print-PDF (Pandoc → LuaLaTeX), Konzept-Plates, Mermaid-Diagramme
Referenz-Lesbarkeit: Schwesterprojekt ki-hinterm-vorhang (Leading, left-bar boxes, geometry)
Dieses Dokument ist die kanonische Spezifikation und beschreibt den tatsächlichen Build (just pdf).
Kurzreferenz Diagramme: ../bilder/STYLE.md.
Abbildungskatalog: ../bilder/ABBILDUNGEN.md.
1. Konzept
Positionierung
Moderne Tech-Fachbuch-Ästhetik 2025/26, markengebunden an das Cover:
- Tiefes Navy, Electric Blue, gedämpftes Cyan/Teal, warmes Amber
- Lesbarkeit vor Maximaldichte (Leading ~120 %, Ränder ~20 mm)
- Typografie als zentrales Gestaltungselement
- Intentionaler White Space (Rhythmus, kein leerer Himmel)
Prinzipien
- One Palette, two surfaces — Paper (Fließtext) + Deep Panel (Hero-Diagramme)
- Density by rhythm — straffen ohne quetschen; Leading ≥ 1.18
- Diagrams earn their ink — ≤ 6 Primär-Labels, eine Fokusfarbe
- No dual aesthetics — kein Default-Mermaid-Pastell neben cinematic Plates
- Print-first — Kontrast und Graustufen-Lesbarkeit
- Hierarchie ≠ Alarm — Rot nur in Pitfall-Callouts, nie in H2/H3
Mantras
- Navy carries structure · Cyan carries data · Amber carries attention · Paper carries text
- L1 dark cinematic · L2 light signal · same tokens · max 6 labels
2. Typografie
Familien (Hybrid Deep Signal v2)
| Rolle | Font | Quelle |
|---|---|---|
| Body | Charter | System + DejaVu-Serif-Fallback |
| UI / Heads | IBM Plex Sans | build/fonts/IBMPlexSans-*.otf (Fallback DejaVu Sans) |
| Code | IBM Plex Mono | build/fonts/IBMPlexMono-*.otf (Fallback DejaVu Sans Mono) |
| Unicode | Arial Unicode MS / DejaVu Sans | luaotfload / newunicodechar |
Implementierung: pdf/templates/preamble.tex
Skala (A4, 11 pt Klasse)
| Element | Größe | Leading / Farbe |
|---|---|---|
| Body | 11 pt Charter | 1.20 (\setstretch{1.20}), Ink #1A1F2E |
| Chapter | 22/26 pt Plex Sans Bold | BuchNavy |
| Section H2 | 13.5/16 pt Plex Sans Bold | BuchNavy |
| Subsection H3 | 11.5/14 pt Plex Sans Bold | Ink (nicht Rot) |
| H4 | 10.5/13 pt Plex Sans | Ink |
| Caption | small sf | InkMuted |
| Running head / page | 8.5 pt Plex Sans | muted / Amber-Seitenzahl |
| Code | 8.3/9.6 pt Plex Mono | 1.12×, Electric left bar |
Absatzmodell
parindent = 1.15em
parskip ≈ 0
itemsep ≈ 0.12em
Kein Blog-parskip-Layout.
Listen: Keine trailing double spaces an Zeilenenden (Markdown-Hardbreaks → LaTeX \\ am \item und damit doppelte Listenabstände). scripts/assemble_book.py strippt EOL-Whitespace beim Assemblieren.
3. Farbe (Interior Tokens v2)
ink #1A1F2E Fließtext AAA
ink-muted #5B6475 Captions, running head
navy-deep #0A1628 L1-Flächen
navy #0B1F3A Heads, TOC, Struktur
electric #2F6BFF Chapter-Rule, Code-Bar, Fokus
cyan #0E7490 Body-Chrome / Labels (gedämpft)
cyan-bright #00B4D8 nur L1-Plates + Mermaid auf dunklem BG
amber #B8860B Seitenzahl, Quote-Akzent
danger #9B2C2C nur Callout Pitfall
success #166534 nur Callout Practice
code-bg #F4F6F9
code-border #D0D7E2
rule #C5CDD8 headsepline
link #1E4D8C Links AAA
paper-soft #F7F9FC Box-Fills / L2
LaTeX: pdf/styles/colors.tex
SCSS-Äquivalent
:root {
--ink: #1A1F2E;
--ink-muted: #5B6475;
--navy: #0B1F3A;
--navy-deep: #0A1628;
--electric: #2F6BFF;
--cyan: #0E7490;
--cyan-bright: #00B4D8;
--amber: #B8860B;
--danger: #9B2C2C;
--success: #166534;
--code-bg: #F4F6F9;
--rule: #C5CDD8;
--link: #1E4D8C;
--paper-soft: #F7F9FC;
}
Code (Soft IDE)
| Token | Farbe |
|---|---|
| Background | #F4F6F9 |
| Left bar | 2.4 pt Electric |
| Text | Ink |
Callouts
Nur left bar (3.2–3.5 pt) + soft fill: Analogie (Cyan) · Practice (Green) · Pitfall (Danger) · Leitsatz (Amber) · Info (Slate).
Intro/Summary/Vertiefung/Info-Boxen: gleiches left-bar-Muster, Titel einmal als tcolorbox-Argument (boxes.lua).
4. Layout
Type Area (A4, oneside) — geometry
hmargin 20mm · top 18mm · bottom 20mm
headsep 6mm · footskip 12mm
Kein widersprüchliches KOMA-DIV mehr (v1: DIV=12 im Template vs. DIV=13 in Metadata).
CPL-Ziel
Pragmatisch ~85–100 Zeichen/Zeile auf A4. Striktes 55–70 wäre unnötig seitenintensiv.
Vertikaler Rhythmus
H2: before ~1.15·bs, after ~0.4·bs
Figures/Callouts/Code: ~0.5–0.7em
Max figure height (inline): 0.40·textheight
Figure width: 0.92·linewidth
Float placement: htbp
Pipe-table column widths: relative `---` lengths (Pandoc); rebalance with
`python3 scripts/rebalance_table_widths.py --write`
Chapter Opener
- Accent rule Electric 1.4 pt
- Titel Plex Bold Navy (Manuskript enthält bereits „Kapitel n:“)
- Optionaler Subtitle italic muted
- Erste Zeile ohne Einzug (KOMA)
Running heads
Hairline RuleLine · Kapiteltitel muted · Seitenzahl Amber
5. Diagramme (Kurz)
| Ebene | Name | Surface |
|---|---|---|
| L1 | Deep Plate | Navy BG, landscape, cinematic; CyanBright ok |
| L2 | Signal Diagram | Hell #F7F9FC, Electric strokes |
Details: ../bilder/STYLE.md.
6. Pipeline-Mapping
Kanonisch: Just + Pandoc + LuaLaTeX → dist/agentenbasierte-ki-se.pdf.
| Spec | Datei |
|---|---|
| Farben v2 | pdf/styles/colors.tex |
| Typo, Layout, Callouts | pdf/templates/preamble.tex |
| Pandoc-Template | pdf/templates/book.tex |
| Metadata | pdf/metadata.yaml |
| Box-Filter | pdf/filters/boxes.lua |
| Orchestrierung | justfile |
| Mermaid L2-Theme | build/preprocess_mermaid.py |
| Assemble | scripts/assemble_book.py |
| Post-Build-QA | scripts/check_pdf.py / just qa |
just pdf # → dist/agentenbasierte-ki-se.pdf
SKIP_MERMAID=1 just pdf # ohne Mermaid-Neu-Render
just pdf-sample # Vorwort + Einleitung + Kap. 1
just qa # Post-Build-Checks
7. Acceptance (v2)
- Fonts im PDF: Charter + IBM Plex Sans (+ Mono) eingebettet
- Leading ≥ 1.18
- Kein
PitfallRedauf Subsection - Body Ink/Weiß ≥ WCAG AAA; Cyan/Amber nicht als Fließtext
- Seitenbudget vs. v1-Baseline 310: ≤ +8 % (≤ ~335) — Ist v2: 292 (−5.8 %)
just pdfgrün; Spec = Build
Messwerte (2026-07-23)
| Metrik | v1 (vor Design-v2) | v2 Ist |
|---|---|---|
| Seiten | 310 | 292 (−18) |
| Body | Charter 11 pt, stretch 1.04 | Charter 11 pt, stretch 1.20 |
| Sans/Mono | DejaVu | IBM Plex Sans/Mono eingebettet |
| Ränder | DIV 12/13 Konflikt | geometry 20 mm |
| H3-Farbe | PitfallRed | Ink |
| Boxen | voller Rahmen + Doppel-Titel-Risiko | left bar, Titel einmal |
just qa |
— | OK |