Cyberdise
Design System — Foundation
Entwurf zur Prüfung · Palette + Typografie + Rollen
Quelle: Brand-Messaging-Standard 2026 (kanonisches CI)
Behavioral Defense Engineering

Das System, reduziert auf eine einzige Quelle der Wahrheit.

Eine kanonische Palette, eine Schriftpaarung, semantische Rollen — Verlauf, Steinbock und Pattern teilen dieselbe Farb-DNA.

Quellen

Wo die Werte wirklich stehen

Diese Seite ist eine Ansicht, keine Quelle. Sie wird aus drei Dateien gebaut — jede mit einer klaren Zuständigkeit. Wer etwas ändern will, ändert dort, nicht hier.

tokens.cssDie einzige Quelle für Farbe, Schrift, Abstände, Radien, Schatten und Glas. Aufgebaut in zwei Schichten: Palette (die rohen Markenwerte, --cd-*) und Rollen (--surface, --text, --accent …). Komponenten benutzen ausschliesslich Rollen — so folgt beim Themenwechsel alles von allein.
foundation.cssDas CSS dieser Dokumentationsseite: Buttons, Karten, Glas, Raster, Navigation, Hero — und dazu die reine Doku-Optik (Farbfeld-Kacheln, Do/Don’t-Listen). Enthält kein rohes Hex, nur Rollen aus tokens.css.
sections/Der Inhalt, eine Datei je Abschnitt. Zusammengesetzt von build-foundation.mjs, das auch die Abschnittsnummern vergibt. foundation.html ist erzeugt — Änderungen daran gehen beim nächsten Bauen verloren.
01 — Palette

Markenfarben

Vollständiges 6-Farben-Brandbook. Das warme Paar (Gelb · Orange) ist das bewusste Unterscheidungsmerkmal — jeder Mitbewerber setzt nur auf kühle Töne. Rohwerte liegen als --cd-*; Komponenten greifen nie direkt darauf zu.

Türkis
Wachstum · Fokus · Ambition
#67B1A7--cd-teal
Tiefviolett
Imagination · Königlichkeit · Gerechtigkeit — Ankerfarbe
#4E147C--cd-purple
Magenta
Positive Emotionen · Kreativität
#A12C86--cd-magenta
Pink
Mitgefühl · Leidenschaft
#E059A0--cd-pink
Gelb
Wärme · Positivität · Glück
#F2D668--cd-yellow
Orange
Energie · Wärme · Erfolg
#EA5E35--cd-orange

Violett-Rampe — Primärfarbton

950 900 800 700 600 500 400 300 200 100 50

--cd-purple-950 … --cd-purple-50 — die Zahl im Feld ist die Stufe im Namen.

Sekundär-Rampen — abgeleitet (Basis = 500)

Türkis, Magenta und Pink liegen im Brandbook nur als Basiswert vor. Die Rampen sind daraus abgeleitet (per color-mix, hell → Weiss, dunkel → Ink) — keine kanonischen Werte. Die 50er/100er-Stufen dienen als ruhige, helle Alternativ-Flächen. Elf Stufen wie jede Rampe hier — 950, 600 und 400 kamen am 06.08. dazu. Sie fehlten nicht aus einem Grund, sondern weil die Rampen beim Anlegen von Hand mit genau den Stufen geschrieben wurden, die damals gebraucht waren.

950 900 800 700 600 500 400 300 200 100 50
950 900 800 700 600 500 400 300 200 100 50
950 900 800 700 600 500 400 300 200 100 50

Helle Alternativ-Backgrounds — 50er-Reihe

Palo wünscht ein überwiegend helles Design: Verlaufsflächen nur sparsam als Signatur-Moment. Abwechselnde Abschnitte tragen stattdessen eine 50er-Fläche als Rollen-Token — nahezu weiss, aber je Markenton leicht getönt. Welcher Palette-Wert dahinterliegt, steht hier bewusst nicht mehr: die Rolle ist die Aussage, und eine zweite Fassung belegt sie anders.

--surface-sunken
--surface-muted
--surface-teal
--surface-magenta
--surface-pink

Neutraltöne

Echtes Neutralgrau, elf Stufen. Bis 06.08.2026 trug die Reihe absichtlich einen Violettstich — «damit die Grautöne in der Marke sitzen, nicht daneben». Das war eine Entscheidung von uns: im Brandbook stehen sechs Farben und kein Grau. Sie ist zurückgenommen, damit Türkis führen kann, ohne dass jede Fläche leise dagegen tönt. Eine Reihe für beide Fassungen. --cd-ink steht bewusst daneben, nicht darin — siehe unten.

950 900 800 700 600 500 400 300 200 100 50

--cd-gray-950 … --cd-gray-50. Die 500er-Stufe ist die einzige, die beim Neutralisieren nicht eins zu eins übernommen wurde: sie trägt --text-muted und wäre auf getönter Fläche auf 4.16:1 gefallen. Abgedunkelt auf 5.30:1 — wertgleich zum alten Stand.

Marken-Schwarz · --cd-ink · gehört nicht in die Reihe

ink

Als Helligkeit sitzt er genau dort, wo 950 sitzt (Luminanz 0.0063 gegen 0.0067) — farblich aber quer dazu: Ton 266° gegen 200°, Sättigung 47 % gegen 27 %. Darum steht er neben der Reihe und nicht darin; als Stufe gelesen wäre er eine Lüge. Er bleibt getönt, weil alle abgeleiteten Rampen gegen ihn mischen (teal-900, magenta-700 …) und die fixen dunklen Flächen auf ihm sitzen — Code-Block und Call-out.

Verläufe

--cd-gradient-signatureSignatur
Violett → Pink → Türkis. Logo und Muster teilen exakt diese Stopps.
--cd-gradient-duoDuoton
Dieselbe Achse, dieselben Endpunkte, ohne den Pink-Stopp. Ein Beschnitt der Marke, kein Fremdkörper — Fassung v2 legt ihn auf --gradient.
--cd-gradient-warmwarmes Paar
Gelb → Orange. Das Unterscheidungsmerkmal gegenüber den nur-kühlen Mitbewerbern.
--cd-gradient-signature-softweich
Signatur, zu Weiss aufgehellt — für grosse Dekorflächen hinter Mustern, wo volle Sättigung zu schwer liest.

Die Stopps liegen einzeln als --cd-grad-purple #662D91 · --cd-grad-pink #EE3288 · --cd-grad-teal #1EB8C2 — ein SVG-Verlauf braucht seine Stopps einzeln und kann kein CSS-linear-gradient() aufnehmen. Die Diagramme greifen sie über die Rollen --graphic-grad-from/-mid/-to ab.

02 — Semantische Rollen

Was Komponenten tatsächlich verwenden

Die Palette wird auf Rollen abgebildet; Komponenten referenzieren nur Rollen. Wechselt man das Theme, folgt jede Komponente. Hell ist Standard (die Marke ist bright-first); Dunkel ist die Ausnahme.

Hell — Standard

--surfacewhite
--surface-sunkengray-50
--surface-mutedpurple-50
--textgray-900
--text-mutedgray-500
--accentpurple
--accent-2magenta
--highlightyellow
--tealteal

Dunkel — Ausnahme

--surfaceink
--surface-raisedpurple-900
--surface-mutedpurple-800
--textoffwhite
--text-mutedpurple-200
--accentpink*
--highlightyellow
--tealteal
* Violett → Pink im Dunkelmodus für Kontrast

Definiert, noch ohne Einsatz

Bereit in tokens.css, auf dieser Seite von keiner Komponente benutzt. Schnittstelle fürs Frontend, keine Altlast.

--surface-brandVollfläche in Violett
--text-inverse · -muted · --border-inverseEinzelner umgekehrter Kasten — sonst .on-dark
--highlight-strongOrange als kräftigere Stufe neben Gelb
--warningStatusfarbe, braucht ein Formular
--rhythmBasiswert der Abstandsskala — Komponenten nehmen die Stufen
--pattern-2 · --pattern-4Gedrehte Motive für .has-pattern
03 — Typografie

Changa + Open Sans

Changa trägt Display, Titel, Eyebrows und Akzente (Brandbook-Logofont); Open Sans trägt Fliesstext, Bildunterschriften und Links. Changas weiche Terminals brauchen Gewichtsdisziplin — gross und selbstbewusst eingesetzt, nicht für Fliesstext.

Light 300 Regular 400 Medium 500 SemiBold 600 Bold 700 ExtraBold 800
step-6AaTrittsicher.
step-4Behavioral Defense Engineering
step-2Verändere Handeln, nicht nur Wissen
step-0Fliesstext — Open Sans bei 1rem. Cyberdise macht aus Mitarbeitenden eine aktive Schicht des Security-Stacks: menschliche Signale werden zu Intelligence, erkannt und angepasst in Maschinengeschwindigkeit.
eyebrowFür Security Engineers & MSSPs

Schriftskala

Fluide modulare Skala (~1.25), mobile→desktop geclampt.

step-6Trittsicher
step-5Trittsicher
step-4 · H1 einer SeiteTrittsicher
step-3 · Hero + SektionstitelTrittsicher
step-2 · H3Trittsicher
step-1 · leadTrittsicher
step-0 · FliesstextTrittsicherer Wandel
step--1 · kleinTrittsicherer Wandel

Abstandsrhythmus

Eine Skala steuert vertikalen Rhythmus, Padding und Gaps.

3xs · .25rem
2xs · .5rem
xs · .75rem
sm · 1rem
md · 1.5rem
lg · 2.5rem
xl · 4rem
2xl · 6rem
3xl · 9rem

Vertikaler Rhythmus

Zeilenhöhe und Abstände sind Vielfache des Basisrhythmus (--rhythm · .5rem / 8px). Auch bei gemischten Grössen bleibt es stabil — ein Titel (2 Zeilen) und sein Textabsatz landen auf demselben Baseline-Grid.

Erkennen

Der Phish-Button macht jede Meldung zum Signal — Menschen werden Teil des Security-Stacks.

Awareness stoppt keine Angriffe

Wissen allein ändert kein Verhalten. Cyberdise trainiert Handeln — belegt mit bis zu 60% besserem Risikoverhalten.

Jede Mitarbeiterin wird zur aktiven Verteidigungsschicht

Menschliche Signale werden zu Intelligence, erkannt und angepasst in Maschinengeschwindigkeit.

In Maschinengeschwindigkeit reagieren

Von der Simulation bis zur SOC-Integration — ein Kreislauf statt einer Checkliste.

Anpassen

Kampagnen richten sich an Verhalten und Risiko der Belegschaft aus, nicht am Kalender.

Behavioral Defense Engineering, durchgängig

Vom Freemium bis MSSP — mandantenfähig, white-label, API-first.

Zeilenlänge

Wie breit ein Text laufen darf, hängt an seiner Schriftgrösse — nicht am Kasten, in dem er steht. Die Einheit ch misst in der Schrift des Elements, an dem sie notiert ist. Deshalb steht die Breite immer am Textelement.

Titel--measure-display · 20ch — grosse Schrift braucht wenige Zeichen pro Zeile. Zwei bis drei Zeilen sind das Ziel.
Lead--measure-lede · 34ch — der Absatz direkt unter dem Titel, etwas grösser gesetzt als Fliesstext.
Fliesstext--measure-body · 62ch — der klassische Lesewert für alles, was tatsächlich gelesen wird.
Warum am Element, nicht am Container

Der Dokument-Hero oben trug seine Breite am umschliessenden Kasten. Titel und Lead erbten damit denselben Pixelwert — obwohl der Titel dreimal so gross gesetzt ist. Ergebnis: der Lead lief auf angenehmen 34 Zeichen, der Titel auf neun, und riss bei neun Wörtern in fünf Zeilen. Am Element notiert rechnet ch dagegen in der jeweils eigenen Schriftgrösse — die Breite wächst mit der fluiden Typografie automatisch mit.

Woran man den Fehler erkennt

Ein Titel, der bei wenigen Wörtern in vier oder mehr Zeilen zerfällt, und ein Lead darunter, der breiter wirkt als er selbst — das ist immer dieselbe Ursache. Vor dieser Regel gab es im CSS sechs verschiedene Breiten (32, 42, 44, 60, 64 und 70 Zeichen), jede einzeln entstanden, keine begründet.

04 — Raster & Layout

Zwei Muster, ein Breakpoint

Cyberdise braucht kein Zwölf-Spalten-Raster. Jede Seite dieser Marke lässt sich aus zwei Anordnungen bauen: gleichwertige Kacheln, die sich selbst herunterzählen — und ein Zweispalter, der an genau einer Stelle umbricht. Wer einen dritten Fall zu brauchen glaubt, hat meist das falsche Muster gewählt.

Container--container · 76rem (1216px) · seitlich --space-md
Breakpoint820px · der einzige · darunter wird jeder Zweispalter einspaltig
Sektionsabstand--space-2xl oben und unten · Trennlinie zwischen Sektionen

Muster 1 — Kacheln .tiles

Gleichwertige Elemente: Karten, Farbfelder, Logos, Motive. Das Raster rechnet die Spaltenzahl selbst aus und braucht deshalb keinen Breakpoint. Gesteuert wird nur, wie schmal eine Kachel werden darf.

--tile-min: 9rem · --tile-flow: auto-fill Standard
1
2
3
4
5

auto-fill hält die Kachelgrösse stabil und lässt rechts Platz frei. Richtig für Schaukästen mit fester Anzahl — die Motive bleiben untereinander vergleichbar.

--tile-min: 9rem · --tile-flow: auto-fit
1
2
3
4
5

auto-fit dehnt die vorhandenen Kacheln auf die volle Zeile. Richtig für Karten, wo eine halbleere Zeile wie ein Fehler aussieht.

Muster 2 — Zweispalter .duo

Zwei ungleiche Hälften: Text neben Bild, Hero, Vergleich, Definitionsliste. Standard ist halb/halb; die Gewichtung ist eine einzige Zahlenpaar-Variable. Dies ist das einzige Muster, das am Breakpoint umbricht.

.duo · Standard 1fr 1fr
links
rechts
.duo mit --duo: 1.1fr 1fr — leichte Gewichtung
Inhalt
Beiwerk

Gewichtungen bleiben zurückhaltend: 1.1fr 1fr bis 2fr 1fr. Wer stärker gewichtet, baut in Wahrheit eine Randspalte — und die gehört ins Muster 1 oder gar nicht auf die Seite.

Die Regel hinter dem einen Breakpoint

Warum 820px

Unter 820 ergibt ein Zweispalter Spalten unter 380px. Dort bricht jedes zweispaltige Layout — Text wird zu schmal, Bilder zu klein, Tabellen laufen über. Es gibt keinen Grund, warum die eine Sektion bei 720 und die andere bei 820 umbrechen sollte; das war historisch gewachsen, nicht entschieden.

Warum nur einer

Kacheln brauchen keinen: auto-fill zählt selbst herunter, stufenlos und immer richtig. Damit bleibt genau ein Umschaltpunkt für die ganze Seite. Das ist der Unterschied zwischen einem System und einer Sammlung von Einzelfällen — und der Grund, warum das Layout beim Frontend-Bau nicht einzeln nachjustiert werden muss.

Anwendungsregeln

Do

  • Erst Muster wählen, dann Werte: gleichwertige Elemente → .tiles, zwei Hälften → .duo.
  • Kachelbreite in rem über --tile-min — sie skaliert mit der Schriftgrösse mit.
  • auto-fill für Schaukästen mit fester Anzahl, auto-fit für Karten, die die Zeile füllen sollen.
  • Gewichtung zurückhaltend halten: 1.1fr 1fr bis 2fr 1fr.
  • Alles, was breiter als der Container werden will, bekommt einen eigenen Abschnitt — nicht das Raster dehnen.

Don't

  • Nie eigene grid-template-columns ins Markup schreiben — sie hebeln den Breakpoint aus, die Sektion bricht auf dem Handy nie um.
  • Nie einen zweiten Breakpoint «nur für diese eine Stelle». Meist ist es das falsche Muster.
  • Keine festen Pixelbreiten für Spalten — immer fr oder --tile-min in rem.
  • Kein drittes Muster erfinden. Drei ungleiche Spalten sind fast immer Kacheln mit falscher Mindestbreite.
06 — Patterns

Steinbock-Streifenmotive

Die Patterns sind Zuschnitte aus dem Logo-Steinbock, gefüllt mit exakt denselben Verlaufsstopps wie Logo und Signatur-Verlauf (Türkis #1EB8C2 → Pink #EE3288 → Violett #662D91). Wegen dieser geteilten Farb-DNA darf ein Pattern sogar auf dem Verlauf liegen, ohne zu kollidieren.

Pattern 2
Pattern 3
Pattern 4
Pattern 1 · Sonderfall

Pattern 1 ist kein Zuschnitt, sondern der ganze Steinbock — ein eigenständiges Motiv ohne natürliche Ecke, keine Kanten-Textur.

Ausrichtung — nur upright

Die gelieferten pattern-2.svg und pattern-3.svg tragen ein äusserstes <g transform="rotate(180 …)"> um den viewBox-Mittelpunkt — sie sind das Logo-Teil kopfüber. Diese zwei Dateien werden nicht verwendet (Kundenentscheid 26.07.). Verbindlich sind die Fassungen pattern-2-up.svg und pattern-3-up.svg — dieselben Motive ohne die Drehung, also logo-echt.

Warum das mehr ist als Kosmetik: der Verlauf sitzt via gradientUnits="userSpaceOnUse" innerhalb dieser Gruppe. Eine Drehung nimmt ihn mit — das Türkis läge unten statt oben. Drehen ändert nicht nur die Form, sondern die Verlaufsachse. Darum wird nie gedreht, sondern nur gespiegelt.

Position folgt zwingend aus der Ausrichtung

Weil jedes Motiv an einer Schnittkante endet, gehört es an genau die Kante, aus der es „herauswächst". Da nicht gedreht wird, steht die Ecke pro Motiv fest — frei wählbar ist nur die horizontale Seite, über .pattern-flip (spiegeln).

MotivDatei Ecke (ungespiegelt)gespiegelt
Pattern 2 pattern-2-up.svg unten linksunten rechts
Pattern 3 pattern-3-up.svg unten rechtsunten links
Pattern 4 pattern-4.svg unten rechtsunten links
Pattern 1 pattern-1.svg ganzer Steinbock — freies Motiv, keine Ecke
P2 · upright

✓ unten links · Türkis oben

P2 · upright + gespiegelt

✓ unten rechts · so im Hero

P3 · upright

✓ unten rechts · Türkis oben

P3 · upright + gespiegelt

✓ unten links · Türkis oben

Die Steuerung — .has-pattern in Aktion

Oben liegen die Motive als <img>, damit jedes einzeln parallaxen kann. Für ruhige Flächen genügt die CSS-Utility: .has-pattern legt das Motiv als ::after über die Fläche, die Ecken-Klasse verankert es, drei Variablen steuern den Rest. Unten die zwei Varianten, die Palo sehen wollte — auf neutraler Fläche über die Kante hinaus und in voller Stärke auf der Verlaufsfläche.

✓ neutrale Fläche · P2 upright · unten links

✓ auf dem Verlauf · volle Stärke · P3 upright

✓ dasselbe Motiv gespiegelt · unten rechts

Die dritte Fläche zeigt den Ausweg für die Gegenkante: ein background-image lässt sich per CSS nicht drehen, wohl aber spiegeln. .pattern-flip kippt die ganze ::after-Box, also wandert die Kante mit — die Ecken-Klasse benennt darum die Lage vor dem Spiegeln (.pattern-bl.pattern-flip landet unten rechts). Damit sind beide horizontalen Kanten erreichbar, ohne P2 je auf den Kopf zu stellen.

Klassen & Variablen

Klasse / VariableWirkung Default
.has-pattern legt das Motiv als ::after über die Fläche, volle Deckkraft, nie gekachelt —
.pattern-tl · tr · bl · br verankert es an einer Ecke — muss zur Ausrichtung des Motivs passen Pflicht
.pattern-flip spiegelt horizontal; die Ecken-Klasse meint die Lage vor dem Spiegeln optional
--pattern welches Motiv — --pattern-2-up, --pattern-3-up, --pattern-4, --pattern-1 Pflicht
--pattern-scale Motivhöhe gegen die Fläche — gross halten, ein Motiv statt vieler kleiner 122%
--pattern-bleed wie weit es über die verankerten Kanten hinausläuft (negativ = darüber hinaus) -2rem
<div class="has-pattern pattern-bl" style="--pattern:var(--pattern-2-up);--pattern-ratio:var(--pattern-2-up-ratio);--pattern-motif-fill:var(--pattern-2-up-fill); --pattern-scale:150%">

Soll das Motiv am Parallax teilnehmen, geht das nicht über diese Utility — ein background-image kann kein data-depth tragen. Dann als echtes <img>-Element einbinden, wie im Hero und im Dokument-Hero (siehe 11 — Bewegung).

Anwendungsregeln

Do

  • Ein grosses Motiv, das nur einen Teil der Fläche überlappt und über die Kante hinausläuft.
  • Volle Deckkraft, immer. Wirkt es zu laut → Hintergrund heller machen, nicht das Motiv abschwächen.
  • Immer die *-up-Fassung nehmen; die Kante über .pattern-flip wählen.
  • Steuerung über .has-pattern + .pattern-tr|tl|br|bl, Motiv via --pattern, dazu --pattern-bleed und --pattern-scale.

Don't

  • Nie kacheln oder wiederholen.
  • Nie die Deckkraft reduzieren, um es ruhiger zu machen.
  • Nie drehen — weder P2 noch P3. Die gelieferten gedrehten Dateien sind aus dem System raus.
  • Motiv nicht frei platzieren — die Ausrichtung bestimmt die Ecke, gespiegelt wird nur horizontal.
Kundenwunsch — Palo

Erst hiess es: nur Pattern 2 darf nicht kopfüber stehen. Im Review vom 26.07. wurde daraus die generelle Regel — gedrehte Motive kommen ganz aus der Foundation. Verwendet werden ausschliesslich die *-up-Fassungen, die Kante wird gespiegelt statt gedreht.

Motiverlaubt Hinweis
Pattern 2 nur upright (pattern-2-up.svg), optional horizontal gespiegelt gelieferte gedrehte Datei nicht verwenden
Pattern 3 nur upright (pattern-3-up.svg), optional horizontal gespiegelt gelieferte gedrehte Datei nicht verwenden
Pattern 4 wie geliefert, darf horizontal gespiegelt werden keine upright-Datei nötig
Pattern 1 freies Motiv keine Ecke, keine Ausrichtungsregel

Spiegeln (scaleX(-1)) tauscht die horizontale Kante — beide Seiten sind damit erreichbar, ohne je ein Motiv auf den Kopf zu stellen. So gelöst in Sektion 09: P2 in der upright-Fassung, zusätzlich horizontal gespiegelt → rechte Kante.

Der Preis dieser Regel, offen benannt: die Motive wachsen upright alle aus der unteren Kante. Eine echte Verankerung oben gibt es damit nicht mehr. Soll ein Motiv am oberen Bildrand wirken — etwa hinter einer Navigationsleiste —, wird es gross skaliert und läuft von unten heraus (so gelöst in Sektion 08, --pattern-scale:340%).

07 — Komponenten

Rollen, real umgesetzt

Kein Element unten enthält eine eigene Farbe — alles kommt aus den Rollen-Tokens. Das ist die Probe aufs Exempel: trägt das Fundament eine echte Oberfläche? Jedes Exemplar steht mit seinem Klassennamen und dem Einsatzzweck da, damit man es ohne Rückfrage übernehmen kann.

Aktionen

Drei Stufen, absteigend in Gewicht — sie existieren, damit sie nebeneinander stehen dürfen. Ein Knopfpaar ist der Normalfall, kein Regelbruch.

Die Regel in einem Satz: höchstens eine primäre Aktion pro Sektion, und zwei gefüllte Knöpfe nebeneinander nie mit demselben Gewicht. «Höchstens», nicht «mindestens» — ein Abschnitt, dessen Hauptaufruf woanders steht, kommt ohne Primär aus. Die Stufen müssen auch nicht benachbart sein: Primär neben Ghost ist der häufigste Fall überhaupt, weil der grössere Abstand die Rangfolge schneller lesbar macht. Ghost darf sich wiederholen — er ist kein Ruf, sondern ein Weg; drei Ghost-Links in einer Reihe sind Navigation, keine konkurrierenden Aufrufe.

Reihenfolge: im Fliesstext steht der lautere Knopf zuerst, der Blick läuft von links. In Leisten und Abläufen kehrt sich das um — in der Navigation sitzt «Book a Demo» ganz rechts an der Kante (siehe 08), im Formular steht «Zurück» links und «Weiter» rechts. Dort schlägt die Richtung die Rangfolge.

Primär.btn--primary
Die eine Handlung, die der Abschnitt erreichen will. Teal gefüllt, im Dunkeln helles Teal mit dunkler Schrift.
Sekundär.btn--secondary
Der zweite Weg neben dem primären — «testen» neben «buchen». Gleich wichtig für einen anderen Besuchertyp, aber optisch leiser. Nur violetter Rand: gefüllt wäre er so laut wie der primäre.
Ghost.btn--ghost
Weiterlesen, vertiefen, verlassen. Nur Kontur, nimmt der primären Aktion nichts weg.

Welche Paare zulässig sind

Primär + Sekundär✓
Zwei gleich wichtige Wege für zwei Besuchertypen.
Primär + Ghost✓
Ein Ruf, ein Ausweg — der häufigste Fall, so im Hero.
Sekundär + Ghost✓
Abschnitt ohne eigenen Hauptruf — der steht woanders.
Ghost + Ghost✓
Reine Navigation. Ghost konkurriert nicht, also darf er sich wiederholen.
Primär + Primär✕
Zwei gefüllte Flächen mit gleichem Gewicht — dann führt keine mehr.

Auf der Markenkarte

statement.on-brand
Die dunklen Rollen sind gegen die fast schwarze Grundfläche gemessen, die Markenkarte ist heller. .on-brand hellt gedämpften Text und Bedienrand auf, der sekundäre Knopf wird weiss: kein noch erkennbar violetter Ton erreicht dort 4.5:1.

Karten

Eine Karte, drei Zustände. Der Inhalt unten ist echte Produkt-Copy; die Beschriftung sagt jeweils, was sich ändert — nicht der Text, sondern die Auszeichnung.

Edition
Simulate

Verhalten messen: Phishing-Simulationen, Angriffsszenarien, Szenario-Bibliothek.

Demo buchen
Edition
MSSP

White-label und mandantenfähig — Cyberdise als dein eigenes Geschäft.

Reseller werden
Hervorgehoben.card.card--featured — Verlaufs-Glow und Verlaufs-Eyebrow. Genau eine Karte pro Reihe, sonst hebt sich keine mehr ab.
Standard.card — heller Grund, feine Kontur, weicher Schatten. Der Normalfall.
Dunkel.card.on-dark — die Rollen kehren sich um, der Akzent wird Pink. Für Abschnitte, die sich absetzen sollen.

Markierung auf der Karte

Das Badge steht bewusst nicht bei den Aktionen: es ist kein Knopf, nicht klickbar und trägt keine Rangfolge. Es markiert einen Zustand — «Neu», «Empfohlen» — und sitzt darum dort, wo es vorkommt: an der hervorgehobenen Karte oben.

Neu · BDE
Badge.badge
Gelb, also sparsam. Kein Ersatz für einen Button — wer eine Handlung meint, nimmt eine der drei Aktionsstufen.

Anwendungsregeln

Do

  • Höchstens eine primäre Aktion pro Sektion — auch keine ist zulässig. Ein zweiter Aufruf daneben ist der Normalfall, er wird sekundär oder Ghost ausgezeichnet.
  • Im Fliesstext den lauteren Knopf zuerst. In Leisten und Abläufen bestimmt die Richtung die Position — der Vorwärts-Knopf steht rechts.
  • Karten immer im Raster .card-row — der Aufruf hängt dann am Fuss, auch bei ungleich langen Texten.
  • Dunkle Karten mit .on-dark auszeichnen, nicht mit einer Farbe. Dann stimmen Text, Kontur und Akzent von allein.
  • Badges für Zustände («Neu», «Empfohlen»), nicht als Ersatz für einen Button.

Don't

  • Nie zwei gefüllte Knöpfe mit demselben Gewicht nebeneinander — dann führt keiner mehr. Ghost ist ausgenommen: er darf sich wiederholen.
  • Keine Farbe direkt auf eine Komponente schreiben. Wer --accent braucht, hat meist die falsche Variante gewählt.
  • Mehr als eine hervorgehobene Karte pro Reihe hebt nichts mehr hervor.
  • Gelb ist Betonung, keine Fläche — Badges bleiben klein und selten.
08 — Navigation & Links

Die Leiste und alles, was klickbar ist

Die Hauptnavigation ist im System ein Glas-Element — und Glas gilt nur über etwas (siehe 10). Über dem Hero liegt die Leiste darum transparent auf Pattern und Glows; erst wenn in den flachen Textbereich gescrollt wird, schaltet sie das Glas ein. Eine dauerhaft gläserne Leiste über weissem Fliesstext wäre Glas über nichts und kostet nur Kontrast.

Zustand 1 — über dem Hero, transparent

Das Mega-Menü ist bedienbar: anklicken, mit Tab durchgehen, mit Escape schliessen.

Zustand 2 — gescrollt, Glas an

Dieselbe Leiste mit .is-stuck: getönte Fläche, heller Rand, Schatten. Darunter liegt bewusst ein Pattern — Glas braucht etwas, das durchscheint.

Aufbau des Mega-Menüs

TeilKlasse Regel
Auslöser .nav__link <button> wenn er ein Menü öffnet, <a> wenn er direkt zielt — gleiche Optik, korrekte Semantik
Panel .mega volle Breite, Glas, hidden im Ruhezustand
Eintrag .mega-item Icon + Titel + eine Zeile Beschreibung. Ohne Beschreibung ist es eine Liste, kein Mega-Menü
Raster .mega__grid drei Spalten, ab 820px eine — die Leiste weicht dort dem Burger
Fusszeile .mega__foot Einordnung plus ein weiterführender Link — nie ein zweiter CTA

Die Inhalte oben sind echt, nicht Blindtext. Einträge, Reihenfolge und Icon-Vokabular stammen aus protos/sitemap-c/sitemap.js — der Prototyp und diese Demo laufen also nicht auseinander. Zwei Entscheide aus docs/decisions.md schlagen dabei direkt auf die Menüstruktur durch:

Solche Regeln gehören hierher, nicht in die Fusszeile des Menüs. Die zeigt, was ein Besucher später liest — nicht, wie wir intern bauen.

Do

  • Transparent über dem Hero, Glas erst ab dem Scroll (.is-stuck).
  • Menü-Auslöser als <button> mit aria-expanded, Panel per hidden — so bleibt es aus dem Tab-Fluss.
  • Escape schliesst und gibt den Fokus an den Auslöser zurück.
  • Höchstens eine Ebene tief. Was eine zweite Ebene bräuchte, gehört auf eine Seite.

Don't

  • Kein dauerhaftes Glas über flachem Fliesstext — dort deckende Fläche oder gar keine.
  • Kein Öffnen allein per Hover: auf Touch gibt es keinen Hover.
  • Keine zwei CTAs im Panel — der CTA lebt in der Leiste.
  • Kein Eintrag ohne Beschreibung; ein Mega-Menü erklärt, es listet nicht.

Links & Zustände

Fliesstext-Links tragen im Ruhezustand keine sichtbare Linie — sie stehen allein über die Akzentfarbe. Beim Hover wischt die Linie von links nach rechts ein; verlässt der Zeiger den Link, wandert sie in derselben Richtung weiter hinaus. Fahre über den Link unten drüber.

Ruhezustand Cyberdise macht jede Mitarbeiterin zur aktiven Schicht des Security-Stacks — ohne Linie.
Hover Linie wischt von links ein, Farbe wechselt auf --accent-hover. Beim Verlassen zieht die linke Kante nach rechts ab — hinein und hinaus laufen in derselben Richtung.
Fokus (Tastatur) Ring aus --focus-ring, 2px, 3px Abstand — nur bei :focus-visible, nicht bei jedem Mausklick. Mit Tab ausprobieren.
Extern Ziele mit target="_blank" markieren sich selbst: Knowledge Base
Gedämpft .link-muted für Nebensächliches wie Impressum — beim Hover wird es wieder kräftig.
Komponenten Ein <a> mit Klasse ist eine Komponente (.btn, .nav__link, .mega-item) und bringt seine Zustände selbst mit. Fliesstext-Links im Markup mit Klasse tragen darum .link.

Auf Dunkel

Dieselben Regeln, nur kippt der Accent von Violett auf Pink — so sieht ein Link hier aus, und so ein externer.

09 — Im Kontext

Hero-Komposition

Der komplette Hero — transparente Person als Vordergrund-Layer, Feature-Cards in Frosted-Glass um den Kopf, Signatur-Pattern voll deckend an der Kante, Logo-Vertrauensband «Section an Section». Maus + Scroll = leichter Parallax, Cards tilten on-hover. Verlauf/Shape bleiben CTA-Momenten vorbehalten (hier nur die Pattern-DNA). Kein Orange am Menschen.

Behavioral Defense Engineering

Awareness Doesn't Stop Attacks. Behavior Does. Speed Contains Them.

AI attacks move in minutes. Cyberdise helps your employees, SOC, and automations respond at machine speed — and engineers secure behavior.

Machine-speed response
60%
better risk behavior · proven
AI-first. Behavior-first.
how people act, not what they claim
Swiss precision
service culture · reliability
100+ countries
MSSP-trusted, worldwide
Mitarbeiterin
Trusted by

Dunkler Abschnitt — die Ausnahme

Sparsam eingesetzt. Gleiche Komponenten; Rollen kehren sich um — Flächen werden tiefviolett, Accent wechselt von Violett zu Pink für Kontrast, der warme Highlight-Ton bleibt. Verlauf + Pattern funktionieren weiterhin.

Verteidigung in Maschinengeschwindigkeit

Menschliche Signale, in Maschinengeschwindigkeit.

Kein Kasten rechts — das Pattern trägt die Fläche allein. Darüber liegen Glas-Elemente, im Dunkelmodus aus --surface-raised (purple-900) getönt statt aufgehellt.

◆ Frosted Glass auf Dunkel
getönte Fläche, heller Rand, Schatten mit Schwarzanteil
Machine-speed response
Experiment — nicht abgenommen

Berg-Parallax ansehen →
Gestaffelte Bergebenen als Parallax-Band, in fünf Behandlungen. Steht bewusst ausserhalb der Foundation und ist noch nicht Teil des Systems. Achtung: dort tragen die Bildebenen Scroll- und Cursor-Parallax und weichen damit von der Regel in «Bewegung» ab (Szene folgt dem Scroll, nur UI dem Cursor). Wird das Experiment angenommen, braucht jene Regel eine Ausnahme für Bildebenen.

10 — Frosted Glass

Glas — nur über etwas, nie über nichts

Frosted Glass ist im System kein Stil, sondern ein Schichtmittel: eine halbtransparente Fläche, die zeigt, dass etwas darunter liegt. Sinnvoll nur über Pattern, Verlauf oder Bild — auf einer flachen Fläche ist Glas reine Dekoration und kostet nur Kontrast.

Hell — über Pattern
aufgehellte Fläche, Rand aus der Fläche selbst
Dunkel — über Pattern
getönte Fläche, Rand aus hellem Violett

Tokens

TokenHell Dunkel
--glass-surfacesurface-raised, 62% deckendpurple-900, 58% deckend
--glass-borderFläche gegen --borderpurple-200, 22%
--glass-blur16px
--glass-saturate1.3 — hält die Farben darunter lebendig
--glass-shadowviolett getönt + heller Innenrandmit Schwarzanteil

Do

  • Utility .glass verwenden — kippt im Dunkelmodus automatisch.
  • Nur über Pattern, Verlauf oder Bild einsetzen.
  • Auf Dunkel tönen statt aufhellen; Schatten braucht Schwarzanteil, sonst verschwindet er.

Don't

  • Kein Glas auf flacher Fläche — dann lieber .card.
  • Werte nicht einzeln setzen — nur die --glass-*-Tokens.
  • Nicht über Fliesstext legen; Glas trägt kurze Labels, keine Absätze.
11 — Bewegung

Parallax — zwei Signale, klar getrennt

Bewegung ist im Cyberdise-System kein Effekt um seiner selbst willen, sondern eine Zuordnung: Was zur Szene gehört, folgt dem Scroll. Was auf den Nutzer reagiert, folgt dem Cursor. Diese Trennung ist verbindlich — Layer hängen nie an beiden Signalen.

Scroll — echte Motive

Pattern und Personen sind Teil der Szene. Sie bewegen sich mit dem Scroll und erzeugen Tiefe im Raum. Der Versatz rechnet relativ zur Sektionsmitte im Viewport (nicht gegen absolutes scrollY) — sonst wird der Layer herausgeschoben, sobald die Sektion weit oben oder unten liegt, und von overflow:hidden abgeschnitten.

Cursor — künstliche Elemente

Frosted-Glass-Cards, Live-Pill und die radialen Glows sind UI, keine Szene. Sie folgen dem Zeiger und antworten damit direkt auf den Nutzer. Die Cards tilten zusätzlich beim Hover.

Zuordnung

LayerSignal VariableTiefe
Pattern (Steinbock)Scroll--systark
Person (Cutout)Scroll--syschwach
Radiale GlowsCursor--px / --pygestaffelt
Feature-CardsCursor + Hover-Tilt--px / --py / --rx / --rymittel
Live-PillCursor + Hover-Tilt--px / --pymittel

Do

  • Stärke über data-depth staffeln — vordere Layer bewegen sich weiter.
  • Nur transform: translate3d(…) animieren, dazu will-change.
  • prefers-reduced-motion schaltet Drift und Parallax vollständig ab.
  • Pattern als echtes Element einbinden, wenn es parallaxen soll.

Don't

  • Kein Layer an beiden Signalen — Scroll und Cursor bleiben getrennt.
  • Kein Parallax auf background-image — ein Hintergrundbild kann kein data-depth tragen und sich nicht unabhängig bewegen.
  • Kein Versatz gegen absolutes scrollY.
  • Keine Bewegung, die Text überlagert oder die Lesbarkeit stört.
12 — Bildsprache

Bildsprache — Cutouts & Redaktions-Fotos

Menschen sind der Vordergrund — transparente Cutouts, die als Layer über Pattern und Verlauf sitzen (Hero, Parallax). Generiert mit Ideogram V4: «transparent background» im Prompt liefert einen echten Alpha-Kanal, kein manuelles Freistellen. Entscheidend ist der Prompt-Stil — realistisch statt makellos.

Realistisch · Marke
Realistischer Personen-Cutout, transparenter Hintergrund
Echte Haut, Fältchen, natürliche Flyaway-Haare, leicht asymmetrisches Lächeln — glaubwürdige Alltags-Profi. So prompten.
Makellos · Stock-Look
Retuschierter Stock-Model-Cutout
Glatt retuschiert, perfekte Haut, Model-Pose — wirkt fake und markenfremd. Nicht so prompten.

Prompt-Anatomie — Ideogram V4 (MCP, rendering_speed QUALITY)

Format + AusschnittPhotorealistic waist-up portrait cutout — head fully in frame near the top edge, not cropped at the top, minimal headroom, subject centered Transparenzon a fully transparent background, isolated subject, no scene, no floor, no shadow Person + RealismusSwiss woman late 30s, real skin with visible pores, faint freckles, fine expression lines, natural under-eye softness, shoulder-length brown hair with natural flyaways, genuine slightly asymmetric smile, minimal makeup, ordinary everyday professional — not a glossy retouched stock model Farbwelt (Kleidung)Markentöne: deep violet blazer über soft magenta/pink blouse · warmer Ton (Gelb/Orange) nur als winziges Detail (z. B. Anstecker) · gentle wrinkles, realistic fabric folds, soft daylight Paramsresolution 832×1248 (2:3, waist-up) oder 1440×2880 (Ganzfigur) · QUALITY · MCP deckelt Output auf ~1024px WebP

Positiv beschreiben (Diffusion ignoriert Negation) — echte Merkmale benennen statt «flawless/perfect». Hochformat für Vordergrund-Layer. Native Text-Prompt-Transparenz schlägt nachträgliches remove_background (Rainbow-Fringe an feinem Haar).

Blog-/Redaktions-Fotos — fotojournalistisch, opak

Für cardFeed/cards-Teaser keine Cutouts, sondern echte Reportage-Fotos (16:9, kein Alpha). Ausrichtung am BDE-Narrativ: «Morgen eines Security Officers», Verhalten als Teil des Security-Stacks.

Editorial · echt
Fotojournalistisches Blog-Foto: Security Officer prüft am Morgen eine Phishing-Meldung
Echter Arbeitsplatz, ruhige Reportage, Markenton subtil (violett-Blazer). Klischees meiden: kein Hoodie-Hacker, kein grüner Matrix-Code, keine Schloss-Icons. Bildschirm-/Schild-Text rendert unscharf — nicht auf lesbaren In-Bild-Text setzen.
13 — Anwendungs-Prinzipien

Do & Don't

Do

  • Hell-dominante Flächen; der Verlauf nur für Signatur-Momente.
  • Warmer Akzent (Gelb/Orange) für Betonung, Badges, Daten-Peaks — sparsam eingesetzt.
  • Echte Menschen, Gesichter, Kundengeschichten statt abstrakter Grafiken.
  • Transparente Personen-Cutouts als Vordergrund-Layer (Parallax über Pattern/Verlauf). Ideogram V4 rendert echten Alpha-Kanal, wenn «transparent background» im Prompt steht — kein manuelles Freistellen. Menschlich halten: echte Haut, Fältchen, natürliche Haare, nicht makellos-retuschiert.
  • Patterns in voller Deckkraft, ein grosses Motiv an seiner natürlichen Ecke — dieselbe Verlaufs-DNA wie Logo und Signatur-Verlauf. Zu laut? Untergrund heller machen, nicht das Motiv abschwächen.
  • Changa gross & selbstbewusst; Open Sans für alles, was tatsächlich gelesen wird.

Don't

  • Kein FUD — keine Hoodies, roten Alarme, Threat-Counter oder Hacker-Klischees.
  • Keine leuchtenden Gehirne oder neuronale-Netz-KI-Klischees.
  • Keine Blur-Orbs oder Stock-Textur-Overlays (die Verräter des alten Protos).
  • Keine Neon-Proto-Werte (#00E5FF, #D91E76) — markenfremd, ausgemustert.
  • Patterns nie kacheln und nie in der Deckkraft reduzieren.
  • Kein rohes Hex in Komponenten — nur Rollen-Tokens.