*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0b0b0f;--text: #e6eef3;--muted: #9aa0a6;--link: #58a6ff;--max-width: 720px;--fs-base: 16px;--lh-base: 1.6}html,body{height:100%}html{font-size:100%}body{background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial;font-size:var(--fs-base);line-height:var(--lh-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.container{max-width:var(--max-width);margin:2rem auto;padding:0 1rem}.top-nav{text-align:center;padding:1rem 0 .25rem}.top-nav .brand{display:inline-flex;align-items:center;gap:.5rem;font-weight:600;color:var(--text);text-decoration:none;font-size:1.125rem}.top-nav .brand-logo{display:inline-block;width:18px;height:18px;object-fit:contain}@keyframes brand-spin{to{transform:rotate(1turn)}}.top-nav .brand-logo.spin{animation:brand-spin .7s cubic-bezier(.22,.8,.36,1)}@media (prefers-reduced-motion: reduce){.top-nav .brand-logo{animation:none!important;transform:none!important}}.top-nav .brand-name{display:inline-block}@media (max-width: 420px){.top-nav .brand-name{display:none}}.top-nav .links{margin-top:.45rem;color:var(--muted);display:flex;gap:1rem;align-items:center;justify-content:center;white-space:nowrap;font-size:.95rem}.top-nav .links a{padding:.25rem .2rem;margin:0 .45rem}.top-nav .links a+a{margin-left:.85rem}.top-nav a{color:var(--link);text-decoration:none}.hero{font-size:2rem;margin:.7rem 0 .25rem;font-weight:500;letter-spacing:.01em}article>h1,.page-title{font-size:1.5rem;margin:0 0 .35rem;font-weight:500;color:var(--text);letter-spacing:-.01em}.role{color:var(--muted);margin-top:0;margin-bottom:.15rem;font-size:1.0625rem;font-weight:500}.bio{max-width:60ch;font-size:1rem;margin-top:.08rem;margin-bottom:.3rem}.previews{margin-top:1.6rem}.social{margin:.34rem auto 0;display:flex;gap:.6rem;align-items:center;justify-content:center}.social-link{color:var(--link);display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px}.social-link svg{display:block;width:100%;height:100%}a{color:var(--link);text-decoration:none}.muted{color:var(--muted)}.posts,.notes,.projects{list-style:none;padding:0;margin:0}.post,.note,.project{padding:1rem 0;border-bottom:1px solid rgba(255,255,255,.02)}.post:last-child,.note:last-child,.project:last-child{border-bottom:none}.tags{color:var(--muted);font-size:.95rem}.markdown h2{margin-top:1.25rem;font-size:1.1rem}.markdown h3{margin-top:1rem;font-size:1rem}.markdown p{margin:.8rem 0}.markdown ul,.markdown ol{margin:.6rem 0 .9rem 1.2rem}.markdown pre{background:#ffffff05;padding:.5rem;border-radius:6px;overflow:auto;white-space:pre;border:none;box-shadow:none}.markdown pre code{white-space:pre;display:block;font-size:.95rem;line-height:1.5;color:var(--text);background:transparent}.markdown code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Roboto Mono,Segoe UI Mono,Helvetica Neue,monospace;font-size:.95rem;background:transparent;padding:0;border-radius:0}.markdown blockquote{color:var(--muted);font-style:italic;margin:.6rem 0;padding-left:0;border:none}.hljs{background:transparent;color:var(--text)}.hljs-comment,.hljs-quote{color:#6a737d;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#ff7b72;font-weight:600}.hljs-number,.hljs-literal,.hljs-symbol{color:#ffb86b}.hljs-string,.hljs-title,.hljs-section,.hljs-name{color:#a6e22e}.hljs-function .hljs-title,.hljs-built_in{color:#61afef}.hljs-attribute{color:#ffd580}.hljs-variable{color:#e6c07b}.hljs-tag{color:#7ee787}.post-detail{margin-top:2rem;max-width:68ch;margin-left:auto;margin-right:auto}.post-header{margin-bottom:1rem}.post-header h1{font-size:1.75rem;margin:0 0 .35rem}.post-meta{color:var(--muted);font-size:.95rem;margin-bottom:.5rem}.lead{font-size:1rem;color:var(--muted);margin-bottom:1rem}@media (max-width: 640px){.post-detail{padding:0 .6rem;max-width:100%}.post-header h1{font-size:1.5rem}.lead{font-size:1rem}}.previews h2{font-size:1.6rem;margin-top:1.25rem;margin-bottom:.5rem;font-weight:500;color:var(--text);letter-spacing:.01em}.highlight{padding:.45rem 0}.highlight a{color:var(--link);text-decoration:none;font-size:1.6rem;font-weight:500;letter-spacing:.01em}.highlight .muted{margin-top:.35rem;color:var(--muted)}a,.top-nav a,.highlight a{position:relative;display:inline-block}a:after,.top-nav a:after,.highlight a:after{content:"";position:absolute;left:0;bottom:-1px;width:0%;height:2px;background:var(--link);border-radius:2px;transition:width .2s cubic-bezier(.2,.8,.2,1),background .16s ease}.top-nav a.active:after{width:100%}.top-nav a.active{color:var(--link)}a:hover:after,.top-nav a:hover:after,.highlight a:hover:after{width:100%}.social-link:after,.social-link:hover:after{display:none;width:0}.top-nav .brand:after,.top-nav .brand:hover:after{display:none;width:0}@media (prefers-reduced-motion: reduce){a:after,.top-nav a:after,.highlight a:after{transition:none}}html,body{height:100%;scrollbar-width:none;-ms-overflow-style:none}.layout{display:flex;flex-direction:column;min-height:100vh}.container{flex:1}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}.site-footer{text-align:center;padding:.8rem 0 calc(1rem + env(safe-area-inset-bottom));color:var(--muted)}.site-footer .small{margin:0 0 .24rem}@media (max-width: 640px){html{font-size:104%}.container{padding:0 1.4rem 1rem;margin:1rem auto}.top-nav{padding:.6rem 0 .25rem}.top-nav .links{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;font-size:.96rem}.top-nav .links a{padding:.35rem .25rem}.site-footer{position:static;padding:.9rem 0 calc(1rem + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid rgba(255,255,255,.02)}.hero{font-size:1.9rem;margin-top:.8rem;margin-bottom:.2rem;letter-spacing:.01em}article>h1,.page-title{font-size:1.3rem}.role{font-size:1rem;margin-bottom:.6rem}.bio{font-size:1rem;max-width:44ch;line-height:1.7;margin-bottom:1.4rem}.previews{margin-top:2.4rem}.previews h2{font-size:1.12rem;margin-top:1rem}.highlight{padding:.5rem 0}.highlight a{font-size:1.12rem;font-weight:500;letter-spacing:.01em}.social{gap:.9rem}.social-link{width:34px;height:34px}.post-detail h1{font-size:1.08rem}.post,.note,.project{padding:.65rem 0}}@media (max-width: 420px){html{font-size:94%}.hero{font-size:1.15rem}.previews h2{font-size:1.05rem}.highlight a{font-size:.95rem;letter-spacing:.01em}.container{margin:.9rem auto;padding:0 .7rem}}.small{font-size:.95rem;color:var(--muted)}
