Yuiva Design System
Yuiva's visual identity uses the Catppuccin Macchiato palette — warm and precise. Pink as the primary brand color, blue as secondary, teal as accent. Headings in Plus Jakarta Sans, body in Inter.
Logo
The logomark is a rounded square with a pink-to-blue gradient. The wordmark uses Plus Jakarta Sans Medium with tight tracking.
Color System
Based on Catppuccin Macchiato. All values are defined in theme.css under the .dark block. Never use hard-coded hex values in components — always reference the CSS variables.
Backgrounds
Brand Accent Colors
Brand Gradient
AI Agent & Human User Colors
These colors distinguish AI-generated content from human interactions across the product.
Text
System / Status
Typography
Two typefaces. Plus Jakarta Sans for all headings (h1–h4). Inter for body, labels, buttons, and inputs. JetBrains Mono for code and technical identifiers.
Spacing
Based on a 4px base unit. Use these tokens — do not use arbitrary pixel values.
Radius & Shadows
Consistent corner radius from theme.css.
6px
10px
14px
20px
9999px
Glow Shadows
Cards
The primary container primitive. Border radius --radius-lg (14px), background --color-card, hover shifts to --color-card-hover. Cards are selectable — click to toggle selected state, click again to deselect.
Selected state uses --color-primary border with a subtle pink glow. Unselected on click removes the highlight.
Form Elements
Background is --color-input-background (#363a4f). Focus ring uses --color-ring (#f5bde6). Border radius --radius-sm (6px).
Do & Don't
Core rules for maintaining brand consistency.
--color-* variables from theme.csstheme.css
The complete design token file exported from Figma. This is the single source of truth for all colors, typography, spacing, radius, and shadow values. Import this file in your project before any other styles.
@custom-variant dark (&:is(.dark *));
:root {
/* ===== TYPOGRAPHY ===== */
--font-size-xs: 0.75rem;
--font-size-sm: 0.875rem;
--font-size-base: 1rem;
--font-size-lg: 1.125rem;
--font-size-xl: 1.25rem;
--font-size-2xl: 1.5rem;
--font-size-3xl: 1.875rem;
--font-size-4xl: 2.25rem;
--font-weight-light: 300;
--font-weight-normal: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--font-weight-extrabold: 800;
/* ===== COLORS (light mode) ===== */
--color-background: #eff1f5;
--color-foreground: #4c4f69;
--color-card: #e6e9ef;
--color-card-foreground: #4c4f69;
--color-popover: #dce0e8;
--color-popover-foreground: #4c4f69;
--color-sidebar: #e6e9ef;
--color-sidebar-foreground: #4c4f69;
--color-primary: #ea76cb;
--color-primary-foreground: #eff1f5;
--color-secondary: #179299;
--color-secondary-foreground: #eff1f5;
--color-accent: #dd7878;
--color-accent-foreground: #eff1f5;
--color-muted: #ccd0da;
--color-muted-foreground: #5c5f77;
--color-destructive: #d20f39;
--color-destructive-foreground: #eff1f5;
--color-border: #9ca0b0;
--color-input: transparent;
--color-input-background: #e6e9ef;
--color-ring: #ea76cb;
/* ===== BORDER RADIUS ===== */
--radius: 0.625rem;
--radius-sm: 0.375rem;
--radius-md: 0.625rem;
--radius-lg: 0.875rem;
--radius-xl: 1.25rem;
--radius-full: 9999px;
/* ===== SPACING ===== */
--spacing-1: 0.25rem;
--spacing-2: 0.5rem;
--spacing-3: 0.75rem;
--spacing-4: 1rem;
--spacing-5: 1.25rem;
--spacing-6: 1.5rem;
--spacing-8: 2rem;
--spacing-10: 2.5rem;
--spacing-12: 3rem;
--spacing-16: 4rem;
--spacing-20: 5rem;
--spacing-24: 6rem;
}
.dark {
/* ===== BACKGROUNDS ===== */
--color-background: #24273a;
--color-background-hover: #2d3143;
--color-foreground: #cad3f5;
/* ===== SURFACES ===== */
--color-card: #363a4f;
--color-card-hover: #42465e;
--color-card-foreground: #cad3f5;
--color-popover: #363a4f;
--color-popover-foreground: #cad3f5;
--color-sidebar: #1e2030;
--color-sidebar-hover: #252837;
--color-sidebar-foreground: #cad3f5;
/* ===== BRAND COLORS ===== */
--color-primary: #f5bde6; /* Pink — primary */
--color-primary-foreground: #181926;
--color-primary-hover: #f8d2ec;
--color-secondary: #8aadf4; /* Blue — secondary */
--color-secondary-foreground: #181926;
--color-secondary-hover: #a5c0f8;
--color-accent: #8bd5ca; /* Teal — accent */
--color-accent-foreground: #181926;
--color-accent-hover: #a3e0d4;
/* ===== AI / HUMAN DISTINCTION ===== */
--color-ai: #c6a0f6; /* Mauve — AI agents */
--color-ai-foreground: #181926;
--color-ai-hover: #d4b5f9;
--color-human: #f4dbd6; /* Rosewater — human users */
--color-human-foreground: #181926;
--color-human-hover: #f7e5e1;
/* ===== SYSTEM ===== */
--color-muted: #5b6078;
--color-muted-foreground: #a5adcb;
--color-success: #a6da95;
--color-success-foreground: #181926;
--color-success-hover: #b8e3a8;
--color-destructive: #ed8796;
--color-destructive-foreground: #181926;
--color-destructive-hover: #f19faa;
--color-warning: #eed49f;
/* ===== TEXT ===== */
--color-text-primary: #cad3f5;
--color-text-secondary: #a5adcb;
--color-text-dark: #181926;
--color-text-success: #a6da95;
--color-text-failed: #ed8796;
--color-text-warning: #eed49f;
--color-text-human: #f4dbd6;
--color-text-ai: #c6a0f6;
--color-text-brand-primary: #f5bde6;
--color-text-brand-secondary: #8aadf4;
--color-text-brand-accented: #8bd5ca;
/* ===== UI ELEMENTS ===== */
--color-border: #5b6078;
--color-input: #363a4f;
--color-input-background: #363a4f;
--color-ring: #f5bde6;
/* ===== SHADOWS ===== */
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
--shadow-glow-primary: 0 0 20px rgba(245, 189, 230, 0.3);
--shadow-glow-ai: 0 0 20px rgba(198, 160, 246, 0.3);
--shadow-glow-human: 0 0 20px rgba(244, 219, 214, 0.3);
/* ===== GRADIENTS ===== */
--gradient-brand: linear-gradient(135deg, #f5bde6 0%, #8aadf4 50%, #8bd5ca 100%);
--gradient-brand-text: linear-gradient(90deg, #f5bde6 0%, #c6a0f6 50%, #8aadf4 100%);
}
@layer base {
* { @apply border-border outline-ring/50; }
body {
@apply bg-background text-foreground;
font-family: 'Inter', sans-serif;
}
h1, h2, h3, h4 {
font-family: 'Plus Jakarta Sans', sans-serif;
font-weight: 500;
line-height: 1.3;
}
p { font-family: 'Inter', sans-serif; font-size: 1rem; font-weight: 400; line-height: 1.6; }
label { font-family: 'Inter', sans-serif; font-size: 0.875rem; font-weight: 500; line-height: 1.5; }
button { font-family: 'Inter', sans-serif; font-size: 1rem; font-weight: 500; line-height: 1.5; }
input, textarea, select { font-family: 'Inter', sans-serif; font-size: 1rem; font-weight: 400; line-height: 1.5; }
}
Figma File
The Figma file is the canonical design reference. Request access to collaborate.