Files

279 lines
6.9 KiB
CSS

@import 'tailwindcss';
@theme {
/* Refined color system - Deep indigo theme */
--color-background: hsl(220 20% 97%);
--color-foreground: hsl(224 71% 4%);
--color-card: hsl(0 0% 100%);
--color-card-foreground: hsl(224 71% 4%);
--color-popover: hsl(0 0% 100%);
--color-popover-foreground: hsl(224 71% 4%);
/* Primary - Vibrant indigo */
--color-primary: #242424;
--color-primary-foreground: hsl(0 0% 100%);
/* Secondary */
--color-secondary: hsl(220 14% 96%);
--color-secondary-foreground: hsl(224 71% 4%);
/* Muted */
--color-muted: hsl(220 14% 96%);
--color-muted-foreground: hsl(220 9% 46%);
/* Accent */
--color-accent: hsl(220 14% 96%);
--color-accent-foreground: hsl(224 71% 4%);
/* Destructive */
--color-destructive: hsl(0 84% 60%);
--color-destructive-foreground: hsl(0 0% 100%);
/* Success */
--color-success: hsl(142 71% 45%);
--color-success-foreground: hsl(0 0% 100%);
/* Warning */
--color-warning: hsl(38 92% 50%);
--color-warning-foreground: hsl(0 0% 100%);
/* Info */
--color-info: hsl(199 89% 48%);
--color-info-foreground: hsl(0 0% 100%);
/* Border & Input */
--color-border: hsl(220 13% 91%);
--color-input: hsl(220 13% 91%);
/* Sidebar */
--color-sidebar: hsl(224 71% 4%);
--color-sidebar-foreground: hsl(210 20% 98%);
--color-sidebar-muted: hsl(220 17% 17%);
--color-sidebar-accent: hsl(234 89% 60%);
--radius: 0.625rem;
}
.dark {
--color-background: #0e0f11;
--color-foreground: hsl(210 20% 98%);
--color-card: #131416;
--color-card-foreground: hsl(210 20% 98%);
--color-popover: #0e0f11;
--color-popover-foreground: hsl(210 20% 98%);
--color-primary: #1c1e20;
--color-primary-foreground: hsl(0 0% 100%);
--color-secondary: #1c1e20;
--color-secondary-foreground: hsl(210 20% 98%);
--color-muted: #1c1e20;
--color-muted-foreground: hsl(220 9% 56%);
--color-accent: #191b1e;
--color-accent-foreground: hsl(210 20% 98%);
--color-destructive: hsl(0 72% 51%);
--color-destructive-foreground: hsl(0 0% 98%);
--color-success: hsl(142 71% 40%);
--color-success-foreground: hsl(0 0% 98%);
--color-warning: hsl(38 92% 45%);
--color-warning-foreground: hsl(0 0% 98%);
--color-info: hsl(199 89% 42%);
--color-info-foreground: hsl(0 0% 98%);
--color-border: #1c1d20;
--color-input: #1c1d20;
--color-sidebar: hsl(224 71% 3%);
--color-sidebar-foreground: hsl(210 20% 98%);
--color-sidebar-muted: hsl(224 30% 10%);
--color-sidebar-accent: #363738;
}
@layer base {
* {
@apply border-border;
}
html {
font-feature-settings: "cv02", "cv03", "cv04", "cv11";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
body {
@apply bg-background text-foreground antialiased;
font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
a,
button,
[role='button'],
label {
cursor: pointer;
}
h1, h2, h3, h4, h5, h6 {
font-weight: 600;
letter-spacing: -0.025em;
}
}
/* Scrollbar */
@layer utilities {
.scrollbar-thin {
scrollbar-width: thin;
scrollbar-color: hsl(220 9% 46% / 0.2) transparent;
}
.scrollbar-thin::-webkit-scrollbar {
width: 5px;
height: 5px;
}
.scrollbar-thin::-webkit-scrollbar-track {
background: transparent;
}
.scrollbar-thin::-webkit-scrollbar-thumb {
background: hsl(220 9% 46% / 0.2);
border-radius: 3px;
}
.scrollbar-thin::-webkit-scrollbar-thumb:hover {
background: hsl(220 9% 46% / 0.4);
}
/* Glass morphism */
.glass {
backdrop-filter: blur(16px) saturate(180%);
background: hsl(0 0% 100% / 0.75);
}
.dark .glass {
background: hsl(224 50% 8% / 0.75);
}
/* Soft shadow */
.shadow-soft {
box-shadow:
0 0 0 1px hsl(220 9% 46% / 0.04),
0 1px 2px hsl(220 9% 46% / 0.04),
0 4px 8px -2px hsl(220 9% 46% / 0.06);
}
.dark .shadow-soft {
box-shadow:
0 0 0 1px hsl(0 0% 100% / 0.03),
0 1px 2px hsl(0 0% 0% / 0.2),
0 4px 8px -2px hsl(0 0% 0% / 0.25);
}
/* Animate in */
.animate-in {
animation: animate-in 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes animate-in {
from {
opacity: 0;
transform: translateY(6px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Staggered animation children */
.stagger-children > * {
animation: animate-in 0.4s cubic-bezier(0.16, 1, 0.3, 1) both;
}
.stagger-children > *:nth-child(1) { animation-delay: 0ms; }
.stagger-children > *:nth-child(2) { animation-delay: 50ms; }
.stagger-children > *:nth-child(3) { animation-delay: 100ms; }
.stagger-children > *:nth-child(4) { animation-delay: 150ms; }
.stagger-children > *:nth-child(5) { animation-delay: 200ms; }
.stagger-children > *:nth-child(6) { animation-delay: 250ms; }
/* Hover lift */
.hover-lift {
transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s ease;
}
.hover-lift:hover {
transform: translateY(-2px);
box-shadow:
0 0 0 1px hsl(220 9% 46% / 0.04),
0 4px 12px hsl(220 9% 46% / 0.08),
0 12px 24px -4px hsl(220 9% 46% / 0.08);
}
.dark .hover-lift:hover {
box-shadow:
0 0 0 1px hsl(0 0% 100% / 0.03),
0 4px 12px hsl(0 0% 0% / 0.3),
0 12px 24px -4px hsl(0 0% 0% / 0.3);
}
/* Gradient mesh background for hero */
.gradient-mesh {
background:
radial-gradient(ellipse at 20% 50%, hsl(234 89% 60% / 0.08) 0%, transparent 50%),
radial-gradient(ellipse at 80% 20%, hsl(280 80% 60% / 0.06) 0%, transparent 50%),
radial-gradient(ellipse at 40% 80%, hsl(142 71% 45% / 0.05) 0%, transparent 50%);
}
.dark .gradient-mesh {
background:
radial-gradient(ellipse at 20% 50%, hsl(234 89% 60% / 0.12) 0%, transparent 50%),
radial-gradient(ellipse at 80% 20%, hsl(280 80% 60% / 0.08) 0%, transparent 50%),
radial-gradient(ellipse at 40% 80%, hsl(142 71% 45% / 0.06) 0%, transparent 50%);
}
/* Shimmer effect */
@keyframes shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
.shimmer {
background: linear-gradient(
90deg,
transparent 0%,
hsl(234 89% 60% / 0.06) 50%,
transparent 100%
);
background-size: 200% 100%;
animation: shimmer 3s ease-in-out infinite;
}
/* Pulse glow */
@keyframes pulse-glow {
0%, 100% { opacity: 0.4; }
50% { opacity: 0.8; }
}
.pulse-glow {
animation: pulse-glow 3s ease-in-out infinite;
}
/* Grid pattern for backgrounds */
.grid-pattern {
background-image: linear-gradient(hsl(220 9% 46% / 0.03) 1px, transparent 1px),
linear-gradient(90deg, hsl(220 9% 46% / 0.03) 1px, transparent 1px);
background-size: 32px 32px;
}
.dark .grid-pattern {
background-image: linear-gradient(hsl(0 0% 100% / 0.02) 1px, transparent 1px),
linear-gradient(90deg, hsl(0 0% 100% / 0.02) 1px, transparent 1px);
background-size: 32px 32px;
}
}