.footer{margin-top:36px;display:flex;flex-wrap:wrap;gap:10px 18px;align-items:baseline;font-size:14px}.footer--ruled{margin-top:56px;padding-top:24px;border-top:1px solid var(--rule-strong)}.footer__primary{font-family:var(--mono);font-size:12px;color:var(--accent);text-decoration:none}.footer__slash{color:var(--slash)}.footer__externals{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:baseline}@media(max-width:640px){.footer{flex-direction:column;align-items:flex-start;gap:12px}.footer__primary{min-height:44px;display:flex;align-items:center}.footer--ruled{margin-top:40px}.footer__slash{display:none}.footer__externals{gap:20px}.footer__externals .link{min-height:44px;display:flex;align-items:center}}.tl{margin:44px 0 0;padding:0;list-style:none}.tl__row{display:grid;grid-template-columns:52px 10px 1fr;gap:16px;padding:15px 0;border-top:1px solid var(--rule)}.tl__row:last-child{border-bottom:1px solid var(--rule)}.tl__year{font-family:var(--mono);font-size:12px;color:var(--faint);padding-top:3px;font-variant-numeric:tabular-nums}.tl__dot{width:6px;height:6px;margin-top:8px}.tl__dot--work{background:var(--accent)}.tl__dot--life{border:1px solid var(--dot-hollow)}.tl__title{font-size:16px}.tl__title--work{font-weight:500;color:var(--ink)}.tl__title--life{font-weight:400;color:var(--ink-soft)}.tl__detail{font-size:14px;color:var(--muted);margin-top:3px}@media(max-width:640px){.tl{margin-top:34px}.tl__row{grid-template-columns:44px 8px 1fr;gap:12px;padding:13px 0}.tl__year{font-size:11px}.tl__dot{width:5px;height:5px;margin-top:7px}.tl__title{font-size:15px}.tl__detail{font-size:13px;line-height:1.45;margin-top:2px}}.home{padding:80px 40px 64px;color:var(--ink)}.masthead{display:grid;grid-template-columns:1fr auto;grid-template-areas:"title portrait" "intro portrait";align-items:start;gap:24px 28px}.masthead__name{grid-area:title;margin:0;font-family:var(--display);font-weight:400;font-size:56px;line-height:.95;letter-spacing:-.015em}.masthead__break{display:none}.masthead__portrait{grid-area:portrait;width:148px;height:auto;flex:none;display:block}.masthead__intro{grid-area:intro;display:flex;flex-direction:column;gap:14px}.masthead__meta{margin:0;font-family:var(--mono);font-size:11px;line-height:1.8;letter-spacing:.03em;color:var(--muted-mono)}.masthead__lede{margin:0;font-family:var(--serif);font-size:19px;line-height:1.55;color:var(--ink-body);max-width:44ch;text-wrap:pretty}.home__colophon{margin:36px 0 0;font-size:15px;line-height:1.6;color:var(--muted);text-wrap:pretty}@media(max-width:640px){.home{padding:44px 24px 48px}.masthead{grid-template-areas:"title portrait" "intro intro";align-items:end;gap:20px 16px}.masthead__name{font-size:40px}.masthead__break{display:inline}.masthead__portrait{width:88px;margin-bottom:-4px}.masthead__meta{font-size:10px;line-height:1.9;letter-spacing:.04em}.masthead__lede{font-size:18px;line-height:1.5}.home__colophon{margin-top:28px;font-size:14px}}.resume{padding:64px 40px 72px;color:var(--ink)}.resume__back{font-family:var(--mono);font-size:12px;color:var(--accent);text-decoration:none}.resume__head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-top:28px;padding-bottom:20px;border-bottom:1px solid var(--rule-strong)}.resume__title{margin:0;font-family:var(--display);font-weight:400;font-size:34px;line-height:1;letter-spacing:-.01em}.resume__download{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--accent);text-decoration:none;border:1px solid var(--accent-border);padding:9px 14px;background:var(--accent-bg);white-space:nowrap;transition:border-color .15s ease}.resume__download:hover{border-color:var(--accent)}.resume__summary{margin:28px 0 0;font-family:var(--serif);font-size:20px;line-height:1.55;color:var(--ink-body);max-width:54ch;text-wrap:pretty}.resume__section{margin-top:52px}.resume__label{margin:0;font-family:var(--serif);font-style:italic;font-weight:400;font-size:17px;color:var(--label);padding-top:2px}.resume__label--stacked{padding:0 0 10px}.resume__row{display:grid;grid-template-columns:120px 1fr;gap:28px}.resume__row--ruled{margin-top:40px;padding-top:28px;border-top:1px solid var(--rule)}.job{display:grid;grid-template-columns:120px 1fr;gap:28px;padding:26px 0;border-top:1px solid var(--rule)}.job:last-child{border-bottom:1px solid var(--rule)}.job__when{display:flex;flex-direction:column;gap:2px;font-family:var(--mono);font-size:11px;line-height:1.7;color:var(--muted);letter-spacing:.03em}.job__start:after{content:"—"}.job__where{margin-top:6px;color:var(--faint-alt)}.job__body{display:flex;flex-direction:column;gap:12px}.job__company{margin:0;font-family:var(--serif);font-weight:400;font-size:26px;line-height:1.1}.job__role{font-size:14px;color:var(--muted);margin-top:4px}.job__bullets{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:9px;font-size:15px;line-height:1.55;color:var(--ink-soft);text-wrap:pretty}.job__bullet{display:grid;grid-template-columns:16px 1fr}.job__dash{color:var(--dash)}.resume__skills{display:flex;flex-direction:column;gap:18px}.skill{display:flex;flex-direction:column;gap:6px}.skill__label{margin:0;font-size:13px;font-weight:500;color:var(--muted-mono)}.skill__body{margin:0;font-size:15px;line-height:1.6;color:var(--ink-soft);text-wrap:pretty}.edu__school{font-family:var(--serif);font-size:22px}.edu__detail{font-size:14px;color:var(--muted);margin-top:4px}.resume__interests{margin:0;font-size:15px;line-height:1.6;color:var(--ink-soft);max-width:46ch;text-wrap:pretty}@media(max-width:720px){.resume{padding:44px 24px 56px}.resume__head{flex-direction:column;align-items:flex-start;gap:16px}.resume__title{font-size:30px}.resume__download{min-height:44px;display:flex;align-items:center}.resume__summary{font-size:18px}.resume__section{margin-top:40px}.resume__row,.job{grid-template-columns:1fr;gap:12px}.job__when{flex-direction:row;flex-wrap:wrap;gap:0 6px}.job__start:after{content:" —"}.job__where{margin-top:0}.job__where:before{content:"· "}.job__company{font-size:22px}}.notfound{padding:120px 40px 96px}.notfound__code{margin:0;font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--faint)}.notfound__title{margin:16px 0 0;font-family:var(--display);font-weight:400;font-size:48px;line-height:.95;letter-spacing:-.015em}.notfound__body{margin:16px 0 0;font-family:var(--serif);font-size:19px;line-height:1.55;color:var(--ink-body)}.notfound__links{margin-top:40px;padding-top:24px;border-top:1px solid var(--rule);display:flex;flex-wrap:wrap;gap:10px 18px;align-items:baseline;font-size:14px}.notfound__home{font-family:var(--mono);font-size:12px;color:var(--accent);text-decoration:none}@media(max-width:640px){.notfound{padding:72px 24px 64px}.notfound__title{font-size:36px}}:root{--canvas: #e8e5de;--paper: #f5f2eb;--ink: #1c1a16;--ink-body: #2e2a24;--ink-soft: #3a3630;--muted: #6b6558;--muted-mono: #857f70;--faint: #a29c8e;--faint-alt: #918b7e;--label: #8a8578;--rule: #e2ded4;--rule-strong: #ddd8cc;--hairline: #c9c4b8;--dot-hollow: #a8a296;--dash: #c0b9a6;--slash: #d4d1ca;--accent: #8a5a2b;--accent-border: #ddcfb8;--accent-bg: #efeadd;--display: "Instrument Serif", Georgia, "Times New Roman", serif;--serif: Newsreader, Georgia, "Times New Roman", serif;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--sans: "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif}*,*:before,*:after{box-sizing:border-box}html{background:var(--canvas)}body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit}a:hover{color:var(--accent)}.link{text-decoration:none;border-bottom:1px solid var(--hairline)}.link-quiet{position:relative;text-decoration:none;transition:color .15s ease}.link-quiet:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .25s ease}.link-quiet:hover:after{transform:scaleX(1)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}img{max-width:100%}.sheet{background:var(--paper);min-height:100vh}.sheet__inner{max-width:680px;margin:0 auto}@media(max-width:640px){.sheet__inner{max-width:none}}.skip{position:absolute;left:-9999px;top:0;z-index:10;background:var(--ink);color:var(--paper);font-family:var(--mono);font-size:12px;padding:10px 14px;text-decoration:none}.skip:focus{left:8px;top:8px;color:var(--paper)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
