:root{--bg: #fafaf8;--fg: #1c1c1a;--muted: #6b6b64;--line: #e4e4df;--code-bg: #f0f0ec;--accent: #1d4ed8;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--mono: ui-monospace, "SF Mono", "Cascadia Code", Consolas, Menlo, monospace;color-scheme:light}:root[data-theme=dark]{--bg: #1b1b1a;--fg: #e9e9e4;--muted: #9c9c93;--line: #383834;--code-bg: #262624;--accent: #93b4ff;color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme]){--bg: #1b1b1a;--fg: #e9e9e4;--muted: #9c9c93;--line: #383834;--code-bg: #262624;--accent: #93b4ff;color-scheme:dark}}*{box-sizing:border-box;margin:0}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}html{scroll-padding-top:4.5rem;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--serif);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased}::selection{background:color-mix(in srgb,var(--accent) 22%,transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.wrap{max-width:46rem;margin-inline:auto;padding-inline:1.25rem}.site-header{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--line)}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:3.25rem}.site-title{font-family:var(--mono);font-size:.8125rem;color:var(--fg);text-decoration:none;white-space:nowrap}.site-title:hover{color:var(--accent)}.site-nav{display:flex;align-items:center;gap:1.1rem;font-family:var(--mono);font-size:.78rem}.site-nav a{color:var(--muted);text-decoration:none}.site-nav a:hover{color:var(--fg)}#theme-toggle{display:inline-flex;padding:0;border:0;background:none;color:var(--muted);cursor:pointer}#theme-toggle:hover{color:var(--fg)}:root[data-theme=dark] .icon-moon{display:none}:root[data-theme=light] .icon-sun,:root:not([data-theme]) .icon-sun{display:none}.hero{padding-block:3.5rem 3rem}.hero-photo{width:6rem;height:6rem;border:1px solid var(--line);object-fit:cover}.hero h1{margin-top:1.75rem;font-size:clamp(2.4rem,6vw,3.4rem);font-weight:600;line-height:1.05;letter-spacing:-.015em}.hero-role{margin-top:.75rem;font-family:var(--mono);font-size:.8125rem;color:var(--muted)}.hero-bio{margin-top:1rem;max-width:60ch}.hero-links{margin-top:1.5rem;display:flex;flex-wrap:wrap;gap:.35rem 1.4rem;font-family:var(--mono);font-size:.8125rem}.hero-links a{color:var(--fg);text-decoration:none}.hero-links a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}main>section:first-child,main>article:first-child{border-top:0}.section{border-top:1px solid var(--line);padding-block:2.75rem}.section-label{font-family:var(--mono);font-size:.75rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:1.75rem}.prose>*+*{margin-top:1em}.prose a{color:inherit;text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--fg) 35%,transparent)}.prose a:hover{color:var(--accent);text-decoration-color:currentColor}.prose ul,.prose ol{padding-left:1.4rem}.prose li+li{margin-top:.35em}.prose li::marker{color:var(--muted)}.prose h2,.prose h3{font-weight:600;line-height:1.25;margin-top:1.75em}.prose h2{font-size:1.35rem}.prose h3{font-size:1.1rem}.prose code{font-family:var(--mono);font-size:.85em;background:var(--code-bg);padding:.1em .35em;border-radius:3px}.prose pre{background:var(--code-bg);border:1px solid var(--line);padding:1rem 1.25rem;overflow-x:auto;line-height:1.5}.prose pre code{background:none;padding:0;font-size:.8125rem}.prose blockquote{border-left:2px solid var(--line);padding-left:1.1rem;color:var(--muted);font-style:italic}.prose img{max-width:100%;height:auto}.entry{display:grid;grid-template-columns:1fr auto;column-gap:1.5rem;row-gap:.4rem;padding-block:1.15rem}.entry+.entry{border-top:1px dashed var(--line)}.entry h3{font-size:1.0625rem;font-weight:600;line-height:1.3}.entry .org{color:var(--muted)}.entry-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem;font-family:var(--mono);font-size:.75rem;color:var(--muted);text-align:right;white-space:nowrap}.entry-body{grid-column:1 / -1}.entry-body.prose>*+*{margin-top:.5em}@media(max-width:640px){.entry{grid-template-columns:1fr}.entry-meta{flex-direction:row;justify-content:flex-start;align-items:baseline;gap:.9rem;text-align:left}}.skills{display:grid;gap:.9rem}.skill-row{display:grid;grid-template-columns:10rem 1fr;gap:1.25rem;font-size:.9375rem}.skill-row dt{font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding-top:.25rem}.skill-row dd{line-height:1.55}@media(max-width:560px){.skill-row{grid-template-columns:1fr;gap:.2rem}}.project{padding-block:1.25rem}.project+.project{border-top:1px solid var(--line)}.project-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.project h3{font-size:1.125rem;font-weight:600}.project h3 a{color:var(--fg);text-decoration:none}.project h3 a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.project-tech{font-family:var(--mono);font-size:.72rem;color:var(--muted);white-space:nowrap}.project-body{margin-top:.5rem;font-size:.9375rem}.post-row{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-block:.9rem}.post-row+.post-row{border-top:1px solid var(--line)}.post-row a{color:var(--fg);text-decoration:none}.post-row a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.post-date{font-family:var(--mono);font-size:.75rem;color:var(--muted);white-space:nowrap}.more-link{display:inline-block;margin-top:1rem;font-family:var(--mono);font-size:.8125rem;color:var(--muted);text-decoration:none}.more-link:hover{color:var(--accent)}.post-header h1{font-size:clamp(1.8rem,4.5vw,2.4rem);font-weight:600;line-height:1.15;letter-spacing:-.01em}.post-header .post-date{display:block;margin-top:.6rem}.post-header{margin-bottom:2rem}.back-link{display:inline-block;margin-bottom:1.75rem;font-family:var(--mono);font-size:.8125rem;color:var(--muted);text-decoration:none}.back-link:hover{color:var(--accent)}.empty-note{color:var(--muted);font-style:italic}.site-footer{border-top:1px solid var(--line);padding-block:1.75rem 2.5rem}.site-footer .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;font-family:var(--mono);font-size:.75rem;color:var(--muted)}.site-footer a{color:var(--muted);text-decoration:none}.site-footer a:hover{color:var(--accent)}
