@import "tailwindcss"; @theme { --color-background: oklch(0.145 0 0); --color-foreground: oklch(0.985 0 0); --color-card: oklch(0.145 0 0); --color-card-foreground: oklch(0.985 0 0); --color-popover: oklch(0.145 0 0); --color-popover-foreground: oklch(0.985 0 0); --color-primary: oklch(0.835 0.28 152); /* Neon green #00ff88 equivalent */ --color-primary-foreground: oklch(0.145 0 0); --color-secondary: oklch(0.269 0 0); --color-secondary-foreground: oklch(0.985 0 0); --color-muted: oklch(0.269 0 0); --color-muted-foreground: oklch(0.708 0 0); --color-accent: oklch(0.85 0.17 95); /* Neon gold #fbbf24 */ --color-accent-foreground: oklch(0.145 0 0); --color-destructive: oklch(0.637 0.237 25.331); /* Neon red #ef4444 */ --color-destructive-foreground: oklch(0.985 0 0); --color-border: oklch(0.269 0 0); --color-input: oklch(0.269 0 0); --color-ring: oklch(0.835 0.28 152); --radius: 0.5rem; } @layer base { :root { --background: 222 47% 6%; --foreground: 210 40% 98%; --border: 217 32% 17%; } body { background-color: #0a0e17; color: #f8fafc; border-color: #1e293b; background-image: radial-gradient(circle at 15% 50%, rgba(0, 255, 136, 0.04) 0%, transparent 25%), radial-gradient(circle at 85% 30%, rgba(251, 191, 36, 0.04) 0%, transparent 25%); } } /* Custom Cyberpunk Styles */ .neon-text-primary { text-shadow: 0 0 10px rgba(0, 255, 136, 0.5), 0 0 20px rgba(0, 255, 136, 0.3); } .neon-text-accent { text-shadow: 0 0 10px rgba(251, 191, 36, 0.5), 0 0 20px rgba(251, 191, 36, 0.3); } .neon-box-primary { box-shadow: 0 0 15px rgba(0, 255, 136, 0.2), inset 0 0 10px rgba(0, 255, 136, 0.1); border: 1px solid rgba(0, 255, 136, 0.4); } .neon-box-accent { box-shadow: 0 0 15px rgba(251, 191, 36, 0.2), inset 0 0 10px rgba(251, 191, 36, 0.1); border: 1px solid rgba(251, 191, 36, 0.4); } .cyber-grid { background-size: 40px 40px; background-image: linear-gradient(to right, rgba(255, 255, 255, 0.03) 1px, transparent 1px), linear-gradient(to bottom, rgba(255, 255, 255, 0.03) 1px, transparent 1px); mask-image: linear-gradient(to bottom, black 40%, transparent 100%); -webkit-mask-image: linear-gradient(to bottom, black 40%, transparent 100%); } .glitch-wrapper { position: relative; } .glitch-text::before, .glitch-text::after { content: attr(data-text); position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.8; } .glitch-text::before { color: #0ff; z-index: -1; animation: glitch-anim-1 2s infinite linear alternate-reverse; } .glitch-text::after { color: #f0f; z-index: -2; animation: glitch-anim-2 3s infinite linear alternate-reverse; } @keyframes glitch-anim-1 { 0% { clip-path: inset(20% 0 80% 0); transform: translate(-2px, 1px); } 20% { clip-path: inset(60% 0 10% 0); transform: translate(2px, -1px); } 40% { clip-path: inset(40% 0 50% 0); transform: translate(-2px, 2px); } 60% { clip-path: inset(80% 0 5% 0); transform: translate(2px, -2px); } 80% { clip-path: inset(10% 0 70% 0); transform: translate(-1px, 1px); } 100% { clip-path: inset(30% 0 50% 0); transform: translate(1px, -1px); } } @keyframes glitch-anim-2 { 0% { clip-path: inset(10% 0 60% 0); transform: translate(2px, -1px); } 20% { clip-path: inset(30% 0 20% 0); transform: translate(-2px, 1px); } 40% { clip-path: inset(70% 0 10% 0); transform: translate(2px, -2px); } 60% { clip-path: inset(20% 0 50% 0); transform: translate(-2px, 2px); } 80% { clip-path: inset(50% 0 30% 0); transform: translate(1px, -1px); } 100% { clip-path: inset(5% 0 80% 0); transform: translate(-1px, 1px); } } /* CRT Scanline effect */ .scanlines::before { content: " "; display: block; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: linear-gradient( to bottom, rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50% ); background-size: 100% 4px; z-index: 50; pointer-events: none; }