.project-images img{transition:opacity .35s ease}.project-images img[data-loaded=false]{background-image:var(--skeleton-shimmer);background-size:200% 100%;animation:vshShimmer 1.4s linear infinite}.project-images img[data-loaded=true]{background-image:none;animation:none}@media(prefers-reduced-motion:reduce){.project-images img[data-loaded=false]{animation:none}.project-images img{transition:none}}.loader{z-index:var(--z-loader);position:fixed;inset:0;background-color:var(--surface-dark);pointer-events:none}.loader--done{display:none}.loader_progress{position:absolute;top:45svh;left:var(--edge-inset);right:var(--edge-inset);height:1px;transform:scaleX(0) scaleY(.5);transform-origin:left top;background-color:var(--text-invert)}@media(max-width:479px){.hero-list--featured{position:fixed;left:var(--edge-inset);bottom:var(--edge-inset);z-index:2}}html,body{overflow:hidden;height:100%;height:100dvh;position:fixed;inset:0;width:100%;overscroll-behavior:none}html.is-js .hero-content:not(.intro-ready){visibility:hidden}.content__img{--trail-unit: 15rem;--img-width: var(--trail-unit);--img-height: auto;width:var(--img-width);height:var(--img-height);position:absolute;top:0;left:0;opacity:0;overflow:hidden;backface-visibility:hidden;will-change:transform,filter;background-size:cover;background-position:center;pointer-events:none}.content__img-inner{width:100%;height:100%;object-fit:contain;position:absolute;will-change:transform;image-rendering:crisp-edges;image-rendering:-webkit-optimize-contrast}.content__img--horizontal{--img-width: var(--trail-unit);--img-height: calc(var(--trail-unit) * 3 / 4)}.content__img--vertical{--img-width: calc(var(--trail-unit) * 3 / 4);--img-height: var(--trail-unit)}.main-cursor-hint .cursor-hint_mask{min-width:16.5em}.main-cursor-hint .cursor-hint_layer{text-align:left}.main-cursor-hint .cursor-hint_coords{display:none;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:6em;text-align:left}.main-cursor-hint.is-coords .cursor-hint_mask{display:none}.main-cursor-hint.is-coords .cursor-hint_coords{display:inline-block}.main-cursor-hint{mix-blend-mode:difference}@media screen and (max-width:991px){.content__img{--trail-unit: 13rem}}@media screen and (max-width:767px){.content__img{--trail-unit: 11rem}}@media screen and (max-width:479px){.content__img{--trail-unit: 9rem}}.trail-lines{position:absolute;inset:0;width:100%;height:100%;z-index:2147483000;pointer-events:none;overflow:visible;mix-blend-mode:difference}.trail-lines line{stroke:#fff;stroke-width:1;vector-effect:non-scaling-stroke}[data-droplist=featured]>.featured-row{overflow:hidden;flex-shrink:0}.hero-list--featured .list-items{margin-top:-.25rem}html:not(.featured-ready) [data-droplist=featured]>.featured-row{height:0}.featured-hitplate{display:none}@media(min-width:480px){.hero-list--featured{position:relative;z-index:0}body:not(.ascii-on) .featured-hitplate{display:block;position:absolute;z-index:-1;top:0;left:0;width:100%;height:var(--featured-rest-h, 0)}}.hero-list--featured .dropdown-arrow-icon-wrapper{display:none}body.magic-off .hero-list--featured .dropdown-arrow-icon-wrapper{display:flex}body.magic-off .hero-list--featured{cursor:pointer}@media(hover:hover){[data-droplist=featured] .row-link{transition:opacity .2s ease}[data-droplist=featured]:has(.row-link:hover) .row-link:not(:hover){opacity:.5}[data-droplist=featured] .row-link:hover{opacity:1}[data-droplist=featured] .featured-row{transition:transform .2s ease}[data-droplist=featured]:not(.is-scrollable) .featured-row:has(.row-link:hover){transform:translate(-.3rem)}.hero-grid>*{transition:opacity .2s ease}.hero-grid:has(.hero-list--featured:hover)>*:not(.hero-list--featured){opacity:.5}}@media(prefers-reduced-motion:reduce){[data-droplist=featured] .featured-row{transition:none}[data-droplist=featured] .featured-row:has(.row-link:hover){transform:none}}[data-droplist=featured]{padding-right:.6rem}[data-droplist=featured].is-scrollable{overflow-x:hidden;overflow-y:auto;-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 1.5rem),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 1.5rem),transparent)}[data-droplist=featured].is-scrollable.is-at-bottom{-webkit-mask-image:none;mask-image:none}.dropdown-wrapper{justify-content:flex-start;align-items:flex-start;display:flex}.featured-row{align-items:center;column-gap:.4rem;width:max-content;display:inline-flex}.home-window{position:fixed;inset:0;z-index:var(--z-window)}.home-window[hidden]{display:none}html.deeplink-intro .home-window{visibility:hidden}.home-window_backdrop{position:absolute;inset:0;background:transparent;opacity:0;transition:opacity .35s ease}.home-window.is-open .home-window_backdrop{opacity:1;transition-duration:1s}.home-window.is-closing .home-window_backdrop{opacity:0;transition-duration:.35s}.home-window_pane{--hw-radius: calc(.315rem + var(--text-inset));position:absolute;top:var(--hw-top, 3rem);right:var(--edge-inset);bottom:var(--edge-inset);left:var(--edge-inset);display:flex;flex-direction:column;overflow:hidden;border-radius:var(--hw-radius);box-shadow:0 1.5rem 4rem -1rem #00000080;color:var(--text-invert);transform-origin:center center;will-change:transform}.home-window_glass{position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:color-mix(in srgb,var(--surface-dark) 25%,transparent);-webkit-backdrop-filter:blur(28px) saturate(160%) brightness(.85);backdrop-filter:blur(28px) saturate(160%) brightness(.85);box-shadow:inset 0 1px 1px #ffffff40,inset 0 -1px 1px #ffffff1a}@media(min-width:768px){.home-window_pane.is-section-portfolio:not(.is-fullscreen),.home-window_pane.is-section-cases:not(.is-fullscreen){left:calc(var(--edge-inset) + var(--nav-col) + var(--rhythm-gap));right:calc(var(--edge-inset) + var(--nav-col) + var(--rhythm-gap))}.home-window_pane.is-section-profile:not(.is-fullscreen){left:calc(100vw - var(--edge-inset) - var(--nav-col));right:var(--edge-inset)}}.home-window_pane.is-fullscreen{left:var(--edge-inset);right:var(--edge-inset)}@media(min-width:768px){.home-window_pane.is-fullscreen .home-window_content{--hw-zoom: 2;zoom:var(--hw-zoom);--hairline: calc(1px / var(--hw-zoom))}.home-window_pane.is-fullscreen .home-window_section{max-width:calc((2 * var(--nav-col) + var(--rhythm-gap)) / var(--hw-zoom));padding-top:max(0px,calc((45svh - var(--hw-content-top, 88px)) / var(--hw-zoom)))}}.home-window_controls{position:absolute;top:0;left:0;right:0;z-index:2;display:flex;gap:.4rem;padding:var(--text-inset);pointer-events:none}.home-window_controls>*{pointer-events:auto}@media(max-width:767px){.home-window_btn[data-home-window-fullscreen]{display:none}}.home-window_fs{appearance:none;font-family:inherit;margin:0;padding-left:0;padding-right:0;--fs-side: calc(.7rem * var(--pill-line-height) + 2 * var(--text-inset));height:var(--fs-side);aspect-ratio:1;display:inline-flex;align-items:center;justify-content:center}@media(hover:hover)and (pointer:fine){.home-window_fs{--fs-side: calc(.7rem * var(--pill-line-height) + .4rem)}}.home-window_fs .link-icon{width:calc(.7rem * var(--pill-line-height));height:calc(.7rem * var(--pill-line-height));opacity:1;color:inherit}.home-window_socials{margin-left:auto;display:flex;gap:.4rem;flex-wrap:wrap;justify-content:flex-end}.home-window_pane:not(.is-section-profile) .home-window_socials{display:none}.home-window_lang{margin-left:auto}.home-window_pane:not(.is-section-cases) .home-window_lang{display:none}.home-window_zoom-label{align-self:center;color:color-mix(in srgb,var(--text-invert) 50%,transparent);font-size:.7rem;line-height:var(--pill-line-height);pointer-events:none}.home-window_pane:not(.is-fullscreen) .home-window_zoom-label{display:none}@media(hover:hover)and (pointer:fine){.home-window_btn[data-home-window-close]{display:none}}.home-window-close-hint{mix-blend-mode:difference}@media(hover:hover)and (min-width:480px){.home-window_controls:has(:is(.nav-link,.copy-button):hover) :is(.nav-link,.copy-button):not(:hover){background-color:var(--pill-tint-dim);color:color-mix(in srgb,var(--text-invert) 50%,transparent)}}.home-window_title{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.home-window_content{flex:1 1 auto;overflow:auto;isolation:isolate;color:var(--text-invert);--modal-text-inset: var(--edge-inset);--text: var(--text-invert);--text-faint: #ffffff4d;--text-muted: #ffffffb3;--line: #ffffff26}.home-window_section[hidden]{display:none}.home-window_section{padding-top:max(0px,calc(45svh - var(--hw-content-top, 88px)))}.home-window_content .info-section,.home-window_content .project-item:first-child{padding-top:0}.home-window_content .project-item{padding-top:6vh}.home-window_content .project-desc{padding-bottom:2.5rem}.home-window_content .general-description{grid-template-columns:1fr}.home-window_content .general-description>.typed{grid-column:1 / -1;padding-left:var(--modal-text-inset);padding-right:var(--modal-text-inset)}.home-window_content .profile-title-wrp>*{grid-column:1 / -1;padding-left:var(--modal-text-inset);padding-right:var(--modal-text-inset)}.home-window_content .job-row{grid-template-columns:1fr 1fr;column-gap:var(--rhythm-gap);row-gap:0}.home-window_content .job-row>.job-name{grid-column:1 / -1;padding-left:var(--modal-text-inset);padding-right:var(--modal-text-inset);flex-direction:column-reverse;gap:var(--text-inset)}.home-window_content .job-row>.job-desc{grid-column:1 / -1;padding-left:var(--modal-text-inset);padding-right:var(--prose-inset-right);max-width:none}.home-window_content .job-desc{grid-column-gap:1.7rem;grid-row-gap:1.7rem;padding-top:var(--section-gap)}.home-window_content .project-desc{grid-template-columns:1fr 1fr;column-gap:var(--rhythm-gap);row-gap:0;padding-left:0;padding-right:0}.home-window_content .project-desc>.project-title,.home-window_content .project-desc>.project-about{grid-column:1 / -1;padding-left:var(--modal-text-inset);padding-right:var(--modal-text-inset)}.home-window_content .project-desc>.project-about{max-width:none;padding-right:var(--prose-inset-right)}.home-window_content .project-about{grid-column-gap:1.7rem;grid-row-gap:1.7rem;padding-top:var(--section-gap)}.home-window_content .project-title{display:grid;grid-template-columns:1fr auto;grid-column-gap:var(--rhythm-gap);grid-row-gap:var(--text-inset);align-items:baseline}@media(max-width:479px){.home-window_content .job-row>.job-desc,.home-window_content .project-desc>.project-about{padding-right:var(--modal-text-inset)}}body.home-window-locked{overflow:hidden}body.home-window-open .navigation-top{z-index:var(--z-window-nav)}@media(prefers-reduced-motion:reduce){.home-window_backdrop,.home-window.is-open .home-window_backdrop,.home-window.is-closing .home-window_backdrop{transition:none}}:root{--image-modal-pad: 1.5rem}.image-modal{position:fixed;inset:0;z-index:var(--z-modal);opacity:0;pointer-events:none;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);--fly-ease: var(--open-ease);transition:backdrop-filter 1s var(--fly-ease),-webkit-backdrop-filter 1s var(--fly-ease)}.image-modal.is-open{opacity:1;pointer-events:auto;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.image-modal.is-closing{pointer-events:none;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);transition:backdrop-filter .35s cubic-bezier(.4,0,1,1),-webkit-backdrop-filter .35s cubic-bezier(.4,0,1,1)}body.image-modal-locked{overflow:hidden}.image-modal_stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.image-modal.is-full .image-modal_stage{display:block;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.image-modal_inner{position:relative;transform-origin:center center;will-change:transform}.image-modal.is-full .image-modal_inner{width:min(100%,calc(100vw - var(--image-modal-pad) * 2));margin:var(--image-modal-pad) auto}.image-modal_img{display:block;width:auto;height:auto;max-width:calc(100vw - var(--image-modal-pad) * 2);max-height:calc(100svh - var(--image-modal-pad) * 2);cursor:pointer;user-select:none}.image-modal.is-full .image-modal_img{width:100%;max-width:none;max-height:none}.image-modal-cursor-hint{mix-blend-mode:difference}@media(max-width:640px){.image-modal-cursor-hint{display:none}}
