@import "tailwindcss"; @import "tw-animate-css"; @custom-variant dark (&:is(.dark *)); :root { /* Background moderne avec légère teinte */ --background: oklch(0.99 0.002 270); --foreground: oklch(0.15 0.01 270); /* Cards avec glassmorphism subtil */ --card: oklch(1 0 0 / 0.8); --card-foreground: oklch(0.15 0.01 270); /* Popover avec backdrop blur */ --popover: oklch(1 0 0 / 0.95); --popover-foreground: oklch(0.15 0.01 270); /* Primary: Bleu/violet fintech moderne */ --primary: oklch(0.55 0.18 260); --primary-foreground: oklch(0.99 0 0); /* Secondary avec teinte subtile */ --secondary: oklch(0.97 0.005 270); --secondary-foreground: oklch(0.25 0.01 270); /* Muted plus doux */ --muted: oklch(0.96 0.003 270); --muted-foreground: oklch(0.5 0.008 270); /* Accent avec couleur vibrante */ --accent: oklch(0.95 0.01 260); --accent-foreground: oklch(0.55 0.18 260); /* Destructive moderne */ --destructive: oklch(0.55 0.22 25); --destructive-foreground: oklch(0.99 0 0); /* Bordures fines et subtiles */ --border: oklch(0.92 0.005 270 / 0.6); --input: oklch(0.96 0.003 270); --ring: oklch(0.55 0.18 260 / 0.3); /* Chart colors modernes et vibrantes */ --chart-1: oklch(0.6 0.2 260); --chart-2: oklch(0.65 0.18 180); --chart-3: oklch(0.7 0.15 120); --chart-4: oklch(0.65 0.2 320); --chart-5: oklch(0.6 0.18 40); --radius: 0.75rem; /* Sidebar moderne */ --sidebar: oklch(0.98 0.003 270); --sidebar-foreground: oklch(0.2 0.01 270); --sidebar-primary: oklch(0.55 0.18 260); --sidebar-primary-foreground: oklch(0.99 0 0); --sidebar-accent: oklch(0.95 0.01 260); --sidebar-accent-foreground: oklch(0.25 0.01 270); --sidebar-border: oklch(0.92 0.005 270 / 0.5); --sidebar-ring: oklch(0.55 0.18 260 / 0.2); } .dark { /* Background sombre avec teinte subtile */ --background: oklch(0.12 0.01 270); --foreground: oklch(0.98 0.002 270); /* Cards avec effet glassmorphism sombre */ --card: oklch(0.15 0.01 270 / 0.7); --card-foreground: oklch(0.98 0.002 270); /* Popover avec backdrop blur */ --popover: oklch(0.15 0.01 270 / 0.95); --popover-foreground: oklch(0.98 0.002 270); /* Primary: Bleu/violet brillant pour dark mode */ --primary: oklch(0.65 0.2 260); --primary-foreground: oklch(0.12 0.01 270); /* Secondary avec plus de contraste */ --secondary: oklch(0.22 0.01 270); --secondary-foreground: oklch(0.95 0.002 270); /* Muted plus visible */ --muted: oklch(0.22 0.01 270); --muted-foreground: oklch(0.65 0.008 270); /* Accent vibrant */ --accent: oklch(0.25 0.015 260); --accent-foreground: oklch(0.65 0.2 260); /* Destructive moderne */ --destructive: oklch(0.6 0.22 25); --destructive-foreground: oklch(0.98 0 0); /* Bordures subtiles */ --border: oklch(0.25 0.01 270 / 0.5); --input: oklch(0.22 0.01 270); --ring: oklch(0.65 0.2 260 / 0.4); /* Chart colors vibrantes pour dark */ --chart-1: oklch(0.7 0.22 260); --chart-2: oklch(0.75 0.2 180); --chart-3: oklch(0.8 0.18 120); --chart-4: oklch(0.75 0.22 320); --chart-5: oklch(0.7 0.2 40); /* Sidebar dark moderne */ --sidebar: oklch(0.14 0.01 270); --sidebar-foreground: oklch(0.95 0.002 270); --sidebar-primary: oklch(0.65 0.2 260); --sidebar-primary-foreground: oklch(0.12 0.01 270); --sidebar-accent: oklch(0.25 0.015 260); --sidebar-accent-foreground: oklch(0.95 0.002 270); --sidebar-border: oklch(0.25 0.01 270 / 0.4); --sidebar-ring: oklch(0.65 0.2 260 / 0.3); } @theme inline { --font-sans: "Geist", "Geist Fallback"; --font-mono: "Geist Mono", "Geist Mono Fallback"; --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); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); --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); } @layer base { * { @apply border-border outline-ring/50; } body { @apply bg-background text-foreground; font-feature-settings: "rlig" 1, "calt" 1; } /* Animations fintech modernes */ @keyframes fade-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } @keyframes slide-in { from { opacity: 0; transform: translateX(-8px); } to { opacity: 1; transform: translateX(0); } } /* Smooth scrolling */ html { scroll-behavior: smooth; } /* Amélioration des transitions globales */ * { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } /* Background fintech moderne avec dégradés subtils */ .page-background { position: relative; background: var(--background); } .page-background::before { content: ""; position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 0; background: radial-gradient(ellipse 100% 60% at 0% 0%, color-mix(in srgb, var(--primary) 8%, transparent) 0%, transparent 60% ), radial-gradient(ellipse 80% 50% at 100% 100%, color-mix(in srgb, var(--chart-2) 6%, transparent) 0%, transparent 60% ), radial-gradient(ellipse 60% 40% at 50% 50%, color-mix(in srgb, var(--chart-3) 4%, transparent) 0%, transparent 70% ); background-size: 100% 100%; pointer-events: none; opacity: 1; transition: opacity 0.3s ease; } .dark .page-background::before { background: radial-gradient(ellipse 100% 60% at 0% 0%, color-mix(in srgb, var(--primary) 12%, transparent) 0%, transparent 60% ), radial-gradient(ellipse 80% 50% at 100% 100%, color-mix(in srgb, var(--chart-2) 10%, transparent) 0%, transparent 60% ), radial-gradient(ellipse 60% 40% at 50% 50%, color-mix(in srgb, var(--chart-3) 8%, transparent) 0%, transparent 70% ); opacity: 1; } .page-content { position: relative; z-index: 1; } }