219 lines
4.1 KiB
CSS
219 lines
4.1 KiB
CSS
@import "tailwindcss";
|
|
|
|
@theme {
|
|
--font-sans: var(--font-inter), var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
|
--font-mono: var(--font-geist-mono);
|
|
|
|
/* Custom color tokens */
|
|
--color-brand-50: #f0f4ff;
|
|
--color-brand-100: #e0e9ff;
|
|
--color-brand-500: #6366f1;
|
|
--color-brand-600: #4f46e5;
|
|
--color-brand-700: #4338ca;
|
|
|
|
--color-surface-0: #0a0a0f;
|
|
--color-surface-1: #111118;
|
|
--color-surface-2: #16161f;
|
|
--color-surface-3: #1e1e2a;
|
|
--color-surface-4: #252535;
|
|
|
|
--color-border-subtle: rgba(255, 255, 255, 0.06);
|
|
--color-border-default: rgba(255, 255, 255, 0.10);
|
|
--color-border-strong: rgba(255, 255, 255, 0.16);
|
|
}
|
|
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html {
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
body {
|
|
background-color: #0a0a0f;
|
|
color: #e4e4f0;
|
|
font-family: var(--font-inter), var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
/* Custom scrollbar */
|
|
::-webkit-scrollbar {
|
|
width: 6px;
|
|
height: 6px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: rgba(255, 255, 255, 0.12);
|
|
border-radius: 3px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
}
|
|
|
|
/* Glass card effect */
|
|
.glass {
|
|
background: rgba(22, 22, 31, 0.8);
|
|
backdrop-filter: blur(20px);
|
|
-webkit-backdrop-filter: blur(20px);
|
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
}
|
|
|
|
.glass-hover {
|
|
transition: background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.glass-hover:hover {
|
|
background: rgba(30, 30, 42, 0.9);
|
|
border-color: rgba(255, 255, 255, 0.14);
|
|
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
/* Gradient text */
|
|
.gradient-text {
|
|
background: linear-gradient(135deg, #a78bfa 0%, #818cf8 50%, #38bdf8 100%);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
/* Glow effects */
|
|
.glow-purple {
|
|
box-shadow: 0 0 20px rgba(139, 92, 246, 0.3), 0 0 60px rgba(139, 92, 246, 0.1);
|
|
}
|
|
|
|
.glow-blue {
|
|
box-shadow: 0 0 20px rgba(59, 130, 246, 0.3), 0 0 60px rgba(59, 130, 246, 0.1);
|
|
}
|
|
|
|
/* Subtle animated gradient background */
|
|
@keyframes gradient-shift {
|
|
|
|
0%,
|
|
100% {
|
|
background-position: 0% 50%;
|
|
}
|
|
|
|
50% {
|
|
background-position: 100% 50%;
|
|
}
|
|
}
|
|
|
|
.animated-gradient {
|
|
background: linear-gradient(-45deg, #0a0a0f, #0f0f1a, #0a0f1f, #0a0a0f);
|
|
background-size: 400% 400%;
|
|
animation: gradient-shift 15s ease infinite;
|
|
}
|
|
|
|
/* Pulse dot animation */
|
|
@keyframes pulse-dot {
|
|
|
|
0%,
|
|
100% {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
|
|
50% {
|
|
opacity: 0.6;
|
|
transform: scale(0.85);
|
|
}
|
|
}
|
|
|
|
.pulse-dot {
|
|
animation: pulse-dot 2s ease-in-out infinite;
|
|
}
|
|
|
|
/* Fade in animations */
|
|
@keyframes fade-in-up {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(12px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
.animate-fade-in-up {
|
|
animation: fade-in-up 0.4s ease forwards;
|
|
}
|
|
|
|
/* Shine effect */
|
|
@keyframes shine {
|
|
from {
|
|
transform: translateX(-100%) skewX(-12deg);
|
|
}
|
|
|
|
to {
|
|
transform: translateX(200%) skewX(-12deg);
|
|
}
|
|
}
|
|
|
|
.shine-effect::after {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.04), transparent);
|
|
animation: shine 3s ease-in-out infinite;
|
|
}
|
|
|
|
/* Number counter animation */
|
|
@keyframes count-up {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(8px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
.stat-value {
|
|
animation: count-up 0.5s ease forwards;
|
|
}
|
|
|
|
/* Sidebar active glow */
|
|
.nav-active {
|
|
background: linear-gradient(135deg, rgba(99, 102, 241, 0.2), rgba(139, 92, 246, 0.15));
|
|
border: 1px solid rgba(99, 102, 241, 0.3);
|
|
color: #a78bfa;
|
|
box-shadow: 0 0 20px rgba(99, 102, 241, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.06);
|
|
}
|
|
|
|
/* Focus ring */
|
|
*:focus-visible {
|
|
outline: 2px solid rgba(99, 102, 241, 0.6);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
/* Input styles */
|
|
input::placeholder {
|
|
color: rgba(255, 255, 255, 0.25);
|
|
}
|
|
|
|
/* Status badge animation */
|
|
@keyframes status-pulse {
|
|
|
|
0%,
|
|
100% {
|
|
box-shadow: 0 0 0 0 currentColor;
|
|
}
|
|
|
|
50% {
|
|
box-shadow: 0 0 0 4px transparent;
|
|
}
|
|
} |