Cernio Design Foundations
Created: 2026-03-25 Purpose: Reference document for Stitch / design tool. All page designs are based on this foundation. Rule: The “engineer mindset” design rules in the Handbook are INVALID. This document is authoritative.
1. Brand Summary
| Field | Value |
|---|---|
| Product | Cernio — AI-powered B2B Buyer Intelligence Platform |
| Company | GaduLabs |
| Tagline | ”See What Others Can’t” |
| Metaphor | Cat’s night vision — AI that finds the right buyer in the dark |
| Voice & Tone | Confident, Clear, Direct, Professional, Expert |
| Personality | Warm-trustworthy + modern. Not playful, not corporate-stiff. |
| Competitor | Apollo.io (cold blue/purple) — we differentiate with warm teal/orange |
| Reference | Notion (warmth, generous whitespace) + Stripe (professional data presentation, dark sidebar) |
2. Color Palette — “Night Vision: Teal + Orange”
Concept: Dark teal = night, information chaos. Orange accent = cat’s eyes, moment of discovery, found value. Warm off-white background = illuminated workspace. Easy on the eyes, comfortable for extended use.
2.1 Primary Colors
| Token | Name | Hex | RGB | Tailwind Equivalent | Usage |
|---|---|---|---|---|---|
--primary | Deep Teal | #0D9488 | 13,148,136 | teal-500 | Links, active states, highlights |
--primary-dark | Night Teal | #134E4A | 19,78,74 | teal-900 | Sidebar, heading emphasis |
--primary-darker | Abyss Teal | #0F3D38 | 15,61,56 | — | Sidebar gradient dark end |
--primary-light | Soft Teal | #CCFBF1 | 204,251,241 | teal-100 | Teal background tints |
--primary-foreground | — | #FFFFFF | 255,255,255 | white | Text on primary |
--accent | Cernio Orange | #F97316 | 249,115,22 | orange-500 | CTA buttons, important actions |
--accent-hover | Deep Orange | #EA580C | 234,88,12 | orange-600 | CTA hover |
--accent-active | Burnt Orange | #C2410C | 194,65,12 | orange-700 | CTA active/pressed |
--accent-light | Soft Orange | #FFF7ED | 255,247,237 | orange-50 | Orange background tints |
--accent-foreground | — | #FFFFFF | 255,255,255 | white | Text on accent |
2.2 Surfaces (Backgrounds)
| Token | Name | Hex | Usage |
|---|---|---|---|
--background | Warm White | #FAFAF8 | Page background (not pure white, slightly warm) |
--card | White | #FFFFFF | Cards, modals, dropdowns |
--muted | Warm Gray | #F5F3EF | Secondary areas, hover, empty states |
--muted-foreground | — | #78716C | Text on muted surfaces |
2.3 Text
| Token | Hex | Usage |
|---|---|---|
--foreground | #1C1917 | Primary text (stone-900, warm black) |
--foreground-muted | #78716C | Secondary text (stone-500) |
--foreground-subtle | #A8A29E | Placeholder, hint text (stone-400) |
--foreground-on-dark | #F5F5F4 | Text on dark backgrounds (stone-100) |
2.4 Borders & Dividers
| Token | Hex | Usage |
|---|---|---|
--border | #E7E5E4 | Default border (stone-200) |
--border-strong | #D6D3D1 | Emphasized border (stone-300) |
--ring | #0D9488 | Focus ring (primary teal) |
2.5 Status Colors
| Token | Hex | Tailwind | Usage |
|---|---|---|---|
--success | #16A34A | green-600 | Success, confirmation, completed |
--success-light | #F0FDF4 | green-50 | Success background |
--destructive | #DC2626 | red-600 | Danger, delete, error |
--destructive-light | #FEF2F2 | red-50 | Error background |
--warning | #D97706 | amber-600 | Warning (not orange — to avoid confusion with accent) |
--warning-light | #FFFBEB | amber-50 | Warning background |
--info | #0EA5E9 | sky-500 | Information |
--info-light | #F0F9FF | sky-50 | Information background |
2.6 FitScore Colors (Natural Harmony!)
FitScore colors naturally align with the palette — no special design needed.
| Score | Token | Hex | Note |
|---|---|---|---|
| Hot (>=80) | --score-hot | #EF4444 | Red — urgent, hot |
| Warm (>=50) | --score-warm | #F97316 | Orange — same as accent! Natural harmony |
| Cold (<50) | --score-cold | #0D9488 | Teal — same as primary! Natural harmony |
2.7 Chart Colors
| Token | Hex | Name |
|---|---|---|
--chart-1 | #0D9488 | Teal (primary) |
--chart-2 | #F97316 | Orange (accent) |
--chart-3 | #8B5CF6 | Violet |
--chart-4 | #EC4899 | Pink |
--chart-5 | #06B6D4 | Cyan |
2.8 Sidebar Colors
| Token | Hex | Usage |
|---|---|---|
--sidebar | #134E4A | Sidebar background |
--sidebar-darker | #0F3D38 | Sidebar gradient dark end |
--sidebar-foreground | #F5F5F4 | Sidebar text |
--sidebar-muted | #A8A29E | Sidebar secondary text |
--sidebar-accent | #F97316 | Sidebar active page highlight |
--sidebar-accent-bg | rgba(249,115,22,0.1) | Sidebar active page background |
--sidebar-hover | rgba(255,255,255,0.05) | Sidebar hover |
--sidebar-border | rgba(255,255,255,0.1) | Sidebar dividers |
3. Typography
Font Family
| Usage | Font | Weights | Why |
|---|---|---|---|
| Headings | Plus Jakarta Sans | SemiBold (600), Bold (700) | Geometric, modern, warm feel |
| Body | Inter | Regular (400), Medium (500) | Proven readability, cleanest SaaS font |
| Mono/Code | Geist Mono | Regular (400) | Already in use, works well |
Size Scale (Tailwind-compatible)
| Token | Size | Line Height | Usage |
|---|---|---|---|
text-xs | 12px | 16px | Badge, label, meta |
text-sm | 14px | 20px | Secondary text, table cell |
text-base | 16px | 24px | Body (primary text) |
text-lg | 18px | 28px | Card title, emphasized text |
text-xl | 20px | 28px | Section title |
text-2xl | 24px | 32px | Page title |
text-3xl | 30px | 36px | Hero / large heading |
text-4xl | 36px | 40px | Landing page hero |
Weight Usage
4. Spacing & Layout
Spacing System (4px grid)
General Layout
Sidebar Behavior
| State | Width | Content |
|---|---|---|
| Expanded | 256px | Icon + text + badge |
| Collapsed | 64px | Icon only (tooltip for text) |
| Mobile | 0px (overlay) | Opens via hamburger, overlay |
Border Radius
| Token | Value | Usage |
|---|---|---|
--radius-sm | 6px | Badge, small label |
--radius | 8px | Button, input, dropdown |
--radius-md | 10px | Card |
--radius-lg | 12px | Modal, sheet |
--radius-xl | 16px | Large hero card |
Shadow
| Token | Value | Usage |
|---|---|---|
shadow-sm | 0 1px 2px rgba(0,0,0,0.05) | Card default |
shadow | 0 1px 3px rgba(0,0,0,0.1) | Card hover |
shadow-md | 0 4px 6px rgba(0,0,0,0.1) | Dropdown, popover |
shadow-lg | 0 10px 15px rgba(0,0,0,0.1) | Modal |
5. Component Styles
Buttons
| Variant | Background | Text | Border | Usage |
|---|---|---|---|---|
| Primary | --accent (orange) | White | — | Main action (Save, Create, Start Discovery) |
| Secondary | --muted | --foreground | --border | Secondary action (Cancel, Back) |
| Ghost | Transparent | --foreground-muted | — | Tertiary action (Details, More) |
| Destructive | --destructive | White | — | Dangerous action (Delete) |
| Outline | Transparent | --primary | --primary | Alternative emphasis (Filter, Edit) |
| Link | Transparent | --primary | — | Inline link appearance |
Important: Primary button = ORANGE. Not teal. Orange = action, teal = information/navigation.
Sizes
| Size | Height | Padding X | Font | Usage |
|---|---|---|---|---|
sm | 32px | 12px | 14px | Inside tables, compact areas |
default | 40px | 16px | 14px | Standard button |
lg | 48px | 24px | 16px | Hero, form submit |
icon | 40x40px | — | — | Icon-only button |
Cards
Badges
| Type | Background | Text | Usage |
|---|---|---|---|
| Default | --muted | --foreground-muted | General label |
| Primary | --primary/10 | --primary | Teal emphasis |
| Accent | --accent-light | --accent | Orange emphasis |
| Success | --success-light | --success | Success |
| Destructive | --destructive-light | --destructive | Error |
| FitScore Hot | #FEF2F2 | --score-hot | Score >=80 |
| FitScore Warm | --accent-light | --score-warm | Score >=50 |
| FitScore Cold | --primary-light | --score-cold | Score <50 |
Input & Form
Table
6. Icons
| Decision | Value |
|---|---|
| Library | Lucide React |
| Size | 16px (sm), 20px (default), 24px (lg) |
| Stroke | 1.5px (sm), 2px (default) |
| Emoji | FORBIDDEN — SVG icons only |
7. Animation & Transitions
| Type | Duration | Easing | Example |
|---|---|---|---|
| Hover | 150ms | ease | Button, card hover |
| Expand/Collapse | 200ms | ease-out | Sidebar, accordion |
| Modal | 200ms | ease-out | Dialog open |
| Toast | 300ms | ease-in-out | Notification entry |
| Skeleton | 1.5s | ease-in-out | Loading animation |
prefers-reduced-motion support is mandatory. Respect users who disable animations.
8. Design Guidelines — DO vs DON’T
DO
- Leave generous whitespace (like Notion)
- Use orange ONLY for action buttons (less is more)
- Use teal tones for navigation and informational highlights
- Warm off-white background (not pure white)
- Emphasize cards — put content in cards, don’t leave pages flat
- Keep data tables clean, reduce visual noise
- MAX 2 orange buttons per page (importance hierarchy)
- Empty states: icon + description + single CTA
DON’T
- Paint everything orange — orange is for primary actions only
- Place teal + orange side by side (contrast too harsh)
- Nest cards inside cards — keep it flat
- Use more than 3 different badge colors on the same row
- Too many sidebar items (max 10-12 visible, group the rest)
- Use gradients (except sidebar — prefer flat colors)
- Overdo shadows — subtle shadow-sm is sufficient
9. Dark Mode Note
Dark mode is NOT designed in this document. Light mode tokens are the source of truth. Dark mode tokens will be derived programmatically:
- Background:
#0C1917(teal-tinted dark)- Card:
#1A2B28(teal-tinted slate)- Foreground:
#F5F5F4(stone-100)- Primary:
#14B8A6(teal-400 — brighter)- Accent:
#FB923C(orange-400 — brighter) Detailed dark mode palette will be done in a separate iteration.
10. Responsive Strategy
| Priority | Platform | Approach |
|---|---|---|
| 1 | Desktop (1280px+) | Primary design — all features |
| 2 | Tablet (768-1279px) | Sidebar collapsed, layout adjusted |
| 3 | Mobile (<768px) | Sidebar overlay, single column, simplified |
Note: Tablet/mobile apps will be separate projects (reduced feature set). Website design includes responsive support but desktop is the priority.
11. Page Inventory (Full Product)
All pages are designed as if the product is complete. Pages not yet coded are included. Inactive features can be hidden in the UI (feature flag) but are included in design.
Main Pages
| # | Page | Route | Description | Current Status |
|---|---|---|---|---|
| 1 | Login | /login | Email/password + magic link + social login | Not built (R1) |
| 2 | Signup | /signup | Registration + organization creation | Not built (R1) |
| 3 | Onboarding | /onboarding | 4-step wizard (profile → product → market → first discovery) | Not built (R1) |
| 4 | Dashboard | /dashboard | Summary metrics, recent activity, quick actions, charts | Not built (R2) |
| 5 | Discovery | /discovery | AI company discovery — keyword + country + provider + result list | Exists |
| 6 | Companies | /companies | Company database — filter, sort, FitScore, segment, export | Exists |
| 7 | Company Detail | /companies/[id] | Full-page company profile — details, contacts, interactions, score | Exists (modal) |
| 8 | Contacts | /contacts | Contact directory — search, filter, sort, export | Exists |
| 9 | Contact Detail | /contacts/[id] | Contact profile — contact info, linked company, notes | Not built |
| 10 | Leads | /leads | Pipeline — board view + list view toggle | Exists (list) |
| 11 | Lead Detail | /leads/[id] | Lead profile — status, contacts, interactions, tasks, notes | Exists |
| 12 | Products | /products | Product portfolio — CRUD, category, price | Not built (R2) |
| 13 | Quotes | /quotes | Quote creation/management — select product, price, PDF export | Not built (R3) |
| 14 | Scraper | /scraper | File upload (PDF/Excel/Word) + processing status | Exists |
| 15 | Scraper Review | /scraper/review | Result review + approval + DB push | Exists |
| 16 | Batch Operations | /batch | Bulk operations — cleaner, finder, bulk_fixer, progress | Not built (R2) |
Settings & Management
| # | Page | Route | Description | Current Status |
|---|---|---|---|---|
| 17 | Pricing | /pricing | Plan comparison (Free/Pro/Team/Enterprise) | Not built (R1) |
| 18 | Billing & Usage | /settings/billing | Credit balance, invoice history, plan management, usage chart | Not built (R1) |
| 19 | Org Settings | /settings/org | Org info + member invite/management + roles | Not built (R1) |
| 20 | User Profile | /settings/profile | Profile + preferences + API key (developer) | Not built (R1) |
| 21 | Admin Dashboard | /admin | Monitoring — usage, cost, activity log, system health | Not built (R2) |
| 22 | Admin Segments | /admin/segments | Segment CRUD management | Exists |
Marketing (Separate)
| # | Page | Route | Description | Current Status |
|---|---|---|---|---|
| 23 | Landing Page | / (public) | Showcase — hero, features, testimonial, CTA | Not built (R2+) |
| 24 | About | /about | GaduLabs story | Not built (R2+) |
12. Next Steps
- Page briefs → Detailed layout + component list for each page (to be fed to Stitch)
- globals.css update → Convert this palette to Tailwind v4 tokens
- Sidebar redesign → Collapsible + dark teal + orange active
- Font change → Geist → Plus Jakarta Sans (heading) + Inter (body)
- Page-by-page design → Briefs to be sent to Stitch
13. References
| Source | Purpose |
|---|---|
| Stripe Accessible Color Systems | Accessible color system approach |
| Stripe Brand Colors | Dark sidebar + professional tone reference |
| Notion Brand Colors | Warm, minimal, content-first approach |
| Plus Jakarta Sans | Heading font |
| Inter Font | Body font |
| SaaS Color Palettes — Produkto | B2B SaaS palette examples |