A modern, professional, and flexible interface for enterprise-level applications. Clean lines, balanced information density, and highly accessible. Designed to be neutral yet highly customizable, providing a reliable and efficient user experience for complex B2B platforms.
Semi Design uses a comprehensive CSS variable system to automatically handle Light and Dark modes. Never hardcode hex values in your code.
var(--semi-color-primary)): CTAs, active states, key interactive elements. (Light: #0064FA / Dark: #54A9FF)var(--semi-color-secondary)): Supporting actions, secondary highlights. (Light: #0095EE / Dark: #40B4F3)var(--semi-color-tertiary)): Third-level actions, neutral icons. (Light: #6B7075 / Dark: #888D92)var(--semi-color-success)): Success messages, safe actions. (Light: #3BB346 / Dark: #5DC264)var(--semi-color-warning)): Warning states, alerts. (Light: #FC8800 / Dark: #FFAE43)var(--semi-color-danger)): Error states, destructive actions. (Light: #F93920 / Dark: #FC725A)var(--semi-color-info)): Informational messages, neutral feedback. Same hue as Primary. (Light: #0064FA / Dark: #54A9FF)var(--semi-color-bg-0)): The lowest level background. (Light: #FFFFFF / Dark: #16161A)var(--semi-color-bg-1)): Cards, containers. (Light: #FFFFFF / Dark: #232429)var(--semi-color-bg-2)): Middle layer containers. (Light: #FFFFFF / Dark: #35363C)var(--semi-color-fill-0)): Component backgrounds (e.g., input). (Light: rgba(46,50,56,0.05) / Dark: rgba(255,255,255,0.12))var(--semi-color-fill-1)): Component hover backgrounds. (Light: rgba(46,50,56,0.09) / Dark: rgba(255,255,255,0.16))var(--semi-color-fill-2)): Component active/pressed backgrounds. (Light: rgba(46,50,56,0.13) / Dark: rgba(255,255,255,0.20))var(--semi-color-text-0)): Main content. (Light: #1C1F23 / Dark: #F9F9F9)var(--semi-color-text-1)): Descriptions, secondary content. (Light: rgba(28,31,35,0.8) / Dark: rgba(249,249,249,0.8))var(--semi-color-text-2)): Placeholder, disabled-like text. (Light: rgba(28,31,35,0.62) / Dark: rgba(249,249,249,0.6))var(--semi-color-border)): Default borders and dividers. (Light: rgba(28,31,35,0.08) / Dark: rgba(255,255,255,0.08))Semi Design provides dedicated AI-themed color variables for AI-powered features and interfaces:
var(--semi-color-ai-general)): Gradient-based AI accent color for AI-related UI elements. Uses a multi-stop linear gradient blending blue, purple, and pink hues.var(--semi-color-ai-purple)): Solid purple accent for secondary AI elements. (Light: rgba(166,71,255) / Dark: rgba(195,117,255))var(--semi-color-ai-background-bottom)): Subtle gradient overlay for AI section backgrounds.var(--semi-color-ai-background-top)): Stronger gradient overlay for AI section top layers.Each AI color supports -hover, -active, and -disabled state variants.
Semi Design provides 20 data colors (var(--semi-color-data-0) through var(--semi-color-data-19)) optimized for charts and data visualizations. These colors are designed to be distinguishable and accessible in both Light and Dark modes. Use them with VChart or any charting library.
"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serifHeadlines use bold weight (600) ranging from 16px to 32px:
Body text uses regular weight (400) at 14px with a 20px line height. Labels and secondary text use regular weight at 12px with a 16px line height.
Text colors strictly follow the hierarchy:
var(--semi-color-text-0)var(--semi-color-text-1)var(--semi-color-text-2)var(--semi-color-text-3) or var(--semi-color-disabled-text)This design uses subtle shadows to convey depth for floating elements (modals, popovers, toasts, dropdowns).
0 0 1px rgba(0, 0, 0, 0.3), 0 4px 14px rgba(0, 0, 0, 0.1)inset 0 0 0 1px rgba(255, 255, 255, 0.1), 0 4px 14px rgba(0, 0, 0, 0.25)Standard page elements (cards, containers) generally stay flat, relying on 1px borders and background color variations (--semi-color-fill-0) for hierarchy.
Semi Design uses a strict border-radius hierarchy:
var(--semi-border-radius-extra-small), 3px): Inner elements like checkbox ticks.var(--semi-border-radius-small), 3px): Most basic controls like Buttons, Inputs, Tags, and Tabs.var(--semi-border-radius-medium), 6px): Menu-like components like Dropdowns, Select dropdowns, and Tree nodes.var(--semi-border-radius-large), 12px): Large container components like Modals, Cards, and Popovers.var(--semi-border-radius-circle) / var(--semi-border-radius-full)): 50% or 9999px for Avatars, Badges, and pill-shaped elements.var(--semi-border-radius-small). Primary uses brand blue fill (var(--semi-color-primary)). Secondary uses light blue fill (var(--semi-color-secondary)). Default/Tertiary buttons use a transparent background with text color, and var(--semi-color-fill-0) on hover.var(--semi-border-radius-medium), elevated shadow.var(--semi-border-radius-large), elevated shadow for modals, flat with borders for standard cards. Modals use var(--semi-color-bg-2) (Light: #FFFFFF / Dark: #35363C) for background.var(--semi-border-radius-small) for tags, fully rounded for badges and avatars.var(--semi-color-primary), Light: #0064FA / Dark: #54A9FF for active). Card tabs use var(--semi-border-radius-small) on top corners.var(--semi-color-bg-1) (Light: #FFFFFF / Dark: #232429) for header backgrounds and var(--semi-color-border) (Light: rgba(28,31,35,0.08) / Dark: rgba(255,255,255,0.08)) for dividers. Hovering over a row changes its background to var(--semi-color-fill-0) (Light: rgba(46,50,56,0.05) / Dark: rgba(255,255,255,0.12)).transparent), 3px corner radius, and a filled background (var(--semi-color-fill-0), Light: rgba(46,50,56,0.05) / Dark: rgba(255,255,255,0.12)).var(--semi-color-fill-1) (Light: rgba(46,50,56,0.09) / Dark: rgba(255,255,255,0.16)).var(--semi-color-fill-0) and uses a 1px primary blue border (var(--semi-color-focus-border), Light: #0064FA / Dark: #54A9FF).var(--semi-color-danger)).var(--semi-icon-size-medium)). Other sizes include 8px, 12px, 20px, and 24px.currentColor) or use var(--semi-color-text-2) for neutral/secondary actions.-hover suffix variable (e.g., var(--semi-color-primary-hover)). For neutral items (like list items or transparent buttons), use var(--semi-color-fill-1) (Light: rgba(46,50,56,0.09) / Dark: rgba(255,255,255,0.16)) as the background.-active suffix variable (e.g., var(--semi-color-primary-active)), or var(--semi-color-fill-2) (Light: rgba(46,50,56,0.13) / Dark: rgba(255,255,255,0.20)) for neutral items.var(--semi-color-disabled-bg) (Light: #E6E8EA / Dark: #2E3238) for backgrounds, var(--semi-color-disabled-text) (Light: rgba(28,31,35,0.35) / Dark: rgba(249,249,249,0.35)) for text, and var(--semi-color-disabled-border) (Light: #E6E8EA / Dark: #2E3238) for borders. Disabled elements often have reduced opacity and cursor: not-allowed.var(--semi-color-*) variables to ensure Dark Mode compatibility.var(--semi-color-primary)) consistently for the most important action on a screen.