217 lines
5.8 KiB
CSS
217 lines
5.8 KiB
CSS
/**
|
|
* AquaFlow Design System - Theme CSS
|
|
* Generated by BMAD Design System Generator v1.0
|
|
* Source: ux-design-specification.md
|
|
* Generated: 2025-12-25T12:44:30+08:00
|
|
*
|
|
* Usage: Import this file in your main CSS or component library
|
|
* @import './theme.css';
|
|
*/
|
|
|
|
/* ============================================
|
|
CSS Custom Properties (Design Tokens)
|
|
============================================ */
|
|
|
|
:root {
|
|
/* -------------------- Colors -------------------- */
|
|
|
|
/* Primary - Trust Blue */
|
|
--color-primary-50: #EFF6FF;
|
|
--color-primary-100: #DBEAFE;
|
|
--color-primary-500: #2563EB;
|
|
--color-primary-600: #2563EB;
|
|
--color-primary-700: #1D4ED8;
|
|
--color-primary-900: #1E3A8A;
|
|
|
|
/* Secondary */
|
|
--color-secondary-500: #3B82F6;
|
|
--color-secondary-600: #2563EB;
|
|
--color-secondary-700: #1D4ED8;
|
|
|
|
/* Accent - CTA Orange */
|
|
--color-accent-500: #F97316;
|
|
--color-accent-600: #EA580C;
|
|
--color-accent-700: #C2410C;
|
|
|
|
/* Neutral - Slate */
|
|
--color-neutral-50: #F8FAFC;
|
|
--color-neutral-100: #F1F5F9;
|
|
--color-neutral-200: #E2E8F0;
|
|
--color-neutral-500: #64748B;
|
|
--color-neutral-600: #475569;
|
|
--color-neutral-700: #334155;
|
|
--color-neutral-800: #1E293B;
|
|
--color-neutral-900: #0F172A;
|
|
|
|
/* Semantic Colors */
|
|
--color-success-500: #22C55E;
|
|
--color-success-600: #16A34A;
|
|
--color-success-700: #15803D;
|
|
|
|
--color-warning-500: #EAB308;
|
|
--color-warning-600: #CA8A04;
|
|
--color-warning-700: #A16207;
|
|
|
|
--color-error-500: #EF4444;
|
|
--color-error-600: #DC2626;
|
|
--color-error-700: #B91C1C;
|
|
|
|
/* -------------------- Typography -------------------- */
|
|
|
|
--font-family-heading: 'Inter', system-ui, sans-serif;
|
|
--font-family-body: 'Inter', system-ui, sans-serif;
|
|
--font-family-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
|
|
|
--font-size-xs: 0.75rem;
|
|
/* 12px */
|
|
--font-size-sm: 0.875rem;
|
|
/* 14px */
|
|
--font-size-base: 1rem;
|
|
/* 16px */
|
|
--font-size-lg: 1.25rem;
|
|
/* 20px */
|
|
--font-size-xl: 1.5rem;
|
|
/* 24px */
|
|
--font-size-2xl: 2rem;
|
|
/* 32px */
|
|
--font-size-3xl: 2.5rem;
|
|
/* 40px */
|
|
--font-size-4xl: 3rem;
|
|
/* 48px */
|
|
|
|
--font-weight-normal: 400;
|
|
--font-weight-medium: 500;
|
|
--font-weight-semibold: 600;
|
|
--font-weight-bold: 700;
|
|
|
|
--line-height-tight: 1.2;
|
|
--line-height-snug: 1.3;
|
|
--line-height-normal: 1.5;
|
|
--line-height-relaxed: 1.6;
|
|
|
|
/* -------------------- Spacing -------------------- */
|
|
|
|
--space-0: 0;
|
|
--space-1: 0.25rem;
|
|
/* 4px */
|
|
--space-2: 0.5rem;
|
|
/* 8px */
|
|
--space-3: 0.75rem;
|
|
/* 12px */
|
|
--space-4: 1rem;
|
|
/* 16px */
|
|
--space-6: 1.5rem;
|
|
/* 24px */
|
|
--space-8: 2rem;
|
|
/* 32px */
|
|
--space-10: 2.5rem;
|
|
/* 40px */
|
|
--space-12: 3rem;
|
|
/* 48px */
|
|
--space-16: 4rem;
|
|
/* 64px */
|
|
|
|
/* -------------------- Border Radius -------------------- */
|
|
|
|
--radius-none: 0;
|
|
--radius-sm: 0.25rem;
|
|
/* 4px */
|
|
--radius-md: 0.5rem;
|
|
/* 8px */
|
|
--radius-lg: 1rem;
|
|
/* 16px */
|
|
--radius-xl: 1.5rem;
|
|
/* 24px */
|
|
--radius-full: 9999px;
|
|
|
|
/* -------------------- Shadows -------------------- */
|
|
|
|
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
|
|
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
|
|
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
|
|
|
|
/* -------------------- Animation -------------------- */
|
|
|
|
--duration-fast: 150ms;
|
|
--duration-normal: 200ms;
|
|
--duration-slow: 300ms;
|
|
|
|
--easing-default: cubic-bezier(0.4, 0, 0.2, 1);
|
|
--easing-in: cubic-bezier(0.4, 0, 1, 1);
|
|
--easing-out: cubic-bezier(0, 0, 0.2, 1);
|
|
--easing-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
|
|
/* -------------------- Breakpoints (for reference) -------------------- */
|
|
/* Use @media queries with these values */
|
|
--breakpoint-sm: 320px;
|
|
--breakpoint-md: 768px;
|
|
--breakpoint-lg: 1024px;
|
|
--breakpoint-xl: 1440px;
|
|
--breakpoint-2xl: 1536px;
|
|
|
|
/* -------------------- Layout -------------------- */
|
|
|
|
--max-width: 1280px;
|
|
--sidebar-width: 240px;
|
|
--card-padding: var(--space-4);
|
|
--column-gap: var(--space-4);
|
|
}
|
|
|
|
/* ============================================
|
|
Semantic Aliases (for convenience)
|
|
============================================ */
|
|
|
|
:root {
|
|
/* Background */
|
|
--bg-primary: var(--color-neutral-50);
|
|
--bg-secondary: var(--color-neutral-100);
|
|
--bg-card: white;
|
|
--bg-overlay: rgba(0, 0, 0, 0.5);
|
|
|
|
/* Text */
|
|
--text-primary: var(--color-neutral-800);
|
|
--text-secondary: var(--color-neutral-600);
|
|
--text-muted: var(--color-neutral-500);
|
|
--text-inverse: white;
|
|
|
|
/* Border */
|
|
--border-color: var(--color-neutral-200);
|
|
--border-hover: var(--color-neutral-500);
|
|
|
|
/* Focus */
|
|
--focus-ring-color: var(--color-primary-500);
|
|
--focus-ring-width: 2px;
|
|
--focus-ring-offset: 2px;
|
|
}
|
|
|
|
/* ============================================
|
|
Dark Mode Support (optional)
|
|
============================================ */
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--bg-primary: var(--color-neutral-900);
|
|
--bg-secondary: var(--color-neutral-800);
|
|
--bg-card: var(--color-neutral-800);
|
|
|
|
--text-primary: var(--color-neutral-50);
|
|
--text-secondary: var(--color-neutral-200);
|
|
--text-muted: var(--color-neutral-500);
|
|
|
|
--border-color: var(--color-neutral-700);
|
|
--border-hover: var(--color-neutral-500);
|
|
}
|
|
}
|
|
|
|
/* ============================================
|
|
Reduced Motion Support
|
|
============================================ */
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
:root {
|
|
--duration-fast: 0ms;
|
|
--duration-normal: 0ms;
|
|
--duration-slow: 0ms;
|
|
}
|
|
} |