Files
pulse/styles/globals.css
Usman Baig 1c7667562c feat: replace Recharts dashboard chart with visx area chart
Integrated 21st.dev AreaChart component with animated crosshair,
spring-based tooltip, and date ticker. Uses brand orange for the
line/fill with dark-only CSS variables.
2026-03-21 22:39:51 +01:00

91 lines
2.0 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
/* * Semantic colors */
--color-success: #10B981;
--color-warning: #F59E0B;
--color-error: #EF4444;
/* * Chart colors */
--chart-1: #FD5E0F;
--chart-2: #60a5fa;
--chart-3: #4ade80;
--chart-4: #c084fc;
--chart-5: #fbbf24;
--chart-grid: #262626;
--chart-axis: #737373;
/* * visx area chart tokens (dark-only) */
--chart-background: #0a0a0a;
--chart-foreground: #404040;
--chart-foreground-muted: #a3a3a3;
--chart-line-primary: #FD5E0F;
--chart-line-secondary: #737373;
--chart-crosshair: #404040;
--chart-label: #a3a3a3;
--chart-marker-background: #262626;
--chart-marker-border: #404040;
--chart-marker-foreground: #fafafa;
/* * shadcn-compatible semantic tokens (dark-only) */
--background: 10 10 10;
--foreground: 250 250 250;
--card: 23 23 23;
--card-foreground: 250 250 250;
--popover: 23 23 23;
--popover-foreground: 250 250 250;
--primary: 253 94 15;
--primary-foreground: 255 255 255;
--secondary: 38 38 38;
--secondary-foreground: 250 250 250;
--accent: 38 38 38;
--accent-foreground: 250 250 250;
--destructive-foreground: 255 255 255;
}
body {
@apply bg-neutral-950 text-neutral-100 antialiased;
}
}
@layer utilities {
/* * 3D Transform Utilities - Pulse-specific */
.perspective-1000 {
perspective: 1000px;
}
.rotate-x-12 {
transform: rotateX(12deg);
}
.rotate-x-0 {
transform: rotateX(0deg);
}
.transform-style-3d {
transform-style: preserve-3d;
}
/* * Scrollbar hide - for horizontal scroll navs */
.scrollbar-hide {
-ms-overflow-style: none;
scrollbar-width: none;
}
.scrollbar-hide::-webkit-scrollbar {
display: none;
}
/* * Animations */
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-20px); }
}
.animate-float {
animation: float 6s ease-in-out infinite;
}
}