@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap'); @import 'tailwindcss'; @import 'tw-animate-css'; @custom-variant dark (&:where(.dark, .dark *)); /* @layer base defaults inspired by shadcn UI Typography Provides opinionated, utility-driven defaults for HTML elements. */ @layer base { /* Headings */ h1 { @apply scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl; } h2 { @apply mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0; } h3, h4, h5, h6 { @apply mt-8 scroll-m-20 text-2xl font-semibold tracking-tight; } /* Paragraphs */ p { @apply leading-7 [&:not(:first-child)]:mt-6; } /* Links */ a { @apply text-ring font-medium underline underline-offset-2; } /* Blockquotes */ blockquote { @apply mt-6 border-l-2 pl-6 italic; } /* Code */ code { @apply bg-muted rounded px-1 font-mono text-sm; } pre { @apply bg-muted overflow-auto rounded-lg p-4 font-mono text-sm; } /* Images and Media */ img, video { @apply max-w-full rounded-lg; } /* Horizontal rules */ hr { @apply border-border my-6 border-t; } } @theme { --font-sans: 'Lato', sans-serif; --font-serif: 'EB Garamond', serif; } @theme { --rb-color-red-50: #fef4f2; --rb-color-red-100: #ffe7e1; --rb-color-red-200: #ffd2c8; --rb-color-red-300: #ffb4a3; --rb-color-red-400: #fd876c; --rb-color-red-500: #f5603e; --rb-color-red-600: #e24420; --rb-color-red-700: #be3617; --rb-color-red-800: #9d3017; --rb-color-red-900: #822d1a; --rb-color-red-950: #471408; --rb-color-orange-50: #fff8ed; --rb-color-orange-100: #ffefd5; --rb-color-orange-200: #fedbaa; --rb-color-orange-300: #fdc175; --rb-color-orange-400: #fb9b3c; --rb-color-orange-500: #f97e16; --rb-color-orange-600: #ea630c; --rb-color-orange-700: #c24a0c; --rb-color-orange-800: #9a3b12; --rb-color-orange-900: #7c3212; --rb-color-orange-950: #431707; --rb-color-yellow-50: #fefde8; --rb-color-yellow-100: #fefdc3; --rb-color-yellow-200: #fef9a3; --rb-color-yellow-300: #fdec47; --rb-color-yellow-400: #f9db16; --rb-color-yellow-500: #e9c209; --rb-color-yellow-600: #ca9704; --rb-color-yellow-700: #a16c07; --rb-color-yellow-800: #85550e; --rb-color-yellow-900: #714512; --rb-color-yellow-950: #422406; --rb-color-green-50: #f8faeb; --rb-color-green-100: #edf4d3; --rb-color-green-200: #ddebab; --rb-color-green-300: #c4dc7a; --rb-color-green-400: #b6d167; --rb-color-green-500: #8daf33; --rb-color-green-600: #6e8b25; --rb-color-green-700: #546b20; --rb-color-green-800: #44551f; --rb-color-green-900: #3a491e; --rb-color-green-950: #1e280b; --rb-color-cyan-50: #effbfc; --rb-color-cyan-100: #d7f2f6; --rb-color-cyan-200: #b4e6ed; --rb-color-cyan-300: #81d3e0; --rb-color-cyan-400: #45b6cb; --rb-color-cyan-500: #2a9ab0; --rb-color-cyan-600: #257d95; --rb-color-cyan-700: #24657a; --rb-color-cyan-800: #265464; --rb-color-cyan-900: #234756; --rb-color-cyan-950: #122e3a; --rb-color-blue-50: #eff5ff; --rb-color-blue-100: #dbe8fe; --rb-color-blue-200: #bfd8fe; --rb-color-blue-300: #a2c9fe; --rb-color-blue-400: #5f9efb; --rb-color-blue-500: #3a79f7; --rb-color-blue-600: #2358ed; --rb-color-blue-700: #1c44d9; --rb-color-blue-800: #1d38b0; --rb-color-blue-900: #1d358b; --rb-color-blue-950: #172254; --rb-color-violet-50: #eef0ff; --rb-color-violet-100: #dfe3ff; --rb-color-violet-200: #bdc2ff; --rb-color-violet-300: #a3a8fe; --rb-color-violet-400: #837ffa; --rb-color-violet-500: #6e60f4; --rb-color-violet-600: #6043e8; --rb-color-violet-700: #5435cd; --rb-color-violet-800: #442ea5; --rb-color-violet-900: #3b2c83; --rb-color-violet-950: #231a4c; --rb-color-neutral-50: #f6f6f6; --rb-color-neutral-100: #e7e7e7; --rb-color-neutral-200: #d1d1d1; --rb-color-neutral-300: #b0b0b0; --rb-color-neutral-400: #888888; --rb-color-neutral-500: #737373; --rb-color-neutral-600: #5d5d5d; --rb-color-neutral-700: #4f4f4f; --rb-color-neutral-800: #454545; --rb-color-neutral-900: #3d3d3d; --rb-color-neutral-950: #262626; } :root { /* Core palette */ --rb-base: var(--rb-color-neutral-50); --rb-outline: var(--rb-color-neutral-500); --rb-input: var(--rb-color-neutral-800); --rb-text: var(--rb-color-neutral-950); --rb-ring: var(--rb-color-cyan-700); /* Container */ --rb-container-base: var(--rb-color-neutral-50); --rb-container-text: var(--rb-color-neutral-950); /* Semantic */ --rb-primary-base: var(--rb-color-cyan-200); --rb-primary-text: var(--rb-color-cyan-950); --rb-secondary-base: var(--rb-color-green-200); --rb-secondary-text: var(--rb-color-green-950); --rb-tertiary-base: var(--rb-color-violet-200); --rb-tertiary-text: var(--rb-color-violet-950); --rb-error-base: var(--rb-color-red-200); --rb-error-text: var(--rb-color-red-950); --rb-muted-base: var(--rb-color-neutral-300); --rb-muted-text: var(--rb-color-neutral-600); /* Charts */ --chart-1: var(--rb-color-blue-500); --chart-2: var(--rb-color-green-500); --chart-3: var(--rb-color-yellow-500); --chart-4: var(--rb-color-orange-500); --chart-5: var(--rb-color-red-500); /* Sidebar */ --sidebar: var(--rb-color-neutral-50); --sidebar-foreground: var(--rb-color-neutral-950); --sidebar-primary: var(--rb-color-cyan-200); --sidebar-primary-foreground: var(--rb-color-cyan-950); --sidebar-accent: var(--rb-color-violet-200); --sidebar-accent-foreground: var(--rb-color-violet-950); --sidebar-border: var(--rb-color-neutral-500); --sidebar-ring: var(--rb-color-cyan-700); /* Radii */ --radius: 0.625rem; } .dark { /* Core palette flips */ --rb-base: var(--rb-color-neutral-950); --rb-text: var(--rb-color-neutral-50); --rb-outline: var(--rb-color-neutral-500); --rb-input: var(--rb-color-neutral-300); --rb-ring: var(--rb-color-cyan-300); /* Container */ --rb-container-base: var(--rb-color-neutral-950); --rb-container-text: var(--rb-color-neutral-50); /* Semantic */ --rb-primary-base: var(--rb-color-cyan-800); --rb-primary-text: var(--rb-color-cyan-50); --rb-secondary-base: var(--rb-color-green-800); --rb-secondary-text: var(--rb-color-green-50); --rb-tertiary-base: var(--rb-color-violet-800); --rb-tertiary-text: var(--rb-color-violet-50); --rb-error-base: var(--rb-color-red-800); --rb-error-text: var(--rb-color-red-50); --rb-muted-base: var(--rb-color-neutral-600); --rb-muted-text: var(--rb-color-neutral-100); /* Charts */ --chart-1: var(--rb-color-blue-400); --chart-2: var(--rb-color-green-400); --chart-3: var(--rb-color-yellow-400); --chart-4: var(--rb-color-orange-400); --chart-5: var(--rb-color-red-400); /* Sidebar */ --sidebar: var(--rb-color-neutral-950); --sidebar-foreground: var(--rb-color-neutral-50); --sidebar-primary: var(--rb-color-cyan-800); --sidebar-primary-foreground: var(--rb-color-cyan-50); --sidebar-accent: var(--rb-color-violet-800); --sidebar-accent-foreground: var(--rb-color-violet-50); --sidebar-border: var(--rb-color-neutral-500); --sidebar-ring: var(--rb-color-cyan-700); } @utility vstack { @apply flex flex-col; } @utility hstack { @apply flex flex-row; } @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(--rb-base); --color-foreground: var(--rb-text); --color-card: var(--rb-container-base); --color-card-foreground: var(--rb-container-text); --color-popover: var(--rb-container-base); --color-popover-foreground: var(--rb-container-text); --color-primary: var(--rb-primary-base); --color-primary-foreground: var(--rb-primary-text); --color-secondary: var(--rb-secondary-base); --color-secondary-foreground: var(--rb-secondary-text); --color-accent: var(--rb-tertiary-base); --color-accent-foreground: var(--rb-tertiary-text); --color-destructive: var(--rb-error-base); --color-destructive-foreground: var(--rb-error-text); --color-muted: var(--rb-muted-base); --color-muted-foreground: var(--rb-muted-text); --color-border: var(--rb-outline); --color-input: var(--rb-input); --color-ring: var(--rb-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); } @layer base { * { @apply border-border outline-ring/50; } body { @apply bg-background text-foreground; } }