@import "tailwindcss"; @theme { --color-primary: #0f172a; --color-primary-light: #1e293b; --color-accent: #10b981; --color-accent-hover: #059669; --color-surface: #ffffff; --color-surface-muted: #f8fafc; --color-text-main: #0f172a; --color-text-muted: #64748b; --color-border: #e2e8f0; --font-sans: var(--font-inter), -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; --radius-xl: 1rem; --radius-2xl: 1.5rem; --shadow-soft: 0 4px 6px -1px rgb(0 0 0 / 0.05), 0 2px 4px -2px rgb(0 0 0 / 0.05); --shadow-card: 0 10px 15px -3px rgb(0 0 0 / 0.03), 0 4px 6px -4px rgb(0 0 0 / 0.03); } :root { --header-height: 80px; --transition-base: 0.2s cubic-bezier(0.4, 0, 0.2, 1); } @layer base { html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; } body { @apply bg-surface text-text-main antialiased selection:bg-accent/20 selection:text-accent overflow-x-hidden; font-feature-settings: "cv02", "cv03", "cv04", "cv11"; } .motion-fix { backface-visibility: hidden; transform-style: preserve-3d; perspective: 1000px; } .grid-pattern { background-image: radial-gradient( circle, var(--color-border) 1px, transparent 1px ); background-size: 40px 40px; } .tech-line { @apply absolute h-px bg-accent/20; } .mesh-gradient { background-color: #ffffff; background-image: radial-gradient(at 0% 0%, rgba(16, 185, 129, 0.05) 0px, transparent 50%), radial-gradient(at 100% 0%, rgba(15, 23, 42, 0.05) 0px, transparent 50%), radial-gradient( at 100% 100%, rgba(16, 185, 129, 0.05) 0px, transparent 50% ), radial-gradient(at 0% 100%, rgba(15, 23, 42, 0.05) 0px, transparent 50%); } .tech-dot { @apply absolute w-1 h-1 bg-accent/30 rounded-full; } .tech-corner { @apply absolute w-4 h-4 border-accent/30; } .section-number { @apply absolute -left-12 top-0 text-6xl font-black text-slate-100 select-none pointer-events-none hidden lg:block; font-family: monospace; } .tech-card-border { @apply relative; } .tech-card-border::before { content: ""; @apply absolute -inset-px bg-gradient-to-br from-accent/20 via-transparent to-accent/20 rounded-[inherit] opacity-0 transition-opacity duration-500; } .tech-card-border:hover::before { @apply opacity-100; } h1, h2, h3, h4, h5, h6 { @apply font-bold tracking-tight text-primary; text-wrap: balance; } button { @apply cursor-pointer; } section { @apply py-20 md:py-32; } } @layer components { .container-custom { @apply max-w-7xl mx-auto px-4 sm:px-6 lg:px-8; } .btn-primary { @apply inline-flex items-center justify-center px-6 py-3 rounded-lg bg-primary text-white font-semibold transition-all hover:bg-primary-light hover:shadow-lg active:scale-[0.98] cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed; } .btn-accent { @apply inline-flex items-center justify-center px-6 py-3 rounded-lg bg-accent text-white font-semibold transition-all hover:bg-accent-hover hover:shadow-lg active:scale-[0.98] cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed; } .glass-panel { @apply bg-white/80 backdrop-blur-md border border-white/20 shadow-soft; } .card-modern { @apply bg-white p-8 rounded-2xl border border-border shadow-card transition-all hover:shadow-xl hover:-translate-y-1; } } /* Custom animations */ @keyframes fade-in-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-in-up { animation: fade-in-up 0.6s ease-out forwards; }