@font-face{font-family:Satoshi;src:url(/fonts/Satoshi-Variable.woff2)format('woff2-variations');font-weight:300 900;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/Satoshi-VariableItalic.woff2)format('woff2-variations');font-weight:300 900;font-style:italic;font-display:swap}@font-face{font-family:geist mono;src:url(/fonts/GeistMonoVF.woff2)format('woff2-variations');font-weight:100 900;font-style:normal;font-display:swap}[data-theme=hacker]{--font-sans:Satoshi, ui-sans-serif, system-ui, sans-serif;--font-mono:'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--default-font-family:Satoshi, ui-sans-serif, system-ui, sans-serif;--default-mono-font-family:'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--color-background:oklch(0.969 0.005 95);--color-foreground:oklch(0.12 0.005 95);--color-primary:oklch(0.55 0.16 255);--color-primary-foreground:oklch(0.98 0.005 95);--color-secondary:oklch(0.55 0.16 255);--color-secondary-foreground:oklch(0.98 0.005 95);--color-muted:oklch(0.88 0.004 95);--color-muted-foreground:oklch(0.45 0.005 95);--color-accent:oklch(0.88 0.004 95);--color-accent-foreground:oklch(0.12 0.005 95);--color-border:oklch(0.86 0.004 95);--color-card:oklch(0.969 0.005 95);--color-card-foreground:oklch(0.12 0.005 95);--color-popover:oklch(0.969 0.005 95);--color-popover-foreground:oklch(0.12 0.005 95);--color-note:oklch(0.52 0.08 250);--color-tip:oklch(0.52 0.08 160);--color-important:oklch(0.52 0.08 300);--color-warning:oklch(0.60 0.10 70);--color-caution:oklch(0.55 0.10 25)}[data-theme=hacker].dark{--color-background:oklch(0.118 0.005 95);--color-foreground:oklch(0.975 0.008 95);--color-primary:oklch(0.72 0.13 250);--color-primary-foreground:oklch(0.12 0.005 95);--color-secondary:oklch(0.72 0.13 250);--color-secondary-foreground:oklch(0.12 0.005 95);--color-muted:oklch(0.21 0.005 95);--color-muted-foreground:oklch(0.68 0.007 95);--color-accent:oklch(0.21 0.005 95);--color-accent-foreground:oklch(0.975 0.008 95);--color-border:oklch(0.21 0.005 95);--color-card:oklch(0.118 0.005 95);--color-card-foreground:oklch(0.975 0.008 95);--color-popover:oklch(0.21 0.005 95);--color-popover-foreground:oklch(0.975 0.008 95);--color-note:oklch(0.72 0.10 250);--color-tip:oklch(0.72 0.10 160);--color-important:oklch(0.72 0.10 300);--color-warning:oklch(0.78 0.12 70);--color-caution:oklch(0.72 0.12 25)}[data-theme=hacker],[data-theme=hacker] body,[data-theme=hacker] .prose{font-family:Satoshi,ui-sans-serif,system-ui,sans-serif}[data-theme=hacker] code,[data-theme=hacker] pre,[data-theme=hacker] kbd,[data-theme=hacker] samp,[data-theme=hacker] .prose code,[data-theme=hacker] .prose pre{font-family:geist mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}[data-theme=hacker] .prose :not(pre)>code,[data-theme=hacker] .prose code:not(.chroma code){font-family:var(--font-mono) !important;background:color-mix(in oklch,var(--color-primary) 10%,var(--color-muted)) !important;color:var(--color-primary) !important;padding:.12em .25em;font-size:.875em;font-weight:600;border:none !important;border-radius:3px;word-break:break-word;display:inline}[data-theme=hacker] .prose :not(pre)>code::before,[data-theme=hacker] .prose :not(pre)>code::after,[data-theme=hacker] .prose code:not(.chroma code)::before,[data-theme=hacker] .prose code:not(.chroma code)::after{content:"" !important}[data-theme=hacker] .prose blockquote{font-style:normal;border-left-color:var(--color-primary) !important}[data-theme=hacker] .prose blockquote::before{display:none !important}[data-theme=hacker] .prose hr{opacity:.4}[data-theme=hacker] ::selection{background:oklch(.12 .005 95/.12)}[data-theme=hacker].dark ::selection{background:oklch(.975 .008 95/.15)}[data-theme=hacker].dark ::-webkit-scrollbar{width:5px;height:5px}[data-theme=hacker].dark ::-webkit-scrollbar-track{background:var(--color-background)}[data-theme=hacker].dark ::-webkit-scrollbar-thumb{background:var(--color-border)}[data-theme=hacker].dark ::-webkit-scrollbar-thumb:hover{background:var(--color-muted-foreground)}[data-theme=hacker] .aspect-video img[src$=".svg"].object-cover,[data-theme=hacker] img.aspect-video[src$=".svg"].object-cover{object-fit:contain !important;padding:2rem;background:var(--color-card)}[data-theme=hacker]{--radius:9999px;--radius-sm:9999px;--radius-md:9999px;--radius-lg:9999px;--radius-xl:1.5rem;--radius-2xl:2rem}[data-theme=hacker] .dropdown-menu,[data-theme=hacker] [id=mobile-menu],[data-theme=hacker] [class*=dropdown-menu],[data-theme=hacker] .link-card,[data-theme=hacker] .bg-card{border-radius:1.25rem !important}[data-theme=hacker] .rounded-xl{border-radius:var(--radius-xl) !important}[data-theme=hacker] .rounded-2xl{border-radius:var(--radius-2xl) !important}[data-theme=hacker] .alert,[data-theme=hacker] [class*=alert]{border-radius:1.25rem !important}[data-theme=hacker] .code-block-container,[data-theme=hacker] [class*=code-block-container]{border-radius:1.25rem !important}[data-theme=hacker] .aspect-video,[data-theme=hacker] [class*=aspect-video],[data-theme=hacker] img[class*=aspect-video],[data-theme=hacker] .aspect-video img{border-radius:1rem !important}[data-theme=hacker] kbd{border-radius:4px !important}[data-theme=hacker] .taxonomy-card{border-radius:1.5rem !important}[data-theme=hacker] .taxonomy-count{border-radius:9999px !important}[data-theme=hacker] .taxonomy-meter{border-radius:9999px !important;overflow:hidden}[data-theme=hacker] .taxonomy-meter span{border-radius:9999px !important}.post-navigation,nav[aria-label="Post navigation"]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}[data-theme=hacker].dark .prose ol li::before{background:var(--color-foreground);color:var(--color-background)}[data-theme=hacker] .section-intro{color:var(--color-muted-foreground)}[data-theme=hacker] .section-intro>:first-child{margin-top:0}[data-theme=hacker] .section-intro>:last-child{margin-bottom:0}[data-theme=hacker] .section-intro p{margin:0;color:inherit;font-size:1rem;line-height:1.625}[data-theme=hacker] .taxonomy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));gap:.75rem}[data-theme=hacker] .taxonomy-card{position:relative;display:grid;min-height:5.5rem;grid-template-rows:auto 1fr auto;gap:.75rem;overflow:hidden;border:1px solid var(--color-border);background:var(--color-card);color:var(--color-foreground);padding:.85rem;text-decoration:none;transition:border-color 180ms ease,background-color 180ms ease,color 180ms ease,transform 180ms ease}[data-theme=hacker] .taxonomy-card:hover{border-color:var(--color-primary);background:color-mix(in oklch,var(--color-primary) 7%,var(--color-card));color:var(--color-primary);transform:translateY(-2px)}[data-theme=hacker] .taxonomy-card:focus-visible{outline:2px solid color-mix(in oklch,var(--color-primary) 25%,transparent);outline-offset:2px}[data-theme=hacker] .taxonomy-card-top{display:flex;align-items:center;justify-content:space-between;gap:.75rem}[data-theme=hacker] .taxonomy-mark{display:inline-flex;color:var(--color-muted-foreground);transition:color 180ms ease}[data-theme=hacker] .taxonomy-card:hover .taxonomy-mark,[data-theme=hacker] .taxonomy-card:focus-visible .taxonomy-mark{color:var(--color-primary)}[data-theme=hacker] .taxonomy-count{min-width:2rem;border:1px solid var(--color-border);background:var(--color-muted);color:var(--color-foreground);padding:.1rem .45rem;font-family:geist mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem;font-weight:700;line-height:1.35;text-align:center}[data-theme=hacker] .taxonomy-name{align-self:center;color:inherit;font-size:.95rem;font-weight:650;line-height:1.25;overflow-wrap:anywhere}[data-theme=hacker] .taxonomy-meter{display:block;height:.2rem;background:var(--color-muted)}[data-theme=hacker] .taxonomy-meter span{display:block;width:var(--term-count,0%);height:100%;background:var(--color-primary);transition:width 220ms ease}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeInSlide{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}body{animation:fadeIn .4s ease-out forwards}main>div.py-6{animation:fadeInSlide .4s cubic-bezier(.16,1,.3,1)forwards}#toc-center{top:8.5rem !important}#toc-side{top:8.5rem !important}[data-theme=hacker],[data-theme=hacker] body,[data-theme=hacker] .bg-card,[data-theme=hacker] .border-border,[data-theme=hacker] .text-foreground,[data-theme=hacker] .text-muted-foreground,[data-theme=hacker] header,[data-theme=hacker] footer,[data-theme=hacker] .skill-card,[data-theme=hacker] .taxonomy-card{transition:background-color .3s cubic-bezier(.4,0,.2,1),border-color .3s cubic-bezier(.4,0,.2,1),color .3s cubic-bezier(.4,0,.2,1),box-shadow .3s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1)}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1rem;margin:1.5rem 0}.skill-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem;border-radius:var(--radius-xl) !important;border:1px solid var(--color-border);background:var(--color-card);transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.skill-card::before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(800px circle at var(--x,0) var(--y,0),rgba(255,255,255,6%),transparent 40%);opacity:0;transition:opacity .5s ease;pointer-events:none}[data-theme=hacker].dark .skill-card::before{background:radial-gradient(800px circle at var(--x,0) var(--y,0),rgba(255,255,255,4%),transparent 40%)}.skill-card:hover{transform:translateY(-4px);border-color:var(--color-primary);box-shadow:0 10px 20px -10px rgba(0,0,0,.12);background:color-mix(in oklch,var(--color-primary) 2%,var(--color-card))}[data-theme=hacker].dark .skill-card:hover{border-color:var(--color-muted-foreground);box-shadow:0 12px 24px -10px rgba(0,0,0,.6);background:oklch(.15 .005 95)}.skill-card:hover::before{opacity:1}.skill-card img,.skill-card svg{transition:transform .4s cubic-bezier(.175,.885,.32,1.275)}.skill-card:hover img,.skill-card:hover svg{transform:scale(1.15)rotate(2deg)}.skill-card span{font-size:.85rem;font-weight:500;transition:color .3s ease}.skill-card:hover span{color:var(--color-primary)}[data-theme=hacker].dark .skill-card:hover span{color:var(--color-foreground)}[data-theme=hacker] .dropdown-menu button.bg-accent,[data-theme=hacker] .dropdown-menu a.bg-accent,[data-theme=hacker] .dropdown-menu button.bg-accent span,[data-theme=hacker] .dropdown-menu button.bg-accent svg{background-color:var(--color-primary) !important;color:var(--color-primary-foreground) !important;stroke:var(--color-primary-foreground) !important}[data-theme=hacker] .dropdown-menu button.bg-accent:hover,[data-theme=hacker] .dropdown-menu a.bg-accent:hover{background-color:color-mix(in oklch,var(--color-primary) 90%,transparent) !important}[data-theme=hacker] .nav-active-indicator{background-color:var(--color-primary) !important;color:var(--color-primary-foreground) !important}[data-theme=hacker] span.bg-muted\/50,[data-theme=hacker] a.bg-muted\/50:not(.nav-link),[data-theme=hacker] .post-meta a.bg-muted\/50,[data-theme=hacker] .project-card span,[data-theme=hacker] [class*=project-card] span{border-radius:9999px !important;transition:background-color .2s ease,border-color .2s ease,color .2s ease}[data-theme=hacker] span.bg-muted\/50:hover,[data-theme=hacker] a.bg-muted\/50:hover:not(.nav-link),[data-theme=hacker] .post-meta a.bg-muted\/50:hover,[data-theme=hacker] .project-card span:hover{background-color:var(--color-primary) !important;border-color:var(--color-primary) !important;color:var(--color-primary-foreground) !important}[data-theme=hacker] .prose img,[data-theme=hacker] .post-content img,[data-theme=hacker] img[src$=".gif"],[data-theme=hacker] img[src*=".gif"]{border-radius:var(--radius-xl) !important}[data-theme=hacker] nav[aria-label="Post navigation"] a{border-radius:var(--radius-xl) !important;transition:background-color .2s ease,border-color .2s ease}[data-theme=hacker] nav[aria-label="Post navigation"] a:hover{background-color:var(--color-primary) !important;border-color:var(--color-primary) !important}[data-theme=hacker] nav[aria-label="Post navigation"] a:hover *{color:var(--color-primary-foreground) !important}.about-hero{display:flex;align-items:flex-start;gap:2rem;margin-bottom:1.5rem;padding:2rem 2.5rem;border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-card);position:relative;overflow:hidden}.about-hero::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,color-mix(in oklch,var(--color-primary) 18%,transparent) 1px,transparent 1px);background-size:22px 22px;pointer-events:none;opacity:.45}.about-hero-avatar{display:flex;flex-direction:column;align-items:center;gap:.65rem;flex-shrink:0;position:relative;z-index:1}.about-hero-avatar img{width:100px;height:100px;border-radius:50%;border:2px solid var(--color-border);background:var(--color-muted);display:block}.about-status-badge{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .65rem;border-radius:9999px;border:1px solid #16a34a;background:#dcfce7;font-size:.68rem;font-weight:600;color:#15803d;white-space:nowrap}[data-theme=hacker].dark .about-status-badge{border-color:#22c55e;background:rgba(34,197,94,.15);color:#22c55e}.about-status-dot{width:6px;height:6px;border-radius:50%;background:#22c55e;flex-shrink:0;animation:about-pulse 2s ease-in-out infinite}[data-theme=hacker].dark .about-status-dot{background:#22c55e}@keyframes about-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.about-hero-text{flex:1;min-width:0;position:relative;z-index:1}.about-terminal-prompt{display:inline-flex;align-items:center;gap:.45rem;background:color-mix(in oklch,var(--color-primary) 10%,var(--color-muted));border:1px solid color-mix(in oklch,var(--color-primary) 22%,var(--color-border));border-radius:9999px;padding:.18rem .7rem;margin-bottom:.9rem;font-family:var(--font-mono);font-size:.75rem}.about-prompt-dollar{color:var(--color-primary);font-weight:700}.about-prompt-cmd{color:var(--color-foreground);opacity:.75}.about-name{font-size:2.4rem;font-weight:800;letter-spacing:-.03em;line-height:1.1;color:var(--color-foreground);margin:0 0 .3rem}.about-tagline{font-family:var(--font-mono);font-size:.8rem;color:var(--color-primary);font-weight:600;letter-spacing:.05em;text-transform:uppercase;margin:0 0 .75rem}.about-bio{font-size:.95rem;color:var(--color-muted-foreground);line-height:1.6;margin:0 0 1.1rem;max-width:48ch}.about-social-row{display:flex;flex-wrap:wrap;gap:.45rem}.about-social-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.28rem .75rem;border-radius:9999px;border:1px solid var(--color-border);background:var(--color-muted);color:var(--color-foreground);font-size:.76rem;font-weight:600;text-decoration:none;transition:border-color .18s,background .18s,color .18s,transform .18s}.about-social-pill:hover{border-color:var(--color-primary);background:color-mix(in oklch,var(--color-primary) 10%,var(--color-muted));color:var(--color-primary);transform:translateY(-1px)}@media(max-width:580px){.about-hero{flex-direction:column;padding:1.5rem;gap:1.25rem}.about-hero-avatar{flex-direction:row;align-items:center}.about-name{font-size:1.9rem}}.about-content-card{border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-card);padding:2rem 2.5rem;margin-bottom:1.5rem}.about-prose>h2:first-of-type,.about-prose>h2:first-of-type+p{display:none}.about-prose h2{font-family:var(--font-mono);font-size:.72rem !important;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted-foreground) !important;margin:2.5rem 0 1rem !important;padding:0 !important;border:none !important;position:relative}.about-prose h2::before{content:'';position:absolute;top:-1.25rem;left:0;right:0;height:1px;background:var(--color-border)}.about-prose>h2:nth-of-type(2)::before{display:none}.about-prose>h2:nth-of-type(2){margin-top:0 !important}.about-prose ul{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:0 0 .5rem !important}.about-prose ul li{display:inline-flex;align-items:center;padding:.3rem .85rem;border-radius:9999px;border:1px solid var(--color-border);background:var(--color-muted);font-size:.85rem;font-weight:500;color:var(--color-foreground);transition:border-color .18s,background .18s,color .18s}.about-prose ul li:hover{border-color:var(--color-primary);background:color-mix(in oklch,var(--color-primary) 8%,var(--color-muted));color:var(--color-primary)}.about-prose ul li::before{display:none !important}.about-links-section{margin-bottom:1.5rem}.about-section-header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.about-section-line{flex:1;height:1px;background:var(--color-border)}.about-section-title{font-family:var(--font-mono);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted-foreground);flex-shrink:0}.about-links-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:.6rem}.about-link-tile{display:flex;align-items:center;gap:.85rem;padding:.85rem 1.1rem;border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-card);text-decoration:none;color:var(--color-foreground);transition:border-color .18s,background .18s,transform .18s}.about-link-tile:hover{border-color:var(--color-primary);background:color-mix(in oklch,var(--color-primary) 5%,var(--color-card));transform:translateY(-2px)}.about-link-icon{width:28px;height:28px;border-radius:6px;object-fit:contain;flex-shrink:0}[data-theme=hacker].dark .about-link-icon{filter:brightness(.88)}.about-link-name{font-size:.88rem;font-weight:700;color:var(--color-foreground);margin-bottom:.1rem}.about-link-desc{font-size:.76rem;color:var(--color-muted-foreground)}.about-link-arrow{margin-left:auto;color:var(--color-muted-foreground);opacity:0;transform:translate(-3px,3px);transition:opacity .18s,transform .18s,color .18s;flex-shrink:0}.about-link-tile:hover .about-link-arrow{opacity:1;transform:translate(0,0);color:var(--color-primary)}[data-theme=hacker] #mobile-menu-toggle{border-radius:.5rem !important}[data-theme=hacker] #mobile-menu{position:fixed !important;left:1rem !important;right:1rem !important;width:auto !important;max-width:none !important;top:5rem !important}.about-status-badge{white-space:normal;text-align:center;max-width:100%}.about-hero-avatar{min-width:0;max-width:100%}[data-theme=hacker] #dock nav{border-radius:var(--radius-2xl) !important}