@import "tailwindcss"; @theme { --color-background: #09090b; /* near-black dark gray */ --color-surface: #18181b; /* slightly lighter dark gray */ --color-primary: #10b981; --color-success: #10b981; --color-warning: #f59e0b; --color-danger: #ef4444; } @layer base { body { @apply bg-background text-zinc-300 overflow-x-hidden; font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; } } @layer components { .soc-card { @apply bg-surface/95 border border-zinc-800/90 rounded-xl shadow-sm overflow-hidden backdrop-blur-lg transition-all duration-300; } .soc-card-interactive { @apply bg-surface/95 border border-zinc-800/90 rounded-xl shadow-sm overflow-hidden backdrop-blur-lg transition-all duration-300 hover:border-zinc-600 hover:shadow-lg hover:shadow-primary/10 hover:-translate-y-0.5 relative; } /* Add a subtle top-border glow on interactive cards when hovered */ .soc-card-interactive::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(16, 185, 129, 0.5), transparent); opacity: 0; transition: opacity 0.3s ease; } .soc-card-interactive:hover::before { opacity: 1; } .soc-panel { @apply bg-zinc-900/50 border border-zinc-800/60 rounded-lg overflow-hidden; } .glass-panel { @apply bg-zinc-950/60 backdrop-blur-md border border-zinc-800/50 rounded-lg; } .custom-scrollbar::-webkit-scrollbar { width: 4px; } .custom-scrollbar::-webkit-scrollbar-track { background: transparent; } .custom-scrollbar::-webkit-scrollbar-thumb { @apply bg-zinc-700/50 rounded-full; } .custom-scrollbar::-webkit-scrollbar-thumb:hover { @apply bg-zinc-600/50; } } @layer utilities { .scanlines { background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,0) 50%, rgba(0,0,0,0.2) 50%, rgba(0,0,0,0.2)); background-size: 100% 4px; position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; z-index: 10; } .grid-bg { background-image: linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px); background-size: 30px 30px; position: absolute; inset: 0; pointer-events: none; } .forensic-bg { z-index: 0; } .star-layer { position: absolute; width: 200vw; height: 200vh; top: -50vh; left: -50vw; pointer-events: none; } .star-layer-static { background-image: radial-gradient(1px 1px at 10% 20%, rgba(255, 255, 255, 0.4), transparent), radial-gradient(1.5px 1.5px at 30% 60%, rgba(200, 255, 255, 0.5), transparent), radial-gradient(1px 1px at 80% 40%, rgba(255, 255, 255, 0.3), transparent), radial-gradient(2px 2px at 50% 90%, rgba(100, 200, 255, 0.2), transparent), radial-gradient(1px 1px at 70% 10%, rgba(255, 255, 255, 0.4), transparent), radial-gradient(1px 1px at 90% 80%, rgba(200, 255, 255, 0.3), transparent); background-size: 200px 200px; opacity: 0.8; } .star-layer-1 { background-image: radial-gradient(1px 1px at 25% 15%, rgba(255, 255, 255, 0.8), transparent), radial-gradient(1.5px 1.5px at 60% 70%, rgba(200, 255, 255, 0.7), transparent), radial-gradient(2px 2px at 90% 45%, rgba(255, 255, 255, 0.6), transparent); background-size: 300px 300px; animation: drift 50s linear infinite; opacity: 0.9; } .star-layer-2 { background-image: radial-gradient(1.5px 1.5px at 10% 80%, rgba(255, 255, 255, 0.7), transparent), radial-gradient(1.5px 1.5px at 45% 30%, rgba(200, 255, 255, 0.6), transparent), radial-gradient(1px 1px at 75% 90%, rgba(255, 255, 255, 0.5), transparent); background-size: 400px 400px; animation: drift 70s linear infinite reverse; opacity: 0.8; } .star-layer-3 { background-image: radial-gradient(2px 2px at 30% 20%, rgba(255, 255, 255, 0.5), transparent), radial-gradient(1px 1px at 85% 65%, rgba(200, 255, 255, 0.4), transparent), radial-gradient(1.5px 1.5px at 50% 50%, rgba(255, 255, 255, 0.6), transparent); background-size: 500px 500px; animation: drift 40s linear infinite; opacity: 0.7; } /* Mouse Parallax Transforms */ .parallax-1 { transform: translate(calc(var(--mouse-x-norm, 0) * -10px), calc(var(--mouse-y-norm, 0) * -10px)); transition: transform 0.2s ease-out; } .parallax-2 { transform: translate(calc(var(--mouse-x-norm, 0) * -25px), calc(var(--mouse-y-norm, 0) * -25px)); transition: transform 0.2s ease-out; } .parallax-3 { transform: translate(calc(var(--mouse-x-norm, 0) * -40px), calc(var(--mouse-y-norm, 0) * -40px)); transition: transform 0.2s ease-out; } .parallax-4 { transform: translate(calc(var(--mouse-x-norm, 0) * -60px), calc(var(--mouse-y-norm, 0) * -60px)); transition: transform 0.2s ease-out; } .nebula-haze { position: absolute; border-radius: 50%; filter: blur(60px); pointer-events: none; animation: pulse-haze 15s ease-in-out infinite alternate; } .nebula-1 { top: -10%; left: 20%; width: 60vw; height: 60vh; background: radial-gradient(circle, rgba(16, 185, 129, 0.15) 0%, transparent 70%); } .nebula-2 { bottom: -20%; right: -10%; width: 80vw; height: 80vh; background: radial-gradient(circle, rgba(59, 130, 246, 0.12) 0%, transparent 70%); animation-delay: -7s; } .scanline-layer { position: absolute; inset: 0; background: linear-gradient(to bottom, transparent, rgba(16, 185, 129, 0.1) 50%, transparent); background-size: 100% 10px; animation: scan-radar 8s linear infinite; pointer-events: none; } .cursor-orb { position: fixed; top: 0; left: 0; width: 800px; height: 800px; transform: translate(calc(var(--mouse-x, 0px) - 50%), calc(var(--mouse-y, 0px) - 50%)); background: radial-gradient(circle, rgba(16, 185, 129, 0.12) 0%, transparent 50%); pointer-events: none; z-index: 1; } } @keyframes drift { 0% { transform: translate(0, 0); } 100% { transform: translate(-20%, -20%); } } @keyframes pulse-haze { 0% { opacity: 0.5; transform: scale(1); } 100% { opacity: 1; transform: scale(1.15); } } @keyframes scan-radar { 0% { transform: translateY(-100%); } 100% { transform: translateY(100vh); } } @keyframes scanline-anim { 0% { transform: translateY(-100%); } 100% { transform: translateY(100vh); } } .scanline-moving { position: absolute; top: 0; left: 0; right: 0; height: 10vh; background: linear-gradient(to bottom, transparent, rgba(16, 185, 129, 0.05), transparent); animation: scanline-anim 8s linear infinite; pointer-events: none; z-index: 5; } @media (prefers-reduced-motion: reduce) { .scanline-moving, .scanline-layer { display: none; } .soc-card-interactive { transition: none; } .soc-card-interactive:hover { transform: none; } .star-layer, .nebula-haze { animation: none !important; } .cursor-orb { display: none !important; } }