Spaces:
Building
Building
| @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@300;400;500;600&display=swap'); | |
| @tailwind base; | |
| @tailwind components; | |
| @tailwind utilities; | |
| @layer base { | |
| :root { | |
| --background: 240 10% 2%; | |
| --foreground: 0 0% 95%; | |
| --card: 240 10% 4%; | |
| --card-foreground: 0 0% 95%; | |
| --popover: 240 10% 4%; | |
| --popover-foreground: 0 0% 95%; | |
| /* Neon Green / Cypherpunk */ | |
| --primary: 142 70% 50%; | |
| --primary-foreground: 240 10% 2%; | |
| --secondary: 240 6% 10%; | |
| --secondary-foreground: 0 0% 80%; | |
| --muted: 240 6% 10%; | |
| --muted-foreground: 240 5% 55%; | |
| /* Electric Violet */ | |
| --accent: 270 100% 60%; | |
| --accent-foreground: 0 0% 98%; | |
| --destructive: 0 84% 60%; | |
| --destructive-foreground: 0 0% 98%; | |
| --border: 240 10% 12%; | |
| --input: 240 10% 12%; | |
| --ring: 142 70% 50%; | |
| --radius: 0px; | |
| /* Custom tokens */ | |
| --glow-primary: 142 70% 50%; | |
| --glow-accent: 270 100% 60%; | |
| --surface-glass: 240 10% 4%; | |
| } | |
| } | |
| @layer base { | |
| * { | |
| @apply border-border; | |
| } | |
| body { | |
| @apply bg-background text-foreground font-sans antialiased selection:bg-primary selection:text-primary-foreground; | |
| background-image: | |
| radial-gradient(circle at 50% 50%, hsl(var(--primary) / 0.03), transparent 50%), | |
| linear-gradient(hsl(var(--background)), hsl(var(--background))); | |
| } | |
| h1, h2, h3, h4, h5, h6 { | |
| @apply font-bold tracking-tight; | |
| font-family: 'Space Grotesk', system-ui, sans-serif; | |
| } | |
| } | |
| @layer utilities { | |
| .text-gradient-primary { | |
| @apply bg-clip-text text-transparent; | |
| background-image: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--accent))); | |
| } | |
| .glow-primary { | |
| box-shadow: 0 0 20px -5px hsl(var(--glow-primary) / 0.5), | |
| 0 0 40px -10px hsl(var(--glow-primary) / 0.3); | |
| } | |
| .glow-border { | |
| border-color: hsl(var(--primary) / 0.5); | |
| box-shadow: 0 0 10px -2px hsl(var(--primary) / 0.3); | |
| } | |
| .glass { | |
| background: hsl(var(--surface-glass) / 0.8); | |
| backdrop-filter: blur(12px); | |
| border: 1px solid hsl(var(--border)); | |
| } | |
| .grid-pattern { | |
| background-image: | |
| linear-gradient(hsl(var(--border) / 0.15) 1px, transparent 1px), | |
| linear-gradient(90deg, hsl(var(--border) / 0.15) 1px, transparent 1px); | |
| background-size: 60px 60px; | |
| } | |
| .scanline { | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .scanline::before { | |
| content: " "; | |
| display: block; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| bottom: 0; | |
| right: 0; | |
| background: linear-gradient( | |
| rgba(18, 16, 16, 0) 50%, | |
| rgba(0, 0, 0, 0.06) 50% | |
| ); | |
| z-index: 99; | |
| background-size: 100% 4px; | |
| pointer-events: none; | |
| } | |
| .terminal-cursor::after { | |
| content: "_"; | |
| animation: blink 1s step-end infinite; | |
| } | |
| @keyframes blink { | |
| from, to { opacity: 1; } | |
| 50% { opacity: 0; } | |
| } | |
| /* Editorial offset utility */ | |
| .offset-right { | |
| margin-left: auto; | |
| margin-right: 0; | |
| } | |
| .offset-left { | |
| margin-left: 0; | |
| margin-right: auto; | |
| } | |
| } | |