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

  1. Stroke-first: Icons sind stroke-basiert, nicht fill-basiert
  2. currentColor: Icons erben die Textfarbe des Kontexts
  3. Keine externen Abhaengigkeiten: Kein CSS, keine Fonts (ausser in Illustrationen)
  4. Metadaten-Pflicht: Jedes SVG traegt einen desc-Block
  5. 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

  1. Nur stroke: Hauptform durch Linien, keine gefuellten Flaechen (Ausnahme: kleine Akzentpunkte mit fill="currentColor")
  2. Opacity fuer Tiefe: Sekundaere Elemente mit opacity="0.4"–"0.6", nicht durch andere Farben
  3. Zentriert: Motiv visuell zentriert in der 40×40 Box
  4. Padding: Mindestens 8px Abstand zum Rand (Zeichenflaeche effektiv 24×24 innerhalb)
  5. Max. Komplexitaet: Nicht mehr als ~10 Pfad-Elemente pro Icon
  6. Abweichende stroke-width: Wenn ein Element betont werden soll, stroke-width="1.5" (maximal doppelt)
  7. 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

  1. Dickerer Strich: 1.5 statt 0.75 — muss auf kleiner Flaeche lesbar sein
  2. Einfacher: Weniger Detail als Component Icons, maximal 5 Pfad-Elemente
  3. Optische Groesse 18×18: Motiv innerhalb eines 18×18 Bereichs zentriert (3px Padding)
  4. 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.

Subtyp B: Diagram (16 Stueck)

Praefix: svg-illustration-diagram-*

Technische Architektur- und Ablaufdiagramme. Schichtmodelle, Pipelines, Datenfluss.

Subtyp C: Interface (16 Stueck)

Praefix: svg-illustration-interface-*

Mockups von Benutzeroberflaechen und Applikations-Ansichten.

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

  1. Zwei-Farben-System: Nur #21588F und #966489 als Primaerfarben
  2. Weisser Hintergrund: Immer #ffffff Rect als erste Ebene
  3. Keine Rasterbilder: Alles vektorisiert
  4. Strukturierte Kommentare: HTML-Kommentare <!-- Bereich --> fuer Abschnitte
  5. Pfeile: Quadratische Bezier-Kurven (Q) + Polygon-Spitze (<polygon points="..." fill="#21588F"/>)
  6. Border-Radius: rx="4"–"6" fuer Rechtecke

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

  1. Sequenzieller Aufbau: Elemente erscheinen nacheinander via begin-Offsets
  2. fill="freeze": Animation haelt am Endwert (kein Loop)
  3. Kurze Dauern: 0.2s–0.8s pro Element, gesamte Sequenz unter 3s
  4. begin-Staffelung: Jedes Element startet 0.05s–0.2s nach dem vorherigen
  5. Kein Loop: Einmal abspielen, dann stehen bleiben
  6. 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

Metadaten-Struktur

Jedes SVG traegt einen <desc>-Block als erstes Kind des Root-Elements. Dieser Block ist maschinenlesbar und dokumentiert Herkunft und Zuordnung.

Format

<desc>
artefakt:<eindeutiger-name>
source:<kanonische-url>
creator:Karl Kratz https://karlkratz.de/karl-kratz
title:<Lesbarer Titel>
</desc>

Felder

Feld Pflicht Beschreibung
artefakt ja Eindeutiger Identifier, identisch mit Dateiname (ohne .svg)
source ja Kanonische URL zur SVG-Datei
creator ja Urheber mit URL
title empfohlen Menschenlesbarer Titel (deutsch)

Source-URL Konventionen

SVG-Typ Source-Domain
Component Icons https://karlkratz.de/assets/svg/<name>.svg
Nav Icons — (kein desc bei /a/svg/)
Illustrationen /assets/svg/<name>.svg
Brand/Logo https://karlkratz.de/assets/svg/<name>.svg

Regeln

  1. Kein Zeilenumbruch innerhalb eines Feld-Werts
  2. Kein Leerzeichen zwischen Feldname und Doppelpunkt
  3. artefakt-Wert = Dateiname ohne Extension
  4. desc-Block direkt nach dem oeffnenden <svg>-Tag, vor jeder Geometrie
  5. Keine zusaetzlichen Felder ohne Absprache

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

  1. Kein Duplikat-Naming: Wenn eine Datei in /a/svg/ und /assets/svg/ existiert, ist /a/svg/ die Quelle fuer Navigation
  2. Praefix bestimmt Typ: Dateiname ohne Praefix = Component Icon
  3. Neue Icons: Immer in /assets/svg/ anlegen, nur bei Navigation-Bedarf nach /a/svg/ kopieren

Qualitaetsregeln

Pflicht (jedes SVG)

  1. Valides SVG: Wohlgeformtes XML, xmlns="http://www.w3.org/2000/svg" auf Root
  2. ViewBox gesetzt: Kein SVG ohne viewBox-Attribut
  3. desc-Block: Metadaten vorhanden (Ausnahme: Nav Icons in /a/svg/)
  4. Keine IDs auf Root: Kein id-Attribut auf dem <svg>-Element (verhindert Konflikte bei Inline-Einbettung)
  5. Keine externen Referenzen: Kein xlink:href, kein <use> mit externer URL
  6. Keine eingebetteten Styles: Kein <style>-Block, kein style-Attribut (Ausnahme: Illustrationen duerfen font-family inline nutzen)

Empfohlen

  1. Dateigroesse: Component Icons unter 1 KB, Illustrationen unter 10 KB
  2. Pfad-Optimierung: Koordinaten auf ganze Zahlen oder eine Dezimalstelle
  3. Keine leeren Gruppen: Kein <g> ohne Kinder
  4. Kommentare in Illustrationen: <!-- Bereich --> fuer logische Abschnitte
  5. 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