:root{--bg:#fafaf9;--ink:#111110;--ink-2:#63635e;--ink-3:#6f6f69;--hair:#e6e6e1;--hair-strong:#c9c9c3;--chip:#f1f1ee;--chip-hover:#e8e8e4;--primary-hover:#2b2b29;--green:#2f9e57;--shot-shadow:0 0 0 1px var(--hair), 0 28px 56px -32px #1111106b;--ease-out:cubic-bezier(.16, 1, .3, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0e0e0d;--ink:#ededea;--ink-2:#9d9d96;--ink-3:#85857f;--hair:#262624;--hair-strong:#3d3d3a;--chip:#1a1a18;--chip-hover:#242422;--primary-hover:#d6d6d2;--green:#47c072;--shot-shadow:0 0 0 1px var(--hair), 0 28px 56px -30px #000c}}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color:var(--ink);-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:24px}body{font-family:var(--font-geist), ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:15px;line-height:1.6}h1,h2,h3,p,ul{margin:0;padding:0}ul{list-style:none}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}::selection{background:color-mix(in oklab, var(--green) 24%, var(--bg));color:var(--ink)}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:4px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.page{max-width:1248px;margin:0 auto;padding:56px 24px 64px}.top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;display:flex}.top-links{flex-wrap:wrap;align-items:baseline;gap:8px 22px;display:flex}.nowrap{white-space:nowrap}.name{align-items:center;display:inline-flex}.name b{font-weight:600}.avatar{object-fit:cover;width:32px;height:32px;box-shadow:0 0 0 1px var(--hair);border-radius:50%;margin-right:10px}.name span{color:var(--ink-2);margin-left:8px}.top nav{flex-wrap:wrap;gap:4px 22px;display:flex}.top nav a{color:var(--ink-2);transition:color .15s}.top nav a:hover{color:var(--ink)}.lang{color:var(--ink-2);letter-spacing:.02em;align-items:baseline;gap:7px;font-size:13px;display:inline-flex}.lang [aria-current]{color:var(--ink);font-weight:500}.lang a{transition:color .15s}.lang a:before{content:"/";color:var(--hair-strong);margin-right:7px}.lang a:hover{color:var(--ink)}.intro{margin-top:96px}.intro h1{letter-spacing:-.022em;text-wrap:balance;max-width:21em;font-size:30px;font-weight:500;line-height:1.25}.intro h1 span{color:var(--ink-2)}.intro-actions{flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:28px;display:flex}.actions{flex-wrap:wrap;gap:10px;display:flex}.pill{background:var(--chip);height:36px;box-shadow:inset 0 0 0 1px var(--hair);color:var(--ink);font:inherit;white-space:nowrap;cursor:pointer;transition:background-color .15s, transform .15s var(--ease-out);border:0;border-radius:999px;align-items:center;padding:0 15px;font-size:14px;line-height:1;display:inline-flex}.pill:hover{background:var(--chip-hover)}.pill:active{transform:translateY(1px)}.pill:focus-visible{border-radius:999px}.pill.primary{background:var(--ink);box-shadow:none;color:var(--bg)}.pill.primary:hover{background:var(--primary-hover)}.copy-text{display:inline-block}.pill[data-state=copied] .copy-text,.pill[data-state=manual] .copy-text{animation:swap .25s var(--ease-out)}@keyframes swap{0%{opacity:0;transform:translateY(3px)}}.status{color:var(--ink-2);align-items:center;gap:8px;font-size:14px;display:inline-flex}.status:before{content:"";background:var(--green);border-radius:50%;width:7px;height:7px}.block{margin-top:88px}.label{color:var(--ink-2);margin-bottom:20px;font-size:13px;font-weight:500}.work+.work{margin-top:48px}.shot{box-shadow:var(--shot-shadow);cursor:zoom-in;background:#121314;border-radius:12px;margin-bottom:18px;display:block;overflow:hidden}.shot picture{display:block}.shot img{width:100%;transition:transform .6s var(--ease-out)}.shot:hover img{transform:scale(1.012)}.shot:focus-visible{border-radius:12px}.work-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;display:flex}.work h3,.job h3{letter-spacing:-.012em;font-size:18px;font-weight:600;line-height:1.35}.work h3 a:hover{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.job-sub{color:var(--ink-2);margin-top:2px;font-size:14px}.points{gap:6px;max-width:64ch;margin-top:14px;display:grid}.points li{color:var(--ink-2);text-wrap:pretty;padding-left:18px;position:relative}.points li:before{content:"";background:var(--hair-strong);border-radius:50%;width:5px;height:5px;position:absolute;top:.68em;left:3px}.job+.job{margin-top:36px}.job-minor h3{letter-spacing:0;font-size:15px}sup{vertical-align:.42em;font-size:.72em;line-height:0}.skills{margin:0}.skills div{border-top:1px solid var(--hair);grid-template-columns:11.5rem minmax(0,1fr);gap:2px 20px;padding:11px 0;display:grid}.skills div:last-child{border-bottom:1px solid var(--hair)}.skills dt{font-weight:500}.skills dd{color:var(--ink-2);margin:0}.meta{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:14px}.meta a{transition:color .15s}.meta a:hover{color:var(--ink)}.desc{max-width:64ch;color:var(--ink-2);text-wrap:pretty;margin-top:8px}.inline{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:color-mix(in oklab, var(--ink) 28%, transparent);text-decoration-color:color-mix(in oklab, var(--ink) 28%, transparent);text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .15s}.inline:hover{text-decoration-color:currentColor}.contact-line{text-wrap:pretty;letter-spacing:-.015em;max-width:40em;margin-bottom:20px;font-size:20px;font-weight:500;line-height:1.4}.foot{border-top:1px solid var(--hair);color:var(--ink-2);flex-wrap:wrap;justify-content:space-between;gap:4px 24px;margin-top:96px;padding-top:20px;font-size:13px;display:flex}.nf{margin-top:96px}.nf h1{letter-spacing:-.022em;font-size:30px;font-weight:500;line-height:1.25}.nf p{color:var(--ink-2);margin-top:12px}.nf-fr{margin-top:40px}.nf .nf-title{color:var(--ink);letter-spacing:-.015em;margin-top:0;font-size:20px;font-weight:500}@media (prefers-reduced-motion:no-preference){.intro h1,.intro-actions,#experience{animation:rise .7s var(--ease-out) both}.intro-actions{animation-delay:60ms}#experience{animation-delay:.12s}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (max-width:640px){.page{padding:32px 20px 48px}.top{flex-direction:column;align-items:flex-start}.top-links{justify-content:space-between;gap:16px;width:100%}.top nav{gap:16px}.skills div{grid-template-columns:minmax(0,1fr)}.job-meta .sep,.job-sub .sep{display:none}.job-meta>span,.job-sub>span{display:block}.job-meta .nowrap,.job-sub .nowrap{color:var(--ink-3)}.job-sub{margin-top:10px}.intro{margin-top:64px}.intro h1{font-size:25px;line-height:1.28}.block{margin-top:64px}.contact-line{font-size:18px}}.hero{grid-template-columns:minmax(0,1fr) 340px;align-items:center;gap:64px;display:grid}.hero h1{letter-spacing:-.032em;max-width:19em;font-size:42px;font-weight:600;line-height:1.1}.hero h1 span{font-weight:500}.now{background:var(--chip);box-shadow:inset 0 0 0 1px var(--hair);border-radius:16px;padding:22px 24px}.now .label{margin-bottom:10px}.now-role{font-weight:600}.now-mandate,.now-stack{margin-top:10px}.feature{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:48px;display:grid}.feature .shot{margin-bottom:0}.feature h3{letter-spacing:-.03em;font-size:34px}.feature .work-head{display:block}.feature .meta{margin-top:4px}.trio{border-top:1px solid var(--hair);grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;margin-top:64px;padding-top:32px;display:grid}.trio .work+.work,.projects .work+.work{margin-top:0}.trio .work-head{display:block}.trio .meta{margin-top:4px}.exp-grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:64px;display:grid}.exp-skills .label{margin-bottom:12px}.exp-skills .skills div{grid-template-columns:9.5rem minmax(0,1fr)}@media (max-width:900px){.hero,.feature,.trio,.exp-grid{grid-template-columns:minmax(0,1fr)}.hero{gap:32px}.hero h1{font-size:32px}.trio{gap:40px}.exp-grid{gap:48px}}@media (max-width:640px){.hero h1{font-size:26px;line-height:1.22}.feature h3{font-size:26px}.exp-skills .skills div{grid-template-columns:minmax(0,1fr)}}
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.NRAaXG_className{font-family:Geist,Geist Fallback;font-style:normal}.NRAaXG_variable{--font-geist:"Geist", "Geist Fallback"}
