@import "tailwindcss"; @import "tw-animate-css"; @custom-variant dark (&:is(.dark *)); :root { --radius: 0.625rem; --background: oklch(1 0 0); --foreground: oklch(0.141 0.005 285.823); --card: oklch(1 0 0); --card-foreground: oklch(0.141 0.005 285.823); --popover: oklch(1 0 0); --popover-foreground: oklch(0.141 0.005 285.823); --primary: oklch(0.21 0.006 285.885); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.967 0.001 286.375); --secondary-foreground: oklch(0.21 0.006 285.885); --muted: oklch(0.967 0.001 286.375); --muted-foreground: oklch(0.552 0.016 285.938); --accent: oklch(0.967 0.001 286.375); --accent-foreground: oklch(0.21 0.006 285.885); --destructive: oklch(0.577 0.245 27.325); --border: oklch(0.92 0.004 286.32); --input: oklch(0.92 0.004 286.32); --ring: oklch(0.705 0.015 286.067); --chart-1: oklch(0.646 0.222 41.116); --chart-2: oklch(0.6 0.118 184.704); --chart-3: oklch(0.398 0.07 227.392); --chart-4: oklch(0.828 0.189 84.429); --chart-5: oklch(0.769 0.188 70.08); --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.141 0.005 285.823); --sidebar-primary: oklch(0.21 0.006 285.885); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.967 0.001 286.375); --sidebar-accent-foreground: oklch(0.21 0.006 285.885); --sidebar-border: oklch(0.92 0.004 286.32); --sidebar-ring: oklch(0.705 0.015 286.067); --background-20: oklch(1 0 0 / 20%); --background-40: oklch(1 0 0 / 40%); --background-60: oklch(1 0 0 / 60%); --background-80: oklch(1 0 0 / 80%); --background-95: oklch(1 0 0 / 95%); --background-subtle: oklch(0.98 0 0); --background-muted: oklch(0.97 0.002 286.375); --text-muted: oklch(0.552 0.016 285.938); --text-subtle: oklch(0.705 0.015 286.067); --text-soft: oklch(0.5 0.01 286); --border-subtle: oklch(0.95 0.003 286.32); --border-muted: oklch(0.92 0.004 286.32); --border-soft: oklch(0.88 0.005 286.32); --gradient-from: oklch(0.98 0.002 286.32); --gradient-via: oklch(1 0 0); --gradient-to: oklch(0.98 0.002 286.32); --font-mono: 'Major Mono Display'; } .dark { --background: oklch(0.141 0.005 285.823); --foreground: oklch(0.985 0 0); --card: oklch(0.21 0.006 285.885); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.21 0.006 285.885); --popover-foreground: oklch(0.985 0 0); --primary: oklch(0.92 0.004 286.32); --primary-foreground: oklch(0.21 0.006 285.885); --secondary: oklch(0.274 0.006 286.033); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.274 0.006 286.033); --muted-foreground: oklch(0.705 0.015 286.067); --accent: oklch(0.274 0.006 286.033); --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.704 0.191 22.216); --border: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 15%); --ring: oklch(0.552 0.016 285.938); --chart-1: oklch(0.488 0.243 264.376); --chart-2: oklch(0.696 0.17 162.48); --chart-3: oklch(0.769 0.188 70.08); --chart-4: oklch(0.627 0.265 303.9); --chart-5: oklch(0.645 0.246 16.439); --sidebar: oklch(0.21 0.006 285.885); --sidebar-foreground: oklch(0.985 0 0); --sidebar-primary: oklch(0.488 0.243 264.376); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.274 0.006 286.033); --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(1 0 0 / 10%); --sidebar-ring: oklch(0.552 0.016 285.938); --background-20: oklch(0.21 0.006 285.885 / 20%); --background-40: oklch(0.21 0.006 285.885 / 40%); --background-60: oklch(0.21 0.006 285.885 / 60%); --background-80: oklch(0.21 0.006 285.885 / 80%); --background-95: oklch(0.21 0.006 285.885 / 95%); --background-subtle: oklch(0.18 0.005 285.823); --background-muted: oklch(0.274 0.006 286.033); --text-muted: oklch(0.705 0.015 286.067); --text-subtle: oklch(0.552 0.016 285.938); --text-soft: oklch(0.8 0.01 286); --border-subtle: oklch(1 0 0 / 8%); --border-muted: oklch(1 0 0 / 10%); --border-soft: oklch(1 0 0 / 15%); --gradient-from: oklch(0.25 0.005 285.885); --gradient-via: oklch(0.21 0.006 285.885); --gradient-to: oklch(0.25 0.005 285.885); } @theme inline { --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: 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-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); --color-background-20: var(--background-20); --color-background-40: var(--background-40); --color-background-60: var(--background-60); --color-background-80: var(--background-80); --color-background-95: var(--background-95); --color-background-subtle: var(--background-subtle); --color-background-muted: var(--background-muted); --color-text-muted: var(--text-muted); --color-text-subtle: var(--text-subtle); --color-text-soft: var(--text-soft); --color-border-subtle: var(--border-subtle); --color-border-muted: var(--border-muted); --color-border-soft: var(--border-soft); --color-gradient-from: var(--gradient-from); --color-gradient-via: var(--gradient-via); --color-gradient-to: var(--gradient-to); --font-mono: 'Major Mono Display', monospace; --font-sans: 'Karla', system-ui, -apple-system, 'Segoe UI', Inter, Roboto, Arial, sans-serif; } @layer base { * { @apply border-border outline-ring/50; } body { @apply bg-background text-foreground; font-family: "Karla", system-ui, -apple-system, "Segoe UI", Inter, Roboto, Arial, sans-serif; font-optical-sizing: auto; } } /* Global utility - useful across your app */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* Performance optimization for collapsible elements */ [data-state="open"] { will-change: height; } /* Smooth focus transitions - good globally */ .peer:focus-visible ~ * { transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1); } @keyframes nudge { 0%, 100% { transform: translateY(0) scale(1) rotate(0deg); } 2% { transform: translateY(-2px) scale(1.1) rotate(-1deg); } 4% { transform: translateY(0) scale(1) rotate(1deg); } 6% { transform: translateY(-2px) scale(1.1) rotate(0deg); } 8% { transform: translateY(0) scale(1) rotate(0deg); } } .animate-nudge { animation: nudge 10s ease-in-out infinite; } .barlow { font-family: "Barlow", system-ui, Inter, Roboto, "Segoe UI", Arial, sans-serif; } * { scrollbar-width: thin; scrollbar-color: hsl(0 0% 70% / 0.4) transparent; } .dark * { scrollbar-color: hsl(0 0% 40% / 0.5) transparent; } /* ---- Webkit / Blink ---- */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: hsl(0 0% 70% / 0); border-radius: 3px; transition: background 0.2s ease; } /* Show thumb when container is hovered or actively scrolling */ :hover > ::-webkit-scrollbar-thumb, ::-webkit-scrollbar-thumb:hover, *:hover::-webkit-scrollbar-thumb { background: hsl(0 0% 70% / 0.4); } ::-webkit-scrollbar-thumb:hover { background: hsl(0 0% 50% / 0.6); } ::-webkit-scrollbar-thumb:active { background: hsl(0 0% 40% / 0.8); } ::-webkit-scrollbar-corner { background: transparent; } /* Dark mode */ .dark ::-webkit-scrollbar-thumb { background: hsl(0 0% 40% / 0); } .dark :hover > ::-webkit-scrollbar-thumb, .dark ::-webkit-scrollbar-thumb:hover, .dark *:hover::-webkit-scrollbar-thumb { background: hsl(0 0% 40% / 0.5); } .dark ::-webkit-scrollbar-thumb:hover { background: hsl(0 0% 55% / 0.6); } .dark ::-webkit-scrollbar-thumb:active { background: hsl(0 0% 65% / 0.7); } /* ---- Behavior ---- */ * { scroll-behavior: smooth; scrollbar-gutter: stable; } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } } body { overscroll-behavior-y: none; }