Custom SMACSS-derivative CSS framework replacing Tailwind CSS. All styles live in src/styles/.
theme.css— CSS custom properties for light and dark modesbase.css— Resets, typography, scrollbar, screen reader utilitiesanimations.css— Keyframes (enter, exit, spin, countUp) and animation classesstate.css— Global state classes (.is-active, .is-disabled, .is-loading, .is-hidden)layout.css— App shell, sidebar, top bar, page container, layout utilitiesmodules/— One CSS file per UI component and page componentindex.css— Single import entry point
Components use data-variant and data-size attributes instead of CVA:
<Button data-variant="outline" data-size="sm" className="button" />.button[data-variant="outline"] { ... }
.button[data-size="sm"] { ... }Page-specific card styles use compound selectors to beat base component specificity:
/* Base: specificity 0-1-0 */
.card { padding-top: 1rem; }
/* Override: specificity 0-2-0, always wins */
.card.metric-card { padding: 1.5rem; }640px— Small (sm): filter bars go horizontal, summary grids 2-col768px— Medium (md): sidebar visible, desktop padding, dashboard grids1024px— Large (lg): chart grids go 2-col
All colors use CSS custom properties defined in theme.css. Dark mode is always active (className="dark" on html). Variables switch values under .dark selector.
.text-positive,.text-negative,.text-foreground,.text-muted— text colors.w-full— full width.capitalize— text-transform.sr-only— screen reader only.animate-spin,.animate-in,.animate-out— animations