Scaffold project foundation

Fresh start: Vite + React 19 + strict TS, Tailwind v4, PWA, Vitest/Playwright.
Replaces the prior DeepSeek-built app (deleted; ~135 documented bugs, no VCS).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-07 23:47:39 +02:00
commit fe84dc365d
11 changed files with 1842 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
@import 'tailwindcss';
/* Class-based dark mode: toggling `.dark` on <html> swaps the token values below. */
@custom-variant dark (&:where(.dark, .dark *));
/* ---- Semantic design tokens (light defaults) ---- */
:root {
--app-surface: #f5f2ec; /* page background */
--app-panel: #fffdf9; /* cards / panels */
--app-elevated: #ece6da; /* raised controls */
--app-line: #d8cfbe; /* borders */
--app-ink: #232018; /* primary text */
--app-muted: #6b6457; /* secondary text */
--app-accent: #9a6b1f; /* brand (deep gold) */
--app-accent-soft: #c79a4a;
--app-accent-ink: #fffdf9; /* text on accent */
--app-danger: #b3261e;
--app-success: #2e7d32;
--app-warning: #b06f00;
--app-info: #1565c0;
}
.dark {
--app-surface: #0f0f17;
--app-panel: #181826;
--app-elevated: #21212f;
--app-line: #2e2e40;
--app-ink: #e9e7ef;
--app-muted: #9a98ab;
--app-accent: #d4af37; /* gold */
--app-accent-soft: #b08d2e;
--app-accent-ink: #15151f;
--app-danger: #ef5350;
--app-success: #66bb6a;
--app-warning: #ffb74d;
--app-info: #64b5f6;
}
/* Expose tokens as Tailwind color utilities: bg-surface, text-ink, border-line, etc. */
@theme inline {
--color-surface: var(--app-surface);
--color-panel: var(--app-panel);
--color-elevated: var(--app-elevated);
--color-line: var(--app-line);
--color-ink: var(--app-ink);
--color-muted: var(--app-muted);
--color-accent: var(--app-accent);
--color-accent-soft: var(--app-accent-soft);
--color-accent-ink: var(--app-accent-ink);
--color-danger: var(--app-danger);
--color-success: var(--app-success);
--color-warning: var(--app-warning);
--color-info: var(--app-info);
--font-display: 'Iowan Old Style', 'Palatino Linotype', 'Book Antiqua', Georgia, serif;
}
html,
body,
#root {
height: 100%;
}
body {
margin: 0;
background: var(--app-surface);
color: var(--app-ink);
font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
-webkit-font-smoothing: antialiased;
}
/* Reduced-motion friendliness */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
/* Thin themed scrollbars */
* {
scrollbar-width: thin;
scrollbar-color: var(--app-line) transparent;
}