@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Serif:ital,wght@1,400;1,500;1,600;1,700&display=swap'); @import 'tailwindcss'; @import 'tw-animate-css'; @source '../views'; @source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; @custom-variant dark (&:is(.dark *)); @theme { --font-sans: 'IBM Plex Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; --font-mono: 'Google Sans Code', monospace; --radius-lg: var(--radius); --radius-md: calc(var(--radius) - 2px); --radius-sm: calc(var(--radius) - 4px); --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-chart-6: var(--chart-6); --color-chart-7: var(--chart-7); --color-chart-8: var(--chart-8); --color-chart-9: var(--chart-9); --color-chart-10: var(--chart-10); --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); } :root { --background: oklch(1 0 0); --foreground: oklch(0.145 0 0); --card: oklch(1 0 0); --card-foreground: oklch(0.145 0 0); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0); --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.97 0 0); --secondary-foreground: oklch(0.205 0 0); --muted: oklch(0.97 0 0); --muted-foreground: oklch(0.556 0 0); --accent: oklch(0.97 0 0); --accent-foreground: oklch(0.205 0 0); --destructive: oklch(0.577 0.245 27.325); --destructive-foreground: oklch(0.577 0.245 27.325); --border: oklch(0.922 0 0); --input: oklch(0.922 0 0); --ring: oklch(0.87 0 0); --chart-1: var(--color-zinc-900); --chart-2: var(--color-zinc-800); --chart-3: var(--color-zinc-700); --chart-4: var(--color-zinc-600); --chart-5: var(--color-zinc-500); --chart-6: var(--color-zinc-400); --chart-7: var(--color-zinc-300); --chart-8: var(--color-zinc-200); --chart-9: var(--color-zinc-100); --chart-10: var(--color-zinc-50); --spent: var(--color-zinc-800); --allocated: var(--color-zinc-200); --spent-prev: var(--color-zinc-400); --radius: 0.625rem; --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0 0); --sidebar-primary: oklch(0.205 0 0); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.97 0 0); --sidebar-accent-foreground: oklch(0.205 0 0); --sidebar-border: oklch(0.922 0 0); --sidebar-ring: oklch(0.87 0 0); } .dark { --background: oklch(0.225 0 0); --foreground: oklch(0.985 0 0); --card: oklch(0.225 0 0); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.145 0 0); --popover-foreground: oklch(0.985 0 0); --primary: oklch(0.985 0 0); --primary-foreground: oklch(0.205 0 0); --secondary: oklch(0.269 0 0); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.269 0 0); --muted-foreground: oklch(0.708 0 0); --accent: oklch(0.269 0 0); --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.396 0.141 25.723); --destructive-foreground: oklch(0.637 0.237 25.331); --border: oklch(0.325 0 0); --input: oklch(0.269 0 0); --ring: oklch(0.439 0 0); --chart-1: var(--color-zinc-200); --chart-2: var(--color-zinc-300); --chart-3: var(--color-zinc-400); --chart-4: var(--color-zinc-500); --chart-5: var(--color-zinc-600); --chart-6: var(--color-zinc-700); --chart-7: var(--color-zinc-800); --chart-8: var(--color-zinc-900); --chart-9: var(--color-zinc-50); --chart-10: var(--color-zinc-100); --spent: var(--color-zinc-200); --allocated: var(--color-zinc-700); --spent-prev: var(--color-zinc-500); --sidebar: oklch(0.205 0 0); --sidebar-foreground: oklch(0.985 0 0); --sidebar-primary: oklch(0.985 0 0); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.269 0 0); --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(0.269 0 0); --sidebar-ring: oklch(0.439 0 0); } /* Colorful chart color scheme */ [data-chart-color='colorful'] { --chart-1: var(--color-blue-600); --chart-2: var(--color-emerald-500); --chart-3: var(--color-amber-500); --chart-4: var(--color-rose-500); --chart-5: var(--color-violet-500); --chart-6: var(--color-cyan-500); --chart-7: var(--color-orange-500); --chart-8: var(--color-teal-500); --chart-9: var(--color-pink-400); --chart-10: var(--color-indigo-400); --spent: var(--color-blue-600); --allocated: var(--color-blue-200); --spent-prev: var(--color-blue-400); --account-line: var(--color-zinc-800); --cashflow-income: var(--color-emerald-500); --cashflow-expense: var(--color-red-500); } .dark[data-chart-color='colorful'] { --chart-1: var(--color-blue-400); --chart-2: var(--color-emerald-400); --chart-3: var(--color-amber-400); --chart-4: var(--color-rose-400); --chart-5: var(--color-violet-400); --chart-6: var(--color-cyan-400); --chart-7: var(--color-orange-400); --chart-8: var(--color-teal-400); --chart-9: var(--color-pink-300); --chart-10: var(--color-indigo-300); --spent: var(--color-blue-400); --allocated: var(--color-blue-800); --spent-prev: var(--color-blue-600); --account-line: var(--color-zinc-50); --cashflow-income: var(--color-emerald-400); --cashflow-expense: var(--color-red-400); } /* Blue chart color scheme */ [data-chart-color='blue'] { --chart-1: var(--color-blue-900); --chart-2: var(--color-blue-800); --chart-3: var(--color-blue-700); --chart-4: var(--color-blue-600); --chart-5: var(--color-blue-500); --chart-6: var(--color-blue-400); --chart-7: var(--color-blue-300); --chart-8: var(--color-blue-200); --chart-9: var(--color-blue-100); --chart-10: var(--color-blue-50); --spent: var(--color-blue-800); --allocated: var(--color-blue-200); --spent-prev: var(--color-blue-400); } .dark[data-chart-color='blue'] { --chart-1: var(--color-blue-200); --chart-2: var(--color-blue-300); --chart-3: var(--color-blue-400); --chart-4: var(--color-blue-500); --chart-5: var(--color-blue-600); --chart-6: var(--color-blue-700); --chart-7: var(--color-blue-800); --chart-8: var(--color-blue-900); --chart-9: var(--color-blue-50); --chart-10: var(--color-blue-100); --spent: var(--color-blue-200); --allocated: var(--color-blue-700); --spent-prev: var(--color-blue-500); } /* Pink chart color scheme */ [data-chart-color='pink'] { --chart-1: var(--color-pink-900); --chart-2: var(--color-pink-800); --chart-3: var(--color-pink-700); --chart-4: var(--color-pink-600); --chart-5: var(--color-pink-500); --chart-6: var(--color-pink-400); --chart-7: var(--color-pink-300); --chart-8: var(--color-pink-200); --chart-9: var(--color-pink-100); --chart-10: var(--color-pink-50); --spent: var(--color-pink-800); --allocated: var(--color-pink-200); --spent-prev: var(--color-pink-400); } .dark[data-chart-color='pink'] { --chart-1: var(--color-pink-200); --chart-2: var(--color-pink-300); --chart-3: var(--color-pink-400); --chart-4: var(--color-pink-500); --chart-5: var(--color-pink-600); --chart-6: var(--color-pink-700); --chart-7: var(--color-pink-800); --chart-8: var(--color-pink-900); --chart-9: var(--color-pink-50); --chart-10: var(--color-pink-100); --spent: var(--color-pink-200); --allocated: var(--color-pink-700); --spent-prev: var(--color-pink-500); } @layer base { * { @apply border-border; } body { @apply bg-background text-foreground; } .pt-safe { padding-top: env(safe-area-inset-top, 0px); } .bg-radial { background-image: radial-gradient(ellipse, var(--tw-gradient-stops)); } .glass-3 { background: linear-gradient( 135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05) ); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); } .dark .glass-3 { background: linear-gradient( 135deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02) ); } @keyframes marquee { from { transform: translateX(0); } to { transform: translateX(calc(-100% - var(--gap))); } } .font-heading { font-family: 'IBM Plex Serif', ui-serif, Georgia, serif; font-style: italic; } .animate-marquee { animation: marquee var(--duration) linear infinite; } .bg-linear-to-r { background: linear-gradient(to right, var(--tw-gradient-stops)); } .bg-linear-to-l { background: linear-gradient(to left, var(--tw-gradient-stops)); } /* Charts */ .recharts-responsive-container:focus-visible, svg:focus, g:focus, path:focus { outline: none; } /* Unlock button attention animation */ @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.4); } 50% { box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); } } @keyframes pulse-scale { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } @keyframes icon-pulse { 0%, 100% { color: currentColor; } 50% { color: rgb(59, 130, 246); } } .unlock-button-pulse { animation: pulse-glow 2s ease-in-out infinite, pulse-scale 2s ease-in-out infinite; } .unlock-icon-pulse { animation: icon-pulse 2s ease-in-out infinite; } }