:root{--paper: #ffffff;--ink: #20252b;--label: #555e69;--meta: #626b76;--desc: #4c5663;--accent: #245ca6;--accent-under: #a9bfdd;--rule: #dde2e8;--select: #eaf0f8;--serif: "Source Serif 4 Variable", Source Serif 4, Georgia, "Times New Roman", serif}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;color-scheme:light}body{background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-optical-sizing:auto;font-size:clamp(16.5px,1.6vw,17.5px);line-height:1.68;text-wrap:pretty;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--select)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:var(--rule)}a:hover{text-decoration-color:var(--accent)}a.accent{color:var(--accent);text-decoration-color:var(--accent-under)}a.accent:hover{text-decoration-color:var(--accent)}.page{max-width:760px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;gap:clamp(36px,5vw,52px);padding:clamp(40px,7vw,76px) clamp(22px,6vw,32px) clamp(36px,6vw,56px)}.name{font-size:clamp(36px,7vw,48px);font-weight:600;line-height:1.1;letter-spacing:-.045em}.back{font-size:15px}.back a{color:var(--label);text-decoration:none}.back a:hover{color:var(--ink)}.title{font-size:32px;font-weight:600;line-height:1.2;letter-spacing:-.025em}section{display:flex;flex-direction:column;gap:13px}.label{font-size:15px;font-weight:600;color:var(--label)}.label a{color:inherit;text-decoration:none}.label a:hover{color:var(--ink)}.intro{display:flex;flex-direction:column;gap:14px}.rows{display:flex;flex-direction:column;gap:11px;font-size:16.5px}.row{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px}.row>a,.row>span:first-child{min-height:24px;display:inline-flex;align-items:center}.meta{font-size:13px;color:var(--meta)}.note{font-size:14px;color:var(--meta)}.more{font-size:14px;color:var(--label);text-decoration:none;min-height:24px;display:inline-flex;align-items:center}.more:hover{color:var(--ink)}.entries{display:flex;flex-direction:column;gap:30px}.entry{display:flex;flex-direction:column;gap:4px}.entry-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;font-size:16.5px}.entry-head>a,.entry-head>span:first-child{min-height:24px;display:inline-flex;align-items:center}.entry-head.plain>span:first-child{display:block;min-height:0}.desc{font-size:15px;line-height:1.58;color:var(--desc)}.org{color:var(--desc)}.entry-line{font-size:16.5px;line-height:1.5}.desc a{text-decoration-color:var(--rule)}.sublinks{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:14px;padding-top:2px}.sublinks a{color:var(--label);text-decoration-color:var(--rule)}.sublinks a:hover{color:var(--ink)}.post-head{display:flex;flex-direction:column;gap:9px}.post-head h1{font-size:clamp(24px,3.4vw,27px);font-weight:600;line-height:1.28}.post-head .meta{font-size:14px}.prose{display:flex;flex-direction:column;gap:17px;line-height:1.72}.prose h2{font-size:19px;font-weight:600;line-height:1.35;margin-top:12px}.prose h3{font-size:17px;font-weight:600;line-height:1.4;margin-top:8px}.prose ul,.prose ol{padding-left:22px;display:flex;flex-direction:column;gap:8px}.prose blockquote{border-left:1px solid var(--rule);padding-left:16px;color:var(--desc)}.prose code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.87em;background:var(--select);padding:.1em .35em;border-radius:3px}.prose pre{background:var(--select);padding:14px 16px;border-radius:6px;overflow-x:auto;font-size:14px;line-height:1.55}.prose pre code{background:none;padding:0;font-size:inherit}.prose img{display:block;max-width:100%;height:auto;border-radius:4px}.prose hr{border:0;border-top:1px solid var(--rule);margin:6px 0}footer{margin-top:auto;padding-top:clamp(40px,7vw,64px);display:flex;flex-wrap:wrap;gap:20px;font-size:15px}footer a{color:var(--label);text-decoration:none;min-height:24px;display:inline-flex;align-items:center}footer a:hover{color:var(--ink)}.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--ink);color:var(--paper);padding:.6rem 1rem;border-radius:6px;text-decoration:none}.skip:focus{left:1rem;top:1rem}.profile{display:flex;flex-direction:column;gap:16px}.profile-context{color:var(--meta);font-size:14px}.profile-lede{font-size:clamp(22px,4vw,28px);line-height:1.4;letter-spacing:-.02em;max-width:580px;margin-top:8px}.profile-detail{color:var(--desc);font-size:16px;max-width:590px}.profile-links{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;margin-top:8px;font-size:14px}.profile-links a{min-height:44px;display:inline-flex;align-items:center}.profile-links .resume-link{background:var(--ink);color:#fff;border-radius:5px;padding:8px 16px;text-decoration:none}.profile-links .resume-link:hover{background:var(--accent)}.availability{font-size:13px;color:var(--meta)}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.selected-work{display:flex;flex-direction:column}.project-summary{padding:20px 0;border-bottom:1px solid var(--rule)}.project-summary:first-child{padding-top:6px}.project-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 16px;margin-bottom:5px}.project-heading h3{font-size:17px;font-weight:600}.project-heading h3 a{text-decoration:none}.project-heading h3 a:hover{color:var(--accent);text-decoration:underline}.project-heading .meta{margin-left:auto}.entry[id]{scroll-margin-top:32px}@media(max-width:480px){.project-heading{align-items:flex-start;flex-direction:column}.project-heading .meta{margin-left:0}.page{padding-top:36px}}
