@font-face{font-family:commit mono;src:url(/fonts/commit-mono-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:commit mono;src:url(/fonts/commit-mono-700.woff2)format("woff2");font-weight:700;font-display:swap}:root{--bg:#fbfbf9;--fg:#1b1d21;--muted:#6b7280;--rule:#e5e5e0;--accent:#0f8a3c;--code-bg:#0e1014;--card:#ffffff;--mono:"Commit Mono", ui-monospace, "JetBrains Mono", "Source Code Pro", Menlo, monospace;--sans:system-ui, -apple-system, "Segoe UI", sans-serif}@media(prefers-color-scheme:dark){:root{--bg:#0e1014;--fg:#e4e7ec;--muted:#8a93a3;--rule:#22262e;--accent:#3dff7a;--card:#14171c}}*{box-sizing:border-box}html{background:var(--bg);color:var(--fg);color-scheme:light dark;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0 auto;max-width:42rem;padding:2.5rem max(1.25rem,env(safe-area-inset-right))4rem max(1.25rem,env(safe-area-inset-left));font:1.0625rem/1.7 var(--sans);overflow-wrap:break-word}a{color:inherit;text-decoration-color:var(--accent);text-underline-offset:.2em;-webkit-tap-highlight-color:transparent}a:active{color:var(--accent)}@media(hover:hover){a:hover{color:var(--accent)}}header.site{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;margin-bottom:3rem;font-family:var(--mono);font-size:.9rem}header.site .name{display:inline-flex;align-items:center;gap:.6rem;font-weight:700;text-decoration:none}header.site .mark{width:32px;height:32px;border-radius:50%;object-fit:cover}.cursor{display:inline-block;width:.55em;height:1.05em;margin-left:.15em;vertical-align:-.15em;background:var(--accent);animation:blink 1.1s steps(1)infinite}@keyframes blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}}header.site .short{display:none}nav{display:flex;align-items:center;margin-right:-.5rem}nav a{color:var(--muted);text-decoration:none;padding:.6rem .5rem;line-height:1}.intro{color:var(--muted);margin:0 0 2.5rem}h1,h2,h3{line-height:1.3}h1{font-size:1.75rem;margin:0 0 .25rem}.year h2{font:600 .85rem var(--mono);color:var(--muted);margin:2rem 0 .5rem}ul.posts{list-style:none;padding:0;margin:0}ul.posts li{display:flex;gap:1rem;padding:.35rem 0;border-bottom:1px solid var(--rule)}ul.posts time,.meta{font:.85rem/1.6 var(--mono);color:var(--muted)}ul.posts time{min-width:4.5rem;padding-top:.15rem;white-space:nowrap}article header{margin-bottom:2rem}article img{max-width:100%;height:auto;border-radius:6px}code{font:.9em var(--mono)}:not(pre)>code{background:var(--rule);padding:.1em .35em;border-radius:4px}pre{padding:1rem;border:1px solid var(--rule);border-radius:6px;overflow-x:auto;background:var(--code-bg)!important;line-height:1.5}blockquote{margin:1.5rem 0;padding-left:1rem;border-left:3px solid var(--accent);color:var(--muted)}hr{border:0;border-top:1px solid var(--rule);margin:2.5rem 0}footer.site{margin-top:4rem;padding-top:1rem;border-top:1px solid var(--rule);font:.8rem var(--mono);color:var(--muted)}.avatar{display:block;width:160px;height:160px;border-radius:50%;object-fit:cover;margin-bottom:1.5rem}form.contact{display:grid;gap:1rem;margin:1rem 0 .5rem}form.contact label{display:grid;gap:.3rem;font:.85rem var(--mono);color:var(--muted)}form.contact input,form.contact textarea{font:1rem var(--sans);color:var(--fg);background:0 0;border:1px solid var(--rule);border-radius:6px;padding:.6rem .75rem;min-height:2.75rem;width:100%}form.contact textarea{resize:vertical}form.contact input:focus,form.contact textarea:focus{outline:2px solid var(--accent);outline-offset:1px}form.contact button{justify-self:start;font:700 .9rem var(--mono);cursor:pointer;color:var(--bg);background:var(--fg);border:0;border-radius:6px;padding:.6rem 1.25rem;min-height:2.75rem}form.contact button:active{background:var(--accent)}@media(hover:hover){form.contact button:hover{background:var(--accent)}}form.contact .hp{position:absolute;left:-9999px}table{width:100%;border-collapse:collapse;margin:1rem 0 1.5rem;font-size:.95rem}th,td{text-align:left;vertical-align:top;padding:.45rem 1rem .45rem 0;border-bottom:1px solid var(--rule)}th{font:600 .8rem var(--mono);color:var(--muted)}td:first-child code,td:nth-child(2) code{white-space:nowrap}body.wide{max-width:66rem}.docs{display:grid;grid-template-columns:14rem minmax(0,42rem);gap:3.5rem;align-items:start}.docs-nav{position:sticky;top:1.5rem;max-height:calc(100vh - 3rem);overflow-y:auto;font:.85rem/1.4 var(--mono)}.docs-nav-title{color:var(--muted);margin:.4rem 0 .75rem}.docs-nav nav{display:block;margin:0}.docs-nav ul{list-style:none;margin:0;padding:0}.docs-nav ul ul{margin:.15rem 0 .6rem;padding-left:.75rem;border-left:1px solid var(--rule)}.docs-nav a{display:block;padding:.25rem 0;line-height:1.4;color:var(--fg);text-decoration:none}.docs-nav ul ul a{color:var(--muted)}.docs-nav a[aria-current]{color:var(--accent)}@media(hover:hover){.docs-nav a:hover{color:var(--accent)}}.docs h2{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--rule)}.docs h2,.docs h3{scroll-margin-top:1.5rem}header.project .logo{display:block;border-radius:0}header.project .logo{margin-bottom:1rem}.lede{color:var(--muted);font-size:1.15rem;margin:.5rem 0 1rem}.links{display:flex;gap:1.25rem;margin:0;font:.85rem var(--mono)}ul.cards{list-style:none;padding:0;margin:1.25rem 0 1.5rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:.85rem}.card{position:relative;display:flex;flex-direction:column;gap:.5rem;min-width:0;padding:1rem 1.1rem;background:var(--card);border:1px solid var(--rule);border-radius:10px;transition:border-color .15s,transform .15s,box-shadow .15s}.card p{margin:0}.card-title{font:700 1rem/1.3 var(--mono);margin:0}.card a.stretch{text-decoration:none}.card a.stretch::after{content:"";position:absolute;inset:0;border-radius:inherit}.card a:not(.stretch){position:relative;z-index:1}.card:focus-within{outline:2px solid var(--accent);outline-offset:2px}.card:focus-within a:focus{outline:none}@media(hover:hover){.card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 8px 24px -16px var(--accent)}.card:hover a.stretch{color:var(--accent)}}@media(prefers-reduced-motion:reduce){.card{transition:none}.card:hover{transform:none}}.card .about{font-size:.95rem;color:var(--fg)}.card .host{font:.75rem var(--mono);color:var(--muted);margin-top:-.35rem}.card-head{display:flex;align-items:center;gap:.8rem}.card-head .logo{flex:none;width:40px;height:40px;border-radius:0}.tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.3rem!important}.tag{font:.7rem/1 var(--mono);color:var(--muted);border:1px solid var(--rule);border-radius:999px;padding:.25rem .5rem}.tag.hot{color:var(--accent);border-color:initial}.card-links{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin-top:auto!important;padding-top:.25rem;font:.8rem var(--mono)}.card-links a{color:var(--muted);text-decoration:none}.card-links a:first-child{color:var(--fg)}@media(hover:hover){.card-links a:hover{color:var(--accent)}}.chips{display:flex;flex-wrap:wrap;gap:.35rem}.chips a{font:.75rem/1 var(--mono);text-decoration:none;color:var(--fg);background:var(--rule);border-radius:5px;padding:.35rem .5rem}@media(hover:hover){.chips a:hover{color:var(--bg);background:var(--accent)}}.card .post{font-size:.85rem;margin-top:auto;padding-top:.25rem}.card .post span{font:.7rem var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.05em}nav.jump{display:flex;flex-wrap:wrap;gap:.4rem;margin:1.5rem 0 .5rem}nav.jump a{font:.8rem/1 var(--mono);color:var(--muted);text-decoration:none;border:1px solid var(--rule);border-radius:999px;padding:.45rem .7rem}@media(hover:hover){nav.jump a:hover{color:var(--accent);border-color:var(--accent)}}section.setup h2{font:700 .85rem var(--mono);text-transform:lowercase;color:var(--muted);margin:2.5rem 0 0;scroll-margin-top:1.5rem}section.setup h2::before{content:"## ";color:var(--accent)}.hero{display:flex;align-items:center;gap:1.75rem;margin-bottom:2.5rem!important}.hero .avatar{flex:none;margin:0;box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--accent)}.hero h1{font-size:2rem}.prompt{font:.85rem var(--mono);color:var(--accent);margin:0 0 .35rem}.facts{display:flex;flex-wrap:wrap;gap:.4rem;margin:.75rem 0 0}.facts span{font:.75rem/1 var(--mono);color:var(--muted);border:1px solid var(--rule);border-radius:999px;padding:.4rem .65rem}.home h2{margin-top:2.75rem}.home h2::before{content:"## ";font-family:var(--mono);color:var(--accent)}ul.pills{list-style:none;padding:0;margin:1rem 0;display:flex;flex-wrap:wrap;gap:.5rem}ul.pills a{display:inline-block;font:.85rem/1 var(--mono);text-decoration:none;background:var(--card);border:1px solid var(--rule);border-radius:999px;padding:.6rem .9rem}ul.pills a span{color:var(--muted)}@media(hover:hover){ul.pills a:hover{border-color:var(--accent)}}.cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;padding:1.25rem;margin:1rem 0;background:var(--card);border:1px solid var(--rule);border-radius:10px}.cta p{margin:0;flex:1 1 16rem}a.button{font:700 .9rem var(--mono);text-decoration:none;white-space:nowrap;color:var(--bg);background:var(--fg);border-radius:6px;padding:.7rem 1.1rem}a.button:active{color:var(--bg);background:var(--accent)}@media(hover:hover){a.button:hover{color:var(--bg);background:var(--accent)}}.home ul.posts li{padding:.55rem 0}@media(max-width:56rem){.docs{grid-template-columns:minmax(0,1fr);gap:1.5rem}.docs-nav{position:static;max-height:none;padding-bottom:1rem;border-bottom:1px solid var(--rule)}.docs-nav ul ul{display:none}.docs-nav nav>ul{display:flex;flex-wrap:wrap;gap:0 1.25rem}}@media(max-width:30rem){body{padding-top:1.5rem;padding-bottom:3rem}header.site{margin-bottom:2rem;gap:.5rem 1rem}header.site .full{display:none}header.site .short{display:inline}nav .not-phone{display:none}nav{margin-inline:-.4rem}nav a{padding-inline:.4rem}.avatar{width:128px;height:128px}.hero{flex-direction:column;align-items:flex-start;gap:1.25rem}.hero h1{font-size:1.75rem}ul.cards{grid-template-columns:minmax(0,1fr)}ul,ol{padding-left:1.25rem}ul.posts li{flex-direction:column;gap:0;padding:.6rem 0}ul.posts time{min-width:0;padding-top:0}form.contact button{justify-self:stretch}table{display:block;overflow-x:auto}}@media(max-width:23.75rem){header.site .mark{display:none}}