/** @type {import('tailwindcss').Config} */ import typography from '@tailwindcss/typography'; export default { content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], darkMode: ['class', '[data-theme="dark"]'], theme: { extend: { fontFamily: { sans: ['Inter', 'system-ui', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'], display: ['Space Grotesk', 'Inter', 'system-ui', 'sans-serif'], mono: ['JetBrains Mono', 'Monaco', 'Cascadia Code', 'Segoe UI Mono', 'Roboto Mono', 'monospace'], }, colors: { // Modern color system background: 'rgb(var(--color-background) / )', foreground: 'rgb(var(--color-foreground) / )', surface: 'rgb(var(--color-surface) / )', muted: 'rgb(var(--color-muted) / )', subtle: 'rgb(var(--color-subtle) / )', primary: { DEFAULT: 'rgb(var(--color-primary) / )', hover: 'rgb(var(--color-primary-hover) / )', subtle: 'rgb(var(--color-primary-subtle) / )', foreground: 'rgb(var(--color-primary-foreground) / )', 50: '#eff6ff', 100: '#dbeafe', 200: '#bfdbfe', 300: '#93c5fd', 400: '#60a5fa', 500: '#3b82f6', 600: '#2563eb', 700: '#1d4ed8', 800: '#1e40af', 900: '#1e3a8a', 950: '#172554', }, accent: { DEFAULT: 'rgb(var(--color-accent) / )', hover: 'rgb(var(--color-accent-hover) / )', subtle: 'rgb(var(--color-accent-subtle) / )', 50: '#faf5ff', 100: '#f3e8ff', 200: '#e9d5ff', 300: '#d8b4fe', 400: '#c084fc', 500: '#a855f7', 600: '#9333ea', 700: '#7c3aed', 800: '#6b21a8', 900: '#581c87', 950: '#3b0764', }, success: { DEFAULT: 'rgb(var(--color-success) / )', subtle: 'rgb(var(--color-success-subtle) / )', 50: '#f0fdf4', 100: '#dcfce7', 200: '#bbf7d0', 300: '#86efac', 400: '#4ade80', 500: '#22c55e', 600: '#16a34a', 700: '#15803d', 800: '#166534', 900: '#14532d', 950: '#052e16', }, warning: { DEFAULT: 'rgb(var(--color-warning) / )', subtle: 'rgb(var(--color-warning-subtle) / )', 50: '#fffbeb', 100: '#fef3c7', 200: '#fde68a', 300: '#fcd34d', 400: '#fbbf24', 500: '#f59e0b', 600: '#d97706', 700: '#b45309', 800: '#92400e', 900: '#78350f', 950: '#451a03', }, error: { DEFAULT: 'rgb(var(--color-error) / )', subtle: 'rgb(var(--color-error-subtle) / )', 50: '#fef2f2', 100: '#fee2e2', 200: '#fecaca', 300: '#fca5a5', 400: '#f87171', 500: '#ef4444', 600: '#dc2626', 700: '#b91c1c', 800: '#991b1b', 900: '#7f1d1d', 950: '#450a0a', }, border: 'rgb(var(--color-border) / )', 'border-subtle': 'rgb(var(--color-border-subtle) / )', }, spacing: { '18': '4.5rem', '88': '22rem', '128': '32rem', '144': '36rem', }, borderRadius: { '4xl': '2rem', '5xl': '2.5rem', '6xl': '3rem', }, boxShadow: { 'glass': '0 8px 32px 0 rgba(31, 38, 135, 0.37)', 'glass-inset': 'inset 0 2px 4px 0 rgba(255, 255, 255, 0.06)', 'glow-sm': '0 0 20px -5px var(--tw-shadow-color)', 'glow': '0 0 40px -10px var(--tw-shadow-color)', 'glow-lg': '0 0 60px -15px var(--tw-shadow-color)', 'inner-border': 'inset 0 1px 0 0 rgba(255, 255, 255, 0.1)', }, backdropBlur: { xs: '2px', }, animation: { // Enhanced animations 'fade-in': 'fadeIn 0.6s cubic-bezier(0.4, 0, 0.2, 1)', 'fade-in-up': 'fadeInUp 0.6s cubic-bezier(0.4, 0, 0.2, 1)', 'fade-in-down': 'fadeInDown 0.6s cubic-bezier(0.4, 0, 0.2, 1)', 'slide-up': 'slideUp 0.6s cubic-bezier(0.4, 0, 0.2, 1)', 'slide-down': 'slideDown 0.6s cubic-bezier(0.4, 0, 0.2, 1)', 'slide-left': 'slideLeft 0.6s cubic-bezier(0.4, 0, 0.2, 1)', 'slide-right': 'slideRight 0.6s cubic-bezier(0.4, 0, 0.2, 1)', 'scale-in': 'scaleIn 0.4s cubic-bezier(0.4, 0, 0.2, 1)', 'scale-in-bounce': 'scaleInBounce 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275)', 'float': 'float 6s ease-in-out infinite', 'float-delayed': 'float 6s ease-in-out infinite 2s', 'pulse-subtle': 'pulseSubtle 4s ease-in-out infinite', 'glow': 'glow 2s ease-in-out infinite alternate', 'shimmer': 'shimmer 2s linear infinite', 'bounce-gentle': 'bounceGentle 3s ease-in-out infinite', 'gradient-x': 'gradientX 15s ease infinite', 'gradient-y': 'gradientY 15s ease infinite', 'gradient-xy': 'gradientXY 20s ease infinite', }, keyframes: { fadeIn: { '0%': { opacity: '0' }, '100%': { opacity: '1' }, }, fadeInUp: { '0%': { opacity: '0', transform: 'translateY(20px)' }, '100%': { opacity: '1', transform: 'translateY(0)' }, }, fadeInDown: { '0%': { opacity: '0', transform: 'translateY(-20px)' }, '100%': { opacity: '1', transform: 'translateY(0)' }, }, slideUp: { '0%': { transform: 'translateY(30px)', opacity: '0' }, '100%': { transform: 'translateY(0)', opacity: '1' }, }, slideDown: { '0%': { transform: 'translateY(-30px)', opacity: '0' }, '100%': { transform: 'translateY(0)', opacity: '1' }, }, slideLeft: { '0%': { transform: 'translateX(30px)', opacity: '0' }, '100%': { transform: 'translateX(0)', opacity: '1' }, }, slideRight: { '0%': { transform: 'translateX(-30px)', opacity: '0' }, '100%': { transform: 'translateX(0)', opacity: '1' }, }, scaleIn: { '0%': { transform: 'scale(0.9)', opacity: '0' }, '100%': { transform: 'scale(1)', opacity: '1' }, }, scaleInBounce: { '0%': { transform: 'scale(0.3)', opacity: '0' }, '50%': { transform: 'scale(1.05)', opacity: '0.8' }, '70%': { transform: 'scale(0.9)', opacity: '1' }, '100%': { transform: 'scale(1)', opacity: '1' }, }, float: { '0%, 100%': { transform: 'translateY(0px) rotate(0deg)' }, '33%': { transform: 'translateY(-10px) rotate(1deg)' }, '66%': { transform: 'translateY(-5px) rotate(-1deg)' }, }, pulseSubtle: { '0%, 100%': { opacity: '1' }, '50%': { opacity: '0.8' }, }, glow: { '0%': { boxShadow: '0 0 20px -5px currentColor' }, '100%': { boxShadow: '0 0 40px -5px currentColor' }, }, shimmer: { '0%': { backgroundPosition: '-200% 0' }, '100%': { backgroundPosition: '200% 0' }, }, bounceGentle: { '0%, 100%': { transform: 'translateY(0)' }, '50%': { transform: 'translateY(-5px)' }, }, gradientX: { '0%, 100%': { 'background-size': '200% 200%', 'background-position': 'left center' }, '50%': { 'background-size': '200% 200%', 'background-position': 'right center' }, }, gradientY: { '0%, 100%': { 'background-size': '200% 200%', 'background-position': 'center top' }, '50%': { 'background-size': '200% 200%', 'background-position': 'center bottom' }, }, gradientXY: { '0%, 100%': { 'background-size': '400% 400%', 'background-position': 'left center' }, '25%': { 'background-size': '400% 400%', 'background-position': 'center top' }, '50%': { 'background-size': '400% 400%', 'background-position': 'right center' }, '75%': { 'background-size': '400% 400%', 'background-position': 'center bottom' }, }, }, backgroundImage: { 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', 'gradient-shimmer': 'linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent)', 'noise': 'url("data:image/svg+xml,%3Csvg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"%3E%3Cfilter id="noiseFilter"%3E%3CfeTurbulence type="fractalNoise" baseFrequency="0.85" numOctaves="4" stitchTiles="stitch"/%3E%3C/filter%3E%3Crect width="100%25" height="100%25" filter="url(%23noiseFilter)" opacity="0.4"/%3E%3C/svg%3E")', }, gradientColorStops: { 'glass-white': 'rgba(255, 255, 255, 0.1)', 'glass-black': 'rgba(0, 0, 0, 0.1)', }, typography: ({ theme }) => ({ DEFAULT: { css: { '--tw-prose-body': theme('colors.foreground'), '--tw-prose-headings': theme('colors.foreground'), '--tw-prose-lead': theme('colors.muted'), '--tw-prose-links': theme('colors.primary.DEFAULT'), '--tw-prose-bold': theme('colors.foreground'), '--tw-prose-counters': theme('colors.muted'), '--tw-prose-bullets': theme('colors.subtle'), '--tw-prose-hr': theme('colors.border'), '--tw-prose-quotes': theme('colors.foreground'), '--tw-prose-quote-borders': theme('colors.border'), '--tw-prose-captions': theme('colors.muted'), '--tw-prose-kbd': theme('colors.foreground'), '--tw-prose-kbd-shadows': theme('colors.primary.DEFAULT'), '--tw-prose-code': theme('colors.accent.DEFAULT'), '--tw-prose-pre-code': theme('colors.foreground'), '--tw-prose-pre-bg': theme('colors.surface'), '--tw-prose-th-borders': theme('colors.border'), '--tw-prose-td-borders': theme('colors.border-subtle'), maxWidth: 'none', fontSize: '1.125rem', lineHeight: '1.75', h1: { fontFamily: theme('fontFamily.display').join(', '), fontWeight: '700', letterSpacing: '-0.025em', }, h2: { fontFamily: theme('fontFamily.display').join(', '), fontWeight: '600', letterSpacing: '-0.025em', }, h3: { fontFamily: theme('fontFamily.display').join(', '), fontWeight: '600', letterSpacing: '-0.025em', }, h4: { fontFamily: theme('fontFamily.display').join(', '), fontWeight: '600', }, code: { backgroundColor: theme('colors.surface'), padding: '0.25rem 0.5rem', borderRadius: '0.375rem', fontWeight: '500', }, 'code::before': { content: '""', }, 'code::after': { content: '""', }, blockquote: { borderLeftColor: theme('colors.primary.DEFAULT'), backgroundColor: theme('colors.surface'), padding: '1rem 1.5rem', borderRadius: '0.5rem', }, }, }, lg: { css: { fontSize: '1.25rem', lineHeight: '1.8', }, }, xl: { css: { fontSize: '1.375rem', lineHeight: '1.8', }, }, }), screens: { 'xs': '475px', '3xl': '1920px', }, zIndex: { '60': '60', '70': '70', '80': '80', '90': '90', '100': '100', }, transitionDuration: { '400': '400ms', '600': '600ms', '800': '800ms', '900': '900ms', }, transitionTimingFunction: { 'bounce-in': 'cubic-bezier(0.68, -0.55, 0.265, 1.55)', 'bounce-out': 'cubic-bezier(0.175, 0.885, 0.32, 1.275)', 'ease-in-expo': 'cubic-bezier(0.95, 0.05, 0.795, 0.035)', 'ease-out-expo': 'cubic-bezier(0.19, 1, 0.22, 1)', }, scale: { '102': '1.02', '103': '1.03', '115': '1.15', '120': '1.2', }, rotate: { '1': '1deg', '2': '2deg', '3': '3deg', }, blur: { '4xl': '72px', '5xl': '96px', }, brightness: { '25': '.25', '175': '1.75', }, saturate: { '25': '.25', '175': '1.75', }, aspectRatio: { '4/3': '4 / 3', '3/2': '3 / 2', '2/3': '2 / 3', '9/16': '9 / 16', }, }, }, plugins: [ typography, // Custom plugin for modern utilities function({ addUtilities, addComponents, theme }) { // Glass morphism utilities addUtilities({ '.glass': { background: 'rgba(255, 255, 255, 0.1)', backdropFilter: 'blur(20px)', borderRadius: '16px', border: '1px solid rgba(255, 255, 255, 0.2)', boxShadow: '0 8px 32px 0 rgba(31, 38, 135, 0.37)', }, '.glass-dark': { background: 'rgba(0, 0, 0, 0.1)', backdropFilter: 'blur(20px)', borderRadius: '16px', border: '1px solid rgba(255, 255, 255, 0.1)', boxShadow: '0 8px 32px 0 rgba(0, 0, 0, 0.37)', }, '.text-balance': { textWrap: 'balance', }, '.text-pretty': { textWrap: 'pretty', }, }); // Modern components addComponents({ '.btn-glass': { background: 'rgba(255, 255, 255, 0.1)', backdropFilter: 'blur(20px)', border: '1px solid rgba(255, 255, 255, 0.2)', borderRadius: '12px', padding: '12px 24px', fontWeight: '500', transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)', '&:hover': { background: 'rgba(255, 255, 255, 0.2)', transform: 'translateY(-2px)', boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)', }, '&:active': { transform: 'translateY(0)', }, }, '.card-modern': { background: theme('colors.surface'), borderRadius: '20px', padding: '24px', border: `1px solid ${theme('colors.border')}`, boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)', transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)', '&:hover': { transform: 'translateY(-4px)', boxShadow: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)', borderColor: theme('colors.primary.DEFAULT'), }, }, '.input-modern': { background: `${theme('colors.surface')}`, border: `2px solid ${theme('colors.border')}`, borderRadius: '12px', padding: '12px 16px', fontSize: '16px', transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)', '&:focus': { outline: 'none', borderColor: theme('colors.primary.DEFAULT'), boxShadow: `0 0 0 4px ${theme('colors.primary.DEFAULT')}20`, transform: 'translateY(-1px)', }, '&::placeholder': { color: theme('colors.subtle'), }, }, '.gradient-text': { background: `linear-gradient(135deg, ${theme('colors.primary.DEFAULT')}, ${theme('colors.accent.DEFAULT')})`, backgroundClip: 'text', color: 'transparent', display: 'inline-block', }, '.gradient-border': { position: 'relative', background: theme('colors.surface'), borderRadius: '16px', '&::before': { content: '""', position: 'absolute', inset: '0', padding: '2px', background: `linear-gradient(135deg, ${theme('colors.primary.DEFAULT')}, ${theme('colors.accent.DEFAULT')})`, borderRadius: 'inherit', mask: 'linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)', maskComposite: 'xor', }, }, '.section-modern': { paddingTop: '80px', paddingBottom: '80px', '@screen lg': { paddingTop: '120px', paddingBottom: '120px', }, }, '.container-modern': { marginLeft: 'auto', marginRight: 'auto', maxWidth: '1200px', paddingLeft: '24px', paddingRight: '24px', '@screen sm': { paddingLeft: '32px', paddingRight: '32px', }, '@screen lg': { paddingLeft: '48px', paddingRight: '48px', }, }, }); }, ], };