:root {
--bg: #1c1512;
--surface: rgba(43, 30, 25, 0.7);
--surface-elevated: rgba(56, 39, 32, 0.85);
--border: rgba(212, 163, 115, 0.1);
/* Synced from RuForge settings (see `accentCss.ts`); defaults to sand gold */
--accent: #EDCF9B;
--accent-glow: rgba(237, 207, 155, 0.28);
--text: #fafaf9;
--text-muted: #a8a29e;
--radius-input: 12px;
--radius-card: 20px;
--radius-modal: 24px;
--radius-pill: 999px;
}
Built with
Tailwind CSS
Tailwind v4 utility classes plus rf-* CSS tokens style the desktop app and the public site from the same palette idea.
The app uses @tailwindcss/vite with Tailwind 4. Global tokens live in src/index.css under :root (--bg, --accent, --surface, radii). Settings accent color writes into --accent at runtime via accentCss.ts. Frosted player dock, queue drawer blur, and downloader hero are plain utility stacks, not a component library.
The marketing site loads the same major Tailwind version through website/src/styles/global.css @theme block (--color-rf-bg, --color-rf-accent, etc.). Classes like rf-container, rf-link-card, and mega-menu overrides keep docs visually aligned without importing app CSS.
Scrollbars use a shared rf-scrollbar class (slim accent thumb, no native arrow buttons) on both surfaces. Horizontal carousels opt out with scrollbar-none.
Mini player adds height breakpoints (compact, micro, tiny) where controls hide or shrink based on window size. Responsive behavior is mostly Tailwind breakpoints plus a few inline measurements for micro layouts.
In the repo
Where it shows up
-
@tailwindcss/vitein root andwebsite/Vite configs -
src/index.cssandwebsite/src/styles/global.css - Component utilities in
PlayerView.tsx,DownloadJobQueuePanel.tsx,SiteHeader.astro