body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@font-face{font-family:JetBrainsMono;src:url(/assets/JetBrainsMono-Regular-8W0DXcRc.ttf) format("truetype")}@font-face{font-family:JetBrainsMonoMedium;src:url(/assets/JetBrainsMono-Medium-CixG9-aE.ttf) format("truetype")}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;font-family:JetBrainsMonoMedium,sans-serif;color:var(--text-primary);background:var(--surface-bg);overflow-x:hidden;overflow-y:auto;scroll-behavior:smooth}::selection{background:var(--text-primary);color:var(--surface-bg)}::-moz-selection{background:var(--text-primary);color:var(--surface-bg)}.App{min-height:100vh;min-height:100svh;min-height:100dvh;position:relative}:root{--page-inset: 10%;--hero-max: 44ch;--fs-title-base: 1.3rem;--fs-body-base: .9rem;--fs-link-base: .9rem;--fs-small-base: .8rem;--font-size-title: var(--fs-title-base);--font-size-body: var(--fs-body-base);--font-size-link: var(--fs-link-base);--font-size-small: var(--fs-small-base);--block-gap: .5em;--hero-gap: 3rem;--surface-bg: #fdfdfd;--text-primary: #121212;--text-muted: rgba(0, 0, 0, .72);--text-subtle: rgba(0, 0, 0, .56);--link: #121212}a{color:var(--link);text-decoration:none;font-size:var(--font-size-link);background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-position:0 100%;background-size:100% .16em;padding-bottom:.1em}a:focus,a:focus-visible{outline:none}a:hover,a:focus-visible{text-decoration:none;background-image:none;color:var(--link)}p{margin:0;font-size:var(--font-size-body);color:var(--text-muted)}.icon-inline{display:block;margin-left:.4em;width:1em;height:1em;vertical-align:middle}.main{min-height:100vh;min-height:100svh;min-height:100dvh;position:relative;overflow:hidden}.content{position:absolute;top:50%;left:var(--page-inset);right:var(--page-inset);transform:translateY(-50%);pointer-events:none;z-index:3}.content-grid{display:grid;grid-template-columns:max-content max-content;align-items:center;column-gap:var(--hero-gap);justify-content:center;pointer-events:auto;width:100%}.introduction,.projects{max-width:var(--hero-max);justify-self:auto;align-self:center}.projects{max-width:36ch}.title{margin:0;color:var(--text-primary);font-size:var(--font-size-title);font-weight:700}.introduction .title{font-size:calc(var(--font-size-title) * 1)}.subtitle{color:var(--text-muted);font-size:var(--font-size-body)}.introduction .subtitle{font-size:calc(var(--font-size-body) * 1.04)}.featured-label{font-size:calc(var(--font-size-small) * .9);color:var(--text-subtle);text-transform:none}.introduction>*+*,.project>*+*{margin-top:var(--block-gap)}.stack{font-size:calc(var(--font-size-small) * .9);color:var(--text-subtle)}.description{font-size:calc(var(--font-size-small) * .9)}.article-highlight-link{font-weight:inherit;color:inherit;font-size:inherit;text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.08em;background-image:none;padding-bottom:0}.article-highlight-link:hover,.article-highlight-link:focus-visible,.article-highlight-link:visited{color:inherit;text-decoration:underline;background-image:none}.project-title .title{font-size:calc(var(--font-size-title) * .9);color:var(--text-primary);font-weight:700;background-image:none;background-size:0 0;padding-bottom:0;text-decoration:none}.project-title .icon-inline{display:inline-block;margin-left:.4em;width:1em;height:1em;vertical-align:middle}.read-more{display:inline-flex;align-items:center;gap:.35rem;margin-top:calc(var(--block-gap) * 1.5);font-size:var(--font-size-small);font-weight:700;color:var(--text-primary);text-decoration:underline;text-decoration-color:var(--text-primary);text-decoration-thickness:.12em;text-underline-offset:.08em;background-image:none;padding-bottom:0}.read-more-icon{width:1.1em;height:1.1em}.read-more:hover,.read-more:focus-visible,.read-more:visited{text-decoration:underline;text-decoration-color:var(--text-primary);background-image:none}.blog-main-index .content{left:38%;right:38%;top:50%;pointer-events:auto}.blog-main-article .content{position:static;top:auto;left:auto;right:auto;transform:none;pointer-events:auto;margin:6.75rem 38% 14rem}.blog-content,.blog-article{max-width:44rem;margin:0 auto;display:flex;flex-direction:column;gap:1.6rem}.blog-index-label{font-size:calc(var(--font-size-small) * .9);color:var(--text-subtle);text-transform:none}.blog-header .subtitle{max-width:32rem}.blog-main-index .title{font-size:calc(var(--font-size-title) * .9)}.blog-main-index .subtitle{font-size:calc(var(--font-size-body) * .9)}.blog-list{display:flex;flex-direction:column;gap:1rem}.blog-card-link{display:block;text-decoration:none;background-image:none;color:inherit}.blog-card-link:hover .blog-card,.blog-card-link:focus-visible .blog-card{border-color:#0000001a}.blog-card{padding:.75rem 0;border-top:1px solid rgba(0,0,0,.1)}.blog-card-meta{font-size:calc(var(--font-size-small) * .9);color:var(--text-subtle)}.blog-card-title{margin-top:.2rem;font-size:calc(var(--font-size-body) * .9);color:var(--text-primary);font-weight:600}.blog-article-header{display:flex;flex-direction:column;gap:.4rem;padding-bottom:.75rem;border-bottom:1px solid rgba(0,0,0,.1)}.blog-back-button{align-self:flex-start;padding:0;border:none;background:none;cursor:pointer;color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center}.blog-back-icon{width:.8rem;height:.8rem}.blog-back-button:focus-visible{outline:1px solid var(--text-primary);outline-offset:.12rem}.blog-article-header .title{font-size:calc(var(--font-size-body) * .85)}.blog-article-meta{font-size:calc(var(--font-size-small) * .9);color:var(--text-subtle)}.blog-article-body{min-height:10rem;display:flex;flex-direction:column;gap:.75rem}.blog-article-body p{font-size:calc(var(--font-size-small) * .95);line-height:1.5;text-indent:.9rem}.blog-section-heading{margin-top:1.6rem;margin-bottom:.2rem;font-size:calc(var(--font-size-small) * .95);font-weight:600;letter-spacing:.01em;color:var(--text-primary)}nav[aria-label=navbar],footer{position:absolute;z-index:40;font-size:.85rem;color:var(--text-primary);background:transparent}nav[aria-label=navbar]{top:0;left:0;right:0;padding-block:1.1rem;padding-inline:0}nav[aria-label=navbar] .nav-inner{display:flex;align-items:center;justify-content:flex-end;padding-inline:2rem;gap:1.5rem}.nav-logo{position:relative;z-index:20}.nav-logo img{display:block;height:2.7rem;width:auto;mix-blend-mode:difference;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}footer{bottom:0;left:0;right:0;padding:1rem 2.4rem 1.25rem}nav[aria-label=navbar]:before,footer:before{content:none}nav[aria-label=navbar]:before{background:linear-gradient(to bottom,#fdfdfd8c,#fdfdfd59 45%,#fdfdfd00)}footer:before{background:linear-gradient(to top,#fdfdfd8c,#fdfdfd59 45%,#fdfdfd00)}nav[aria-label=navbar] ul,footer ul{display:flex;gap:2.2rem;margin:0;padding:0;list-style:none}footer ul{justify-content:flex-start}nav[aria-label=navbar] a,footer a{background-image:none;padding-bottom:0;font-size:inherit;font-weight:600;color:var(--text-primary)}@media (max-width: 900px){:root{--page-inset: 18%;--fs-title-base: 1.12rem;--fs-body-base: .86rem;--fs-link-base: .8rem;--fs-small-base: .7rem;--hero-gap: 3rem}.main{padding-top:0;display:flex;align-items:center}.content{position:static;top:auto;left:auto;right:auto;transform:none;pointer-events:auto;margin:1rem var(--page-inset) 0}.content-grid{grid-template-columns:1fr;gap:var(--hero-gap)}.read-more{font-size:calc(var(--font-size-small) * .9)}.introduction .title{font-size:calc(var(--fs-title-base) * 1)}.introduction .subtitle{font-size:calc(var(--fs-body-base) * .9)}.featured-label,.stack{font-size:calc(var(--fs-small-base) * .9)}.description{font-size:calc(var(--fs-body-base) * .9)}.featured-projects .project-title .title{font-size:calc(var(--fs-title-base) * .85)}.featured-projects .featured-label,.featured-projects .stack{font-size:calc(var(--fs-small-base) * .85)}.featured-projects .description{font-size:calc(var(--fs-body-base) * .85)}.featured-projects .read-more{font-size:calc(var(--fs-small-base) * .85)}nav[aria-label=navbar],footer{font-size:.7rem}nav[aria-label=navbar]{padding-block:1.1rem}nav[aria-label=navbar] .nav-inner{padding-inline:1.8rem}footer{padding:1rem 1.8rem 1.25rem}.nav-logo img{height:2.3rem}.introduction{text-align:left;margin-inline:0}.blog-main-index{align-items:center}.blog-main-index .content{margin:0 18%;transform:translateY(-4vh)}.blog-main-article{align-items:flex-start}.blog-main-article .content{margin:6rem 18% 10rem;transform:none}}@keyframes expand{0%{width:10px;height:10px}to{width:14px;height:14px}}@keyframes shrink{0%{width:14px;height:14px}to{width:10px;height:10px}}.custom-cursor{display:none}@media (hover: hover) and (pointer: fine){html,body,a,button,input:not([type=hidden]),textarea,select,[role=button],[tabindex]:not([tabindex="-1"]){cursor:none!important}.custom-cursor{display:block;width:10px;height:10px;border:1px solid #000;border-radius:3px;position:absolute;transform:translate(-50%,-50%);pointer-events:none;background:#fff;mix-blend-mode:difference;opacity:1;z-index:9999;transition:width .15s ease,height .15s ease,opacity .01s ease}}
