ninja-code-guard / dashboard /app /globals.css
NinjainPJs's picture
initial - commit
4b445f6
@import "tailwindcss";
:root {
--background: #050507;
--foreground: #f4f4f5;
--glass-bg: rgba(255, 255, 255, 0.03);
--glass-border: rgba(255, 255, 255, 0.06);
--glass-hover: rgba(255, 255, 255, 0.06);
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
}
body {
background: var(--background);
color: var(--foreground);
font-family: var(--font-sans, system-ui, -apple-system, sans-serif);
}
/* ─── Dot grid background ─── */
.dot-grid {
background-image: radial-gradient(circle, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
background-size: 32px 32px;
}
/* ─── Animated gradient orbs ─── */
.gradient-orb {
position: absolute;
border-radius: 50%;
filter: blur(120px);
opacity: 0.15;
pointer-events: none;
animation: orbFloat 20s ease-in-out infinite;
}
.gradient-orb-1 {
width: 600px;
height: 600px;
background: linear-gradient(135deg, #7c3aed, #6d28d9);
top: -200px;
right: -100px;
animation-delay: 0s;
}
.gradient-orb-2 {
width: 500px;
height: 500px;
background: linear-gradient(135deg, #06b6d4, #0891b2);
bottom: -150px;
left: -100px;
animation-delay: -7s;
}
.gradient-orb-3 {
width: 400px;
height: 400px;
background: linear-gradient(135deg, #ec4899, #be185d);
top: 40%;
left: 50%;
animation-delay: -14s;
}
@keyframes orbFloat {
0%, 100% { transform: translate(0, 0) scale(1); }
25% { transform: translate(30px, -40px) scale(1.05); }
50% { transform: translate(-20px, 20px) scale(0.95); }
75% { transform: translate(40px, 30px) scale(1.03); }
}
/* ─── Glass card ─── */
.glass {
background: var(--glass-bg);
border: 1px solid var(--glass-border);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
}
.glass-hover:hover {
background: var(--glass-hover);
border-color: rgba(255, 255, 255, 0.1);
}
/* ─── Glow effects ─── */
.glow-violet { box-shadow: 0 0 40px -10px rgba(139, 92, 246, 0.3); }
.glow-green { box-shadow: 0 0 40px -10px rgba(34, 197, 94, 0.3); }
.glow-red { box-shadow: 0 0 40px -10px rgba(239, 68, 68, 0.3); }
.glow-amber { box-shadow: 0 0 40px -10px rgba(245, 158, 11, 0.3); }
/* ─── Gradient text ─── */
.text-gradient {
background: linear-gradient(135deg, #c4b5fd 0%, #818cf8 50%, #6d28d9 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.text-gradient-cyan {
background: linear-gradient(135deg, #67e8f9 0%, #22d3ee 50%, #06b6d4 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* ─── Shimmer border animation ─── */
@keyframes shimmer {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
.shimmer-border {
background: linear-gradient(
90deg,
transparent 0%,
rgba(139, 92, 246, 0.15) 25%,
rgba(6, 182, 212, 0.15) 50%,
rgba(139, 92, 246, 0.15) 75%,
transparent 100%
);
background-size: 200% 100%;
animation: shimmer 6s ease-in-out infinite;
}
/* ─── Scrollbar ─── */
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: rgba(113, 113, 122, 0.3);
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: rgba(113, 113, 122, 0.5);
}
/* ─── Noise texture overlay ─── */
.noise::before {
content: "";
position: fixed;
inset: 0;
z-index: 100;
pointer-events: none;
opacity: 0.015;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}