- Added design.json file containing the design system's version, last updated date, philosophy, principles, color palette, typography, spacing, layout, and component specifications. - Established a cohesive visual language and interaction principles to enhance user experience. - Included detailed accessibility guidelines and implementation notes for future development. This commit lays the foundation for a unified design approach across the platform.
15 KiB
United Tattoo Design System - Analysis Summary
Overview
I have created a comprehensive design.json file that serves as the single source of truth for the United Tattoo design system. This document is located at /home/nicholai/Documents/dev/united-tattoo-design-language/design.json and contains complete specifications for implementing the design language consistently across projects.
Key Findings
1. Visual Design Language
The United Tattoo design system is built on a sun-washed plaster aesthetic with gallery pacing principles. The core visual identity draws inspiration from:
- Warm, desaturated color palettes (burnt oranges, sage greens, charcoal blacks)
- Plaster wall textures catching diagonal afternoon light
- Museum-quality gallery pacing (spacious, staggered, editorial)
- Macro photography of artistic materials and architectural details
2. Color Palette
Primary Colors:
- Burnt Orange (#E67E50): Hero gradients, warm spotlight moments, CTA fills
- Terracotta (#D87850): Secondary buttons, form focus states, interactive elements
- Burnt Dark (#b0471e): Primary button backgrounds, link underlines, strong accents
Secondary Colors:
- Sage Concrete (#7A8B8B): Page background gradients, cards, subtle overlays
- Sage (#a28f79): Success states, calming accent moments
- Moss (#6f5c49): Section labels, metadata, card titles
Neutral Colors:
- Charcoal (#1c1915) & Ink (#241b16): Primary text and headings
- Cream (#fff7ec) & Sand (#f2e3d0): Light backgrounds, card fills
- White (#ffffff): Button text, form inputs
All colors have been mapped with hex values, RGB equivalents, CSS variable names, usage contexts, and accessibility considerations.
3. Typography System
Font Families:
-
Playfair Display (serif): Headlines, display text, statements
- Weights: 400 (regular), 600 (semibold)
- Usage: "Museum placards feel" - sculptural, precise statements
- Sizing: clamp(2.5rem, 5vw, 3.8rem) for main heading
-
Space Grotesk (sans-serif): Body copy, interface text, metadata
- Weights: 400, 500, 600
- Usage: Quiet, generous tracking for readability
- Minimum size: 16px to maintain legibility on textured backgrounds
Typography Rules:
- Eyebrow: 0.75rem, uppercase, 0.3em letter-spacing
- Section Labels: 0.85rem, uppercase, 0.3em tracking
- Display: clamp(2.5rem, 5vw, 3.8rem) with 1.1 line height
- Lead Text: clamp(0.95rem, 2vw, 1.3rem) with 54ch max-width
- Accent: 0.9rem, uppercase, 0.25em letter-spacing
4. Spacing & Layout Systems
Base Unit: 0.5rem Responsive Container Padding: clamp(1.5rem, 4vw, 5rem)
Grid Systems:
- grid-two: Auto-fit 2-column grid (320px minimum)
- sticky-split: Sticky sidebar (0.85fr) + flexible column (1fr)
- layout-examples: 3-column gallery layout (responsive to 1fr below 720px)
- interaction-split: Interaction principles (0.85fr) + examples (1fr)
Key Layout Patterns:
- Full-bleed sections extend edge-to-edge (100vw with negative margins)
- Sticky positioning with dynamic offsets (top: 2rem to 5rem)
- Mobile-first responsive approach with breakpoint at 720px
- Generous whitespace emphasizing gallery pacing
5. Design Style Elements
Border Radius Scale:
- Buttons & Form inputs: 12px
- Cards: 18-24px (depending on card type)
- Large cards: 22-28px
- Filmstrip items: 32px
- Chips: 999px (full pill shape)
Shadow System:
- Subtle (4px, 0.08 opacity): Small card interactions
- Medium (12-14px, 0.1-0.18 opacity): Standard cards, forms
- Large (20-25px, 0.2 opacity): Hero sections, elevated content
- Filmic (40px, 0.25 opacity): Filmstrip items, largest elements
Border Treatment:
- Primary: 1px solid with rgba(122, 139, 139, 0.2) for subtle definition
- Form focused: 1px terracotta with 3px rgba(210, 106, 50, 0.2) glow
- Dashed: 1px dashed rgba(122, 139, 139, 0.3) for sample containers
Backdrop Effects:
- Hero overlay uses: blur(12px) saturate(110%)
- Creates frosted glass effect on sand/cream background
6. Component Library
Buttons:
- Primary (.demo-btn.primary): Burnt background, white text, 0.25 shadow
- Hover: Scale 1.05, translateY(-1px), enhanced shadow
- Secondary (.demo-btn.secondary): Terracotta, white text
- Ghost (.demo-btn.ghost): Sand background, ink text, bordered
Cards:
- Data Card: Gradient background (rgba 0.95-0.9), 22px radius, 1.8rem padding
- Component Card: White background (0.88 opacity), 18px radius
- Motion Example Card: Gradient, 20px radius, 2rem padding
- Scroll Step: White (0.92 opacity), 20px radius
Form Elements:
- Container: Gradient background, 22px radius, 2.2rem padding
- Input: 12px radius, terracotta focus state, 3px glow on focus
- Label: 0.75rem, 600 weight, 0.25em tracking, uppercase
Calendar:
- Grid: 7 columns with 0.4rem gap
- Day: Square (aspect-ratio 1/1), 8px radius
- Booked State: Terracotta background, white text, shadow
Filmstrip:
- Horizontal scroll with scroll-driven animation
- Items: 32px radius, clamp(420px, 55vw, 820px) width
- Progress bar: 2px height, burnt-to-rose gradient
7. Animation & Motion Principles
Timing Standards:
- Fast: 0.2s (button hover, scale effects)
- Normal: 0.3s (card interactions, link effects)
- Slow: 0.6s (stagger sequences, section transitions)
- Slower: 0.8s (main scroll reveals, entrance animations)
Easing Functions:
- Primary: ease-out (for reveal animations, appearing elements)
- Secondary: ease-in (for exit animations)
- Linear: only for progress bars and filmstrip
Key Animation Patterns:
-
Reveal Animations (0.8s ease-out):
- Initial: opacity 0, translateY(60px)
- Active: opacity 1, translateY(0)
- Trigger: Intersection Observer (threshold: 0.18)
-
3D Type Cards (0.8s ease):
- Initial: perspective(900px) rotateX(10deg) translateY(60px)
- Active: perspective(900px) rotateX(0deg) translateY(0)
-
Button Hover (0.2s ease):
- Standard: translateY(-1px)
- Enhanced: scale(1.05) translateY(-1px)
- Shadow bloom from 0.25 to 0.3
-
Link Underline Draw (0.3s ease-out):
- Initial: width 0, position absolute, bottom -2px
- Hover: width 100%
- Creates painted stroke effect
-
Stagger Animations:
- Cards: 50ms stagger (0s, 0.05s, 0.1s)
- Layout cards: 150ms stagger (0s, 0.15s, 0.3s)
- Creates gallery walk-through effect
-
Filmstrip Scroll (scroll-driven):
- TranslateX animation follows vertical scroll
- Distance = (filmstrip width - viewport width)
- Progress bar scaleX matches scroll percentage
-
Parallax (subtle, 0.12 factor):
- Hero image: window.scrollY * 0.12
- Kept to 5% maximum for subtlety
8. Interaction Principles
Baseline Interactions:
- Fade/slide reveals on scroll (200-300ms, ease-out)
- Buttons scale to 105% with shadow bloom
- Link underlines draw left-to-right like painted strokes
- All interactions feel deliberate and brush-stroke-like
Accent Moments:
- Parallax effects on hero imagery (limited to 5% movement)
- Staggered card entrances (50ms delays) for walk-through feel
- Interactive swatches with background tinting on hover
- Color swatches that scale 1.1 on hover
User Feedback:
- Focus states: 2px rose outline with 3px offset
- Form input focus: Terracotta border, 3px rgba glow
- Hover states: Smooth elevation with shadow bloom
- No aggressive animations - subtlety maintains sophistication
9. Responsive Design Implementation
Mobile Breakpoint: 720px
Mobile Changes:
- Single-column layouts (grid-template-columns: 1fr)
- Sticky positioning becomes static (position: static)
- Reduced padding: 1.5rem instead of clamp values
- Hero height: 50vh instead of 65vh
- Container padding: 1.5rem fixed
Responsive Techniques:
- clamp() for fluid typography and spacing
- auto-fit/auto-fill grid layouts
- minmax() for flexible column sizing
- Viewport width (vw) units for responsive scaling
10. Design Tokens Extracted
CSS Variables Defined:
- Color variables: 10 primary + semantic colors
- Spacing variable: --sticky-offset
- All colors have fallback hex values
- Dynamic offset: clamp(3.5rem, 8vw, 6rem)
Opacity Scale: 23 values from 0.03 to 0.98
Gradient Definitions: 4 primary gradients documented with usage
Z-index Values:
- Background overlay: -2
- Background texture: -1
- Content: 0, 1 (relative positioning)
- Hero overlay content: 1 (positioned relative)
11. Design Principles & Voice
Visual Principles:
- Sensory-driven design inspired by plaster walls catching afternoon light
- Gallery pacing - spacious, staggered, editorial rhythm
- Typography as carved etchings - precise, deliberate, never shouting
- Micro-interactions that feel tactile and intentional
- Fade/slide reveals with 200-300ms ease-out timing
- Authentic, transparent process-focused messaging
Tone & Voice:
- ARTISTIC: Creative, gallery-influenced language
- BOLD: Confident statements about craft and process
- SOPHISTICATED: Elevated tone for luxury positioning
- ENERGETIC: Dynamic language paired with motion
- AUTHENTIC: Transparent about process and collaboration
- PROFESSIONAL: Polished, gallery-quality standards
Sensory Language:
- Use analogies like "sun-baked walls," "charcoal whisper"
- Keep CTAs confident but calm ("Begin Commission," "Visit the Studio")
- Highlight collaboration and process transparency
- Speak to seasoned collectors, not trend chasers
- Balance poetic descriptions with precise process language
12. Accessibility Considerations
Color Contrast:
- Burnt orange on white/cream meets WCAG AA standards
- Charcoal ink (#241b16) on sand/cream backgrounds provides full contrast
- Rose outline (#e59863) has sufficient contrast for focus indicators
Focus States:
- All interactive elements have visible focus states
- Button focus: 2px rose outline with 3px offset
- Form inputs: Terracotta border with rgba glow
Touch Targets:
- Button minimum height: 44px recommended
- Form inputs: Adequate padding for touch interaction
- Calendar day cells: ~40px minimum
Typography:
- Minimum font size: 16px for body copy on textured backgrounds
- Generous line height (1.6) for readability
- Adequate letter-spacing for metadata (0.25em minimum)
- Proper heading hierarchy (h1 to h4)
Mobile Accessibility:
- Touch-friendly spacing maintained
- Readable font sizes scale responsibly
- Stacked vertical layouts below 720px
- Sticky elements become static on mobile
File Structure
The design.json file is organized into these main sections:
- Version & Metadata: 1.0.0, lastUpdated timestamp
- designLanguage: Name, description, philosophy, core principles
- colors: Complete palette with primary, secondary, neutral, semantic, opacity, gradients
- typography: Font families, sizes, weights, line heights, letter-spacing, text transforms
- spacing: Base unit, scale, padding, margin, gap values
- layout: Max-width, breakpoints, responsive patterns, grid systems
- designStyle: Border radius, shadows, borders, backdrop filters, blend modes
- animations: Timing, easing, scroll animations, component animations, stagger effects
- components: Complete documentation for button, card, form, toast, calendar, swatch, filmstrip
- patterns: Interaction principles, scroll-driven animation, sticky layouts, responsive gallery
- tonAndMessaging: Voice characteristics, messaging principles, CTAs
- designPrinciples: Visual language, typography philosophy, spacing rhythm, motion principles
- accessibility: Color contrast, focus states, touch targets, semantic HTML
- implementation: CSS variables, font imports, responsive approach, animation triggers
How to Use This Design System
-
For Developers: Reference the design.json file when building UI components
- Extract exact color values from the colors section
- Use defined typography styles and font sizes
- Apply spacing scales consistently
- Implement animations using specified timing and easing values
- Follow responsive breakpoints and grid systems
-
For Designers: Use this as a specification guide
- Ensure new designs use the defined color palette
- Maintain typography hierarchy as specified
- Apply consistent spacing and grid alignment
- Design animations with the specified timing principles
- Consider mobile layouts at the 720px breakpoint
-
For Documentation: Share this with team members
- Onboarding new designers/developers to the system
- Reference for consistency checks
- Source of truth for design decisions
- Guidelines for extending the system
Recommendations for Consistency & Scalability
Immediate Actions
- Add this design.json to your project documentation
- Create a living component library (Storybook, Zeroheight, or similar) that references this system
- Establish code standards for CSS variable usage across projects
For System Extension
- New Colors: Add to the appropriate palette section with hex, RGB, CSS variable, and usage
- New Components: Follow the existing documentation pattern with variations, states, and accessibility notes
- New Animations: Document timing, easing, triggers, and use cases consistently
- New Breakpoints: Add to the breakpoints section and update responsive patterns
For Consistency
- Always use the defined color palette - no arbitrary hex values
- Apply spacing from the scale (xs, sm, md, lg, xl, 2xl, etc.)
- Use typography sizes from the defined scale with proper families
- Implement animations with specified timing (0.2s, 0.3s, 0.6s, 0.8s)
- Test focus states and keyboard navigation for accessibility
- Validate color contrast ratios for any new color combinations
For Scalability
- Keep CSS variables synchronized with design.json definitions
- Consider a CSS preprocessor (SCSS) for variable composition
- Implement design tokens generation from JSON for multiple platforms
- Create component props that map to defined design tokens
- Document any deviations from the system with justification
Notable Design Decisions
-
Color Opacity Strategy: Uses explicit opacity values in rgba() rather than color alpha channel, allowing flexible background layering
-
Responsive Typography: All text sizes use clamp() for fluid scaling between mobile and desktop without breakpoints
-
Filmstrip Animation: Scroll-driven using requestAnimationFrame for 60fps smooth horizontal scrolling triggered by vertical scroll
-
Intersection Observer Threshold: Set to 0.18 (18% visible) for reveal animations - higher than typical 0.1 to ensure animations feel intentional
-
Parallax Constraint: Limited to 0.12 factor (12% movement) for subtlety - prevents motion sickness on mobile
-
Stagger Timing Difference: Uses two stagger rates (50ms for components, 150ms for layout cards) to create different visual rhythms
-
Mobile Sticky Disengagement: Sticky positioning automatically becomes static below 720px to improve mobile scroll performance
-
Grid Full-Bleed: Uses negative margin math (calc(50% - 50vw)) instead of viewport-relative positioning for more reliable rendering
File Locations
- Design System JSON:
/home/nicholai/Documents/dev/united-tattoo-design-language/design.json - Index HTML:
/home/nicholai/Documents/dev/united-tattoo-design-language/index.html - This Summary:
/home/nicholai/Documents/dev/united-tattoo-design-language/DESIGN_SYSTEM_SUMMARY.md
Generated: 2025-11-18 System Version: 1.0.0 Analyzed From: index.html style guide and component library