@import "tailwindcss"; @theme { --color-bg-primary: #141210; --color-bg-card: #1E1C18; --color-bg-card-hover: #2A2822; --color-neon: #34D399; --color-neon-dim: #2AB880; --color-cream: #F5F1EA; --color-cream-dim: #B8B0A0; --color-brown-light: #4A4038; --color-brown-medium: #302820; --color-brown-dark: #1E1C18; --color-accent: #FBBF24; --color-accent-dim: #D99F1A; --font-space: "Space Grotesk", sans-serif; } @layer base { * { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; scroll-padding-top: 5rem; } body { font-family: var(--font-space); background-color: var(--color-bg-primary); color: var(--color-cream); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } ::selection { background-color: var(--color-neon); color: var(--color-bg-primary); } } /* Animations */ @keyframes float { 0%, 100% { transform: translateY(0) rotate(0deg); } 33% { transform: translateY(-20px) rotate(5deg); } 66% { transform: translateY(-10px) rotate(-3deg); } } @keyframes float-slow { 0%, 100% { transform: translateY(0) rotate(0deg); opacity: 0.5; } 50% { transform: translateY(-25px) rotate(8deg); opacity: 0.8; } } @keyframes pulse-glow { 0%, 100% { opacity: 0.2; transform: scale(1); } 50% { opacity: 0.5; transform: scale(1.05); } } @keyframes fade-in-up { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes slide-in-left { from { opacity: 0; transform: translateX(-30px); } to { opacity: 1; transform: translateX(0); } } @keyframes slide-in-right { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } } @keyframes wiggle { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(-3deg); } 75% { transform: rotate(3deg); } } @keyframes dash-flow { to { stroke-dashoffset: -20; } } /* Utility classes */ .animate-float { animation: float 6s ease-in-out infinite; } .animate-float-slow { animation: float-slow 8s ease-in-out infinite; } .animate-pulse-glow { animation: pulse-glow 4s ease-in-out infinite; } .animate-fade-in-up { animation: fade-in-up 0.7s ease-out forwards; } .animate-fade-in { animation: fade-in 0.7s ease-out forwards; } .animate-slide-in-left { animation: slide-in-left 0.7s ease-out forwards; } .animate-slide-in-right { animation: slide-in-right 0.7s ease-out forwards; } .animate-wiggle { animation: wiggle 2.5s ease-in-out infinite; } /* Scroll-triggered animation base state */ .reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.7s ease-out, transform 0.7s ease-out; } .reveal.visible { opacity: 1; transform: translateY(0); } /* Glow effects — subtle, not rave */ .neon-text { text-shadow: 0 0 20px rgba(52, 211, 153, 0.4), 0 0 60px rgba(52, 211, 153, 0.15); } .neon-border { box-shadow: 0 0 8px rgba(52, 211, 153, 0.15), inset 0 0 8px rgba(52, 211, 153, 0.05); } .neon-glow-orb { background: radial-gradient(circle, rgba(52, 211, 153, 0.15) 0%, transparent 70%); filter: blur(60px); } /* Gradient text */ .gradient-text { background: linear-gradient(135deg, var(--color-neon) 0%, var(--color-accent) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Card hover effect */ .card-hover { transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease; } .card-hover:hover { transform: translateY(-3px); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3), 0 0 15px rgba(52, 211, 153, 0.08); border-color: rgba(52, 211, 153, 0.3); } /* Scrollbar styling */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: var(--color-bg-primary); } ::-webkit-scrollbar-thumb { background: var(--color-brown-light); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: var(--color-cream-dim); }