import type { Config } from "tailwindcss"; export default { darkMode: "class", content: [ "./app/**/*.{ts,tsx}", "./components/**/*.{ts,tsx}", ], theme: { extend: { fontFamily: { sans: [ "var(--font-sans)", "Inter", /* CJK (Chinese, Japanese, Korean) */ "Noto Sans CJK SC", "PingFang SC", "Hiragino Sans", "Apple SD Gothic Neo", "Malgun Gothic", /* Arabic + Devanagari */ "Noto Sans Arabic", "Noto Sans Devanagari", /* System fallbacks */ "ui-sans-serif", "system-ui", "-apple-system", "Segoe UI", "Roboto", "sans-serif", ], display: [ "var(--font-display)", "Inter", "ui-sans-serif", "system-ui", "sans-serif", ], }, colors: { // Brand — clinical blue → calming teal brand: { 50: "#EFF6FF", 100: "#DBEAFE", 200: "#BFDBFE", 300: "#93C5FD", 400: "#60A5FA", 500: "#3B82F6", // primary 600: "#2563EB", 700: "#1D4ED8", 800: "#1E40AF", 900: "#1E3A8A", }, accent: { 50: "#F0FDFA", 100: "#CCFBF1", 200: "#99F6E4", 300: "#5EEAD4", 400: "#2DD4BF", 500: "#14B8A6", // teal 600: "#0D9488", 700: "#0F766E", }, // Semantic success: { 500: "#22C55E", 600: "#16A34A" }, warning: { 500: "#F59E0B", 600: "#D97706" }, danger: { 500: "#EF4444", 600: "#DC2626" }, // Surface tiers (driven by CSS vars so they flip with dark mode) surface: { 0: "rgb(var(--surface-0) / )", 1: "rgb(var(--surface-1) / )", 2: "rgb(var(--surface-2) / )", 3: "rgb(var(--surface-3) / )", }, ink: { base: "rgb(var(--ink-base) / )", muted: "rgb(var(--ink-muted) / )", subtle: "rgb(var(--ink-subtle) / )", inverse: "rgb(var(--ink-inverse) / )", }, line: "rgb(var(--line) / )", slate: { 50: "#F8FAFC", 100: "#F1F5F9", 200: "#E2E8F0", 300: "#CBD5E1", 400: "#94A3B8", 500: "#64748B", 600: "#475569", 700: "#334155", 800: "#1E293B", 900: "#0F172A", 950: "#0B1220", }, }, backgroundImage: { "brand-gradient": "linear-gradient(135deg, #3B82F6 0%, #14B8A6 100%)", "brand-gradient-soft": "linear-gradient(135deg, rgba(59,130,246,0.12) 0%, rgba(20,184,166,0.12) 100%)", "dark-app": "radial-gradient(1200px 800px at 10% -10%, rgba(59,130,246,0.12), transparent 60%), radial-gradient(1000px 600px at 110% 10%, rgba(20,184,166,0.10), transparent 60%), linear-gradient(180deg, #0B1220 0%, #0E1627 100%)", "light-app": "radial-gradient(1200px 800px at 10% -10%, rgba(59,130,246,0.08), transparent 60%), radial-gradient(1000px 600px at 110% 10%, rgba(20,184,166,0.06), transparent 60%), linear-gradient(180deg, #F7F9FB 0%, #F1F5F9 100%)", }, boxShadow: { "soft": "0 1px 2px rgba(15,23,42,0.04), 0 4px 16px rgba(15,23,42,0.06)", "card": "0 1px 3px rgba(15,23,42,0.06), 0 8px 24px rgba(15,23,42,0.08)", "glow": "0 0 0 1px rgba(59,130,246,0.24), 0 12px 40px -12px rgba(59,130,246,0.45)", "danger-glow": "0 0 0 1px rgba(239,68,68,0.28), 0 8px 32px -8px rgba(239,68,68,0.55)", }, animation: { "bounce": "bounce 1s infinite", "fade-up": "fadeUp 0.45s cubic-bezier(0.16, 1, 0.3, 1) both", "fade-in": "fadeIn 0.4s ease-out both", "shimmer": "shimmer 2.2s linear infinite", "pulse-ring": "pulseRing 1.8s cubic-bezier(0.4, 0, 0.6, 1) infinite", "pulse-soft": "pulseSoft 2.2s ease-in-out infinite", }, keyframes: { fadeUp: { "0%": { opacity: "0", transform: "translateY(12px)" }, "100%": { opacity: "1", transform: "translateY(0)" }, }, fadeIn: { "0%": { opacity: "0" }, "100%": { opacity: "1" }, }, shimmer: { "0%": { backgroundPosition: "-200% 0" }, "100%": { backgroundPosition: "200% 0" }, }, pulseRing: { "0%": { boxShadow: "0 0 0 0 rgba(239,68,68,0.55)" }, "70%": { boxShadow: "0 0 0 14px rgba(239,68,68,0)" }, "100%": { boxShadow: "0 0 0 0 rgba(239,68,68,0)" }, }, pulseSoft: { "0%, 100%": { opacity: "1" }, "50%": { opacity: "0.7" }, }, bounce: { "0%, 100%": { transform: "translateY(-25%)", animationTimingFunction: "cubic-bezier(0.8, 0, 1, 1)", }, "50%": { transform: "translateY(0)", animationTimingFunction: "cubic-bezier(0, 0, 0.2, 1)", }, }, }, }, }, plugins: [], } satisfies Config;