| @import "tailwindcss"; |
|
|
| @theme { |
| --color-background: #09090b; |
| --color-surface: #18181b; |
| --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; |
| } |
|
|
| |
| .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; |
| } |
| |
| |
| .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; |
| } |
| } |
|
|