@import "tailwindcss"; :root { --background: #050507; --foreground: #f4f4f5; --glass-bg: rgba(255, 255, 255, 0.03); --glass-border: rgba(255, 255, 255, 0.06); --glass-hover: rgba(255, 255, 255, 0.06); } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --font-sans: var(--font-geist-sans); --font-mono: var(--font-geist-mono); } body { background: var(--background); color: var(--foreground); font-family: var(--font-sans, system-ui, -apple-system, sans-serif); } /* ─── Dot grid background ─── */ .dot-grid { background-image: radial-gradient(circle, rgba(255, 255, 255, 0.04) 1px, transparent 1px); background-size: 32px 32px; } /* ─── Animated gradient orbs ─── */ .gradient-orb { position: absolute; border-radius: 50%; filter: blur(120px); opacity: 0.15; pointer-events: none; animation: orbFloat 20s ease-in-out infinite; } .gradient-orb-1 { width: 600px; height: 600px; background: linear-gradient(135deg, #7c3aed, #6d28d9); top: -200px; right: -100px; animation-delay: 0s; } .gradient-orb-2 { width: 500px; height: 500px; background: linear-gradient(135deg, #06b6d4, #0891b2); bottom: -150px; left: -100px; animation-delay: -7s; } .gradient-orb-3 { width: 400px; height: 400px; background: linear-gradient(135deg, #ec4899, #be185d); top: 40%; left: 50%; animation-delay: -14s; } @keyframes orbFloat { 0%, 100% { transform: translate(0, 0) scale(1); } 25% { transform: translate(30px, -40px) scale(1.05); } 50% { transform: translate(-20px, 20px) scale(0.95); } 75% { transform: translate(40px, 30px) scale(1.03); } } /* ─── Glass card ─── */ .glass { background: var(--glass-bg); border: 1px solid var(--glass-border); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); } .glass-hover:hover { background: var(--glass-hover); border-color: rgba(255, 255, 255, 0.1); } /* ─── Glow effects ─── */ .glow-violet { box-shadow: 0 0 40px -10px rgba(139, 92, 246, 0.3); } .glow-green { box-shadow: 0 0 40px -10px rgba(34, 197, 94, 0.3); } .glow-red { box-shadow: 0 0 40px -10px rgba(239, 68, 68, 0.3); } .glow-amber { box-shadow: 0 0 40px -10px rgba(245, 158, 11, 0.3); } /* ─── Gradient text ─── */ .text-gradient { background: linear-gradient(135deg, #c4b5fd 0%, #818cf8 50%, #6d28d9 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .text-gradient-cyan { background: linear-gradient(135deg, #67e8f9 0%, #22d3ee 50%, #06b6d4 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ─── Shimmer border animation ─── */ @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .shimmer-border { background: linear-gradient( 90deg, transparent 0%, rgba(139, 92, 246, 0.15) 25%, rgba(6, 182, 212, 0.15) 50%, rgba(139, 92, 246, 0.15) 75%, transparent 100% ); background-size: 200% 100%; animation: shimmer 6s ease-in-out infinite; } /* ─── Scrollbar ─── */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(113, 113, 122, 0.3); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: rgba(113, 113, 122, 0.5); } /* ─── Noise texture overlay ─── */ .noise::before { content: ""; position: fixed; inset: 0; z-index: 100; pointer-events: none; opacity: 0.015; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }