:root{--color-paper:oklch(100% 0 0);--color-rule:oklch(88% .006 240);--color-ink:oklch(18% .012 245);--color-ink-soft:oklch(48% .014 245);--color-ink-muted:oklch(70% .014 245);--color-accent:oklch(36% .18 248);--font-display:"Inter Tight","Inter",-apple-system,BlinkMacSystemFont,sans-serif;--font-body:"Inter Tight","Inter",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"JetBrains Mono","IBM Plex Mono",ui-monospace,monospace;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--space-2xl:4.5rem;--space-3xl:6.5rem;--measure-prose:60ch;--ease-out:cubic-bezier(.2,.8,.2,1);--dur-micro:.12s}*{box-sizing:border-box}html,body{overflow-x:clip;margin:0}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.55}.page{display:grid;grid-template-columns:14rem 1fr;gap:var(--space-3xl);padding:var(--space-2xl)var(--space-lg)var(--space-3xl);max-width:76rem;margin:0 auto}.toc{position:sticky;top:var(--space-2xl);align-self: start;height:-moz-fit-content;height:fit-content}.toc__brand{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink);margin:0 0 var(--space-3xs);font-size:.875rem}.toc__role{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-ink-soft);margin:0 0 var(--space-xl);display:block;font-size:.75rem}.toc__list{list-style:none;margin:0 0 var(--space-xl);display:grid;gap:var(--space-2xs);border-block-start:1px solid var(--color-rule);padding:0;padding-block-start:var(--space-md)}.toc__list a{display:grid;grid-template-columns:3.25ch 1fr;gap:var(--space-sm);font-family:var(--font-mono);letter-spacing:.02em;color:var(--color-ink-soft);text-decoration:none;padding:var(--space-3xs)0;transition:color var(--dur-micro)var(--ease-out);font-size:.8125rem}.toc__list a:hover{color:var(--color-accent)}.toc__list a:focus-visible{color:var(--color-accent)}.toc__list a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.toc__list .num{color:var(--color-accent)}.toc__meta{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-ink-muted);border-block-start:1px solid var(--color-rule);display:grid;gap:var(--space-3xs);padding-block-start:var(--space-sm);font-size:.6875rem}.main{min-width:0;max-width:56rem}.section{scroll-margin-top:var(--space-2xl);margin-block-end:var(--space-3xl)}.section:first-of-type{margin-block-start:0}.section__num{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent);margin:0 0 var(--space-md);font-size:.75rem}.section__head{font-family:var(--font-display);letter-spacing:-.025em;margin:0 0 var(--space-lg);color:var(--color-ink);font-size:clamp(2rem,4vw,3rem);font-weight:600;line-height:1.05}.section__head--lede{font-size:clamp(2.5rem,5vw,4rem)}.section__body{color:var(--color-ink);max-width:var(--measure-prose);font-size:1.0625rem;line-height:1.6}.section__body p{margin:0 0 var(--space-md)}.section__body p:last-child{margin-block-end:0}.section__body strong{color:var(--color-accent);font-weight:500}.years{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9375rem}.years thead th{text-align:start;padding:var(--space-2xs)var(--space-md)var(--space-2xs)0;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink-soft);border-block-end:1px solid var(--color-rule);font-size:.75rem;font-weight:400}.years tbody td{padding:var(--space-md)var(--space-md)var(--space-md)0;border-block-end:1px solid var(--color-rule);vertical-align:baseline;color:var(--color-ink)}.years td:first-child{font-family:var(--font-mono);color:var(--color-ink-soft);white-space:nowrap;width:12ch;font-size:.8125rem}.years td:nth-child(2){width:16ch;font-weight:500}.years td:last-child{color:var(--color-ink-soft)}.projects{list-style:none;display:grid;gap:var(--space-md);margin:0;padding:0}.projects li{display:grid;gap:var(--space-3xs);border-block-end:1px solid var(--color-rule);padding-block-end:var(--space-md)}.projects li:last-child{border-block-end:none;padding-block-end:0}.proj__head{display:flex;align-items:baseline;gap:var(--space-md)}.proj__head a{font-family:var(--font-display);color:var(--color-ink);text-decoration:none;border-block-end:1px solid var(--color-rule);transition:color var(--dur-micro)var(--ease-out),border-color var(--dur-micro)var(--ease-out);padding-block-end:1px;font-size:1rem;font-weight:500}.proj__head a:hover{color:var(--color-accent);border-color:var(--color-accent)}.proj__head a:focus-visible{color:var(--color-accent);border-color:var(--color-accent)}.proj__stat{font-family:var(--font-mono);color:var(--color-ink-muted);font-size:.75rem}.proj__sub{color:var(--color-ink-soft);font-size:.9375rem;line-height:1.55}.proj__meta{font-family:var(--font-mono);color:var(--color-ink-muted);letter-spacing:.02em;font-size:.75rem}.proj__links{display:flex;gap:var(--space-md);margin-block-start:var(--space-3xs)}.proj__links a{font-family:var(--font-mono);color:var(--color-accent);text-decoration:none;transition:opacity var(--dur-micro)var(--ease-out);font-size:.8125rem}.proj__links a:hover{opacity:.7}.contact{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-md);font-family:var(--font-mono);font-size:.875rem}.contact__row{border:1px solid var(--color-rule);padding:var(--space-md);display:grid;gap:var(--space-2xs)}.contact__label{color:var(--color-ink-soft);letter-spacing:.06em;text-transform:uppercase;font-size:.75rem}.contact__value a{color:var(--color-ink);text-decoration:none;transition:color var(--dur-micro)var(--ease-out)}.contact__value a:hover{color:var(--color-accent)}.contact__value a:focus-visible{color:var(--color-accent)}.contact__value a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (max-width:64rem){.page{grid-template-columns:1fr;gap:var(--space-2xl)}.toc{position:static;border-block-end:1px solid var(--color-rule);padding-block-end:var(--space-lg)}}@media (max-width:40rem){.page{padding:var(--space-xl)var(--space-md)var(--space-2xl)}.years td:first-child{width:auto}.years thead{display:none}.years tbody td{display:block;padding:var(--space-2xs)0;border:none}.years tr{border-block-end:1px solid var(--color-rule);padding-block:var(--space-sm);display:block}}
