:root{--bg: #09090b;--bg-alt: #111113;--bg-card: #18181b;--bg-card-hover: #1f1f23;--border: #27272a;--border-light: #3f3f46;--text: #fafafa;--text-secondary: #a1a1aa;--text-muted: #71717a;--accent: #3b82f6;--accent-hover: #2563eb;--accent-subtle: rgba(59, 130, 246, .1);--accent-glow: rgba(59, 130, 246, .15);--green: #22c55e;--green-subtle: rgba(34, 197, 94, .1);--purple: #a855f7;--purple-subtle: rgba(168, 85, 247, .1);--amber: #f59e0b;--amber-subtle: rgba(245, 158, 11, .1);--radius: 12px;--radius-sm: 8px;--radius-lg: 16px;--radius-xl: 24px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow: 0 4px 12px rgba(0, 0, 0, .3);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--transition: .2s ease;--transition-slow: .4s ease;--max-width: 1200px;--nav-height: 64px;--font-mono: "SF Mono", "Fira Code", "Cascadia Code", "JetBrains Mono", monospace;--bg-nav: rgba(9, 9, 11, .6);--bg-nav-scrolled: rgba(9, 9, 11, .85);--bg-nav-mobile: rgba(9, 9, 11, .95);--white-03: rgba(255, 255, 255, .03);--white-05: rgba(255, 255, 255, .05);--accent-05: rgba(59, 130, 246, .05);--accent-08: rgba(59, 130, 246, .08);--accent-30: rgba(59, 130, 246, .3);--terminal-bg: #0c0c0e;--dot-red: #ff5f57;--dot-yellow: #febc2e;--dot-green: #28c840;--radius-pill: 9999px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background-color:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;overflow-x:hidden;position:relative}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(ellipse 80% 50% at 20% 20%,var(--accent-08),transparent),radial-gradient(ellipse 60% 40% at 80% 80%,color-mix(in srgb,var(--purple) 6%,transparent),transparent),radial-gradient(ellipse 50% 60% at 50% 50%,color-mix(in srgb,var(--accent) 4%,transparent),transparent);animation:gradientShift 12s ease-in-out infinite alternate}#code-bg{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}body>*:not(.skip-link):not(#code-bg):not(nav){position:relative;z-index:2}@keyframes gradientShift{0%{background:radial-gradient(ellipse 80% 50% at 20% 20%,var(--accent-08),transparent),radial-gradient(ellipse 60% 40% at 80% 80%,color-mix(in srgb,var(--purple) 6%,transparent),transparent),radial-gradient(ellipse 50% 60% at 50% 50%,color-mix(in srgb,var(--accent) 4%,transparent),transparent)}to{background:radial-gradient(ellipse 80% 50% at 80% 80%,var(--purple-subtle),transparent),radial-gradient(ellipse 60% 40% at 20% 20%,color-mix(in srgb,var(--accent) 6%,transparent),transparent),radial-gradient(ellipse 50% 60% at 60% 40%,color-mix(in srgb,var(--purple) 4%,transparent),transparent)}}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.2;letter-spacing:-.02em}a{color:var(--accent);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--accent-hover)}code{font-family:var(--font-mono);background:var(--accent-subtle);color:var(--accent);padding:.1em .4em;border-radius:4px;font-size:.9em;font-weight:600;border:1px solid var(--accent-glow)}img{max-width:100%;height:auto;display:block}.skip-link{position:absolute;top:-100%;left:50%;transform:translate(-50%);background:var(--accent);color:#fff;padding:.75rem 1.5rem;border-radius:var(--radius);z-index:1000;font-weight:600}.skip-link:focus{top:1rem;color:#fff}.section-title{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:800;text-align:center;margin-bottom:3rem;color:var(--text);letter-spacing:-.03em}.site-footer{text-align:center;padding:2rem;color:var(--text-muted);font-size:.875rem;border-top:1px solid var(--border);margin-top:4rem}.footer-seo{max-width:640px;margin:0 auto 1rem;font-size:.75rem;line-height:1.6;color:var(--border-light);opacity:.6}@keyframes fadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.fade-up{opacity:1;transform:translateY(0)}.fade-up.sr-hidden{opacity:0;transform:translateY(24px)}.fade-up.sr-visible{opacity:1;transform:translateY(0);transition:opacity .6s ease,transform .6s ease}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.fade-up.sr-hidden{opacity:1;transform:none}}::selection{background:var(--accent);color:#fff}
