/** @type {import('tailwindcss').Config} */ export default { content: [ "./index.html", "./src/**/*.{js,ts,jsx,tsx}", ], safelist: [ // Force generate purple utilities {pattern: /bg-purple-(400|500|600|700|800|900)/}, {pattern: /text-purple-(300|400|500)/}, {pattern: /from-purple-(400)/}, {pattern: /to-purple-(400)/}, {pattern: /ring-purple-(500)/}, {pattern: /border-purple-(500)/}, ], darkMode: ['class', "class"], theme: { extend: { colors: { // Extend Tailwind defaults with Scriptorium custom palette. // ScriptoriumAI Brand Colors (Purple/Indigo theme - NOT Overleaf's green) brand: { 50: '#f5f3ff', 100: '#ede9fe', 200: '#ddd6fe', 300: '#c4b5fd', 400: '#a78bfa', 500: '#8b5cf6', // Main brand color 600: '#7c3aed', 700: '#6d28d9', 800: '#5b21b6', 900: '#4c1d95', 950: '#2e1065', }, // Map purple to brand (for Tailwind utility classes) purple: { 50: '#f5f3ff', 100: '#ede9fe', 200: '#ddd6fe', 300: '#c4b5fd', 400: '#a78bfa', 500: '#8b5cf6', // Same as brand-500 600: '#7c3aed', 700: '#6d28d9', 800: '#5b21b6', 900: '#4c1d95', 950: '#2e1065', }, gray: { '850': 'rgb(30, 30, 46)', '900': 'rgb(22, 22, 30)', '950': 'rgb(10, 10, 15)' }, background: 'hsl(var(--background))', foreground: 'hsl(var(--foreground))', card: { DEFAULT: 'hsl(var(--card))', foreground: 'hsl(var(--card-foreground))' }, popover: { DEFAULT: 'hsl(var(--popover))', foreground: 'hsl(var(--popover-foreground))' }, primary: { DEFAULT: 'hsl(var(--primary))', foreground: 'hsl(var(--primary-foreground))' }, secondary: { DEFAULT: 'hsl(var(--secondary))', foreground: 'hsl(var(--secondary-foreground))' }, muted: { DEFAULT: 'hsl(var(--muted))', foreground: 'hsl(var(--muted-foreground))' }, accent: { DEFAULT: 'hsl(var(--accent))', foreground: 'hsl(var(--accent-foreground))' }, destructive: { DEFAULT: 'hsl(var(--destructive))', foreground: 'hsl(var(--destructive-foreground))' }, border: 'hsl(var(--border))', input: 'hsl(var(--input))', ring: 'hsl(var(--ring))', chart: { '1': 'hsl(var(--chart-1))', '2': 'hsl(var(--chart-2))', '3': 'hsl(var(--chart-3))', '4': 'hsl(var(--chart-4))', '5': 'hsl(var(--chart-5))' } }, fontFamily: { sans: [ 'Inter', 'system-ui', 'sans-serif' ], mono: [ 'JetBrains Mono', 'Fira Code', 'monospace' ] }, animation: { 'fade-in': 'fadeIn 0.3s ease-in-out', 'slide-in': 'slideIn 0.3s ease-out', shimmer: 'shimmer 2s infinite' }, keyframes: { fadeIn: { '0%': { opacity: '0', transform: 'translateY(10px)' }, '100%': { opacity: '1', transform: 'translateY(0)' } }, slideIn: { '0%': { transform: 'translateX(-100%)' }, '100%': { transform: 'translateX(0)' } }, shimmer: { '0%': { backgroundPosition: '-200% 0' }, '100%': { backgroundPosition: '200% 0' } } }, boxShadow: { 'glow-indigo': '0 0 20px rgba(99, 102, 241, 0.3)', 'glow-purple': '0 0 20px rgba(139, 92, 246, 0.3)' }, borderRadius: { lg: 'var(--radius)', md: 'calc(var(--radius) - 2px)', sm: 'calc(var(--radius) - 4px)' } } }, plugins: [require("tailwindcss-animate")], }