Interne Referenz · nicht indexiert

Style Guide

Jede Farbe, jede Schriftgröße, jedes Raster-Maß, jede Komponente und jeder Hover dieser Website — mit den echten Klassen, dem echten CSS und den echten Komponenten. Nichts hier ist nachgebaut: Ändert sich ein Token, ändert sich diese Seite mit.

Quellen: src/index.css (Tokens, Masken, Keyframes) · src/app/layout.tsx (Schriften) · src/components/ (Komponenten, Motion)

02

Farben

Acht Tokens, ein Akzent. Alle liegen im @theme-Block von src/index.css und stehen als Tailwind-Utility (bg-, text-, border-) sowie als CSS-Variable zur Verfügung.

abyss
#0F131A
--color-abyss
midnight
#111418
--color-midnight
ocean
#1E242B
--color-ocean
anthracite
#3A4047
--color-anthracite
ice
#8A9A9E
--color-ice
smoke
#D0D5D9
--color-smoke
signal
#FFD600
--color-signal
text
#FFFFFF
--color-text

Einsatz

TokenHexWofür
abyss#0F131AGrundfarbe ALLER Flächen: Body, Header, Footer, jede Sektion ohne eigenen Akzent.
midnight#111418Nur noch als SCHRIFTFARBE auf hellen Flächen (text-midnight auf Gelb und Weiß).
ocean#1E242BAbgesetzte Sektionen und Karten, die sich vom Grund abheben sollen.
anthracite#3A4047Ränder, Icon-Flächen, zurückgenommene Headline-Zeilen.
ice#8A9A9ESekundärtext, Mono-Beschriftungen, ruhige Fließtext-Passagen.
smoke#D0D5D9Fließtext auf dunklem Grund. Der Standardton für längere Absätze.
signal#FFD600Der EINE Akzent: Taglines, Preise, aktive Zustände, Primär-Button.
text#FFFFFFÜberschriften und alles, was maximale Präsenz braucht.

Regeln

SOabyss ist die Grundfarbe. Sektionen setzen sich mit ocean oder signal ab — sonst gar nicht.

SOTextmarkierung ist systemweit gesetzt: ::selection → Signal-Fläche, midnight-Schrift. Hier markieren zum Prüfen.

NICHTbg-midnight für Flächen benutzen. Der Token trägt nur noch dunkle SCHRIFT auf hellem Grund; als Fläche weicht er sichtbar vom Rest ab.

NICHTEinen zweiten Akzent einführen. Signal wirkt nur, solange es der einzige bunte Ton ist.

03

Typografie

Drei Rollen, zwei Schriften. Zugewiesen wird ausschließlich im @theme-Block von src/index.css — geladen werden sie in layout.tsx über next/font (selbst gehostet, keine externen Requests).

Rollen

UtilityToken-KetteSchriftWofür
font-display--font-headline → --font-interInterÜberschriften, Buttons, Zahlen-Kacheln.
font-sans--font-body → --font-interInterFließtext. Auch die Grundschrift im <body>.
font-mono--font-mono → --font-jetbrainsJetBrains MonoTaglines, Kapitelnummern, Preise, Meta-Angaben.

Ebenfalls geladen, aber keiner Rolle zugewiesen und daher mit preload: false: Geist (Grotesk) und die Hausschrift Gabriel Sans (400/500/700/900, WOFF2). Wer eine davon einer Rolle zuweist, muss in layout.tsx das Preload wieder aktivieren — sonst lädt sie erst verzögert nach.

Schriftschnitte

Inter · geladene Gewichte
300 · font-lightWärme. Wasser. Perfektion.
400 · font-normalWärme. Wasser. Perfektion.
500 · font-mediumWärme. Wasser. Perfektion.
600 · font-semiboldWärme. Wasser. Perfektion.
700 · font-boldWärme. Wasser. Perfektion.
JetBrains 400SHK-Meisterbetrieb 0123456789 — 690 €

Skala

Alle Hero-Größen sind clamp()-Stufen und wachsen mit dem Fenster. Der vw-Wert ist so gewählt, dass das längste nicht umbrechbare Wort auch bei 320 px noch in seine Spalte passt — deshalb sind die Werte pro Seite verschieden.

Hero Startseite
Wärme.
text-[clamp(2.5rem,13vw,100px)] md:text-[clamp(4rem,8vw,100px)]
font-bold · tracking-tighter · leading-[0.9]
Hero /ueber + /karriere
Meister.
text-[clamp(1.75rem,9vw,12rem)] md:text-[clamp(4rem,7vw,12rem)]
font-medium · tracking-tighter · mix-blend-exclusion
Hero Leistungsseiten
Wärme
text-[clamp(2.5rem,14vw,11rem)] md:text-[clamp(4rem,8vw,11rem)]
font-medium · dreizeilig mit vw-Einzügen
Sektions-Überschrift
Kernkompetenzen
text-3xl md:text-4xl lg:text-5xl
font-bold · tracking-tighter · uppercase
Frage / Preisblock
Warum ist das wichtig?
text-3xl md:text-4xl xl:text-[2.5rem]
font-medium · leading-[1.18] · text-balance
Karten-Titel
Heizlastberechnung
text-xl
font-bold · uppercase · hyphens-auto

Textrollen

Fließtext-Stufen
Tagline · font-mono text-xs tracking-widest

Lead · font-sans text-lg md:text-xl text-smoke leading-relaxed — der Absatz direkt unter einer Headline.

Standard · text-base text-smoke leading-relaxed — Karten und laufender Text.

Sekundär · text-sm text-ice — Hinweise, Fußnoten, Meta.

Regeln

ACHTUNGleading-[1.05] wird in index.css global per !important auf 0.9 gezogen. Für die großen Versal-Headlines ist das gewollt. Wer für eine kleinere, mehrzeilige Überschrift echte 1.05 braucht, nimmt einen ANDEREN Wert — etwa leading-[1.18] wie CapsuleBlock und PriceBlock.

SOLange deutsche Komposita bekommen hyphens-auto break-words. Die Silbentrennung greift über lang="de" am <html>.

SOIn Flex-Spalten mit langen Wörtern zusätzlich min-w-0 setzen — ein Flex-Kind schrumpft sonst nicht unter die Breite seines längsten Wortes.

NICHTEin Gewicht verwenden, das nicht geladen ist. Der Browser rechnet es künstlich hoch (faux bold) und die Schrift wirkt verwaschen.

04

Raster & Raum

Ein einziger Container-Rhythmus trägt die ganze Site. Jede Sektion, das Mega-Menü und der Footer fluchten auf dieselben Ränder.

Container

px-6 lg:px-[10%]
MaßWertWofür
px-6 lg:px-[10%]24 px / 10 %Seitenrand JEDER Sektion. Auch das Mega-Menü nutzt exakt diese Werte, damit es mit Logo und Inhalt fluchtet.
h-24 / pt-2496 pxHöhe der fixen Navbar und der Ausgleich am <main>. Derselbe Wert steckt im Anker-Offset von Lenis (−96) und in scroll-mt-24.
min-h-[calc(100svh-6rem)]Fenster − NavbarHero-Höhe. svh statt vh: keine Sprünge, wenn mobile Browser ihre Adressleiste ein- und ausblenden.
py-24 / py-3296 px / 128 pxVertikaler Sektionsabstand. 24 für dichte Abschnitte, 32 für ruhige.
max-w-2xl / 3xl / 4xl672 / 768 / 896 pxZeilenlänge für Fließtext. Headlines laufen breiter.
gap-[18px]18 pxAbstand zwischen Buttontext und Pfeil. Verbindlich für alle Text-Buttons.

Abstands-Stufen

Tailwind-Skala im Einsatz
gap-28 px
gap-416 px
gap-624 px
gap-832 px
gap-1248 px
gap-1664 px

Flächen-Texturen

.bg-grid

Technisches Raster, 4 rem, 3 % Weiß. Liegt auf einer eigenen ::before-Ebene und wird per mask-image nach unten ausgeblendet — sonst endete es an der Sektionskante hart. Im Einsatz auf den Beratungs-Sektionen der Leistungsseiten.

Blueprint-Linien

Drei senkrechte Linien bei 10 %, 50 % und 90 %, opacity-20. Auf /ueber, /kontakt und /karriere fixed über die ganze Seite — sie markieren den Container-Rhythmus.

05

Aktionen & Zustände

Vier Button-Rollen, zwei Link-Rollen — und der vollständige Katalog aller Hover-Bewegungen. Alle Demos unten sind live: darüberfahren zeigt das echte Verhalten.

Buttons

Auf dunkler Fläche
Kontakt aufnehmen
Auf Signal-Fläche
text-midnight ist hier die Schriftfarbe — nie als Fläche

Links

Formularfeld

Schwebendes Label · Fokus = Signal

Hover-Katalog

Elf Bewegungen tragen die gesamte Site. Sie sind absichtlich wenige und wiederholen sich — dadurch fühlt sich jede Fläche gleich an. Die Zahl in Klammern ist die tatsächliche Häufigkeit im Quelltext.

BewegungUtilitiesWoWas passiert
Farbwechsel auf Signalhover:text-signal transition-colorsNavigation, Footer-Links, ListeneinträgeTextfarbe → #FFD600. Der Grundhover der Site, 55× im Einsatz.
Pfeil schiebt nach rechtsgroup + group-hover:translate-x-1 transition-transformJeder Button mit ArrowRightDer Pfeil wandert 4 px, der Text bleibt stehen.
Pfeil steigt diagonalgroup-hover:translate-x-1 group-hover:-translate-y-1ArrowUpRight in Karten und Notdienst-Links4 px nach rechts und 4 px nach oben — die Richtung des Icons.
Flächen-Wipe von untenscale-y-0 group-hover:scale-y-100 origin-bottom duration-500Karten-Hintergründe, Meister-KachelEine Fläche wächst von der Unterkante hoch. 63× — das Leitmotiv.
Overlay schiebt hochtranslate-y-[100%] group-hover:translate-y-0 duration-500Primär-CTA auf /ueber und /karriereDie Gegenfarbe fährt von unten über den Button, Text bleibt oben (z-10).
Unterstrich wächstscale-x-0 group-hover:scale-x-100 origin-left duration-700Leistungskarten auf /leistungen2 px Signal-Linie läuft von links unter die Karte.
Invertierunghover:bg-white hover:text-midnightSlider-Pfeile, sekundäre ButtonsFläche und Schrift tauschen.
Karte hebt sichhover:border-signal/50 hover:bg-ocean/40 duration-500Nächste-Schritte-Karten der LeistungsseitenRand nimmt Signal an, Fläche wird eine Spur heller.
Nachzügler blendet einopacity-0 translate-y-4 group-hover:opacity-100 group-hover:translate-y-0„Details ansehen“ in den LeistungskachelnDie Zeile existiert erst beim Hover — sie soll die Karte nicht vollstellen.
Bild atmetscale-105 group-hover:scale-100 group-hover:saturate-100 duration-700Team-Bild auf der StartseiteDas Bild fährt in seine Normalgröße zurück und gewinnt Farbe.
Pfeil drehtgroup-hover:rotate-[-45deg] duration-300ArrowDownRight im Abschluss-CTA auf /ueberAus „nach unten rechts“ wird „nach rechts“.

Live-Proben

Flächen-Wipe von unten

Darüberfahren

Unterstrich wächst

Darüberfahren

Nachzügler blendet ein

Darüberfahren

Details ansehen
06

Komponenten

Jeder Baustein live und mit dem Markup, das auf den echten Seiten steht. Header und Footer dieser Seite sind selbst Teil des Katalogs — sie laufen oben und unten mit.

Leistungskachel

Startseite · Kernkompetenzen
01

Wärmepumpen

Hocheffiziente Luft- und Erdwärmepumpen inklusive Fördermittelberatung und hydraulischem Abgleich.

Details ansehen
02

Heizlastberechnung

Raumweise Berechnung nach DIN EN 12831 zum Festpreis. Digitales Aufmaß statt Faustformel.

Details ansehen

Frage-Block (CapsuleBlock)

Leistungsseiten · GEO-Kapsel
01

Warum ist die Heizlastberechnung für eine Wärmepumpe so wichtig?

Weil sie über Anschlussleistung und Stromverbrauch entscheidet. Die Signal-Linie links wächst beim Hover von oben nach unten.

Preis-Stufen (PriceBlock)

Festpreis-Angebot
W-1Bis 10 HeizkörperWohnung690 €
W-211 bis 18 HeizkörperEinfamilienhaus990 €
W-319 bis 25 HeizkörperGroßes Haus1.290 €
W-XLAb 26 HeizkörperMehrfamilienhausAngebot

Bewertungskarte

Baustein des Karussells

“Gute, schnelle und saubere Arbeit.”

S
S. Ugurlu

Kennzahl-Kachel

Auf Signal-Fläche · /ueber
15+
Jahre Erfahrung
100%
Meisterqualität
HH
Standort Hamburg

Marquee

WärmepumpenBadsanierungFußbodenheizungKlimatechnik
WärmepumpenBadsanierungFußbodenheizungKlimatechnik
WärmepumpenBadsanierungFußbodenheizungKlimatechnik
WärmepumpenBadsanierungFußbodenheizungKlimatechnik

animate-marquee · 120 s linear, endlos. Der Inhalt ist viermal hintereinandergesetzt und die Keyframes laufen auf −50 % — nur so ist der Umschlagpunkt unsichtbar.

Kundenstimmen (ganze Sektion)

Dieselbe Komponente wie auf Startseite und /ueber, Inhalt aus src/constants. Steuerbar sind nur Vorzeile, Überschrift und die Rahmung — alles andere soll auf jeder Seite gleich aussehen. Endlosschleife mit Peek links und rechts, Wischen auf Touch, Punkte und Pfeile zur Bedienung.

Komponente 06.7

Kundenstimmen live

5.0 auf Google

Erstklassige Arbeit und top Beratung! Wer einen zuverlässigen Fachbetrieb für eine Bad-Sanierung sucht, ist hier genau richtig. Die fachliche Kompetenz ist auf höchstem Niveau und die Umsetzung war einwandfrei.

O
O. Yokus

Super strukturierte Firma. Zuverlässig in jeglicher Vereinbarung, sowie eine sehr saubere und fachliche Ausführung. Jegliche Details werden kommuniziert man wird stets involviert. Preisleistung top.

A
Alexxino

Gute, schnelle und saubere Arbeit.

S
S. Ugurlu

Ich habe die Firma für eine Bodenheizung beauftragt, das hat super geklappt. Preisleistung der Hammer!

B
B. Baasner

Absolut empfehlenswert! Wir hatten am Wochenende eine akute Verstopfung und ich war kurz vorm Verzweifeln, da zahlreiche andere Notdienste entweder nicht erreichbar waren oder kein Interesse zeigten. Diese Firma hat sofort reagiert und uns unkompliziert geholfen.

P
P. Berisha

Nachdem mir kurzfristig andere Handwerker abgesprungen sind, hat Topallaj Haustechnik GmbH schnell reagiert und mir unkompliziert weitergeholfen. Die Arbeit war zuverlässig und professionell. Vielen Dank – klare Empfehlung!

A
A. Neu

Echte Lebensretter in der Not! Nach einem Defekt an meiner Toilette wurde mir hier sofort geholfen. Das Team war extrem schnell vor Ort, der Austausch verlief reibungslos und der Preis war absolut fair. Fachlich top und menschlich super – absolut empfehlenswert!

K
K.D. Paschen

Erstklassige Arbeit und top Beratung! Wer einen zuverlässigen Fachbetrieb für eine Bad-Sanierung sucht, ist hier genau richtig. Die fachliche Kompetenz ist auf höchstem Niveau und die Umsetzung war einwandfrei.

O
O. Yokus

Super strukturierte Firma. Zuverlässig in jeglicher Vereinbarung, sowie eine sehr saubere und fachliche Ausführung. Jegliche Details werden kommuniziert man wird stets involviert. Preisleistung top.

A
Alexxino

Gute, schnelle und saubere Arbeit.

S
S. Ugurlu

Ich habe die Firma für eine Bodenheizung beauftragt, das hat super geklappt. Preisleistung der Hammer!

B
B. Baasner

Absolut empfehlenswert! Wir hatten am Wochenende eine akute Verstopfung und ich war kurz vorm Verzweifeln, da zahlreiche andere Notdienste entweder nicht erreichbar waren oder kein Interesse zeigten. Diese Firma hat sofort reagiert und uns unkompliziert geholfen.

P
P. Berisha

Nachdem mir kurzfristig andere Handwerker abgesprungen sind, hat Topallaj Haustechnik GmbH schnell reagiert und mir unkompliziert weitergeholfen. Die Arbeit war zuverlässig und professionell. Vielen Dank – klare Empfehlung!

A
A. Neu

Echte Lebensretter in der Not! Nach einem Defekt an meiner Toilette wurde mir hier sofort geholfen. Das Team war extrem schnell vor Ort, der Austausch verlief reibungslos und der Preis war absolut fair. Fachlich top und menschlich super – absolut empfehlenswert!

K
K.D. Paschen

Erstklassige Arbeit und top Beratung! Wer einen zuverlässigen Fachbetrieb für eine Bad-Sanierung sucht, ist hier genau richtig. Die fachliche Kompetenz ist auf höchstem Niveau und die Umsetzung war einwandfrei.

O
O. Yokus
07

Bildsprache

Fotos sind Kulisse, nicht Hauptdarsteller. Sie werden entsättigt, abgedunkelt und in den Hintergrund gelegt, damit die Typografie vorne bleibt.

Original
Unbearbeitetes Original
Hero-Behandlung
Hero-Behandlung
Karten-Behandlung · Hover
Karten-Behandlung
RezeptUtilitiesWofür
Hero-Hintergrundgrayscale contrast-[1.1] opacity-50 mix-blend-luminosityDazu zwei Verläufe: von unten nach oben from-abyss via-abyss/60 und von links from-abyss via-transparent. Der Text steht auf der dunklen Seite.
Karte / Kachelopacity-40 mix-blend-luminosity group-hover:opacity-60 group-hover:scale-105Beim Hover wird das Bild wacher und größer.
FormatWebPAlle Motive liegen in /public/images/webp/. Dateinamen tragen die Leistung und den Betrieb — leistung-topallaj-haustechnik-01.webp.
Bildausschnittobject-cover object-[40%_20%]Der Ausschnitt wird pro Motiv gesetzt, damit Gesichter und Werkzeuge nicht angeschnitten werden.

SOnext/image mit fill + sizes benutzen. Ohne sizes lädt Next die größte Variante auch auf dem Telefon.

SONur das erste sichtbare Bild bekommt priority.

NICHTVolle Farbe und volle Deckkraft hinter Text. Die Entsättigung ist kein Effekt, sondern die Bedingung dafür, dass Weiß auf dem Bild lesbar bleibt.

08

Motion

Vier Kurven, ein Scroll-System, ein Attribut-Vokabular. Alles respektiert prefers-reduced-motion — dort steht jede Choreografie still und der Inhalt ist sofort da.

Ease-Kurven

thHeroM0,0 C0.25,0.15 0.3,1 1,1

Intro-Choreografie (PageIntro). Kein flacher Start, kein Pop: v₀ 0.65, v_max 2.10.

Site-Standardcubic-bezier(0.16, 1, 0.3, 1)

Framer-Motion-Auftritte, Overlay-Wipes, Karten-Reveals.

Slidercubic-bezier(0.22, 0.68, 0.36, 1)

Kundenstimmen-Karussell, 0.7 s pro Schritt.

sine-in-outcubic-bezier(0.37, 0, 0.63, 1)

Pfeil-Schleife im Hero-Button (animate-nudge-down, 1.9 s).

Intro-Choreografie · data-rv-*

PageIntro hängt im Layout und läuft auf JEDER Seite. Die Komponente rendert nichts — sie liest Attribute im Markup, zerlegt Text in Masken und fährt eine GSAP-Timeline. Die Masken clippen mit clip-path und negativem Inset, nicht mit overflow:hidden: die Punkte auf dem Ä in „WÄRME“ ragen 0.14 em über ihre Zeilenbox hinaus und fielen sonst weg. Seitlich wird gar nicht geclippt (−100 %), sonst verliert jede Headline, die breiter ist als ihre Spalte, ihr Ende.

AttributWirkungFalle
data-rv-navNavigationselement. Fade-Up ganz zu Beginn, Stagger 0.05 s.NICHT auf einen Wrapper setzen, der ein position:fixed-Kind enthält — GSAP lässt dort ein transform stehen und macht ihn zum Containing Block.
data-rv-wordsHeadline, Wort für Wort aus Masken herein. Stagger 0.59 s.Element-Kinder bleiben als GANZES ein Wort — ein Span mit bg-clip-text verlöre sonst seinen Träger.
data-rv-linesHeadline, Zeile für Zeile. Stagger 0.61 s, getrennt an den gesetzten <br>.Ohne <br> wird nach GERENDERTER Zeile gruppiert — erst nach document.fonts.ready.
data-rv-lines="body"Fließtext, flachere Maske (yPercent 112 statt 125).Startet erst, wenn der letzte Headline-Teil angelaufen ist.
data-rv-riseAlles Übrige. Schlichtes Fade-Up.Der Haken gehört auf den Link, nicht auf den Button darin — sonst kollidieren GSAPs Inline-Styles mit transition-colors.

Scroll-Reveal · FadeIn

delay=0

Fade-Up

IntersectionObserver, threshold 0.1, rootMargin 0 0 −50px. 700 ms, translate-y-8 → 0.

delay=150

Fade-Up

IntersectionObserver, threshold 0.1, rootMargin 0 0 −50px. 700 ms, translate-y-8 → 0.

delay=300

Fade-Up

IntersectionObserver, threshold 0.1, rootMargin 0 0 −50px. 700 ms, translate-y-8 → 0.

Endlos-Schleifen

UtilityDefinitionWo
animate-marquee120 s linear, translate3d 0 → −50 %Leistungs-Laufband
animate-nudge-down1.9 s sine-in-out, translate3d 0 → 5 px → 0Gelber Pfeil im Hero-Button „Unsere Leistungen“
animate-pulseTailwind-StandardPunkt vor der Hero-Tagline
animate-[spin_60s_linear_infinite]60 s, eine UmdrehungQuadrat-Ornament auf /ueber

Scroll-System

EinstellungWertWarum
Lenis duration1.2 sWeiches Nachlaufen, easing 1.001 − 2^(−10t).
anchors{ offset: -96 }Lenis führt Anker-Links selbst aus. Ohne das springt der Browser hart, während Lenis noch seine eigene Position hält — beide korrigieren sich danach gegenseitig und es ruckelt. Die 96 px sind die Navbar-Höhe.
lagSmoothing(80, 33)GSAP-TickerNICHT lagSmoothing(0) wie im Standard-Lenis-Rezept: blockiert der Main-Thread 250 ms, spulte GSAP danach in EINEM Frame um 250 ms vor.
?t=0.42QA-SchalterFriert die Partikel-Choreografie im Hero der Startseite an dieser Stelle des 24-s-Zyklus ein und legt ihre Uniforms auf window.__morph.

Partikel-Hero (ElementMorph)

Hier bewusst nicht als zweite Instanz eingebaut: Die Komponente leitet ihre Größe aus closest("section") und der gemessenen Textspalte [data-hero-copy] ab und würde in einem Demo-Kasten falsche Maße bekommen. Zu sehen ist sie im Hero der Startseite.

ParameterWert
Körner14 000 – 65 000, abgeleitet aus der Canvas-Fläche
Zyklus24 s: Welle → Verwandlung zu Feuer (~3,8 s) → Feuer (~5,8 s) → zurück zur Welle
AufbauEinmalig ~3 s, Anteil wächst mit der 1,7. Potenz — erst hunderte Körner, dann tausende
SchutzWebGL-Probe vor dem three.js-Import, compileAsync, RAF nur bei Sichtbarkeit, bei reduced-motion ein Standbild

Regeln

ACHTUNGTailwind v4 schreibt translate-*, scale-* und rotate-* auf die EIGENSTÄNDIGEN CSS-Eigenschaften translate, scale, rotate transform bleibt none. Zwei Folgen: Eine Übergangsliste transition-[opacity,transform] läuft ins Leere (richtig ist transition-[opacity,translate]), und wer beim Prüfen getComputedStyle(el).transform ausliest, bekommt überall none und hält funktionierende Hover für kaputt.

NICHTGSAP und Framer Motion auf dieselben Properties setzen. Wo die Intro-Choreografie opacity und y führt, darf daneben kein motion.div dasselbe animieren — zwei Systeme auf einer Property ergeben genau das Ruckeln, das man dann der Ease anlastet.

SOBeim Bauen eines neuen Reveals transition-[opacity,translate] statt transition-all — sonst animieren Breiten- und Farbwechsel unbeabsichtigt mit.

SODiese Seite gegenprüfen mit node scripts/verify-styleguide.mjs: misst Konsole, Overflow, Hover-Endzustände, Fokusfarben, Slider-Bedienung und den Reduced-Motion-Pass.

Consent-Dialog

Klaro, konfiguriert in src/components/CookieConsent/klaro-config.js, gestylt in cookie-style.css. Hier bewusst NICHT als Demo nachgebaut: Klaro sucht und erzeugt seine UI selbst und würde ein statisches Abbild mit denselben Klassen kapern. Der Fingerabdruck-Knopf unten rechts öffnet ihn jederzeit — das ist die DSGVO-Anforderung, die Einwilligung widerrufbar zu halten.

Pflege

Ändert sich ein Token, eine Komponente oder ein Hover, wird diese Seite in derselben Sitzung mitgezogen. Ein Style Guide, der nicht mitwandert, fängt an zu lügen — und niemand merkt es, weil er ja weiterhin aussieht wie eine Referenz.

Erreichbar über das ©-Zeichen im Footer. Nicht in der Sitemap, nicht indexiert.