@import "tailwindcss"; @import "tw-animate-css"; @custom-variant dark (&:is(.dark *)); :root { --background: oklch(0.9789 0.0082 121.6272); --foreground: oklch(0 0 0); --card: oklch(1.0000 0 0); --card-foreground: oklch(0 0 0); --popover: oklch(1.0000 0 0); --popover-foreground: oklch(0 0 0); --primary: oklch(0.5106 0.2301 276.9656); --primary-foreground: oklch(1.0000 0 0); --secondary: oklch(0.7038 0.1230 182.5025); --secondary-foreground: oklch(1.0000 0 0); --muted: oklch(0.9551 0 0); --muted-foreground: oklch(0.3211 0 0); --accent: oklch(0.7686 0.1647 70.0804); --accent-foreground: oklch(0 0 0); --destructive: oklch(0.6368 0.2078 25.3313); --destructive-foreground: oklch(1.0000 0 0); --border: oklch(0 0 0); --input: oklch(0.5555 0 0); --ring: oklch(0.7853 0.1041 274.7134); --chart-1: oklch(0.5106 0.2301 276.9656); --chart-2: oklch(0.7038 0.1230 182.5025); --chart-3: oklch(0.7686 0.1647 70.0804); --chart-4: oklch(0.6559 0.2118 354.3084); --chart-5: oklch(0.7227 0.1920 149.5793); --sidebar: oklch(0.9789 0.0082 121.6272); --sidebar-foreground: oklch(0 0 0); --sidebar-primary: oklch(0.5106 0.2301 276.9656); --sidebar-primary-foreground: oklch(1.0000 0 0); --sidebar-accent: oklch(0.7686 0.1647 70.0804); --sidebar-accent-foreground: oklch(0 0 0); --sidebar-border: oklch(0 0 0); --sidebar-ring: oklch(0.7853 0.1041 274.7134); --radius: 1rem; --shadow-x: 0px; --shadow-y: 0px; --shadow-blur: 0px; --shadow-spread: 0px; --shadow-opacity: 0.05; --shadow-color: #1a1a1a; --shadow-2xs: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.03); --shadow-xs: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.03); --shadow-sm: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.05); --shadow: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.05); --shadow-md: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 2px 4px -1px hsl(0 0% 10.1961% / 0.05); --shadow-lg: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 4px 6px -1px hsl(0 0% 10.1961% / 0.05); --shadow-xl: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 8px 10px -1px hsl(0 0% 10.1961% / 0.05); --shadow-2xl: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.13); --tracking-normal: normal; --spacing: 0.25rem; } .dark { --background: oklch(0 0 0); --foreground: oklch(1.0000 0 0); --card: oklch(0.2455 0.0217 257.2823); --card-foreground: oklch(1.0000 0 0); --popover: oklch(0.2455 0.0217 257.2823); --popover-foreground: oklch(1.0000 0 0); --primary: oklch(0.6801 0.1583 276.9349); --primary-foreground: oklch(0 0 0); --secondary: oklch(0.7845 0.1325 181.9120); --secondary-foreground: oklch(0 0 0); --muted: oklch(0.3211 0 0); --muted-foreground: oklch(0.8452 0 0); --accent: oklch(0.8790 0.1534 91.6054); --accent-foreground: oklch(0 0 0); --destructive: oklch(0.7106 0.1661 22.2162); --destructive-foreground: oklch(0 0 0); --border: oklch(0.4459 0 0); --input: oklch(1.0000 0 0); --ring: oklch(0.6801 0.1583 276.9349); --chart-1: oklch(0.6801 0.1583 276.9349); --chart-2: oklch(0.7845 0.1325 181.9120); --chart-3: oklch(0.8790 0.1534 91.6054); --chart-4: oklch(0.7253 0.1752 349.7607); --chart-5: oklch(0.8003 0.1821 151.7110); --sidebar: oklch(0 0 0); --sidebar-foreground: oklch(1.0000 0 0); --sidebar-primary: oklch(0.6801 0.1583 276.9349); --sidebar-primary-foreground: oklch(0 0 0); --sidebar-accent: oklch(0.8790 0.1534 91.6054); --sidebar-accent-foreground: oklch(0 0 0); --sidebar-border: oklch(1.0000 0 0); --sidebar-ring: oklch(0.6801 0.1583 276.9349); --radius: 1rem; --shadow-x: 0px; --shadow-y: 0px; --shadow-blur: 0px; --shadow-spread: 0px; --shadow-opacity: 0.05; --shadow-color: #1a1a1a; --shadow-2xs: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.03); --shadow-xs: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.03); --shadow-sm: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.05); --shadow: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.05); --shadow-md: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 2px 4px -1px hsl(0 0% 10.1961% / 0.05); --shadow-lg: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 4px 6px -1px hsl(0 0% 10.1961% / 0.05); --shadow-xl: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 8px 10px -1px hsl(0 0% 10.1961% / 0.05); --shadow-2xl: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.13); } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); --font-sans: 'DM Sans', sans-serif; --font-mono: 'Space Mono', monospace; --font-serif: 'DM Sans', sans-serif; --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); --shadow-2xs: var(--shadow-2xs); --shadow-xs: var(--shadow-xs); --shadow-sm: var(--shadow-sm); --shadow: var(--shadow); --shadow-md: var(--shadow-md); --shadow-lg: var(--shadow-lg); --shadow-xl: var(--shadow-xl); --shadow-2xl: var(--shadow-2xl); --tracking-tighter: calc(var(--tracking-normal) - 0.05em); --tracking-tight: calc(var(--tracking-normal) - 0.025em); --tracking-normal: var(--tracking-normal); --tracking-wide: calc(var(--tracking-normal) + 0.025em); --tracking-wider: calc(var(--tracking-normal) + 0.05em); --tracking-widest: calc(var(--tracking-normal) + 0.1em); /* Background gradients */ --bg-main: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 20%, #bbf7d0 40%, #dcfce7 60%, #f0fdf4 80%, #dcfce7 100%); --bg-orbs: radial-gradient(ellipse at 15% 10%, rgba(99, 102, 241, 0.1) 0%, transparent 40%), radial-gradient(ellipse at 85% 20%, rgba(168, 85, 247, 0.08) 0%, transparent 35%), radial-gradient(ellipse at 50% 50%, rgba(59, 130, 246, 0.06) 0%, transparent 50%), radial-gradient(ellipse at 20% 80%, rgba(34, 197, 94, 0.05) 0%, transparent 40%), radial-gradient(ellipse at 80% 85%, rgba(239, 68, 68, 0.05) 0%, transparent 35%); } @layer base { html { scroll-behavior: smooth; } * { @apply border-border outline-ring/50; } body { @apply text-foreground; font-family: var(--font-sans); letter-spacing: var(--tracking-normal); background-color: transparent; min-height: 100vh; min-height: 100dvh; overflow-x: hidden; } body::before { content: ''; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: var(--bg-orbs), var(--bg-main); background-size: cover; pointer-events: none; z-index: -50; } /* Dark mode overrides */ .dark { --bg-main: linear-gradient(135deg, #0f0f1a 0%, #1a1a2e 20%, #16213e 40%, #1a1a2e 60%, #0f0f1a 80%, #1a1a2e 100%); --bg-orbs: radial-gradient(ellipse at 15% 10%, rgba(99, 102, 241, 0.15) 0%, transparent 40%), radial-gradient(ellipse at 85% 20%, rgba(168, 85, 247, 0.12) 0%, transparent 35%), radial-gradient(ellipse at 50% 50%, rgba(45, 55, 72, 0.1) 0%, transparent 50%), radial-gradient(ellipse at 20% 80%, rgba(34, 197, 94, 0.08) 0%, transparent 40%), radial-gradient(ellipse at 80% 85%, rgba(239, 68, 68, 0.08) 0%, transparent 35%); } /* Calendar styling - optimize cell size */ .rdp { --rdp-cell-size: 40px; } /* Make calendar fill available space on mobile */ @media (max-width: 640px) { .rdp { --rdp-cell-size: 100%; width: 100%; margin: 0; } .rdp-month { width: 100%; } .rdp-table { width: 100%; max-width: 100%; display: table; table-layout: fixed; } .rdp-day { width: 100%; max-width: none; height: auto; aspect-ratio: 1; } .rdp-head_cell { width: 100%; } } /* Tablet sizing */ @media (min-width: 641px) and (max-width: 1024px) { .rdp { --rdp-cell-size: 44px; } } } /* Animation keyframes */ @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes fade-in-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fade-in-down { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } @keyframes scale-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } @keyframes slide-in-right { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } } @keyframes slide-in-left { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } @keyframes pulse-subtle { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } } @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } @keyframes glow { 0%, 100% { box-shadow: 0 0 5px rgba(99, 102, 241, 0.5); } 50% { box-shadow: 0 0 20px rgba(99, 102, 241, 0.8); } } @keyframes confetti { 0% { transform: translateY(0) rotate(0deg); opacity: 1; } 100% { transform: translateY(100vh) rotate(720deg); opacity: 0; } } .animate-confetti { animation: confetti 3s ease-out forwards; } /* Animation utility classes */ .animate-fade-in { animation: fade-in 0.5s ease-out forwards; } .animate-fade-in-up { animation: fade-in-up 0.5s ease-out forwards; } .animate-fade-in-down { animation: fade-in-down 0.5s ease-out forwards; } .animate-scale-in { animation: scale-in 0.4s ease-out forwards; } .animate-slide-in-right { animation: slide-in-right 0.5s ease-out forwards; } .animate-slide-in-left { animation: slide-in-left 0.5s ease-out forwards; } .animate-pulse-subtle { animation: pulse-subtle 2s ease-in-out infinite; } .animate-float { animation: float 3s ease-in-out infinite; } .animate-glow { animation: glow 2s ease-in-out infinite; } /* Stagger delay utilities */ .delay-100 { animation-delay: 100ms; } .delay-200 { animation-delay: 200ms; } .delay-300 { animation-delay: 300ms; } .delay-400 { animation-delay: 400ms; } .delay-500 { animation-delay: 500ms; } .delay-600 { animation-delay: 600ms; } /* Start hidden for animations */ .opacity-0 { opacity: 0; } /* Smooth transitions */ .transition-smooth { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Interactive hover effects */ .hover-lift { transition: transform 0.2s ease, box-shadow 0.2s ease; } .hover-lift:hover { transform: translateY(-2px); box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.3); } .hover-scale { transition: transform 0.2s ease; } .hover-scale:hover { transform: scale(1.02); } .hover-glow { transition: box-shadow 0.3s ease; } .hover-glow:hover { box-shadow: 0 0 20px rgba(99, 102, 241, 0.4); } /* Glassmorphism effect */ .glass { background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); } .glass-strong { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.15); } /* Premium card effect */ .card-premium { background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%); backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.18); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.1); } /* Gradient text */ .gradient-text { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .gradient-text-warm { background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Subtle inner glow for cards */ .inner-glow { box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); } /* Text shadow for better readability */ .text-shadow { text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); } .text-shadow-sm { text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); } /* Gradient borders */ .gradient-border { position: relative; } .gradient-border::before { content: ''; position: absolute; inset: 0; border-radius: inherit; padding: 1px; background: linear-gradient(135deg, rgba(99, 102, 241, 0.5), rgba(168, 85, 247, 0.5)); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; } /* Noise texture overlay for depth */ .noise-overlay { position: relative; } .noise-overlay::after { content: ''; position: absolute; inset: 0; background-image: 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.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E"); opacity: 0.03; pointer-events: none; border-radius: inherit; }