fe52916d84
- globals.css: add blob keyframe animation (9s ease-in-out infinite) - layout.tsx: add fixed background layer with 24px grid pattern and two animated blurred blobs (primary/5 color) that drift behind all content - Navigation.tsx: bg-background/80 + backdrop-blur-md + border-border/50 - Sidebar.tsx: same glassmorphism treatment - card.tsx: rounded-2xl (up from rounded-lg), bg-card/80 + backdrop-blur-sm so the blob color bleeds subtly through card surfaces Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
130 lines
3.6 KiB
CSS
130 lines
3.6 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@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; }
|
|
}
|
|
@keyframes collapsible-down {
|
|
from { height: 0; }
|
|
to { height: var(--radix-collapsible-content-height); }
|
|
}
|
|
@keyframes collapsible-up {
|
|
from { height: var(--radix-collapsible-content-height); }
|
|
to { height: 0; }
|
|
}
|
|
@keyframes slide-in-from-left {
|
|
from { transform: translateX(-100%); }
|
|
}
|
|
@keyframes slide-in-from-right {
|
|
from { transform: translateX(100%); }
|
|
}
|
|
@keyframes slide-in-from-top {
|
|
from { transform: translateY(-100%); }
|
|
}
|
|
@keyframes slide-in-from-bottom {
|
|
from { transform: translateY(100%); }
|
|
}
|
|
@keyframes slide-out-to-left {
|
|
to { transform: translateX(-100%); }
|
|
}
|
|
@keyframes slide-out-to-right {
|
|
to { transform: translateX(100%); }
|
|
}
|
|
@keyframes slide-out-to-top {
|
|
to { transform: translateY(-100%); }
|
|
}
|
|
@keyframes slide-out-to-bottom {
|
|
to { transform: translateY(100%); }
|
|
}
|
|
|
|
@layer base {
|
|
:root {
|
|
--background: 0 0% 100%;
|
|
--foreground: 222.2 84% 4.9%;
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 222.2 84% 4.9%;
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 222.2 84% 4.9%;
|
|
--primary: 222.2 47.4% 11.2%;
|
|
--primary-foreground: 210 40% 98%;
|
|
--secondary: 210 40% 96.1%;
|
|
--secondary-foreground: 222.2 47.4% 11.2%;
|
|
--muted: 210 40% 96.1%;
|
|
--muted-foreground: 215.4 16.3% 46.9%;
|
|
--accent: 210 40% 96.1%;
|
|
--accent-foreground: 222.2 47.4% 11.2%;
|
|
--destructive: 0 84.2% 60.2%;
|
|
--destructive-foreground: 210 40% 98%;
|
|
--border: 214.3 31.8% 91.4%;
|
|
--input: 214.3 31.8% 91.4%;
|
|
--ring: 222.2 84% 4.9%;
|
|
--radius: 0.625rem;
|
|
--chart-1: 222.2 47.4% 11.2%;
|
|
--chart-2: 210 40% 44%;
|
|
--chart-3: 210 40% 57.6%;
|
|
--chart-4: 182 40% 76.5%;
|
|
--chart-5: 340 75% 55%;
|
|
}
|
|
|
|
.dark {
|
|
--background: 222.2 84% 4.9%;
|
|
--foreground: 210 40% 98%;
|
|
--card: 222.2 84% 4.9%;
|
|
--card-foreground: 210 40% 98%;
|
|
--popover: 222.2 84% 4.9%;
|
|
--popover-foreground: 210 40% 98%;
|
|
--primary: 210 40% 98%;
|
|
--primary-foreground: 222.2 47.4% 11.2%;
|
|
--secondary: 217.2 32.6% 17.5%;
|
|
--secondary-foreground: 210 40% 98%;
|
|
--muted: 217.2 32.6% 17.5%;
|
|
--muted-foreground: 215 20.2% 65.1%;
|
|
--accent: 217.2 32.6% 17.5%;
|
|
--accent-foreground: 210 40% 98%;
|
|
--destructive: 0 62.8% 30.6%;
|
|
--destructive-foreground: 210 40% 98%;
|
|
--border: 217.2 32.6% 17.5%;
|
|
--input: 217.2 32.6% 17.5%;
|
|
--ring: 212.9 100% 50%;
|
|
--chart-1: 217.2 91.2% 59%;
|
|
--chart-2: 160 84% 39%;
|
|
--chart-3: 30 80% 50%;
|
|
--chart-4: 280 65% 60%;
|
|
--chart-5: 340 75% 55%;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border outline-ring/50;
|
|
}
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
}
|
|
}
|
|
|
|
@keyframes fade-in-up {
|
|
from { opacity: 0; transform: translateY(10px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
.animate-fade-in-up { animation: fade-in-up 0.5s ease-out both; }
|
|
.animate-fade-in-up-delay-1 { animation: fade-in-up 0.5s ease-out 0.1s both; }
|
|
.animate-fade-in-up-delay-2 { animation: fade-in-up 0.5s ease-out 0.2s both; }
|
|
.animate-fade-in-up-delay-3 { animation: fade-in-up 0.5s ease-out 0.3s both; }
|
|
.animate-fade-in-up-delay-4 { animation: fade-in-up 0.5s ease-out 0.4s both; }
|
|
|
|
@keyframes blob {
|
|
0%, 100% { transform: scale(1) translate(0px, 0px); }
|
|
25% { transform: scale(1.08) translate(40px, -30px); }
|
|
50% { transform: scale(0.94) translate(-25px, 50px); }
|
|
75% { transform: scale(1.04) translate(35px, 30px); }
|
|
}
|
|
|
|
.animate-blob { animation: blob 9s ease-in-out infinite; } |