Brand Design Code · Keen Waves
KEENWAVES

The Keen Waves identity. One canvas of ink, one element alive on it: the wave. The system is strictly achromatic: no hue, ever. Light is the only accent. Precision is the only ornament.

Canvas: Ink #0A0A0B (flat, no gradient)
Signature: The living wave
Accent: Light only (no color)
Type: Space Grotesk + Inter
Voice: Keen, quiet, exact
Machine Context 00 · LLM Brand Reference
keenwaves-brand.v2026
Achromatic Ramp (CSS vars)
--void#060607 · deepest black, wells
--ink#0A0A0B · page base (flat)
--carbon#0F0F11 · raised panel
--graphite#1C1C20 · card fill
--ash#28282E · hover fill
--steel#3A3A42 · muted mark
--smoke#56565F · disabled text
--mist#84848D · tertiary text
--fog#A8A8B0 · secondary text
--haze#CACAD0 · body text
--frost#E6E6EA · strong text
--snow#F4F4F6 · headings
--pure#FFFFFF · light accent / CTA
Page Surface (FLAT INK)
body backgroundFlat #0A0A0B. No gradient, no hue. The wave moves on it.
texture3.5% film grain (SVG noise) + 1.5% hairline grid, masked at top.
navTRANSPARENT. No bar. Wave mark + wordmark only.
sectionsTransparent. Translucent-white cards float on ink.
cardsrgba(255,255,255,0.02–0.07) only. Never solid grey blocks.
bordersHairline rgba(255,255,255,0.08). One pixel. Always.
Typography
Brand / HeroSpace Grotesk 600, -2% tracking, --pure, flat (no glow)
DisplaySpace Grotesk 600, line-height 1.05, --pure
H1 / H2Space Grotesk 600/500, tight tracking
BodyInter 400, line-height 1.6–1.7, --haze
Eyebrow / LabelJetBrains Mono 500, +18% tracking, UPPERCASE, --mist
Code / DataJetBrains Mono 400, --fog
The Wave (Signature System)
essenceLayered sine waves, white strokes on ink, animated phase.
layers4–6 stacked. Back layers low opacity, front layer brightest. Opacity carries depth, no glow.
colorWhite only. Opacity carries depth, not hue.
motionContinuous horizontal drift. Slow, calm, ~0.02 phase/frame.
placementHero background, section dividers, mark, loaders, empty states.
reduced-motionRenders one static frame. Never strobes.
Component Patterns
  • Brand name: "KEEN WAVES", Space Grotesk 600, uppercase, +12% tracking, paired with the 2-stroke wave mark.
  • Primary CTA: solid --pure white button, ink text. The only fully-lit surface on the page.
  • Secondary CTA: hairline outline, transparent fill.
  • Cards: rgba(255,255,255,0.02) fill, 1px hairline border, top light edge.
  • Inputs: dark translucent, focus = 3px soft white ring.
  • Live dot: pure white, soft livePulse ring.
  • Loaders: a single wave drawing itself, or a thin orbit ring.
Identity Rules · Always
  • Achromatic. Greys from ink to white only. Light is the accent.
  • Flat ink canvas. The wave is the one living element.
  • Hairline borders, generous whitespace, dramatic type scale.
  • Headings in Space Grotesk, body in Inter, data in JetBrains Mono.
  • Primary button is pure white. One lit object per view.
  • Motion is calm and continuous. It drifts, never bounces.
Identity Rules · Never
  • No hue. Ever. No blue, no cyan, no gradient color. Achromatic is the brand.
  • No gradient page background. The canvas is flat ink.
  • No drop shadows, no glows. Depth is a 1px hairline, never a blur.
  • No emoji, no stock gloss, no AI-default purple/teal sheen.
  • No bouncy / springy motion. No confetti. No skeuomorphism.
  • No em-dashes. No Title Case headers. No jargon.
Voice & Copy
  • Tone: keen, quiet, exact. Confident without volume.
  • Headlines: short, declarative. "Signal in motion." Not questions.
  • Metaphor: the wave = signal, frequency, rhythm, clarity through noise.
  • CTAs: precise verbs. "Start", "See it move", "Tune in".
  • Numbers carry weight; never decorate with adjectives.
keenwaves-tokens.json · full token reference
"brand": "Keen Waves", "domain": "keenwaves.com", "version": "2026.1", "theme": "Achromatic · flat ink canvas, white living wave, light as the only accent", "narrative": "Signal in motion: clarity drawn out of noise, one keen wave at a time", "pageBackground": "MANDATORY: flat #0A0A0B. No gradient. No hue. Wave animates on top.", "colors": "void": "#060607", "ink": "#0A0A0B", "carbon": "#0F0F11", "graphite": "#1C1C20", "ash": "#28282E", "steel": "#3A3A42", "smoke": "#56565F", "mist": "#84848D", "fog": "#A8A8B0", "haze": "#CACAD0", "frost": "#E6E6EA", "snow": "#F4F4F6", "pure": "#FFFFFF" "accent": "light · #FFFFFF only. No chromatic accent, no glow bloom.", "surfaces": "s1": "rgba(255,255,255,0.022)", "s2": "rgba(255,255,255,0.045)", "s3": "rgba(255,255,255,0.07)", "line": "rgba(255,255,255,0.08)" "signature": "name": "The Living Wave", "render": "canvas, 4-6 stacked sine layers, white strokes, drifting phase", "front": "brightest layer, opacity only · no shadowBlur", "reducedMotion": "single static frame" "fonts": "display": "Space Grotesk 600 · brand, headings", "body": "Inter 400/500/600 · body, UI", "mono": "JetBrains Mono 400/500 · labels, data, code" "radius": "sm": "6px", "md": "10px", "lg": "14px", "xl": "20px" "motion": "durations": "120/200/320/600ms", "ease": "cubic-bezier(0.2,0.8,0.2,1)" "rules": "never": "any-hue", "gradient-page-bg", "drop-shadows", "text-glows", "gradient-accents", "emoji", "bouncy-motion", "skeuomorphism", "em-dashes", "jargon" "always": "achromatic", "flat-ink-canvas", "living-wave-signature", "hairline-borders", "white-primary-cta", "calm-continuous-motion", "space-grotesk-headings"
Void
060607
Ink
0A0A0B
Carbon
0F0F11
Graphite
1C1C20
Ash
28282E
Steel
3A3A42
Smoke
56565F
Mist
84848D
Fog
A8A8B0
Haze
CACAD0
Frost
E6E6EA
Pure
FFFFFF
Page Surface · Flat Ink
body { background: #0A0A0B; } · no gradient, no hue
Keen Waves
#0A0A0B · the canvas
Light · #FFFFFF
The only accent. CTA, live states, wave peaks.
Light · white @ alpha
Focus ring and live pulse only. No glow bloom on type or wave.
The one rule of color
There is no color. Keen Waves is achromatic by law. Every value sits on the neutral ramp from Ink to Pure. Depth, state, and emphasis are expressed through luminance and light, never hue. If a design needs a color to work, the hierarchy is wrong. Fix the hierarchy.
The Living Wave · canvas signature
White light, drifting on ink.
The core rule
Where other brands lean on a logo, Keen Waves leans on motion. The wave is the brand expressed as a system, not a static mark: layered white sine curves drifting across the flat ink canvas. It appears in the hero, behind heroes in product, as the loader, as the empty state, as section dividers. It is always white on ink, always calm, never colored, never frantic.
Anatomy
  • Layers: 4 to 6 stacked sine paths. More layers = more depth, never more color.
  • Opacity ramp: back layers 6–12%, front layer 60–90%. No glow.
  • Amplitude: each layer slightly different; they interfere, never sync perfectly.
  • Wavelength: long and lazy. Roughly 1.2–2.0 periods across the viewport.
  • Stroke: 1–2px, round caps. The peak layer is the brightest by opacity, never by glow.
Motion
  • Drift: phase advances ~0.012–0.02 per frame. Slow enough to feel ambient.
  • Each layer: its own speed and direction, so the field breathes.
  • No bounce, no easing pops. The wave never reacts abruptly.
  • Reduced motion: draw one frozen frame. The composition still reads.
  • Performance: single canvas, requestAnimationFrame, DPR-aware, pauses off-screen.
wave-layer.js · reference
function drawWave(ctx, w, h, t) { const layers = [ { amp: 26, len: 0.7, speed: 0.012, y: 0.62, op: 0.85, glow: 0 }, { amp: 34, len: 0.5, speed: 0.008, y: 0.66, op: 0.30, glow: 0 }, { amp: 46, len: 0.4, speed: 0.006, y: 0.70, op: 0.14, glow: 0 }, { amp: 60, len: 0.3, speed: 0.004, y: 0.74, op: 0.07, glow: 0 }, ]; for (const L of layers) { ctx.beginPath(); for (let x = 0; x <= w; x += 6) { const y = h * L.y + Math.sin(x * 0.006 * L.len + t * L.speed) * L.amp; x === 0 ? ctx.moveTo(x, y) : ctx.lineTo(x, y); } ctx.strokeStyle = `rgba(255,255,255,${L.op})`; // light only ctx.shadowColor = 'rgba(255,255,255,0.5)'; ctx.shadowBlur = L.glow; ctx.lineWidth = 1.4; ctx.stroke(); } }
Space Grotesk
Display / Brand
300500600700
Inter
UI / Body
400500600700
JetBrains Mono
Labels / Data
400500700
Brand
SG 600 · clamp 4–10rem
tracking -2%
KEEN WAVES
Eyebrow
Mono 500 · 13px
tracking +18%
Signal in motion
Display
SG 600 · clamp 2.5–4rem
line-height 1.05
Clarity, drawn out of noise.
Heading 1
SG 600 · clamp 2–3rem
line-height 1.15
One wave at a time.
Heading 2
SG 500 · 22px
regular spacing
Quiet by default, precise on demand.
Body
Inter 400 · 16px
line-height 1.7
Most interfaces shout. Keen Waves does the opposite. A single living wave on a flat black field, white type with room to breathe, and not one pixel of decoration that does not earn its place.
Data / Mono
JB Mono 400 · 13px
amplitude: 26px   phase: 0.012/frame   layers: 04
Keen Waves
On Ink · Primary
Keen Waves
Inverted · On White
Mark Only · App Icon
Keen Waves
Stacked Lockup
Clear space & don'ts
  • Clear space = the height of the mark, on all sides.
  • Minimum mark size: 20px tall (digital), 8mm (print).
  • Never add color, gradient, or a glow tint to the mark.
  • Never distort, rotate, or re-space the two wave strokes.
  • Never place the ink lockup on a busy or mid-grey field. Only ink, void, or pure white.
Keen Waves white mark, 300 by 300 pixels
keenwaves-logo-white.png · 300×300
Keen Waves LinkedIn profile mark, 300 by 300 pixels
keenwaves-linkedin-logo.png · 300×300
Produced PNG masters. White mark for dark backgrounds and social avatars. LinkedIn variant for the profile photo slot.
Buttons
Badges & status
Live Beta Archived
Streaming v2026.1
Form fields
Frequency
Channel
Cards
Signal
Clean input, no noise.
Surface
Hairline, translucent.
Tempo
Calm, continuous.
Sweep
A light pass crossing a surface. Loading, scanning, focus.
Breathe
Slow scale + luminance. Idle, ambient, presence.
Orbit
Thin rotating arc. The only spinner. Never a dotted wheel.
120ms
Instant
Hover, toggle, press feedback.
200ms
Quick
Buttons, fields, small reveals.
320ms
Smooth
Panels, cards, page transitions.
600ms
Entrance
First-paint reveals, fadeUp.
Out
cubic-bezier(0.2, 0.8, 0.2, 1)
Default. Decisive arrivals.
Wave
cubic-bezier(0.37, 0, 0.18, 1)
Drifts, sweeps, the wave itself.
Snap
cubic-bezier(0.5, 0, 0, 1)
Toggles, sharp state changes.
Error
Brightest left edge (pure white). Urgency through luminance, never red.
Warning
Frost edge. Attention without alarm. No amber, no hue.
Success
Fog edge, calm confirmation. A check, not a green burst.
Info
Smoke edge, lowest emphasis. Quiet, ambient note.
State without color
Most systems map state to hue (red/amber/green). Keen Waves maps state to luminance: the more critical, the brighter the edge. This keeps the brand achromatic and forces hierarchy to be earned through contrast, not paint.
keenwaves.com
Now in motion

Signal in motion.
Noise, gone quiet.

A monochrome system that turns scattered input into one keen, readable wave. No color to distract. Just the signal, moving.

01
Capture
Every channel, one stream.
02
Tune
Filter the noise out.
03
Read
See the shape of it.
04
Act
Move on what matters.
4
xs
8
sm
16
md
24
lg
48
xl
88
2xl
6px
sm · chips
10px
md · cards
14px
lg · panels
20px
xl · surfaces
Principle 01
Signal over noise
Everything we make removes more than it adds. If an element does not carry signal, it leaves.
Principle 02
Light, not color
We express hierarchy through luminance. Color is a crutch we chose not to use. The discipline is the brand.
Principle 03
Calm motion
The wave never panics. Movement is continuous and slow, the way a confident system behaves.

Voice · do

  • Short, declarative lines. "Signal in motion."
  • Let numbers and contrast do the talking.
  • Calm confidence, quiet, never loud.
  • Precise verbs: tune, read, move, capture.
  • Respect the reader's attention. Say less.

Voice · don't

  • No hype words: revolutionary, game-changing, AI-powered.
  • No questions as headlines, no exclamation marks.
  • No emoji, no jargon, no filler adjectives.
  • No em-dashes, no Title Case headers.
  • Never explain the obvious or pad a sentence.
The test
Every Keen Waves page must pass one test: no one can tell it was generated. AI-slop has a tell, soft glows, blurred drop shadows, gradient sheens, fade-everything motion, and em-dashes in the copy. This brand is flat, crisp and edited. If a detail exists only to look "polished", cut it.

Kill on sight

  • Drop shadows and any box-shadow blur. Depth is a 1px hairline, not a soft halo.
  • Glows on text and numbers (text-shadow: 0 0 Npx). Big type stands on its own.
  • Gradient accent bars and gradient-to-transparent hairlines. One solid flat line instead.
  • A glowing wave (shadowBlur). The wave is a clean stroke; opacity carries depth.
  • Em-dashes in body copy. Rewrite as "Label. Detail." or use a colon.
  • Purple/teal sheen, glassmorphism, inner highlights, fake 3D, springy motion.

Keep instead

  • Flat ink canvas, hairline borders, generous whitespace.
  • Crisp edges. State changes via border or fill, never a blur.
  • Film grain plus a faint grid. Grain reads as designed, not generated.
  • One lit object per view: the pure-white primary CTA.
  • Solid flat dividers and accent strokes in --steel or --line.
  • Editorial, Swiss restraint. If it looks like a template, it is wrong.
Ship checklist
Before publishing, grep the source: every box-shadow and text-shadow is none or a 1px hairline; no linear-gradient(... transparent) used as a visible accent; no in visible text. Open it at 375px and on desktop, then read it as a stranger: would a human designer ship this, or does it smell generated?
Live LinkedIn cover assets. Rendered from the brand's banner generator at keenwaves.com/banner.html. Same achromatic system: flat ink, one drifting wave, light as the only accent.