@import "tailwindcss"; @import "tw-animate-css"; @custom-variant dark (&:is(.dark *)); :root { --background: oklch(0.985 0.002 247); --foreground: oklch(0.145 0.015 260); --card: oklch(0.99 0.002 247); --card-foreground: oklch(0.145 0.015 260); --popover: oklch(0.99 0.002 247); --popover-foreground: oklch(0.145 0.015 260); --primary: oklch(0.55 0.22 265); --primary-foreground: oklch(1 0 0); --secondary: oklch(0.96 0.004 247); --secondary-foreground: oklch(0.3 0.015 260); --muted: oklch(0.96 0.004 247); --muted-foreground: oklch(0.5 0.015 260); --accent: oklch(0.94 0.025 270); --accent-foreground: oklch(0.35 0.03 260); --destructive: oklch(0.55 0.22 25); --destructive-foreground: oklch(1 0 0); --border: oklch(0.915 0.004 247); --input: oklch(0.915 0.004 247); --ring: oklch(0.55 0.22 265); --chart-1: oklch(0.55 0.22 265); --chart-2: oklch(0.65 0.2 250); --chart-3: oklch(0.6 0.18 280); --chart-4: oklch(0.5 0.2 300); --chart-5: oklch(0.45 0.18 320); --sidebar: oklch(0.97 0.003 247); --sidebar-foreground: oklch(0.145 0.015 260); --sidebar-primary: oklch(0.55 0.22 265); --sidebar-primary-foreground: oklch(1 0 0); --sidebar-accent: oklch(0.94 0.025 270); --sidebar-accent-foreground: oklch(0.35 0.03 260); --sidebar-border: oklch(0.915 0.004 247); --sidebar-ring: oklch(0.55 0.22 265); --radius: 0.75rem; --shadow-2xs: 0 1px 2px oklch(0.3 0.01 260 / 0.06); --shadow-xs: 0 1px 3px oklch(0.3 0.01 260 / 0.08); --shadow-sm: 0 2px 8px oklch(0.3 0.01 260 / 0.08), 0 1px 2px oklch(0.3 0.01 260 / 0.06); --shadow: 0 4px 16px oklch(0.3 0.01 260 / 0.1), 0 1px 3px oklch(0.3 0.01 260 / 0.06); --shadow-md: 0 8px 24px oklch(0.3 0.01 260 / 0.12), 0 2px 6px oklch(0.3 0.01 260 / 0.06); --shadow-lg: 0 16px 48px oklch(0.3 0.01 260 / 0.14), 0 4px 12px oklch(0.3 0.01 260 / 0.06); --shadow-xl: 0 24px 64px oklch(0.3 0.01 260 / 0.18); --shadow-2xl: 0 32px 80px oklch(0.3 0.01 260 / 0.25); --tracking-normal: -0.01em; --spacing: 0.25rem; } .dark { --background: oklch(0.13 0.01 265); --foreground: oklch(0.93 0.01 260); --card: oklch(0.17 0.012 265); --card-foreground: oklch(0.93 0.01 260); --popover: oklch(0.17 0.012 265); --popover-foreground: oklch(0.93 0.01 260); --primary: oklch(0.7 0.18 265); --primary-foreground: oklch(0.13 0.01 265); --secondary: oklch(0.22 0.012 265); --secondary-foreground: oklch(0.88 0.008 260); --muted: oklch(0.22 0.012 265); --muted-foreground: oklch(0.65 0.015 260); --accent: oklch(0.25 0.02 270); --accent-foreground: oklch(0.88 0.008 260); --destructive: oklch(0.6 0.22 25); --destructive-foreground: oklch(0.98 0.002 260); --border: oklch(0.25 0.012 265); --input: oklch(0.25 0.012 265); --ring: oklch(0.7 0.18 265); --chart-1: oklch(0.7 0.18 265); --chart-2: oklch(0.65 0.2 250); --chart-3: oklch(0.6 0.22 280); --chart-4: oklch(0.55 0.18 300); --chart-5: oklch(0.5 0.15 320); --sidebar: oklch(0.15 0.012 265); --sidebar-foreground: oklch(0.93 0.01 260); --sidebar-primary: oklch(0.7 0.18 265); --sidebar-primary-foreground: oklch(0.13 0.01 265); --sidebar-accent: oklch(0.25 0.02 270); --sidebar-accent-foreground: oklch(0.88 0.008 260); --sidebar-border: oklch(0.25 0.012 265); --sidebar-ring: oklch(0.7 0.18 265); --radius: 0.75rem; --shadow-2xs: 0 1px 2px oklch(0 0 0 / 0.2); --shadow-xs: 0 1px 3px oklch(0 0 0 / 0.25); --shadow-sm: 0 2px 8px oklch(0 0 0 / 0.25), 0 1px 2px oklch(0 0 0 / 0.15); --shadow: 0 4px 16px oklch(0 0 0 / 0.3), 0 1px 3px oklch(0 0 0 / 0.15); --shadow-md: 0 8px 24px oklch(0 0 0 / 0.35), 0 2px 6px oklch(0 0 0 / 0.15); --shadow-lg: 0 16px 48px oklch(0 0 0 / 0.4), 0 4px 12px oklch(0 0 0 / 0.15); --shadow-xl: 0 24px 64px oklch(0 0 0 / 0.5); --shadow-2xl: 0 32px 80px oklch(0 0 0 / 0.6); } @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: var(--font-geist-sans), system-ui, sans-serif; --font-mono: var(--font-geist-mono), ui-monospace, monospace; --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); --animate-fade-in: fade-in 0.3s ease-out; --animate-slide-up: slide-up 0.3s ease-out; --animate-slide-down: slide-down 0.3s ease-out; --animate-scale-in: scale-in 0.2s ease-out; @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes slide-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } @keyframes slide-down { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } } @keyframes scale-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } } @layer base { * { @apply border-border outline-ring/50; } body { @apply bg-background text-foreground; } } @layer utilities { .glass-surface { background: linear-gradient( 180deg, oklch(1 0 0 / 0.78), oklch(0.985 0.003 247 / 0.92) ); border: 1px solid oklch(0.89 0.005 247 / 0.95); border-radius: calc(var(--radius) + 0.5rem); box-shadow: 0 10px 30px oklch(0.3 0.01 260 / 0.08); backdrop-filter: blur(18px) saturate(1.08); } .dark .glass-surface { background: linear-gradient( 180deg, oklch(0.23 0.015 265 / 0.72), oklch(0.18 0.012 265 / 0.88) ); border-color: oklch(1 0 0 / 0.09); box-shadow: 0 18px 40px oklch(0 0 0 / 0.35); } .glass-panel { background: linear-gradient( 180deg, oklch(1 0 0 / 0.84), oklch(0.992 0.002 247 / 0.96) ); border: 1px solid oklch(0.89 0.005 247 / 0.95); border-radius: calc(var(--radius) + 0.75rem); box-shadow: 0 14px 36px oklch(0.3 0.01 260 / 0.08); backdrop-filter: blur(20px) saturate(1.08); } .dark .glass-panel { background: linear-gradient( 180deg, oklch(0.22 0.014 265 / 0.78), oklch(0.17 0.012 265 / 0.9) ); border-color: oklch(1 0 0 / 0.1); box-shadow: 0 22px 48px oklch(0 0 0 / 0.36); } .glass-subtle { background: oklch(0.98 0.003 247 / 0.72); border: 1px solid oklch(0.9 0.004 247 / 0.95); border-radius: calc(var(--radius) + 0.5rem); backdrop-filter: blur(14px); } .dark .glass-subtle { background: oklch(0.25 0.012 265 / 0.42); border-color: oklch(1 0 0 / 0.08); } /* Light: subtle card with border; Dark: glass panel */ .glass { background: oklch(1 0 0 / 0.7); border: 1px solid oklch(0.87 0.005 247); border-radius: var(--radius); } .dark .glass { background: oklch(1 0 0 / 0.04); border-color: oklch(1 0 0 / 0.07); backdrop-filter: blur(12px); } .glass-card { background: linear-gradient( 180deg, oklch(1 0 0 / 0.72), oklch(0.99 0.002 247 / 0.94) ); border: 1px solid oklch(0.9 0.005 247 / 0.95); border-radius: calc(var(--radius) + 0.25rem); box-shadow: 0 8px 20px oklch(0.3 0.01 260 / 0.06); backdrop-filter: blur(16px) saturate(1.06); } .dark .glass-card { background: linear-gradient( 180deg, oklch(0.24 0.015 265 / 0.52), oklch(0.18 0.012 265 / 0.72) ); border-color: oklch(1 0 0 / 0.08); box-shadow: 0 14px 32px oklch(0 0 0 / 0.26); } .glass-strong { background: oklch(0.995 0.001 247 / 0.97); border: 1px solid oklch(0.88 0.006 247); border-radius: var(--radius); box-shadow: 0 2px 8px oklch(0.3 0.01 260 / 0.08); } .dark .glass-strong { backdrop-filter: blur(20px) saturate(1.2); background: oklch(1 0 0 / 0.07); border-color: oklch(1 0 0 / 0.1); box-shadow: 0 4px 20px oklch(0 0 0 / 0.3); } } @utility scrollbar-none { scrollbar-width: none; &::-webkit-scrollbar { display: none; } }