wiki/V2/07-design-system.md
PRISM Design System — "Signature" (v1)
Created 2026-07-06. Extracted verbatim from the canonical SPA generator template and reconciled into one reusable system. This is Arijit's signature design language — every V2 screen imports from here; nothing gets re-invented.
Source of truth (do not edit these to change the system — edit this doc + the tokens file):
- ~/.claude/skills/algolia-search-audit/templates/index-template.html (SPA template, 13,027 lines — the canonical layout + components)
- ~/.claude/skills/algolia-search-audit/templates/algolia-brand.css (brand CSS injected into every deliverable, 1,140 lines)
- ~/.claude/skills/algolia-search-audit/scripts/render-audit.ts (the renderer that stamps them out)
This is a single fixed LIGHT theme — no dark-mode /
prefers-color-schemein source. Two components are deliberately dark within the light page (the topbar and the "Company Snapshot" navy panel). If V2 wants a dark mode, that is a NEW decision, not an extraction.
1. Design tokens (the reconciled single source)
Ship this as prism-tokens.css and import it into every V2 screen. This reconciles the source's real inconsistencies (noted inline) into one clean set.
:root {
/* ---- Brand ---- */
--blue: #003DFF; /* primary brand (Algolia blue) */
--purple: #5468FF; /* secondary brand */
--gray: #23263B; /* primary text / dark surfaces (topbar) */
--mid: #6B7280; /* secondary / muted text */
--light: #F5F5F7; /* light surface tint */
--border: #E5E7EB; /* hairline borders */
--white: #FFFFFF;
--page-bg: #F8F9FB; /* body background */
/* ---- Semantic status ---- */
--red: #DC2626; /* danger / critical */
--amber: #D97706; /* warning / moderate */
--green: #059669; /* success / positive */
--teal: #0891B2; /* info accent */
--violet: #7C3AED; /* secondary accent */
/* ---- Signal / brand-mark colors ---- */
--linkedin: #0A66C2;
--competitor:#EF4444;
--partner: #0D9488;
--social-x: #000000;
/* ---- Tint + border pairs (soft-bg + subtle border per status) ---- */
--blue-tint: #EEF2FF; --blue-border: #C7D2FE;
--red-tint: #FEF2F2; --red-border: #FECACA;
--amber-tint: #FFFBEB; --amber-border: #FDE68A;
--green-tint: #F0FDF4; --green-border: #BBF7D0;
--violet-tint:#F5F3FF; --violet-border:#DDD6FE;
--teal-tint: #F0FDFA; --teal-border: #99F6E4;
--hover-tint: #F0F4FF; /* link/row hover bg */
--near-white: #FAFAFA; /* alternating rows */
/* ---- Type ---- */
--font: 'Sora', sans-serif; /* weights 300 / 400 / 600 only */
/* ---- Radius / shadow (reconciled) ---- */
--radius: 8px; /* default; cards use 12px, tiles/bento 16–20px, pills 100px */
--shadow: 0 2px 8px rgba(33,36,61,0.10);/* base elevation — was rounded 2 ways in source, use this */
--shadow-hover: 0 6px 24px rgba(33,36,61,0.11);
/* ---- Layout ---- */
--topbar-h: 52px;
--tabrail-h: 80px;
--drawer-w: 480px;
--content-max: 1040px; /* source had both 1040 and 960 — standardize on 1040 for content */
}
Reconciliations Track B must apply (source bugs → clean system):
- Gauge/bar JS colors (#16A34A green, #2563EB blue) differ from CSS --green/--blue. → Use the CSS tokens everywhere; retire the JS-only hexes.
- --shadow was rounded two ways (rgba(33,36,61…) vs rgba(35,38,59…)). → One value (above).
- Two content max-widths (1040 / 960). → Standardize 1040.
- No :disabled button state exists. → Add one (see §5) — V2 doors need it (Marketer's disabled buttons currently rely on ad-hoc styling).
- Section sidebar position flips left/right between the two source files. → Pick one (recommend left rail).
2. Color usage
Primary text --gray on --page-bg. Brand blue --blue for links/primary actions (links: underline-on-hover only, no color change, no arrows/icons — this is a stated non-negotiable). Status colors always as a tint + border + text triad (e.g. critical = --red-tint bg / --red-border / --red text). Dark accent panels use the navy gradient linear-gradient(135deg,#0d1b38,#1a2d52 55%,#13244a).
3. Typography — Sora
Google Fonts, weights 300 / 400 / 600 only, display=swap.
| Element | Size | Weight | Line-height | Tracking |
|---|---|---|---|---|
| h1 | 56px | 300 | 1.10 | -2px |
| h2 | 36px | 300 | 1.40 | -2px |
| h3 | 28px | 400 | 1.40 | -1px |
| h4 | 22px | 600 | 1.40 | — |
| h5 | 18px | 600 | 1.40 | — |
| body | 16px | 400 | 1.6 | — |
| label/eyebrow | 14px | 600 | — | uppercase, 0.12em |
Signature move: light-weight (300) large headlines with negative tracking — the elegant, editorial feel. Eyebrows are 14px/600 uppercase in --blue.
4. Motion
Three easing curves, used consistently:
- Spring/bounce: cubic-bezier(0.34, 1.3, 0.64, 1) — card hovers, animated highlights.
- Standard ease-out: cubic-bezier(0.4, 0, 0.2, 1) — drawers, accordions, bar fills.
- Slow organic: cubic-bezier(0.445, 0.05, 0.55, 0.95) — background blobs.
Durations: 0.12s hover color, 0.15s button bg, 0.18–0.25s card lift, 0.35–0.45s drawer/accordion, 0.6–1s progress fills. Signature effects: 4-layer "3D shadow" card lift, mouse-tracking conic-gradient glow border (.glow-card), floating stat-bar (float-bob), animated gradient blobs behind the snapshot panel.
5. Components (canonical CSS in the source; key ones)
Base card (--radius? no — cards use 12px), hover lift translateY(-2px) + --shadow-hover. Metric tile (label uppercase 14/600 + 1.35rem value, --red/--green variants). 3D shadow card (4-layer shadow stack). Bounce card (case-study stat, red/amber/green gradients, scale(0.95) rotate(-1deg) on hover). Data table (--gray header, white, uppercase 0.06em th, row hover #FAFBFF, horizontal-scroll on mobile). Feature/capability table (red-vs-blue vendor columns, .cap-yes/-no/-part). Bento tiles (glassmorphism, backdrop-filter: blur(20px), mouse-tracked radial spotlight). Score gauge (SVG, circumference 283, color thresholds <4 red / 4–6 amber / ≥6 green/blue). Cmd+K palette, right slide-in drawer, signal cards (4px left color-bar by type), severity badges (tint+border+text triad).
Buttons — NOTE: the source has no generic .btn system — every control is bespoke (.tb-btn, .tab-btn, .filter-btn, .cs-read-link, .proof-pill, etc.). Track B should define ONE button system (primary / secondary / ghost / pill + hover/active/focus/disabled) distilled from these, so V2 doors stop re-authoring buttons. The --disabled state is missing entirely in source and must be added.
Full per-component CSS lives in the source files above and in the sub-agent extraction transcript; Track B lifts it into prism-components.css.
6. The Claude Design prompt (seeded with real tokens)
Paste this into a Claude / Claude Design session to generate on-brand screens. It is seeded with the actual extracted values so output matches the live system — far higher fidelity than pointing a tool at the login-gated prism.chowmes.com.
You are generating a UI screen in the PRISM design system. PRISM is a premium enterprise prospect-intelligence product. Match this design language exactly — it is a fixed light theme, elegant and editorial, never generic-SaaS.
Font: Sora (Google Fonts, weights 300/400/600 only). Large headlines use weight 300 with negative letter-spacing (h1 56px/−2px, h2 36px/−2px). Body 16px/400, line-height 1.6. Eyebrows: 14px/600, uppercase, letter-spacing 0.12em, colored
#003DFF.Palette: brand blue
#003DFF, secondary purple#5468FF, primary text#23263B, muted text#6B7280, page background#F8F9FB, surfaces white, hairline borders#E5E7EB, radius 8px. Status colors as tint+border+text triads: critical#FEF2F2/#FECACA/#DC2626, moderate#FFFBEB/#FDE68A/#D97706, positive#F0FDF4/#BBF7D0/#059669. Dark accent panels uselinear-gradient(135deg,#0d1b38,#1a2d52,#13244a).Links: blue, underline on hover only — no color change, no arrows/icons.
Elevation: base shadow
0 2px 8px rgba(33,36,61,0.10); cards lift on hover withtranslateY(-2px)and a deeper shadow. Use the signature 4-layer "3D shadow" for hero cards.Motion: hover transitions 0.12–0.18s; card lifts with
cubic-bezier(0.34,1.3,0.64,1); drawers/accordions withcubic-bezier(0.4,0,0.2,1)over 0.35–0.45s. Restrained, premium — never bouncy-everywhere.Components to reuse: metric tiles (uppercase 14/600 label + 1.35rem value), data tables (dark
#23263Bheader, uppercase 0.06em, row-hover#FAFBFF, horizontal-scroll on mobile), pill tab-rail (active = filled#23263Bwhite text), Cmd+K palette, right slide-in drawer (480px), signal cards with a 4px left color-bar, severity badges as tint+border+text.Buttons: primary = solid
#003DFFwhite text; secondary = white with#E5E7EBborder, hovers to blue border+text; ghost = text-only, blue on hover; pill = fully rounded. Always include hover/active/focus/disabled states (disabled = 0.5 opacity,not-allowed).Layout: max content width 1040px, generous section rhythm (~96px between sections), fixed 52px topbar (dark
#23263B), responsive down to 375px with tables scrolling and grids collapsing to one column.Never: generic Bootstrap/Material look, drop shadows everywhere, gradients on text, emoji as UI icons, or any color change on link hover. Output self-contained HTML+CSS using the tokens above as CSS custom properties.
7. Next for Track B
- Emit
prism-tokens.css(§1) +prism-components.css(distilled buttons/cards/tables with the added:disabled). - Apply the §1 reconciliations (kill source inconsistencies).
- Retrofit the Marketer door onto the tokens file; build AE/BDR doors on it from the start.
- Keep this doc as the living spec; the SPA template stays the reference implementation.