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 Palette
--text-primary #F2F2F2
--text-body #BEBEBE
--text-secondary #888888
--text-muted #767676
--text-inactive #555555
--bg-color #000000
--border-color #333333
Typography: Axis Std (Light)

The 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: Axis Std Light is used for English and languages requiring only standard Latin-1 characters. For non-Latin scripts (e.g., Arabic, Hindi, Japanese), the system automatically substitutes IBM Plex Sans, a globally comprehensive typeface, to ensure proper character rendering while preserving visual harmony with the primary brand aesthetic.

Typography: Andale Mono (Breadcrumbs)

Home / Design System

Note: Andale Mono is used for breadcrumbs and metadata in English. For non-Latin scripts, IBM Plex Mono is automatically substituted to ensure proper character rendering across all writing systems while preserving the high-end technical aesthetic.

Typography: Fira Code (Code Blocks)
function initDesignSystem() {
    console.log("Clean & Moody initialized");
}
Interactive: Links & Selection

Here is an example link showing the animated underline effect. Try selecting this text to see the custom selection highlight.

03 Media & Layout

Media is handled with care, ensuring that images and videos are responsive and lazy-loaded. Captions are used to provide context without cluttering the visual field.

Media Containers

Full-width, responsive containers designed to host diverse contentโ€”from Three.js canvases and video to SVG animations and third-party embedsโ€”while maintaining visual consistency and optimized loading performance.

Placeholder demonstrating lazy load
Content Image & Caption
Sample content image

Fig 1.0 โ€” A sample image caption with muted typography.

Tables
Component Status Coverage
Foundations Stable 100%
Navigation Stable 100%
Media In Progress 85%

04 Interactive Components

Interactive components are designed to be intuitive and accessible. Animations and feedback are used to ensure a smooth user experience.

Code Blocks with Copy
npm install gsap three
Contact Modal

Click to see the modal with form validation and success animation.

Visualization Containers

Visualization containers support both SVG and Three.js canvas elements, providing a consistent framework for interactive data displays across the project.

SVG Visualization Container
+1 -1 x f(x) x=0 0
Three.js Visualization Container

05 Localization

Localization is implemented using Gemini Flash 3 to provide dynamic translation of site content. Translations are cached server-side via Vercel KV, enabling instant language switching on subsequent visits without additional API calls. A persistent flag toggle in the primary navigation provides access to a searchable menu of over 100 languages.

Language Selector & Dropdown

The language selector is injected into the navigation bar. Upon interaction, a searchable dropdown is presented, allowing for the selection of target languages. Languages with audio narration support display a speaker icon (๐Ÿ”Š) to indicate availability. Transitions between languages are handled with a fade effect to maintain visual continuity. For non-Latin scripts, both primary typefaces are automatically substituted: Axis Std Light is replaced with IBM Plex Sans, and Andale Mono is replaced with IBM Plex Mono. This ensures proper character rendering across all writing systems while preserving the design language.

Interactive Toggle

06 Callouts & Notifications

Callout Wrappers

Specialized containers for highlighting information or providing contextual input.

Common excludes to consider: 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 design language.

Toast Notifications

Non-blocking feedback messages that appear at the bottom-right of the viewport. Use toastManager.show(message, options) to trigger them programmatically.

Success

The operation completed successfully.

Success

Message sent.

Information

New version available.

Warning

Disk space is running low.

Error

Failed to save changes.

07 Mathematical Equations

Equation Blocks

For complex, multi-line, or centered mathematical expressions, the .equation-block container is used. This class ensures proper spacing, centering, and overflow handling for KaTeX-rendered content.

$$\begin{aligned} \frac{dx}{dt} &= \sigma(y - x) + \mu \tanh(z) \\[0.5em] \frac{dy}{dt} &= \rho x - y - xz \\[0.5em] \frac{dz}{dt} = xy - \beta z \end{aligned}$$
Inline Math

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. A combination of semantic HTML, ARIA landmarks, and dynamic announcers is used to ensure a robust experience for all users.

Audio Narration

Interactive audio narration is provided for all content pages, enabling users to listen to articles. The narration system uses ElevenLabs' voice synthesis and includes keyboard shortcuts (Option + P) for quick access. Narration is available in six languages serving over half of the world's population: English, Spanish, Chinese, Hindi, Arabic, and French. This feature benefits users with visual impairments, reading difficulties, cognitive disabilities, or those who prefer auditory learning.

Skip Links

A 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 & Roles

Semantic landmarks are used to provide a clear map of the page structure for screen readers.

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.
Dynamic Announcers

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>
Reduced Motion Support

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. This includes page transitions, modal animations, hover effects, and narration highlighting.

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
    }
}
Color Contrast

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
Keyboard Navigation

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 allow users to bypass 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
Focus Management

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. This pattern 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();
    }
}
Touch Targets

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, ensuring adequate tap areas while maintaining the intended visual hierarchy.

RTL Language Support

Full 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);
}
Heading Hierarchy

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 & Footer

The logo in the header above demonstrates the glitch animation. Below is the actual site footer, which demonstrates the branding in its terminal state.