@font-face{font-family:Remingo;src:url(/fonts/remingo-remingo-regular-400.otf)format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:PP Neue Montreal Mono;src:url(/fonts/PPNeueMontrealMono-Medium.otf)format("opentype");font-weight:500;font-style:normal;font-display:swap}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#edf2f5;--content-inset-x:clamp(1.25rem, 5vw, 6rem);--content-inset-y:clamp(1.25rem, 6vh, 5rem);--frame-inset:clamp(1.25rem, 2vw, 2rem);background:#0b0e13;font-family:PP Neue Montreal Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}*{box-sizing:border-box}body{background:inherit;min-width:320px;min-height:100svh;margin:0;overflow:hidden}#background-canvas{z-index:0;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.background-mask{z-index:1;pointer-events:none;background:radial-gradient(circle at 72% 30%,#6e947b1f,#0000 38rem),linear-gradient(135deg,#0a0d1238,#0a0d128a);position:absolute;inset:0}.page-frame{z-index:2;inset:var(--frame-inset);isolation:isolate;background:#11151c;border:1px solid #69737d;position:fixed;overflow:hidden;box-shadow:0 1.5rem 4rem #0003}.page-frame:before{content:"";z-index:0;background:radial-gradient(115% 125% at 0 0,#264d3d 0%,#111914 48%,#0000 72%);position:absolute;inset:0}.site-shell{z-index:2;grid-template-columns:clamp(7rem,30vw,24rem) minmax(0,1fr);width:100%;min-width:0;height:100%;min-height:0;display:grid;position:relative}.site-rail{flex-direction:column;height:100%;padding:2rem;display:flex;position:sticky;top:0}.wordmark{color:inherit;letter-spacing:-.08em;white-space:nowrap;font-family:Remingo,Inter,ui-sans-serif,system-ui,sans-serif;font-size:2rem;font-weight:400;line-height:1;text-decoration:none}.role{color:#aeb8bf;margin:.5rem 0 0;font-size:1.09375rem}.site-nav{gap:.75rem;margin:4rem 0 0;padding:0;list-style:none;display:grid}.site-copyright{z-index:3;right:var(--frame-inset);bottom:calc(var(--frame-inset) - 1rem);color:#aeb8bf;pointer-events:none;margin:0;font-size:.75rem;line-height:1;position:fixed}.site-content{min-width:0;height:100%;min-height:0;padding:var(--content-inset-y) var(--content-inset-x);display:block;overflow:hidden auto}.site-content section{text-align:right;width:min(100%,50rem);max-width:50rem;min-height:100%;margin-left:auto}.site-content section:not([hidden]){flex-direction:column;justify-content:flex-end;display:flex}h1{letter-spacing:-.075em;margin:0;font-size:clamp(2.25rem,9vw,8rem);font-weight:600;line-height:.9}.lede,.project-card p:last-child{color:#c7c7c1;max-width:30rem;margin:1.5rem 0 0 auto;font-size:1.125rem;line-height:1.5}#contact .lede svg{vertical-align:-.125em;width:1em;height:1em;margin-right:.25em;display:inline-block}#contact .lede a{color:inherit}#contact .lede a:hover,#contact .lede a:focus-visible{color:#fff}.project-list{margin-top:2rem}.project-card{border-top:1px solid #edf2f533;padding:1.5rem 0}.project-card h2{margin:0;font-size:1.5rem}.project-meta{color:#aeb8bf;text-transform:uppercase;margin:0 0 .75rem;font-size:.875rem}.experience-list{text-align:left;gap:.75rem;margin:2rem 0 0;padding:0;list-style:none;display:grid}.experience-card{grid-template-columns:minmax(7rem,.55fr) minmax(0,2fr);gap:clamp(1.25rem,3vw,2.5rem);margin:0 -1rem;padding:1rem;display:grid}.experience-date{color:#aeb8bf;letter-spacing:.08em;text-transform:uppercase;margin:.25rem 0 0;font-size:.75rem;font-weight:700;line-height:1.4}.experience-details h2{color:#edf2f5;letter-spacing:-.02em;margin:0;font-size:1.125rem;font-weight:650}.experience-details>.experience-location{color:#aeb8bf;margin:.35rem 0 0;font-size:.8125rem;line-height:1.4}.experience-details>p{color:#c7c7c1;margin:.75rem 0 0;font-size:1rem;line-height:1.55}.technology-list{flex-wrap:wrap;gap:.4rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.technology-list li{color:#c7e2d0;background:#6e947b2e;border-radius:999px;padding:.3rem .65rem;font-size:.75rem;font-weight:650;line-height:1}@media (width<=700px){:root{--content-inset-x:.75rem;--content-inset-y:1.5rem;--frame-inset:1rem}.site-shell{grid-template-columns:clamp(8.5rem,30vw,12rem) minmax(0,1fr)}.site-rail{height:auto;min-height:100%;padding:.5rem}.role{white-space:nowrap;margin-top:.75rem;font-size:.78125rem;display:block}.wordmark{font-size:1.3375rem}h1{font-size:1.75rem}.site-nav{gap:.6rem;margin-top:2rem;display:grid}.site-content{overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;min-height:0;overflow-y:auto}.site-copyright{font-size:.625rem;bottom:.125rem}.experience-list{margin-top:1.25rem}.experience-card{grid-template-columns:1fr;gap:.5rem;margin:0;padding:.75rem 0}.experience-date{margin:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--text-motion-duration:.2s;--text-motion-easing:cubic-bezier(.22, 1, .36, 1);--nav-current-scale:1.04}.site-nav a{color:#aeb8bf;transform-origin:0;transition:color var(--text-motion-duration) var(--text-motion-easing), opacity var(--text-motion-duration) var(--text-motion-easing), transform var(--text-motion-duration) var(--text-motion-easing), font-weight var(--text-motion-duration) var(--text-motion-easing);align-items:center;font-weight:500;text-decoration:none;display:inline-flex}.site-nav a:before{content:"—";opacity:0;width:1.25em;transition:opacity var(--text-motion-duration) var(--text-motion-easing)}.site-nav a:hover,.site-nav a:focus-visible{color:#fff}.site-nav a[aria-current]{color:#fff;transform:scale(var(--nav-current-scale));font-weight:700}.site-nav a[aria-current]:before{opacity:1}.site-nav a.cv-link{text-underline-offset:.2em;text-decoration:underline;text-decoration-thickness:1px}.is-route-transitioning .site-nav{pointer-events:none}.site-content [data-route].is-route-entering{animation:text-route-enter var(--text-motion-duration) var(--text-motion-easing) both}.site-content [data-route].is-route-leaving{animation:text-route-leave var(--text-motion-duration) var(--text-motion-easing) both}@keyframes text-route-enter{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes text-route-leave{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-.5rem)}}@media (prefers-reduced-motion:reduce){.site-nav a,.site-nav a:before{transition:none}}
