Repository navigation
Expand file tree
/
Copy pathtailwind.config.js
More file actions
86 lines (86 loc) · 3.05 KB
/
Copy pathtailwind.config.js
File metadata and controls
86 lines (86 loc) · 3.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/** @type {import('tailwindcss').Config} */
export default {
content: ['./index.html', './src/**/*.{ts,tsx}'],
theme: {
extend: {
fontFamily: {
sans: ['Manrope', 'system-ui', 'sans-serif'],
display: ['Manrope', 'system-ui', 'sans-serif'],
mono: ['JetBrains Mono', 'Cascadia Code', 'Consolas', 'monospace'],
},
fontWeight: {
normal: '500',
medium: '500',
semibold: '600',
bold: '600',
},
fontSize: {
xs: ['0.75rem', { lineHeight: '1.15rem', letterSpacing: '-0.005em' }],
sm: ['0.875rem', { lineHeight: '1.35rem', letterSpacing: '-0.01em' }],
},
colors: {
noir: {
950: '#09090b',
900: '#121214',
850: '#1a1a1d',
800: '#222225',
750: '#2d2d30',
700: '#38383b',
},
// Brand color ramp (uses CSS vars from index.css for themes)
brand: {
600: 'rgb(var(--brand-600) / <alpha-value>)',
500: 'rgb(var(--brand-500) / <alpha-value>)',
400: 'rgb(var(--brand-400) / <alpha-value>)',
300: 'rgb(var(--brand-300) / <alpha-value>)',
200: 'rgb(var(--brand-200) / <alpha-value>)',
100: 'rgb(var(--brand-100) / <alpha-value>)',
},
},
textColor: {
// Warm off-white ink scale (opacity-driven off #F4ECF0 for controlled contrast)
ink: '#F4ECF0',
},
borderRadius: {
// Tighten the scale — no over-rounding
xl: '12px',
'2xl': '16px',
},
boxShadow: {
// Subtle theme glows for primary surfaces / active states
glow: '0 0 0 1px rgb(var(--brand-300) / 0.18), 0 8px 32px -8px rgb(var(--brand-300) / 0.35)',
'glow-sm': '0 0 0 1px rgb(var(--brand-300) / 0.14), 0 4px 16px -6px rgb(var(--brand-300) / 0.28)',
'glow-pink': '0 0 40px -4px rgb(var(--brand-300) / 0.25)',
// Neutral elevation
elevated: '0 8px 24px -12px rgba(0, 0, 0, 0.6)',
},
keyframes: {
'pulse-ring': {
'0%': { transform: 'scale(0.9)', opacity: '0.7' },
'70%': { transform: 'scale(2.4)', opacity: '0' },
'100%': { transform: 'scale(2.4)', opacity: '0' },
},
shimmer: {
'0%': { backgroundPosition: '200% 0' },
'100%': { backgroundPosition: '-200% 0' },
},
'toast-in': {
'0%': { opacity: '0', transform: 'translateY(12px) scale(0.96)' },
'100%': { opacity: '1', transform: 'translateY(0) scale(1)' },
},
'gradient-drift': {
'0%, 100%': { transform: 'translate(0, 0) scale(1)' },
'33%': { transform: 'translate(3%, -2%) scale(1.05)' },
'66%': { transform: 'translate(-2%, 3%) scale(0.97)' },
},
},
animation: {
'pulse-ring': 'pulse-ring 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
shimmer: 'shimmer 2s ease-in-out infinite',
'toast-in': 'toast-in 0.25s ease-out',
'gradient-drift': 'gradient-drift 18s ease-in-out infinite',
},
},
},
plugins: [],
}