feat: App-Hülle mit Header, Theme-Umschalter und Übersicht

Layout mit Inline-Skript, das data-theme setzt, bevor der erste Pixel
gemalt wird — sonst blitzt beim Laden das falsche Farbschema auf. Logo als
React-Komponente statt als Bilddatei: nimmt Theme-Farben an, spart einen
Netzwerkabruf und die Verläufe liegen einmalig im Root-Layout.

Im hellen Modus greifen eigene Tokens für Verlaufstext und Wortmarke; der
vollfarbige Signaturverlauf fällt auf warmem Weiß sonst unter WCAG AA.
This commit is contained in:
Florian Wilde
2026-09-01 18:46:47 +02:00
parent 01c0f9bc9f
commit b001e62695
11 changed files with 880 additions and 1 deletions
+17 -1
View File
@@ -41,7 +41,15 @@
--fl-accent: var(--fl-amber); /* als Textfarbe nutzbar: 11,3:1 */
--fl-accent-alt: var(--fl-magenta); /* als Textfarbe nutzbar: 6,0:1 */
--fl-on-accent: #1a1024; /* Text auf dem Gradient: min. 5,5:1 */
/* Markenstops fuer SVG-Verlaeufe (Logo). Als Variablen, damit das Logo im
Light Mode dunkler wird und lesbar bleibt, ohne die Identitaet zu aendern. */
--fl-brand-1: #ffc46b;
--fl-brand-2: #ffb454;
--fl-brand-3: #ff4d9d;
--fl-gradient: linear-gradient(115deg, var(--fl-amber-soft) 0%, var(--fl-amber) 38%, var(--fl-magenta) 100%);
/* Fuer Text: im Dunkeln identisch, im Hellen deutlich abgedunkelt (AA). */
--fl-gradient-ink: var(--fl-gradient);
--fl-gradient-soft: linear-gradient(115deg, #ffb45426 0%, #ff4d9d26 100%);
--fl-glow: 0 0 0 1px #ffb4541f, 0 8px 34px -10px #ff4d9d59, 0 2px 12px -4px #ffb45440;
--fl-glow-strong: 0 0 0 1px #ffb4543d, 0 14px 48px -12px #ff4d9d80, 0 4px 18px -6px #ffb4546b;
@@ -80,7 +88,15 @@
--fl-accent: #8a4b00; /* als Textfarbe: 6,4:1 */
--fl-accent-alt: #b01262; /* als Textfarbe: 6,4:1 */
--fl-on-accent: #23122c; /* Text auf dem Gradient: min. 6,1:1 */
/* Logo im Hellen: dieselbe Bernstein-zu-Magenta-Bewegung, nur tiefer
angesetzt — sonst verschwindet die Wortmarke auf dem warmen Weiss. */
--fl-brand-1: #c26a00;
--fl-brand-2: #b35d00;
--fl-brand-3: #c9186f;
--fl-gradient: linear-gradient(115deg, var(--fl-amber-soft) 0%, var(--fl-amber) 38%, var(--fl-magenta) 100%);
/* Verlaufstext im Hellen: beide Enden erfuellen AA auf --fl-bg. */
--fl-gradient-ink: linear-gradient(115deg, #8a4b00 0%, #a33a2a 45%, #b01262 100%);
--fl-gradient-soft: linear-gradient(115deg, #ffb4542e 0%, #ff4d9d2e 100%);
--fl-glow: 0 0 0 1px #d8a15c33, 0 8px 26px -12px #ff4d9d4d, 0 2px 10px -4px #ffb4544d;
--fl-glow-strong: 0 0 0 1px #d8a15c59, 0 14px 40px -14px #ff4d9d66, 0 4px 16px -6px #ffb45473;
@@ -181,7 +197,7 @@
-------------------------------------------------------------------------- */
@utility fl-gradient-text {
background-image: var(--fl-gradient);
background-image: var(--fl-gradient-ink);
background-clip: text;
-webkit-background-clip: text;
color: transparent;