# Design System — rmendes.net ## Palette **Surfaces:** Warm stone — not yellow, not cold. The difference is felt, not seen. | Token | Hex | Role | |-------|-----|------| | surface-50 | `#faf8f5` | Canvas (light) | | surface-100 | `#f4f2ee` | Cards, elevated surfaces (light) | | surface-200 | `#e8e5df` | Standard borders, dividers | | surface-300 | `#d5d0c8` | Strong borders, input borders | | surface-400 | `#a09a90` | Muted text, placeholders | | surface-500 | `#7a746a` | Secondary text | | surface-600 | `#5c5750` | Supporting text | | surface-700 | `#3f3b35` | Dark mode borders | | surface-800 | `#2a2722` | Cards, elevated surfaces (dark) | | surface-900 | `#1c1b19` | Canvas (dark) | | surface-950 | `#0f0e0d` | Deepest dark | **Accent (Warm Amber):** Default interactive color — links, CTAs, focus rings. | Token | Hex | Usage | |-------|-----|-------| | accent-400 | `#fbbf24` | Dark mode: links, hover | | accent-500 | `#f59e0b` | — | | accent-600 | `#d97706` | Light mode: links, buttons | | accent-700 | `#b45309` | Light mode: hover, pressed | ## Domain Colors Every post type and section has its own unique color identity. On collection pages, sparklines, card borders, icons, labels, hover states, and permalink links all use the domain color. No two post types share the same color. ### Post Type Colors (each unique — no sharing) | Post Type | Tailwind color | Light text | Dark text | Icon | Pages | |-----------|---------------|------------|-----------|------|-------| | **Articles** | indigo | indigo-600 | indigo-400 | document | `/articles/` | | **Notes** | teal | teal-600 | teal-400 | chat bubble | `/notes/` | | **Bookmarks** | amber | amber-600 | amber-400 | bookmark | `/bookmarks/` | | **Likes** | red | red-600 | red-400 | heart (filled) | `/likes/` | | **Replies** | sky | sky-600 | sky-400 | reply arrow | `/replies/` | | **Reposts** | green | green-600 | green-400 | refresh arrows | `/reposts/` | | **Photos** | purple | purple-600 | purple-400 | camera | `/photos/` | Each color is applied consistently across: sparkline wrapper, card `border-l`, SVG icon, label text, title hover, and permalink link. ### Section Colors (non-post-type pages) | Section | Tailwind color | Light text | Dark text | Pages | |---------|---------------|------------|-----------|-------| | **Blog** (mixed) | amber | amber-600 | amber-400 | `/blog/` (sparkline only — individual cards use their post-type color) | | **Code** | emerald | emerald-600 | emerald-400 | `/github/`, `/github/starred/` | | **Music** | purple | purple-600 | purple-400 | `/funkwhale/`, `/listening/` | | **Video** | red | red-600 | red-400 | `/youtube/` | | **Reading** | orange | orange-600 | orange-400 | `/blogroll/`, `/podroll/`, `/readlater/` | | **Neutral** | accent (amber) | — | — | `/` (home), `/about/`, `/cv/`, `/slashes/`, `/search/`, `/changelog/`, `/404` | ### Brand Colors (hardcoded hex — not domain colors) These are third-party brand colors used in syndication badges and social widgets. Not part of the domain system. | Brand | Hex | Where | |-------|-----|-------| | Mastodon | `#a730b8` | Syndication badges, social-activity widget | | Bluesky | `#0085ff` | Syndication badges, social-activity widget | | LinkedIn | `#0a66c2` | Syndication badges | | IndieNews | `#ff5c00` | Syndication badges | | Mastodon alt | `#6364ff` | Syndication badges | ### Domain Prominence (medium) On a domain page, these elements adopt the domain color: - **Page title** — tinted text or accent underline - **Links** — `text-[domain]-600 dark:text-[domain]-400` - **Hover states** — `hover:text-[domain]-700 dark:hover:text-[domain]-300` - **Card borders on hover** — `hover:border-[domain]-400 dark:hover:border-[domain]-600` - **Post-type badges** — domain-colored background/text These stay neutral (accent or surface) regardless of domain: - Header/navigation - Sidebar widget containers - Footer - Global UI (search, theme toggle) ## Depth **Subtle shadows.** One consistent shadow level for elevated surfaces. Borders + shadow together. | Element | Treatment | |---------|-----------| | Cards, widgets | `shadow-sm` + `border border-surface-200 dark:border-surface-700` | | Avatars, album art | `shadow-lg` (depth gives images presence against flat surfaces) | | Modals | `shadow-xl` (overlay needs clear elevation) | | Hover on cards | No shadow change — border color shift only | **Gradients are allowed** for: - Now-playing cards (domain color tinted: `bg-gradient-to-br from-[color]-500/10`) - YouTube hero/live cards - Icon containers in reading pages (`from-[color]-400 to-[color]-600`) Gradients are NOT used for: - Standard cards, widgets, or page backgrounds ## Typography | Role | Style | Usage | |------|-------|-------| | Page titles | Inter, `text-2xl sm:text-3xl font-bold` | Main page headings | | Section headings | Inter, `text-xl sm:text-2xl font-bold` | Widget titles, section headers | | Subheadings | Inter, `text-lg font-semibold` | Card titles, list item titles | | Body | Inter, `text-sm` or `text-base` | Paragraphs, descriptions | | Labels | Inter, `font-medium` or `font-semibold` | Badges, nav items, metadata labels | | **Dates/timestamps** | **`font-mono text-sm`** | Every `