SVG Style Guide
SVG Style Guide: Uebersicht
Dieses System umfasst 5 SVG-Typen mit jeweils eigenen Spezifikationen:
| Typ |
ViewBox |
Pfad |
Anzahl |
Verwendung |
| Component Icons |
40×40 |
/assets/svg/ |
~140 |
Inline-Icons fuer Fachthemen |
| Nav Icons |
24×24 |
/a/svg/ + /assets/svg/icon-nav-* |
~20 |
Navigation, Menues |
| Illustrationen |
520×390 |
/assets/svg/svg-illustration-* |
~43 |
Konzepte, Diagramme, Interfaces |
| Brand/Logo |
120×120 |
/a/svg/logo.svg, /assets/svg/artefakt* |
~14 |
Markenzeichen, geodaetische Formen |
| Animierte SVGs |
520×390 |
/assets/svg/*-animated.svg |
~2 |
Animierte Illustrationen |
Grundprinzipien
- Stroke-first: Icons sind stroke-basiert, nicht fill-basiert
- currentColor: Icons erben die Textfarbe des Kontexts
- Keine externen Abhaengigkeiten: Kein CSS, keine Fonts (ausser in Illustrationen)
- Metadaten-Pflicht: Jedes SVG traegt einen desc-Block
- Minimalismus: So wenige Pfade wie moeglich, keine Dekoration
Farbpalette
Primaerfarben
| Farbe |
Hex |
Verwendung |
| Brand Rosa |
#966489 |
Artefakt-Elemente, Akzente, API-Layer |
| Brand Blau |
#21588F |
Ueberschriften, Strukturen, Primaer-Elemente |
| currentColor |
erbt |
Alle Component Icons und Nav Icons |
Sekundaerfarben
| Farbe |
Hex |
Verwendung |
| Weiss |
#ffffff |
Hintergrund in Illustrationen, Fuellungen |
| Grau (Text) |
#666666 |
Beschriftungen in Illustrationen |
| Grau (UI) |
#dee2e6 |
Dekorative Elemente, Browser-Chrome |
Rosa-Abstufungen (Brand/Logo)
Das Logo verwendet triangulierte Flaechen mit Rosa-Abstufungen:
#946388 #956488 #96658a #97668a #97668b #97678b
#98668a #99688c #9b6a8f #9b6d8f #9e7193 #9e7391
#a17597 #a27897 #a9819f #ab7da0 #ad82a3 #af88a5
#ccafc9 #c6a7c1
Zentrum: dunkler (#946388), Rand: heller (#ccafc9). Gradient von innen nach aussen.
Opacity-Stufen (Component Icons)
| Wert |
Verwendung |
opacity="0.8" |
Primaer-Akzent (aktiv, hervorgehoben) |
opacity="0.6" |
Sekundaer-Akzent |
opacity="0.5" |
Linien, Texturen |
opacity="0.4" |
Trennlinien, gedaempfte Elemente |
Illustration-Opacities
| Wert |
Verwendung |
fill-opacity="0.08" |
Hintergrund-Flaechen (Schichten) |
fill-opacity="0.5" |
Placeholder-Text |
stroke-width="1.2"–"1.5" |
Rahmen und Strukturen |
Typ 1: Component Icons
Universelle Fach-Icons fuer Themen wie Infrastruktur, Daten, Prozesse, Logik, Dienste, Applikationen, Steuerung, UI und Konzepte.
Spezifikation
| Eigenschaft |
Wert |
Pflicht |
| ViewBox |
0 0 40 40 |
ja |
| width / height |
40 / 40 |
ja |
| fill |
none |
ja |
| stroke |
currentColor |
ja |
| stroke-width |
0.75 |
ja (Standard) |
| stroke-linecap |
round |
empfohlen |
| XML-Deklaration |
<?xml version="1.0" encoding="UTF-8"?> |
ja |
Template
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 40 40" width="40" height="40"
fill="none" stroke="currentColor" stroke-width="0.75">
<desc>
artefakt:<name>
source:https://karlkratz.de/assets/svg/<name>.svg
creator:Karl Kratz https://karlkratz.de/karl-kratz
title:<Titel>
</desc>
<!-- Geometrie hier -->
</svg>
Gestaltungsregeln
- Nur stroke: Hauptform durch Linien, keine gefuellten Flaechen (Ausnahme: kleine Akzentpunkte mit
fill="currentColor")
- Opacity fuer Tiefe: Sekundaere Elemente mit
opacity="0.4"–"0.6", nicht durch andere Farben
- Zentriert: Motiv visuell zentriert in der 40×40 Box
- Padding: Mindestens 8px Abstand zum Rand (Zeichenflaeche effektiv 24×24 innerhalb)
- Max. Komplexitaet: Nicht mehr als ~10 Pfad-Elemente pro Icon
- Abweichende stroke-width: Wenn ein Element betont werden soll,
stroke-width="1.5" (maximal doppelt)
- Keine Schatten, keine Gradienten, kein Filter
Erlaubte Elemente
rect, circle, line, path, polyline, polygon
Nicht erlaubt: text, image, use, clipPath, filter, linearGradient
Kategorien (9)
| Kategorie |
Beispiele |
| Infrastruktur |
server-hardware, firewall, ssl-tls, logging |
| Daten |
sql-datenbank, redis, embeddings, backup |
| Prozess |
task-queue, worker, pipeline, document-ingestion |
| Logik |
php, python, javascript, rag, validierung |
| Dienste |
ollama, mariadb, apache, systemd, fail2ban |
| Applikation |
website, chat, membership, ebook, newsletter |
| Steuerung |
claude, monitoring, deployment, ki-protokoll |
| UI-Elemente |
pfeil-rechts, chevron-down, search, menu, close |
| Konzepte |
cloud, automation, selbstoptimierung, feedback-loop |
Typ 2: Nav Icons
Navigations-Icons fuer Menues, Header und interaktive Elemente. Orientiert an Feather-Icons-Aesthetik.
Spezifikation
| Eigenschaft |
Wert |
Pflicht |
| ViewBox |
0 0 24 24 |
ja |
| width / height |
24 / 24 |
ja |
| fill |
none |
ja |
| stroke |
currentColor |
ja |
| stroke-width |
1.5 |
ja |
| stroke-linecap |
round |
ja |
| stroke-linejoin |
round |
ja |
| XML-Deklaration |
keine (Inline-Einbettung) |
— |
Template
<svg xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24" width="24" height="24"
fill="none" stroke="currentColor" stroke-width="1.5"
stroke-linecap="round" stroke-linejoin="round">
<!-- Geometrie hier -->
</svg>
Unterschied zu Component Icons
| Merkmal |
Component Icon |
Nav Icon |
| ViewBox |
40×40 |
24×24 |
| stroke-width |
0.75 |
1.5 |
| stroke-linecap |
empfohlen |
Pflicht |
| stroke-linejoin |
— |
Pflicht (round) |
| desc-Block |
Pflicht |
optional |
| Einsatz |
Content, Fachthemen |
Navigation, UI |
Gestaltungsregeln
- Dickerer Strich: 1.5 statt 0.75 — muss auf kleiner Flaeche lesbar sein
- Einfacher: Weniger Detail als Component Icons, maximal 5 Pfad-Elemente
- Optische Groesse 18×18: Motiv innerhalb eines 18×18 Bereichs zentriert (3px Padding)
- Kleine Akzente: Punkte als
fill="currentColor" stroke="none" erlaubt (z.B. Chat-Dots)
Pfade
| Pfad |
Verwendung |
/a/svg/icon-nav-*.svg |
Primaer (7 Core-Nav-Icons) |
/assets/svg/icon-nav-*.svg |
Erweitert (alle Nav-Icons) |
Bestand
icon-nav-anmelden, icon-nav-abmelden, icon-nav-erstgespraech, icon-nav-karlscore, icon-nav-ki-gemeinschaft, icon-nav-ki-wissen, icon-nav-systemisch-denken, icon-nav-beratung, icon-nav-chat, icon-nav-forum, icon-nav-profil, icon-nav-start, icon-nav-termine, icon-nav-videos, icon-nav-wissen
Typ 3: Illustrationen
Groessere visuelle Erklaerungen fuer Konzepte, System-Diagramme und Interface-Mockups. Drei Subtypen.
Spezifikation (alle Subtypen)
| Eigenschaft |
Wert |
Pflicht |
| ViewBox |
0 0 520 390 |
ja |
| fill (root) |
none |
ja |
| XML-Deklaration |
keine |
— |
| Hintergrund |
<rect x="0" y="0" width="520" height="390" fill="#ffffff"/> |
ja |
| Titel |
<text> zentriert bei y=24–28 |
ja |
Template
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 520 390" fill="none">
<desc>
artefakt:<name>
source:/assets/svg/<name>.svg
creator:Karl Kratz https://karlkratz.de/karl-kratz
</desc>
<rect x="0" y="0" width="520" height="390" fill="#ffffff"/>
<text x="260" y="28" font-family="sans-serif" font-size="14"
font-weight="600" fill="#21588F" text-anchor="middle">Titel</text>
<!-- Inhalt -->
</svg>
Subtyp A: Concept (10 Stueck)
Praefix: svg-illustration-concept-*
Abstrakte Visualisierungen von Ideen und Prinzipien. Weniger technisch, mehr erklaerend.
- Beispiele: rag-ueberblick, embedding-raum, wissen-zentral, lokaler-betrieb
- Typische Elemente: Kaesten mit Labels, Pfeile, gruppierte Bereiche
Subtyp B: Diagram (16 Stueck)
Praefix: svg-illustration-diagram-*
Technische Architektur- und Ablaufdiagramme. Schichtmodelle, Pipelines, Datenfluss.
- Beispiele: system-architektur, ingestion-pipeline, query-pipeline, arango-graph
- Typische Elemente: Geschichtete Rechtecke, Verbindungslinien mit Pfeilen, Beschriftungen
- Schicht-Pattern:
fill="#21588F" fill-opacity="0.08" fuer Hintergrund-Layer
Subtyp C: Interface (16 Stueck)
Praefix: svg-illustration-interface-*
Mockups von Benutzeroberflaechen und Applikations-Ansichten.
- Beispiele: chat, crm, kalender, email, wissensdatenbank, webshop
- Typische Elemente: Browser-Fenster-Rahmen, Formulare, Listen, Buttons
Typografie in Illustrationen
| Element |
font-family |
font-size |
fill |
| Titel |
sans-serif |
14 |
#21588F |
| Subtitel/Label |
sans-serif |
10–11 |
#21588F |
| Code/Daten |
monospace |
9–10 |
#966489 oder #21588F |
| Muted Text |
sans-serif |
8–10 |
#666666 |
Gestaltungsregeln
- Zwei-Farben-System: Nur #21588F und #966489 als Primaerfarben
- Weisser Hintergrund: Immer #ffffff Rect als erste Ebene
- Keine Rasterbilder: Alles vektorisiert
- Strukturierte Kommentare: HTML-Kommentare
<!-- Bereich --> fuer Abschnitte
- Pfeile: Quadratische Bezier-Kurven (
Q) + Polygon-Spitze (<polygon points="..." fill="#21588F"/>)
- Border-Radius:
rx="4"–"6" fuer Rechtecke
Typ 4: Brand / Logo
Geodaetische Formen und Markenzeichen. Hohe visuelle Dichte durch triangulierte Flaechen.
Spezifikation
| Eigenschaft |
Wert |
Pflicht |
| ViewBox |
0 0 120 120 |
ja |
| width / height |
120 / 120 (oder 80 fuer Logo) |
ja |
| Technik |
fill-basiert (nicht stroke) |
ja |
| Farbschema |
Rosa-Abstufungen #946388–#ccafc9 |
ja |
Varianten
| Datei |
Beschreibung |
artefakt.svg |
Standard geodaetische Kugel (Linien, 120×120) |
artefakt-lg.svg |
Groessere Variante |
artefakt-rose.svg |
Rosa-Farbversion |
artefakt-var-fractal.svg |
Fraktale Variation |
artefakt-var-isometric.svg |
Isometrische Variation |
artefakt-var-nested.svg |
Verschachtelte Variation |
artefakt-var-orbital.svg |
Orbitale Variation |
artefakt-var-triaxial.svg |
Triaxiale Variation |
logo.svg |
Haupt-Logo (triangulierte Flaechen) |
Geodaetische Kugel (Linien-Variante)
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120" width="120" height="120">
<g fill="none" stroke="#966489" stroke-width="0.3" stroke-linecap="round">
<line x1="..." y1="..." x2="..." y2="..."/>
<!-- Knotenpunkte durch Linien verbunden -->
</g>
</svg>
Logo (Triangulierte Flaechen)
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120" width="80" height="80">
<g stroke="#966489" stroke-width="0.2" stroke-opacity="0.3" stroke-linejoin="round">
<path d="M60.0 60.0L66.0 60.0L63.0 65.2Z" fill="#96658a"/>
<!-- Triangulierte Facetten von Zentrum nach aussen -->
</g>
</svg>
Gestaltungsregeln
- Zentrum = dunkel: Innerste Dreiecke am dunkelsten (#946388)
- Rand = hell: Aeusserste Dreiecke am hellsten (#ccafc9)
- Stroke-Overlay: Duenne Linien (
stroke-width="0.2"–"0.3") mit niedriger Opacity verbinden die Facetten
- Symmetrie: Radiale Symmetrie um den Mittelpunkt (60,60)
- Keine Text-Elemente: Rein visuell, keine Beschriftung
Typ 5: Animierte SVGs
SMIL-basierte Animationen fuer Illustrationen. Kein JavaScript, kein CSS — nur native SVG-Animationselemente.
Spezifikation
| Eigenschaft |
Wert |
Pflicht |
| ViewBox |
0 0 520 390 |
ja |
| Basis |
Illustration-Template (Typ 3) |
ja |
| Animations-Methode |
SMIL (<animate>, <animateTransform>) |
ja |
| Suffix |
-animated.svg |
ja |
Erlaubte Animationselemente
| Element |
Verwendung |
<animate> |
Attribut-Aenderungen (opacity, x, y, width, height) |
<animateTransform> |
translate, scale, rotate |
Nicht erlaubt: <animateMotion>, <set>, JavaScript, CSS-Animationen
Animations-Pattern
<!-- Einblenden -->
<rect opacity="0">
<animate attributeName="opacity"
from="0" to="1"
dur="0.4s" begin="0.2s" fill="freeze"/>
</rect>
<!-- Verschieben + Skalieren -->
<g>
<animateTransform attributeName="transform" type="translate"
from="212 147" to="382 -10"
dur="0.8s" begin="0.3s" fill="freeze"/>
<animateTransform attributeName="transform" type="scale"
from="0.8" to="0.35"
dur="0.8s" begin="0.3s" fill="freeze"
additive="sum"/>
</g>
Gestaltungsregeln
- Sequenzieller Aufbau: Elemente erscheinen nacheinander via
begin-Offsets
- fill="freeze": Animation haelt am Endwert (kein Loop)
- Kurze Dauern: 0.2s–0.8s pro Element, gesamte Sequenz unter 3s
- begin-Staffelung: Jedes Element startet 0.05s–0.2s nach dem vorherigen
- Kein Loop: Einmal abspielen, dann stehen bleiben
- Statisches Pendant: Zu jeder animated.svg existiert eine statische Version ohne
-animated Suffix
Bestand
| Animiert |
Statisch |
| artefakt-2-website-animated.svg |
artefakt-2-website.svg |
| artefakt-animiert.svg |
artefakt.svg |
Naming-Konventionen
Dateinamen
| Regel |
Beispiel |
| Lowercase kebab-case |
server-hardware.svg |
| Keine Umlaute |
qualitaet.svg (nicht qualitaet.svg) |
| Keine Leerzeichen |
task-queue.svg |
| Keine Versionsnummern |
artefakt.svg (nicht artefakt-v2.svg) |
Praefix-System
| Praefix |
Typ |
Beispiel |
| (keiner) |
Component Icon |
firewall.svg, redis.svg |
icon-nav- |
Nav Icon |
icon-nav-chat.svg |
icon-artefakt- |
Artefakt-Icon Variante |
icon-artefakt-simple.svg |
svg-illustration-concept- |
Konzept-Illustration |
svg-illustration-concept-rag-ueberblick.svg |
svg-illustration-diagram- |
Diagramm-Illustration |
svg-illustration-diagram-system-architektur.svg |
svg-illustration-interface- |
Interface-Illustration |
svg-illustration-interface-chat.svg |
svg-illustration-embedding- |
Embedding-Illustration |
svg-illustration-embedding-pipeline-a.svg |
artefakt- |
Brand/Logo Variante |
artefakt-var-fractal.svg |
artefakt-2- |
Brand Generation 2 |
artefakt-2-website.svg |
karlkratz-logo- |
Firmenlogo |
karlkratz-logo-rosa.svg |
Suffix-System
| Suffix |
Bedeutung |
Beispiel |
-animated |
SMIL-animierte Version |
artefakt-2-website-animated.svg |
-lg |
Groessere Variante |
artefakt-lg.svg |
-min |
Minimierte Version |
karlkratz-logo-rosa-min.svg |
-aus |
Deaktivierter Zustand |
kamera-aus.svg, mikrofon-aus.svg |
Verzeichnisstruktur
/a/svg/ # Core: 7 Nav-Icons + Logo (Production-kritisch)
/assets/svg/ # Alle Icons, Illustrationen, Brand-Elemente
/assets/svg/resources/ # Hilfs-Ressourcen (nicht direkt eingebunden)
Regeln
- Kein Duplikat-Naming: Wenn eine Datei in /a/svg/ und /assets/svg/ existiert, ist /a/svg/ die Quelle fuer Navigation
- Praefix bestimmt Typ: Dateiname ohne Praefix = Component Icon
- Neue Icons: Immer in /assets/svg/ anlegen, nur bei Navigation-Bedarf nach /a/svg/ kopieren
Qualitaetsregeln
Pflicht (jedes SVG)
- Valides SVG: Wohlgeformtes XML,
xmlns="http://www.w3.org/2000/svg" auf Root
- ViewBox gesetzt: Kein SVG ohne
viewBox-Attribut
- desc-Block: Metadaten vorhanden (Ausnahme: Nav Icons in /a/svg/)
- Keine IDs auf Root: Kein
id-Attribut auf dem <svg>-Element (verhindert Konflikte bei Inline-Einbettung)
- Keine externen Referenzen: Kein
xlink:href, kein <use> mit externer URL
- Keine eingebetteten Styles: Kein
<style>-Block, kein style-Attribut (Ausnahme: Illustrationen duerfen font-family inline nutzen)
Empfohlen
- Dateigroesse: Component Icons unter 1 KB, Illustrationen unter 10 KB
- Pfad-Optimierung: Koordinaten auf ganze Zahlen oder eine Dezimalstelle
- Keine leeren Gruppen: Kein
<g> ohne Kinder
- Kommentare in Illustrationen:
<!-- Bereich --> fuer logische Abschnitte
- Konsistente Einrueckung: 2 Spaces
Verboten
| Element/Attribut |
Grund |
<script> |
Sicherheit |
<foreignObject> |
Kompatibilitaet |
onclick / Event-Handler |
Sicherheit |
<image> mit externem href |
Abhaengigkeit |
data-* Attribute |
Unnoetig in SVG |
CSS @import |
Externe Abhaengigkeit |
transform="matrix()" |
Unleserlich, stattdessen translate/scale/rotate |
Checkliste fuer neue SVGs
- [ ] ViewBox korrekt fuer Typ gesetzt?
- [ ] desc-Block mit artefakt/source/creator?
- [ ] Dateiname folgt Praefix-Konvention?
- [ ] Keine verbotenen Elemente?
- [ ] Farben korrekt (currentColor bzw. Brand-Palette)?
- [ ] In richtiges Verzeichnis abgelegt?
- [ ] Dateigroesse im Rahmen?