@tailwind base; @tailwind components; @tailwind utilities; @layer base { :root { --brand-green: #00ff88; --brand-blue: #00d4ff; --brand-purple: #a855f7; --surface-base: #070b14; --surface-card: rgba(12, 18, 32, 0.72); --glass-border: rgba(255, 255, 255, 0.08); --glass-highlight: rgba(255, 255, 255, 0.04); } html { @apply scroll-smooth; } body { @apply min-h-screen bg-mesh-gradient text-slate-100 antialiased; font-family: "Inter", system-ui, -apple-system, sans-serif; } h1, h2, h3 { font-family: "Space Grotesk", "Inter", system-ui, sans-serif; letter-spacing: -0.02em; } ::selection { @apply bg-neon-green/30 text-white; } :focus-visible { @apply outline-none ring-2 ring-neon-green/50 ring-offset-2 ring-offset-surface; } @media (prefers-reduced-motion: reduce) { .ambient-orb, .ambient-mesh, .btn-primary::after { animation: none !important; } } } @layer components { .ambient-mesh { background: radial-gradient(ellipse 80% 60% at 20% 10%, rgba(168, 85, 247, 0.12), transparent 55%), radial-gradient(ellipse 70% 50% at 85% 25%, rgba(0, 212, 255, 0.1), transparent 50%), radial-gradient(ellipse 60% 45% at 50% 90%, rgba(0, 255, 136, 0.08), transparent 55%); animation: meshShift 20s ease-in-out infinite alternate; } .ambient-grid { background-image: linear-gradient(rgba(255, 255, 255, 0.025) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.025) 1px, transparent 1px); background-size: 48px 48px; mask-image: radial-gradient(ellipse 80% 70% at 50% 40%, black 20%, transparent 75%); } .glass-card { @apply rounded-2xl border border-white/[0.08] bg-surface-card shadow-card backdrop-blur-xl; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.05); } .glass-card-hover { @apply glass-card transition-all duration-300 ease-out; } .glass-card-hover:hover { @apply -translate-y-1 border-neon-green/25 shadow-neon; } .glass-card-blue { @apply glass-card transition-all duration-300 hover:-translate-y-1 hover:border-neon-blue/30 hover:shadow-neon-blue; } .gradient-text { @apply bg-brand-gradient bg-clip-text font-display font-bold text-transparent; background-size: 200% auto; } .gradient-text-animated { @apply gradient-text; animation: shimmer 4s linear infinite; } .btn-primary { @apply relative inline-flex items-center justify-center gap-2 overflow-hidden rounded-xl bg-brand-gradient px-5 py-2.5 text-sm font-semibold text-surface shadow-neon transition-all duration-300; background-size: 200% auto; } .btn-primary::after { content: ""; @apply absolute inset-0 opacity-0 transition-opacity duration-300; background: linear-gradient( 105deg, transparent 40%, rgba(255, 255, 255, 0.25) 50%, transparent 60% ); background-size: 200% 100%; animation: shimmer 2.8s linear infinite; } .btn-primary:hover:not(:disabled) { @apply scale-[1.02] shadow-glow; background-position: right center; } .btn-primary:hover:not(:disabled)::after { @apply opacity-100; } .btn-primary:active:not(:disabled) { @apply scale-[0.98]; } .btn-primary:disabled { @apply cursor-not-allowed opacity-50; } .btn-ghost { @apply inline-flex items-center justify-center gap-2 rounded-xl border border-white/10 bg-white/5 px-4 py-2 text-sm font-medium text-slate-300 transition-all duration-200 hover:border-white/20 hover:bg-white/10 hover:text-white active:scale-[0.98]; } .btn-icon { @apply inline-flex items-center justify-center rounded-xl border border-white/10 bg-white/5 p-2 text-slate-400 transition-all duration-200 hover:border-white/20 hover:bg-white/10 hover:text-white active:scale-95; } .input-field { @apply w-full rounded-xl border border-white/10 bg-white/[0.04] px-4 py-2.5 text-sm text-white placeholder:text-slate-500 transition-all duration-200 focus:border-neon-blue/50 focus:bg-white/[0.06] focus:outline-none focus:ring-2 focus:ring-neon-blue/20; } .select-field { @apply input-field appearance-none cursor-pointer; } .section-label { @apply mb-4 flex items-center gap-2 font-display text-xs font-semibold uppercase tracking-[0.18em] text-slate-500; } .section-label::after { @apply block h-px flex-1 bg-gradient-to-r from-white/10 to-transparent; content: ""; } .stat-pill { @apply rounded-lg border border-white/[0.04] bg-white/[0.04] px-3 py-2 text-center transition-colors duration-200 hover:border-white/10 hover:bg-white/[0.06]; } .team-avatar { @apply flex items-center justify-center rounded-xl font-bold text-surface; } .divider-v { @apply h-full w-px bg-white/5; } .chip-filter { @apply rounded-full px-3.5 py-1.5 text-xs font-semibold transition-all duration-200 active:scale-95; } .chip-filter-active { @apply bg-neon-green/15 text-neon-green ring-1 ring-neon-green/30 shadow-[0_0_16px_rgba(0,255,136,0.12)]; } .chip-filter-idle { @apply bg-white/5 text-slate-400 hover:bg-white/[0.08] hover:text-slate-300; } .scrollbar-thin { scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, 0.15) transparent; } .scrollbar-thin::-webkit-scrollbar { width: 6px; height: 6px; } .scrollbar-thin::-webkit-scrollbar-track { background: transparent; } .scrollbar-thin::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.12); border-radius: 9999px; } .scrollbar-thin::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.22); } .skip-link { @apply sr-only focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[100] focus:rounded-xl focus:bg-neon-green focus:px-4 focus:py-2 focus:text-sm focus:font-semibold focus:text-surface; } .nav-link { @apply relative overflow-hidden; } .nav-link-active { @apply text-white; } .nav-link-active .nav-link-icon { @apply text-neon-green; } }