@layer reset{*,:before,:after{box-sizing:border-box}:not(dialog){margin:0}@view-transition{navigation:auto}@media screen{:root{--theme:light;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--theme:dark}}[data-theme]{color-scheme:var(--theme)}[data-theme=light]{--theme:light}[data-theme=dark]{--theme:dark}@container style(--theme:light){[data-theme=inverted]{--theme:dark}}@container style(--theme:dark){[data-theme=inverted]{--theme:light}}}html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;scroll-behavior:smooth;scrollbar-gutter:stable;block-size:100%}@media (prefers-reduced-motion:no-preference){html{interpolate-size:allow-keywords}}body{background:var(--body-bg-color,canvas);min-block-size:100%;color:var(--text-color,canvasText);font-size:var(--step-0,1rem);font-weight:var(--font-weight-normal);font-family:var(--font-body,system-ui, sans-serif);font-synthesis-weight:none;line-height:var(--leading-normal,1.5);hanging-punctuation:first last;-webkit-font-smoothing:var(--font-smoothing,antialiased);overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading,inherit);text-box:trim-both cap alphabetic;text-wrap:balance}h1{font-size:var(--step-6,2.986rem);font-weight:var(--font-weight-bold,700);line-height:var(--leading-none,1)}h2{font-size:var(--step-4,2.0736rem);font-weight:var(--font-weight-bold,700);line-height:var(--leading-tight,1.15)}h3{font-size:var(--step-2,1.44rem);font-weight:var(--font-weight-semibold,600);line-height:var(--leading-snug,1.3)}h4{font-size:var(--step-1,1.2rem);font-weight:var(--font-weight-medium,500);line-height:var(--leading-snug,1.3)}h5{font-size:var(--step-0,1rem);font-weight:var(--font-weight-medium,500);line-height:var(--leading-normal,1.45)}h6{font-size:var(--step--1,.8333rem);font-weight:var(--font-weight-medium,500);line-height:var(--leading-normal,1.6)}hgroup p{text-wrap:balance}p,li,dd{max-inline-size:var(--measure,70ch);text-wrap:pretty}strong,b{font-weight:var(--font-weight-semibold,600)}small{font-size:var(--step--1,.8333em)}sub,sup{vertical-align:baseline;font-size:var(--step--1,.8333em);display:inline-block}sub{transform:translateY(.75ex)}sup{transform:translateY(-.75ex)}address{font-style:normal}blockquote p:first-of-type:before{content:open-quote}blockquote p:last-of-type:after{content:close-quote}q{font-style:italic}hr{color:inherit;border:0;border-block-start:var(--hr-border-width,1px) var(--hr-border,solid) var(--hr-border-color,currentColor)}abbr{cursor:help;text-underline-offset:.125em}ol[role=list],ul[role=list]{padding-inline-start:0;list-style:none}dt{font-weight:var(--font-weight-bold,bold)}dd{margin-inline-start:var(--space-s,1rem)}a[href],area,button,:where(input:not([type=text],[type=email],[type=number],[type=password],[type=""],[type=tel],[type=url])),label[for],select,summary,[tabindex]:not([tabindex*=\-],pre){cursor:pointer}label:has(input){cursor:pointer}::file-selector-button{cursor:pointer}a[href],area,button,input,label[for],select,summary,textarea,[tabindex]:not([tabindex*=\-]){touch-action:manipulation;-webkit-tap-highlight-color:transparent}a,summary{background:var(--link-bg-color,#0000);color:var(--link-color,LinkText);-webkit-text-decoration-line:var(--link-decoration-line,underline);text-decoration-line:var(--link-decoration-line,underline);-webkit-text-decoration-style:var(--link-decoration-style,solid);text-decoration-style:var(--link-decoration-style,solid);-webkit-text-decoration-color:var(--link-decoration-color,currentColor);text-decoration-color:var(--link-decoration-color,currentColor);text-decoration-thickness:var(--link-decoration-thickness,auto);text-underline-offset:var(--link-underline-offset,.1625em)}:is(a,summary):visited{color:var(--link-visited-color,VisitedText)}:is(a,summary):hover{color:var(--link-hover-color,currentColor);-webkit-text-decoration-style:var(--link-decoration-style-hover,solid);text-decoration-style:var(--link-decoration-style-hover,solid);-webkit-text-decoration-color:var(--link-decoration-color-hover,currentColor);text-decoration-color:var(--link-decoration-color-hover,currentColor);text-decoration-thickness:var(--link-decoration-thickness-hover,3px);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}:is(a,summary):active{color:var(--link-active-color,canvasText)}:is(a,summary):focus-visible{box-shadow:0 var(--focus-ring-width,3px) var(--focus-color,canvasText);background:var(--focus-bg-color);color:var(--focus-color,canvasText);text-decoration:none}input,button,textarea,select{font:inherit;color:inherit;letter-spacing:inherit;word-spacing:inherit}:is(input,textarea,select):focus-visible{box-shadow:inset 0 0 0 var(--fc-border-width,1px) var(--focus-color,canvasText)}fieldset{border:none;padding:0}legend,label{font-weight:var(--font-weight-medium,500);line-height:var(--fc-label-line-height,1.3);text-wrap:balance;display:block}legend{padding-inline:unset;font-size:var(--step-1,1.2rem)}:has(>:is([type=radio],[type=checkbox])+label){flex-wrap:nowrap;align-items:center;display:flex;position:relative}:has(>:is([type=radio],[type=checkbox])+label):has(input:hover,label:hover) label:before{box-shadow:0 0 0 var(--focus-ring-width,3px) var(--fc-shadow-color,oklch(from currentColor l c h / .25))}:has(>:is([type=radio],[type=checkbox])+label) input{opacity:0;z-index:1;flex-shrink:0;block-size:2.75rem;inline-size:2.75rem;margin-inline-start:-.625rem}:has(>:is([type=radio],[type=checkbox])+label) label{--_fc-radio-size:1.5rem;flex-grow:99999;padding-block:.625rem}:has(>:is([type=radio],[type=checkbox])+label) label:before,:has(>:is([type=radio],[type=checkbox])+label) label:after{content:"";margin-block:auto;position:absolute;inset-block:0;inset-inline-start:0}:has(>:is([type=radio],[type=checkbox])+label) label:before{inline-size:var(--_fc-radio-size);block-size:var(--_fc-radio-size);border:var(--fc-border-width,1px) var(--fc-border-style,solid) var(--fc-border-color,currentColor)}:has(>:is([type=radio],[type=checkbox])+label) [type=radio]+label:before{border-radius:var(--radius-full,50%)}:has(>:is([type=radio],[type=checkbox])+label) [type=radio]+label:after{inline-size:calc(var(--_fc-radio-size) / 2);block-size:calc(var(--_fc-radio-size) / 2);border-radius:var(--radius-full,50%);background:var(--brand-color,LinkText);opacity:0;inset-inline-start:calc(var(--_fc-radio-size) / 2);translate:-50%}:has(>:is([type=radio],[type=checkbox])+label) [type=checkbox]+label:after{border:solid;border-color:var(--brand-color,LinkText);border-block-start-color:#0000;border-inline-end-color:#0000;border-width:0 0 calc(var(--fc-border-width,1px) + 1px) calc(var(--fc-border-width,1px) + 1px);block-size:.375rem;inline-size:.75rem;transform:rotate(-45deg);translate:0 calc(-1 / 2 * var(--fc-border-width,1px));opacity:0;inset-block-start:0;inset-inline-start:.375rem}:has(>:is([type=radio],[type=checkbox])+label) :where([type=radio],[type=checkbox]):checked+label:after{opacity:1}:has(>:is([type=radio],[type=checkbox])+label) :where([type=radio],[type=checkbox]):focus-visible+label:before{border-width:calc(var(--fc-border-width,1px) + 1px);box-shadow:0 0 0 var(--focus-ring-width,3px) var(--focus-bg-color)}input[type=checkbox],input[type=radio],input[type=range],progress{accent-color:var(--brand-color,LinkText)}input[type=file]{max-inline-size:100%}input:not([type=button],[type=checkbox],[type=color],[type=file],[type=hidden],[type=image],[type=radio],[type=range],[type=reset],[type=submit]),textarea,select{padding-block:var(--fc-padding-block,.5rem);padding-inline:var(--fc-padding-inline,.75rem);border:var(--fc-border-width,1px) var(--fc-border-style,solid) var(--fc-border-color,currentColor);border-radius:var(--fc-radius,.25rem);background-color:var(--fc-background-color,#0000);color:var(--fc-value-color,inherit)}:is(input:not([type=button],[type=checkbox],[type=color],[type=file],[type=hidden],[type=image],[type=radio],[type=range],[type=reset],[type=submit]),textarea,select)::placeholder{color:var(--fc-placeholder-color,currentColor);opacity:.5;-webkit-user-select:none;user-select:none}:is(input:not([type=button],[type=checkbox],[type=color],[type=file],[type=hidden],[type=image],[type=radio],[type=range],[type=reset],[type=submit]),textarea,select):disabled{opacity:.37;cursor:not-allowed}select,textarea{field-sizing:content}textarea{resize:block}textarea:not([rows]){min-block-size:var(--fc-textarea-height,5lh)}input[type=color]{min-block-size:2.5rem;padding:calc(var(--fc-border-width,1px) * 2);border:var(--fc-border-width,1px) var(--fc-border-style,solid) var(--fc-border-color,currentColor);border-radius:var(--fc-radius,.25rem);background:0 0}input[type=color]::-webkit-color-swatch-wrapper{border-radius:inherit;padding:0}input[type=color]::-webkit-color-swatch{border-radius:calc(var(--fc-radius,.25rem) - var(--fc-border-width,1px) * 3);border:none}input[type=color]::-moz-color-swatch{border-radius:calc(var(--fc-radius,.25rem) - var(--fc-border-width,1px) * 3);border:none}input[type=range]:disabled{opacity:.37;cursor:not-allowed}select:not([size]):not([multiple]){appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 1em),calc(100% - .75em);background-repeat:no-repeat;background-size:.25em .25em}:is(select[size],select[multiple]) optgroup+optgroup,:is(select[size],select[multiple]) option{margin-block-start:var(--space-3xs,.25rem)}optgroup{font-weight:var(--font-weight-medium,500)}button,[type=button],[type=submit],[type=reset]{padding-block:.125em;padding-inline:.5em}::file-selector-button{padding-block:.125em;padding-inline:.5em}@supports (text-box:trim-both cap alphabetic){::file-selector-button{text-box:trim-both cap alphabetic;padding-block:var(--btn-padding-block,.5em);padding-inline:var(--btn-padding-inline,.5em)}}::file-selector-button{border:var(--btn-border-width,1px) var(--btn-border-style,solid) var(--btn-border-color,#0000);border-radius:var(--btn-radius,.25rem);background:var(--btn-color-bg,ButtonFace);color:var(--btn-color-text,ButtonText);box-shadow:var(--btn-shadow,0 var(--border-width-medium,1px) 0 var(--text-color,canvasText));transition-property:background,scale;transition-duration:var(--transition-fast,75ms);transition-timing-function:var(--ease-in,cubic-bezier(.4, 0, 1, 1))}::file-selector-button:hover{background:var(--btn-color-bg-hover,oklch(from ButtonFace .75 c h))}::file-selector-button:active{scale:.98}::file-selector-button:focus-visible{box-shadow:var(--btn-shadow-focus,0 var(--focus-ring-width,3px) 0 var(--focus-color,canvasText));background:var(--focus-bg-color);color:var(--focus-color,canvasText);outline-color:#0000}::file-selector-button:disabled{opacity:.37;cursor:not-allowed}@supports (text-box:trim-both cap alphabetic){button,[type=button],[type=submit],[type=reset]{text-box:trim-both cap alphabetic;padding-block:var(--btn-padding-block,.5em);padding-inline:var(--btn-padding-inline,.5em)}}button,[type=button],[type=submit],[type=reset]{border:var(--btn-border-width,1px) var(--btn-border-style,solid) var(--btn-border-color,#0000);border-radius:var(--btn-radius,.25rem);background:var(--btn-color-bg,ButtonFace);color:var(--btn-color-text,ButtonText);box-shadow:var(--btn-shadow,0 var(--border-width-medium,1px) 0 var(--text-color,canvasText));transition-property:background,scale;transition-duration:var(--transition-fast,75ms);transition-timing-function:var(--ease-in,cubic-bezier(.4, 0, 1, 1))}:is(button,[type=button],[type=submit],[type=reset]):hover{background:var(--btn-color-bg-hover,oklch(from ButtonFace .75 c h))}:is(button,[type=button],[type=submit],[type=reset]):active{scale:.98}:is(button,[type=button],[type=submit],[type=reset]):focus-visible{box-shadow:var(--btn-shadow-focus,0 var(--focus-ring-width,3px) 0 var(--focus-color,canvasText));background:var(--focus-bg-color);color:var(--focus-color,canvasText);outline-color:#0000}:is(button,[type=button],[type=submit],[type=reset]):disabled{opacity:.37;cursor:not-allowed}code,kbd,samp{padding-inline:var(--code-padding-inline,.25em);border:var(--code-border-width,1px) var(--code-border-style,solid) var(--code-border-color,currentColor);border-radius:var(--code-radius,.25rem);background:var(--code-color-bg);font-family:var(--font-mono,ui-monospace, monospace);font-size:var(--step--1,.8em);line-height:var(--code-line-height,1.15);hyphens:none;tab-size:2;text-align:start;word-spacing:normal;word-break:normal;word-wrap:normal;-webkit-box-decoration-break:clone;box-decoration-break:clone}:is(code,kbd,samp):has(>:is(code,kbd,samp)){padding-inline:unset;background:0 0;border:none;font-size:1em}pre{inline-size:100%;max-inline-size:fit-content;padding:var(--pre-padding,.875rem);border:var(--pre-border-width,1px) var(--pre-border-style,solid) var(--pre-border-color,currentColor);border-radius:var(--pre-radius,.25em);background:var(--pre-color-bg,#0000);line-height:var(--pre-line-height,1.3);overflow-inline:auto;writing-mode:lr;direction:ltr}pre :where(code,samp,kbd){color:inherit;background:0 0;border:none;padding:0}img,picture,svg,video,canvas,audio,iframe,embed,object{display:block}img,svg,video,iframe{block-size:auto;max-inline-size:100%}figcaption{font-size:var(--step--1,.8333em);font-family:var(--font-mono,monospace)}iframe{border:none}svg{inline-size:var(--icon-size,1em);block-size:var(--icon-size,1em);vertical-align:middle;flex-shrink:0}svg:not([class]){block-size:1lh;inline-size:auto}svg[role=img]{inline-size:revert;block-size:revert}summary{inline-size:fit-content;padding-inline-start:var(--summary-padding-inline-start,1rem);display:block;position:relative}summary:before{content:"";clip-path:polygon(0 0,100% 50%,0 100%);border:.4rem solid #0000;border-width:.4rem 0 .4rem .5625rem;border-inline-start-color:inherit;block-size:0;inline-size:0;transition:rotate var(--transition-slow,.2s);margin-block:auto;position:absolute;inset-block:0;inset-inline-start:0}details::details-content{opacity:0;block-size:0;transition:content-visibility var(--transition-slow,.2s) allow-discrete, block-size var(--transition-slow,.2s), opacity var(--transition-slow,.2s);overflow-y:clip}summary+*{padding-block-start:var(--details-content-padding-block,.5rem);padding-inline-start:var(--summary-padding-inline-start,1rem)}details[open] summary:before{rotate:90deg}details[open]::details-content{opacity:1;block-size:auto}dialog{background-color:var(--dialog-color-bg,Canvas);border:var(--dialog-border-width,1px) var(--dialog-border-style,solid) var(--dialog-border-color,currentColor);border-radius:var(--dialog-radius,.5rem);max-block-size:calc(100vb - (2 * var(--region-space,1lh)));max-inline-size:min(var(--dialog-max-width,45ch), calc(100vi - (2 * var(--wrapper-padding-inline,1lh))));overscroll-behavior:contain;transform:translateY(-1rem)}dialog,dialog::backdrop{transition:display var(--dialog-transition-duration,.6s) allow-discrete, overlay var(--dialog-transition-duration,.6s) allow-discrete, opacity var(--dialog-transition-duration,.6s) ease, transform var(--dialog-transition-duration,.6s) ease;opacity:0}dialog[open]{opacity:1;transform:translateY(0)}dialog[open]::backdrop{opacity:.8}html:has(dialog[open]){overflow:hidden}@starting-style{dialog[open],dialog[open]::backdrop{opacity:0}dialog[open]{transform:translateY(1rem)}}dialog::backdrop{background-color:var(--dialog-color-overlay,black);overscroll-behavior:contain;overflow:hidden}table{border-collapse:collapse;inline-size:100%}caption,th,td{text-align:start}caption,th{font-weight:var(--font-weight-bold,700)}caption{font-size:var(--step-1,1.2rem);line-height:var(--leading-snug,1.3);text-box:trim-both cap alphabetic;text-wrap:balance;margin-block-end:var(--space-s,1rem)}th,td{padding-block:var(--table-cell-padding-block,.25rem);padding-inline:0 var(--table-cell-padding-inline,.5rem);border-block-end:var(--table-border-width,1px) var(--table-border-style,solid) var(--table-border-color,currentColor);text-align:start;vertical-align:text-top}:is(th,td):last-child{padding-inline-end:0}:focus-visible{outline-width:var(--focus-ring-width,3px);outline-style:var(--focus-ring-style,solid);outline-color:var(--focus-ring-color,#0000);outline-offset:var(--focus-ring-offset,0px)}::selection{background:var(--color-selection-bg,Highlight);color:var(--color-selection-text,HighlightText);text-shadow:none}:target{scroll-margin-block:var(--target-margin-block,1lh)}[hidden]{display:none!important}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer theme;@layer compositions{.cluster{gap:var(--cluster-gap,1rem);justify-content:var(--cluster-horizontal-alignment,flex-start);align-items:var(--cluster-vertical-alignment,center);flex-wrap:wrap;display:flex}.flow>*+*{margin-block-start:var(--flow-space,1lh)}.grid-auto{grid-template-columns:repeat(var(--grid-placement,auto-fill), minmax(var(--grid-item-min,min(16rem, 100%)), 1fr));gap:var(--grid-gap,1rem);align-items:var(--grid-align-items,stretch);display:grid}.repel{justify-content:space-between;align-items:var(--repel-vertical-alignment,center);gap:var(--repel-gap,1rem);flex-wrap:wrap;display:flex}:has(>.sidebar){gap:var(--sidebar-gap,1rem);align-items:var(--sidebar-vertical-alignment,flex-start);flex-wrap:wrap;display:flex}.sidebar{flex-basis:var(--sidebar-content-min-width,20rem);flex-grow:1}:has(>.sidebar)>:not(.sidebar){min-inline-size:var(--sidebar-wrap-at,50%);flex-grow:99999;flex-basis:0}:is(:has(>.sidebar)>:only-child,:has(>.sidebar)>:nth-child(3)){--error:"Sidebar layouts must include exactly two child elements.";outline:var(--border-width-thin,1px) var(--border-style,solid) var(--error-color)}.stack{gap:var(--stack-gap,1lh);justify-content:var(--stack-vertical-alignment,flex-start);align-items:var(--stack-horizontal-alignment,flex-start);flex-direction:column;display:flex}.switcher{gap:var(--switcher-gap,1rem);align-items:var(--switcher-vertical-alignment,flex-start);flex-wrap:wrap;display:flex}.switcher>*{flex-grow:1;flex-basis:calc((var(--switcher-inline-at,40rem) - 100%) * 999)}.switcher>:nth-child(n+3){flex-basis:100%}.wrapper{max-inline-size:var(--wrapper-max-width,80rem);padding-inline:var(--wrapper-padding-inline,1lh);margin-inline:auto}}@layer components{body{font-size:var(--step-1)}main>*+*{border-block-start:var(--border-width-hairline) var(--border-style) var(--border-color)}h1,h2,h3{--font-heading:var(--font-display);text-transform:uppercase}h1{font-size:var(--step-8)}h2{font-size:var(--step-5-4)}h3{font-size:var(--step-3-2)}.skip-link-container a{inline-size:fit-content;font-size:var(--site-header-link-font-size);font-weight:var(--site-header-link-font-weight);display:block}.skip-link-container:focus-within{padding-block:var(--site-header-padding-block);border-block-end:var(--border-width-hairline) var(--border-style) var(--border-color);background:var(--focus-bg-color);color:var(--focus-color)}.site-header{border-block-end:var(--border-width-hairline) var(--border-style) var(--border-color);background:var(--body-bg-color);z-index:1;position:sticky;inset-block-start:0}.site-nav li{padding-block:var(--site-header-padding-block);position:relative}.site-nav a{--link-decoration-line:none;font-size:var(--site-header-link-font-size);font-weight:var(--site-header-link-font-weight);display:block}.site-nav a:hover{--link-decoration-line:underline}.site-nav a:after{content:"";position:absolute;inset:0}.site-nav [aria-current]:before,.site-nav [data-state=active]:before{content:"";background:var(--text-color);block-size:var(--border-width-thick);position:absolute;inset-block-end:0;inset-inline:0}.project-list-container{--flow-space:var(--region-space);isolation:isolate;max-inline-size:var(--wrapper-max-width,80rem);padding-inline:var(--wrapper-padding-inline,1lh);margin-inline:auto;container-type:inline-size}.project-list-scrollport{--sidebar-gap:0 var(--sidebar-column-gap);gap:var(--sidebar-gap,1rem);align-items:var(--sidebar-vertical-alignment,flex-start);flex-wrap:wrap;display:flex}.project-list-scrollport:before{content:"";flex-basis:var(--sidebar-content-min-width,20rem);flex-grow:1}.project-list-scrollport>*{min-inline-size:var(--sidebar-wrap-at,50%);flex-grow:99999;flex-basis:0}.project-list{--grid-item-min:min(26ch, 100%);--grid-gap:var(--space-l)}.project-card-container{container-type:inline-size}.project-card-container,.project-card{block-size:100%}.project-card{row-gap:var(--space-m);padding:var(--space-m);outline:var(--border-width-hairline) var(--border-style) var(--border-color);outline-offset:calc(-1 * var(--border-width-hairline));border-radius:var(--radius-s);transition:outline-color var(--transition-normal);grid-template-rows:1fr 1fr;display:grid;position:relative;overflow:clip}@supports not (text-box:trim-both cap alphabetic){.project-card{row-gap:var(--space-xs)}}@media (hover:hover){.project-card:has(a:hover){outline-width:var(--border-width-thin);outline-offset:calc(-1 * var(--border-width-thin));outline-color:currentColor}}.project-card-content{row-gap:var(--space-m);grid-row:span 3;grid-template-rows:auto auto 1fr;display:grid}.project-card-content>:not(h3){font-size:.8333em}.project-card-content h3,.project-card-content p{z-index:2;position:relative}.project-card-content a{place-self:end start}.project-card-content a:before{content:"";z-index:1;position:absolute;inset:0}.project-card-thumbnail{aspect-ratio:1.67;z-index:-1;margin-block-start:auto;position:relative}.project-card-thumbnail img{object-fit:cover;object-position:top;inline-size:100%;filter:drop-shadow(0rem 1ex 1ex light-dark(oklch(from var(--text-color) l c h / .25),var(--black)));position:absolute;inset:0}@container (width>36rem){.project-card{column-gap:var(--sidebar-column-gap);grid-template-columns:1fr 1fr}.project-card>*{grid-row:1/-1}}@media screen and (width>=72rem){.project-list-container{max-inline-size:unset;padding-inline:unset}.project-list-scrollport{--_dynamic-gutter:calc((100cqi - var(--wrapper-max-width)) / 2);grid-template-columns:var(--_dynamic-gutter) var(--sidebar-content-min-width,20rem) 1fr var(--_dynamic-gutter);gap:0 var(--sidebar-column-gap);scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-inline:contain;padding-block-end:var(--border-width-hairline);scroll-padding-inline-start:calc(var(--_dynamic-gutter) + var(--wrapper-padding-inline) + var(--sidebar-content-min-width) + var(--sidebar-column-gap));scroll-padding-inline-end:calc(max(0px, var(--_dynamic-gutter)) + var(--wrapper-padding-inline));display:grid;overflow-x:auto}@media (prefers-reduced-motion:no-preference){.project-list-scrollport{scroll-behavior:smooth}}.project-list-scrollport:before{display:none}.project-list-scrollport>*{grid-column:3/4}.project-list-scrollport::scroll-button(*){--focus-ring-width:var(--border-width-thick);block-size:2.75rem;inline-size:2.75rem;padding:unset;outline:var(--border-width-hairline) var(--border-style) var(--border-color);outline-offset:calc(-1 * var(--border-width-hairline));border-radius:var(--radius-s);font-family:var(--font-body);font-size:var(--step-2);cursor:pointer;transition-property:opacity,scale,border-color;transition-duration:var(--transition-normal);background:0 0;border:none;margin-block-start:var(--sidebar-row-gap)}.project-list-scrollport::scroll-button(*):hover{outline-width:var(--border-width-thin);outline-offset:calc(-1 * var(--border-width-thin));outline-color:currentColor}.project-list-scrollport::scroll-button(*):focus-visible{outline-width:var(--border-width-thin);outline-offset:calc(-1 * var(--border-width-thin));outline-color:currentColor}.project-list-scrollport::scroll-button(*):active{scale:.98}.project-list-scrollport::scroll-button(*):focus-visible{background:var(--focus-bg-color);color:var(--focus-color)}.project-list-scrollport::scroll-button(*):disabled{opacity:.37;cursor:not-allowed}.project-list-scrollport::scroll-button(left){content:"" / "Scroll Left";margin-inline-start:calc(var(--_dynamic-gutter) + var(--wrapper-padding-inline) + var(--sidebar-content-min-width) + var(--sidebar-column-gap));margin-inline-end:calc(.5 * var(--sidebar-column-gap))}.project-list-scrollport::scroll-button(right){content:"" / "Scroll Right"}.project-list{--grid-gap:var(--space-xs) var(--sidebar-column-gap);grid-template-columns:unset;grid-auto-flow:column;grid-auto-columns:var(--grid-item-min)}.project-list>li{scroll-snap-align:start;grid-row:span 4}.project-list>li:last-child{scroll-snap-align:end}.project-list:after{content:"";block-size:1px}}#contact{--stack-gap:1lh}#contact [href^=mailto]{--link-decoration-line:none;border:var(--btn-border-width,1px) var(--btn-border-style,solid) var(--btn-border-color,#0000);border-radius:var(--radius-s);padding:.5em;display:inline-block}#contact [href^=mailto]:hover{--link-decoration-line:underline}#contact [aria-labelledby=socials]{font-size:var(--step-0)}#contact [aria-labelledby=socials] a{align-items:center;gap:.5ch;display:inline-flex}#contact [aria-labelledby=socials] a svg path{fill:currentColor}.site-footer{--region-space:var(--site-header-padding-block);border-block-start:var(--border-width-hairline) var(--border-style) var(--border-color);font-size:var(--step-0)}}@layer utilities{.region{padding-block:var(--region-space,1lh)}.visually-hidden:not(:focus-visible){clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:0;margin:0;padding:0;position:absolute;overflow:hidden}.step-2{font-size:var(--step-2)}.step-1{font-size:var(--step-1)}.step-0{font-size:var(--step-0)}.step--1{font-size:var(--step--1)}.step--2{font-size:var(--step--2)}.text-balance{text-wrap:balance}.text-box-trim-both{text-box:trim-both cap alphabetic}.text-box-trim-start{text-box:trim-start cap alphabetic}:root{--aalt:off;--case:off;--cv01:off;--cv02:off;--cv03:off;--cv04:off;--cv05:off;--cv06:off;--cv08:off;--cv09:off;--cv10:off;--cv11:off;--cv12:off;--cv13:off;--dnom:off;--numr:off;--salt:off;--sinf:off;--ss01:off;--ss02:off;--ss03:off;--ss04:off;--ss05:off;--ss06:off;--ss07:off;--cpsp:off}.access-all-alternates{--aalt:1}.case-sensitive-forms{--case:on}.character-variants-1{--cv01:on}.character-variants-2{--cv02:on}.character-variants-3{--cv03:on}.character-variants-4{--cv04:on}.character-variants-5{--cv05:on}.character-variants-6{--cv06:on}.character-variants-8{--cv08:on}.character-variants-9{--cv09:on}.character-variants-10{--cv10:on}.character-variants-11{--cv11:on}.character-variants-12{--cv12:on}.character-variants-13{--cv13:on}.discretionary-ligatures{font-variant-ligatures:discretionary-ligatures}.denominators{--dnom:on}.fractions{font-variant-numeric:diagonal-fractions}.numerators{--numr:on}.ordinals{font-variant-numeric:ordinal}.proportional-figures{font-variant-numeric:proportional-nums}.stylistic-alternates{--salt:on}.scientific-inferiors{--sinf:on}.stylistic-set-1{--ss01:on}.stylistic-set-2{--ss02:on}.stylistic-set-3{--ss03:on}.stylistic-set-4{--ss04:on}.stylistic-set-5{--ss05:on}.stylistic-set-6{--ss06:on}.stylistic-set-7{--ss07:on}.subscript{font-variant-position:sub}.superscript{font-variant-position:super}.tabular-figures{font-variant-numeric:tabular-nums}.slashed-zero{font-variant-numeric:slashed-zero}.capital-spacing{--cpsp:on}.access-all-alternates,.case-sensitive-forms,.character-variants-1,.character-variants-2,.character-variants-3,.character-variants-4,.character-variants-5,.character-variants-6,.character-variants-8,.character-variants-9,.character-variants-10,.character-variants-11,.character-variants-12,.character-variants-13,.denominators,.numerators,.stylistic-alternates,.scientific-inferiors,.stylistic-set-1,.stylistic-set-2,.stylistic-set-3,.stylistic-set-4,.stylistic-set-5,.stylistic-set-6,.stylistic-set-7,.capital-spacing{font-feature-settings:"aalt" var(--aalt), "case" var(--case), "cv01" var(--cv01), "cv02" var(--cv02), "cv03" var(--cv03), "cv04" var(--cv04), "cv05" var(--cv05), "cv06" var(--cv06), "cv08" var(--cv08), "cv09" var(--cv09), "cv10" var(--cv10), "cv11" var(--cv11), "cv12" var(--cv12), "cv13" var(--cv13), "dnom" var(--dnom), "numr" var(--numr), "salt" var(--salt), "sinf" var(--sinf), "ss01" var(--ss01), "ss02" var(--ss02), "ss03" var(--ss03), "ss04" var(--ss04), "ss05" var(--ss05), "ss06" var(--ss06), "ss07" var(--ss07), "cpsp" var(--cpsp)}:root,.regular{--opsz:14;--wght:400}.medium{--opsz:14;--wght:500}.semibold{--opsz:14;--wght:600}.bold{--opsz:14;--wght:700}.regular,.medium,.semibold,.bold{font-weight:var(--wght);font-variation-settings:"opsz" var(--opsz)}}@layer exceptions{.homepage{--measure:none}.homepage main{--sidebar-row-gap:var(--space-l);--sidebar-column-gap:var(--space-m);--sidebar-gap:var(--sidebar-row-gap) var(--sidebar-column-gap);--sidebar-content-min-width:18.75rem;--sidebar-wrap-at:60%}.homepage #hero h1{row-gap:var(--space-s);font-size:var(--step-9-8)}.homepage #hero h1 .first-name{align-items:center;gap:calc(.33 * var(--sidebar-column-gap));display:inline-flex;position:relative}.homepage #hero h1 .first-name:after{content:"";pointer-events:none;background:currentColor;flex-grow:999;block-size:.125em}.homepage #hero picture,.homepage #hero img{display:inline-block}.homepage #hero img{outline:var(--border-width-thin) var(--border-style) currentColor;block-size:.7em;inline-size:auto;-webkit-mask:radial-gradient(.7rem at .7rem .7rem,#0000 98%,#000) -.7rem -.7rem;mask:radial-gradient(.7rem at .7rem .7rem,#0000 98%,#000) -.7rem -.7rem}@supports (corner-shape:scoop){.homepage #hero img{-webkit-mask:unset;mask:unset;border-radius:var(--radius-l);corner-shape:scoop}}.homepage #hero .desc-container{--flow-space:var(--space-l);--sidebar-gap:0 var(--sidebar-column-gap)}@supports not (text-box:trim-both cap alphabetic){.homepage #hero .desc-container{--flow-space:0px}}.homepage #hero .desc-container{gap:var(--sidebar-gap,1rem);align-items:var(--sidebar-vertical-alignment,flex-start);flex-wrap:wrap;display:flex}.homepage #hero .desc-container:before{content:"";flex-basis:var(--sidebar-content-min-width,20rem);flex-grow:1}.homepage #hero .desc-container>div{min-inline-size:var(--sidebar-wrap-at,50%);flex-grow:99999;flex-basis:0}}@layer theme.base{:root{--step--2:clamp(.5628rem, .6457rem + -.1037vw, .625rem);--step--1:clamp(.75rem, .7499rem + .0003vw, .7502rem);--step-0:clamp(.9rem, .8667rem + .1667vw, 1rem);--step-1:clamp(1.08rem, .9957rem + .4217vw, 1.333rem);--step-2:clamp(1.296rem, 1.1357rem + .8015vw, 1.7769rem);--step-3:clamp(1.5552rem, 1.2841rem + 1.3557vw, 2.3686rem);--step-4:clamp(1.8662rem, 1.4359rem + 2.1518vw, 3.1573rem);--step-5:clamp(2.2395rem, 1.5831rem + 3.2821vw, 4.2087rem);--step-6:clamp(2.6874rem, 1.7131rem + 4.8714vw, 5.6102rem);--step-7:clamp(3.2249rem, 1.807rem + 7.0893vw, 7.4784rem);--step-8:clamp(3.8698rem, 1.8369rem + 10.1649vw, 9.9688rem);--step-9:clamp(4.6438rem, 1.7623rem + 14.4076vw, 13.2884rem);--step-9-8:clamp(4.6438rem, 2.8687rem + 8.875vw, 9.9688rem);--step-5-4:clamp(2.2394rem, 1.9333rem + 1.5302vw, 3.1575rem);--step-3-2:clamp(1.555rem, 1.481rem + .3698vw, 1.7769rem);--space-4xs:clamp(.125rem, .125rem + 0vw, .125rem);--space-3xs:clamp(.25rem, .25rem + 0vw, .25rem);--space-2xs:clamp(.4375rem, .4167rem + .1042vw, .5rem);--space-xs:clamp(.6875rem, .6667rem + .1042vw, .75rem);--space-s:clamp(.875rem, .8333rem + .2083vw, 1rem);--space-m:clamp(1.375rem, 1.3333rem + .2083vw, 1.5rem);--space-l:clamp(1.8125rem, 1.75rem + .3125vw, 2rem);--space-xl:clamp(2.6875rem, 2.5833rem + .5208vw, 3rem);--space-2xl:clamp(3.625rem, 3.5rem + .625vw, 4rem);--space-3xl:clamp(5.375rem, 5.1667rem + 1.0417vw, 6rem);--space-4xs-3xs:clamp(.125rem, .0833rem + .2083vw, .25rem);--space-3xs-2xs:clamp(.25rem, .1667rem + .4167vw, .5rem);--space-2xs-xs:clamp(.4375rem, .3333rem + .5208vw, .75rem);--space-xs-s:clamp(.6875rem, .5833rem + .5208vw, 1rem);--space-s-m:clamp(.875rem, .6667rem + 1.0417vw, 1.5rem);--space-m-l:clamp(1.375rem, 1.1667rem + 1.0417vw, 2rem);--space-l-xl:clamp(1.8125rem, 1.4167rem + 1.9792vw, 3rem);--space-xl-2xl:clamp(2.6875rem, 2.25rem + 2.1875vw, 4rem);--space-2xl-3xl:clamp(3.625rem, 2.8333rem + 3.9583vw, 6rem);--space-s-l:clamp(.875rem, .5rem + 1.875vw, 2rem);--white:#fff;--black:#0b0c0c;--black-tint-5:color-mix(in oklab, var(--black), var(--white) 5%);--black-tint-25:color-mix(in oklab, var(--black), var(--white) 25%);--black-tint-50:color-mix(in oklab, var(--black), var(--white) 50%);--black-tint-80:color-mix(in oklab, var(--black), var(--white) 80%);--black-tint-95:color-mix(in oklab, var(--black), var(--white) 95%);--red:#ca3535;--green:#0f7a52;--orange:oklch(80% .19 67.28);--orange-tint-25:color-mix(in oklab, var(--orange), var(--white) 25%);--orange-tint-50:color-mix(in oklab, var(--orange), var(--white) 50%);--orange-tint-80:color-mix(in oklab, var(--orange), var(--white) 80%);--orange-tint-95:color-mix(in oklab, var(--orange), var(--white) 95%);--orange-shade-25:color-mix(in oklab, var(--orange), var(--black) 25%);--orange-shade-50:color-mix(in oklab, var(--orange), var(--black) 50%);--yellow:#fd0;--yellow-shade-50:color-mix(in oklab, var(--yellow), var(--black) 50%);--blue:#1d70b8;--blue-tint-25:color-mix(in oklab, var(--blue), var(--white) 25%);--blue-tint-50:color-mix(in oklab, var(--blue), var(--white) 50%);--blue-tint-80:color-mix(in oklab, var(--blue), var(--white) 80%);--blue-tint-95:color-mix(in oklab, var(--blue), var(--white) 95%);--blue-shade-25:color-mix(in oklab, var(--blue), var(--black) 25%);--blue-shade-50:color-mix(in oklab, var(--blue), var(--black) 50%);--font-display:"Jakob Semi-Condensed", "Adjusted Impact Fallback", system-ui, sans-serif;--font-sans:"Inter", "Adjusted Arial Fallback", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, monospace;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-none:1;--leading-tight:1.125;--leading-snug:1.26563;--leading-normal:1.42383;--leading-relaxed:1.60181;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--font-smoothing:auto}@media (prefers-color-scheme:dark){:root{--font-weight-normal:350;--font-weight-medium:450;--font-weight-semibold:550;--font-weight-bold:650;--font-smoothing:antialiased}}:root{--border-width-hairline:.5px;--border-width-thin:1.5px;--border-width-medium:3px;--border-width-thick:5px;--border-style:solid;--radius-none:0px;--radius-s:.125rem;--radius-m:.25rem;--radius-l:.5rem;--radius-full:100vmax;--transition-fast:75ms;--transition-normal:.15s;--transition-slow:.3s;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1)}}@layer theme.semantic{:root{--measure:60ch;--wrapper-max-width:64rem;--wrapper-padding-inline:var(--space-m);--region-space:var(--space-l-xl);--cluster-gap:var(--space-s);--grid-gap:var(--space-s);--repel-gap:var(--space-s);--sidebar-gap:var(--space-s);--stack-gap:var(--space-s);--switcher-gap:var(--space-s);--font-body:var(--font-sans);--font-heading:var(--font-sans);--focus-ring-width:var(--border-width-thick);--body-bg-color:light-dark(var(--white),var(--black-tint-5));--text-color:light-dark(var(--black),var(--white));--secondary-text-color:light-dark(var(--black-tint-25),var(--black-tint-80));--brand-color:var(--blue);--link-color:var(--text-color);--link-bg-color:var(--body-bg-color);--link-visited-color:var(--text-color);--link-hover-color:var(--text-color);--link-active-color:var(--text-color);--border-color:var(--black-tint-50);--input-border-color:var(--text-color);--focus-bg-color:var(--orange);--focus-color:var(--black);--error-color:var(--red);--success-color:var(--green);--hover-bg-color:light-dark(var(--black-tint-80),var(--black-tint-25))}}@layer theme.components{:root{--site-header-padding-block:var(--space-s);--site-header-height:calc(1em + (2 * var(--site-header-padding-block)));--site-header-link-font-size:.8333em;--site-header-link-font-weight:var(--font-weight-medium);--target-margin-block:var(--site-header-height)}a,summary{--link-decoration-line:underline;--link-decoration-style:solid;--link-decoration-style-hover:solid;--link-decoration-color:currentColor;--link-decoration-color-hover:currentColor;--link-decoration-thickness:max(var(--border-width-thin), (.0625 * 1rem));--link-decoration-thickness-hover:max(var(--border-width-medium), 3 * (.0625 * 1rem), 2 * (.0625 * 1em));--link-underline-offset:.2em}.btn,button,[type=button],[type=submit],[type=reset]{--btn-padding-block:.5em;--btn-padding-inline:.625em;--btn-border-width:var(--border-width-thin);--btn-border-style:var(--border-style);--btn-radius:var(--radius-none)}::file-selector-button{--btn-padding-block:.5em;--btn-padding-inline:.625em;--btn-border-width:var(--border-width-thin);--btn-border-style:var(--border-style);--btn-radius:var(--radius-none)}hr{--hr-border-width:var(--border-width-thick);--hr-border-style:var(--border-style)}form{--fc-padding-block:var(--space-3xs);--fc-padding-inline:var(--space-2xs);--fc-border-width:var(--border-width-medium);--fc-border-style:var(--border-style);--fc-radius:var(--radius-none);--fc-label-line-height:var(--leading-snug)}code,kbd,samp{--code-padding-inline:var(--space-4xs);--code-border-width:var(--border-width-thin);--code-border-style:var(--border-style);--code-border-color:color-mix(in oklch, var(--text-color,currentColor) 5%, #0000);--code-radius:var(--radius-none);--code-color-bg:color-mix(in oklch, currentColor 5%, transparent);--code-line-height:var(--leading-tight)}@media (prefers-color-scheme:dark){code,kbd,samp{--code-color-bg:color-mix(in oklch, currentColor 15%, transparent)}}pre{--pre-padding:var(--space-s);--pre-border-width:var(--border-width-thin);--pre-border-style:var(--border-style);--pre-radius:var(--radius-none);--pre-line-height:var(--leading-snug)}details{--summary-padding-inline-start:var(--space-s);--details-content-padding-block:var(--space-2xs)}dialog{--dialog-max-width:45ch;--dialog-padding:var(--space-s);--dialog-border-width:var(--border-width-thin);--dialog-border-style:var(--border-style);--dialog-radius:var(--radius-none);--dialog-transition-duration:calc(2 * var(--transition-slow))}table{--table-cell-padding-block:var(--space-2xs);--table-cell-padding-inline:var(--space-s);--table-border-width:var(--border-width-thin);--table-border-style:var(--border-style)}}