# CSS-Framework — CSS Framework für Jinja2 / HTMX Webapps Ein schlankes CSS-Framework für konsistente, moderne Webapplikationen. Classless wo möglich, opt-in Klassen wo nötig. Gebaut für Jinja2-Templates und HTMX-Interaktionen. --- ## Dateien & Struktur ``` framework/ ├── tokens.css — Design Tokens (CSS Custom Properties) ├── base.css — Classless Reset + semantische HTML-Elemente ├── components.css — Opt-in Komponenten-Klassen ├── utilities.css — Minimale Helfer-Klassen ├── main.css — Entry Point (importiert alle vier) └── fonts.css — Template für lokale Google Fonts (optional) ``` **Einbinden in Projekten:** ```html ``` --- ## Design Tokens (`tokens.css`) Alle Designentscheidungen sind als CSS Custom Properties definiert. **Zentrale Anlaufstelle für alle Anpassungen.** ### Farbsystem Zweischichtig aufgebaut: Rohe Palette + Semantische Aliases. ```css /* Nie direkt verwenden — nur als Rohwerte */ --color-accent-500: #6366f1; /* Diese verwenden — semantische Bedeutung */ --accent: var(--color-accent-500); --accent-hover: var(--color-accent-600); --accent-subtle: var(--color-accent-50); ``` **Primärfarbe anpassen:** Nur `--color-accent-*` in `tokens.css` ändern — alle Komponenten folgen automatisch. | Token | Verwendung | |---|---| | `--bg`, `--bg-subtle`, `--bg-muted` | Seitenhintergründe | | `--surface`, `--surface-raised`, `--surface-overlay` | Karten, Modals, Dropdowns | | `--border`, `--border-strong`, `--border-focus` | Rahmenlinien | | `--text`, `--text-muted`, `--text-subtle` | Texthierarchie | | `--accent`, `--accent-hover`, `--accent-active` | Primärfarbe + Zustände | | `--color-success/warning/danger/info` | Semantische Status-Farben | ### Dark Mode Nur semantische Aliases werden überschrieben — Rohpalette bleibt unverändert. ```html ``` ```css [data-theme="dark"] { --bg: var(--color-black); --surface: #161920; --text: var(--color-gray-100); /* ... alle Aliases werden überschrieben --> } ``` Umschalten und Speichern übernimmt `theme.js` (siehe „JavaScript API → Theme“), ohne Inline-Skript. ### Spacing 4px-Grid, 12 Stufen: `--space-1` (4px) bis `--space-24` (96px). ```css --space-1: 0.25rem; /* 4px */ --space-2: 0.5rem; /* 8px */ --space-4: 1rem; /* 16px */ --space-6: 1.5rem; /* 24px */ --space-8: 2rem; /* 32px */ ``` ### Typografie ```css --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif; --font-mono: "JetBrains Mono", ui-monospace, monospace; --text-xs: 0.75rem; /* 12px */ --text-sm: 0.875rem; /* 14px */ --text-base: 1rem; /* 16px */ --text-lg: 1.25rem; /* 20px */ --text-xl: 1.5rem; /* 24px */ --text-2xl: 1.875rem; /* 30px */ --text-3xl: 2.25rem; /* 36px */ --text-4xl: 3rem; /* 48px */ ``` ### Weitere Token-Gruppen | Gruppe | Tokens | |---|---| | Border Radius | `--radius-sm/md/lg/xl/2xl/full` | | Schatten | `--shadow-xs/sm/md/lg/xl`, `--shadow-focus` | | Übergänge | `--duration-fast/base/slow`, `--ease/ease-out/ease-in`, `--transition` | | Layout | `--container-sm/md/lg/xl/2xl`, `--nav-height`, `--sidebar-width` | | Z-Index | `--z-base/raised/dropdown/sticky/overlay/modal/toast` | --- ## Classless Base (`base.css`) Semantisches HTML benötigt **keine Klassen** für grundlegendes Styling. Einfach valides HTML schreiben: ```html
Text mit fett, kursiv, Link, Code.
Zitat— Autor