:root{--paper:#f1ede2;--ink:#0d0d0d;--paper-rgb:241, 237, 226;--ink-rgb:13, 13, 13;--ink-70:rgba(var(--ink-rgb), .7);--ink-50:rgba(var(--ink-rgb), .6);--deep:#0d0d0d;--on-deep:#f1ede2;--on-deep-rgb:241, 237, 226;--surface:#fff;--surface-2:#ece8dc;--pill:#ffffffb3;--shadow-rgb:13, 13, 13;--glow-rgb:255, 252, 244;--glow-a:1;--tint-mix:100%;--danger:#b3261e;--live:#1a8c3c;--ok:#4a7a4a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--duration-fast:.16s;--duration-base:.42s;--duration-slow:.72s;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1)}:root[data-theme=dark]{--paper:#121211;--ink:#ece7da;--paper-rgb:18, 18, 17;--ink-rgb:236, 231, 218;--ink-70:rgba(var(--ink-rgb), .72);--ink-50:rgba(var(--ink-rgb), .52);--deep:#060606;--on-deep:#ece7da;--on-deep-rgb:236, 231, 218;--surface:#1d1d1b;--surface-2:#272725;--pill:#ffffff12;--shadow-rgb:0, 0, 0;--glow-rgb:255, 244, 228;--glow-a:.1;--tint-mix:26%;--danger:#ff8f86;--live:#4cc473;--ok:#7fc98a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html.theme-anim,html.theme-anim *,html.theme-anim :before,html.theme-anim :after{transition:background-color .3s,color .3s,border-color .3s,fill .3s,stroke .3s,box-shadow .3s!important}*{box-sizing:border-box;margin:0;padding:0}:focus{outline:none}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:2px}html,body{background-color:var(--paper);width:100%;height:100%;color:var(--ink);font-family:Helvetica Neue,Helvetica,Arial,sans-serif;overflow:hidden}@media (hover:hover) and (pointer:fine){html,body,.nav-text{cursor:none}}canvas{pointer-events:none;display:block}::selection{background:var(--ink);color:var(--paper)}.portfolio-root{background-color:var(--paper);width:100vw;height:100vh;position:relative;overflow:hidden}.block-tl{z-index:10;position:absolute;top:5vh;left:4vw}.block-tr{text-align:right;z-index:10;position:absolute;top:5vh;right:4vw}.block-ml{z-index:10;position:absolute;top:50%;left:4vw;transform:translateY(-50%)translate(0)}.block-mr{text-align:right;z-index:10;position:absolute;top:50%;right:4vw;transform:translateY(-50%)}.block-bl{z-index:10;position:absolute;bottom:5vh;left:4vw}.block-br{text-align:right;z-index:10;position:absolute;bottom:5vh;right:4vw}.label{letter-spacing:.18em;color:var(--ink-50);text-transform:uppercase;white-space:nowrap;margin-bottom:.4rem;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:clamp(.5rem,.8vw,.75rem);font-weight:500}.title-huge{letter-spacing:-.03em;color:var(--ink);text-transform:uppercase;-webkit-user-select:none;user-select:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:clamp(2.5rem,9vw,10rem);font-weight:900;line-height:.88}.blink-dot{animation:1s step-end infinite blinkDot}@keyframes blinkDot{0%,to{opacity:1}50%{opacity:0}}.title-sub{letter-spacing:-.03em;color:var(--ink);text-transform:uppercase;-webkit-user-select:none;user-select:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:clamp(1.2rem,4.2vw,5rem);font-weight:900;line-height:.92}.nav-item{letter-spacing:-.02em;color:var(--ink);text-transform:uppercase;-webkit-user-select:none;user-select:none;white-space:nowrap;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:clamp(.9rem,2.8vw,3.5rem);font-weight:700;line-height:.95}@media (hover:hover) and (pointer:fine){.nav-text .nav-item,.nav-text .title-huge,.nav-text .title-sub{transition:color .25s}.nav-text:hover .nav-item,.nav-text:hover .title-huge,.nav-text:hover .title-sub{color:var(--ink-50)}}@media (max-width:1024px){.about-skills-grid{grid-template-columns:repeat(2,1fr)!important}}@media (max-width:480px){.projects-center-label{display:none!important}}@media (max-width:768px){.about-bio-grid{grid-template-columns:1fr!important;gap:3vw!important;padding:8vh 6vw!important}.about-skills-grid{grid-template-columns:1fr!important}.about-timeline{grid-template-columns:1fr!important;gap:.5rem!important}.about-timeline>:first-child{display:none}.avatar-scene{transform:translateY(-50%);height:76dvh!important;top:55dvh!important}html,body{height:auto;min-height:100dvh;overflow:auto}.portfolio-root{grid-template-rows:auto 1fr auto auto;grid-template-columns:repeat(6,1fr);gap:1.4dvh 3vw;height:100dvh;min-height:540px;padding:max(3dvh,14px) 5vw;display:grid;overflow:hidden}.block-tl,.block-tr,.block-ml,.block-mr,.block-bl,.block-br{inset:auto}.block-tl{grid-area:1/1/auto/5;align-self:start;position:static;transform:none}.block-tr{text-align:right;grid-area:1/5/auto/7;align-self:start;position:static;transform:none}.block-ml{text-align:left;grid-area:3/1/auto/4;position:static;transform:none}.block-mr{text-align:right;grid-area:3/4/auto/7;position:static;transform:none}.block-bl{text-align:left;grid-area:4/1/auto/4;position:static;transform:none}.block-br{text-align:right;grid-area:4/4/auto/7;position:static;transform:none}.title-huge{font-size:clamp(2.8rem,13vw,5.5rem)}.title-sub{font-size:clamp(1.1rem,5.4vw,2.6rem)}.nav-item{font-size:clamp(1rem,5vw,2rem)}.block-tr,.block-ml,.block-mr,.block-bl,.block-br{background:rgba(var(--paper-rgb), .94);border:1px solid rgba(var(--ink-rgb), .22);border-radius:6px;padding:10px 14px 22px;transition:background .15s;position:relative}.block-tr:after,.block-ml:after,.block-bl:after,.block-br:after{content:"↗";color:rgba(var(--ink-rgb), .28);pointer-events:none;font-size:.62rem;font-weight:400;line-height:1;transition:color .15s;position:absolute;bottom:7px;right:10px}.block-tr:active,.block-ml:active,.block-bl:active,.block-br:active{background:rgba(var(--ink-rgb), .07)}.block-tr:active:after,.block-ml:active:after,.block-bl:active:after,.block-br:active:after{color:rgba(var(--ink-rgb), .6)}.nav-item,.title-sub{text-shadow:none}.title-huge,.label{text-shadow:0 0 18px var(--paper), 0 0 10px var(--paper), 0 0 5px var(--paper)}}@keyframes homeEnter{0%{opacity:.01;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes homeAvatarFade{0%{opacity:0}to{opacity:1}}.home-enter{animation:homeEnter .6s var(--ease-out) both}.home-enter-0{animation-delay:0s}.home-enter-1{animation-delay:80ms}.home-enter-2{animation-delay:.14s}.home-enter-3{animation-delay:.18s}.home-enter-4{animation-delay:.24s}.home-enter-5{animation-delay:.28s}.avatar-scene{animation:homeAvatarFade .9s var(--ease-out) 60ms both}.avatar-scene canvas{--neck-fade:linear-gradient(to bottom, #000 0%, #000 var(--chin-y,56%), transparent var(--cut-y,66%));--side-trim:linear-gradient(to right, transparent calc(50% - var(--face-px,300px) * .82), #000 calc(50% - var(--face-px,300px) * .56), #000 calc(50% + var(--face-px,300px) * .56), transparent calc(50% + var(--face-px,300px) * .82));-webkit-mask-image:var(--neck-fade), var(--side-trim);-webkit-mask-composite:source-in;-webkit-mask-image:var(--neck-fade), var(--side-trim);mask-image:var(--neck-fade), var(--side-trim);opacity:0;-webkit-mask-composite:source-in;mask-composite:intersect}.avatar-scene[data-ready] canvas{animation:avatarIn 1.3s var(--ease-out) .1s both}.avatar-scene:before{content:"";left:50%;top:var(--face-cy,40%);aspect-ratio:1;pointer-events:none;z-index:-1;height:calc(var(--face-h,40%) * 2.15);background:radial-gradient(circle, rgba(var(--glow-rgb), calc(.9 * var(--glow-a))) 0%, rgba(var(--glow-rgb), calc(.5 * var(--glow-a))) 38%, rgba(var(--glow-rgb), 0) 68%);border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.home-ghost{z-index:0;transform:translate(-50%, -50%) translate(calc(var(--mx,0) * -22px), calc(var(--my,0) * -14px));transition:transform .6s var(--ease-out);letter-spacing:-.06em;white-space:nowrap;color:#0000;-webkit-text-stroke:1.5px rgba(var(--ink-rgb), .13);-webkit-user-select:none;user-select:none;pointer-events:none;animation:homeAvatarFade 1.2s var(--ease-out) .2s both;font-size:min(26vw,62vh);font-weight:900;line-height:.8;position:absolute;top:44.5%;left:50%}.nav-hint{display:none}@media (hover:hover) and (pointer:fine){.nav-hint{letter-spacing:.2em;white-space:nowrap;color:var(--ink-50);opacity:0;transition:opacity .25s ease, transform .35s var(--ease-out);pointer-events:none;margin-top:.6rem;font-size:clamp(.5rem,.7vw,.62rem);font-weight:600;display:block;position:absolute;top:100%;transform:translateY(4px)}.block-tr .nav-hint,.block-br .nav-hint{right:0}.block-ml .nav-hint,.block-bl .nav-hint{left:0}.block-bl .nav-hint,.block-br .nav-hint{margin:0 0 .6rem;top:auto;bottom:100%;transform:translateY(-4px)}.nav-text:hover .nav-hint,.nav-text:focus-visible .nav-hint{opacity:1;transform:none}}.home-status{z-index:10;letter-spacing:.2em;color:var(--ink-50);white-space:nowrap;pointer-events:none;justify-content:center;align-items:center;font-size:clamp(.5rem,.68vw,.62rem);font-weight:600;display:flex;position:absolute;bottom:5vh;left:0;right:0}.home-status-link{color:inherit;pointer-events:auto;flex-wrap:wrap;justify-content:center;align-items:center;gap:.35rem .6rem;padding:8px 10px;text-decoration:none;display:flex}.home-status-link:hover span:first-of-type,.home-status-link:focus-visible span:first-of-type{color:var(--ink);text-underline-offset:4px;text-decoration:underline}.home-status-sub{text-align:center;flex:0 0 100%}.home-status-dot{background:var(--live);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite homePulse}.home-status-dot.is-asleep{box-shadow:inset 0 0 0 1.5px var(--ink-50);background:0 0;animation:none}.face-hit{left:50%;top:var(--face-cy,40%);z-index:3;height:calc(var(--face-h,40%) * 1.08);aspect-ratio:.86;pointer-events:auto;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:42%;padding:0;position:absolute;transform:translate(-50%,-50%)}.face-hit:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.face-hint{border:1px solid var(--ink);background:var(--paper);letter-spacing:.24em;color:var(--ink);white-space:nowrap;opacity:0;transition:opacity .2s, transform .3s var(--ease-out);pointer-events:none;padding:.28rem .65rem;font-size:.58rem;font-weight:700;position:absolute;top:-.2rem;left:50%;transform:translate(-50%,4px)}@media (hover:hover) and (pointer:fine){.face-hit:hover .face-hint,.face-hit:focus-visible .face-hint{opacity:1;transform:translate(-50%)}}.face-bubble{left:calc(50% + var(--face-px,300px) * .34);top:calc(var(--face-cy,40%) - var(--face-h,40%) * .56);z-index:4;background:var(--ink);color:var(--paper);letter-spacing:.14em;white-space:nowrap;opacity:0;transform-origin:0 100%;pointer-events:none;border-radius:14px 14px 14px 3px;padding:.6rem .95rem;font-size:clamp(.6rem,.85vw,.78rem);font-weight:800;transition:opacity .2s,transform .35s cubic-bezier(.34,1.56,.64,1);position:absolute;transform:translateY(-100%)scale(.6)}.face-bubble.is-on{opacity:1;transform:translateY(-100%)scale(1)}.face-bubble:empty{padding:0}@keyframes homePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.65)}}@media (max-width:768px){.home-status{display:none}.home-ghost{font-size:30vw;top:51dvh}.face-bubble{transform-origin:50% 100%;left:50%;transform:translate(-50%,-100%)scale(.6)}.face-bubble.is-on{transform:translate(-50%,-100%)scale(1)}}.face-still{aspect-ratio:760/800;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;width:auto;height:63.09%;animation:avatarIn 1.3s var(--ease-out) .1s both;position:absolute;top:48.91%;left:50%;translate:-50% -50%}@keyframes avatarIn{0%{opacity:0;transform:translateY(14px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes projFade{0%{opacity:0}to{opacity:1}}.proj-fade{animation:projFade .5s var(--ease-out) both}.proj-fade-0{animation-delay:0s}.proj-fade-1{animation-delay:80ms}.proj-fade-2{animation-delay:.14s}.proj-fade-3{animation-delay:.2s}.proj-fade-4{animation-delay:.3s}@keyframes contactWindow{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.contact-enter-window{animation:contactWindow .45s var(--ease-out) both}@media (hover:hover) and (pointer:fine){.block-tr,.block-ml,.block-bl,.block-br{transition:transform var(--duration-fast) var(--ease-out)}.block-bl:hover{transform:translate(-3px)}.block-tr:hover,.block-br:hover{transform:translate(3px)}.block-ml:hover{transform:translateY(-50%)translate(-3px)}}html.zk-skip #zk-loader{display:none!important}#zk-loader{z-index:9999;background:var(--paper);flex-direction:column;justify-content:center;align-items:center;gap:28px;transition:opacity .55s cubic-bezier(.16,1,.3,1),visibility .55s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;inset:0}#zk-loader.zk-done{opacity:0;visibility:hidden;pointer-events:none}.zk-wordmark{color:var(--ink);letter-spacing:-.04em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:clamp(4.5rem,18vw,11rem);font-weight:900;line-height:1;animation:.7s cubic-bezier(.16,1,.3,1) 50ms both zkReveal}.zk-bar-track{background:rgba(var(--ink-rgb), .14);border-radius:1px;width:clamp(100px,18vw,180px);height:1.5px;overflow:hidden}.zk-bar-fill{background:var(--ink);transform-origin:0;border-radius:1px;width:100%;height:100%;animation:2.8s cubic-bezier(.16,1,.3,1) .1s both zkBar}@keyframes zkReveal{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes zkBar{0%{transform:scaleX(0)}to{transform:scaleX(.82)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}html[data-text="1"]{font-size:112.5%}html[data-text="2"]{font-size:125%}html[data-text="3"]{font-size:150%}html[data-easy] :where(p,li,dd,dt,label,input,textarea,figcaption,blockquote,td,th,select){letter-spacing:.02em!important;word-spacing:.08em!important;font-family:Verdana,Tahoma,Trebuchet MS,sans-serif!important;line-height:1.7!important}html[data-easy] :where(.zt-window *,.rc-paper *,.ax-panel *){letter-spacing:inherit!important;word-spacing:inherit!important;font-family:inherit!important}html:root[data-contrast]{--ink-50:var(--ink);--ink-70:var(--ink)}html[data-contrast] :where(main a,p a,li a){text-underline-offset:3px;text-decoration:underline}html[data-contrast] :focus-visible{outline-offset:3px;outline:3px solid var(--ink)!important}html[data-calm] *,html[data-calm] :before,html[data-calm] :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}@media (max-width:480px){.block-tr,.block-ml,.block-mr,.block-bl,.block-br{padding:8px 10px 10px!important}.block-tr:after,.block-ml:after,.block-bl:after,.block-br:after{display:none!important}}@media (min-width:1600px){.title-huge{font-size:clamp(8rem,9vw,14rem)}.title-sub{font-size:clamp(4rem,4.2vw,7rem)}.nav-item{font-size:clamp(3rem,2.8vw,5rem)}}.theme-toggle{z-index:9000;border:1px solid rgba(var(--ink-rgb), .3);background:rgba(var(--paper-rgb), .92);width:34px;height:34px;color:var(--ink);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background .2s,border-color .2s,transform .2s;display:inline-flex;position:fixed;bottom:14px;right:14px}.theme-toggle:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}.theme-toggle:active{transform:scale(.92)}.theme-toggle svg{display:block}.theme-toggle .tt-sun,:root[data-theme=dark] .theme-toggle .tt-moon{display:none}:root[data-theme=dark] .theme-toggle .tt-sun{display:block}@media (min-width:769px){.theme-toggle[data-route=home]{width:30px;height:30px;bottom:calc(5vh - 9px);left:calc(50% + 176px);right:auto}}@media (max-width:768px){.theme-toggle[data-route=home]{inset:50% auto auto 8px;transform:translateY(-50%)}.theme-toggle[data-route=home]:active{transform:translateY(-50%)scale(.92)}}@media print{.theme-toggle{display:none!important}}[data-hot]{-webkit-tap-highlight-color:transparent}@media (hover:none),(pointer:coarse){[data-hot]{cursor:pointer;touch-action:manipulation}}[data-egg] .home-enter{visibility:hidden}.egg-layer{z-index:9000;pointer-events:none;position:fixed;inset:0;overflow:hidden}.egg-letter{white-space:pre;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;will-change:transform;margin:0;padding:0;position:absolute}.egg-hint{z-index:9001;text-align:center;letter-spacing:.22em;text-transform:uppercase;width:max-content;max-width:90vw;color:var(--ink-70);opacity:0;pointer-events:none;font-size:.62rem;font-weight:700;transition:opacity .5s;position:fixed;top:69dvh;left:50%;transform:translate(-50%)}.egg-hint.is-on{opacity:1}html[data-crumble] body :not(.avatar-scene):not(.avatar-scene *):not(.home-ghost):not(.home-ghost *):not(.egg-layer):not(.egg-layer *):not(.egg-hint):not(.egg-tilt):not(.zt-backdrop):not(.zt-backdrop *):not(.theme-toggle):not(.theme-toggle *){color:#0000!important;-webkit-text-fill-color:transparent!important;text-shadow:none!important}html[data-crumble] :is(.avatar-scene,.home-ghost,.theme-toggle,.zt-backdrop,.egg-layer,.egg-hint,.egg-tilt){-webkit-text-fill-color:currentColor!important}html[data-crumble] .avatar-scene{color:var(--ink)}html[data-crumble] body ::placeholder{color:#0000!important;-webkit-text-fill-color:transparent!important}.egg-tilt{z-index:9001;border:1.5px solid var(--ink);background:var(--paper);color:var(--ink);letter-spacing:.2em;text-transform:uppercase;white-space:nowrap;cursor:pointer;opacity:0;pointer-events:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:2px;padding:.8rem 1.3rem;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.7rem;font-weight:800;transition:opacity .4s,background .2s,color .2s;position:fixed;top:21dvh;left:50%;transform:translate(-50%)}.egg-tilt.is-on{opacity:1;pointer-events:auto}.egg-tilt:active{background:var(--ink);color:var(--paper)}.egg-key{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.egg-key:focus-visible{clip:auto;border:1px solid var(--ink);background:var(--paper);width:auto;height:auto;color:var(--ink);letter-spacing:.24em;text-transform:uppercase;cursor:pointer;margin-top:.7rem;padding:.35rem .7rem;font-size:.58rem;font-weight:700;top:100%;left:0;overflow:visible}.wa-glyph{flex:none;place-items:center;width:1.3em;height:1.3em;display:inline-grid;position:relative}.wa-glyph svg{fill:currentColor;transform-origin:50% 60%;width:100%;height:100%}.wa-glyph:before{content:"";opacity:0;pointer-events:none;border:1px solid;border-radius:50%;animation:3.2s ease-out infinite waRing;position:absolute;inset:-.2em}@keyframes waRing{0%{opacity:.55;transform:scale(.72)}65%{opacity:0;transform:scale(1.6)}to{opacity:0;transform:scale(1.6)}}a:hover>.wa-btn-main .wa-glyph svg{animation:.7s ease-in-out waWiggle}@keyframes waWiggle{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-14deg)}40%,80%{transform:rotate(14deg)}}.wa-btn{border:1.5px solid var(--ink);width:100%;color:var(--ink);letter-spacing:.16em;text-transform:uppercase;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:2px;justify-content:space-between;align-items:center;gap:1rem;padding:clamp(16px,2.4vh,22px) clamp(18px,2.4vw,30px);font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:clamp(.8rem,1.1vw,1rem);font-weight:800;text-decoration:none;transition:background .18s,color .18s;display:flex}.wa-btn:hover{background:var(--ink);color:var(--paper)}.wa-btn-main{align-items:center;gap:.9em;min-width:0;display:inline-flex}.wa-btn-arrow{font-size:1.4em;font-weight:300;line-height:1;transition:transform .18s}.wa-btn:hover .wa-btn-arrow{transform:translate(5px,-5px)}.brand-icon{fill:currentColor;flex:none;width:1.1em;height:1.1em}.brand-icon-line{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.brand-inline{align-items:center;gap:.6em;display:inline-flex}.sr-only{clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
