*{box-sizing:border-box}body{margin:0;font-family:"Source Sans 3",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:17px;line-height:1.65;color:#1a1a1a;background:#fff;display:flex;flex-direction:column;min-height:100vh}.wrap{width:100%;max-width:860px;margin:0 auto;padding:0 20px}main.wrap{flex:1 0 auto;padding-bottom:64px}a{color:#1a1a1a}a:hover{color:#6a6a6a}.site-header{background:#1a1a1a;padding:20px 0}.header-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px}.brand{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.logo{font-family:"Zilla Slab",Rockwell,"Roboto Slab",serif;font-size:26px;font-weight:700;color:#fff;text-decoration:none}.site-nav{display:flex;align-items:center;flex-wrap:wrap;gap:18px}.site-nav a{color:#cfcfcf;text-decoration:none;font-size:16px;font-weight:500}.site-nav a:hover{color:#fff;text-decoration:underline}.site-title{font-family:"Zilla Slab",Rockwell,"Roboto Slab",serif;font-size:40px;font-weight:700;margin:40px 0 0 0;line-height:1.15}.site-tagline{font-family:"Zilla Slab",Rockwell,"Roboto Slab",serif;font-weight:500;font-size:20px;color:#6a6a6a;margin:8px 0 0 0}.site-intro{margin:14px 0 22px 0;max-width:680px}.hero-links{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 8px 0}.section{margin:40px 0 0 0}.section-bar{margin:0 0 16px 0;padding:0 0 8px 0;border-bottom:2px solid #1a1a1a}.section-name{font-family:"Zilla Slab",Rockwell,"Roboto Slab",serif;font-weight:600;font-size:22px}.section-body>:first-child{margin-top:0}.section-body>:last-child{margin-bottom:0}.project-list{list-style:none;margin:0;padding:0}.project-row{padding:16px 0;border-top:1px solid #e2e2e2}.project-row:first-child{border-top:none;padding-top:0}.project-head{display:flex;justify-content:space-between;align-items:baseline;gap:14px}.project-name{font-family:"Zilla Slab",Rockwell,"Roboto Slab",serif;font-size:19px;font-weight:600;margin:0 0 3px 0}.project-name a{text-decoration:none}.project-name a:hover{text-decoration:underline}.project-dates{color:#6a6a6a;font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums}.project-blurb{margin:0 0 8px 0;color:#3a3a3a;font-size:16px}.tags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 6px 0}.tag{font-size:12px;font-weight:600;color:#6a6a6a;background:#f5f5f5;border:1px solid #e2e2e2;border-radius:4px;padding:1px 8px}.project-links a{font-size:14px;font-weight:600;margin-right:14px;text-decoration:none}.project-links a:hover{text-decoration:underline}.prose h2,.lesson h2{font-family:"Zilla Slab",Rockwell,"Roboto Slab",serif;font-size:23px;margin-top:36px}.prose h3,.lesson h3{font-family:"Zilla Slab",Rockwell,"Roboto Slab",serif;font-size:19px;margin-top:28px}.prose blockquote,.lesson blockquote{margin:1em 0;padding:2px 18px;border-left:3px solid #e2e2e2;color:#6a6a6a}.prose table,.lesson table{border-collapse:collapse;margin:1em 0}.prose table th,.prose table td,.lesson table th,.lesson table td{border:1px solid #e2e2e2;padding:6px 12px}.prose table th,.lesson table th{background:#f5f5f5}.prose img,.lesson img{max-width:100%}.post-list{list-style:none;margin:0;padding:0}.post-row{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:13px 0;border-bottom:1px solid #e2e2e2}.post-row a{font-weight:600;text-decoration:none;font-size:17px}.post-row a:hover{text-decoration:underline}.post-row time{color:#6a6a6a;font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums}.post-title{font-family:"Zilla Slab",Rockwell,"Roboto Slab",serif;margin:30px 0 4px 0;font-size:30px;line-height:1.25}.post-meta{color:#6a6a6a;font-size:14px;margin:0 0 26px 0;padding-bottom:14px;border-bottom:1px solid #e2e2e2}code{font-family:ui-monospace,"SF Mono","Cascadia Code",Menlo,Consolas,monospace;font-size:.92em}:not(pre)>code{background:#f5f5f5;border:1px solid #e2e2e2;border-radius:4px;padding:1px 5px}pre{padding:14px 16px;border-radius:6px;border:1px solid #e2e2e2;background:#f5f5f5;overflow-x:auto;line-height:1.5}pre code{font-size:14px}.callout{border:1px solid #e2e2e2;border-left-width:4px;border-radius:6px;padding:12px 18px;margin:1.2em 0;background:#f5f5f5}.callout .callout-title{font-weight:700;margin:0 0 4px 0}.callout p:last-child{margin-bottom:0}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:6px;text-decoration:none;font-size:14px;font-weight:600;line-height:1.35;border:1px solid #1a1a1a}.btn-primary{background:#1a1a1a;color:#fff}.btn-primary:hover{background:#000}.btn-ghost{color:#1a1a1a;background:#fff}.btn-ghost:hover{background:#f5f5f5}.back{margin:34px 0 50px 0}@media (max-width: 600px){body{font-size:16px}.site-title{font-size:30px}.post-title{font-size:24px}.site-header{padding:14px 0}.site-nav{width:100%;gap:14px}}