senti-beta / DESIGN.md
joseph njoroge kariuki
Deploy Senti AI to Hugging Face Spaces
021e065
metadata
name: Senti AI Design System
description: >-
  Visual specifications for personal, business, and institutional banking
  modules.
colors:
  primary-personal: '#50fa7b'
  primary-inst: '#38bdf8'
  bg-personal: '#0e1322'
  bg-inst: '#0b1326'
  ink-personal: '#dee1f7'
  ink-inst: '#dae2fd'
  outline: '#859583'
  error: '#ffb4ab'
typography:
  display:
    fontFamily: DM Serif Display, serif
    fontSize: clamp(2rem, 5vw, 4.5rem)
    fontWeight: 400
    lineHeight: 1.1
    letterSpacing: '-0.02em'
  headline:
    fontFamily: IBM Plex Sans, sans-serif
    fontSize: 1.75rem
    fontWeight: 600
    lineHeight: 1.25
  title:
    fontFamily: IBM Plex Sans, sans-serif
    fontSize: 1.25rem
    fontWeight: 500
    lineHeight: 1.3
  body:
    fontFamily: IBM Plex Sans, sans-serif
    fontSize: 1rem
    fontWeight: 400
    lineHeight: 1.5
  label:
    fontFamily: IBM Plex Mono, monospace
    fontSize: 0.875rem
    fontWeight: 500
    letterSpacing: 0.05em
rounded:
  personal: 16px
  business: 8px
  institutional: 4px
spacing:
  sm: 8px
  md: 16px
  lg: 24px
  xl: 32px
components:
  button-personal:
    backgroundColor: '{colors.primary-personal}'
    textColor: '{colors.bg-personal}'
    rounded: '{rounded.personal}'
    padding: 12px 24px
  button-inst:
    backgroundColor: '{colors.primary-inst}'
    textColor: '{colors.bg-inst}'
    rounded: '{rounded.institutional}'
    padding: 8px 16px
  card-personal:
    backgroundColor: '{colors.bg-personal}'
    rounded: '{rounded.personal}'
    padding: 24px
  card-inst:
    backgroundColor: '{colors.bg-inst}'
    rounded: '{rounded.institutional}'
    padding: 16px

Senti AI Design System

1. Overview

Creative North Star: "The Neon Ledger & Cyber Observatory"

Senti AI features a dual-natured visual architecture tailored to its target audiences. Personal and business modules operate under The Neon Ledger, a progressive, highly kinetic dark environment that bridges everyday mobile money patterns with futuristic wealth tools. Institutional and regulatory modules occupy The Cyber Observatory, an ultra-dense, highly structured dashboard environment focused on mathematical certainty, risk tracking, and compliance.

The system is flat-by-default, rejecting gratuitous three-dimensional gradients or shadows in favor of crisp borders, purposeful color states, and high readability. It enforces a strict visual grammar that keeps components clean, preventing layout noise and making the complex financial data feel clear and intuitive.

Key Characteristics:

  • Double Identity: Dynamic slate-green for personal/business; obsidian-blue for institutional.
  • Earned Density: Clean grids and structured layouts designed to convey financial data clearly.
  • Clinical Math: Strict separation between analytical values (highlighted in monospace fonts) and dynamic dialogue interfaces.

2. Colors

Colors in Senti AI are semantic, functional, and highly restricted. Senti personal modules are dark-emerald committed, while Senti institutional modules are restrained cyber-blue.

Primary

  • Emerald Glow (#50fa7b / oklch(86.83% 0.28 142.5)): Used exclusively for primary buttons, active chat bubbles, success indicators, and positive cash flows in personal modules.
  • Cyber Azure (#38bdf8 / oklch(76.2% 0.16 230.1)): Used for primary actions, loan approval tags, and compliance statuses in institutional modules.

Neutral

  • Slate Void (#0e1322): Primary background surface for personal/business views.
  • Deep Obsidian (#0b1326): Structural background surface for institutional views.
  • Silver Silk (#dee1f7): High-contrast primary ink/text color for personal modules.
  • Cyber Glass (#dae2fd): High-contrast primary ink/text color for institutional modules.

Named Rules

The Rarity of Glow Rule. Senti Neon (#50fa7b) must occupy no more than 10% of any personal screen view. Rarity is what gives primary actions and positive status indicators their authority. The Dual Tenant Rule. A personal dashboard element must never use Cyber Azure (#38bdf8) accents, and an institutional dashboard must never display Emerald Glow (#50fa7b) button assets. Brand identity is structurally bound to the path.

3. Typography

Typography in Senti AI divides display, interface, and tabular data strictly to balance emotional warmth with mathematical rigor.

Display Font: DM Serif Display (serif fallback) Body Font: IBM Plex Sans (sans-serif fallback) Label/Mono Font: IBM Plex Mono (monospace fallback)

Character: Display headings pair a traditional, academic serif with an ultra-clean, technical sans-serif to create an "expert confidence" feel. Monospaced elements are heavily prioritized for tabular metrics and financial indicators to guarantee strict columnar alignment.

Hierarchy

  • Display (Regular 400, clamp(2rem, 5vw, 4.5rem), Line-Height 1.1): Used strictly for marketing hero headings and main dashboard welcome banners.
  • Headline (Semi-Bold 600, 1.75rem, Line-Height 1.25): Used for main card groupings and page section titles.
  • Title (Medium 500, 1.25rem, Line-Height 1.3): Used for subheadings and card titles.
  • Body (Regular 400, 1rem, Line-Height 1.5): Standard prose and message bubbles. Limited to 65–75 characters per line (max-w-[70ch]).
  • Label (Medium 500, 0.875rem, Letter-Spacing 0.05em, Uppercase): Monospaced label tag used for table headers, financial calculations, and state alerts.

Named Rules

The Monospace Tabular Rule. All financial numbers, interest calculations, currency listings (KES, USD), and tax amounts must be wrapped in monospaced formatting (font-mono) to prevent visual layout shifting during real-time calculation updates.

4. Elevation

Senti AI strictly rejects drop-shadows on border-wrapped containers to avoid the outdated "ghost-card" anti-pattern. Depth is created via tonal surface layering and crisp, low-opacity outline borders.

  • Flat Layering: Content surfaces use elevated background steps (senti-surface-container #1a1f2f on bg #0e1322) rather than shadows to define panels.
  • State Glow: Subtle ambient glows (box-shadow: 0 0 10px rgba(80, 250, 123, 0.3)) are reserved exclusively for active, real-time recalculating indicators or positive chat state cues (neon-glow).

Named Rules

The Flat Rest Rule. Containers, buttons, and panels are completely flat at rest. Low-blur shadows appear only as a highly responsive transition during active hover and focus states.

5. Components

Buttons

  • Shape: Rounded according to segment constraints (Personal = 16px rounded; Institutional = 4px sharp).
  • Personal Primary: Emerald Glow background with Slate Void text, padded at 12px 24px.
  • Institutional Primary: Cyber Azure background with Deep Obsidian text, padded at 8px 16px.
  • Hover/Focus State: 150ms transition. Shifts background brightness or scales down slightly (scale-98) under click pressure.

Cards / Containers

  • Corner Style: Matching segment rounded scales (Personal = 16px, Business = 8px, Institutional = 4px).
  • Background: Raised surface containers (Personal = #1a1f2f; Institutional = #171f33).
  • Borders: Thin structural borders (1px solid rgba(255,255,255,0.08) or {colors.outline}). No side-stripe accents allowed.

Inputs / Fields

  • Style: Background container (#0e1322 / #060e20), thin outline, and segment-specific corner radii.
  • Focus: 150ms transition. Glow border transition to primary accent color (#50fa7b or #38bdf8).

Navigation

  • Style: Flat side nav with high contrast indicators. Selected states are denoted by a solid outline ring or a low-opacity container fill, never by a side-stripe vertical bar.

6. Do's and Don'ts

Do:

  • Do wrap every financial amount, table row, and exchange rate in font-mono to ensure tabular alignment and prevent layout shifting.
  • Do strictly limit Senti Neon (#50fa7b) to primary action triggers and real-time computation states, respecting the Rarity rule.
  • Do support prefers-reduced-motion, swapping kinetic panel slides for instant or soft opacity fades when selected.
  • Do maintain a minimum 4.5:1 contrast ratio for all secondary label and placeholder texts against background containers.

Don't:

  • Don't use diagonal stripe backgrounds, paper textures, or hand-drawn sketches. Maintain high-tech vector precision.
  • Don't combine a 1px border with a soft drop shadow on cards or buttons (ghost-card anti-pattern). Pick one.
  • Don't apply vertical or horizontal side-stripes (border-left or border-top > 1px) to represent container accents on rounded cards.
  • Don't allow hero headings or modal dialogue titles to exceed 6rem clamp sizes.
  • Don't implement animate-bounce or elastic transition easing. Decelerate smoothly using exponential curves.

7. Motion & Interaction

Custom Easing Curves (Design Tokens)

All transitions must use one of these custom curves. Default CSS ease, ease-in-out, and linear are banned for UI animations.

  • Exponential Out β€” cubic-bezier(0.23, 1, 0.32, 1) (--ease-out-expo): Primary UI easing. Used for color changes, hover states, popover entry, and all general-purpose transitions. Starts fast, giving instant feedback.
  • Exponential In-Out β€” cubic-bezier(0.77, 0, 0.175, 1) (--ease-in-out-expo): Used for on-screen element movement, state morphing, and continuous pulses.
  • Drawer Curve β€” cubic-bezier(0.32, 0.72, 0, 1) (--ease-drawer): Used for sidebar slide transitions, progress bar fills, and panel open/close.

Duration Guidelines

Element Duration
Button press feedback 160ms
Tooltips, small popovers 125–200ms
Hover color changes 150ms
Dropdowns, selects 150–250ms
Modals, drawers, panels 200–350ms
Cascade stagger per-item 30–80ms delay

Press Feedback Standard

Every interactive button must include tactile press feedback via transform: scale(0.97) on :active, using the btn-press utility class. This applies universally across personal, business, and institutional modules.

Cascade Stagger Reveals

Lists, card grids, and navigation items must never mount instantly. Use staggered delays:

  • Grid cards: stagger-item class β€” 40ms intervals, fadeSlideIn keyframe.
  • Navigation items: stagger-nav class β€” 30ms intervals, tighter fadeSlideIn.
  • Stagger is decorative β€” never block interaction during playback.

Modal Entry Animation

  • Overlay: modal-enter β€” 200ms opacity fade.
  • Panel: modal-panel-enter β€” 250ms fade + scale(0.96) to scale(1).
  • Modals use transform-origin: center (they are viewport-anchored, not trigger-anchored).

Performance Rules

  • Animate exclusively via transform and opacity. Never animate top, left, width, height, margin, or padding.
  • backdrop-blur is only applied to fixed or sticky elements (navbars, overlays). Never to scrolling content.
  • Use CSS transitions over keyframes for interruptible UI. Keyframes restart from zero; transitions retarget smoothly.
  • Noise/grain filters must be on fixed, pointer-events: none pseudo-elements only.
  • Specify exact transition properties β€” transition: all is banned.

Accessibility

  • Respect prefers-reduced-motion: reduce. All transform and position animations are stripped; opacity fades are retained.
  • Gate hover effects behind @media (hover: hover) and (pointer: fine) on touch devices.
  • Minimum 44px touch targets for all interactive elements.

8. Anti-Patterns (Banned)

The following patterns are banned across all modules:

  • Emojis in code or rendered output
  • transition: all β€” specify exact properties
  • ease-in on any UI element β€” feels sluggish
  • animate-pulse or animate-bounce β€” use alert-pulse for subtle indicator animations
  • shadow-md or generic drop shadows β€” use custom shadow-[0_1px_3px_rgba(0,0,0,0.3)]
  • border-l side-stripe accents on rounded containers (personal/business) β€” use ring-1 or tonal fill
  • scale(0) entry animations β€” start from scale(0.95) + opacity: 0
  • Hover animations without media query gating on touch devices
  • AI copywriting clichΓ©s: "Seamless", "Elevate", "Unleash", "Next-Gen"
  • Fake round numbers: 99.99%, 50%
  • Generic placeholder names: "John Doe", "Acme", "Nexus"