Brand Guidelines
Loopfour visual identity, design tokens, and usage guidelines
Loopfour Brand Guidelines
This document outlines the visual identity system for Loopfour, including colors, typography, logo usage, and animation principles.
Brand Philosophy
Design Principles:
- Precision over decoration — Every element serves a purpose
- Quiet confidence — The interface feels assured, not flashy
- Negative space as a feature — Let content breathe
- Systematic consistency — Predictable patterns build trust
Aesthetic References:
- Cursor.ai: Deep blacks, subtle borders, monospace elegance
- Linear: Clean surfaces, precise spacing, purposeful animation
- Vercel: High contrast, typographic hierarchy
Color System
Loopfour uses a monochrome palette optimized for both light and dark modes.
Light Mode
| Token | Value | Usage |
|---|---|---|
--lf-gray-50 | #FAFAFA | Subtle backgrounds |
--lf-gray-100 | #F5F5F5 | Page background |
--lf-gray-200 | #EBEBEB | Elevated surfaces |
--lf-gray-300 | #DEDEDE | Borders, dividers |
--lf-gray-400 | #B3B3B3 | Disabled text |
--lf-gray-500 | #8C8C8C | Placeholder text |
--lf-gray-600 | #666666 | Secondary text |
--lf-gray-700 | #404040 | Body text |
--lf-gray-800 | #262626 | Headings |
--lf-gray-900 | #171717 | Primary text |
--lf-gray-950 | #0A0A0A | Maximum contrast |
Dark Mode
| Token | Value | Usage |
|---|---|---|
--lf-gray-50 | #0F0F0F | Deepest surfaces |
--lf-gray-100 | #141414 | Page background |
--lf-gray-200 | #1C1C1C | Elevated surfaces |
--lf-gray-300 | #292929 | Borders |
--lf-gray-400 | #474747 | Strong borders |
--lf-gray-500 | #737373 | Placeholder |
--lf-gray-600 | #999999 | Secondary text |
--lf-gray-700 | #BFBFBF | Body text |
--lf-gray-800 | #E0E0E0 | Headings |
--lf-gray-900 | #F2F2F2 | Primary text |
--lf-gray-950 | #FAFAFA | Maximum contrast |
Typography
Font Family
Primary: Geist Sans (by Vercel)
- Modern, geometric sans-serif
- Excellent screen rendering
- Free and open source
Monospace: Geist Mono
- Perfect pairing with Geist Sans
- Optimized for code display
Type Scale
| Class | Size | Weight | Usage |
|---|---|---|---|
.lf-heading-display | 3rem | 700 | Hero headlines |
.lf-heading-1 | 2.5rem | 700 | Page titles |
.lf-heading-2 | 2rem | 600 | Section titles |
.lf-heading-3 | 1.5rem | 600 | Subsection titles |
.lf-body-large | 1.125rem | 400 | Lead paragraphs |
.lf-body | 1rem | 400 | Body text |
.lf-body-small | 0.875rem | 400 | Captions |
.lf-label | 0.75rem | 500 | Labels, uppercase |
Logo
The Mark
The Loopfour logo consists of 4 circles arranged in a pinwheel pattern, connected by lines to a central hub. This represents:
- 4 workflow stages: Trigger → Action → Transform → Output
- Continuous loop: Data flows endlessly through the system
- Connected systems: Everything is integrated
Usage Guidelines
Clear Space:
- Minimum padding: equal to the diameter of one circle
Minimum Sizes:
- Mark alone: 16px (favicon)
- Mark + wordmark: 80px width
Color Usage:
- Primary: Full contrast (black on light, white on dark)
- Never use color tints
- Always use solid fills
Logo Variants
import { Logo, LogoAnimated } from '@/components/brand';
// Standard logo with wordmark
<Logo size={32} />
// Mark only (for favicon, compact spaces)
<Logo markOnly size={24} />
// Animated mark (for interactive elements)
<LogoAnimated size={48} />Spacing & Layout
Spacing Scale
Uses a 4px base unit:
| Token | Value |
|---|---|
--lf-space-1 | 4px |
--lf-space-2 | 8px |
--lf-space-3 | 12px |
--lf-space-4 | 16px |
--lf-space-6 | 24px |
--lf-space-8 | 32px |
--lf-space-12 | 48px |
--lf-space-16 | 64px |
Border Radius
| Token | Value | Usage |
|---|---|---|
--lf-radius-sm | 2px | Subtle rounding |
--lf-radius | 4px | Default (inputs, buttons) |
--lf-radius-md | 6px | Cards |
--lf-radius-lg | 8px | Larger containers |
--lf-radius-xl | 12px | Hero sections |
Animation Principles
Core Philosophy
- Scroll-scrub preferred: User controls animation pace via scroll
- Single focal point: One element captures attention at a time
- Subtle, purposeful: Motion reinforces meaning, not decoration
- Respect reduced motion: Always provide static fallback
Hero Animation
The hero animation visualizes a workflow loop:
- Pulse spawns at TRIGGER node
- Travels through ACTION, TRANSFORM, OUTPUT
- Completes the loop
- "Woah moment": entire system illuminates
import { HeroAnimation } from '@/components/brand';
<HeroAnimation />GSAP Configuration
// Standard scroll-scrub setup
const timeline = gsap.timeline({
scrollTrigger: {
trigger: container,
start: 'top top',
end: '+=2500', // 2500px scroll distance
scrub: 1.2, // Smooth 1.2s lag
pin: true,
},
});Implementation Checklist
- Install dependencies:
pnpm add geist gsap - Import Geist fonts in
layout.tsx - Add CSS variables from
globals.css - Extend Tailwind config with
lf-*tokens - Use
Logocomponent in navigation - Add
HeroAnimationto landing page
Files Reference
| Purpose | Location |
|---|---|
| CSS Design Tokens | app/globals.css |
| Tailwind Config | tailwind.config.js |
| Logo Component | components/brand/Logo.tsx |
| Hero Animation | components/brand/HeroAnimation.tsx |
| Brand Exports | components/brand/index.ts |
Loopfour