Loopfour

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

TokenValueUsage
--lf-gray-50#FAFAFASubtle backgrounds
--lf-gray-100#F5F5F5Page background
--lf-gray-200#EBEBEBElevated surfaces
--lf-gray-300#DEDEDEBorders, dividers
--lf-gray-400#B3B3B3Disabled text
--lf-gray-500#8C8C8CPlaceholder text
--lf-gray-600#666666Secondary text
--lf-gray-700#404040Body text
--lf-gray-800#262626Headings
--lf-gray-900#171717Primary text
--lf-gray-950#0A0A0AMaximum contrast

Dark Mode

TokenValueUsage
--lf-gray-50#0F0F0FDeepest surfaces
--lf-gray-100#141414Page background
--lf-gray-200#1C1C1CElevated surfaces
--lf-gray-300#292929Borders
--lf-gray-400#474747Strong borders
--lf-gray-500#737373Placeholder
--lf-gray-600#999999Secondary text
--lf-gray-700#BFBFBFBody text
--lf-gray-800#E0E0E0Headings
--lf-gray-900#F2F2F2Primary text
--lf-gray-950#FAFAFAMaximum 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

ClassSizeWeightUsage
.lf-heading-display3rem700Hero headlines
.lf-heading-12.5rem700Page titles
.lf-heading-22rem600Section titles
.lf-heading-31.5rem600Subsection titles
.lf-body-large1.125rem400Lead paragraphs
.lf-body1rem400Body text
.lf-body-small0.875rem400Captions
.lf-label0.75rem500Labels, uppercase

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:

TokenValue
--lf-space-14px
--lf-space-28px
--lf-space-312px
--lf-space-416px
--lf-space-624px
--lf-space-832px
--lf-space-1248px
--lf-space-1664px

Border Radius

TokenValueUsage
--lf-radius-sm2pxSubtle rounding
--lf-radius4pxDefault (inputs, buttons)
--lf-radius-md6pxCards
--lf-radius-lg8pxLarger containers
--lf-radius-xl12pxHero 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:

  1. Pulse spawns at TRIGGER node
  2. Travels through ACTION, TRANSFORM, OUTPUT
  3. Completes the loop
  4. "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 Logo component in navigation
  • Add HeroAnimation to landing page

Files Reference

PurposeLocation
CSS Design Tokensapp/globals.css
Tailwind Configtailwind.config.js
Logo Componentcomponents/brand/Logo.tsx
Hero Animationcomponents/brand/HeroAnimation.tsx
Brand Exportscomponents/brand/index.ts

On this page