:root{color-scheme:light;--paper:#f5e4da;--foreground:#000;--social-margin-right-horizontal:50px;--social-margin-bottom-horizontal:26px;--social-margin-right-vertical:50px;--social-margin-bottom-vertical:50px;--social-icon-gap:35px}.portfolio-experience{--divider-thickness:3px;position:fixed;z-index:0;inset:0;overflow:hidden;isolation:isolate;background:var(--paper);outline:none;touch-action:none;-webkit-tap-highlight-color:transparent}.portfolio-experience:focus-visible{outline:2px solid #000;outline-offset:-5px}.portfolio-experience.is-input-locked{user-select:none;-webkit-user-select:none}.portfolio-page{position:absolute;inset:0;overflow:visible;clip-path:polygon(0 0,100% 0,100% 100%,0 100%);visibility:visible!important;pointer-events:auto;will-change:clip-path}.portfolio-page[hidden]{display:none!important}.portfolio-page:not(.is-active){visibility:visible;pointer-events:auto}.portfolio-page[data-page=saturn]{clip-path:polygon(50% 0,100% 0,100% 50%,50% 50%);z-index:21}.portfolio-page[data-page=alias]{clip-path:polygon(0 0,50% 0,50% 50%,0 50%)}.portfolio-experience:not(.is-saturn-reveal):not(.is-scroll-lines-active) .portfolio-page{clip-path:inset(0)!important}.portfolio-experience .line-stage{visibility:hidden}.portfolio-experience.is-scroll-lines-active .line-stage{visibility:visible}.portfolio-experience .portfolio-page.is-page-hidden{visibility:hidden!important;pointer-events:none!important}.portfolio-destination-page{position:absolute;inset:0;overflow:visible;pointer-events:none}.portfolio-destination-panel{position:absolute;z-index:18;inset:0;background:var(--paper);pointer-events:none;will-change:clip-path}.portfolio-about-content[hidden],.portfolio-work-content[hidden]{display:none!important}.portfolio-work-content{position:absolute;z-index:19;inset:0;display:block;pointer-events:none}.portfolio-work-pixel-title{display:block;height:auto;overflow:visible}.portfolio-work-graph-title{position:relative;display:inline-block;max-width:100%;font-family:Factor A,Arial,sans-serif;font-weight:500;line-height:1.2;white-space:nowrap;text-align:left}.portfolio-work-graph-title__label{position:relative;z-index:1;color:transparent;-webkit-text-fill-color:transparent}.portfolio-work-graph{position:absolute;top:0;left:0;width:108.2%;height:100%;overflow:visible;pointer-events:none;z-index:2}.portfolio-work-graph__line{fill:none;stroke:#000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:portfolio-work-graph-draw var(--graph-draw-duration) linear forwards}.portfolio-work-graph__title{fill:#000;font-family:Factor A,Arial,sans-serif;font-size:100px;font-weight:500}.portfolio-work-graph__inverted-ink .portfolio-work-graph__line{stroke:var(--paper)}.portfolio-work-graph__point-core{fill:#000;opacity:0;animation:portfolio-work-graph-marker-appear 1ms step-end var(--point-delay) forwards}.portfolio-work-graph__inverted-ink .portfolio-work-graph__point-core{fill:var(--paper)}.portfolio-work-graph__endpoint-orbit{fill:none;stroke:#000;stroke-width:1.5;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:portfolio-work-graph-orbit-draw var(--endpoint-orbit-duration) linear var(--endpoint-orbit-delay) forwards}.portfolio-work-graph__inverted-ink .portfolio-work-graph__endpoint-orbit{stroke:var(--paper)}.portfolio-work-graph__endpoint-core{fill:#000;opacity:0;animation:portfolio-work-graph-marker-appear 1ms step-end var(--endpoint-orbit-delay) forwards}.portfolio-work-graph__inverted-ink .portfolio-work-graph__endpoint-core{fill:var(--paper)}.portfolio-work-graph__endpoint-crossing-orbit{fill:none;stroke:var(--paper);stroke-width:1.5;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:portfolio-work-graph-orbit-draw var(--endpoint-orbit-duration) linear var(--endpoint-orbit-delay) forwards}@keyframes portfolio-work-graph-draw{to{stroke-dashoffset:0}}@keyframes portfolio-work-graph-marker-appear{to{opacity:1}}@keyframes portfolio-work-graph-orbit-draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.portfolio-work-graph__endpoint-orbit,.portfolio-work-graph__line{stroke-dashoffset:0;animation:none}.portfolio-work-graph__endpoint-core{opacity:1;animation:none}.portfolio-work-graph__endpoint-crossing-orbit{stroke-dashoffset:0;animation:none}.portfolio-work-graph__point-core{opacity:1;animation:none}}.portfolio-about-content{position:absolute;z-index:19;pointer-events:none}.portfolio-about-copy{display:flex;flex-direction:column;align-items:center;width:100%;color:#000;font-weight:600;line-height:1.4;text-align:center;pointer-events:auto}.portfolio-about-copy p{width:100%;margin:0;text-align:justify;text-align-last:left;text-indent:2em}.portfolio-about-content[data-source=alias] .portfolio-about-copy{font-family:Alias JetBrains Mono,ui-monospace,monospace;font-weight:700;line-height:1.35}.portfolio-about-content[data-source=alias][data-alias3d=true] .portfolio-about-copy{width:100%}.portfolio-about-content[data-source=alias][data-alias3d=true] #portfolio-about-paragraph{opacity:0}.portfolio-about-content[data-source=design] .portfolio-about-copy{font-family:Arial,Helvetica,sans-serif;font-weight:700}.portfolio-about-content[data-source=dev] .portfolio-about-copy{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-weight:600}.portfolio-curriculum-link{--portfolio-curriculum-horizontal-canvas-margin-x:0em;--portfolio-curriculum-horizontal-canvas-margin-y:3em;--portfolio-curriculum-vertical-canvas-margin-x:0em;--portfolio-curriculum-vertical-canvas-margin-y:7em;--portfolio-curriculum-margin-x:var(--portfolio-curriculum-horizontal-canvas-margin-x);--portfolio-curriculum-margin-y:var(--portfolio-curriculum-horizontal-canvas-margin-y);display:inline-grid;place-items:center;margin-block-start:var(--portfolio-curriculum-margin-y);margin-inline:var(--portfolio-curriculum-margin-x);padding:.35em;color:inherit;font:inherit;text-decoration:none;cursor:pointer;pointer-events:auto}.portfolio-curriculum-link[data-canvas-mode=vertical]{--portfolio-curriculum-margin-x:var(--portfolio-curriculum-vertical-canvas-margin-x);--portfolio-curriculum-margin-y:var(--portfolio-curriculum-vertical-canvas-margin-y)}.portfolio-curriculum-link:focus-visible{outline:2px solid #000;outline-offset:5px}.portfolio-curriculum-link__icon,.portfolio-curriculum-link__icon-3d{display:block;width:4.5em;height:4.5em;flex:0 0 4.5em;object-fit:contain}.portfolio-about-content[data-source=dev] .portfolio-curriculum-link__icon,.portfolio-about-content[data-source=dev] .portfolio-curriculum-link__icon-3d{width:3.6em;height:3.6em;flex-basis:3.6em}.portfolio-curriculum-link__icon-3d{display:none;overflow:visible;pointer-events:none}.portfolio-about-content[data-source=alias] .portfolio-curriculum-link__icon-3d.has-3d-icon{display:block}.portfolio-about-content[data-source=alias] .portfolio-curriculum-link__icon-3d.has-3d-icon+.portfolio-curriculum-link__icon{display:none}.portfolio-curriculum-link__icon-3d canvas{display:block;width:100%;height:100%}.portfolio-destination-back[hidden],.portfolio-destination-page[hidden],.portfolio-destination-panel[hidden]{display:none!important}.portfolio-destination-back{position:absolute;z-index:19;top:0;left:0;display:flex;align-items:center;gap:.04em;margin:0;padding:0;border:0;color:#000;background:transparent;font:600 clamp(2rem,5vw,5rem) /1 Alias JetBrains Mono,monospace;letter-spacing:-.04em;text-align:left;white-space:nowrap;cursor:pointer;appearance:none;pointer-events:auto}.portfolio-destination-back>*{pointer-events:none}.portfolio-destination-back__arrow{display:block;width:.46em;height:.5em;flex:0 0 auto;overflow:visible;transform-origin:left bottom}.portfolio-destination-back__arrow[hidden]{display:none!important}.portfolio-destination-back[data-source=dev]{font-weight:500;letter-spacing:0}.portfolio-destination-back[data-source=alias]{color:transparent;-webkit-text-fill-color:transparent}.portfolio-destination-back[data-source=alias-fallback]{color:#000;-webkit-text-fill-color:#000}.portfolio-destination-back[data-source=design]{width:max-content;height:max-content;font-weight:700;letter-spacing:-.04em}.portfolio-destination-back[data-source=dev].is-activation-hovered #portfolio-destination-back-label,.portfolio-destination-back[data-source=dev]:focus-visible #portfolio-destination-back-label,.portfolio-destination-back[data-source=dev]:hover #portfolio-destination-back-label{color:var(--paper);-webkit-text-fill-color:var(--paper);-webkit-text-stroke:2px #000;paint-order:stroke fill}.portfolio-destination-back:focus-visible{outline:2px solid #000;outline-offset:6px}.page--alias.is-destination-open{pointer-events:none!important}.page--alias.is-destination-open>:not(.alias-text-scene):not(.alias-navigation-wipe){visibility:hidden!important;pointer-events:none!important}.page--alias.is-destination-open>.alias-text-scene{z-index:3;visibility:visible!important}.page--alias.is-destination-open>.alias-navigation-wipe{visibility:visible!important}.portfolio-destination-page>.alias-navigation-wipe{position:absolute;z-index:19;display:none;background:var(--paper);mix-blend-mode:difference;pointer-events:none}.portfolio-experience #alias-planet,.portfolio-experience #dev-planet,.portfolio-experience #planet{cursor:pointer;pointer-events:auto}.portfolio-experience #alias-planet:focus-visible,.portfolio-experience #dev-planet:focus-visible,.portfolio-experience #planet:focus-visible{outline:2px solid #000;outline-offset:6px}.portfolio-page[data-page=design]{clip-path:polygon(50% 50%,100% 50%,100% 100%,50% 100%)}.portfolio-page[data-page=dev]{clip-path:polygon(0 50%,50% 50%,50% 100%,0 100%)}.page--alias,.page--design,.page--dev{background:var(--paper)}.social-links{position:absolute;z-index:10;right:var(--social-margin-right-horizontal);bottom:var(--social-margin-bottom-horizontal);display:flex;align-items:center;gap:var(--social-icon-gap);transform-origin:bottom right;will-change:transform}.social-links[data-canvas-mode=vertical]{right:var(--social-margin-right-vertical);bottom:var(--social-margin-bottom-vertical)}.social-link{display:grid;width:var(--social-icon-size);height:var(--social-icon-size);place-items:center;border-radius:50%;color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}.social-link:focus-visible{outline:2px solid currentColor;outline-offset:3px}.social-link__regular{display:block;width:var(--social-art-size);height:var(--social-art-size);object-fit:contain;pointer-events:none}.line-stage{position:absolute;z-index:20;inset:0;overflow:visible;pointer-events:none}.divider{position:absolute;top:50%;left:50%;width:400vmax;height:var(--divider-thickness);translate:-50% -50%;transform-origin:center;will-change:transform,left,top;background:#000}@media (max-width:600px){:root{--social-icon-gap:22px;--social-margin-right-horizontal:20px;--social-margin-bottom-horizontal:18px;--social-margin-right-vertical:18px;--social-margin-bottom-vertical:18px}}@media (prefers-reduced-motion:reduce){.divider,.portfolio-page{will-change:auto}}.portfolio-page--saturn{background:#000}.portfolio-page--saturn .saturn-scene-root{position:absolute;inset:0;overflow:hidden;isolation:isolate;background:#000}.portfolio-page--saturn .starfield{position:absolute;z-index:0;inset:0;overflow:hidden;pointer-events:none}.portfolio-page--saturn .starfield__dot{position:absolute;width:1px;height:1px;border-radius:50%;background:#f5e4da;box-shadow:0 0 3px rgb(245 228 218/45%);transform-origin:center;will-change:opacity}.portfolio-page--saturn .saturn-scene-root.is-intro .starfield__dot{opacity:0}.portfolio-page--saturn .scene{position:absolute;z-index:1;inset:0;pointer-events:none}.portfolio-page--saturn .scene canvas{display:block;width:100%;height:100%;cursor:grab;pointer-events:none;touch-action:none;user-select:none}.portfolio-page--saturn .saturn-scene-root.is-fullscreen-interactive .scene,.portfolio-page--saturn .saturn-scene-root.is-fullscreen-interactive .scene canvas{pointer-events:auto}.portfolio-page--saturn .saturn-expand-control{position:absolute;z-index:2;inset:0;display:block;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer}.portfolio-page--saturn .saturn-expand-control:disabled,.portfolio-page--saturn .saturn-scene-root.is-fullscreen-interactive .saturn-expand-control{display:none;pointer-events:none}.portfolio-page--saturn .scene canvas.is-dragging{cursor:grabbing}.portfolio-page--saturn .saturn-scene-root.is-intro .scene,.portfolio-page--saturn .saturn-scene-root.is-intro .scene canvas{pointer-events:none;cursor:default}.portfolio-page--saturn .fallback{position:absolute;z-index:3;inset:0;overflow:hidden;pointer-events:none}.portfolio-page--saturn .fallback[hidden]{display:none}.portfolio-page--saturn .fallback:after,.portfolio-page--saturn .fallback:before{position:absolute;top:50%;left:50%;content:"";border-radius:50%;transform:translate(-50%,-50%)}.portfolio-page--saturn .fallback:before{width:clamp(12rem,24vw,30rem);aspect-ratio:1;background:radial-gradient(circle at 35% 30%,#f7edda,#a59b8a 72%,#3b3835)}.portfolio-page--saturn .fallback:after{width:clamp(20rem,48vw,58rem);height:clamp(5rem,13vw,16rem);border:1.25rem solid #c9bdab;transform:translate(-50%,-50%) rotate(-12deg)}.page--alias{background:var(--paper)}@font-face{font-family:Alias JetBrains Mono;src:url(/portfolio/pages/assets/fonts/JetBrainsMono-Bold.ttf) format("truetype");font-style:normal;font-weight:700;font-display:swap}.page--alias .social-links{--social-icon-size:80px;--social-art-size:80px}.page--alias .social-3d-layer{position:absolute;z-index:1;inset:0;pointer-events:none}.page--alias .social-3d-layer canvas{display:block;width:100%;height:100%}.page--alias .social-link{position:relative;z-index:2}.page--alias .social-links.has-3d-icons .social-link__regular,.page--alias .social-links.is-loading-3d-icons .social-link__regular{opacity:0}.page--alias .alias-canvas{width:1920px;height:1080px;background:var(--paper)}.page--alias .alias-canvas,.page--alias .alias-planet{position:absolute;top:0;left:0;transform-origin:top left}.page--alias .alias-planet{width:420px;height:420px;margin:0}.page--alias .alias-fallback,.page--alias .alias-scene{position:absolute;inset:0}.page--alias .alias-scene canvas{display:block;width:100%;height:100%}.page--alias .alias-fallback{display:grid;place-items:center}.page--alias .alias-fallback:before{width:73.3%;height:73.3%;border-radius:50%;background:radial-gradient(circle at 35% 30%,#171717 0,#050505 58%,#000 100%)}.page--alias .alias-planet.is-webgl .alias-fallback{display:none}.page--alias>.alias-text-scene{position:absolute;z-index:2;inset:0;pointer-events:none}.page--alias>.alias-text-scene canvas{display:block;width:100%;height:100%}.page--alias .alias-text-hitbox{position:absolute;z-index:1;display:block;opacity:0;pointer-events:none}.page--alias .alias-navigation{position:absolute;z-index:4;inset:0;pointer-events:none}.page--alias .alias-navigation__button{position:absolute;margin:0;padding:0;border:0;color:transparent;background:transparent;font-family:Alias JetBrains Mono,monospace;font-weight:700;line-height:1;text-align:left;white-space:nowrap;-webkit-text-fill-color:transparent;pointer-events:auto;cursor:pointer}.page--alias .alias-navigation__button:focus-visible{outline:2px solid #000;outline-offset:6px}.page--alias .alias-canvas:not(.has-3d-text) .alias-navigation__button{color:#000;-webkit-text-fill-color:#000}.page--alias .alias-brand-wipe,.page--alias .alias-navigation-wipe{position:absolute;z-index:3;display:none;background:var(--paper,#f5e4da);mix-blend-mode:difference;pointer-events:none}.page--alias .alias-text-fallback{position:absolute;z-index:1;margin:0;color:#000;font-family:Alias JetBrains Mono,monospace;font-weight:700;line-height:1;white-space:nowrap;transform-origin:top left;pointer-events:none}.page--alias .alias-canvas.is-starting #alias-planet,.page--alias .alias-canvas.is-starting .alias-navigation,.page--alias .alias-canvas.is-starting+.alias-text-scene{visibility:hidden}.page--alias .alias-canvas.has-3d-text #alias-hello,.page--alias .alias-canvas.has-3d-text #alias-scroll-instruction,.page--alias .alias-canvas.is-starting .alias-text-fallback{opacity:0}.page--alias .alias-scroll-paragraph{max-width:none;white-space:normal;text-align:left;line-height:1.35}.page--design .design-canvas{position:absolute;top:0;left:0;width:1920px;height:1080px;overflow:visible;background:var(--paper);transform-origin:top left;will-change:transform}.page--design .social-links{--social-icon-size:80px;--social-art-size:80px}.page--design .page-navigation{position:absolute;z-index:auto;inset:0;color:#000;pointer-events:none}.page--design .page-navigation__row{position:absolute;display:flex;align-items:center;margin:0;padding:0;border:0;color:inherit;background:transparent;font:inherit;line-height:inherit;text-align:left;appearance:none;cursor:pointer;pointer-events:auto}.page--design .page-navigation__row:focus-visible{outline:2px solid #000;outline-offset:4px}.page--design .page-navigation__row>*{pointer-events:none}.page--design .page-navigation__work{position:relative;z-index:3;display:block;height:auto;overflow:visible}.page--design .page-navigation__work--redraw{position:absolute;z-index:3;top:0;left:0;pointer-events:none}.page--design .page-navigation__about{position:relative;z-index:3;font-family:Arial,Helvetica,sans-serif;font-weight:700;letter-spacing:-.04em;line-height:1;white-space:nowrap;color:var(--paper);mix-blend-mode:difference}.page--design .page-navigation__arrow{position:relative;z-index:3;display:block;height:auto;flex:0 0 auto;overflow:visible}.page--design .artwork{position:absolute;z-index:1;top:0;left:0;display:block;overflow:hidden;margin:0;visibility:hidden;will-change:opacity,transform}.page--design .artwork--redraw{z-index:2}.page--design .artwork:not(#planet){pointer-events:none}.page--design #planet{pointer-events:auto}.page--design .signature__image{position:absolute;display:block;max-width:none;height:auto;user-select:none;-webkit-user-drag:none}.page--design .design__image,.page--design .planet__image{display:block;width:100%;height:100%;overflow:visible}.page--design .design__image{position:absolute;inset:0;user-select:none;-webkit-user-drag:none}.page--design .signature__erase-path,.page--design .signature__redraw-path{fill:none;stroke:#000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.page--design .design__path,.page--design .navigation-work__path{fill:none;stroke:#000;stroke-linecap:round;stroke-linejoin:round}.page--dev{--dev-terminal-font:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace}.page--dev .dev-canvas{position:absolute;top:0;left:0;width:1920px;height:1080px;overflow:visible;background:var(--paper);transform-origin:top left;will-change:transform}.page--dev .social-links{--social-icon-size:80px;--social-art-size:80px}.page--dev .dev-artwork{position:absolute;top:0;left:0;display:block;margin:0;color:#000;will-change:transform,opacity}.page--dev .dev-artwork--planet{z-index:1;overflow:visible}.page--dev .dev-planet__image{display:block;width:100%;height:100%;transform-origin:center;user-select:none;-webkit-user-drag:none}.page--dev .dev-brand,.page--dev .dev-terminal{position:absolute;z-index:2;margin:0;color:#000;font-family:var(--dev-terminal-font);white-space:nowrap}.page--dev .dev-brand{font-size:1rem;font-weight:800;letter-spacing:-.07em;line-height:1}.page--dev .dev-brand__text{display:inline-block;white-space:nowrap}.page--dev .dev-terminal{font-size:1rem;font-weight:500;line-height:1.35}.page--dev .dev-terminal__prompt{display:flex;align-items:center;gap:.08em;margin:0}.page--dev .dev-terminal__cursor{animation:dev-cursor-blink 1s step-end infinite}.page--dev .dev-terminal__output:empty{display:none}.page--dev .dev-navigation{position:absolute;z-index:3;inset:0;color:#000;font-family:var(--dev-terminal-font);font-size:1rem;font-weight:600;line-height:1;pointer-events:none}.page--dev .dev-navigation__row{position:absolute;margin:0;padding:0;border:0;color:inherit;background:transparent;font:inherit;line-height:inherit;text-align:left;appearance:none;cursor:pointer;pointer-events:auto}.page--dev .dev-navigation__label{white-space:nowrap}.page--dev .dev-navigation__row.is-activation-hovered .dev-navigation__label,.page--dev .dev-navigation__row:hover .dev-navigation__label{color:var(--paper);-webkit-text-fill-color:var(--paper);-webkit-text-stroke:2px #000;paint-order:stroke fill}.page--dev .dev-navigation__row:focus-visible{outline:2px solid #000;outline-offset:6px}@keyframes dev-cursor-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.page--dev .dev-terminal__cursor{animation:none}}