/** @type {import('tailwindcss').Config} */ module.exports = { darkMode: "class", content: ["./index.html", "./src/**/*.{ts,tsx}"], theme: { extend: { colors: { // Semantic color tokens canvas: { DEFAULT: "hsl(var(--canvas))", subtle: "hsl(var(--canvas-subtle))", muted: "hsl(var(--canvas-muted))", }, ink: { DEFAULT: "hsl(var(--ink))", muted: "hsl(var(--ink-muted))", subtle: "hsl(var(--ink-subtle))", }, accent: { DEFAULT: "hsl(var(--accent))", hover: "hsl(var(--accent-hover))", subtle: "hsl(var(--accent-subtle))", }, border: { DEFAULT: "hsl(var(--border))", subtle: "hsl(var(--border-subtle))", }, info: { DEFAULT: "hsl(var(--info))", subtle: "hsl(var(--info-subtle))", }, error: { DEFAULT: "hsl(var(--error))", subtle: "hsl(var(--error-subtle))", }, warning: { DEFAULT: "hsl(var(--warning))", subtle: "hsl(var(--warning-subtle))", }, success: { DEFAULT: "hsl(var(--success))", subtle: "hsl(var(--success-subtle))", }, // Legacy compatibility mist: "hsl(var(--canvas-muted))", ember: "hsl(var(--accent))", pine: "hsl(var(--accent-hover))", slate: "hsl(var(--ink-muted))", }, boxShadow: { card: "0 1px 3px 0 rgb(0 0 0 / 0.05), 0 10px 40px -10px rgb(0 0 0 / 0.1)", "card-hover": "0 1px 3px 0 rgb(0 0 0 / 0.05), 0 20px 60px -15px rgb(0 0 0 / 0.15)", subtle: "0 1px 2px 0 rgb(0 0 0 / 0.03)", }, borderRadius: { panel: "1.25rem", card: "1rem", button: "0.75rem", }, fontFamily: { sans: ["'Newsreader'", "Georgia", "ui-serif", "serif"], display: ["'Space Grotesk'", "ui-sans-serif", "system-ui", "sans-serif"], dashboard: ["'DM Sans'", "ui-sans-serif", "system-ui", "sans-serif"], mono: ["'JetBrains Mono'", "ui-monospace", "monospace"], }, fontSize: { "display-xl": ["clamp(2.75rem, 6vw + 1rem, 5rem)", { lineHeight: "1.05", letterSpacing: "-0.04em", fontFamily: "'Space Grotesk', sans-serif" }], "display-lg": ["clamp(2.25rem, 4.5vw + 0.5rem, 3.75rem)", { lineHeight: "1.1", letterSpacing: "-0.03em", fontFamily: "'Space Grotesk', sans-serif" }], "display-md": ["clamp(1.75rem, 3.5vw + 0.5rem, 2.75rem)", { lineHeight: "1.15", letterSpacing: "-0.02em", fontFamily: "'Space Grotesk', sans-serif" }], "display-sm": ["clamp(1.5rem, 2.5vw + 0.5rem, 2rem)", { lineHeight: "1.2", letterSpacing: "-0.01em", fontFamily: "'Space Grotesk', sans-serif" }], }, spacing: { "18": "4.5rem", "22": "5.5rem", "26": "6.5rem", "30": "7.5rem", "34": "8.5rem", "38": "9.5rem", "128": "32rem", }, animation: { "fade-in": "fade-in 0.5s cubic-bezier(0.4, 0, 0.2, 1)", "slide-up": "slide-up 0.6s cubic-bezier(0.16, 1, 0.3, 1)", "slide-down": "slide-down 0.4s cubic-bezier(0.16, 1, 0.3, 1)", "scale-in": "scale-in 0.3s cubic-bezier(0.16, 1, 0.3, 1)", "float": "float 6s ease-in-out infinite", "pulse-soft": "pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite", }, keyframes: { "fade-in": { "0%": { opacity: "0" }, "100%": { opacity: "1" }, }, "slide-up": { "0%": { opacity: "0", transform: "translateY(24px)" }, "100%": { opacity: "1", transform: "translateY(0)" }, }, "slide-down": { "0%": { opacity: "0", transform: "translateY(-12px)" }, "100%": { opacity: "1", transform: "translateY(0)" }, }, "scale-in": { "0%": { opacity: "0", transform: "scale(0.95)" }, "100%": { opacity: "1", transform: "scale(1)" }, }, float: { "0%, 100%": { transform: "translateY(0)" }, "50%": { transform: "translateY(-8px)" }, }, "pulse-soft": { "0%, 100%": { opacity: "1" }, "50%": { opacity: "0.7" }, }, }, }, }, plugins: [], };