A living style guide for misterburton.com.
01 Foundations
The foundations of this design system are my photographs, a style I've long referred to as Unintentionally Moody.
Color PaletteThe Quick Brown Fox (h2)
The Quick Brown Fox (h3)
The Quick Brown Fox Jumps Over the Lazy Dog (paragraph). Burton is an artist and designer living in San Francisco, California.
Note: IBM Plex Sans (Light) is the primary typeface for body text and headings, covering Latin, Cyrillic, and Greek. For other writing systems (e.g., Arabic, Hindi, Japanese, Korean), the matching IBM Plex cut (Plex Sans Arabic, Devanagari, JP, KR, and so on) is loaded automatically, keeping a single consistent family across every language.
Home /
Note: IBM Plex Mono is used for breadcrumbs, labels, and metadata. For non-Latin scripts, the matching IBM Plex Mono cut renders those systems, so the high-end technical look holds across all languages.
function initDesignSystem() {
console.log("Clean & Moody initialized");
}
Here is an example link showing the animated underline effect. Try selecting this text to see the custom selection style.
03 Media & Layout
Images and videos are responsive and lazy-loaded. Captions add context without cluttering the visual field.
Media ContainersFull-width, responsive containers that host varied content, from Three.js canvases and video to SVG animations and third-party embeds, while keeping visual consistency and fast loading.
Fig 1.0: A sample image caption with muted typography.
| Component | Status | Coverage |
|---|---|---|
| Foundations | Stable | 100% |
| Navigation | Stable | 100% |
| Media | In Progress | 85% |
04 Interactive Components
Interactive components stay intuitive and accessible. Animations and feedback keep the experience smooth.
Code Blocks with Copynpm install gsap three
Click to see the modal with form validation and success animation.
Visualization containers handle both SVG and Three.js canvas elements, with a consistent framework for interactive data displays across the project.
05 Localization
Localization is implemented using Claude Opus 4.5 to provide dynamic translation of site content. Translations are cached server-side via Vercel KV, so language switching is instant on later visits without extra API calls. A persistent flag toggle in the primary navigation opens a menu of 11 languages that cover over 75% of the world's population.
Language Selector & DropdownThe language selector is injected into the navigation bar. Tap it and a searchable dropdown appears for picking a target language. Languages with audio narration display a speaker icon (๐). Transitions between languages use a fade so the layout doesn't jump. For non-Latin scripts, the matching IBM Plex cuts load automatically (e.g. IBM Plex Sans Arabic, Devanagari, Japanese, and Korean), so every language stays within one consistent type family.
06 Callouts & Notifications
Callout WrappersSpecialized containers that call out information or take contextual input.
Folders you might skip: drafts, archive, vendor, dist, build.
Pro tip
This aesthetic uses semi-transparent gradients and high-contrast accent borders to draw attention without breaking the moody visual style.
Non-blocking feedback messages that appear at the bottom-right of the viewport. Use toastManager.show(message, options) to trigger them programmatically.
Success
Success
Information
Warning
Error
07 Mathematical Equations
Equation BlocksFor complex, multi-line, or centered mathematical expressions, use the .equation-block container. It handles spacing, centering, and overflow for KaTeX-rendered content.
Mathematical expressions can also be used inline, such as the sigmoid function \(\tanh(z)\), or specific variables like \(x\), \(y\), and \(z\). The .katex-inline class handles the necessary vertical alignment and scaling for these elements.
08 Accessibility
Accessibility is a first-class citizen of this design system. Semantic HTML, ARIA landmarks, and dynamic announcers give everyone a solid experience.
Audio NarrationInteractive audio narration runs on all content pages so visitors can listen to articles instead of reading. The narration system uses ElevenLabs' voice synthesis and includes keyboard shortcuts (Option + P) for quick access. Narration is available in eleven languages serving over three-quarters of the world's population: English, Spanish, Chinese, Hindi, Arabic, French, Portuguese, Russian, Indonesian, Japanese, and Korean. It helps people with visual impairments, reading difficulties, cognitive disabilities, or anyone who prefers learning by ear.
Skip LinksA hidden-by-default link at the top of every page allows keyboard users to bypass global navigation and jump directly to the primary content.
Landmarks & RolesSemantic landmarks give screen readers a clear map of the page structure.
| Element/Role | Purpose |
|---|---|
<main> |
Identifies the primary content of the document. |
<nav> |
Groups navigation links (Global, Section, and Breadcrumbs). |
role="region" |
Identifies distinct sections of content, like carousels or galleries. |
role="status" |
Used with aria-live="polite" for non-interruptive updates. |
Off-screen live regions provide real-time feedback for dynamic actions like carousel transitions or audio narration progress.
<div id="live-announcer" class="sr-only" aria-live="polite" role="status"></div>
Users who prefer reduced motion (due to vestibular disorders, motion sensitivity, or personal preference) are automatically accommodated. When prefers-reduced-motion: reduce is detected, all CSS animations and transitions are disabled or replaced with instant state changes. That covers page transitions, modal animations, hover effects, and the moving emphasis shown during narration.
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
All text colors meet WCAG AA contrast requirements against the black background (#000000). Primary text (#F2F2F2) achieves a 17.4:1 ratio, body text (#BEBEBE) achieves 11.5:1, and secondary text (#888888) achieves 5.93:1. The muted text token (#767676) maintains the minimum 4.5:1 ratio for normal text.
| Token | Color | Contrast Ratio | WCAG Level |
|---|---|---|---|
| --text-primary | #F2F2F2 | 17.4:1 | AAA |
| --text-body | #BEBEBE | 11.5:1 | AAA |
| --text-secondary | #888888 | 5.93:1 | AA |
| --text-muted | #767676 | 4.55:1 | AA |
All interactive elements are fully keyboard accessible. Focus indicators use a consistent double-ring pattern (2px black inner, 2px white outer) that provides excellent visibility against both dark and light elements. Tab order follows logical reading order, and skip links let people jump past repetitive navigation.
| Key | Action |
|---|---|
Tab |
Move focus to next interactive element |
Shift+Tab |
Move focus to previous interactive element |
Enter / Space |
Activate focused button or link |
Escape |
Close modal or dropdown |
Option+P |
Toggle audio narration |
Modal dialogs implement proper focus trapping to prevent keyboard users from accidentally navigating outside the modal while it's open. When a modal opens, focus moves to the first interactive element. When closed, focus returns to the element that triggered the modal. It follows the WAI-ARIA dialog design pattern.
// Focus trap implementation
function handleTabKey(e) {
if (e.key !== 'Tab') return;
const focusable = modal.querySelectorAll('button, input, textarea');
if (e.shiftKey && document.activeElement === first) {
e.preventDefault();
last.focus();
} else if (!e.shiftKey && document.activeElement === last) {
e.preventDefault();
first.focus();
}
}
Primary interactive elements such as navigation buttons (menu toggle, flag toggle) and audio controls meet or exceed the recommended 44x44 pixel minimum touch target size. The design balances accessibility with visual aesthetics, giving each control enough tap area without disrupting the layout.
RTL Language SupportFull right-to-left (RTL) support is implemented for Arabic, Hebrew, Persian, Urdu, and other RTL languages. When an RTL language is selected, the dir="rtl" attribute is automatically applied to the document, and CSS handles layout mirroring including navigation positioning, text alignment, border directions, and icon flipping.
/* RTL layout adjustments */
[dir="rtl"] .breadcrumb-header h1 {
flex-direction: row-reverse;
}
[dir="rtl"] .section-nav {
right: auto;
left: 2rem;
}
[dir="rtl"] blockquote {
border-left: none;
border-right: 3px solid rgba(255, 255, 255, 0.2);
}
Each page maintains a single <h1> element for the page title, with subsequent headings following a logical hierarchy (h2, h3, h4). This structure enables screen reader users to navigate efficiently using heading shortcuts and understand the document outline.
09 Brand Identity
Logo & FooterThe logo in the header above demonstrates the glitch animation. Below is the actual site footer, which demonstrates the branding in its terminal state.