Files
caiwuzongzhang/design-system/default/MASTER.md
T

6.2 KiB

Design System Master File

LOGIC: When building a specific page, first check design-system/pages/[page-name].md. If that file exists, its rules override this Master file. If not, strictly follow the rules below.


Project: 集团资金往来工作台 Generated: 2026-08-06 10:54:28 Category: Financial Dashboard Design Dials: Variance 4/10 (Balanced / Modern) | Motion 3/10 (Subtle) | Density 8/10 (Dense / Dashboard)


Global Rules

Color Palette

Role Hex CSS Variable
Primary #1E40AF --color-primary
On Primary #FFFFFF --color-on-primary
Secondary #3B82F6 --color-secondary
Accent/CTA #059669 --color-accent
Background #0F172A --color-background
Foreground #FFFFFF --color-foreground
Muted #101A34 --color-muted
Border rgba(255,255,255,0.08) --color-border
Destructive #DC2626 --color-destructive
Ring #1E40AF --color-ring

Color Notes: Trust blue + profit green on dark

Typography

  • Heading Font: Fira Code
  • Body Font: Fira Sans
  • Mood: dashboard, data, analytics, code, technical, precise
  • Google Fonts: Fira Code + Fira Sans

CSS Import:

@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Fira+Sans:wght@300;400;500;600;700&display=swap');

Spacing Variables

Density: 8/10 — Dense / Dashboard

Token Value Usage
--space-xs 2px / 0.125rem Tight gaps
--space-sm 4px / 0.25rem Icon gaps, inline spacing
--space-md 8px / 0.5rem Standard padding
--space-lg 12px / 0.75rem Section padding
--space-xl 16px / 1rem Large gaps
--space-2xl 24px / 1.5rem Section margins
--space-3xl 32px / 2rem Hero padding

Shadow Depths

Level Value Usage
--shadow-sm 0 1px 2px rgba(0,0,0,0.05) Subtle lift
--shadow-md 0 4px 6px rgba(0,0,0,0.1) Cards, buttons
--shadow-lg 0 10px 15px rgba(0,0,0,0.1) Modals, dropdowns
--shadow-xl 0 20px 25px rgba(0,0,0,0.15) Hero images, featured cards

Component Specs

Buttons

/* Primary Button */
.btn-primary {
  background: #059669;
  color: white;
  padding: 12px 24px;
  border-radius: 8px;
  font-weight: 600;
  transition: all 200ms ease;
  cursor: pointer;
}

.btn-primary:hover {
  opacity: 0.9;
  transform: translateY(-1px);
}

/* Secondary Button */
.btn-secondary {
  background: transparent;
  color: #1E40AF;
  border: 2px solid #1E40AF;
  padding: 12px 24px;
  border-radius: 8px;
  font-weight: 600;
  transition: all 200ms ease;
  cursor: pointer;
}

Cards

.card {
  background: #0F172A;
  border-radius: 12px;
  padding: 24px;
  box-shadow: var(--shadow-md);
  transition: all 200ms ease;
  cursor: pointer;
}

.card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-2px);
}

Inputs

.input {
  padding: 12px 16px;
  border: 1px solid #E2E8F0;
  border-radius: 8px;
  font-size: 16px;
  transition: border-color 200ms ease;
}

.input:focus {
  border-color: #1E40AF;
  outline: none;
  box-shadow: 0 0 0 3px #1E40AF20;
}

Modals

.modal-overlay {
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(4px);
}

.modal {
  background: white;
  border-radius: 16px;
  padding: 32px;
  box-shadow: var(--shadow-xl);
  max-width: 500px;
  width: 90%;
}

Style Guidelines

Style: Soft UI Evolution

Keywords: Evolved soft UI, better contrast, modern aesthetics, subtle depth, accessibility-focused, improved shadows, hybrid

Best For: Modern enterprise apps, SaaS platforms, health/wellness, modern business tools, professional, hybrid

Key Effects: Improved shadows (softer than flat, clearer than neumorphism), modern (200-300ms), focus visible, WCAG AA/AAA

Page Pattern

Pattern Name: Real-Time / Operations Landing

  • Conversion Strategy: For ops/security/iot products. Demo or sandbox link. Trust signals.
  • CTA Placement: Primary CTA in nav + After metrics
  • Section Order: 1. Hero (product + live preview or status), 2. Key metrics/indicators, 3. How it works, 4. CTA (Start trial / Contact)

Motion

Scroll Reveal (Subtle) — Trigger: scroll (viewport enter) | Duration: 300-400ms | Easing: power1.out

gsap.from(el, { opacity: 0, y: 12, duration: 0.35, ease: 'power1.out', scrollTrigger: { trigger: el, start: 'top 90%', toggleActions: 'play none none reverse' } });

Framework notes: Requires the ScrollTrigger plugin registered once via gsap.registerPlugin(ScrollTrigger)

  • Keep the y offset small (8-16px) so it reads as a fade, not a slide
  • Don't reveal below-the-fold content needed for SEO/crawlers as invisible-by-default without a no-JS fallback
  • toggleActions 'play none none reverse' avoids re-triggering on every scroll direction change

Anti-Patterns (Do NOT Use)

  • Light mode default
  • Slow rendering

Additional Forbidden Patterns

  • Emojis as icons — Use SVG icons (Heroicons, Lucide, Simple Icons)
  • Missing cursor:pointer — All clickable elements must have cursor:pointer
  • Layout-shifting hovers — Avoid scale transforms that shift layout
  • Low contrast text — Maintain 4.5:1 minimum contrast ratio
  • Instant state changes — Always use transitions (150-300ms)
  • Invisible focus states — Focus states must be visible for a11y

Pre-Delivery Checklist

Before delivering any UI code, verify:

  • No emojis used as icons (use SVG instead)
  • All icons from consistent icon set (Heroicons/Lucide)
  • cursor-pointer on all clickable elements
  • Hover states with smooth transitions (150-300ms)
  • Light mode: text contrast 4.5:1 minimum
  • Focus states visible for keyboard navigation
  • prefers-reduced-motion respected
  • Responsive: 375px, 768px, 1024px, 1440px
  • No content hidden behind fixed navbars
  • No horizontal scroll on mobile