@import url("https://fonts.googleapis.com/css2?family=DM+Serif+Text:ital@0;1&display=swap");@import url("https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,200..900;1,200..900&family=DM+Serif+Text:ital@0;1&display=swap");@font-face{font-family:Faktum;src:url(/fonts/faktum.woff2) format("woff2")}@font-face{font-family:InterVariable;src:url(/fonts/InterVariable.woff2) format("woff2")}:root{--main-width:800px;--border-radius:12px;--font-mono:ui-monospace,Menlo,Monaco,"Cascadia Mono","Segoe UI Mono","Roboto Mono","Oxygen Mono","Ubuntu Monospace","Source Code Pro","Fira Mono","Droid Sans Mono","Courier New",monospace;--foreground-rgb:25,25,25;--foreground-bold-rgb:8,8,8;--foreground-headings-rgb:38,38,38;--background-solid-rgb:248,248,248;--background-start-rgb:244,249,255;--background-end-rgb:250,250,250;--primary-glow:conic-gradient(from 180deg at 50% 50%,#16abff33 0deg,#0885ff33 55deg,#54d6ff33 120deg,#0071ff33 160deg,transparent 360deg);--secondary-glow:radial-gradient(#fff,hsla(0,0%,100%,0));--tile-start-rgb:239,245,249;--tile-end-rgb:228,232,233;--tile-border:conic-gradient(#00000080,#00000040,#00000030,#00000020,#00000010,#00000010,#00000080);--callout-rgb:238,240,241;--callout-border-rgb:172,175,176;--card-rgb:180,185,188;--card-border-rgb:131,134,135}@media (prefers-color-scheme:dark){:root{--foreground-headings-rgb:220,220,220;--foreground-rgb:200,200,200;--foreground-bold-rgb:255,255,255;--background-solid-rgb:8,15,27;--cursor-color:#e8006e;--cursor-color:#ff9300;--cursor-color:#006716;--cursor-color:#006255;--cursor-color:#7d2cba;--cursor-color:#015ae8}}@media (max-width:925px){:root{--main-width:calc(100vw - 8rem)}}@media (max-width:600px){:root{--main-width:calc(100vw - 4rem)}main{padding:7rem 0!important}.footer-content{padding-left:0!important;padding-right:0!important}}*{box-sizing:border-box;padding:0;margin:0;font-family:InterVariable,Inter,system-ui,sans-serif}body,html{max-width:100vw;overflow-x:hidden;font-family:Inter,system-ui,sans-serif;font-size:.98rem;line-height:1.45rem;font-weight:481;font-feature-settings:"cv02","cv03","cv04","cv11";text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;scroll-behavior:smooth;-webkit-scroll-behavior:smooth}@media screen and (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{color:rgb(var(--foreground-rgb));background:rgb(var(--background-solid-rgb))}main{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;max-width:var(--main-width);width:100%;height:-moz-fit-content;height:fit-content;margin:0 auto;padding:7rem 1rem;transition:all .4s cubic-bezier(0,.59,.345,1)}main.not-found-page{min-height:100vh}.not-found-page>.not-found-content{display:flex;flex:1 1;flex-direction:column;justify-content:center}main:after,main:before{content:"";position:fixed;display:block;width:1px;top:0;bottom:0;left:max(calc((100vw - var(--main-width)) / 2 - 1rem),0px);transform:scaleY(0);transform-origin:top;opacity:.42;background:rgb(var(--foreground-rgb),1);_background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 5px,rgb(var(--background-solid-rgb)) 5px,rgb(var(--background-solid-rgb)) 9px),repeating-linear-gradient(to right,rgb(var(--foreground-rgb),.05) 0,rgb(var(--foreground-rgb),.05) 2px,transparent 2px,transparent 16px)}main:before{left:auto;right:max(calc((100vw - var(--main-width)) / 2 - 1rem),0px)}main[data-lines-visible=true]:after,main[data-lines-visible=true]:before{animation:reveal-vertical-line 1s cubic-bezier(1,.07,.87,.82) both}section{position:relative;width:100%;margin:2rem 0}footer:after,section:after,section:before{content:"";position:absolute;z-index:100;display:block;height:1px;top:-1rem;width:100vw;left:50%;transform:translateX(-50%) scaleX(0);transform-origin:center;opacity:.42;background:rgb(var(--foreground-rgb),1);_background-image:repeating-linear-gradient(to right,transparent 0,transparent 5px,rgb(var(--background-solid-rgb)) 5px,rgb(var(--background-solid-rgb)) 9px),repeating-linear-gradient(to bottom,rgb(var(--foreground-rgb),.05) 0,rgb(var(--foreground-rgb),.05) 2px,transparent 2px,transparent 16px)}footer[data-lines-visible=true]:after,section[data-lines-visible=true]:after,section[data-lines-visible=true]:before{animation:reveal-horizontal-line .46s cubic-bezier(1,.07,.87,.82) both;animation-delay:.22s}section[data-lines-visible=true]:before{animation-delay:.33s}section:before{top:2rem}section:first-of-type:before{display:none}@keyframes reveal-vertical-line{0%{transform:scaleY(0);opacity:.3}to{transform:scaleY(1);opacity:.08}}@keyframes reveal-horizontal-line{0%{transform:translateX(-50%) scaleX(0);opacity:.3}to{transform:translateX(-50%) scaleX(1);opacity:.08}}@media (prefers-reduced-motion:reduce){main:after,main:before,section:after,section:before{transform:none;animation:none!important}}footer{position:relative;z-index:100;width:100vw;margin-bottom:-7rem}footer:after{top:0!important}.footer-content{position:relative;width:var(--main-width);margin:0 auto;padding-left:1rem;padding-right:1rem;font-size:.83rem;line-height:1.5rem;color:rgb(var(--foreground-rgb),.38);transition:color .15s linear}.footer-content p{display:flex;gap:8px;align-items:center;justify-content:space-between;font-weight:440}.footer-social-links{display:flex;flex:0 0 auto;align-items:center;gap:.65rem}.footer-social-links a{display:inline-flex;align-items:center;color:inherit}.footer-social-links a:hover{color:rgb(var(--foreground-rgb),.8)}.footer-social-links a:active{color:rgb(var(--foreground-rgb),1)}.footer-social-links a:after{display:none}.footer-social-links svg{display:block;width:auto;height:16px;fill:currentColor}h1{width:-moz-fit-content;width:fit-content;font-weight:430;font-size:1.65rem;line-height:1.7rem;padding-bottom:1rem;margin:-.41rem auto -.32rem;font-family:Crimson Pro,"DM Serif Text",Georgia,Cambria,Times New Roman,Times,serif;text-align:center}h1,p{position:relative}p{margin:1.5rem 0;font-weight:440;-webkit-font-smoothing:antialiased}button{height:30px}.btn-big,.btn-big-blk,.btn-big-blue,.btn-big-green,.btn-big-orange,.btn-big-red{display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;color:rgb(var(--foreground-rgb),1);background-image:linear-gradient(0deg,#fafafa,#fefefe);border-radius:.5rem;border:1px solid #eaeaea;padding:.5rem 1.25rem;font-size:.8rem;font-weight:440;letter-spacing:.1px;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@media (prefers-color-scheme:dark){.btn-big{border-color:#171b2b;background-image:linear-gradient(0deg,#21263b,#2f344d);color:#fff;box-shadow:0 0 0 0 transparent,0 0 0 0 transparent,0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)}}.btn-big-red{border-color:#c81f29;background-image:linear-gradient(0deg,#cc2832,#e53a44)}.btn-big-orange,.btn-big-red{color:#fff;box-shadow:0 0 0 0 transparent,0 0 0 0 transparent,0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)}.btn-big-orange{border-color:#da4437;background-image:linear-gradient(0deg,#da4437,#ff6154)}.btn-big-blk{border-color:#171b2b;background-image:linear-gradient(0deg,#21263b,#2f344d)}.btn-big-blk,.btn-big-green{color:#fff;box-shadow:0 0 0 0 transparent,0 0 0 0 transparent,0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)}.btn-big-green{border-color:#299a44;background-image:linear-gradient(0deg,#2c9f48,#3ac25b)}.btn-big-blue{border-color:#2563eb;background-image:linear-gradient(0deg,#2563eb,#3b82f6);color:#fff;box-shadow:0 0 0 0 transparent,0 0 0 0 transparent,0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)}.btn-big-blk:hover,.btn-big-blue:hover,.btn-big-green:hover,.btn-big-orange:hover,.btn-big-red:hover,.btn-big:hover{transform:translate(0) rotate(0) skewX(0) skewY(0) scaleX(100.5%) scaleY(100.5%);opacity:.9}.btn-big-blk:active,.btn-big-blue:active,.btn-big-green:active,.btn-big-orange:active,.btn-big-red:active,.btn-big:active{transform:translate(0) rotate(0) skewX(0) skewY(0) scaleX(99.5%) scaleY(99.5%);opacity:.85}.btn-big-blk:disabled,.btn-big-blue:disabled,.btn-big-green:disabled,.btn-big-orange:disabled,.btn-big-red:disabled,.btn-big:disabled{cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;opacity:1;transform:none}@media (max-width:550px){button{padding:1.25rem!important;font-size:.875rem!important}}a{position:relative;color:rgb(var(--foreground-bold-rgb));text-decoration:none;opacity:.98;transition:all .11s linear}a:after{content:"";position:absolute;display:block;height:1px;bottom:-1px;left:0;right:0;opacity:.25;transition:all .16s linear;background:rgb(var(--foreground-bold-rgb))}a:hover:after{opacity:0}a:hover{opacity:1}a:active{opacity:.85;display:inline-block;transform:scale(.98) translateY(.35px)}a:active:after{opacity:0}a:has(>.link-icon){--link-icon-size:0.9em;--link-icon-gap:0.175em;--link-icon-word-gap:0.125em;white-space:nowrap}a:has(>.link-icon):after{left:calc(var(--link-icon-size) + var(--link-icon-gap) + .2rem)}.link-icon{display:inline-block;width:var(--link-icon-size);height:var(--link-icon-size);margin-right:var(--link-icon-gap);margin-left:var(--link-icon-word-gap);vertical-align:-.075em}.link-icon>img,.link-icon>svg{display:block;width:100%;height:100%;object-fit:contain}.news-item{display:grid;grid-template-columns:6rem minmax(0,1fr);grid-gap:1.5rem;gap:1.5rem;margin:1.75rem 0}.news-item-date{display:flex;align-items:center;align-self:start;justify-content:start;gap:.4rem;font-size:.875rem;white-space:nowrap;color:rgba(var(--foreground-rgb),1)}.news-item-dot{display:block;flex:0 0 auto;width:10px;height:10px;aspect-ratio:1}.news-item-content>p{margin:0}.news-item-content>p+p{margin-top:.75rem}@media (max-width:550px){.news-item{grid-template-columns:minmax(0,1fr);gap:.5rem}}article.project-item{margin:3.5rem 0 1.5rem}.content-item,.project-item{margin:2rem 0}.content-item-title,.project-item-title{width:-moz-fit-content;width:fit-content;max-width:100%;font-family:Crimson Pro,"DM Serif Text",Georgia,Cambria,Times New Roman,Times,serif;font-size:1.5rem;font-weight:500;line-height:1.85rem;letter-spacing:-.02em;margin:1rem 0;text-wrap:pretty}.content-item-meta,.project-item-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .65rem;margin:-.5rem 0 .75rem;color:rgba(var(--foreground-rgb),.72);font-size:.82rem;font-weight:460;line-height:1.3}.project-item-tag{padding-left:.55rem;border-left:1px solid rgba(var(--foreground-rgb),.3);font-size:.76rem}.content-item-description,.project-item-description{margin:.55rem 0 0;font-size:.96rem;line-height:1.5;text-wrap:pretty}.project-item-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem}@media (max-width:550px){.project-item-links{flex-direction:column}}.project-item-links a{font-size:.78rem;text-transform:uppercase;letter-spacing:.035em}.reading-note{margin-top:-.5rem;color:rgba(var(--foreground-rgb),.7);font-size:.9rem}.text-fade-in,[data-text-fade-in=pending],[data-text-fade-in^=exiting-]{position:relative;overflow:hidden}[data-text-fade-in=pending]:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:rgb(var(--background-solid-rgb))}.text-fade-in{animation:text-fade-in-sharpen 1.9s cubic-bezier(.16,1,.3,1) 1 both}[data-text-fade-in^=exiting-]{animation:text-fade-out-blur 1.9s cubic-bezier(.16,1,.3,1) 1 both}.text-fade-in:after{animation:text-fade-in-reveal 2.6s cubic-bezier(.16,1,.3,1) 1 both}.text-fade-in:after,[data-text-fade-in^=exiting-]:after{content:"";pointer-events:none;position:absolute;inset:0;background-image:linear-gradient(to bottom right,rgba(var(--background-solid-rgb),0) 25%,rgba(var(--background-solid-rgb),.08) 35%,rgba(var(--background-solid-rgb),.3) 45%,rgba(var(--background-solid-rgb),.7) 55%,rgba(var(--background-solid-rgb),.92) 65%,rgb(var(--background-solid-rgb)) 75%);background-size:400% 400%;background-repeat:no-repeat}[data-text-fade-in^=exiting-]:after{animation:text-fade-out-cover 2.6s cubic-bezier(.16,1,.3,1) 1 both}[data-text-fade-in=exiting-top]:after{transform:scaleY(-1)}@keyframes text-fade-in-sharpen{0%{filter:blur(2px)}to{filter:blur(0)}}@keyframes text-fade-in-reveal{0%{background-position:100% 100%}to{background-position:0 0}}@keyframes text-fade-out-cover{0%{background-position:0 0}to{background-position:100% 100%}}@keyframes text-fade-out-blur{0%{filter:blur(0)}to{filter:blur(2px)}}@media (prefers-reduced-motion:reduce){.text-fade-in{animation:none;filter:none}.text-fade-in:after,[data-text-fade-in=pending]:after,[data-text-fade-in^=exiting-],[data-text-fade-in^=exiting-]:after{display:none;animation:none;filter:none}}@media (max-width:750px){p{-webkit-hyphens:auto;hyphens:auto}}.cursor{position:absolute;top:220px;pointer-events:none;z-index:1000;left:-72px;transform:translate3d(calc(var(--cursor-scroll-x, 0px) + var(--cursor-side-x, 0px)),var(--cursor-scroll-y,0),0);transition:transform 1.5s cubic-bezier(.16,1,.3,1),top 1.5s cubic-bezier(.16,1,.3,1)}.fixed{position:fixed}@media (max-width:930px){.cursor{left:45px}}@media (max-width:599px){.cursor{transform:translate3d(calc(var(--cursor-scroll-x, 0px) + var(--cursor-side-x, 0px)),var(--cursor-scroll-y,0),0) scale(1.25)}}.cursor[data-entered=false]{transform:translate3d(-110vw,-110vh,0);transition:none}.cursor-dodge{width:32px;height:32px;will-change:transform}.cursor-sway{width:32px;height:32px;transform:translate3d(var(--cursor-sway-x,0),0,0);transition:transform 1.8s cubic-bezier(.16,1,.3,1)}.cursor-motion{position:relative;width:32px;height:32px;transform:translate(-50%,-50%);animation:hover 7s ease-in-out infinite both}.cursor[data-entered=false] .cursor-motion,.cursor[data-scrolling=true] .cursor-motion{animation-play-state:paused}.cursor[data-show-orbit=true] .cursor-motion:before{content:"";position:absolute;left:var(--cursor-center-x,0);top:var(--cursor-center-y,0);width:calc(var(--cursor-orbit-width, 0px) + 1px);height:calc(var(--cursor-orbit-height, 0px) + 1px);transform:translate(-50%,-50%);border-radius:50%;pointer-events:none}.cursor-motion svg{position:absolute;left:calc(var(--cursor-center-x, 22px) - 13.636px);top:calc(var(--cursor-center-y, 28px) - 11.977px);display:block;width:28px;height:29px;color:var(--cursor-color,#ed1023);transform:translate(var(--cursor-orbit-x,0),var(--cursor-orbit-y,0)) rotate(var(--cursor-angle,0deg));transition:transform .12s ease-out;transform-origin:13.636px 11.977px;will-change:transform}@property --fixed-cursor-angle{syntax:"<angle>";inherits:true;initial-value:0deg}.fixed-cursor .cursor-motion svg{transform:translate(calc(var(--fixed-cursor-orbit-radius-x, 0px) * cos(var(--fixed-cursor-angle, 0deg))),calc(var(--fixed-cursor-orbit-radius-y, 0px) * sin(var(--fixed-cursor-angle, 0deg)))) rotate(var(--fixed-cursor-angle,0deg));transition:--fixed-cursor-angle .65s cubic-bezier(.16,1,.3,1)}.cursor-motion div{position:absolute;left:22px;top:18px;display:flex;text-wrap:nowrap;align-items:center;border-radius:6px;font-size:.76rem;line-height:.8rem;font-weight:500;height:20px;width:-moz-fit-content;width:fit-content;padding:2px 4px;background:var(--cursor-color,#ed1023);color:#fff}@keyframes hover{0%,to{transform:translate(-50%,-50%) translate(0)}50%{transform:translate(-50%,-50%) translate(-10px,-5px)}}