@font-face{font-family:__Inter_e8ce0c;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/55c55f0601d81cf3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__Inter_e8ce0c;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/26a46d62cd723877-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__Inter_e8ce0c;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/97e0cb1ae144a2a9-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:__Inter_e8ce0c;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/581909926a08bbc8-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__Inter_e8ce0c;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__Inter_e8ce0c;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Inter_e8ce0c;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__Inter_Fallback_e8ce0c;src:local("Arial");ascent-override:90.49%;descent-override:22.56%;line-gap-override:0.00%;size-adjust:107.06%}.__className_e8ce0c{font-family:__Inter_e8ce0c,__Inter_Fallback_e8ce0c;font-style:normal}.__variable_e8ce0c{--font-inter:"__Inter_e8ce0c","__Inter_Fallback_e8ce0c"}@font-face{font-family:__spaceGrotesk_80133e;src:url(/_next/static/media/b146733cf5059fd7-s.p.ttf) format("truetype");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:__spaceGrotesk_Fallback_80133e;src:local("Arial");ascent-override:88.75%;descent-override:26.34%;line-gap-override:0.00%;size-adjust:110.87%}.__className_80133e{font-family:__spaceGrotesk_80133e,__spaceGrotesk_Fallback_80133e;font-weight:400;font-style:normal}.__variable_80133e{--font-space-grotesk:"__spaceGrotesk_80133e","__spaceGrotesk_Fallback_80133e"}@import"https://use.typekit.net/lnu1fpi.css";*,:after,:before{border-width:0}a,b,blockquote,body,canvas,caption,code,div,em,embed,fieldset,figure,footer,form,h1,h2,h3,h4,h5,h6,header,html,i,iframe,img,label,li,main,nav,object,ol,p,pre,section,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,tt,u,ul,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;text-size-adjust:none}footer,header,main,nav,section{display:block}body{line-height:1.2}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}input{-webkit-appearance:none;border-radius:0}*,:after,:before{margin:0;padding:0;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--background:#ededed;--foreground:#060d0e;--foreground-heading:#fff;--container-bg:#dbdbdb;--container-padding:24px;--border-color:#1a1a1a33}[data-theme=dark]{--background:#060d0e;--foreground:#e5e5e5;--foreground-heading:#fff;--container-bg:#1a1a1a;--border-color:#f4f4f433}[data-theme=dark] .shiki,[data-theme=dark] .shiki span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;text-decoration:var(--shiki-dark-text-decoration)!important}::selection{background-color:var(--foreground);color:var(--container-bg)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-stopped{overflow:hidden}.lenis.lenis-smooth iframe{pointer-events:none}body,html{max-width:100vw;overflow-x:hidden}body{color:var(--foreground);background:var(--container-bg);letter-spacing:.32px;font-size:16px;line-height:28px;-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}a{color:inherit;text-decoration:none}pre::-webkit-scrollbar{display:none}pre{-ms-overflow-style:none;scrollbar-width:none}input[type=email],input[type=text]{-webkit-appearance:none;-moz-appearance:none;appearance:none}table{display:block;max-width:-moz-fit-content;max-width:fit-content;overflow-x:auto;white-space:nowrap}svg{width:24px;height:24px;vertical-align:middle}path{fill:var(--foreground)!important}@media(prefers-color-scheme:dark){html{color-scheme:dark}}.base-container{padding:var(--container-padding);min-height:100vh;width:100%;position:relative}@media screen and (max-width:500px){.base-container{--container-padding:0}}.sp-wrapper{margin:40px 0!important;width:100%;max-width:900px!important;margin:24px auto;font-size:14px;line-height:18px}@media screen and (min-width:800px){.sp-layout{height:500px!important}.sp-layout>*{height:100%!important}}.content{width:100%;max-width:700px;margin:auto}.content__container{border-radius:12px;background:var(--background);min-height:calc(100vh - var(--container-padding)*2);padding:40px 36px;height:100%}@media screen and (max-width:500px){.content__container{padding:20px 16px}}.background-gradient{position:fixed;top:0;left:0;width:100vw;height:100vh;bottom:0;right:0;filter:blur(1000px);z-index:1;opacity:.35;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.hidden{display:none!important}.about-me a,.colophon a,.link-underline a,.post a,.uses a{color:inherit;text-decoration:underline}.about-me a:hover,.colophon a:hover,.link-underline a:hover,.post a:hover,.uses a:hover{text-decoration:none}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(90deg)}}@keyframes jerk{0%{transform:rotate(22.5deg)}25%{transform:rotate(0deg)}50%{transform:rotate(-22.5deg)}to{transform:rotate(0deg)}}@keyframes slideRight{to{transform:translateX(6px)}}@keyframes shake{0%{transform:rotate(3deg) translateY(-4px)}50%{transform:rotate(-3deg) translateY(-4px)}75%{transform:rotate(3deg) translateY(-4px)}to{transform:rotate(0deg) translateY(0)}}.index{width:100%;opacity:0}.index__container{display:flex;place-items:center;pointer-events:none}.index__container.interactive{pointer-events:auto}.index .nav__heading{font-family:var(--font-space-grotesk);font-size:24px;line-height:28px;margin-bottom:72px;overflow:hidden;position:relative}.index .nav__link{border-top:1px solid var(--foreground);padding:12px;display:flex;font-size:18px;line-height:28px;will-change:color,background;perspective:120px;perspective-origin:bottom;transition:all .25s cubic-bezier(.22,1,.36,1)}.index .nav__link__idx{font-family:var(--font-space-grotesk);max-width:48px;width:100%;margin-right:72px}@media screen and (max-width:450px){.index .nav__link__idx{margin-right:36px}}.index .nav__link__text{display:flex;justify-content:space-between;width:100%}.index .nav__link__text>svg{opacity:0;transform:translateX(-12px);transition:all .35s cubic-bezier(.22,1,.36,1) 75ms}.index .nav__link:focus svg,.index .nav__link:hover svg{opacity:1;transform:translateX(0)}.index .nav__link--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.index__image{width:100%;position:relative;display:none;overflow:hidden}.index__image img{width:100%;height:100%;max-height:100vh;object-fit:cover;transform-origin:50% 50%;-webkit-clip-path:polygon(0 0,0 0,0 100%,0 100%);clip-path:polygon(0 0,0 0,0 100%,0 100%)}@media screen and (max-height:768px){.index__image img{max-height:100%}}@media screen and (min-width:768px){.index__image{display:block}}.home{display:flex}.post{margin-bottom:120px}.post>p+p{margin-top:24px}.post .footnotes{color:#8b949e;border-top:1px solid #30363d}.post .sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);word-wrap:normal;border:0}.post [data-footnote-ref]{text-decoration:none}.post [data-footnote-ref]:hover{text-decoration:underline}.post [data-footnote-ref]:after{content:"]"}.post [data-footnote-ref]:before{content:"["}.post sub,.post sup{font-size:.83em;line-height:0}.post sub{vertical-align:sub}.post sup{vertical-align:super}.post__divider{max-width:900px;width:100%;height:1px;margin:32px auto 64px;background-color:var(--border-color)}.about-me .title,.colophon .title,.post__title,.uses .title{font-weight:500;font-size:32px;line-height:1.2;margin-bottom:30px;letter-spacing:.72px}@media screen and (max-width:500px){.about-me .title,.colophon .title,.post__title,.uses .title{font-size:28px}}.post h2{font-size:28px;margin-top:28px;margin-bottom:12px;letter-spacing:.56px}.post h2,.post h3{font-weight:700;line-height:1.6}.post h3{font-size:20px;margin-top:1.6em;margin-bottom:.6em;letter-spacing:.4px}.post h4{font-size:18px;letter-spacing:.36px;font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.post a.anchor{position:relative;text-decoration:none}.post a.anchor:before{position:absolute;content:"#";left:-.75em;opacity:0;transition:opacity .2s ease-in}.post a.anchor:focus:before,.post a.anchor:hover:before{opacity:.7}.post ol,.post ul{margin-top:16px;margin-bottom:16px}.post li ol,.post li ul{margin-top:12px}.post p{font-size:16px;line-height:28px}.post p ol,.post p+ul{margin-top:4px}.post :not(pre)>code{font-size:14px;background:var(--foreground);color:var(--background);white-space:pre}@media screen and (max-width:500px){.post h2{font-size:24px}.post h3{font-size:18px}.post h4{font-size:16px}}.post em,.post strong{font-weight:600}.post ul{list-style-type:disc}.post ol{list-style:decimal}.post li{margin:8px 2ch}.post img{width:100%;max-width:500px;height:auto;position:relative;object-fit:contain;margin:16px auto;background:#fff;display:block}.post>del{display:block;margin:20px 0}.post blockquote{color:var(--foreground);border-inline-start-width:4px;border-inline-start-color:var(--foreground);border-left:2px solid var(--foreground);margin-top:32px;margin-bottom:32px;-webkit-padding-start:1em;padding-inline-start:1em}.post blockquote p:first-of-type:before{content:open-quote}.post blockquote p:last-of-type:after{content:close-quote}.post blockquote>*+*{margin-top:16px}.post pre{border-radius:8px;border:1px solid var(--border-color);padding:12px 16px;font-size:14px;line-height:20px;overflow-x:auto;margin:20px 0}.post pre code{padding:0;line-height:1.5;display:block;overflow:scroll}.post pre code .line:before{margin-right:16px;display:inline-block;text-align:right}.post hr{border:none;height:1px;background-color:var(--foreground);margin:32px auto;width:100%}.post kbd{background:var(--background);box-shadow:0 1px 2.1px rgba(1,6,47,.173),0 1px 2.1px hsla(0,0%,88%,.5),0 0 0 .64px rgba(1,1,46,.134),inset 0 -.64px 0 rgba(1,1,46,.134),inset 0 3.2px 6.4px rgba(5,5,88,.024),inset 0 .64px 0 hsla(0,0%,100%,.926);border-radius:4px;padding:4px;letter-spacing:-.4px;font-style:normal;font-weight:400;font-size:14px;line-height:24px;color:var(--foreground)}.post code{border-radius:var(--radius-lg,.5rem);padding:var(--spacing-0_5,.125rem) var(--spacing-1,.25rem);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.post__tags{display:flex;gap:8px;flex-wrap:wrap}.post__nav{justify-content:space-between;margin-bottom:120px;display:grid;grid-gap:60px;gap:60px;grid-template-columns:repeat(auto-fit,minmax(312px,1fr))}.post__meta{opacity:.7;font-family:var(--font-space-grotesk);gap:10px;margin-bottom:18px}.post__meta,.post__meta div{display:flex}.post__meta *{text-transform:uppercase;font-size:14px;line-height:16px}.post__meta svg{width:15px;height:15px;margin-right:4px}.post>*{width:100%;max-width:700px;margin-left:auto!important;margin-right:auto!important}.posts{width:100%;max-width:1000px;display:grid;grid-gap:100px 32px;gap:100px 32px;margin:auto auto 80px;grid-template-columns:repeat(auto-fit,minmax(312px,1fr));opacity:0}@media screen and (max-width:600px){.posts{gap:60px 32px}}[data-theme=light] .filtered-image{filter:brightness(.1)}.filtered-image{background:transparent!important}.work{opacity:0}.work__companies{display:grid;grid-gap:32px 20px;gap:32px 20px;margin-bottom:80px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.work__companies li{padding:20px;display:flex;flex-direction:column;justify-content:space-between;gap:32px}.work__companies li h4{font-size:20px;font-weight:600;line-height:28px;margin-bottom:4px}.work__companies li>p{font-family:var(--font-space-grotesk)}.work .work__companies+.styled-text{margin:0 auto 32px}.about-me .title{margin-bottom:18px}.about-me .post{margin-top:48px;margin-bottom:60px}.about-me ul{list-style-type:disc}.about-me ul li{margin:12px 2ch}.about-me .socials{display:flex;gap:20px;flex-wrap:wrap}.about-me .socials li{margin:0 0 0 1.5ch}.colophon .title{margin-bottom:60px}.uses .styled-section{margin-bottom:16px}.uses .styled-section:first-of-type{margin-top:40px}.uses .title{margin-bottom:18px}.uses .post{margin-top:32px;margin-bottom:60px}.nav__container{width:100%;max-width:700px;display:flex;align-items:center;margin:0 auto 96px;justify-content:space-between;position:relative}.nav__container svg{width:20px;height:20px}.nav__container .back{gap:16px;align-items:center;display:inline-flex;font-size:16px;background:none;font-family:inherit;cursor:pointer}.nav__container .back span{color:var(--foreground)}@media screen and (max-width:450px){.nav__container .back span{display:none}}.nav__container .back:hover svg{animation:shake .25s cubic-bezier(.22,1,.36,1) forwards}.nav__container .theme-toggle{background:none;cursor:pointer}.nav__container .theme-toggle:nth-child(1n):hover svg{animation:rotate .25s linear forwards}.nav__container .theme-toggle:nth-child(2n):hover svg{animation:jerk .25s linear forwards}.nav__container button{padding:6px}.nav__container .title{left:50%;position:absolute;transform:translate(-50%);font-weight:500;letter-spacing:.32px;text-decoration:underline}.nav__container .title:hover{text-decoration:none}[data-theme=dark] [data-hide-on-theme=dark],[data-theme=light] [data-hide-on-theme=light]{display:none}.post-card__container:hover .post-card__content{transition:background-color .25s ease-in;background-color:var(--container-bg)}.post-card__container:hover .post-card__top svg{opacity:1;transform:translateY(0)}.post-card__top{padding:0 20px 8px;letter-spacing:.32px;display:flex;width:100%;justify-content:space-between;opacity:.7}.post-card__top svg{width:20px;height:20px;opacity:0;transform:translateY(12px);transition:all .25s cubic-bezier(.22,1,.36,1)}.post-card__content{border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);padding:24px 20px;height:200px;display:flex;justify-content:space-between;flex-direction:column}.post-card__content h2{font-size:20px;line-height:28px;letter-spacing:.4px}@media screen and (max-width:500px){.post-card__content h2{font-size:18px}}.styled-text{padding:10px;font-size:12px;font-family:var(--font-space-grotesk);letter-spacing:.28px;line-height:16px;border-radius:20px;border:1px solid var(--foreground);text-transform:uppercase;max-width:-moz-fit-content;max-width:fit-content;height:28px;overflow:hidden;position:relative;display:flex;align-items:center}.styled-text--alt{font-weight:500;color:var(--background);background-color:var(--foreground)}.styled-text__word{position:relative;overflow:hidden;display:block}.styled-text__char{display:inline-block}.styled-text__char:after{position:absolute;left:0;top:100%;content:attr(data-letter)}.styled-section{margin-bottom:32px}.styled-section__heading{padding:0 20px 8px;letter-spacing:.32px;display:flex;width:100%;justify-content:space-between;opacity:.7;overflow:hidden}.styled-section__heading h3{font-size:16px;line-height:28px;text-transform:uppercase;margin:unset;font-weight:500;font-family:var(--font-space-grotesk)}.styled-section__content{border-top:1px solid var(--border-color);padding:24px 0}