@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal}@media (prefers-reduced-motion:no-preference){::view-transition-old(root){animation:.16s ease-out both _portfolio-page-fade-out_sk4c0_1}::view-transition-new(root){animation:.32s var(--ds-motion-ease) both _portfolio-page-rise-in_sk4c0_1}}@layer ds.project{._document_sk4c0_17{scrollbar-gutter:stable}._body_sk4c0_21{min-block-size:100dvh}._skip-link_sk4c0_25{z-index:var(--ds-z-skip-link);padding:var(--ds-space-10) var(--ds-space-15);translate:0 calc(-100% - var(--ds-space-40));background:var(--ds-color-accent);color:var(--ds-color-on-accent);font-weight:var(--ds-font-weight-strong);text-decoration:none;position:fixed;inset-block-start:var(--ds-space-10);inset-inline-start:var(--ds-space-10);&:focus{translate:0}@media (prefers-reduced-motion:no-preference){transition:translate var(--ds-motion-fast) var(--ds-motion-ease)}}._shell_1u97b_2{--ds-portfolio-header-height:4rem;--ds-portfolio-header-drop:.5rem;min-block-size:100dvh;grid-template-rows:auto 1fr auto;padding-block-start:var(--ds-portfolio-header-height);display:grid}._site-header_1u97b_12{z-index:var(--ds-portfolio-z-header);background:var(--ds-color-surface);view-transition-name:site-header;position:fixed;inset-block-start:0;inset-inline:0;translate:0}._site-header_1u97b_12[data-scrolled]{box-shadow:inset 0 -1px color-mix(in srgb, var(--ds-color-border) 60%, transparent)}._site-header_1u97b_12[data-scroll-hidden]{translate:0 -100%}._site-header_1u97b_12:focus-within{transition:none;translate:0}._header-inner_1u97b_35{block-size:var(--ds-portfolio-header-height);align-items:center;gap:var(--ds-space-10);grid-template-columns:minmax(0,1fr) auto auto auto;display:grid}._developer-card_1u97b_43{justify-self:end;min-inline-size:0}._wordmark_1u97b_55{min-block-size:var(--ds-size-hit-min);align-content:center;justify-self:start;align-items:baseline;column-gap:var(--ds-space-15);min-inline-size:0;color:var(--ds-color-text);grid-template-columns:max-content minmax(0,max-content);text-decoration:none;display:inline-grid}._wordmark-name_1u97b_68{min-inline-size:0;color:var(--ds-color-text-muted);font-family:var(--ds-font-mono);font-size:var(--ds-text-sm);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;line-height:1;overflow:hidden}._header-inner_1u97b_35>:not(._wordmark_1u97b_55){position:relative;inset-block-start:var(--ds-portfolio-header-drop)}._header-inner_1u97b_35>._developer-card_1u97b_43{inset-block-start:calc(var(--ds-portfolio-header-drop) + .0625rem)}._locale-nav_1u97b_90{align-items:center;gap:var(--ds-space-05);min-block-size:var(--ds-size-hit-min);font-family:var(--ds-font-body);font-size:var(--ds-text-sm);font-weight:var(--ds-font-weight-medium);line-height:1;display:flex}._locale-nav_1u97b_90 a{min-block-size:var(--ds-size-hit-min);color:var(--ds-color-text-muted);font:inherit;align-items:center;text-decoration:none;display:inline-flex;position:relative}._locale-nav_1u97b_90 a:after{block-size:calc(var(--ds-space-05) * .5);content:"";transform-origin:50%;background:currentColor;position:absolute;inset-block-end:var(--ds-space-05);inset-inline:0;scale:0 1}._locale-nav_1u97b_90 a:is(:hover,[aria-current=page]){color:var(--ds-color-text)}._locale-nav_1u97b_90 a[aria-current=page]:after{scale:1}._main_1u97b_130{min-inline-size:0}._site-footer_1u97b_134{border-block-start:var(--ds-portfolio-rule)}._footer-inner_1u97b_138{align-items:center;gap:var(--ds-space-20) var(--ds-space-30);padding-block:var(--ds-space-30);color:var(--ds-color-text-muted);grid-template-columns:minmax(0,1fr) auto;display:grid}._footer-contacts_1u97b_147{gap:var(--ds-space-10);grid-template-columns:repeat(2,minmax(0,1fr));inline-size:min(100%,26rem);display:grid}._footer-copyright_1u97b_154{font-size:var(--ds-text-xs);margin:0}@media (width<=30rem){._footer-inner_1u97b_138{grid-template-columns:minmax(0,1fr)}._footer-contacts_1u97b_147{grid-template-columns:1fr;inline-size:100%}}@media (width<26.5rem){._wordmark-name_1u97b_68{display:none}}@media (width<=64rem){._header-inner_1u97b_35{gap:var(--ds-space-05)}}@media (width>52rem){._header-inner_1u97b_35{column-gap:var(--ds-space-20)}}@media (prefers-reduced-motion:no-preference){._site-header_1u97b_12{transition:translate var(--ds-motion-medium) var(--ds-motion-ease), box-shadow var(--ds-motion-fast) var(--ds-motion-ease)}._locale-nav_1u97b_90 a:after{transition:scale var(--ds-motion-fast) var(--ds-motion-ease)}._locale-nav_1u97b_90 a{transition:color var(--ds-motion-fast) var(--ds-motion-ease), text-decoration-color var(--ds-motion-fast) var(--ds-motion-ease)}}._signature_d6wbr_7{--ds-signature-width:2.75rem;inline-size:var(--ds-signature-width);flex:none;line-height:0}._signature_d6wbr_7>svg{block-size:auto;inline-size:100%;vertical-align:baseline;margin-block-end:calc(var(--ds-signature-width) * -5.6 / 128.6);display:inline-block}._root_n4fsz_2{min-inline-size:0;display:block}._trigger_n4fsz_7{align-items:center;gap:var(--ds-space-10);min-block-size:var(--ds-size-hit-min);inline-size:fit-content;color:var(--ds-color-text);font-family:var(--ds-font-mono);font-size:var(--ds-text-sm);text-decoration:none;display:flex}._pocket_n4fsz_19{clip-path:inset(-3rem -1rem 0);flex:none;block-size:2.75rem;inline-size:4.5rem;position:relative}._sketch_n4fsz_27{transform-origin:20% 80%;block-size:auto;inline-size:4.25rem;max-inline-size:none;position:absolute;inset-block-start:-.45rem;inset-inline-start:.25rem;rotate:-16deg}._label_n4fsz_38{text-wrap:balance}._trigger_n4fsz_7:hover ._sketch_n4fsz_27,._trigger_n4fsz_7:focus-visible ._sketch_n4fsz_27{translate:0 -.35rem;rotate:-10deg}._root_n4fsz_2[data-card-open] ._sketch_n4fsz_27{visibility:hidden}._dialog_n4fsz_52{max-block-size:none;inline-size:min(66.25rem,100vw - 2rem,158.6dvh - 15.86rem);max-inline-size:none;color:var(--ds-color-text);background:0 0;border:0;margin:auto;padding:0;position:fixed;inset:0;overflow:visible}._dialog_n4fsz_52::backdrop{background:color-mix(in srgb, var(--ds-color-surface) 86%, transparent);backdrop-filter:blur(.5rem)}html:has(._dialog_n4fsz_52[open]){overflow:hidden}._panel_n4fsz_75{transform-origin:0 0;position:relative;container-type:inline-size}._close_n4fsz_81{inline-size:var(--ds-size-hit-min);block-size:var(--ds-size-hit-min);color:var(--ds-color-text);background:var(--ds-color-surface);cursor:pointer;border:1px solid;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;inset-block-start:-3rem;inset-inline-end:0}._close_n4fsz_81:hover{color:var(--ds-color-text-muted)}._stage_n4fsz_101{block-size:calc(63.0517cqw + 3.5rem);position:relative}._drawing_n4fsz_106{object-fit:contain;block-size:100%;inline-size:100%;position:absolute;inset:0}._frame_n4fsz_114{color-scheme:light;opacity:0;border:0;block-size:100%;inline-size:100%;display:block;position:relative}._root_n4fsz_2[data-card-loaded] ._frame_n4fsz_114{opacity:1}._root_n4fsz_2[data-card-loaded] ._drawing_n4fsz_106,._root_n4fsz_2[data-card-closing] ._frame_n4fsz_114,._root_n4fsz_2[data-card-closing] ._close_n4fsz_81{visibility:hidden}._root_n4fsz_2[data-card-closing] ._drawing_n4fsz_106{visibility:visible}@media (width<=64rem){._pocket_n4fsz_19{inline-size:3rem}._sketch_n4fsz_27{inline-size:2.75rem;inset-block-start:0}._label_n4fsz_38{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}}@media (width<=752px),(height<=520px) and (orientation:landscape){._dialog_n4fsz_52{inline-size:calc(100vw - 2rem)}._stage_n4fsz_101{block-size:calc(100dvh - 7rem)}}@container (width<=720px){._stage_n4fsz_101{block-size:calc(100dvh - 7rem)}}@media (prefers-reduced-motion:no-preference){._sketch_n4fsz_27{transition:translate .22s,rotate .22s}._frame_n4fsz_114{transition:opacity .16s}}._root_5nurp_2{display:contents}._button_5nurp_6{justify-content:center;align-items:center;gap:var(--ds-space-10);block-size:3rem;min-inline-size:0;padding-inline:var(--ds-space-20);border:var(--ds-portfolio-rule);color:var(--ds-color-text);font:var(--ds-font-weight-regular) var(--ds-text-sm) / 1 var(--ds-font-mono);cursor:pointer;background:0 0;text-decoration:none;display:flex}._button_5nurp_6 svg{flex:none}._button_5nurp_6[hidden]{display:none}._button_5nurp_6:hover{background:var(--ds-color-surface-raised)}}@media (prefers-reduced-motion:reduce){::view-transition-group(root),::view-transition-old(root),::view-transition-new(root),::view-transition-group(site-header),::view-transition-old(site-header),::view-transition-new(site-header){animation:none}}@keyframes _portfolio-page-fade-out_sk4c0_1{0%{opacity:1}to{opacity:0}}@keyframes _portfolio-page-rise-in_sk4c0_1{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:none}}@layer ds.components{._root_1n852_2{inline-size:var(--ds-size-hit-min);block-size:var(--ds-size-hit-min);color:var(--ds-color-text-muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:inline-grid;&:hover{color:var(--ds-color-text)}@media (prefers-reduced-motion:no-preference){transition:color var(--ds-motion-fast) var(--ds-motion-ease)}}._icon_1n852_22{inline-size:var(--ds-space-20);block-size:var(--ds-space-20)}._light-icon_1n852_27{display:none}._root_1n852_2[data-theme=dark]{& ._dark-icon_1n852_32{display:none}& ._light-icon_1n852_27{display:block}}}
