3
Brand Guide v1.0
brand.3cosystem.net

3cosystem
Design System

Single source of truth for designers, engineers, and writers working across R3SET's 10-surface endorsed brand architecture. One identity layer. One codebase. One account.

R3SETr3set.com (parent)
Brand Overview

The Meaning of "3"

R3SET Enterprises is a Delaware B-Corp. The numeral "3" in every surface name carries meaning across three dimensions — and is the visual thread tying the ecosystem together.

3
Impact
Self
Communities
World
3
Planes
Mind
Body
Spirit
3
Accountability
People
Planet
Profit

Architecture — Endorsed Brand Model

3R3SET ENTERPRISESDelaware B-Corp
Shared layer: Auth · App Switcher · Hexagon Mark · CSS tokens
3
M3ET
m3et.me
3
N3TWORK
n3twork.id
3
SP3AK EASY
sp3akeasy.com
3
SUCC3SS
succ3ss.org
3
M3SH
m3sh.events
3
R3CHARGE
r3charge.me
3
T3ACH
t3ach.me
3
EL3VATE
el3vate.community
3
MARK3T
mark3t.community
3
CURR3NCY
curr3ncy.co

User Journey Pipeline

ID3A JamIdeate
Team R3SETCollaborate
M3ETConnect
SP3AK EASYTell Story
N3TWORKOwn ID
EL3VATEGrow
R3SET AgencyMonetize
Identity Rules

The "3" Naming Convention

Pattern: [PREFIX]3[SUFFIX] — the "3" replaces a vowel or acts as the word's structural hinge. These rules are non-negotiable.

1

The "3" is always uppercase in the wordmark

2

The "3" is always rendered in the surface's --l-primary color — never white, black, or any other color

3

Surrounding letters are white (dark bg) or near-black #1A1A1A (light bg) — never in the brand color

4

Sub-labels (.me, .events, EASY) use lighter weight, smaller size, muted color

5

New surface names must use the "3" pattern

✓ Correct
M3ET
SP3AKEASY
SUCC3SS.org
✗ Never do this
M3ET
M3ET
M3ET

Logo Construction

TierUsageSizeConstruction
Full lockupDesktop header, splash, marketing32px+Wordmark + sub-label + tagline
CompactMobile header, App Switcher20–28pxWordmark only
FaviconBrowser tab, PWA icon16–32pxHexagon mark with surface color fill, white "3"

The Hexagon Mark

3r3set
3m3et
3n3twork
3sp3ak
3succ3ss
3m3sh
  • • Always regular (equilateral), never squashed or rotated beyond 30° increments
  • • Filled with surface brand color (or R3SET neutral for parent contexts)
  • • White "3" inside: Inter 800, centered both axes
  • • No stroke or border on the hexagon
Color System

All 11 Surface Palettes

Each surface defines tokens mapping to --l-* CSS custom properties. Click any swatch to copy its hex value. Primary colors meet WCAG AA on their dark backgrounds.

--l-primary

Hero brand color — buttons, links, the "3"

--l-primary-dark

Pressed states, dark mode interactive

--l-primary-light

Tonal badges, subtle hover backgrounds

--l-primary-glow

12% opacity — glassmorphic borders, card glow

--l-surface-dark

Page background (dark theme)

--l-surface

Card/panel background (dark theme)

--l-text

Primary text on dark backgrounds

--l-text-muted

Secondary text, labels, captions

R3SET
hsl(0, 99%, 44%)
3
Hex
#DE0201
HSL
hsl(0, 99%, 44%)
RGB
rgb(222, 2, 1)
WCAG AA
M3SH Sunset Gradient
linear-gradient(135deg, #E8654A 0%, #F4904A 40%, #F7B85A 80%, #FAD080 100%)
Typography

Font System

General Sans is the ecosystem default. M3ET uses Cabinet Grotesk + Satoshi for its warm, premium networking personality. All fonts are loaded via Fontshare.

ECOSYSTEM DEFAULT
General Sans

Body, headings, display — all surfaces

400500600700800
Design with intent.
DISPLAY — M3ET ONLY
Cabinet Grotesk

Hero headings, display text on M3ET

800
Connect with purpose.
BODY — M3ET ONLY
Satoshi

Body copy on M3ET

400500
Warm, human, networked.

Type Scale (Major Third — 1.25×, base 16px)

--fs-xs12pxAaLegal, footnotes, captions
--fs-sm13pxAaTimestamps, helper text
--fs-base14pxAaBody copy, form labels
--fs-md16pxAaDefault body
--fs-lg18pxAaLead paragraphs
--fs-xl20pxAaSmall headings
--fs-2xl24pxAah3
--fs-3xl30pxAah2
--fs-4xl36pxAah1
--fs-5xl48pxAaHero
--fs-6xl60pxAaDisplay
--fs-7xl72pxAaMarketing hero (desktop)

Letter Spacing Rules

ContextValueRule
Display (≥48px)-0.02emTighten large display text
Headings (24–48px)-0.01emSlight tightening for hierarchy
Body0Never adjust body copy tracking
All-caps labels+0.06emOpen-track uppercase for legibility
Lowercase textNever adjustDo not letter-space lowercase — ever
Spacing & Layout

4px Base Unit

All spacing values are multiples of 4. The grid uses 12 columns on desktop, 8 on tablet, 4 on mobile. Content max-width is 1200px, centered with auto margins.

Spacing Scale
--space-14px
Icon gap
--space-28px
Button icon-label gap
--space-416px
Input horizontal padding
--space-624px
Card padding, mobile page padding
--space-832px
Section separation (small)
--space-1248px
Desktop page padding
--space-1664px
Between major sections
--space-2080px
Hero padding

Layout Grid

BreakpointColumnsGutterMax Width
Mobile (< 640px)416px
Tablet (640–1023px)824px
Desktop (≥ 1024px)1232px1200px centered

Border Radius Tokens

8pxBadges
12pxInputs
16pxCards
24pxFeature cards
9999pxPills
Components

UI Components

All components read from --l-* tokens, never hardcoded hex values. Tokens auto-adapt per surface context via data-surface attribute.

Buttons

Variants — hover to preview states
Sizes
Per-surface button colors

Cards

Glassmorphic card
Card Title

Background rgba(255,255,255,0.04) · border rgba(255,255,255,0.08) · backdrop-filter blur(12px)

Elevated card
Card Title

Surface background · subtle border · layered box-shadow elevation

Badges

DefaultSuccessWarningErrorNeutralACTIVE

Height 24px · padding 0 8px · 12px font · weight 500 · tracking 0.03em · radius 9999px

Input

Avatar

J
sm
J
md
J
lg
J
xl
M
N
S
S
Motion

Motion System

All animations use the standard easing curves. Reduced motion must be respected. Never apply scroll-behavior: smooth globally — use it only for programmatic anchor navigation.

Easing Curves

entranceease-out
cubic-bezier(0.0, 0.0, 0.2, 1.0)

Elements entering (ease-out)

exitease-in
cubic-bezier(0.4, 0.0, 1.0, 1.0)

Elements leaving (ease-in)

standardstandard
cubic-bezier(0.4, 0.0, 0.2, 1.0)

State changes

springspring
cubic-bezier(0.34, 1.56, 0.64, 1.0)

Playful emphasis

Duration Scale

TokenValueUsage
--dur-feedback100msButton press, checkbox
--dur-transition200msColor changes, hover states
--dur-entrance300msElements animating in
--dur-complex500msMulti-step, page transitions
--dur-slow800msLarge hero animations

Standard Animations

animations.css
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeOutDown {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(8px); }
}

@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.96); }
  to   { opacity: 1; transform: scale(1); }
}

/* Stagger: 50ms per item, cap at 200ms for lists > 5 items */
.list-item:nth-child(1) { animation-delay: 0ms; }
.list-item:nth-child(2) { animation-delay: 50ms; }
.list-item:nth-child(3) { animation-delay: 100ms; }
.list-item:nth-child(4) { animation-delay: 150ms; }
.list-item:nth-child(5+) { animation-delay: 200ms; }
Reduced motion (required)
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
  /* Fade is the only allowed fallback — never skip entirely */
  .fade-transition { transition: opacity 150ms ease !important; }
}
Voice & Tone

Writing for the 3cosystem

The parent R3SET voice is confident, warm, cooperative, and direct. Each surface adapts tone while maintaining shared vocabulary and core values.

R3SET PARENT VOICE
ConfidentWarmCooperativeDirect
  • • Active voice always — never passive constructions
  • • Contractions are fine: "you're", "we're", "it's"
  • • Numbers under 10: spell out in body copy (except "3" — always numeral)
  • • Use "you" and "your community" — never "users" or "accounts"

Per-Surface Tone

3
M3ET.meEnergetic, playful

"The right connection changes everything"

3
N3TWORK.idProfessional, sovereignty

"You should own your digital identity"

3
SP3AK EASYIntrospective, storytelling

"Everyone has a story worth telling"

3
SUCC3SS.orgSupportive, growth

"Success is collective, not competitive"

3
M3SH.eventsCommunity-first, warm

"Great events need the right people, not top-down organizers"

3
R3CHARGE.meCalm, restorative

"Health is a practice, not a destination"

3
T3ACH.meEncouraging, mastery

"Every expert was once a beginner"

3
EL3VATE.communityAspirational, collective

"Knowledge that compounds"

3
MARK3T.communityFair, cooperative

"Commerce without the middleman"

3
CURR3NCY.coClear, trustworthy

"Earn by contributing"

Accessibility

WCAG 2.2 AA Minimum

Accessibility is non-negotiable across all surfaces. AAA is the target for body copy. All primary colors meet at minimum AA on their dark backgrounds.

Color Contrast
  • ·WCAG 2.2 AA minimum for all UI
  • ·AAA target for body copy (≥7:1)
  • ·All text tokens achieve ≥13:1
  • ·Primary colors ≥4.5:1 on dark bg
Touch Targets
  • ·44×44px minimum on all interactive elements
  • ·Buttons: min height 44px (md size = 40px, use lg)
  • ·Nav items: min 44px hit area
  • ·Icon buttons: pad to 44px even if icon is 20px
Focus Rings
  • ·outline: 2px solid var(--l-primary)
  • ·outline-offset: 2px
  • ·:focus-visible only — not :focus
  • ·Never remove focus rings; restyle if needed
Reduced Motion
  • ·All animations have prefers-reduced-motion fallback
  • ·Fallback: opacity fade — never skip entirely
  • ·Test with OS reduced motion setting
  • ·animation-duration: 0.01ms !important
Color Independence
  • ·Never convey info through color alone
  • ·Always add icon + text alongside color
  • ·Error states: icon + color + text message
  • ·Status badges: label + color, never color alone
Screen Readers
  • ·alt text on all meaningful images
  • ·aria-label on icon-only buttons
  • ·aria-live on dynamic status messages
  • ·Logical heading hierarchy (h1→h2→h3)
Focus ring (tab to see)
Cross-Surface Rules

Non-Negotiable Consistency

These 11 rules apply to every surface without exception. They ensure the 3cosystem feels cohesive even as individual surfaces express distinct personalities.

01
The "3" is always the brand color

In every wordmark, always --l-primary. Never white, black, or any other color.

02
"Powered by R3SET" footer

Every surface, links to TeamR3SET.com. The "3" in #DE0201.

03
App Switcher

Accessible from every surface (top-right icon or sidebar menu).

04
Shared Auth

One Supabase Auth instance. One account, one session, everywhere.

05
Login pages include the subheading

"One R3SET account for everything" — always on login pages.

06
Hexagon favicon

32×32px, surface color fill, white "3". Generated for 16, 32, 180, 192, 512px.

07
Dark mode default on landing/login

In-app respects prefers-color-scheme, but landing pages always default dark.

08
Content wrappers on every page

max-width: 1200px; margin: 0 auto; on all content containers. No raw full-width content.

09
No global smooth scrolling

scroll-behavior: smooth is never global. Use scrollIntoView({ behavior: 'smooth' }) only for programmatic anchor nav.

10
12px minimum font size

No text on screen renders below 12px. This is the absolute floor.

11
Content-first per surface

Answer "what is the one thing this page must communicate?" before designing. Build that element first.

Theming

Dark / Light Theme System

Dark mode is the default for landing and login pages. In-app respects prefers-color-scheme. The lightness inversion formula generates light-mode starting points from any dark token.

CSS Token Structure

theme.css
[data-surface="surface-id"] {
  --l-primary:       #XXXXXX;
  --l-primary-dark:  #XXXXXX;
  --l-primary-light: #XXXXXX;
  --l-primary-glow:  rgba(R,G,B, 0.12);

  --l-surface-dark:  #XXXXXX; /* Page bg */
  --l-surface:       #XXXXXX; /* Card bg */
  --l-surface-2:     #XXXXXX; /* Nested */
  --l-border:        #XXXXXX;

  --l-text:          #XXXXXX;
  --l-text-muted:    #XXXXXX;

  /* Semantic (derived) */
  --l-focus-ring:    var(--l-primary);
  --l-btn-primary-bg: var(--l-primary);
}

Dark/Light Toggle Hook

useTheme.ts
function useTheme() {
  const [theme, setTheme] = useState(
    () => localStorage.getItem('r3set-theme')
      ?? (window.matchMedia(
            '(prefers-color-scheme: dark)'
         ).matches ? 'dark' : 'light')
  );

  useEffect(() => {
    document.documentElement
      .setAttribute('data-theme', theme);
    localStorage.setItem('r3set-theme', theme);
  }, [theme]);

  return {
    theme,
    toggleTheme: () =>
      setTheme(t => t === 'dark' ? 'light' : 'dark')
  };
}

Lightness Inversion Formula

To generate a light theme starting point: convert to HSL, subtract L from 100, adjust by eye.

TokenDark L→ Light L (100-x)Adjusted value
surface-dark6%94%#FFFFFF (100%)
surface9%91%#F8F8FA (97%)
text94%6%#1A1A2E (14%)
text-muted57%43%#6B6B80 (46%)
Light theme override
[data-theme="light"] {
  --l-surface-dark: #FFFFFF;       /* hsl(0, 0%, 100%) */
  --l-surface:      #F8F8FA;       /* hsl(240, 11%, 97%) */
  --l-surface-2:    #F0F0F5;       /* hsl(240, 14%, 95%) */
  --l-border:       rgba(0, 0, 0, 0.08);
  --l-text:         #1A1A2E;       /* hsl(240, 27%, 14%) */
  --l-text-muted:   #6B6B80;       /* hsl(240, 9%, 46%) */
  /* Primary colors are UNCHANGED across themes */
}

Dark Theme Layering

Page background
--l-surface-dark
#0E0F12
Card / panel
--l-surface
#15161A
Nested card
--l-surface-2
#1C1D24
Modal backdrop
rgba(0,0,0,0.7)
overlay

Global Fallback (No Surface Context)

:root fallback
:root {
  --l-primary:      #DE0201;
  --l-primary-dark:  #B50100;
  --l-primary-light: #FF6B6A;
  --l-primary-glow:  rgba(222, 2, 1, 0.12);
  --l-surface-dark:  #0E0F12;
  --l-surface:       #15161A;
  --l-surface-2:     #1C1D24;
  --l-border:        #2A2B36;
  --l-text:          #EDEDF0;
  --l-text-muted:    #8B8C99;
}