kissd
KISSD Design Source of Truth · v1.0

HOW KISSD
LOOKS & MOVES

Six colors, one typeface, one easing curve, two temperatures. Everything here is generated from tokens/ in the kissd-design repo — the website is the reference implementation, this page is the human projection.

Use this like a working reference: search, copy tokens, then build from generated CSS instead of memory.

Color 02

SIX COLORS.
THAT’S THE WHOLE PALETTE.

Black #191919
Red KISSD orange #FA4900
Magenta pink #FB6DFD
Lime acid #E1FF1C
Off White #F7F4EB
Grey #B5ADA8

ACCENT LOGIC — WHEN TO USE WHICH

The three accents have meanings, not vibes. Pick by asking, in order: 1. Interactive or live? → lime. 2. About people, creators, or a creative-manifesto moment? → magenta. 3. Everything else → red. When in doubt, red.

RED The Brand’s Voice

It’s the wordmark color — when KISSD itself speaks, it speaks in red. Identity, structure, wayfinding.

  • Eyebrows & labels (sitewide default)
  • Index numbers & accent rules
  • Text selection, the wordmark
  • Work / tech / AI section accent
  • Interactive or "go" states
  • People/creator surfaces
LIME The Signal

Highest voltage in the palette. Means "this is on / this responds / go". Earned by interactivity — passive lime devalues the signal.

  • Button fills & hover reveals
  • Active states & live indicators
  • CTA emphasis words
  • The one stat that must pop
  • Long text or passive decoration
  • Backgrounds under off-white type

Exception: lime may appear in any section — but only in its action role.

MAGENTA The Human Spark

The expressive, playful color — reserved for humans and acts of creation. Keeps creator surfaces distinct from corporate ones.

  • Creator & roster surfaces
  • Creative-manifesto emphasis
    (*ADVERTISING GOODBYE*)
  • Culture & social stats (TikTok)
  • Interactive states (lime’s job)
  • Structural labels off people surfaces
  • Errors/alerts — KISSD has no error color

Composition: one dominant accent per section (red keeps its structural role and lime its action role anywhere). Never more than two accents in one composition. On the web, neutrals carry ~90% of the screen — accents are punctuation, not paint. Poster mode inverts this with full-bleed color fields.

APPROVED BODY / UI PAIRINGS

Accessibility is part of the system. If the label says body, every bit of text in the card uses the actual body-safe foreground. No decorative pale labels. On color fields, body/UI text is black. On black, body/UI text is off-white or grey.

Aabody
Aabody
Aabody
Aabody
Aabody
Aabody
Aamuted body

ACCENT TYPE ON DARK

Red, magenta, and lime may sit on black for labels, emphasis, and display moments. They are not approved long body-copy colors.

Aaaccent
Aaaccent
Aaaccent
Aadisplay only

Contrast guardrail: approvedBody passes 4.5:1 and only contains true body/UI pairs. approvedAccentOnDark is for emphasis on black. approvedDisplay passes 3:1. Off-white on magenta/grey is poster-only/non-UI and intentionally excluded from these approved grids.

FORBIDDEN PAIRINGS

All color-on-color type is out — including pairs the 2025 brand book allowed (magenta-on-red, grey-on-lime, etc.). tokens/semantic.json encodes the full list; agents and /brand-check reject these mechanically.

Aa
Aa
Aa
Aa
Aa
Aa
Aa
Aa

ALPHA SCALE

Web only

Brand colors may be tinted on the web at these steps only: 10 · 15 · 20 · 40 · 60 · 80 · 90. Hairlines are grey/15. Poster mode uses solid color, no tints.

10
15
20
40
60
80
90
Typography 03

HELVETICA NEUE.
LIGHT DISPLAY. CLEAR HIERARCHY.

Surface decides type. Brand/display surfaces can use uppercase Light (300) at scale. Tool surfaces, docs, dashboards, and agent-generated workspaces default to sentence case, clearer Regular (400) UI text, and the generated .tool-* classes. Body-size text on solid color backgrounds always uses Regular — Light strokes disappear against saturated color. The website type scale remains canon for brand/display web surfaces.

type-hero · 48/120px · 300 · lh 0.85 · ls 0.01em
DISPLAY HEADLINE
type-section-title · 30/60px · 300 · lh 1 · ls 0.015em
THE PROOF
type-card-title-lg · 30/48px · 300 · lh 0.95
CIVIC HYBRID LAUNCH
type-card-title · 20/28px · 400 · lh 1.1
CREATOR MARKETING
type-stat-display · 48/72px · 300 · lh 1
179M+
type-eyebrow · 12px · 400 · ls 0.115em · red default
Who We Are
type-lead · 18/23px · 300 · lh 1.55
kissd is a unique fusion of creativity and technology, combining creative brilliance with production expertise and the power of AI.
type-body · 16/17px · 300 · lh 1.6
We’re not for every brand. We’re for the ones that are tired of safe, slow, and forgettable. If that sounds like you, we should probably talk.
type-caption · 12/14px · 300 · ls 0.075em · grey
Made with noise in Los Angeles.

VARIANTS — RENDERED, NOT LISTED

Variants override the parent’s variables — use both classes together (class="type-hero type-hero-page"). A few at true size; the full list lives in tokens/core.json → type.variants.

type-hero-page · of hero · md 96px
PAGE TITLE
type-hero-detail · of hero · md 72px
DETAIL HERO
type-hero-404 · of hero · 120/200px · leading 1
404
type-card-title-lg-xl · of card-title-lg · 36/60px
FEATURED WORK
type-eyebrow-extra-loose · of eyebrow · 11px · ls 0.28em
Section Marker
Spacing & Layout 04

ONE RHYTHM

pagePadX24px → 64pxhorizontal padding on every section (px-6 md:px-16)
sectionPadY64px → 96pxstandard section (py-16 md:py-24)
sectionFeaturePadY96px → 128pxfeature sections — About, CTA (py-24 md:py-32)
navOffsetTop92pxevery page root clears the fixed navbar (pt-[92px])
cardPad24px → 32pxcard interior (p-6 md:p-8)
gap.card24pxcard grids (gap-6); tight variant 16px
gap.columns40pxtwo-column editorial layouts (gap-10)
stackGap40pxminimum vertical gap between sibling content blocks in a section — text never touches the grid/media below it. Tighten to 12px only for heading → supporting-note pairs
eyebrowMarginBottom16pxeyebrow → headline (mb-4)
radii.card0.25remcards & media (rounded-sm); pills are full
border.hairlinegrey / 15resting borders & dividers
Motion 05

ONE CURVE,
FOUR SPEEDS

Everything eases with cubic-bezier(0.22, 1, 0.36, 1) — fast out, long settle. Marquees and spins are linear. Durations: micro 0.3s (hovers) · base 0.5s (most transitions) · slow 0.7s (large media) · reveal 0.9s (headlines).

The curve · cubic-bezier(0.22, 1, 0.36, 1)
Marquee · linear · 38s loop
Underline hover hello@kissd.com
Button fill sweep
Card hover · border → accent/40 + lift
AI INNOVATION
Scroll reveal · y:24 · stagger 0.07 · viewport 0.25 FadeUp / StaggerGroup in FadeUp.tsx
Icons 06

LINE-ART FAMILY

Eight custom marks: starburst, lips/fangs, robot, rock-hand, eye, eggs, lips, frog. Thicker stroke at small sizes, thinner at large (brand book rule). Inline with type, icons share the cap-height of adjacent all-caps text. The starburst spins (14s linear) when decorative.

starburst
lips-fangs
robot
rock-hand
eye
eggs
lips
frog
Download the icon pack — eight marks (.zip)

Canon SVGs live in public/icons/ (paths in tokens → icons.assets): tight viewBoxes, stroke: currentColor at width 2 — the thin cut for large sizes; use a heavier stroke below ~48px.

Patterns 07

USE THESE
PATTERNS FIRST

EYEBROW ROW

LABEL — rule — 01. Accent color, hairline rule at /40, numbered index.

EDITORIAL SPINE

One left edge anchors eyebrow → headline → rule → deck → divider. No floating columns.

ACCENT-LINE SYNTAX

CMS headlines: a line wrapped in *asterisks* renders in the section accent color.

MASKED-RISE REVEAL

Headlines rise from y:110% inside overflow-hidden wrappers, stagger 0.12.

LOGO MARQUEE

Duplicated list, 38s linear loop, edge fades, equal slots + per-logo optical scale.

DITHERING BG

Animated Bayer-dither canvas behind feature sections. Poster energy only.

STAT CARD

Spring count-up 1.4s, underline draws at 1.2s, grey eyebrow label.

SMART QUOTES

All CMS copy auto-converts straight quotes to typographer’s marks at render.

Canonical implementations linked in patterns/README.md.

Rules & Modes 08

TWO TEMPERATURES

Poster Mode

Campaigns, decks, social. Full volume: solid color fields, giant type (leading may tighten to 0.7), icons as heroes. No alpha tints.

Tool Mode

Dashboards & internal apps. Calm: grey/offwhite carry the UI, one accent max, micro-motion only. KISSD without the megaphone.

Tool mode preview

Generate campaign copy, then compare it clearly

This uses generated .tool-* classes: sentence case, warm panels, one orange accent, readable form controls.

USE / AVOID

  • Dark backgrounds by default
  • Surface decides type: uppercase for display, sentence case for tools
  • One accent color per section
  • If a card says body, every visible text element must be body-safe
  • Pill controls live in open space — action rows, side rails — never inline, never inside small tiles (use a compact icon there)
  • "KISSD" in prose, "kissd" for wordmark/domain contexts
  • Curly apostrophes: use THAT’S / U+2019, not ASCII or prime marks
  • New colors or gradients
  • Forbidden pairings (see 02 Color)
  • Pale decorative labels inside body-safe cards
  • Inline pill buttons or tags in heading/prose text
  • AI-SaaS gradient sludge
  • Brutalist crowding / tight tracking
  • Line-height 0.7 on the web
  • Freestyling KISSD from memory
KISSD Design · generated from kissdstudio/kissd-design Guide source: app/system/guide-markup.ts · tokens: tokens/*.json → npm run build