@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Outfit:wght@400;500;600;700;800&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; @layer base { :root { --background: 210 18% 7%; --foreground: 42 33% 94%; --card: 210 17% 10%; --card-foreground: 42 33% 94%; --primary: 154 49% 55%; --primary-foreground: 210 18% 7%; --secondary: 210 14% 15%; --secondary-foreground: 42 33% 94%; --muted: 210 14% 15%; --muted-foreground: 42 13% 67%; --accent: 38 64% 61%; --accent-foreground: 210 18% 7%; --border: 210 13% 22%; --input: 210 13% 22%; --ring: 154 49% 55%; --radius: 0.6rem; --font-sans: 'Outfit', system-ui, sans-serif; --font-mono: 'IBM Plex Mono', monospace; } * { @apply border-border; } html { scroll-behavior: smooth; } body { @apply bg-background text-foreground antialiased; font-family: var(--font-sans); font-feature-settings: 'rlig' 1, 'calt' 1; background: radial-gradient(circle at top left, hsl(var(--primary) / 0.08), transparent 26rem), linear-gradient(180deg, hsl(210 18% 8%), hsl(var(--background)) 34rem); } body::before { content: ''; position: fixed; inset: 0; pointer-events: none; z-index: 100; opacity: 0.035; background-image: linear-gradient(90deg, hsl(var(--foreground)) 1px, transparent 1px), linear-gradient(0deg, hsl(var(--foreground)) 1px, transparent 1px); background-size: 22px 22px; } a, button { outline-color: hsl(var(--ring)); outline-offset: 3px; } } /* Scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: hsl(var(--background)); } ::-webkit-scrollbar-thumb { background: hsl(var(--muted)); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: hsl(var(--muted-foreground) / 0.5); } /* Utility classes */ .glass { backdrop-filter: blur(16px) saturate(180%); background: hsl(var(--background) / 0.82); border-bottom: 1px solid hsl(var(--border)); } .gradient-text { background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--accent))); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .gradient-border { position: relative; &::before { content: ''; position: absolute; inset: 0; border-radius: inherit; padding: 1px; background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--accent)), transparent); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; } } .section-fade { opacity: 0; transform: translateY(30px); transition: opacity 0.8s ease-out, transform 0.8s ease-out; &.visible { opacity: 1; transform: translateY(0); } } /* Parallax container */ .parallax-section { will-change: transform; } /* Ad placeholder */ .ad-slot { display: none; &.ad-enabled { display: block; min-height: 90px; background: hsl(var(--card)); border: 1px dashed hsl(var(--border)); border-radius: var(--radius); display: flex; align-items: center; justify-content: center; color: hsl(var(--muted-foreground)); font-size: 0.75rem; } }