feat: Premium-Redesign + Fortschritts-UI
- Zentrales Design-Token-System in index.css (Farben/Spacing/Radien/Schatten/Fonts) - Alle Live-Screens auf Tokens: Karten, BottomNav (aktiver Pill), Feed, Auth - Auth: DM Sans entfernt, Akzent vereinheitlicht (Braun), Tokens gescoped - Profil neu: Tagesziel-Ring, Streak-Heatmap, Wochen-Graph, echter Skills-Radar, Eckdaten - Feed-EP-Badge mit Tagesziel-Ring (ProgressRing-Komponente) - Game/Pro als gestaltetes 'Bald verfügbar' (ComingSoon) - Konsumiert neue API: getStats/setDailyGoal, degradiert sauber bei 404 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,65 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Lora:wght@700&family=Nunito:wght@400;500;600;700;800&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,500&family=Nunito:wght@400;500;600;700;800&display=swap');
|
||||
|
||||
/* ── Design Tokens ──────────────────────────────────────────────
|
||||
Single source of truth. Warmes, ruhiges Konzept – nur diszipliniert.
|
||||
Bestehende Palette normalisiert (ein Grün, ein Rot, klare Skalen). */
|
||||
:root {
|
||||
/* Flächen & Hintergrund */
|
||||
--bg: #EDE0CE; /* warmes Creme – App-Hintergrund */
|
||||
--bg-2: #F2E8DA; /* leicht heller, für Sektionen */
|
||||
--surface: #FBF7F0; /* Karten / Panels */
|
||||
--surface-2: #F4EEE3; /* eingelassene Flächen, Tracks */
|
||||
--surface-sunk: #ECE3D4; /* Vertiefungen / Heatmap-Leerzelle */
|
||||
|
||||
/* Text */
|
||||
--text: #4A3728; /* primärer warmer Braunton */
|
||||
--text-strong: #3A2515; /* Überschriften / Betonung */
|
||||
--text-muted: #8C7A65; /* sekundär */
|
||||
--text-soft: #A89F8C; /* tertiär / Hints */
|
||||
|
||||
/* Akzente */
|
||||
--accent: #7A5C3A; /* Aktion / aktiv */
|
||||
--accent-strong: #5C3D22;
|
||||
--accent-soft: #EFE6D6; /* heller Akzent-Hintergrund (Pills) */
|
||||
--gold: #C4A85A; /* EP / Belohnung */
|
||||
--gold-soft: #F0E4C4;
|
||||
--success: #3D7055; /* genau ein Grün */
|
||||
--success-soft: #E4EDE5;
|
||||
--danger: #C0544A; /* genau ein warmes Rot */
|
||||
--danger-soft: #FBF0EF;
|
||||
|
||||
/* Linien */
|
||||
--border: #DDD0BF;
|
||||
--border-soft: #E7DDCD;
|
||||
|
||||
/* Spacing-Skala */
|
||||
--sp-1: 4px;
|
||||
--sp-2: 8px;
|
||||
--sp-3: 12px;
|
||||
--sp-4: 16px;
|
||||
--sp-5: 24px;
|
||||
--sp-6: 32px;
|
||||
|
||||
/* Radien */
|
||||
--r-sm: 12px;
|
||||
--r-md: 16px;
|
||||
--r-lg: 22px;
|
||||
--r-pill: 999px;
|
||||
|
||||
/* Schatten – warm getönt, nie hartes Schwarz */
|
||||
--shadow-soft: 0 1px 2px rgba(60, 40, 20, 0.05), 0 2px 8px rgba(60, 40, 20, 0.06);
|
||||
--shadow-card: 0 1px 2px rgba(60, 40, 20, 0.06), 0 4px 16px rgba(60, 40, 20, 0.09), 0 12px 40px rgba(60, 40, 20, 0.06);
|
||||
--shadow-pop: 0 6px 24px rgba(60, 40, 20, 0.16);
|
||||
|
||||
/* Typografie */
|
||||
--font-ui: 'Nunito', -apple-system, BlinkMacSystemFont, sans-serif;
|
||||
--font-display: 'Lora', Georgia, serif;
|
||||
|
||||
/* Bewegung */
|
||||
--ease: cubic-bezier(0.22, 0.61, 0.36, 1);
|
||||
--dur-fast: 0.15s;
|
||||
--dur: 0.28s;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
@@ -7,12 +68,14 @@
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Nunito', -apple-system, BlinkMacSystemFont, sans-serif;
|
||||
background: #EDE0CE;
|
||||
color: #4A3728;
|
||||
font-family: var(--font-ui);
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
height: 100dvh;
|
||||
overflow: hidden;
|
||||
line-height: 1.7;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
|
||||
#root {
|
||||
@@ -20,3 +83,30 @@ body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
/* Gemeinsamer, ruhiger Loader/Spinner */
|
||||
@keyframes spin { to { transform: rotate(360deg); } }
|
||||
|
||||
.app-spinner {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border: 2px solid var(--border-soft);
|
||||
border-top-color: var(--accent);
|
||||
border-radius: 50%;
|
||||
animation: spin 0.7s linear infinite;
|
||||
}
|
||||
|
||||
/* Dezenter Seitenwechsel */
|
||||
@keyframes pageEnter {
|
||||
from { opacity: 0; transform: translateY(6px); }
|
||||
to { opacity: 1; transform: none; }
|
||||
}
|
||||
.page-enter { animation: pageEnter var(--dur) var(--ease); }
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
*, *::before, *::after {
|
||||
animation-duration: 0.001ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.001ms !important;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user