@font-face{font-family:nudicamedium;src:url(/assets/nudica-medium-webfont-BlwTPf90.woff2)format("woff2"),url(/assets/nudica-medium-webfont-BlgQYqGm.woff)format("woff"),url(/assets/nudica-medium-webfont-CP4pKGlx.ttf)format("truetype");font-weight:400;font-style:normal}@font-face{font-family:nudicaregular;src:url(/assets/nudica-regular-webfont-DpgBioZE.woff2)format("woff2"),url(/assets/nudica-regular-webfont-B8vllFLs.woff)format("woff"),url(/assets/nudica-regular-webfont-DTmZG7na.ttf)format("truetype");font-weight:400;font-style:normal}@font-face{font-family:safiromedium;src:url(/assets/safiro-medium-webfont-RuKbGlYJ.woff2)format("woff2"),url(/assets/safiro-medium-webfont-Cersg_GA.woff)format("woff"),url(/assets/safiro-medium-webfont-D2eUW7nB.ttf)format("truetype");font-weight:400;font-style:normal}:root{--size-content-width:48rem;--size-page-width:75rem;--size-max-width:1988px;--system-ui:system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-body:"nudicaregular", var(--system-ui);--font-family-headline:"safiromedium", var(--system-ui);--font-family-bold:"nudicamedium", var(--system-ui);--font-size-display:4.5rem;--line-height-display:5.5rem;--font-size-headline-1:3rem;--line-height-headline-1:3.5rem;--font-size-headline-2:2.125rem;--line-height-headline-2:2.5rem;--font-size-headline-3:1.625rem;--line-height-headline-3:2rem;--font-size-headline-4:1.3125rem;--line-height-headline-4:1.5rem;--font-size-headline-5:1.125rem;--line-height-headline-5:1.5rem;--font-size-body-medium:1.3125rem;--line-height-body-medium:1.75rem;--font-size-body-small:1.125rem;--line-height-body-small:1.5rem;--font-size-overline-large:1.5rem;--line-height-overline-large:2rem;--text-underline-offset:8%;--cursor-default:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='34' fill='none' viewBox='0 0 34 34'%3E%3Cpath fill='%23FFE661' d='m17 3 13 13-14 14L3 17 17 3Z'/%3E%3Cpath fill='%23FF6161' d='m30 16 2 2v6l-8 8h-6l-2-2 14-14Z'/%3E%3Cpath fill='%23fff' d='M2 2h12v4h-4v4H6v4H2V2Z'/%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M16 0H0v16h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h2v2h6v-2h2v-2h2v-2h2v-2h2v-2h2v-6h-2v-2h-2v-2h-2v-2h-2v-2h-2V8h-2V6h-2V4h-2V2h-2V0Zm0 10V4h2v2h2v2h2v2h2v2h2v2h2v4h-4v-2h-2v-2h-2v-2h-2v-2h-2Zm-6 6v-2H8v-2h4V8h2v2h2v2h2v2h2v2h2v2h2v4h-2v2h-4v-2h-2v-2h-2v-2h-2v-2h-2Zm0 0v2h2v2h2v2h2v2h2v4h-4v-2h-2v-2h-2v-2H8v-2H6v-2H4v-2h6Zm-6-2h2v-4h4V6h4V2H6v2H4v2H2v8h2Zm14 14h2v-2h2v-2h2v-2h2v-2h2v-2h4v6h-2v2h-2v2h-2v2h-2v2h-6v-4Z' clip-rule='evenodd'/%3E%3C/svg%3E%0A"), auto;--cursor-pointer:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='36' fill='none' viewBox='0 0 30 36'%3E%3Cpath fill='%23000' d='M0 2h2v5H0zm0 15h2v6H0zm2 6h2v2H2zM22 9h2v2h-2zm-6-2h4v2h-4zm-6-2h4v2h-4zM2 0h4v2H2z'/%3E%3Cpath fill='%23fff' d='M2 2h4v5H2zm2 5h4v4H4zM2 17h4v6H2z'/%3E%3Cpath fill='%23fff' d='M4 19h4v6H4z'/%3E%3Cpath fill='%23fff' d='M6 21h16v10H6zm4-14h4v4h-4zm6 2h4v4h-4z'/%3E%3Cpath fill='%23fff' d='M6 11h18v14H6z'/%3E%3Cpath fill='%23000' d='M4 25h2v2H4zm2 2h2v4H6z'/%3E%3Cpath fill='%23C2C2C2' d='M6 33h20v3H6z'/%3E%3Cpath fill='%23000' d='M20 25h2v6h-2z'/%3E%3Cpath fill='%23C2C2C2' d='M24 27h2v6h-2zm2-4h2v7h-2zm2-10h2v14h-2z'/%3E%3Cpath fill='%23000' d='M2 7h2v4H2zm4-5h2v5H6zm2 5h2v4H8zm6 0h2v4h-2zm6 2h2v4h-2zm2 12h2v4h-2zM4 11h2v4H4zm20 0h2v10h-2zM2 15h4v2H2z'/%3E%3C/svg%3E%0A"), auto;--cursor-text:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='34' fill='none' viewBox='0 0 18 34'%3E%3Cpath fill='%23000' d='M2 2h4v2H2zm0 28h4v2H2z'/%3E%3Cpath fill='%23fff' d='M2 28h4v2H2zM2 4h4v2H2zm0 28h4v2H2zM2 0h4v2H2zm10 32h4v2h-4zm0-32h4v2h-4zM6 30h2v2H6zm4 0h2v2h-2zM6 2h2v2H6zm4 0h2v2h-2zM8 28h2v2H8zM8 4h2v2H8zm4 24h4v2h-4zm0-24h4v2h-4zM6 26h2v2H6zm4 0h2v2h-2zm-4-8h2v8H6zm-2-2h2v2H4zm8 0h2v2h-2zM6 6h2v10H6zm4 12h2v8h-2zm6 12h2v2h-2zm0-28h2v2h-2zM0 30h2v2H0zM0 2h2v2H0zm10 4h2v10h-2z'/%3E%3Cpath fill='%23000' d='M6 16h6v2H6zM6 4h2v2H6zm0 24h2v2H6z'/%3E%3Cpath fill='%23000' d='M8 6h2v22H8zm2-2h2v2h-2zm0 24h2v2h-2zm2-26h4v2h-4zm0 28h4v2h-4z'/%3E%3C/svg%3E%0A"), auto}@media only screen and (width<=660px){:root{--font-size-display:2.5rem;--line-height-display:3rem;--font-size-headline-1:2.5rem;--line-height-headline-1:3rem;--font-size-headline-2:2rem;--line-height-headline-2:2.25rem}}[data-theme=light]{--color-stoki-primary:#f24822;--color-text-primary:#1b1a25;--color-text-secondary:#46445e;--color-link:#5000cf;--color-link-hover:#390093;--color-icon-interactive:#5000cf;--color-icon-inverse:var(--color-background);--color-outline:#c6c5d2;--color-background:#f4f4f6;--color-background-hover:#e2e2e8;--color-background-header:#f4f4f6e5;--icon-home:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%2346445E\" fill-rule=\"evenodd\" d=\"M10 3v1H9v1H8v1H7v1H6v1H5v1H4v1H3v1H2v2h2v-1h1v8h1v1h12v-1h1v-8h1v1h2v-2h-1v-1h-1V9h-1V8h-1V7h-1V6h-1V5h-1V4h-1V3h-4Zm7 6v10h-2v-6h-1v-1h-4v1H9v6H7V9h1V8h1V7h1V6h1V5h2v1h1v1h1v1h1v1h1Zm-6 10v-5h2v5h-2Z\" clip-rule=\"evenodd\"/></svg>");--icon-projects:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%2346445E\" d=\"M13 14v-4h-2v4h2Z\"/><path fill=\"%2346445E\" fill-rule=\"evenodd\" d=\"M13 2h-2v1h-1v1H9v1H8v1H7v5H5v2H4v2H3v2H2v2h6v1h1v1h6v-1h1v-1h6v-2h-1v-2h-1v-2h-1v-2h-2V6h-1V5h-1V4h-1V3h-1V2ZM7 17v-3H6v2H5v1h2Zm2 0V7h1V6h1V5h2v1h1v1h1v10h-1v2h-4v-2H9Zm8-3h1v2h1v1h-2v-3Z\" clip-rule=\"evenodd\"/></svg>");--icon-footprints:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%2346445E\" fill-rule=\"evenodd\" d=\"M9 2H6v3h3v1H7v5h1v1h1v1h1v1H9v2H8v4h1v1h4v-1h2v-2h1v-2h1v-4h1V7h2V5h-2V3h-2v2h2v2h-1V6h-2V5H9V2Zm5 5H9v3h1v1h1v1h1v3h-1v2h-1v2h3v-1h1v-3h1v-4h1V8h-2V7Z\" clip-rule=\"evenodd\"/><path fill=\"%2346445E\" d=\"M10 2h2v2h-2V2Zm3 0h2v2h-2V2Z\"/></svg>");--icon-contact:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%2346445E\" d=\"M6 7h2v1h1v1h1v1h1v1h2v-1h1V9h1V8h1V7h2v2h-1v1h-1v1h-1v1h-1v1h-1v1h-2v-1h-1v-1H9v-1H8v-1H7V9H6V7Z\"/><path fill=\"%2346445E\" fill-rule=\"evenodd\" d=\"M5 4h14v1h1v1h1v12h-1v1h-1v1H5v-1H4v-1H3V6h1V5h1V4Zm14 13V7h-1V6H6v1H5v10h1v1h12v-1h1Z\" clip-rule=\"evenodd\"/></svg>");--icon-link-blank:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%235000CF\" fill-rule=\"evenodd\" d=\"M12 6h7v7h-2V9.414l-5.293 5.293-1.414-1.414L15.586 8H12V6Zm-7 4a3 3 0 0 1 3-3h1v2H8a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1v-1h2v1a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3v-7Z\" clip-rule=\"evenodd\"/></svg>")}[data-theme=dark]{--color-text-primary:#f4f4f6;--color-text-secondary:#e2e2e8;--color-link:#c098ff;--color-link-hover:#aa74ff;--color-icon-interactive:#d5baff;--color-icon-inverse:var(--color-background);--color-outline:#46445e;--color-background:#1b1a25;--color-background-hover:#302e40;--color-background-header:#1b1a25e5;--icon-home:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%23F4F4F6\" fill-rule=\"evenodd\" d=\"M10 3v1H9v1H8v1H7v1H6v1H5v1H4v1H3v1H2v2h2v-1h1v8h1v1h12v-1h1v-8h1v1h2v-2h-1v-1h-1V9h-1V8h-1V7h-1V6h-1V5h-1V4h-1V3h-4Zm7 6v10h-2v-6h-1v-1h-4v1H9v6H7V9h1V8h1V7h1V6h1V5h2v1h1v1h1v1h1v1h1Zm-6 10v-5h2v5h-2Z\" clip-rule=\"evenodd\"/></svg>");--icon-projects:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%23F4F4F6\" d=\"M13 14v-4h-2v4h2Z\"/><path fill=\"%23F4F4F6\" fill-rule=\"evenodd\" d=\"M13 2h-2v1h-1v1H9v1H8v1H7v5H5v2H4v2H3v2H2v2h6v1h1v1h6v-1h1v-1h6v-2h-1v-2h-1v-2h-1v-2h-2V6h-1V5h-1V4h-1V3h-1V2ZM7 17v-3H6v2H5v1h2Zm2 0V7h1V6h1V5h2v1h1v1h1v10h-1v2h-4v-2H9Zm8-3h1v2h1v1h-2v-3Z\" clip-rule=\"evenodd\"/></svg>");--icon-footprints:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%23F4F4F6\" fill-rule=\"evenodd\" d=\"M9 2H6v3h3v1H7v5h1v1h1v1h1v1H9v2H8v4h1v1h4v-1h2v-2h1v-2h1v-4h1V7h2V5h-2V3h-2v2h2v2h-1V6h-2V5H9V2Zm5 5H9v3h1v1h1v1h1v3h-1v2h-1v2h3v-1h1v-3h1v-4h1V8h-2V7Z\" clip-rule=\"evenodd\"/><path fill=\"%23F4F4F6\" d=\"M10 2h2v2h-2V2Zm3 0h2v2h-2V2Z\"/></svg>");--icon-contact:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%23F4F4F6\" d=\"M6 7h2v1h1v1h1v1h1v1h2v-1h1V9h1V8h1V7h2v2h-1v1h-1v1h-1v1h-1v1h-1v1h-2v-1h-1v-1H9v-1H8v-1H7V9H6V7Z\"/><path fill=\"%23F4F4F6\" fill-rule=\"evenodd\" d=\"M5 4h14v1h1v1h1v12h-1v1h-1v1H5v-1H4v-1H3V6h1V5h1V4Zm14 13V7h-1V6H6v1H5v10h1v1h12v-1h1Z\" clip-rule=\"evenodd\"/></svg>");--icon-link-blank:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"%23C098FF\" fill-rule=\"evenodd\" d=\"M12 6h7v7h-2V9.414l-5.293 5.293-1.414-1.414L15.586 8H12V6Zm-7 4a3 3 0 0 1 3-3h1v2H8a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1v-1h2v1a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3v-7Z\" clip-rule=\"evenodd\"/></svg>")}@media only screen and (width<=660px){[data-theme=dark]{--color-background-header:#302e40e5}}*,:before,:after{box-sizing:border-box}html,body{font-family:var(--font-family-body);color:var(--color-text-primary);margin:0;padding:0;font-size:16px;line-height:1rem}body{background-color:var(--color-background);cursor:var(--cursor-default)}body.error404,body.error404 header{background-image:url(/assets/bg-404light-EZJZMoBw.svg);background-size:1rem 1rem;border:0!important}[data-theme=dark] body.error404,[data-theme=dark] body.error404 header{background-image:url(/assets/bg-404dark-a_MEm8Q4.svg)}h1,h2,h3,h4,h5{font-family:var(--font-family-headline);color:var(--color-text-primary);font-size:1rem;font-weight:400;line-height:1rem}.display{font-size:var(--font-size-display);line-height:var(--line-height-display);margin:0 0 5rem}.headline-1{font-size:var(--font-size-headline-1);line-height:var(--line-height-headline-1);margin:0 0 5rem}.headline-2{font-size:var(--font-size-headline-2);line-height:var(--line-height-headline-2);margin:0 0 3.5rem}.headline-3{font-size:var(--font-size-headline-3);line-height:var(--line-height-headline-3);color:var(--color-text-primary);margin:0 0 2.25rem}.headline-4{font-size:var(--font-size-headline-4);line-height:var(--line-height-headline-4);color:var(--color-text-primary);margin:0 0 1.25rem}.headline-5{font-size:var(--font-size-headline-5);line-height:var(--line-height-headline-5);color:var(--color-text-secondary);margin:0 0 1rem}.withSubheadline{margin-bottom:0}.display.withSubheadline{margin-bottom:1rem}.subheadline{margin-top:.5rem}.overline-large{font-size:var(--font-size-overline-large);line-height:var(--line-height-overline-large);color:var(--color-text-secondary);margin:0 0 1rem}p{font-size:var(--font-size-body-medium);line-height:var(--line-height-body-medium);color:var(--color-text-secondary);max-width:var(--size-content-width);margin:0;padding-bottom:1.5rem}.body-medium{font-size:var(--font-size-body-medium);line-height:var(--line-height-body-medium)}.body-small{font-size:var(--font-size-body-small);line-height:var(--line-height-body-small)}strong,b{font-family:var(--font-family-bold);letter-spacing:.02625rem}a{color:var(--color-link);-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto;text-underline-offset:var(--text-underline-offset);text-underline-position:from-font;text-decoration-line:underline;text-decoration-style:solid;text-decoration-thickness:calc(1em/25);transition:color .12s ease-in-out;position:relative}a[href^=http]{padding-right:1.75rem}a[href^=http]:after{content:"";background-size:100%;background-image:var(--icon-link-blank);background-position:50%;background-repeat:no-repeat;width:1.5rem;height:1.5rem;margin-left:.25rem;display:inline-block;position:absolute}.secondary,.secondary a{font-family:var(--font-family-body);color:var(--color-text-secondary)}ul{max-width:var(--size-content-width);margin:0;padding:0 0 0 1rem}ul li{margin-bottom:1rem;padding-left:1rem}main{max-width:var(--size-max-width);padding-top:5rem}article{max-width:var(--size-page-width);border-bottom:1px solid var(--color-outline);margin:0 auto}article:first-child{padding-top:6rem}article:last-child{border-bottom:none}button{background:0 0;border:0;margin:0;padding:0}header{max-width:var(--size-max-width);border-bottom:1px solid var(--color-outline);background-color:var(--color-background-header);z-index:99;-webkit-backdrop-filter:blur(.375rem);backdrop-filter:blur(.375rem);align-items:center;max-height:5.5rem;padding:.75rem 4rem;display:flex;position:sticky;top:0}header nav{justify-content:flex-start;align-items:center;gap:2rem;width:100%;max-height:5.5rem;display:flex}header nav a{font-size:1.25rem;font-weight:var(--font-weignt-medium);color:var(--color-text-primary);padding:1rem;line-height:1.5rem;text-decoration:none}header nav a.logo{content:"";background-image:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"24\" fill=\"none\" viewBox=\"0 0 18 24\"><path fill=\"%23F24822\" d=\"M0 0h9a9 9 0 1 1 0 18H6v6c-.929 0-1.394 0-1.782-.062a5 5 0 0 1-4.156-4.156C0 19.393 0 18.93 0 18V0Zm16 24a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\"/></svg>");background-repeat:no-repeat;margin-right:1rem;padding:.75rem .5625rem;transition:all .12s ease-in;display:block}header nav a.logo:hover,header nav a.logo:active{background-image:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"24\" fill=\"none\" viewBox=\"0 0 18 24\"><path fill=\"%23F24822\" d=\"M0 0h12v1h2v2h2v2h1v2h1v4h-1v2h-1v2h-2v2h-2v1H6v6H4v-1H2v-2H1v-2H0V0Zm18 23h-1v1h-2v-1h-1v-2h1v-1h2v1h1v2Z\"/></svg>")}header nav a:hover{-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto;text-underline-offset:var(--text-underline-offset);text-underline-position:from-font;text-decoration-line:underline;text-decoration-style:solid;text-decoration-thickness:calc(1em/25)}header nav a:last-child{margin-left:auto;margin-right:2rem}header nav a.home{display:none}header nav a.open{font-weight:var(--font-weignt-bold);color:var(--color-link)}.modeToggle{background-color:var(--color-background-hover);width:3.5rem;height:2.5rem;cursor:var(--cursor-pointer);border-radius:2rem;display:block;position:relative}.modeToggle:after{content:"";background-color:var(--color-link);border-radius:1rem;width:2rem;height:2rem;position:absolute;top:.25rem;left:.25rem}label,label:after{transition:all .12s}.modeToggle svg{z-index:100;width:1.5rem;height:1.5rem;position:absolute;top:.5rem}.modeToggle svg.light{transition:all .12s;left:.5rem}.modeToggle svg.light path{fill:var(--color-icon-inverse)}.modeToggle svg.dark{display:none;left:1.5rem}[data-theme=dark] .modeToggle{background-color:var(--color-background-hover)}[data-theme=dark] .modeToggle:after{background-color:var(--color-link);left:3.25rem;transform:translate(-100%)}[data-theme=dark] .modeToggle svg.light path{display:none}[data-theme=dark] .modeToggle svg.dark{display:unset}[data-theme=dark] .modeToggle svg.dark path{fill:var(--color-icon-inverse)}.content{max-width:var(--size-page-width);margin:0 auto;padding:10rem 2rem 0}.truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.myName{align-items:center;display:flex}.myName p{padding:0}.stokio{width:4rem;height:4rem;margin-right:1.5rem;display:flex}.blocks{gap:0;padding-top:3.5rem;display:grid}.bl32{grid-template-columns:3fr 2fr}.bl23{grid-template-columns:2fr 3fr}.bl111{grid-template-columns:1fr 1fr 1fr}.block{color:var(--color-text-primary);border-style:solid;border-width:1px 1px 1px 0;border-color:var(--color-outline);padding:4rem;transition:all .12s ease-in;position:relative}.blocks a:after{display:none}.block .opener{opacity:0;transition:all .12s ease-in;position:absolute;top:56px;right:56px}.block svg path{fill:var(--color-icon-interactive)}.block:last-child{border-right-width:0}.block p{padding-bottom:0}.block-link{width:100%;position:absolute;top:0;bottom:0;left:0}.end{margin:2rem 0}.projectGroup__title{max-width:var(--size-page-width);border-bottom:1px solid var(--color-outline);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-secondary);margin:0 auto;padding:6rem 2rem 1rem;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.875rem;line-height:1.25rem}.projectGroup+.projectGroup .projectGroup__title{padding-top:8rem}.projectRow{width:100%;color:inherit;align-items:center;padding:3rem 2rem;text-decoration:none;transition:background-color .12s ease-in-out;display:flex}.projectRow:hover,.projectRow.hoverHandoff,.projectRow:focus-visible:not([data-quiet-focus]){background-color:var(--color-background-hover)}.projectRow h2{width:100%;transition:color .12s ease-in-out}.projectRow .arrow{--arrow-size:1.625rem;width:var(--arrow-size);height:var(--arrow-size);flex-shrink:0;display:inline-block;position:relative}.projectRow .arrow:before,.projectRow .arrow:after{content:"";position:absolute}.projectRow .arrow:before{border:solid var(--color-text-secondary);border-width:0 2px 2px 0;transition:border-color .12s ease-in-out;inset:0;transform:rotate(-45deg)}.projectRow .arrow:after{width:calc(var(--arrow-size) * .7071);height:calc(var(--arrow-size) * 1.4142);background-color:var(--color-icon-interactive);visibility:hidden;top:50%;left:50%;translate:0 -50%;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 24'%3E%3Cpath d='M0 0h2v2H0zM2 2h2v2H2zM4 4h2v2H4zM6 6h2v2H6zM8 8h2v2H8zM10 10h2v4h-2zM8 14h2v2H8zM6 16h2v2H6zM4 18h2v2H4zM2 20h2v2H2zM0 22h2v2H0z'/%3E%3C/svg%3E") 50%/100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 24'%3E%3Cpath d='M0 0h2v2H0zM2 2h2v2H2zM4 4h2v2H4zM6 6h2v2H6zM8 8h2v2H8zM10 10h2v4h-2zM8 14h2v2H8zM6 16h2v2H6zM4 18h2v2H4zM2 20h2v2H2zM0 22h2v2H0z'/%3E%3C/svg%3E") 50%/100% 100% no-repeat}.projectRow:hover h2,.projectRow.hoverHandoff h2,.projectRow:focus-visible:not([data-quiet-focus]) h2{color:var(--color-link)}.projectRow:hover .arrow:before,.projectRow.hoverHandoff .arrow:before,.projectRow:focus-visible:not([data-quiet-focus]) .arrow:before{visibility:hidden}.projectRow:hover .arrow:after,.projectRow.hoverHandoff .arrow:after,.projectRow:focus-visible:not([data-quiet-focus]) .arrow:after{visibility:visible}.projectModal{background-color:var(--color-background-hover);width:100%;max-width:none;height:100%;max-height:none;color:var(--color-text-primary);overscroll-behavior:contain;border:0;margin:0;padding:0;position:fixed;inset:0;overflow-y:auto;container-type:inline-size}.projectModal::backdrop{background:0 0}.projectModal__inner{max-width:var(--size-content-width);box-sizing:content-box;margin:0 auto;padding:8rem 2rem 5rem}.projectModal__media{--media-width:min(120%, calc(100cqi - 2rem));width:var(--media-width);margin:0 0 2.25rem calc((100% - var(--media-width)) / 2)}.projectModal__video{aspect-ratio:16/9;background-color:var(--color-background)}.projectModal__video--16x10{aspect-ratio:16/10;outline:1px solid var(--color-outline)}.projectModal__video video{object-fit:cover;width:100%;height:100%;display:block}.projectFacts{border-top:1px solid var(--color-outline);grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 2rem;margin:3rem 0 0;padding-top:1.5rem;display:grid}.projectFacts dt{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-secondary);margin-bottom:.375rem;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.75rem;line-height:1rem}.projectFacts dd{font-size:var(--font-size-body-medium);line-height:var(--line-height-body-medium);margin:0}@media only screen and (width<=480px){.projectFacts{grid-template-columns:minmax(0,1fr)}}.projectModal__video,.phoneGallery,.phoneTrio{--hatch-offset:.75rem;position:relative}.projectModal__video:after,.phoneGallery:after,.phoneTrio:after{content:"";inset:var(--hatch-offset) calc(-1 * var(--hatch-offset)) calc(-1 * var(--hatch-offset)) var(--hatch-offset);background:repeating-linear-gradient(-45deg, var(--color-outline) 0 2px, transparent 2px 8px);clip-path:polygon(calc(100% - var(--hatch-offset)) 0, 100% 0, 100% 100%, 0 100%, 0 calc(100% - var(--hatch-offset)), calc(100% - var(--hatch-offset)) calc(100% - var(--hatch-offset)));pointer-events:none;position:absolute}.diagramLabel{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-secondary);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.75rem;line-height:1rem}.pxIcon{width:1rem;height:1rem;-webkit-mask:var(--px) center / contain no-repeat;-webkit-mask:var(--px) center / contain no-repeat;mask:var(--px) center / contain no-repeat;background-color:currentColor;flex:none;display:inline-block}.pxIcon--x{--px:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M6 6h2v2H6zM8 8h2v2H8zM10 10h4v4h-4zM14 14h2v2h-2zM16 16h2v2h-2zM16 6h2v2h-2zM14 8h2v2h-2zM8 14h2v2H8zM6 16h2v2H6z\"/></svg>")}.pxIcon--check{--px:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M3 12h2v2H3zM5 14h2v2H5zM7 16h2v2H7zM9 16h2v2H9zM11 14h2v2h-2zM13 12h2v2h-2zM15 10h2v2h-2zM17 8h2v2h-2zM19 6h2v2h-2z\"/></svg>")}.pxIcon--plug{--px:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M8 2h2v5H8zM14 2h2v5h-2zM5 7h14v2H5zM6 9h12v5H6zM8 14h8v2H8zM10 16h4v6h-4z\"/></svg>")}.mcpMap{grid-template-columns:minmax(0,1fr) 4.5rem minmax(0,1.05fr) 7.5rem minmax(0,1.35fr) 4.5rem minmax(0,1fr);grid-template-areas:"des w1 host bi mcp w3 src"". .w2. . . ."". .out out. . .";align-items:center;display:grid}.mcpMap__node{background-color:var(--color-background);border:1px solid var(--color-outline);padding:.875rem 1rem 1rem;position:relative}.mcpMap__node .diagramLabel{margin-bottom:.375rem;display:block}.mcpMap__node b{font-family:var(--font-family-bold);color:var(--color-text-primary);font-size:1rem;font-weight:400;line-height:1.25rem;display:block}.mcpMap__node q,.mcpMap__node small{color:var(--color-text-secondary);margin-top:.25rem;font-size:.875rem;line-height:1.125rem;display:block}.mcpMap__node--des{grid-area:des}.mcpMap__node--host{grid-area:host}.mcpMap__node--src{grid-area:src}.mcpMap__node--out{border-color:var(--color-link);grid-area:out}.mcpMap__node--mcp{isolation:isolate;background:0 0;border:0;grid-area:mcp;padding:1rem 1.125rem 1.125rem}.mcpMap__node--mcp:before,.mcpMap__node--mcp:after{content:"";position:absolute}.mcpMap__node--mcp:before{z-index:-1;background-color:var(--color-background);border:2px solid var(--color-text-primary);inset:0}.mcpMap__node--mcp:after{z-index:-2;background:repeating-linear-gradient(-45deg, var(--color-text-secondary) 0 1px, transparent 1px 5px);inset:.625rem -.625rem -.625rem .625rem}.mcpMap__node--mcp b{font-family:var(--font-family-headline);font-size:var(--font-size-headline-5);line-height:var(--line-height-headline-5);align-items:center;gap:.5rem;display:flex}.mcpMap__node--mcp .pxIcon{width:1.25rem;height:1.25rem;color:var(--color-link)}.mcpMap__chips{gap:.375rem;max-width:none;margin:.75rem 0 0;padding:0;list-style:none;display:grid}.mcpMap__chips li{color:var(--color-text-primary);background-color:var(--color-background-hover);margin:0;padding:.25rem .5rem;font-size:.875rem;line-height:1.125rem}.mcpMap__wire{--arrow:url("data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M1 7h14v2H1zM9 3h2v2H9zM11 5h2v2h-2zM11 9h2v2h-2zM9 11h2v2H9z\"/></svg>");height:2px;color:var(--color-text-secondary);background:repeating-linear-gradient(90deg,currentColor 0 4px,#0000 4px 8px);margin:0 .5rem;position:relative}.mcpMap__wire:after{content:"";width:1rem;height:1rem;-webkit-mask:var(--arrow) center / contain no-repeat;-webkit-mask:var(--arrow) center / contain no-repeat;mask:var(--arrow) center / contain no-repeat;background-color:currentColor;position:absolute;top:50%;right:-.375rem;transform:translateY(-50%)}.mcpMap__wire--rev:after{left:-.375rem;right:auto;transform:translateY(-50%)rotate(180deg)}.mcpMap__wire--hot{color:var(--color-link)}.mcpMap__wire .diagramLabel{white-space:nowrap;color:inherit;position:absolute;bottom:.625rem;left:50%;transform:translate(-50%)}.mcpMap__wire--below .diagramLabel{top:.625rem;bottom:auto}.mcpMap__wire--v,.mcpMap__w2{background:repeating-linear-gradient(currentColor 0 4px,#0000 4px 8px);justify-self:center;width:2px;height:3.5rem;margin:.5rem 0}.mcpMap__w2:after{inset:auto auto -.375rem 50%;transform:translate(-50%)rotate(90deg)}.mcpMap__w2 .diagramLabel{top:50%;bottom:auto;left:1rem;transform:translateY(-50%)}.mcpMap__w1{grid-area:w1}.mcpMap__w2{grid-area:w2}.mcpMap__w3{grid-area:w3}.mcpMap__bi{grid-area:bi;gap:2.25rem;display:grid}.beforeAfter{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;margin-top:3.5rem;margin-bottom:3rem;display:grid}.beforeAfter__tag{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.beforeAfter__tag:before{content:"";background-color:currentColor;width:.5rem;height:.5rem}.beforeAfter__col--after .beforeAfter__tag{color:var(--color-link)}.beforeAfter__title{min-height:3.5rem;font-family:var(--font-family-headline);font-size:var(--font-size-headline-5);color:var(--color-text-secondary);margin-bottom:1.25rem;line-height:1.75rem;display:block}.beforeAfter__col--after .beforeAfter__title{color:var(--color-text-primary)}.beforeAfter__stat{color:var(--color-link);font-style:normal}.beforeAfter__note{grid-column:1/-1}.beforeAfter__panel{--dot:var(--color-outline);background-color:var(--color-background);padding:2.5rem 2rem;position:relative;overflow:hidden}.beforeAfter__col--after .beforeAfter__panel{--dot:color-mix(in srgb, var(--color-background) 35%, transparent);background-color:var(--color-link)}.beforeAfter__panel:before{content:"";pointer-events:none;background:conic-gradient(var(--dot) 25%, transparent 0 50%, var(--dot) 0 75%, transparent 0) 0 0 / 4px 4px;position:absolute;inset:0;-webkit-mask:linear-gradient(160deg,#000 0%,#0000 70%);mask:linear-gradient(160deg,#000 0%,#0000 70%)}.beforeAfter__list{gap:.5rem;max-width:none;margin:0;padding:0;list-style:none;display:grid;position:relative}.beforeAfter__list li{color:var(--color-text-secondary);background-color:var(--color-background-hover);align-items:flex-start;gap:.75rem;margin:0;padding:1rem 1.125rem;font-size:1rem;line-height:1.375rem;display:flex}.beforeAfter__list .pxIcon{margin-top:.1875rem}.beforeAfter__col--after .beforeAfter__list li{color:var(--color-text-primary);background-color:var(--color-background)}.beforeAfter__col--after .beforeAfter__list .pxIcon{color:var(--color-link)}.phoneGallery{background-color:#cae2dc;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:clamp(.75rem,4cqi,2.5rem);padding:clamp(1.5rem,6cqi,4rem) clamp(1rem,6cqi,4.5rem);display:grid}.phoneGallery img{width:100%;height:auto;display:block}.phoneTrio{outline:1px solid var(--color-outline);background-color:#f5f5f4;justify-content:center;align-items:center;padding:clamp(1.5rem,6cqi,4rem) clamp(1rem,4cqi,3rem);display:flex}.phoneTrio img{filter:drop-shadow(0 1.5rem 2rem #0000002e);height:auto;display:block}.phoneTrio img:nth-child(2){z-index:1;width:36%;margin:0 -3%;position:relative}.phoneTrio img:not(:nth-child(2)){width:26%}.projectModal__close{border:1px solid var(--color-outline);background-color:var(--color-background);width:3.5rem;height:3.5rem;color:var(--color-text-primary);z-index:2;border-radius:50%;place-items:center;transition:color .12s ease-in-out,border-color .12s ease-in-out;display:grid;position:fixed;top:1.5rem;right:1.5rem}.projectModal__close:hover,.projectModal__close:focus-visible{color:var(--color-link);border-color:var(--color-icon-interactive)}.projectModal__edge{width:3.5rem;height:3.5rem;color:var(--color-text-primary);z-index:1;background:0 0;border:0;padding:0;position:fixed;top:1.5rem;left:1.5rem}.projectModal__edge--next{left:5.5rem}.projectModal__arrow{border:1px solid var(--color-outline);background-color:var(--color-background);border-radius:50%;place-items:center;transition:color .12s ease-in-out,border-color .12s ease-in-out,opacity .15s ease-out,scale .2s cubic-bezier(.2,0,0,1);display:grid;position:absolute;inset:0}.projectModal__edge:hover .projectModal__arrow,.projectModal__edge:focus-visible .projectModal__arrow{color:var(--color-link);border-color:var(--color-icon-interactive)}.projectModal__edge:focus-visible{outline:none}.projectModal__edge:active .projectModal__arrow{scale:.9}@media (hover:hover) and (pointer:fine) and (width>=1100px){.projectModal__edge{width:calc((100vw - var(--size-content-width) * 1.2) / 2 - 1rem);height:auto;top:0;bottom:0;left:0}.projectModal .projectModal__edge,.projectModal .projectModal__edge *{cursor:none}.projectModal__edge--next{width:calc((100vw - var(--size-content-width) * 1.2) / 2 - 2rem);left:auto;right:1rem}.projectModal__arrow{inset:auto;left:var(--x,50%);top:var(--y,50%);opacity:0;width:3.5rem;height:3.5rem;translate:-50% -50%;scale:.6}.projectModal__edge:hover .projectModal__arrow,.projectModal__edge:focus-visible .projectModal__arrow{opacity:1;color:var(--color-text-primary);border-color:var(--color-outline);scale:1}.projectModal__edge:active .projectModal__arrow{color:var(--color-link);border-color:var(--color-icon-interactive);scale:.88}}html.modalOpen{overflow:hidden}.hoverHandoff,.hoverHandoff *,.surfaceHandoff,.surfaceHandoff *{transition:none!important}.surfaceHandoff{background-color:var(--color-background-hover)!important}[data-quiet-focus]:focus-visible{outline:none}footer{max-width:var(--size-max-width);padding-bottom:5rem}@media only screen and (width<=660px){main{padding-top:0}header{border:.5px solid var(--color-outline);border-radius:1rem;width:calc(100vw - 1rem);margin:0 .5rem;padding:.5rem 1.5rem;position:fixed;top:auto;bottom:.5rem;box-shadow:0 0 .5px #00000026,0 5px 12px #00000021,0 1px 3px #0000001a}header nav{justify-content:space-between;gap:0}header nav a{font-size:.875rem;font-family:var(--font-family-bold);color:var(--color-text-secondary);padding:.5rem 0;line-height:1.25rem}header nav a.logo{display:none}header nav a.home,header nav a.projects,header nav a.footprints,header nav a.contact{flex-direction:column;align-items:center;display:flex}header nav a.home:before,header nav a.projects:before,header nav a.footprints:before,header nav a.contact:before{content:"";opacity:.5;width:1.5rem;height:1.5rem;margin-bottom:.25rem;display:block}header nav a.home:before{background-image:var(--icon-home)}header nav a.projects:before{background-image:var(--icon-projects)}header nav a.footprints:before{background-image:var(--icon-footprints)}header nav a.contact:before{background-image:var(--icon-contact)}.modeToggle{display:none}header nav a:last-child{margin-left:0;margin-right:0}header nav a.home.occupied,header nav a.projects.occupied,header nav a.footprints.occupied,header nav a.contact.occupied{color:var(--color-text-primary)}header nav a.home.occupied:before,header nav a.projects.occupied:before,header nav a.footprints.occupied:before,header nav a.contact.occupied:before{opacity:1}.content{padding:5rem 2rem 0}.bye{padding-bottom:4rem}.blocks{padding-bottom:5rem}.block{cursor:var(--cursor-pointer);border-width:0 0 1px;padding:4rem 2rem}.blocks div:first-child{border-top-width:1px}.bl32,.bl23,.bl111{grid-template-columns:1fr}.projectRow .arrow{--arrow-size:1.125rem}.projectModal__inner{padding:6rem 2rem 4rem}.projectModal__close{top:1rem;right:1rem}.projectModal__edge{top:1rem;left:1rem}.projectModal__edge--next{left:5rem}.mcpMap{grid-template-columns:minmax(0,1fr) 2.75rem minmax(0,1fr);grid-template-areas:"des. .""w1. .""host bi mcp""w2.w3""out.src";align-items:stretch}.mcpMap__node--des{justify-self:start}.mcpMap__node--host,.mcpMap__bi{align-self:center}.mcpMap__node--mcp,.mcpMap__node--src,.mcpMap__node--out{align-self:start}.mcpMap__bi{gap:1.25rem}.mcpMap__bi .mcpMap__wire{margin:0 .25rem}.mcpMap__bi .diagramLabel{display:none}.mcpMap__w1,.mcpMap__w3{background:repeating-linear-gradient(currentColor 0 4px,#0000 4px 8px);justify-self:center;width:2px;height:3rem;margin:.5rem 0}.mcpMap__w3{margin-top:1.25rem}.mcpMap__w1:after{inset:auto auto -.375rem 50%;transform:translate(-50%)rotate(90deg)}.mcpMap__w3:after{top:-.375rem;left:50%;right:auto;transform:translate(-50%)rotate(-90deg)}.mcpMap__w1 .diagramLabel,.mcpMap__w3 .diagramLabel{top:50%;bottom:auto;left:1rem;transform:translateY(-50%)}.beforeAfter{grid-template-columns:1fr;gap:2.5rem}.beforeAfter__title{min-height:0}.beforeAfter__panel{padding:1.5rem 1rem}}@media (hover:hover){body{cursor:var(--cursor-default)}p,ul,ol,h1,h2,h3,h4,h5,h6,input[type=text],input[type=tel],input[type=email],input[type=search]{cursor:var(--cursor-text)}button:not([aria-disabled=true],.tooltip-btn),button:not([aria-disabled=true],.tooltip-btn) *{cursor:var(--cursor-pointer)}a:hover{color:var(--color-link-hover);cursor:var(--cursor-pointer);text-decoration-line:none}.projectRow:hover,.projectRow:hover *{cursor:var(--cursor-pointer)}.block:hover,.block:active,.block.hoverHandoff{background-color:var(--color-background-hover);color:var(--color-text-primary)}.block:hover h2,.block:active h2,.block.hoverHandoff h2{color:var(--color-link);-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto;text-underline-offset:var(--text-underline-offset);text-underline-position:from-font;text-decoration-line:underline;text-decoration-style:solid;text-decoration-thickness:calc(1em/25)}.block:hover .opener,.block:active .opener,.block.hoverHandoff .opener{opacity:1;top:32px;right:32px}}@media only screen and (width>=1988px){header,main,footer{border-right:1px solid var(--color-outline);border-left:1px solid var(--color-outline);margin:0 auto}}
