Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350@import "tailwindcss";@import "tw-animate-css";@plugin "@tailwindcss/typography";
@custom-variant dark (&:is(.dark *));
body { @apply m-0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}
:root { /* Core palette - Light mode */ --background: oklch(1 0 0); --foreground: oklch(0.145 0.008 326);
/* Card and elevated surfaces */ --card: oklch(1 0 0); --card-foreground: oklch(0.145 0.008 326); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0.008 326);
/* Primary - Crimson */ --primary: oklch(0.525 0.223 3.958); --primary-foreground: oklch(0.971 0.014 343.198);
/* Secondary - Cool gray */ --secondary: oklch(0.967 0.001 286.375); --secondary-foreground: oklch(0.21 0.006 285.885);
/* Muted surfaces */ --muted: oklch(0.96 0.003 325.6); --muted-foreground: oklch(0.542 0.034 322.5);
/* Accent */ --accent: oklch(0.96 0.003 325.6); --accent-foreground: oklch(0.212 0.019 322.12);
/* Destructive */ --destructive: oklch(0.577 0.245 27.325); --destructive-foreground: oklch(0.985 0 0);
/* Borders */ --border: oklch(0.922 0.005 325.62); --input: oklch(0.922 0.005 325.62); --ring: oklch(0.711 0.019 323.02);
/* Charts - Crimson gradient */ --chart-1: oklch(0.823 0.12 346.018); --chart-2: oklch(0.656 0.241 354.308); --chart-3: oklch(0.592 0.249 0.584); --chart-4: oklch(0.525 0.223 3.958); --chart-5: oklch(0.459 0.187 3.815);
/* Semantic feedback colors */ --success: oklch(0.62 0.14 150); --success-foreground: oklch(1 0 0); --warning: oklch(0.75 0.15 75); --warning-foreground: oklch(0.2 0.01 65); --info: oklch(0.6 0.12 250); --info-foreground: oklch(1 0 0);
/* Edge colors */ --edge-correct: var(--success); --edge-excessive: oklch(0.6 0.1 240); --edge-missing: oklch(0.55 0.18 25); --edge-neutral: oklch(0.55 0.03 300);
/* Sidebar */ --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0.008 326); --sidebar-primary: oklch(0.592 0.249 0.584); --sidebar-primary-foreground: oklch(0.971 0.014 343.198); --sidebar-accent: oklch(0.96 0.003 325.6); --sidebar-accent-foreground: oklch(0.212 0.019 322.12); --sidebar-border: oklch(0.922 0.005 325.62); --sidebar-ring: oklch(0.711 0.019 323.02);
/* Typography */ --font-sans: "Geist", ui-sans-serif, sans-serif, system-ui; --font-serif: Lora, ui-serif, serif; --font-mono: "IBM Plex Mono", ui-monospace, monospace; --font-heading: "Space Grotesk Variable", ui-sans-serif, sans-serif, system-ui; --font-body: "Geist", ui-sans-serif, sans-serif, system-ui;
/* Radius */ --radius: 0;
/* Shadows */ --shadow-x: 0px; --shadow-y: 4px; --shadow-blur: 12px; --shadow-spread: -2px; --shadow-opacity: 0.06; --shadow-color: oklch(0.145 0.008 326 / 0.08); --shadow-2xs: 0px 4px 12px -2px oklch(0.145 0.008 326 / 0.03); --shadow-xs: 0px 4px 12px -2px oklch(0.145 0.008 326 / 0.03); --shadow-sm: 0px 4px 12px -2px oklch(0.145 0.008 326 / 0.06), 0px 1px 2px -2px oklch(0.145 0.008 326 / 0.06); --shadow: 0px 4px 12px -2px oklch(0.145 0.008 326 / 0.06), 0px 1px 2px -2px oklch(0.145 0.008 326 / 0.06); --shadow-md: 0px 4px 12px -2px oklch(0.145 0.008 326 / 0.06), 0px 2px 4px -2px oklch(0.145 0.008 326 / 0.06); --shadow-lg: 0px 4px 12px -2px oklch(0.145 0.008 326 / 0.06), 0px 4px 6px -2px oklch(0.145 0.008 326 / 0.06); --shadow-xl: 0px 4px 12px -2px oklch(0.145 0.008 326 / 0.06), 0px 8px 10px -2px oklch(0.145 0.008 326 / 0.06); --shadow-2xl: 0px 4px 12px -2px oklch(0.145 0.008 326 / 0.12);
--tracking-normal: 0em; --spacing: 0.25rem;}
.dark { /* Core palette - Dark mode */ --background: oklch(0.145 0.008 326); --foreground: oklch(0.985 0 0);
/* Card and elevated surfaces */ --card: oklch(0.212 0.019 322.12); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.212 0.019 322.12); --popover-foreground: oklch(0.985 0 0);
/* Primary - Crimson */ --primary: oklch(0.459 0.187 3.815); --primary-foreground: oklch(0.971 0.014 343.198);
/* Secondary */ --secondary: oklch(0.274 0.006 286.033); --secondary-foreground: oklch(0.985 0 0);
/* Muted surfaces */ --muted: oklch(0.263 0.024 320.12); --muted-foreground: oklch(0.711 0.019 323.02);
/* Accent */ --accent: oklch(0.263 0.024 320.12); --accent-foreground: oklch(0.985 0 0);
/* Destructive */ --destructive: oklch(0.704 0.191 22.216); --destructive-foreground: oklch(0.985 0 0);
/* Borders */ --border: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 15%); --ring: oklch(0.542 0.034 322.5);
/* Charts - Crimson gradient */ --chart-1: oklch(0.823 0.12 346.018); --chart-2: oklch(0.656 0.241 354.308); --chart-3: oklch(0.592 0.249 0.584); --chart-4: oklch(0.525 0.223 3.958); --chart-5: oklch(0.459 0.187 3.815);
/* Semantic feedback colors */ --success: oklch(0.68 0.12 150); --success-foreground: oklch(1 0 0); --warning: oklch(0.7 0.15 75); --warning-foreground: oklch(0.985 0 0); --info: oklch(0.65 0.1 250); --info-foreground: oklch(1 0 0);
/* Edge colors */ --edge-correct: var(--success); --edge-excessive: oklch(0.65 0.08 240); --edge-missing: oklch(0.62 0.15 25); --edge-neutral: oklch(0.6 0.03 300);
/* Sidebar */ --sidebar: oklch(0.212 0.019 322.12); --sidebar-foreground: oklch(0.985 0 0); --sidebar-primary: oklch(0.656 0.241 354.308); --sidebar-primary-foreground: oklch(0.971 0.014 343.198); --sidebar-accent: oklch(0.263 0.024 320.12); --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(1 0 0 / 10%); --sidebar-ring: oklch(0.542 0.034 322.5);
/* Typography */ --font-sans: "Geist", ui-sans-serif, sans-serif, system-ui; --font-serif: Lora, ui-serif, serif; --font-mono: "IBM Plex Mono", ui-monospace, monospace; --font-heading: "Space Grotesk Variable", ui-sans-serif, sans-serif, system-ui; --font-body: "Geist", ui-sans-serif, sans-serif, system-ui;
/* Radius */ --radius: 0;
/* Shadows */ --shadow-x: 0px; --shadow-y: 4px; --shadow-blur: 12px; --shadow-spread: -2px; --shadow-opacity: 0.12; --shadow-color: oklch(0 0 0 / 0.3); --shadow-2xs: 0px 4px 12px -2px oklch(0 0 0 / 0.15); --shadow-xs: 0px 4px 12px -2px oklch(0 0 0 / 0.15); --shadow-sm: 0px 4px 12px -2px oklch(0 0 0 / 0.3), 0px 1px 2px -2px oklch(0 0 0 / 0.3); --shadow: 0px 4px 12px -2px oklch(0 0 0 / 0.3), 0px 1px 2px -2px oklch(0 0 0 / 0.3); --shadow-md: 0px 4px 12px -2px oklch(0 0 0 / 0.3), 0px 2px 4px -2px oklch(0 0 0 / 0.3); --shadow-lg: 0px 4px 12px -2px oklch(0 0 0 / 0.3), 0px 4px 6px -2px oklch(0 0 0 / 0.3); --shadow-xl: 0px 4px 12px -2px oklch(0 0 0 / 0.3), 0px 8px 10px -2px oklch(0 0 0 / 0.3); --shadow-2xl: 0px 4px 12px -2px oklch(0 0 0 / 0.5);}
@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-success: var(--success); --color-success-foreground: var(--success-foreground); --color-warning: var(--warning); --color-warning-foreground: var(--warning-foreground); --color-info: var(--info); --color-info-foreground: var(--info-foreground);
--color-edge-correct: var(--edge-correct); --color-edge-excessive: var(--edge-excessive); --color-edge-missing: var(--edge-missing); --color-edge-neutral: var(--edge-neutral); --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-sans); --font-mono: var(--font-mono); --font-serif: var(--font-serif); --font-heading: var(--font-heading); --font-body: var(--font-body);
--radius-sm: 0; --radius-md: 0; --radius-lg: 0; --radius-xl: 0;
--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-slide-up: slide-up 0.25s ease-out;}
@layer base { * { @apply border-border outline-ring/25; }
body { @apply bg-background text-foreground; }}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }}
@layer utilities { .interactive { @apply transition-transform duration-75 active:scale-[0.98]; }
.interactive-sm { @apply transition-transform duration-75 active:scale-[0.97]; }}
@keyframes slide-up { from { transform: translateY(100%); } to { transform: translateY(0); }}
.edge-pulse { animation: edge-pulse 2s ease-in-out infinite;}
@keyframes edge-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; }}
.react-flow__renderer,.react-flow__viewport { will-change: transform;}
@keyframes slide-up { from { transform: translateY(100%); } to { transform: translateY(0); }}