:root{--color-bg:#fafafa;--color-text:#171717;--color-text-secondary:#525252;--color-text-tertiary:#a3a3a3;--color-border:#e5e5e5;--color-link:#171717;--color-link-hover:#525252;--font-sans:"Newsreader",Georgia,serif;--font-mono:"Geist Mono",ui-monospace,monospace;--max-width:640px;--space-xs:.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2.5rem;--space-xl:4rem}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:2rem;font-size:17px}body{font-family:var(--font-sans);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:1rem;font-weight:400;line-height:1.75}::selection{background-color:var(--color-text);color:var(--color-bg)}main{max-width:var(--max-width);padding:var(--space-xl)var(--space-md);margin:0 auto}a{color:var(--color-link);text-decoration:underline;-webkit-text-decoration-color:var(--color-border);text-decoration-color:var(--color-border);text-underline-offset:3px;transition:text-decoration-color .2s}a:hover{-webkit-text-decoration-color:var(--color-text);text-decoration-color:var(--color-text)}.header{margin-bottom:var(--space-md)}.name{letter-spacing:-.02em;margin-bottom:var(--space-xs);font-size:1.75rem;font-weight:500;line-height:1.3}.name a{text-decoration:none}.name a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--color-border);text-decoration-color:var(--color-border)}.tagline{color:var(--color-text-secondary);font-size:1rem;line-height:1.6}.nav{gap:var(--space-sm);margin-bottom:var(--space-xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border);display:flex}.nav a{color:var(--color-text-secondary);font-size:.9rem;text-decoration:none}.nav a:hover{color:var(--color-text)}.section{margin-bottom:var(--space-xl)}.section p{margin-bottom:var(--space-sm)}.section p:last-child{margin-bottom:0}.section strong{font-weight:500}h2{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-tertiary);margin-bottom:var(--space-md);font-size:.875rem;font-weight:500}.section-intro{color:var(--color-text-secondary);margin-bottom:var(--space-md)}.text-secondary{color:var(--color-text-secondary)}.work-list{gap:var(--space-md);flex-direction:column;display:flex}.work-item{padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border)}.work-item:last-child{border-bottom:none;padding-bottom:0}.work-header{justify-content:space-between;align-items:baseline;margin-bottom:.25rem;display:flex}.work-company{font-weight:500}.work-date{font-family:var(--font-mono);color:var(--color-text-tertiary);font-size:.8rem}.work-role{color:var(--color-text-secondary);font-size:.95rem}.pub-list{gap:var(--space-md);flex-direction:column;list-style:none;display:flex}.pub-list li{padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border)}.pub-list li:last-child{border-bottom:none;padding-bottom:0}.pub-list a{margin-bottom:.375rem;font-weight:400;line-height:1.5;display:block}.pub-venue{font-family:var(--font-mono);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.02em;font-size:.75rem}.pub-badge{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.02em;color:var(--color-bg);background-color:var(--color-text);vertical-align:middle;border-radius:2px;margin-left:.5rem;padding:.15rem .4rem;font-size:.65rem;display:inline-block}.connect-links{gap:var(--space-sm);flex-wrap:wrap;display:flex}.connect-links a{font-size:.95rem}.footer{max-width:var(--max-width);padding:var(--space-lg)var(--space-md);border-top:1px solid var(--color-border);margin:0 auto}.copyright{color:var(--color-text-tertiary);font-size:.85rem}.writing-header{margin-bottom:var(--space-lg)}.writing-title{letter-spacing:-.02em;margin-bottom:var(--space-xs);font-size:2rem;font-weight:500;line-height:1.2}.writing-byline{color:var(--color-text-secondary);font-size:1rem}.writing-byline a{color:var(--color-text-secondary)}.writing-byline a:hover{color:var(--color-text)}.writing-content{margin-top:var(--space-md)}.writing-intro{color:var(--color-text-secondary);margin-bottom:var(--space-md)}.writing-list{gap:var(--space-xs);flex-direction:column;padding-left:1.25rem;list-style:outside;display:flex}.writing-list li{color:var(--color-text-tertiary)}.writing-list li a{color:var(--color-text);text-decoration:underline;-webkit-text-decoration-color:var(--color-border);text-decoration-color:var(--color-border)}.writing-list li a:hover{-webkit-text-decoration-color:var(--color-text);text-decoration-color:var(--color-text)}.post-list{gap:var(--space-xs);flex-direction:column;list-style:none;display:flex}.post-list li a{padding:var(--space-xs)0;text-decoration:underline;-webkit-text-decoration-color:var(--color-text-tertiary);text-decoration-color:var(--color-text-tertiary);transition:text-decoration-color .2s;display:block}.post-list li a:hover{-webkit-text-decoration-color:var(--color-text);text-decoration-color:var(--color-text)}.post{max-width:var(--max-width)}.post-header{margin-bottom:var(--space-xl)}.post-title{letter-spacing:-.02em;margin-bottom:var(--space-xs);font-size:2rem;font-weight:500;line-height:1.2}.post-byline{color:var(--color-text-secondary);font-size:1rem}.post-byline a{color:var(--color-text-secondary)}.post-byline a:hover{color:var(--color-text)}.post-content{margin-bottom:var(--space-xl)}.post-h1{margin-top:var(--space-xl);margin-bottom:var(--space-md);font-size:1.5rem;font-weight:500}.post-h2{margin-top:var(--space-xl);margin-bottom:var(--space-md);font-size:1.25rem;font-weight:500}.post-h3{margin-top:var(--space-lg);margin-bottom:var(--space-sm);font-size:1.1rem;font-weight:500}.post-p{margin-bottom:var(--space-md)}.post-link{color:var(--color-link)}.inline-code{font-family:var(--font-mono);background:var(--color-border);border-radius:3px;padding:.15em .4em;font-size:.9em}.code-block{font-family:var(--font-mono);color:#e5e5e5;padding:var(--space-md);margin:var(--space-md)0;background:#1a1a1a;border-radius:6px;font-size:.85rem;overflow-x:auto}.post-quote{border-left:3px solid var(--color-border);padding-left:var(--space-md);color:var(--color-text-secondary);margin:var(--space-md)0;font-style:italic}.post-ul,.post-ol{margin:var(--space-md)0;padding-left:var(--space-md)}.post-li{margin-bottom:var(--space-xs)}@media (max-width:640px){html{font-size:16px}main{padding:var(--space-lg)var(--space-sm)}.name{font-size:1.5rem}.writing-title,.post-title{font-size:1.75rem}.work-header{flex-direction:column;gap:.125rem}.work-date{order:-1}}
