@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-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;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-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;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;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;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;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_f367f3{font-family:Inter,Inter Fallback;font-style:normal}.__variable_f367f3{--font-sans-loaded:"Inter","Inter Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-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:JetBrains Mono Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_6d24ac{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_6d24ac{--font-mono-loaded:"JetBrains Mono","JetBrains Mono Fallback"}:root{--font-sans:var(--font-sans-loaded),Inter,system-ui,sans-serif;--font-mono:var(--font-mono-loaded),ui-monospace,Menlo,monospace;--bg:#ffffff;--text:#1a1a1a;--muted:#5f5f5f;--faint:#9a9a9a;--line:#e6e6e6;--accent:#3b4bd8;--col:34rem}@media (min-width:900px){:root{--col:46rem}}@media (min-width:1400px){:root{--col:min(80vw,90rem)}}@media (prefers-color-scheme:dark){:root{--bg:#111111;--text:#ececec;--muted:#a3a3a3;--faint:#6b6b6b;--line:#2a2a2a;--accent:#8b95ff}}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased}body{min-height:100dvh;font-family:var(--font-sans);font-size:.9375rem;line-height:1.55;color:var(--text);background:var(--bg)}img{display:block;max-width:100%}a{color:inherit}ul[role=list]{list-style:none}::selection{background:color-mix(in srgb,var(--accent) 20%,transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.page{max-width:var(--col);margin-inline:auto;padding:1.5rem 1rem 6rem}@media (min-width:900px){body{font-size:1rem}.page{padding-top:2.5rem;padding-inline:2rem}}@media (min-width:1400px){body{font-size:1.125rem}.intro h1{font-size:2.5rem}.logo{flex:0 0 auto;width:1.5rem;height:1.5rem;background:var(--accent);mask-size:contain;mask-repeat:no-repeat;mask-position:center;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center}.project-head h2{font-size:1.375rem}.tags li{font-size:.7rem}}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:4rem}.topbar-note{font-size:.75rem;color:var(--accent)}.icons{display:flex;gap:.5rem}.icons a{display:inline-flex;width:1.75rem;height:1.75rem;align-items:center;justify-content:center;border:1px solid var(--accent);border-radius:3px;color:var(--accent)}.icons a:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.icons svg{width:14px;height:14px}.intro{margin-bottom:4rem}.intro h1{font-size:clamp(1.5rem,1.1rem + 1.8vw,1.9rem);font-weight:400;line-height:1.3;letter-spacing:-.01em}.now{margin-top:1rem;font-size:.75rem;color:var(--muted)}.now:before{content:"";display:inline-block;width:.5rem;height:.5rem;margin-right:.5rem;border-radius:50%;background:var(--accent);vertical-align:middle}.now a{text-decoration:none;border-bottom:1px solid var(--line)}.now a:hover{border-bottom-color:var(--text)}.projects{display:flex;flex-direction:column;gap:3.5rem}.project-shot{overflow:hidden;border:1px solid var(--line);border-radius:4px;margin-bottom:1.25rem}.project-shot img{width:100%;height:auto}.project-head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-bottom:.5rem}.logo{flex:0 0 auto;width:1.5rem;height:1.5rem;background:var(--accent);mask-size:contain;mask-repeat:no-repeat;mask-position:center;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center}.logo--wide{width:3.25rem;height:1.1rem}.project-head h2{font-size:1.125rem;font-weight:600;line-height:1.2}.project-head h2 a{text-decoration:none}.project-head h2 a:hover{color:var(--accent)}.tags{display:flex;flex-wrap:wrap;gap:.35rem}.tags li{font-family:var(--font-mono);font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--line);border-radius:3px;padding:.15rem .45rem}.project p,.tags li{color:var(--muted)}.project-more{display:inline-block;margin-top:.5rem;font-size:.8125rem;color:var(--text);text-decoration:none;border-bottom:1px solid var(--line)}.project-more:hover{border-bottom-color:var(--text)}.prev{margin-top:5rem;padding-top:1.5rem;border-top:1px solid var(--line)}.prev-label{font-size:.75rem;color:var(--faint);margin-bottom:.75rem}.prev li{display:flex;justify-content:space-between;gap:1rem;padding:.35rem 0;font-size:.8125rem}.prev li span:first-child{color:var(--text)}.prev li span:last-child{color:var(--faint);white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.back{display:inline-block;font-size:.8125rem;color:var(--muted);text-decoration:none;margin-bottom:3rem}.back:hover{color:var(--text)}.detail h1{font-size:1.75rem;font-weight:600;line-height:1.15;margin-bottom:.75rem}.detail .tags{margin-bottom:1.25rem}.detail-role{font-size:.8125rem;color:var(--faint);margin-bottom:1.5rem}.detail-links{display:flex;flex-wrap:wrap;gap:1rem;margin:1.5rem 0 2.5rem;font-size:.8125rem}.detail-links a{text-decoration:none;border-bottom:1px solid var(--line)}.detail-links a:hover{border-bottom-color:var(--text)}.detail p{color:var(--muted);line-height:1.7}.detail p+p{margin-top:1rem}.detail-list{margin-top:2rem;padding-left:1.1rem;color:var(--muted);line-height:1.7}.detail-list li+li{margin-top:.35rem}.detail-stack{margin-top:2.5rem;font-family:var(--font-mono);font-size:.7rem;color:var(--faint)}