9a306b1d59
* feat: migrate workspace to Tailwind CSS v4 * refactor: move Tailwind v4 setup to CSS directives
262 lines
6.6 KiB
CSS
262 lines
6.6 KiB
CSS
@custom-variant dark (&:is(.dark *));
|
|
|
|
@plugin "tailwindcss-animate";
|
|
|
|
@theme inline {
|
|
--font-sans:
|
|
Inter, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
|
|
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
--font-mono:
|
|
"JetBrains Mono", Menlo, ui-monospace, SFMono-Regular, Monaco, Consolas,
|
|
"Liberation Mono", "Courier New", monospace;
|
|
|
|
--color-border: hsl(var(--border));
|
|
--color-input: hsl(var(--input));
|
|
--color-ring: hsl(var(--ring));
|
|
--color-background: hsl(var(--background));
|
|
--color-foreground: hsl(var(--foreground));
|
|
--color-primary: hsl(var(--primary));
|
|
--color-primary-foreground: hsl(var(--primary-foreground));
|
|
--color-secondary: hsl(var(--secondary));
|
|
--color-secondary-foreground: hsl(var(--secondary-foreground));
|
|
--color-destructive: hsl(var(--destructive));
|
|
--color-destructive-foreground: hsl(var(--destructive-foreground));
|
|
--color-muted: hsl(var(--muted));
|
|
--color-muted-foreground: hsl(var(--muted-foreground));
|
|
--color-accent: hsl(var(--accent));
|
|
--color-accent-foreground: hsl(var(--accent-foreground));
|
|
--color-popover: hsl(var(--popover));
|
|
--color-popover-foreground: hsl(var(--popover-foreground));
|
|
--color-card: hsl(var(--card));
|
|
--color-card-foreground: hsl(var(--card-foreground));
|
|
--color-sidebar: hsl(var(--sidebar-background));
|
|
--color-sidebar-foreground: hsl(var(--sidebar-foreground));
|
|
--color-sidebar-primary: hsl(var(--sidebar-primary));
|
|
--color-sidebar-primary-foreground: hsl(var(--sidebar-primary-foreground));
|
|
--color-sidebar-accent: hsl(var(--sidebar-accent));
|
|
--color-sidebar-accent-foreground: hsl(var(--sidebar-accent-foreground));
|
|
--color-sidebar-border: hsl(var(--sidebar-border));
|
|
--color-sidebar-ring: hsl(var(--sidebar-ring));
|
|
--color-success: hsl(var(--success));
|
|
--color-success-foreground: hsl(var(--success-foreground));
|
|
--color-warning: hsl(var(--warning));
|
|
--color-warning-foreground: hsl(var(--warning-foreground));
|
|
--color-green: hsl(var(--green));
|
|
--color-red: hsl(var(--red));
|
|
--color-blue: hsl(var(--blue));
|
|
--color-purple: hsl(var(--purple));
|
|
--color-yellow: hsl(var(--yellow));
|
|
--color-gray: hsl(var(--gray));
|
|
--color-primary-light: hsl(var(--primary-light));
|
|
|
|
--radius-sm: calc(var(--radius) - 4px);
|
|
--radius-md: calc(var(--radius) - 2px);
|
|
--radius-lg: var(--radius);
|
|
|
|
--animate-accordion-down: accordion-down 0.4s ease-out;
|
|
--animate-accordion-up: accordion-up 0.4s ease-out;
|
|
}
|
|
|
|
@keyframes accordion-down {
|
|
from {
|
|
height: 0;
|
|
}
|
|
|
|
to {
|
|
height: var(--radix-accordion-content-height);
|
|
}
|
|
}
|
|
|
|
@keyframes accordion-up {
|
|
from {
|
|
height: var(--radix-accordion-content-height);
|
|
}
|
|
|
|
to {
|
|
height: 0;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
:root,
|
|
.light {
|
|
--background: 220 2% 96%;
|
|
--foreground: 234 16% 35%;
|
|
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 234 16% 35%;
|
|
|
|
--popover: 220 2% 96%;
|
|
--popover-foreground: 234 16% 35%;
|
|
|
|
--primary: 167 34% 20%;
|
|
--primary-foreground: 210 40% 98%;
|
|
|
|
--secondary: 210 40% 96.1%;
|
|
--secondary-foreground: 222.2 47.4% 11.2%;
|
|
|
|
--muted: 240 11% 88%;
|
|
--muted-foreground: 215.4 16.3% 46.9%;
|
|
|
|
--accent: 240 11% 88%;
|
|
--accent-foreground: 222.2 47.4% 11.2%;
|
|
|
|
--destructive: 347 62% 55%;
|
|
--destructive-foreground: 210 40% 98%;
|
|
|
|
--warning: 35 77% 49%;
|
|
--warning-foreground: 210 40% 98%;
|
|
|
|
--success: 142 49% 44%;
|
|
--success-foreground: 210 40% 98%;
|
|
|
|
--border: 220 21% 89%;
|
|
--input: 214.3 31.8% 91.4%;
|
|
--ring: 222.2 84% 4.9%;
|
|
|
|
--radius: 0.5rem;
|
|
|
|
--chart-1: 12 76% 61%;
|
|
--chart-2: 173 58% 39%;
|
|
--chart-3: 197 37% 24%;
|
|
--chart-4: 43 74% 66%;
|
|
--chart-5: 27 87% 67%;
|
|
|
|
--sidebar-background: 225 3% 94%;
|
|
--sidebar-foreground: 240 5.3% 26.1%;
|
|
--sidebar-primary: 240 5.9% 10%;
|
|
--sidebar-primary-foreground: 0 0% 98%;
|
|
--sidebar-accent: 240 11% 88%;
|
|
--sidebar-accent-foreground: 240 5.9% 10%;
|
|
--sidebar-border: 240 11% 88%;
|
|
--sidebar-ring: 217.2 91.2% 59.8%;
|
|
|
|
/* Status Colors */
|
|
--green: 109 58% 40%;
|
|
--red: 347 87% 44%;
|
|
--blue: 197 97% 46%;
|
|
--purple: 266 85% 58%;
|
|
--yellow: 35 77% 49%;
|
|
--gray: 220 9% 46%;
|
|
--primary-light: 183 74% 35%;
|
|
}
|
|
|
|
.dark {
|
|
--background: 240 21% 12%;
|
|
--foreground: 226 64% 88%;
|
|
|
|
--card: 222.2 84% 4.9%;
|
|
--card-foreground: 226 64% 88%;
|
|
|
|
--popover: 240 21% 15%;
|
|
--popover-foreground: 226 64% 88%;
|
|
|
|
--primary: 167 64% 94%;
|
|
--primary-foreground: 240 23% 9%;
|
|
|
|
--secondary: 217.2 32.6% 17.5%;
|
|
--secondary-foreground: 210 40% 98%;
|
|
|
|
--muted: 237 16% 23%;
|
|
--muted-foreground: 215 20.2% 65.1%;
|
|
|
|
--accent: 237 16% 23%;
|
|
--accent-foreground: 210 40% 98%;
|
|
|
|
--destructive: 343 81% 75%;
|
|
--destructive-foreground: 240 21% 15%;
|
|
|
|
--success: 115 54% 76%;
|
|
--success-foreground: 210 40% 98%;
|
|
|
|
--warning: 41 86% 83%;
|
|
--warning-foreground: 210 40% 98%;
|
|
|
|
--border: 237 16% 23%;
|
|
--input: 217.2 32.6% 17.5%;
|
|
--ring: 217.2 32.6% 17.5%;
|
|
|
|
--chart-1: 220 70% 50%;
|
|
--chart-2: 160 60% 45%;
|
|
--chart-3: 30 80% 55%;
|
|
--chart-4: 280 65% 60%;
|
|
--chart-5: 340 75% 55%;
|
|
|
|
--sidebar-background: 240 23% 9%;
|
|
--sidebar-foreground: 226 64% 88%;
|
|
--sidebar-primary: 224.3 76.3% 48%;
|
|
--sidebar-primary-foreground: 0 0% 100%;
|
|
--sidebar-accent: 237 17% 20%;
|
|
--sidebar-accent-foreground: 240 4.8% 95.9%;
|
|
--sidebar-border: 240 21% 15%;
|
|
--sidebar-ring: 217.2 91.2% 59.8%;
|
|
|
|
/* Status Colors - Dark Mode */
|
|
--green: 115 54% 76%;
|
|
--red: 343 81% 75%;
|
|
--blue: 212 96% 78%;
|
|
--purple: 267 84% 81%;
|
|
--yellow: 41 86% 83%;
|
|
--gray: 218 11% 65%;
|
|
--primary-light: 170 57% 73%;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
body {
|
|
@apply bg-background text-foreground h-full;
|
|
}
|
|
html {
|
|
@apply h-full;
|
|
}
|
|
}
|
|
|
|
/* Prevent italic styling in Shiki code blocks */
|
|
.shiki,
|
|
.shiki span {
|
|
font-style: normal !important;
|
|
}
|
|
|
|
.dark .shiki,
|
|
.dark .shiki span {
|
|
color: var(--shiki-dark) !important;
|
|
background-color: var(--shiki-dark-bg) !important;
|
|
/* Optional, if you also want font styles */
|
|
font-weight: var(--shiki-dark-font-weight) !important;
|
|
text-decoration: var(--shiki-dark-text-decoration) !important;
|
|
}
|
|
|
|
@layer utilities {
|
|
.container {
|
|
margin-inline: auto;
|
|
padding-inline: 2rem;
|
|
}
|
|
|
|
@media (min-width: 1400px) {
|
|
.container {
|
|
max-width: 1400px;
|
|
}
|
|
}
|
|
|
|
/* Hide scrollbars but preserve scroll behavior */
|
|
.no-scrollbar::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
.no-scrollbar {
|
|
-ms-overflow-style: none;
|
|
scrollbar-width: none;
|
|
}
|
|
}
|
|
|
|
/* .app,
|
|
::before,
|
|
::after {
|
|
@apply border-border;
|
|
box-sizing: border-box;
|
|
border-width: 0;
|
|
border-style: solid;
|
|
} */
|