Design System — CWK. PLOS Website
Compiled from BIZ_Brand_Guidelines_v1.pdf and BIZ_Document_Brand_Standards_v1.pdf.
This is the single source of truth for the website build. No deviations.
Attribute
Value
Tagline
Build. Learn. Earn. Play.
One-line
We build the infrastructure that makes expertise compound.
Category
Business Infrastructure / Management Services
Personality
Precise. Architectural. Dark. Premium. Intentional.
Anti-persona
Never looks like a life coach, course creator, or marketing agency.
Feeling
Walking into a firm that solves serious problems seriously.
Voice
Calm authority. No noise. No hype. Just infrastructure.
Format
Status
CWK.
Correct. Always includes the dot.
CWK. Experience
Correct. Full formal name.
CWK
Wrong. Never without the dot.
Cwk.
Wrong. Always all-caps.
C.W.K.
Wrong. No periods between letters.
cwk.
Wrong. Lowercase never acceptable.
All colors are CSS custom properties. Every asset uses this exact palette. No substitutions.
: root {
--bg : # 07090F ; /* Page background. Foundation of every CWK. asset. */
--bg2 : # 0B0E18 ; /* Secondary bg. Cards, panels, elevated surfaces. */
--bg3 : # 101422 ; /* Tertiary bg. Tab panels, deep nested elements. */
--text : # EEF0FF ; /* Primary text. ALL headings, body, labels. */
--cyan : # 00E5FF ; /* Primary accent. CTAs, mission bars, header gradients. */
--purple : # 7B61FF ; /* Secondary accent. Gradients, Stage 5, PLOS elements. */
--pink : # FB3079 ; /* Tertiary accent. Warnings, high-energy moments. */
}
: root {
--glass : rgba (255 , 255 , 255 , 0.03 ); /* Card fills, glassmorphic surfaces */
--gb : rgba (255 , 255 , 255 , 0.08 ); /* Default borders */
--gb2 : rgba (255 , 255 , 255 , 0.14 ); /* Elevated borders, hover states */
--muted : rgba (238 , 240 , 255 , 0.62 ); /* Secondary text, labels */
--dim : rgba (238 , 240 , 255 , 0.32 ); /* Tertiary text, placeholders, captions */
}
Reserved for progress indicators and status UI. Do not use as general brand accents.
Stage
Name
Hex
Use
01
Survival / Error
#FF4444
Danger states, error indicators
02
Stuck / Warning
#FF7A30
Warning states
03
Breakthrough / Caution
#FFB830
Caution states
04
Refinement
#00E5FF
Shares --cyan
05
Growth-Ready
#7B61FF
Shares --purple
06
Sovereign / Success
#00E396
Complete / success state
Primary Typeface: DM Sans
Property
Value
Family
DM Sans
Source
Google Fonts
Import
fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700;800;900
Weights
300, 400, 500, 600, 700, 800, 900
Fallback
sans-serif
Usage
Every single web element. No exceptions.
Accent Typeface: Agrandir
Property
Value
Family
Agrandir (PP Agrandir)
Source
fonts.cdnfonts.com/css/agrandir
Usage
Display headlines only. Hero text, stage titles, major impact moments.
Fallback
DM Sans weight 800
Limit
Sparingly. One element per screen maximum.
Style
Size
Weight
Line Height
Use
Display / Hero
48-56px
800
1.1-1.15
Page titles, hero headlines
H1
32-36px
700-800
1.2
Section titles, primary headings
H2
22-26px
700
1.3
Sub-section headers, card titles
H3
16-18px
600-700
1.4
Component labels, tertiary headers
Body
14-16px
400-500
1.5-1.6
All body copy, descriptions
Small / Caption
11-13px
400-500
1.4
Labels, metadata, footnotes
Micro / Tag
9-11px
600-700
1.3
Eyebrow labels, status tags
.eyebrow {
font-size : 9 -11px ;
font-weight : 700 ;
text-transform : uppercase;
letter-spacing : 0.35 -0.5em ;
color : var (--pink ); /* #FB3079 for primary CWK. labels */
/* color: var(--cyan); for feature / module labels */
}
4. Background and Atmosphere
Three layers create the signature look. All three are required.
html , body {
background-color : # 07090F ; /* var(--bg) */
}
Never white. Never light. Never off-black. This exact hex. Must be set on both html and body.
Orb
Color
Size
Position
Filter
Orb 1 (cyan)
rgba(0, 229, 255, 0.04)
600x600px
top: -200px, left: -200px
blur(140px)
Orb 2 (purple)
rgba(123, 97, 255, 0.05)
500x500px
bottom: -100px, right: -100px
blur(140px)
Orb 3 (pink)
rgba(255, 45, 120, 0.04)
centered
optional, high-energy pages only
blur(140px)
All orbs: position: fixed, pointer-events: none, z-index: 0.
Layer 3: Noise Texture Overlay
body ::before {
content : '' ;
position : fixed;
inset : 0 ;
z-index : 9999 ;
pointer-events : none;
opacity : 0.5 ;
/* SVG feTurbulence fractalNoise, baseFrequency 0.9, numOctaves 4 */
}
NOT OPTIONAL. Missing the noise overlay breaks the premium feel.
5. Glassmorphism and Card System
.card {
background : var (--glass ); /* rgba(255,255,255,0.03) */
border : 1px solid var (--gb ); /* rgba(255,255,255,0.08) */
border-radius : 12 -16px ; /* 8px for components, 100px for pills */
backdrop-filter : blur (12 -20px );
box-shadow : 0 4px 24px rgba (0 , 0 , 0 , 0.4 ); /* elevated cards only */
}
.card : hover {
border-color : var (--gb2 ); /* rgba(255,255,255,0.14) */
transform : scale (1.01 );
}
Surface
Value
Use
Page
#07090F
The base. Nothing sits below this.
Section bg
#0B0E18
Large panel backgrounds, tab content areas.
Card bg
rgba(255,255,255,0.03)
Standard card. Glassmorphic.
Card elevated
rgba(255,255,255,0.06)
Hover state or featured card.
Accent chip
rgba(0,229,255,0.12)
Cyan-tinted tag or label background.
Deep inset
#101422
Nested content, code blocks, data tables.
gap: 2px between all major stacked elements: cards, panels, rows, sections.
This creates the stacked tile effect that reads as architectural and precise.
Do not increase. 8px or 16px destroys the effect.
Property
Value
Block gap
2px between stacked major elements
Card padding (large)
36px 40px (hero cards, feature panels)
Card padding (standard)
22px 26px (standard cards, script blocks)
Card padding (compact)
14px 18px (chips, tags, dense rows)
Section top padding
72px above major sections with eyebrow labels
Page max-width
800px for single-column tools and documents
Page padding
0 24px 120px
Mobile padding
0 14px 80px at 640px breakpoint
Layout
Value
Default
display: grid
Two column
grid-template-columns: 1fr 1fr; gap: 2px
Three column
grid-template-columns: repeat(3, 1fr); gap: 2px
Asymmetric
grid-template-columns: 2fr 1fr (content + sidebar)
Mobile break
640px: all grids collapse to 1fr
@keyframes fadeUp {
from { opacity : 0 ; transform : translateY (14px ); }
to { opacity : 1 ; transform : translateY (0 ); }
}
Usage
Spec
Page / hero on load
animation: fadeUp 0.6s both
Panel on switch
animation: fadeUp 0.4s both
Card on appear
animation: fadeUp 0.3s both
Staggered items
animation-delay: 0.05s increments per item
Hover transitions
transition: all 0.2s ease
Scale on hover
transform: scale(1.01) (cards, interactive elements)
Button active
transform: scale(0.98) (pressed state)
NEVER
Spring, elastic, or bounce easing
Property
Value
Position
fixed top, backdrop-filter: blur(20px)
Background
rgba(7, 9, 15, 0.85)
Border
1px solid rgba(255,255,255,0.08) bottom only
Height
60-70px
Brand mark
Left-aligned. --text color. Dot optionally --cyan.
Nav items
Right-aligned. 12-13px. 500 weight. --muted default, --text on hover.
Type
Spec
Primary
bg: --cyan, color: --bg, font-weight: 700, border-radius: 8px, padding: 12px 24px
Secondary
bg: transparent, border: 1px solid --cyan, color: --cyan
Danger
bg: #FF4444 or transparent with #FF4444 border
Ghost
bg: rgba(255,255,255,0.06), color: --text, border: 1px solid --gb
Hover
brightness(1.1) primary, bg fill secondary, opacity: 0.9 ghost
Font
13-14px, weight 600-700, no text-transform
.tag {
background : rgba (0 , 229 , 255 , 0.1 ); /* cyan variant */
border : 1px solid rgba (0 , 229 , 255 , 0.25 );
color : # 00E5FF ;
border-radius : 100px ;
padding : 4px 12px ;
font-size : 10 -11px ;
font-weight : 600 ;
text-transform : uppercase;
letter-spacing : 0.05em ;
}
Purple variant: rgba(123, 97, 255, 0.1) bg, #7B61FF color.
Type
Value
Standard
1px solid rgba(255,255,255,0.08) (--gb)
Accent
2px solid --cyan or --pink for section emphasis
Gradient
linear-gradient(90deg, transparent, --cyan, transparent)
Section rule
hr with opacity: 0.15 or border-color: --gb
Gradient
Spec
Use
Hero text
linear-gradient(135deg, #00E5FF, #7B61FF) with background-clip: text, -webkit-text-fill-color: transparent
Primary hero headline on key landing pages
Ambient bg
linear-gradient(180deg, #07090F 0%, #0B0E18 100%)
Subtle section backgrounds for depth
Accent border
linear-gradient(135deg, #00E5FF, #7B61FF) as border-image
Featured card borders, active states
Glow effect
box-shadow: 0 0 0 1px rgba(0,229,255,0.4)
Alternative to gradient border
Rule
Meaning
CWK. always has the dot
Every instance. Headers, footers, body, tables, captions.
No em dashes
Use a colon or a period. Em dashes are not part of the CWK. voice.
No force negatives
Lead with what something IS. Never "not this, not that." State it directly.
Plain language
5th grade reading level. Even simpler for client-facing.
No AI writing patterns
No "Moreover", "Furthermore", "It is worth noting." Write how you talk.
Proprietary terms first
Use the glossary. Structural Fragility. Founder Dependency. Not generic business speak.
Positive and declarative
Every recommendation leads with a clear action. Not "you might consider." State it.
Confidential in footer only
Never in body text.
Dark background on every external asset
DM Sans all weights, all elements (web)
2px gaps between all stacked elements
Explicit color on every text element
rgba transparency for glass surfaces
Noise texture overlay via SVG
Cyan as primary accent
Pink (#FB3079) for eyebrow labels
Subtle ambient orbs at low opacity
All caps + letter-spacing for eyebrow labels
fadeUp at 0.3-0.6s for reveals
CWK. with the dot. Always.
Single typeface (DM Sans for web)
Light or white backgrounds on any CWK. surface
Mixing typefaces (no Roboto, Inter, or other sans-serif)
8px or 16px gaps that destroy the architectural tile effect
Relying on browser default black in dark interfaces
Solid opaque cards that look flat
Skipping the noise overlay
Using cyan as a background or fill color
Cyan for eyebrows (pink is the default eyebrow color)
Bright or high-opacity orbs that compete with content
Sentence case for eyebrow or section labels
Aggressive animations, bounces, or elastic easing
CWK without the dot under any circumstances
Decorative fonts, script fonts, or second sans-serif
12. Critical Rules (Non-Negotiable)
Every text element needs explicit color. Never rely on browser default black. Declare color on every heading, paragraph, span.
DM Sans on everything. No mixing typefaces. All 7 weights loaded. Right weight for the right role.
The 2px gap is intentional and fixed. Do not increase. The gap creates the architectural stacked-tile look.
Noise overlay goes on top of everything. body::before, z-index: 9999, pointer-events: none.
Background must be set on html AND body. Some renderers default to white.
Glass cards need explicit border. rgba fill is nearly invisible without it. Always pair fill with border: 1px solid var(--gb).
Never light backgrounds on external assets. CWK. is always dark. No light mode. No white cards. No beige.
No em dashes in any document. Use a colon or a period.
13. Implementation CSS (Ready to Use)
/* CWK. Design System — global.css */
@import url ('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700;800;900&display=swap' );
: root {
/* Primary Palette */
--bg : # 07090F ;
--bg2 : # 0B0E18 ;
--bg3 : # 101422 ;
--text : # EEF0FF ;
--cyan : # 00E5FF ;
--purple : # 7B61FF ;
--pink : # FB3079 ;
/* Transparency */
--glass : rgba (255 , 255 , 255 , 0.03 );
--gb : rgba (255 , 255 , 255 , 0.08 );
--gb2 : rgba (255 , 255 , 255 , 0.14 );
--muted : rgba (238 , 240 , 255 , 0.62 );
--dim : rgba (238 , 240 , 255 , 0.32 );
/* Stage Colors */
--stage-1 : # FF4444 ;
--stage-2 : # FF7A30 ;
--stage-3 : # FFB830 ;
--stage-4 : # 00E5FF ;
--stage-5 : # 7B61FF ;
--stage-6 : # 00E396 ;
/* Typography */
--font-primary : 'DM Sans' , sans-serif;
/* Spacing */
--gap-tile : 2px ;
--pad-lg : 36px 40px ;
--pad-md : 22px 26px ;
--pad-sm : 14px 18px ;
--section-top : 72px ;
--page-max : 800px ;
/* Radii */
--radius-card : 14px ;
--radius-component : 8px ;
--radius-pill : 100px ;
}
html , body {
background-color : var (--bg );
color : var (--text );
font-family : var (--font-primary );
font-size : 15px ;
line-height : 1.6 ;
-webkit-font-smoothing : antialiased;
}
/* Noise Texture Overlay */
body ::before {
content : '' ;
position : fixed;
inset : 0 ;
z-index : 9999 ;
pointer-events : none;
opacity : 0.5 ;
background-image : url ("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E" );
background-repeat : repeat;
background-size : 256px 256px ;
}
/* Ambient Orbs */
.orb-cyan {
position : fixed;
top : -200px ;
left : -200px ;
width : 600px ;
height : 600px ;
background : rgba (0 , 229 , 255 , 0.04 );
border-radius : 50% ;
filter : blur (140px );
pointer-events : none;
z-index : 0 ;
}
.orb-purple {
position : fixed;
bottom : -100px ;
right : -100px ;
width : 500px ;
height : 500px ;
background : rgba (123 , 97 , 255 , 0.05 );
border-radius : 50% ;
filter : blur (140px );
pointer-events : none;
z-index : 0 ;
}
/* Primary Animation */
@keyframes fadeUp {
from { opacity : 0 ; transform : translateY (14px ); }
to { opacity : 1 ; transform : translateY (0 ); }
}
Property
Value
Primary background
#07090F (var(--bg))
Logo color
#EEF0FF (var(--text)) with optional #00E5FF dot
Minimum size
16px / 12pt
Clear space
Equal to the height of the K on all sides
Never place on
White, light gray, or any background reducing contrast below 7:1
15. File Naming Convention
BIZ_[File_Name]_v[#] — Business Brand (CWK. Experience)
PB_[File_Name]_v[#] — Personal Brand
Underscores only. No spaces.
Version number incremented on every material update.
Examples: BIZ_Brand_Guidelines_v1.pdf, BIZ_Leak_Map_Client_v1.pdf