@font-face{font-family:geist;src:url(../media/Geist_VariableFont_wght-s.p.1l8jt-u-boo7d.woff2)format("woff2");font-display:swap;font-weight:100 900;font-style:normal}@font-face{font-family:geist Fallback;src:local(Arial);ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.0%;size-adjust:106.28%}._9Bv3Zq_className{font-family:geist,geist Fallback,sans-serif,system-ui}._9Bv3Zq_variable{--font-geist:"geist", "geist Fallback", sans-serif, system-ui}
@layer tokens{:root{--color-white:#fff;--color-black:#000;--color-gray-300:#b3b3b3;--color-orange:#ff4b24;--color-page-background:var(--color-white);--color-page-text:var(--color-black);--color-selection-background:var(--color-black);--color-selection-text:var(--color-white);--color-outline:currentColor;--font-family-body:var(--font-geist), "Geist", sans-serif, system-ui;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-md:1.25rem;--font-size-lg:1.5rem;--font-size-xl:2rem;--font-size-2xl:2.5rem;--font-size-home-title:clamp(var(--font-size-xl), 3vw, var(--font-size-2xl));--font-size-home-link:clamp(var(--font-size-md), 2vw, var(--font-size-lg));--font-weight-light:300;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--line-height-tight:1.2;--line-height-normal:1.5;--line-height-relaxed:1.7;--space-0:0;--space-1:2px;--space-2:4px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:20px;--space-7:24px;--space-8:32px;--space-9:40px;--space-10:48px;--space-navigation-column:28px;--layout-page-gutter:var(--space-7);--layout-main-padding-block:var(--space-10);--layout-viewport-height:100vh;--layout-home-chrome-height:160px;--layout-home-min-height:calc(var(--layout-viewport-height) - var(--layout-home-chrome-height));--layout-home-columns:2fr 1fr;--layout-project-card-max:720px;--size-icon-sm:18px;--size-icon-md:24px;--size-control:32px;--asset-home-mark:url(/favicon.svg);--border-width-hairline:1px;--border-color-card:transparent;--radius-none:0;--radius-full:50%;--opacity-muted:.7;--opacity-subtle:.4;--opacity-hidden:0;--opacity-visible:1;--motion-fast:.18s;--motion-normal:.25s;--motion-home-link:.2s;--motion-ease:ease;--motion-icon-scale-rest:.85;--motion-icon-scale-active:1;--motion-link-underline:transform var(--motion-normal) var(--motion-ease);--motion-theme-icon:opacity var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease), visibility 0s linear var(--motion-fast);--motion-theme-icon-active:opacity var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease), visibility 0s}}@layer theme{body[data-theme=dark]{--color-page-background:var(--color-black);--color-page-text:var(--color-white);--color-selection-background:var(--color-white);--color-selection-text:var(--color-black);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){body[data-theme=system]{--color-page-background:var(--color-black);--color-page-text:var(--color-white);--color-selection-background:var(--color-white);--color-selection-text:var(--color-black);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}}@layer foundation{*{box-sizing:border-box}body{background:var(--color-page-background);color:var(--color-page-text);font-family:var(--font-family-body);font-optical-sizing:auto;line-height:var(--line-height-normal);margin:var(--space-0)}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-light)}input[type=radio]{opacity:var(--opacity-hidden);pointer-events:none;position:absolute}main{padding:var(--layout-main-padding-block) var(--layout-page-gutter)}::selection{background:var(--color-selection-background);color:var(--color-selection-text)}}@layer shared{nav{gap:var(--space-6) var(--space-navigation-column);flex-wrap:wrap;justify-content:center;display:flex}nav a,nav label{color:inherit;font-size:var(--font-size-sm);text-decoration:none;display:inline-block;position:relative}nav a:after,nav label:after{bottom:calc(-1 * var(--space-2));content:"";height:var(--border-width-hairline);left:var(--space-0);transform-origin:50%;transition:var(--motion-link-underline);background:currentColor;width:100%;position:absolute;transform:scaleX(0)}nav a:hover:after,nav label:hover:after{transform:scaleX(1)}.topbar{padding:var(--space-7);justify-content:center;align-items:center;display:flex;position:relative}.github-link{left:var(--layout-page-gutter);position:absolute}.home-link{position:absolute;left:50%;transform:translate(-50%)}.home-link .home-icon{height:var(--size-icon-sm);width:var(--size-icon-sm)}.github-link img{filter:grayscale();height:var(--size-icon-md);width:var(--size-icon-md);display:block}body[data-theme=dark] .github-link img{filter:grayscale()invert()}@media (prefers-color-scheme:dark){body[data-theme=system] .github-link img{filter:grayscale()invert()}}.theme-toggle{cursor:pointer;height:var(--size-control);padding:var(--space-2);right:var(--layout-page-gutter);width:var(--size-control);background:0 0;border:0;justify-content:center;align-items:center;display:flex;position:absolute}.theme-icon{height:var(--size-icon-sm);left:calc((var(--size-control) - var(--size-icon-sm)) / 2);opacity:var(--opacity-hidden);top:calc((var(--size-control) - var(--size-icon-sm)) / 2);transform:scale(var(--motion-icon-scale-rest));transition:var(--motion-theme-icon);visibility:hidden;width:var(--size-icon-sm);position:absolute}body[data-theme=system] .theme-icon-system,body[data-theme=light] .theme-icon-light,body[data-theme=dark] .theme-icon-dark{opacity:var(--opacity-visible);transform:scale(var(--motion-icon-scale-active));transition:var(--motion-theme-icon-active);visibility:visible}body[data-theme=system] .theme-icon-system{transform:none}body[data-theme=dark] .theme-icon{filter:invert()}@media (prefers-color-scheme:dark){body[data-theme=system] .theme-icon{filter:invert()}}}@layer pages{#home{grid-template-columns:var(--layout-home-columns);min-height:var(--layout-home-min-height);align-items:center;display:grid}.home-title{font-size:var(--font-size-home-title);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);margin:var(--space-0)}.home-menu{gap:var(--space-3);justify-content:start;display:grid}.home-icon{background-color:var(--color-orange);height:var(--size-icon-md);-webkit-mask:var(--asset-home-mark) center / contain no-repeat;mask:var(--asset-home-mark) center / contain no-repeat;width:var(--size-icon-md);display:block}#home .home-navigation{align-items:start;gap:var(--space-1);justify-content:start;display:grid}#home .home-navigation a{color:inherit;font-size:var(--font-size-home-link);font-weight:var(--font-weight-light);opacity:var(--opacity-subtle);transition:opacity var(--motion-home-link) var(--motion-ease);text-decoration:none}#home .home-navigation a:after{display:none}#home .home-navigation a:hover,#home .home-navigation a:focus-visible{opacity:var(--opacity-visible)}@media (max-width:600px){#home{gap:var(--space-9);grid-template-columns:1fr}}#projects{font-weight:var(--font-weight-light)}.project-card{border:var(--border-width-hairline) solid var(--border-color-card);color:inherit;gap:var(--space-3);max-width:var(--layout-project-card-max);padding:var(--space-6);transition:border-color var(--motion-normal) var(--motion-ease);text-decoration:none;display:grid;position:relative}.project-card:hover{border-color:var(--color-outline)}.project-card+.project-card{margin-top:var(--space-5)}.project-card-title{font-weight:var(--font-weight-light)}.project-card-description{color:inherit;opacity:var(--opacity-muted)}.project-card-arrow{right:var(--space-6);top:var(--space-6);transition:transform var(--motion-normal) var(--motion-ease);position:absolute}.project-card:hover .project-card-arrow{transform:translate(var(--space-1), calc(-1 * var(--space-1)))}.contact-entry+.contact-entry{margin-top:1.6em}.mail-icon{filter:grayscale();height:var(--size-icon-md);margin-right:var(--space-3);vertical-align:middle;width:var(--size-icon-md);position:relative;top:-1px}#contact a{color:inherit;text-decoration:none}#contact a:after{display:none}@media (prefers-reduced-motion:reduce){.theme-icon,nav a:after,nav label:after,.project-card,.project-card-arrow,#home .home-navigation a{transition:none}}}@supports (height:100svh){@layer tokens{:root{--layout-viewport-height:100svh}}}
