@layer tokens, base, components, utilities, overrides; @layer tokens { :root { /* Primary Colors */ --color-primary-50: #eff6ff; --color-primary-100: #dbeafe; --color-primary-200: #bfdbfe; --color-primary-300: #93c5fd; --color-primary-400: #60a5fa; --color-primary-500: #3b82f6; --color-primary-600: #2563eb; --color-primary-700: #1d4ed8; --color-primary-800: #1e40af; --color-primary-900: #1e3a8a; --color-primary-950: #172554; /* Secondary Colors */ --color-secondary-50: #f8fafc; --color-secondary-100: #f1f5f9; --color-secondary-200: #e2e8f0; --color-secondary-300: #cbd5e1; --color-secondary-400: #94a3b8; --color-secondary-500: #64748b; --color-secondary-600: #475569; --color-secondary-700: #334155; --color-secondary-800: #1e293b; --color-secondary-900: #0f172a; --color-secondary-950: #020617; /* Accent Colors */ --color-accent-50: #fef2f2; --color-accent-100: #fee2e2; --color-accent-200: #fecaca; --color-accent-300: #fca5a5; --color-accent-400: #f87171; --color-accent-500: #ef4444; --color-accent-600: #dc2626; --color-accent-700: #b91c1c; --color-accent-800: #991b1b; --color-accent-900: #7f1d1d; --color-accent-950: #450a0a; /* Success Colors */ --color-success-50: #f0fdf4; --color-success-100: #dcfce7; --color-success-200: #bbf7d0; --color-success-300: #86efac; --color-success-400: #4ade80; --color-success-500: #22c55e; --color-success-600: #16a34a; --color-success-700: #15803d; --color-success-800: #166534; --color-success-900: #14532d; --color-success-950: #052e16; /* Warning Colors */ --color-warning-50: #fffbeb; --color-warning-100: #fef3c7; --color-warning-200: #fde68a; --color-warning-300: #fcd34d; --color-warning-400: #fbbf24; --color-warning-500: #f59e0b; --color-warning-600: #d97706; --color-warning-700: #b45309; --color-warning-800: #92400e; --color-warning-900: #78350f; --color-warning-950: #451a03; /* Error Colors */ --color-error-50: #fef2f2; --color-error-100: #fee2e2; --color-error-200: #fecaca; --color-error-300: #fca5a5; --color-error-400: #f87171; --color-error-500: #ef4444; --color-error-600: #dc2626; --color-error-700: #b91c1c; --color-error-800: #991b1b; --color-error-900: #7f1d1d; --color-error-950: #450a0a; /* Info Colors */ --color-info-50: #f0f9ff; --color-info-100: #e0f2fe; --color-info-200: #bae6fd; --color-info-300: #7dd3fc; --color-info-400: #38bdf8; --color-info-500: #0ea5e9; --color-info-600: #0284c7; --color-info-700: #0369a1; --color-info-800: #075985; --color-info-900: #0c4a6e; /* Typography */ --font-family-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; --font-family-serif: 'Playfair Display', Georgia, Cambria, 'Times New Roman', Times, serif; --font-family-mono: 'JetBrains Mono', 'Fira Code', Consolas, 'Liberation Mono', Menlo, Courier, monospace; /* Font Sizes */ --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-size-5xl: 3rem; --font-size-6xl: 3.75rem; --font-size-7xl: 4.5rem; --font-size-8xl: 6rem; --font-size-9xl: 8rem; /* Line Heights */ --line-height-none: 1; --line-height-tight: 1.25; --line-height-snug: 1.375; --line-height-normal: 1.5; --line-height-relaxed: 1.625; --line-height-loose: 2; /* Spacing */ --spacing-px: 1px; --spacing-0: 0; --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; --spacing-32: 8rem; --spacing-40: 10rem; --spacing-48: 12rem; --spacing-56: 14rem; --spacing-64: 16rem; /* Shadows */ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05); --shadow-base: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); --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-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); /* Border Radius */ --radius-none: 0; --radius-sm: 0.125rem; --radius-base: 0.25rem; --radius-md: 0.375rem; --radius-lg: 0.5rem; --radius-xl: 0.75rem; --radius-2xl: 1rem; --radius-3xl: 1.5rem; --radius-full: 9999px; /* Transitions */ --transition-none: none; --transition-all: all 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-colors: color, background-color, border-color, text-decoration-color, fill, stroke 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-opacity: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-shadow: box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-transform: transform 150ms cubic-bezier(0.4, 0, 0.2, 1); /* Z-Index */ --z-0: 0; --z-10: 10; --z-20: 20; --z-30: 30; --z-40: 40; --z-50: 50; --z-auto: auto; /* Light mode variables */ --color-background: var(--color-secondary-50); --color-foreground: var(--color-secondary-900); --color-muted: var(--color-secondary-100); --color-muted-foreground: var(--color-secondary-500); --color-border: var(--color-secondary-200); --color-input: var(--color-secondary-50); --color-card: var(--color-secondary-50); --color-card-foreground: var(--color-secondary-900); --color-popover: var(--color-secondary-50); --color-popover-foreground: var(--color-secondary-900); --color-primary: var(--color-primary-600); --color-primary-foreground: var(--color-primary-50); --color-secondary: var(--color-secondary-100); --color-secondary-foreground: var(--color-secondary-900); --color-accent: var(--color-accent-100); --color-accent-foreground: var(--color-accent-900); --color-destructive: var(--color-error-600); --color-destructive-foreground: var(--color-error-50); --radius: var(--radius-md); } /* Dark mode override when .dark class is present */ .dark { --color-background: var(--color-secondary-900); --color-foreground: var(--color-secondary-50); --color-muted: var(--color-secondary-800); --color-muted-foreground: var(--color-secondary-400); --color-border: var(--color-secondary-700); --color-input: var(--color-secondary-800); --color-card: var(--color-secondary-800); --color-card-foreground: var(--color-secondary-50); --color-popover: var(--color-secondary-800); --color-popover-foreground: var(--color-secondary-50); --color-primary: var(--color-primary-500); --color-primary-foreground: var(--color-primary-950); --color-secondary: var(--color-secondary-800); --color-secondary-foreground: var(--color-secondary-50); --color-accent: var(--color-accent-900); --color-accent-foreground: var(--color-accent-100); --color-destructive: var(--color-error-900); --color-destructive-foreground: var(--color-error-200); } } @layer base { * { @apply border-border; } body { @apply font-sans antialiased bg-background text-foreground; font-feature-settings: "rlig" 1, "calt" 1; } h1, h2, h3, h4, h5, h6 { @apply font-semibold tracking-tight; } h1 { @apply text-4xl lg:text-5xl; } h2 { @apply text-3xl lg:text-4xl; } h3 { @apply text-2xl lg:text-3xl; } h4 { @apply text-xl lg:text-2xl; } } @layer components { /* HTMX Loading States */ .htmx-indicator { opacity: 0; transition: opacity 200ms ease-in; } .htmx-request .htmx-indicator { opacity: 1; } .htmx-request.htmx-indicator { opacity: 1; } /* Shadcn-like Container */ .container { @apply px-4 mx-auto md:px-6 lg:px-8 max-w-7xl; } }