
 *,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;scroll-behavior:smooth;scrollbar-gutter:stable}body,html{height:100%;margin:0;padding:0}body{line-height:1.5;min-height:100vh;text-rendering:optimizeSpeed;-webkit-font-smoothing:antialiased}blockquote,body,dd,dl,figure,h1,h2,h3,h4,h5,h6,p{margin-block-end:0;margin-block-start:0}button,h1,h2,h3,h4,input,label{line-height:1.1}ol[role=list],ul[role=list]{list-style:none}ol[class],ul[class]{padding:0}blockquote,body,dd,dl,figure,h1,h2,h3,h4,ol[class],p,ul[class]{margin:0}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}h1,h2,h3,h4{text-wrap:balance}a{-webkit-text-decoration-skip:ink;color:currentColor;text-decoration-skip-ink:auto}article>*+*{margin-top:1em}img,picture{display:block;height:auto;max-width:100%}img:not([alt]){filter:blur(4px)}:where(input,button,textarea,select){font-family:inherit;font-size:inherit}textarea:not([rows]){min-height:30ch}:target{scroll-margin-block:5ex}@font-face{font-display:swap;font-family:Bergen Mono;font-style:normal;font-weight:400;src:url(/public/fonts/BergenMono-Regular.woff2) format("woff2")}@font-face{font-display:swap;font-family:Bergen Mono;font-style:italic;font-weight:400;src:url(/public/fonts/BergenMono-Italic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Bergen Mono;font-style:normal;font-weight:600;src:url(/public/fonts/BergenMono-SemiBold.woff2) format("woff2")}@font-face{font-display:swap;font-family:Bergen Mono;font-style:italic;font-weight:600;src:url(/public/fonts/BergenMono-SemiBoldItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Bergen Mono;font-style:normal;font-weight:700;src:url(/public/fonts/BergenMono-Bold.woff2) format("woff2")}@font-face{font-display:swap;font-family:Bergen Mono;font-style:italic;font-weight:700;src:url(/public/fonts/BergenMono-BoldItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:200;src:url(/public/fonts/Inter-Regular.woff2) format("woff2")}:root{font-family:system-ui,-apple-system,sans-serif;--step--2:clamp(0.96rem,1.5643rem + -0.7798vw,1.3889rem);--step--1:clamp(1.2rem,1.8576rem + -0.8485vw,1.6667rem);--step-0:clamp(1.5rem,2.2045rem + -0.9091vw,2rem);--step-1:clamp(1.875rem,2.6148rem + -0.9545vw,2.4rem);--step-2:clamp(2.3438rem,3.0994rem + -0.975vw,2.88rem);--step-3:clamp(2.9297rem,3.6713rem + -0.9569vw,3.456rem);--step-4:clamp(3.6621rem,4.3456rem + -0.882vw,4.1472rem);--step-5:clamp(4.5776rem,5.1399rem + -0.7255vw,4.9766rem);--space-3xs:clamp(0.375rem,0.5511rem + -0.2273vw,0.5rem);--space-2xs:clamp(0.75rem,1.1023rem + -0.4545vw,1rem);--space-xs:clamp(1.125rem,1.6534rem + -0.6818vw,1.5rem);--space-s:clamp(1.5rem,2.2045rem + -0.9091vw,2rem);--space-m:clamp(2.25rem,3.3068rem + -1.3636vw,3rem);--space-l:clamp(3rem,4.4091rem + -1.8182vw,4rem);--space-xl:clamp(4.5rem,6.6136rem + -2.7273vw,6rem);--space-2xl:clamp(6rem,8.8182rem + -3.6364vw,8rem);--space-3xl:clamp(9rem,13.2273rem + -5.4545vw,12rem);--space-3xs-2xs:clamp(0.5rem,0.3977rem + 0.4545vw,0.75rem);--space-2xs-xs:clamp(1rem,0.9489rem + 0.2273vw,1.125rem);--space-xs-s:clamp(1.5rem,1.5rem + 0vw,1.5rem);--space-s-m:clamp(2rem,1.8977rem + 0.4545vw,2.25rem);--space-m-l:clamp(3rem,3rem + 0vw,3rem);--space-l-xl:clamp(4rem,3.7955rem + 0.9091vw,4.5rem);--space-xl-2xl:clamp(6rem,6rem + 0vw,6rem);--space-2xl-3xl:clamp(8rem,7.5909rem + 1.8182vw,9rem);--space-l-3xl:clamp(4rem,1.9545rem + 9.0909vw,9rem);--color-dark:oklch(0.09 0.02 264);--color-light:oklch(0.97 0.01 264);--color-white:oklch(1 0 0);--color-blue:oklch(0.45 0.15 264);--color-orange:oklch(0.65 0.15 45);--color-green:oklch(0.72 0.08 135);--color-purple:oklch(0.75 0.1 285);--color-bg:var(--color-light);--color-bg-subtle:oklch(from var(--color-light) calc(l + 0.02) c h);--color-bg-muted:oklch(from var(--color-light) calc(l - 0.06) c h);--color-bg-emphasis:oklch(from var(--color-light) calc(l - 0.12) c h);--color-text:var(--color-dark);--color-text-subtle:oklch(from var(--color-dark) calc(l + 0.35) c h);--color-text-muted:oklch(from var(--color-dark) calc(l + 0.75) c h/0.8);--color-primary:var(--color-blue);--color-primary-subtle:oklch(from var(--color-blue) calc(l - 0.15) c h);--color-primary-light:oklch(from var(--color-blue) calc(l + 0.15) c h);--color-accent:var(--color-orange);--color-accent-subtle:oklch(from var(--color-orange) calc(l - 0.05) c h);--color-accent-light:oklch(from var(--color-orange) calc(l + 0.15) c h);--color-global-text:var(--color-dark);--color-global-bg:var(--color-light);--color-card-bg:var(--color-bg-subtle);--color-card-cta-bg:var(--color-bg-muted);--color-card-heading:var(--color-global-text);--color-card-text:var(--color-text-subtle);--color-footer-bg:var(--color-primary-subtle);--color-footer-text:var(--color-white);--color-footer-socials-text:var(--color-text-muted);--leading:1.5;--leading-fine:1.1;--leading-loose:1.7;--kerning:normal;--kerning-tight:-0.1ch;--kerning-loose:0.1ch;--kerning-uppercase:0.04ch;--text-size-base:var(--step-1);--text-size-meta:var(--step-0);--text-size-lede:var(--step--2);--text-size-heading-1:var(--step-5);--text-size-heading-2:var(--step-4);--text-size-heading-3:var(--step-3);--text-size-heading-4:var(--step-2);--text-size-heading-5:var(--step-1);--text-size-heading-6:var(--step--2);--gutter:var(--space-s-m);--space-gutter:var(--space-m);--space-gutter-s:var(--space-s);--space-gutter-l:var(--space-l);--space-regions:var(--space-xl);--size-text-max-width:40rem;--font-base:"Bergen Mono","Courier New",monospace;--font-display:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--font-light:300;--font-regular:400;--font-medium:500;--font-semibold:600;--font-bold:700;--font-black:900;--focus-ring:2px solid currentColor;--focus-ring-offset:2px;--stroke:3px solid var(--color-stroke,var(--color-bg-emphasis));--radius-s:var(--space-3xs);--radius-m:var(--space-2xs);--radius-l:var(--space-m);--radius-xl:var(--space-xl);--radius-full:9999px;--wrapper-max-width:1240px}@media (prefers-color-scheme:dark){:root{--color-dark:oklch(0.97 0.01 264);--color-light:oklch(22.412% 0.0285 268.927);--color-blue:oklch(19.658% 0.08772 279.309);--color-orange:oklch(38.638% 0.11799 41.364)}}body{background-color:var(--color-global-bg);color:var(--color-global-text);font-family:var(--font-base);font-size:100%;font-size-adjust:from-font;font-weight:var(--font-regular);letter-spacing:var(--kerning);line-height:var(--leading);margin:0;min-height:unset;overflow-x:hidden}.body-grid{display:grid;grid-template-areas:"lm header rm" "lm main rm" "lm footer rm";grid-template-columns:1fr min(var(--wrapper-max-width),calc(100vw - 2rem)) 1fr;grid-template-rows:auto 1fr auto;min-height:100vh}:is(h1,h2,h3,h4){line-height:var(--leading-fine);text-wrap:balance}h1{font-size:var(--step-5)}h1,h2{max-width:var(--size-text-max-width)}h2{font-size:var(--step-4)}h3{font-size:var(--step-3);max-width:var(--size-text-max-width)}:is(h1,h2,h3){font-weight:600}:is(h4,h5,h6){font-size:var(--step-2)}ul:not([class]){list-style-type:disc;padding-inline-start:4ch}ul:not([class])>li{padding-inline-start:var(--space-xs)}ul ::marker{font-size:1.25lh}ol ::marker{font-size:1em;font-weight:var(--font-bold)}[role=list][class],[role=tablist][class]{margin-block:0;padding:0}:is(nav a){text-decoration:none}:is(a:not(nav a)){text-decoration-thickness:.15ex;&:hover{--color-link-hover:var(--color-text);color:var(--color-link-hover);text-decoration-color:var(--color-link-hover)}}:focus{outline:none}:focus-visible{outline:4px solid var(--focus-color,var(--color-accent-light));outline-offset:var(--focus-offset,.05em)}@supports (-moz-appearance:none){:root{--focus-offset:0.05em}}:target{scroll-margin-block:5lh}::-moz-selection{background:var(--color-global-text);color:var(--color-global-bg)}::selection{background:var(--color-global-text);color:var(--color-global-bg)}hr{border:none;border-block-start:var(--stroke);margin-block:var(--flow-space,var(--space-m))}svg[class~=icon]{height:1lh;max-width:1lh;width:auto}svg{flex-shrink:0}svg[role=img][width][height]{background:var(--color-light);height:revert;padding:var(--space-xs);width:revert}form>*+*{margin-top:var(--flow-space,.5rem)}.cluster{align-items:var(--cluster-vertical-alignment,center);display:flex;flex-direction:var(--cluster-direction,row);flex-wrap:var(--cluster-wrap,wrap);gap:var(--gutter,var(--space-m));justify-content:var(--cluster-horizontal-alignment,flex-start)}.wrapper{--gutter:1rem;margin-inline:auto;max-width:var(--wrapper-max-width,1360px);padding-left:var(--gutter);padding-right:var(--gutter);position:relative}@media (width > 1024px){.wrapper{--gutter:var(--space-s-m)}}.wrapper[data-wrapper-type=inner]{min-width:100%;padding-block:var(--gutter-wrapper-inner-block,var(--gutter));padding-inline:var(--gutter-wrapper-inner-inline,var(--gutter))}.flow>*+*{margin-block-start:var(--flow-space,var(--space-m,1em))}.flow-tight>*+*{margin-block-start:var(--flow-space-tight,var(--space-xs,.5em))}.flow-loose>*+*{margin-block-start:var(--flow-space-loose,var(--space-2xl,2em))}.repel{align-items:var(--repel-vertical-alignment,center);display:flex;flex-wrap:var(--repel-wrap,wrap);gap:var(--gutter,1em);justify-content:space-between}.prose{--flow-space:var(--space-l);font-family:var(--font-base);font-size:var(--text-size-lede);width:100%}@media (width > 1024px){.prose{font-size:var(--text-size-meta)}}.prose :is(h1,h2,h3){color:var(--color-card-heading);hyphens:auto;margin-inline:auto;overflow-wrap:anywhere}.prose :is(p,div,hr,li,dl,figcaption,blockquote){margin-inline:auto;max-width:var(--size-text-max-width);text-wrap:pretty}.prose :is(img){margin-inline:auto}.prose :is(figcaption){color:var(--color-text-subtle);font-size:var(--text-size-lede);margin-top:var(--space-xs);max-width:15rem;text-align:center}.prose :is(h1,h2,h3,h4)+:not([class]){--flow-space:var(--space-m)}.prose *+:is(h1,h2,h3,h4):not([class]){--flow-space:var(--space-xl)}.prose :is(ul,ol):not([class]) li+li,.prose :is(ul,ol):not([class]) li>:is(ol,ul){--flow-space:var(--space-xs)}.prose hr{--flow-space:var(--space-2xl)}.prose img{max-height:100vh;width:auto}.prose-image{margin-inline:auto;max-width:50%}.main{grid-area:main;margin-top:var(--space-xl)}.cards-grid{display:grid;gap:var(--space-s);height:100%}.card-projects{grid-row:2/3}@media (width > 600px){.cards-grid{grid-template-columns:repeat(2,1fr)}.card-about,.card-projects{grid-column:1/-1}.card-now{grid-column:2/3;grid-row:3/4}.card-decoration{grid-column:1/2}}@media (width > 1280px){.cards-grid{grid-template:1fr minmax(25rem,auto) /1fr 1fr 33rem}.card-projects{grid-column:3/4;grid-row:1/3}.card-now{grid-column:2/3;grid-row:2/3}.card-decoration{grid-column:1/2}.card-about{grid-column:1/3}}@view-transition{navigation:auto}@media not (prefers-reduced-motion:reduce){.card-about,.page-about{view-transition-name:about}.card-now,.page-now{view-transition-name:now}.card-projects,.page-projects{view-transition-name:projects}::view-transition-group(*){animation-duration:.15s}::view-transition-group(root){animation:none}}.contact-block{background-color:var(--color-primary-subtle);border-left:12px solid var(--color-accent);color:var(--color-bg);font-family:var(--font-display);max-width:var(--size-text-max-width);min-width:auto;@media (prefers-color-scheme:dark){color:inherit}&[data-wrapper-type=inner]{min-width:auto}p{margin-left:0;max-width:30ch}}.header{grid-area:header}.logo{background-color:var(--color-global-text);border-radius:var(--radius-full);display:inline-block;height:120px;width:120px}.header-wrapper{--gutter:var(--space-xs);padding-top:var(--space-xs)}.header-nav{--cluster-direction:column;--cluster-vertical-alignment:flex-start;--gutter:var(--space-3xs);font-size:var(--text-size-meta);font-weight:var(--font-regular)}.footer{background-color:var(--color-footer-bg);display:grid;grid-column:1/-1;grid-row:3;grid-template-columns:subgrid;margin-top:var(--space-l-3xl);width:100%}.footer-wrapper{--flow-space:var(--space-l);color:var(--color-footer-text);grid-column:2;padding-block:var(--space-xl) var(--space-s)}.footer-illustration{fill:var(--color-bg);height:auto;width:100%}.footer-socials{--cluster-direction:column;--cluster-vertical-alignment:flex-end;--gutter:0;align-self:center;font-size:var(--text-size-heading-5);justify-self:end;padding-block:var(--space-s) var(--space-xl)}.footer-socials__item{position:relative;text-decoration:none;transition:color .2s ease}.footer-socials__item:after{background-color:var(--color-footer-text);bottom:-.02em;content:"";height:3px;left:0;position:absolute;transition:width .3s cubic-bezier(.25,.8,.25,1);width:0}.footer-socials__item:active,.footer-socials__item:focus-visible,.footer-socials__item:hover{color:var(--color-footer-text)}.footer-socials__item:active:after,.footer-socials__item:focus-visible:after,.footer-socials__item:hover:after{width:100%}.footer-meta{color:var(--color-text-muted);text-align:right}.footer-nav{--cluster-direction:column;--cluster-vertical-alignment:flex-end;--gutter:var(--space-2xs);font-size:var(--text-size-lede)}@media (width > 420px){.footer-nav{--cluster-direction:row;--cluster-horizontal-alignment:flex-end;--gutter:var(--space-m);& a:not(:last-child){position:relative;&:after{content:"•";position:absolute;right:calc(var(--space-l)/-2);top:50%;transform:translateY(-50%)}}}}.card{animation:organic-weave 35s ease-in-out infinite alternate;background-color:var(--color-card-bg);color:var(--color-card-text);font-size:var(--text-size-lede);transition:transform .3s cubic-bezier(.25,.8,.25,1)}.card:not(.card-decoration){display:grid;gap:var(--space-l);grid-template-rows:var(--space-xl) 1fr auto;height:100%}.card:last-child{margin-top:auto}.card-title{color:var(--color-card-heading)}@media (width > 1024px){.card{font-size:var(--text-size-meta)}}.card:not(.card-decoration):hover{transform:translateY(-5px)}.card-content{max-width:30rem;text-wrap:balance}@media (prefers-reduced-motion:reduce){.card,.card .card-text,.card h2,.card-link,.card-link>svg{animation:none;transition:none}.card:hover,.card:hover .card-link>svg{transform:none}}.project-item__title{color:var(--color-card-heading);font-size:var(--text-size-heading-5);position:relative}.project-item__tags{--gutter:var(--space-xs);&>li{background-color:var(--color-card-cta-bg);border-radius:var(--radius-s);font-size:var(--text-size-lede);padding:.25em .5em}&>li:before{content:"#"}}.card-decoration{background-color:var(--color-primary-subtle);display:grid;height:100%;padding:var(--space-s-m);place-content:center;& img{margin-inline:auto;width:clamp(10rem,20vw,15rem)}a{color:var(--color-white);justify-self:center}}.card-link{--link-size:var(--space-m);background-color:var(--color-card-cta-bg);border-radius:var(--radius-full);display:grid;height:var(--link-size);margin-left:auto;overflow:hidden;padding:var(--space-xs);place-content:center;position:relative;transition:transform .15s cubic-bezier(.34,1.56,.64,1),background-color .15s ease;width:var(--link-size)}@media (width > 768px){.card-link{--link-size:var(--space-l)}}.card-link>svg{--svg-size:1.75rem;height:var(--svg-size);transform:rotate(45deg);transition:transform .2s cubic-bezier(.34,1.56,.64,1);width:var(--svg-size)}.card-link:hover{background-color:var(--color-primary-subtle);color:var(--color-white);transform:scale(1.05)}.card-link:hover>svg{transform:rotate(0deg)}.back-button>svg{transform:rotate(-135deg)}.back-button:hover>svg{transform:rotate(-180deg)}.welcome-grid{background-color:var(--color-primary-subtle);color:var(--color-light);display:grid;gap:var(--space-l);margin-inline:auto;max-width:var(--size-text-max-width);padding:var(--space-m);place-content:center}.personal-block{font-family:var(--font-display)}.avatar-image{margin-inline:auto;max-width:clamp(8rem,20vw,12rem)}.photo-block{margin-inline:auto;max-width:var(--size-text-max-width)}.photo-block img{max-width:clamp(8rem,20vw,12rem)}@media (width > 768px){.photo-block{--cluster-wrap:nowrap}}.detail-page{animation:organic-weave 35s ease-in-out infinite alternate;color:var(--color-card-text);transition:transform .3s cubic-bezier(.25,.8,.25,1)}@media (width > 768px){.detail-page{border-radius:var(--radius-l)}}.detail-page .card-link{margin-left:0}.page-header{--gutter:var(--space-xs);margin-inline:auto;max-width:var(--size-text-max-width);text-wrap:pretty;.path{color:var(--color-text-subtle);display:inline-block;font-size:var(--text-size-meta)}}.page-meta{--cluster-direction:column;--cluster-vertical-alignment:flex-start;--gutter:0;.updated{color:var(--color-text-subtle);opacity:.5}}.reference-block{background-color:var(--color-bg-muted);border-left:12px solid var(--color-primary-subtle);color:var(--color-primary-light);font-family:var(--font-display);max-width:var(--size-text-max-width);&[data-wrapper-type=inner]{min-width:auto}}.not-found-container{display:grid;justify-content:center;max-width:40ch;text-align:center;text-wrap:balance;.cluster{margin-inline:auto}img{height:3lh;width:auto}p{font-size:var(--text-size-meta)}}.visually-hidden{border:0;clip:rect(0 0 0 0);height:0;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.text-break{hyphens:auto;overflow-wrap:break-word;word-break:break-word}.text-balance{text-wrap:balance}.font-display{font-family:var(--font-display)}@media (width >= 768px){.hide-tablet-up{display:none}}@media (width >= 1024px){.hide-desktop-up{display:none}}.show-tablet-up{display:none}@media (width >= 768px){.show-tablet-up{display:block}}.show-desktop-up{display:none}@media (width >= 1024px){.show-desktop-up{display:block}}.show-mobile-large-up{display:none}@media (width >= 480px){.show-mobile-large-up{display:block}}.button{--button-bg:var(--color-text);--button-text:var(--color-bg);--button-x-padding:1em;--button-y-padding:0.2em;--button-gutter:0.5ch;--cluster-horizontal-alignment:center;align-items:center;background:var(--button-bg);border:none;color:var(--button-text);cursor:pointer;display:inline-flex;font-family:var(--font-base);font-weight:var(--font-medium);gap:var(--button-gutter);letter-spacing:var(--kerning-uppercase);line-height:var(--leading);padding:var(--button-y-padding) var(--button-x-padding);position:relative;text-decoration:none;transition:color .15s ease-in,background-color .15s ease-in,border-color .15s ease-in}.button:hover{--button-bg:var(--color-primary-subtle);color:var(--color-bg-subtle);@media (prefers-color-scheme:dark){color:inherit}}.button:disabled{cursor:not-allowed;opacity:.3}.button svg{height:1lh;width:1lh}
