@font-face{font-family:Sora;src:url(../fonts/sora-latin.woff2)format("woff2");font-weight:100 800;font-style:normal;font-display:swap}@font-face{font-family:Poppins;src:url(../fonts/poppins-latin.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--paper:#f2f1e5;--ink:#191918;--surface:var(--paper);--text:var(--ink);--bar:var(--ink);--font:"Sora", sans-serif;--font-secondary:"Poppins", sans-serif;--site-min:320px;--logo-desktop:260px;--logo-mobile:200px;--bar-width:min(184px, 52vw);--bar-width-mobile:min(150px, 52vw);--bar-height:4px;--toggle-size:52px;--space:32px;--space-mobile:20px;--radius:999px;--line:1px;--focus-line:2px;--focus-offset:4px;--icon-size:50%;--icon-line:2;--number:clamp(1rem, 2vw, 1.25rem);--progress-speed:80ms;--reveal-speed:.18s;--speed:.3s;--shell-max:768px;--header-height:52px;--header-padding:20px;--toggle-small:32px;--nav-size:.8rem;--nav-padding-y:6px;--nav-padding-x:6px;--nav-line-height:1;--nav-speed:.2s;--mark-size:22px;--mark-image:30px;--mark-bar-offset:9px;--mark-speed:.3s;--footer-mark-size:52px;--footer-mark-image:44px;--header-gap:8px;--cta-width:106px;--cta-height:34px;--cta-padding:14px;--cta-bubble:28px;--cta-offset:3px;--cta-icon:14px;--mobile-cta-icon:16px;--cta-speed:.3s;--cta-easing:cubic-bezier(.4, 0, .2, 1);--wire-padding:20px;--wire-padding-mobile:16px;--nav-gap:16px;--card-gap:16px;--card-height:88px;--technology-height:88px;--technology-height-mobile:72px;--technology-item-gap:28px;--technology-item-gap-mobile:24px;--technology-label-gap:10px;--technology-duration:52s;--technology-icon:24px;--technology-icon-mobile:20px;--technology-size:.8125rem;--spotify-height:152px;--spotify-radius:12px;--activity-cell:10px;--activity-gap:2px;--activity-label:28px;--activity-radius:2px;--activity-level-0:#dddcd2;--activity-level-1:#bab9b0;--activity-level-2:#8b8a84;--activity-level-3:#555550;--activity-level-4:#252522;--activity-reveal-duration:.44s;--activity-reveal-glow:8px;--activity-reveal-start:.75;--activity-reveal-peak:1.1;--section-enter-distance:16px;--section-enter-duration:.56s;--section-easing:cubic-bezier(.16, 1, .3, 1);--header-enter-duration:.64s;--identity-enter-duration:.96s;--technology-enter-duration:.48s;--about-copy-reveal-duration:1.2s;--about-copy-reveal-easing:cubic-bezier(.4, 0, .6, 1);--heading-size:clamp(1.25rem, 3vw, 1.75rem);--identity-avatar:118px;--identity-aura-offset:12px;--identity-aura-speed:68s;--identity-icon:36px;--identity-name:clamp(1.25rem, 3vw, 1.75rem);--identity-handle:.875rem;--identity-role:.875rem;--identity-value:.875rem;--identity-gap:12px;--identity-art-width:320px;--identity-art-height:168px;--identity-art-mobile-offset:4px;--identity-art-ratio:320 / 128;--identity-avatar-mobile:96px;--identity-icon-mobile:38px;--identity-gap-mobile:8px;--icon-morph-speed:.45s;--theme-cutout-shift:8px;--menu-line-offset:4px;--tooltip-size:.6875rem;--tooltip-offset:8px;--tooltip-padding-y:6px;--tooltip-padding-x:8px;--tooltip-enter:4px;--divider-opacity:.15;--wire-line:color-mix(in srgb, var(--text), transparent 85%);--plus-line:color-mix(in srgb, var(--text), transparent 58%);--plus-size:9px;--plus-offset:4px;--shell-half:min(384px, 50vw);--scroll-width:8px;--scroll-border:2px;--scroll-thumb:color-mix(in srgb, var(--text), transparent 90%);--scroll-thumb-hover:color-mix(in srgb, var(--text), transparent 84%)}html{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) var(--surface);background:var(--surface);width:100%;min-height:100%}html::-webkit-scrollbar{width:var(--scroll-width)}html::-webkit-scrollbar-track{background:var(--surface)}html::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border:var(--scroll-border) solid var(--surface);border-radius:var(--radius) var(--radius) var(--radius) var(--radius)}html::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover)}html[data-theme=dark]{--surface:var(--ink);--text:var(--paper);--bar:var(--paper);--scroll-thumb:color-mix(in srgb, var(--text), transparent 93%);--scroll-thumb-hover:color-mix(in srgb, var(--text), transparent 86%)}html[data-theme=light]{--surface:var(--paper);--text:var(--ink);--bar:var(--ink)}body{min-width:var(--site-min);height:100dvh;min-height:100dvh;font-family:var(--font);color:var(--text);margin:0;overflow:hidden auto}body,body:before{background:var(--surface);width:100%}body:before{z-index:2;height:var(--header-height);content:"";pointer-events:none;display:block;position:fixed;top:0;left:0}#__nuxt{width:100%;min-height:100dvh}button{font:inherit}::view-transition-new(root){animation:none}::view-transition-old(root){animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}.site{width:100%;min-height:100dvh;color:var(--text);background:var(--surface);justify-content:center;align-items:center;display:flex;position:relative;overflow-x:clip}.site[data-theme=dark]{--surface:var(--ink);--text:var(--paper);--bar:var(--paper);--activity-level-0:#30302d;--activity-level-1:#565650;--activity-level-2:#818079;--activity-level-3:#b7b5a9;--activity-level-4:#eceadf}.site[data-theme=light]{--surface:var(--paper);--text:var(--ink);--bar:var(--ink)}.intro{z-index:3;background:var(--surface);opacity:1;width:100%;min-height:100dvh;transition:opacity var(--speed),visibility var(--speed);justify-content:center;align-items:center;padding:0;display:flex;position:absolute;overflow:hidden}.intro.is-complete{visibility:hidden;opacity:0;pointer-events:none}.intro__content{justify-content:center;align-items:center;gap:var(--space);flex-direction:column;width:100%;display:flex}.intro__logo{width:var(--logo-desktop);height:auto;display:block}.intro__progress{width:var(--bar-width);height:var(--bar-height);background:color-mix(in srgb,var(--bar),transparent 80%);opacity:0;transition:opacity var(--reveal-speed) ease}.intro__fill,.intro__progress{border-radius:var(--radius) var(--radius) var(--radius) var(--radius);display:block;position:relative;overflow:hidden}.intro__fill{width:var(--progress,0);background:var(--bar);height:100%;transition:width var(--progress-speed) linear}.intro__number{margin:calc(var(--space)*-.5) 0 0 0;font-size:var(--number);color:var(--text);font-variant-numeric:tabular-nums;opacity:0;transition:opacity var(--reveal-speed) ease;display:block}.intro.is-loading .intro__number,.intro.is-loading .intro__progress{opacity:1}.theme-toggle{width:var(--toggle-size);height:var(--toggle-size);color:var(--text);border:var(--line) solid currentColor;border-radius:var(--radius) var(--radius) var(--radius) var(--radius);cursor:pointer;transition:transform var(--speed),opacity var(--speed);background:0 0;justify-content:center;align-items:center;padding:0;display:flex}.theme-toggle:hover{transform:scale(1.08)}.theme-toggle:focus-visible{outline:var(--focus-line) solid var(--text);outline-offset:var(--focus-offset)}.theme-toggle svg{width:var(--icon-size);height:var(--icon-size);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:var(--icon-line);display:block;overflow:visible}.theme-toggle .theme-toggle__disk{fill:currentColor;stroke:none}.theme-toggle .theme-toggle__cutout,.theme-toggle .theme-toggle__disk{transform-origin:50%;transition:transform var(--icon-morph-speed) cubic-bezier(.16,1,.3,1)}.theme-toggle .theme-toggle__cutout{transform-box:fill-box}.theme-toggle .theme-toggle__rays{opacity:0;transform-box:fill-box;transform-origin:50%;transition:opacity var(--icon-morph-speed) ease,transform var(--icon-morph-speed) cubic-bezier(.16,1,.3,1);transform:scale(.5)rotate(-30deg)}.theme-toggle.is-dark .theme-toggle__disk{transform:scale(.78)}.theme-toggle.is-dark .theme-toggle__cutout{transform:translate(var(--theme-cutout-shift),calc(var(--theme-cutout-shift)*-1))}.theme-toggle.is-dark .theme-toggle__rays{opacity:1;transform:scale(1)rotate(0)}.portfolio{width:100%;min-height:100dvh;color:var(--text);flex-direction:column;display:flex}.portfolio,.portfolio__header{background:var(--surface);align-items:center}.portfolio__header{z-index:3;width:min(var(--shell-max),100%);height:var(--header-height);padding:0 var(--header-padding) 0 var(--header-padding);grid-template-columns:minmax(0,1fr) var(--header-height) minmax(0,1fr);box-sizing:border-box;border-left:var(--line) solid var(--wire-line);border-right:var(--line) solid var(--wire-line);display:grid;position:sticky;top:0}.portfolio__header:after{width:100vw;height:var(--line);content:"";background:var(--text);opacity:var(--divider-opacity);display:block;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.portfolio__header .theme-toggle{width:var(--toggle-small);height:var(--toggle-small);box-sizing:border-box;border-color:var(--wire-line)}.portfolio__shell{width:min(var(--shell-max),100%);box-sizing:border-box;border-left:var(--line) solid var(--wire-line);border-right:var(--line) solid var(--wire-line)}.portfolio__nav{font-family:var(--font-secondary);font-size:var(--nav-size);align-items:center;gap:0;display:flex}.portfolio__nav a{padding:var(--nav-padding-y) var(--nav-padding-x) var(--nav-padding-y) var(--nav-padding-x);color:inherit;line-height:var(--nav-line-height);border-radius:var(--radius) var(--radius) var(--radius) var(--radius);transition:background var(--nav-speed);text-decoration:none}.portfolio__nav a:hover{background:color-mix(in srgb,var(--text),transparent 92%)}.portfolio__nav a:focus-visible{outline:var(--focus-line) solid var(--text);outline-offset:var(--focus-offset)}.portfolio__header .portfolio__nav{justify-self:start}.portfolio__mark{width:var(--header-height);height:var(--header-height);box-sizing:border-box;font-family:var(--font);font-size:var(--mark-size);color:var(--text);background:0 0;justify-content:center;align-items:center;padding:0;text-decoration:none;display:flex;position:relative}.portfolio__mark:after,.portfolio__mark:before{width:var(--line);height:var(--mark-size);content:"";background:var(--plus-line);display:block;position:absolute;top:50%;transform:translateY(-50%)}.portfolio__mark:before{left:calc((var(--header-height) - var(--mark-image))*.5 - var(--mark-bar-offset))}.portfolio__mark:after{right:calc((var(--header-height) - var(--mark-image))*.5 - var(--mark-bar-offset))}.portfolio__mark:focus-visible{outline:var(--focus-line) solid var(--text);outline-offset:var(--focus-offset)}.portfolio__mark img{z-index:1;width:var(--mark-image);-o-object-fit:contain;object-fit:contain;height:auto;transition:transform var(--mark-speed) cubic-bezier(.16,1,.3,1);display:block;position:relative}.portfolio__actions{justify-self:end;align-items:center;gap:var(--header-gap);display:flex}.contact-cta{width:var(--cta-width);height:var(--cta-height);padding:0 var(--cta-padding) 0 var(--cta-padding);box-sizing:border-box;color:var(--surface);font-family:var(--font-secondary);font-size:var(--nav-size);background:var(--text);border-radius:var(--radius) var(--radius) var(--radius) var(--radius);transition:outline-offset var(--cta-speed);align-items:center;text-decoration:none;display:flex;position:relative;overflow:hidden}.contact-cta:focus-visible{outline:var(--focus-line) solid var(--text);outline-offset:var(--focus-offset)}.contact-cta:focus-visible .contact-cta__bubble,.contact-cta:hover .contact-cta__bubble{width:calc(100% - var(--cta-offset)*2)}.contact-cta__label{z-index:1;position:relative}.contact-cta__bubble{z-index:2;width:var(--cta-bubble);height:var(--cta-bubble);right:var(--cta-offset);color:var(--text);background:var(--surface);border-radius:var(--radius) var(--radius) var(--radius) var(--radius);transition:width var(--cta-speed) var(--cta-easing);justify-content:center;align-items:center;display:flex;position:absolute}.contact-cta__bubble svg{width:var(--cta-icon);height:var(--cta-icon);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:var(--icon-line);display:block;transform:rotate(45deg)}.menu-toggle,.mobile-menu{display:none}.portfolio__header .portfolio__mark{grid-area:1/2;justify-self:center}.portfolio__header .portfolio__mark:hover img{transform:scale(1.1)}.wire-section{width:100%;padding:var(--wire-padding) var(--wire-padding) var(--wire-padding) var(--wire-padding);gap:var(--card-gap);box-sizing:border-box;scroll-margin-top:calc(var(--header-height) + var(--wire-padding));grid-template-columns:minmax(0,1fr);display:grid;position:relative}.wire-section:after{width:calc(100% + var(--line)*2);height:var(--line);left:calc(var(--line)*-1);content:"";background:var(--text);opacity:var(--divider-opacity);display:block;position:absolute;bottom:0}.wire-section:last-child:after,.wire-section:last-child:before{display:none}.portfolio.has-section-motion [data-reveal]{opacity:0;transform:translateY(var(--section-enter-distance));transition:opacity var(--section-enter-duration) var(--section-easing),transform var(--section-enter-duration) var(--section-easing)}.portfolio.has-section-motion [data-reveal].is-revealed{opacity:1;transform:translateY(0)}.portfolio.has-section-motion [data-reveal=header]{transition-duration:var(--header-enter-duration)}.portfolio.has-section-motion [data-reveal=identity]{transition-duration:var(--identity-enter-duration)}.portfolio.has-section-motion [data-reveal=technologies]{transition-duration:var(--technology-enter-duration)}.portfolio.has-section-motion [data-reveal=technologies]:not(.is-revealed) .technology-marquee__group{animation-play-state:paused}.portfolio.has-section-motion [data-reveal=technologies].is-revealed .technology-marquee__group{animation-play-state:running}.portfolio.has-section-motion [data-reveal=description]{transition:none;transform:none}.portfolio.has-section-motion [data-reveal=description].is-revealed{opacity:1;transform:none}.wire-section__heading{font-family:var(--font);font-size:var(--heading-size);color:var(--text);margin:0}.wire-section__heading h1,.wire-section__heading h2,.wire-section__heading p{margin:0}.wire-section__heading p{font-family:var(--font-secondary)}.wire-grid{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.wire-card{width:100%;min-height:var(--card-height);padding:var(--wire-padding) var(--wire-padding) var(--wire-padding) var(--wire-padding);gap:var(--card-gap);box-sizing:border-box;border-top:var(--line) solid var(--wire-line);flex-direction:column;display:flex}.wire-card:nth-child(odd){border-right:var(--line) solid var(--wire-line)}.identity-profile{grid-template-columns:calc(var(--identity-avatar) + var(--wire-padding)) minmax(0,1fr) var(--identity-art-width);width:100%;display:grid}.identity-avatar{width:100%;min-height:var(--identity-avatar);padding:var(--wire-padding) var(--wire-padding) var(--wire-padding) 0;box-sizing:border-box;align-items:center;display:flex}.identity-avatar__frame{width:var(--identity-avatar);height:var(--identity-avatar);display:block;position:relative}.identity-avatar__aura{z-index:1;width:calc(100% + var(--identity-aura-offset)*2);height:calc(100% + var(--identity-aura-offset)*2);left:calc(var(--identity-aura-offset)*-1);top:calc(var(--identity-aura-offset)*-1);pointer-events:none;color:var(--text);animation:identity-aura-spin var(--identity-aura-speed) linear infinite;display:block;position:absolute}.identity-photo{z-index:2;width:var(--identity-avatar);height:var(--identity-avatar);box-sizing:border-box;border:var(--line) solid var(--wire-line);border-radius:var(--radius) var(--radius) var(--radius) var(--radius);filter:grayscale();display:block;position:relative;overflow:hidden}.identity-photo img{-o-object-fit:cover;object-fit:cover;-o-object-position:50% 18%;object-position:50% 18%;transform-origin:50% 18%;width:100%;height:100%;display:block;transform:scale(1.4)}.identity-details{min-width:0;padding:var(--wire-padding) 0 var(--wire-padding) 0;justify-content:center;gap:var(--identity-gap);box-sizing:border-box;flex-direction:column;display:flex}.identity-handle,.identity-name,.identity-role,.identity-value{margin:0}.identity-name{font-family:var(--font);font-size:var(--identity-name);color:var(--text);line-height:1.05;animation:none}.identity-handle,.identity-role,.identity-value{font-family:var(--font-secondary)}.identity-handle{margin:calc(var(--identity-gap)*-.75) 0 0 0;font-size:var(--identity-handle);opacity:.6}.identity-handle,.identity-role{color:var(--text);animation:none}.identity-role{font-size:var(--identity-role);opacity:1}.identity-social{align-items:center;gap:calc(var(--identity-gap)*.67);flex-wrap:wrap;display:flex}.identity-social .identity-link{animation:none}.identity-link{width:var(--identity-icon);height:var(--identity-icon);color:var(--text);background:var(--surface);border:var(--line) solid var(--wire-line);border-radius:var(--radius) var(--radius) var(--radius) var(--radius);transition:color var(--reveal-speed) ease,background var(--reveal-speed) ease,transform var(--reveal-speed) ease;justify-content:center;align-items:center;text-decoration:none;display:flex;position:relative}.identity-link svg{width:calc(var(--identity-icon)*.44);height:calc(var(--identity-icon)*.44);fill:currentColor;display:block}.identity-link:focus-visible,.identity-link:hover{color:var(--surface);background:var(--text);transform:translateY(calc(var(--line)*-1))}.identity-link:focus-visible{outline:var(--focus-line) solid var(--text);outline-offset:var(--focus-offset)}.identity-link:focus-visible .identity-tooltip,.identity-link:hover .identity-tooltip{visibility:visible;opacity:1;transform:translate(-50%)}.identity-tooltip{z-index:2;width:max-content;max-width:160px;padding:var(--tooltip-padding-y) var(--tooltip-padding-x) var(--tooltip-padding-y) var(--tooltip-padding-x);left:50%;bottom:calc(100% + var(--tooltip-offset));box-sizing:border-box;font-family:var(--font-secondary);font-size:var(--tooltip-size);color:var(--surface);text-align:center;white-space:nowrap;visibility:hidden;background:var(--text);border:var(--line) solid var(--text);border-radius:var(--radius) var(--radius) var(--radius) var(--radius);opacity:0;pointer-events:none;transform:translate(-50%,var(--tooltip-enter));transition:opacity var(--reveal-speed) ease,transform var(--reveal-speed) ease,visibility var(--reveal-speed) ease;line-height:1;display:block;position:absolute}.identity-value{font-size:var(--identity-value);color:var(--text);opacity:.6;line-height:1.4;animation:none}.identity-art{width:var(--identity-art-width);height:var(--identity-art-height);color:var(--text);place-self:center end;display:block;position:relative;overflow:hidden}.identity-art canvas{width:100%;height:100%;image-rendering:pixelated;display:block}#inicio{gap:0}.about-copy{width:calc(100% + var(--wire-padding)*2 + var(--line)*2);margin:0 0 0 calc((var(--wire-padding) + var(--line))*-1);padding:var(--wire-padding) var(--wire-padding) 0 var(--wire-padding);box-sizing:border-box;font-family:var(--font-secondary);font-size:var(--identity-handle);color:var(--text);border-top:var(--line) solid var(--wire-line);line-height:1.7;display:block;position:relative}.about-copy .about-copy__text{animation:none;display:block}.about-copy:after,.about-copy:before{width:var(--line);height:var(--plus-size);top:calc(var(--plus-size)*-.5);content:"";background:var(--plus-line);display:block;position:absolute}.about-copy:before{left:0}.about-copy:after{right:0}.about-copy strong{font-family:var(--font);font-weight:600}.portfolio.has-section-motion [data-reveal=header].is-revealed .portfolio__nav{animation:first-fold-ui .44s var(--section-easing) 40ms backwards}.portfolio.has-section-motion [data-reveal=header].is-revealed .portfolio__mark{animation:first-fold-mark .52s var(--section-easing) 90ms backwards}.portfolio.has-section-motion [data-reveal=header].is-revealed .menu-toggle,.portfolio.has-section-motion [data-reveal=header].is-revealed .portfolio__actions{animation:first-fold-ui .44s var(--section-easing) .14s backwards}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-photo{animation:first-fold-photo .78s var(--section-easing) 40ms backwards}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-avatar__aura{animation:identity-aura-spin var(--identity-aura-speed) linear infinite,first-fold-aura .46s var(--section-easing) both;animation-delay:0s,20ms}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-name{animation:first-fold-text .5s var(--section-easing) .12s backwards}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-handle{animation:first-fold-muted-text .46s var(--section-easing) .18s backwards}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-value{animation:first-fold-muted-text .46s var(--section-easing) .23s backwards}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-role{animation:first-fold-text .46s var(--section-easing) .28s backwards}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-social .identity-link{animation:first-fold-pop .42s var(--section-easing) backwards}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-social .identity-link:first-child{animation-delay:.34s}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-social .identity-link:nth-child(2){animation-delay:.4s}.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-social .identity-link:nth-child(3){animation-delay:.46s}.portfolio.has-section-motion [data-reveal=description].is-revealed .about-copy__text{animation:about-copy-reveal var(--about-copy-reveal-duration) var(--about-copy-reveal-easing) both}.spotify-embed{width:100%;height:var(--spotify-height);border-radius:var(--spotify-radius) var(--spotify-radius) var(--spotify-radius) var(--spotify-radius);display:block;overflow:hidden}.spotify-embed iframe{border:0;width:100%;height:100%;display:block}.wire-section--technologies{height:var(--technology-height);min-height:0;padding:0;overflow:hidden}.technology-marquee{width:100%;height:100%;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.technology-marquee,.technology-marquee__group{align-items:center;gap:var(--technology-item-gap);display:flex}.technology-marquee__group{min-width:100%;animation:technology-scroll var(--technology-duration) linear infinite;flex-shrink:0;margin:0;padding:0;list-style:none}.technology-marquee__item{align-items:center;gap:var(--technology-label-gap);color:var(--text);font-family:var(--font-secondary);font-size:var(--technology-size);white-space:nowrap;display:flex}.technology-marquee__icon{width:var(--technology-icon);height:var(--technology-icon);color:currentColor;display:block}.technology-marquee__icon svg{fill:currentColor;width:100%;height:100%;display:block}.technology-marquee__label{color:currentColor}@keyframes technology-scroll{0%{transform:translate(0)}to{transform:translateX(calc(-100% - var(--technology-item-gap)))}}@keyframes activity-reveal{0%{opacity:0;transform:scale(var(--activity-reveal-start));box-shadow:none}58%{opacity:1;transform:scale(var(--activity-reveal-peak));box-shadow:0 0 var(--activity-reveal-glow) var(--activity-reveal-color)}to{opacity:1;box-shadow:none;transform:scale(1)}}@keyframes first-fold-ui{0%{opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(calc(var(--line)*-6))}56%{opacity:.6;clip-path:inset(0 26% 0 0)}to{opacity:1;clip-path:inset(0);transform:translateY(0)}}@keyframes first-fold-mark{0%{opacity:0;transform:scale(.76)}58%{opacity:.72;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes first-fold-photo{0%{opacity:0;clip-path:polygon(44% 7%,60% 3%,67% 28%,58% 64%,53% 95%,36% 88%,31% 57%,37% 24%);transform:scale(1.08)}58%{opacity:.82;clip-path:polygon(8% 3%,88% 0,100% 17%,95% 88%,77% 100%,9% 96%,0 76%,4% 16%);transform:scale(1.02)}to{opacity:1;clip-path:polygon(0 0,100% 0,100% 0,100% 100%,100% 100%,0 100%,0 100%,0 0);transform:scale(1)}}@keyframes first-fold-aura{0%{opacity:.12}58%{opacity:.72}to{opacity:1}}@keyframes first-fold-text{0%{opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(calc(var(--line)*6))}58%{opacity:.62;clip-path:inset(0 24% 0 0)}to{opacity:1;clip-path:inset(0);transform:translateY(0)}}@keyframes first-fold-muted-text{0%{opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(calc(var(--line)*6))}58%{opacity:.38;clip-path:inset(0 24% 0 0)}to{opacity:.6;clip-path:inset(0);transform:translateY(0)}}@keyframes first-fold-pop{0%{opacity:0;transform:scale(.72)}64%{opacity:.82;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@keyframes about-copy-reveal{0%{opacity:0;clip-path:inset(0 100% 0 0);transform:translateX(calc(var(--section-enter-distance)*-1))}to{opacity:1;clip-path:inset(0);transform:translate(0)}}@keyframes identity-aura-spin{to{transform:rotate(1turn)}}.github-activity{width:100%;padding:var(--wire-padding) var(--wire-padding) var(--wire-padding) var(--wire-padding);gap:var(--card-gap);box-sizing:border-box;background:var(--surface);border:var(--line) solid var(--wire-line);flex-direction:column;display:flex;overflow-x:auto}.github-activity__legend,.github-activity__status{font-family:var(--font-secondary);font-size:var(--nav-size);color:var(--text)}.github-activity__status{padding:var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile);border:var(--line) solid var(--wire-line);margin:0}.github-activity__status p{margin:0 0 var(--card-gap) 0}.github-activity__calendar{grid-template-columns:var(--activity-label) max-content;row-gap:var(--activity-gap);grid-template-rows:auto auto;min-width:100%}.github-activity__calendar,.github-activity__months{-moz-column-gap:var(--activity-gap);column-gap:var(--activity-gap);width:max-content;display:grid}.github-activity__months{grid-column:2;grid-template-columns:repeat(var(--activity-weeks,53),var(--activity-cell))}.github-activity__month,.github-activity__weekdays{font-family:var(--font-secondary);font-size:var(--nav-size);color:var(--text);opacity:.68}.github-activity__weekdays{width:var(--activity-label);gap:var(--activity-gap);line-height:var(--activity-cell);flex-direction:column;grid-area:2/1;display:flex}.github-activity__weekdays span{height:var(--activity-cell);display:block}.github-activity__weeks{gap:var(--activity-gap);grid-area:2/2;width:max-content;display:flex}.github-activity__week{width:var(--activity-cell);gap:var(--activity-gap);flex-direction:column;display:flex}.github-activity__swatch{width:var(--activity-cell);height:var(--activity-cell);background:var(--activity-level-0);border-radius:var(--activity-radius) var(--activity-radius) var(--activity-radius) var(--activity-radius);display:block}.github-activity__swatch[data-level="1"]{background:var(--activity-level-1)}.github-activity__swatch[data-level="2"]{background:var(--activity-level-2)}.github-activity__swatch[data-level="3"]{background:var(--activity-level-3)}.github-activity__swatch[data-level="4"]{background:var(--activity-level-4)}.github-activity__day{width:var(--activity-cell);height:var(--activity-cell);background:var(--activity-level-0);border-radius:var(--activity-radius) var(--activity-radius) var(--activity-radius) var(--activity-radius);display:block;position:relative;overflow:visible}.github-activity__day:after{content:"";background:var(--activity-reveal-color);border-radius:inherit;opacity:0;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.github-activity__day[data-level="1"]{--activity-reveal-color:var(--activity-level-1)}.github-activity__day[data-level="2"]{--activity-reveal-color:var(--activity-level-2)}.github-activity__day[data-level="3"]{--activity-reveal-color:var(--activity-level-3)}.github-activity__day[data-level="4"]{--activity-reveal-color:var(--activity-level-4)}.github-activity__day.is-future,.github-activity__day.is-outside{opacity:.45}.github-activity.is-revealed .github-activity__day:not(.is-future):not(.is-outside)[data-level="1"]:after,.github-activity.is-revealed .github-activity__day:not(.is-future):not(.is-outside)[data-level="2"]:after,.github-activity.is-revealed .github-activity__day:not(.is-future):not(.is-outside)[data-level="3"]:after,.github-activity.is-revealed .github-activity__day:not(.is-future):not(.is-outside)[data-level="4"]:after{animation:activity-reveal var(--activity-reveal-duration) ease-out both;animation-delay:var(--reveal-delay,0s)}.github-activity__legend{align-self:flex-end;align-items:center;gap:var(--activity-gap);opacity:.68;width:max-content;display:flex}.portfolio__footer{width:min(var(--shell-max),100%);padding:var(--wire-padding) var(--wire-padding) var(--wire-padding) var(--wire-padding);box-sizing:border-box;border-left:var(--line) solid var(--wire-line);border-right:var(--line) solid var(--wire-line);justify-content:space-between;align-items:center;display:flex;position:relative}.portfolio__footer:after{width:100vw;height:var(--line);content:"";background:var(--text);opacity:var(--divider-opacity);display:block;position:absolute;top:0;left:50%;transform:translate(-50%)}.portfolio__footer p{font-family:var(--font-secondary);font-size:var(--nav-size);color:var(--text);opacity:.68;margin:0}.portfolio__footer-mark{width:var(--footer-mark-size);height:var(--footer-mark-size)}.portfolio__footer-mark:after,.portfolio__footer-mark:before{display:none}.portfolio__footer-mark img{width:var(--footer-mark-image)}.portfolio__footer:before,.portfolio__header:before{z-index:1;width:100vw;height:var(--plus-size);left:50%;bottom:calc(var(--plus-size)*-.5);content:"";pointer-events:none;background-image:linear-gradient(var(--plus-line),var(--plus-line)),linear-gradient(var(--plus-line),var(--plus-line));background-position:calc(50% - var(--shell-half)) 0,calc(50% + var(--shell-half) - var(--line)) 0;background-repeat:no-repeat;background-size:var(--line) 100%,var(--line) 100%;display:block;position:absolute;transform:translate(-50%)}.portfolio__footer:before{top:calc(var(--plus-size)*-.5);bottom:auto}.wire-section:before{z-index:1;width:calc(100% + var(--line)*2);height:var(--plus-size);left:calc(var(--line)*-1);bottom:calc(var(--plus-size)*-.5);content:"";pointer-events:none;background-image:linear-gradient(var(--plus-line),var(--plus-line)),linear-gradient(var(--plus-line),var(--plus-line));background-position:0 0,100% 0;background-repeat:no-repeat;background-size:var(--line) 100%,var(--line) 100%;display:block;position:absolute}@media screen and (width<=1000px){.intro__content{gap:var(--space-mobile)}.intro__logo{width:var(--logo-mobile)}.intro__progress{width:var(--bar-width-mobile)}.intro__number{margin:calc(var(--space-mobile)*-.5) 0 0 0}.wire-section{padding:var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile)}.identity-profile{grid-template-columns:minmax(0,1fr)}.identity-art{display:none}.identity-avatar{justify-content:center;width:100%;min-height:0}.identity-avatar,.identity-details{padding:var(--wire-padding-mobile) 0 var(--wire-padding-mobile) 0}.about-copy{width:calc(100% + var(--wire-padding-mobile)*2 + var(--line)*2);margin:0 0 0 calc((var(--wire-padding-mobile) + var(--line))*-1);padding:var(--wire-padding-mobile) var(--wire-padding-mobile) 0 var(--wire-padding-mobile)}.wire-section--technologies{height:var(--technology-height-mobile);--technology-item-gap:var(--technology-item-gap-mobile);padding:0}.technology-marquee__icon{width:var(--technology-icon-mobile);height:var(--technology-icon-mobile)}.github-activity{padding:var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile)}.github-activity__legend{align-self:flex-start}.wire-card{width:100%;padding:var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile)}.wire-card:nth-child(odd){border-right:0}.wire-grid{grid-template-columns:minmax(0,1fr)}.portfolio__footer{padding:var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile);align-items:flex-start;gap:var(--wire-padding-mobile);flex-direction:column}}@media screen and (width<=740px){.portfolio__header .theme-toggle:hover{transform:none}.portfolio__nav{display:none}.portfolio__header{grid-template-columns:minmax(0,1fr) var(--header-height) minmax(0,1fr)}.portfolio__actions{grid-area:1/3;justify-self:end}.menu-toggle{width:var(--toggle-small);height:var(--toggle-small);box-sizing:border-box;color:var(--text);border:var(--line) solid var(--wire-line);border-radius:var(--radius) var(--radius) var(--radius) var(--radius);background:0 0;grid-area:1/1;justify-content:center;justify-self:start;align-items:center;padding:0;display:flex;position:relative}.menu-toggle span{width:50%;height:var(--line);transition:transform var(--icon-morph-speed) cubic-bezier(.16,1,.3,1);background:currentColor;display:block;position:absolute}.menu-toggle span:first-child{transform:translateY(calc(var(--menu-line-offset)*-1))}.menu-toggle span:last-child{transform:translateY(var(--menu-line-offset))}.menu-toggle.is-open span:first-child{transform:rotate(45deg)}.menu-toggle.is-open span:last-child{transform:rotate(-45deg)}.menu-toggle:focus-visible{outline:var(--focus-line) solid var(--text);outline-offset:var(--focus-offset)}.mobile-menu{z-index:3;width:100%;padding:var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile) var(--wire-padding-mobile);box-sizing:border-box;gap:var(--wire-padding-mobile);background:var(--surface);border:var(--line) solid var(--wire-line);flex-direction:column;display:flex;position:absolute;top:100%;left:0}.mobile-menu a{color:inherit;font-family:var(--font-secondary);text-decoration:none}.mobile-menu a:focus-visible{outline:var(--focus-line) solid var(--text);outline-offset:var(--focus-offset)}.mobile-menu .mobile-menu__cta{width:100%;padding:var(--cta-padding) var(--wire-padding-mobile) var(--cta-padding) var(--wire-padding-mobile);box-sizing:border-box;color:var(--surface);background:var(--text);border-radius:var(--radius) var(--radius) var(--radius) var(--radius);justify-content:space-between;align-items:center;display:flex}.mobile-menu .mobile-menu__cta svg{width:var(--mobile-cta-icon);height:var(--mobile-cta-icon);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:var(--icon-line);display:block;transform:rotate(45deg)}.mobile-menu-enter-active,.mobile-menu-leave-active{transition:opacity .34s cubic-bezier(.16,1,.3,1),transform .34s cubic-bezier(.16,1,.3,1)}.mobile-menu-enter-from,.mobile-menu-leave-to{opacity:0;transform:translateY(-10px)scale(.985)}.contact-cta{display:none}.identity-profile{width:calc(100% - (var(--header-padding) - var(--wire-padding-mobile))*2);grid-template-columns:var(--identity-avatar-mobile) minmax(0,1fr);-moz-column-gap:var(--wire-padding-mobile);column-gap:var(--wire-padding-mobile);margin:0 auto}.identity-avatar{padding:var(--wire-padding-mobile) 0 0 0;justify-content:flex-start;align-items:flex-start}.identity-avatar__frame,.identity-photo{width:var(--identity-avatar-mobile);height:var(--identity-avatar-mobile)}.identity-details{min-height:calc(var(--identity-icon-mobile)*3 + var(--identity-gap-mobile)*2);padding:var(--wire-padding-mobile) calc(var(--identity-icon-mobile) + var(--identity-gap-mobile)) var(--wire-padding-mobile) 0;justify-content:flex-start;gap:var(--identity-gap-mobile);flex-direction:column;display:flex;position:relative}.identity-name{font-size:min(var(--identity-name),5vw);white-space:nowrap}.identity-handle{margin:-4px 0 0}.identity-social{gap:var(--identity-gap-mobile);flex-flow:column;margin:0;position:absolute;top:50%;right:0;transform:translateY(-50%)}.identity-link{width:var(--identity-icon-mobile);height:var(--identity-icon-mobile)}.identity-link svg{width:calc(var(--identity-icon-mobile)*.52);height:calc(var(--identity-icon-mobile)*.52)}.identity-tooltip{left:auto;right:calc(100% + var(--tooltip-offset));transform:translate(var(--tooltip-enter),50%);bottom:50%}.identity-link:focus-visible .identity-tooltip,.identity-link:hover .identity-tooltip{transform:translateY(50%)}.identity-art{width:min(var(--identity-art-width),100%);height:auto;margin:var(--identity-art-mobile-offset) 0 0 0;aspect-ratio:var(--identity-art-ratio);grid-column:1/-1;place-self:center;display:block}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.about-copy,.about-copy__text,.identity-avatar__aura,.identity-handle,.identity-name,.identity-photo,.identity-role,.identity-social .identity-link,.identity-value,.intro,.intro__fill,.menu-toggle,.menu-toggle span,.mobile-menu-enter-active,.mobile-menu-leave-active,.portfolio__actions,.portfolio__mark,.portfolio__nav,.site,.theme-toggle,.theme-toggle__cutout,.theme-toggle__disk,.theme-toggle__rays{transition:none;animation:none}::view-transition-new(root){transition:none;animation:none}::view-transition-old(root){transition:none;animation:none}.technology-marquee{overflow-x:auto;-webkit-mask-image:none;mask-image:none}.technology-marquee__group{animation:none}.technology-marquee__group:nth-child(2){display:none}.github-activity.is-revealed .github-activity__day:not(.is-future):not(.is-outside)[data-level="1"]:after,.github-activity.is-revealed .github-activity__day:not(.is-future):not(.is-outside)[data-level="2"]:after,.github-activity.is-revealed .github-activity__day:not(.is-future):not(.is-outside)[data-level="3"]:after,.github-activity.is-revealed .github-activity__day:not(.is-future):not(.is-outside)[data-level="4"]:after{opacity:1;box-shadow:none;animation:none;transform:scale(1)}.portfolio.has-section-motion [data-reveal]{opacity:1;transition:none;transform:translateY(0)}.portfolio.has-section-motion [data-reveal=description]{transform:translate(0)}.portfolio.has-section-motion [data-reveal=description].is-revealed .about-copy__text,.portfolio.has-section-motion [data-reveal=header].is-revealed .menu-toggle,.portfolio.has-section-motion [data-reveal=header].is-revealed .portfolio__actions,.portfolio.has-section-motion [data-reveal=header].is-revealed .portfolio__mark,.portfolio.has-section-motion [data-reveal=header].is-revealed .portfolio__nav,.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-avatar__aura,.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-handle,.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-name,.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-photo,.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-role,.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-social .identity-link,.portfolio.has-section-motion [data-reveal=identity].is-revealed .identity-value{animation:none}.identity-link,.identity-tooltip{transition:none}}.canvas[data-v-5ddabb15]{width:100%;height:100%;color:var(--text);display:block}
